{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./utils/isVisible.js","webpack:///./utils/clickOutside.js","webpack:///./utils/getViewportHeight.js","webpack:///./utils/isIEcheck.js","webpack:///./utils/isMobile.js","webpack:///./utils/openInNewTab.js","webpack:///./utils/addActiveLinkClass.js","webpack:///./utils/isIOS.js","webpack:///./utils/fetchCheckStatus.js","webpack:///./utils/isStorageAvailable.js","webpack:///./utils/fetch.js","webpack:///../node_modules/tiny-slider/src/helpers/hideElement.js","webpack:///./components/Tabs/index.js","webpack:///../node_modules/tiny-slider/src/helpers/showElement.js","webpack:///./components/Testimonials/sitejabber.js","webpack:///./components/Testimonials/Slider.js","webpack:///../node_modules/tiny-slider/src/helpers/checkStorageValue.js","webpack:///./components/Calculator/default/index.js","webpack:///../node_modules/tiny-slider/src/helpers/setLocalStorage.js","webpack:///../node_modules/tiny-slider/src/helpers/raf.js","webpack:///../node_modules/tiny-slider/src/helpers/classListSupport.js","webpack:///../node_modules/tiny-slider/src/helpers/hasClass.js","webpack:///../node_modules/tiny-slider/src/helpers/getCssRulesLength.js","webpack:///../node_modules/console-browserify/index.js","webpack:///../node_modules/tiny-slider/src/helpers/addCSSRule.js","webpack:///../node_modules/util/util.js","webpack:///../node_modules/tiny-slider/src/helpers/addEvents.js","webpack:///../node_modules/tiny-slider/src/helpers/forEach.js","webpack:///../node_modules/tiny-slider/src/helpers/removeAttrs.js","webpack:///../node_modules/custom-event/index.js","webpack:///../node_modules/tiny-slider/src/helpers/getBody.js","webpack:///../node_modules/tiny-slider/src/helpers/setFakeBody.js","webpack:///../node_modules/tiny-slider/src/helpers/resetFakeBody.js","webpack:///../node_modules/smooth-scroll/dist/smooth-scroll.polyfills.min.js","webpack:///../node_modules/tiny-slider/src/helpers/docElement.js","webpack:///../node_modules/body-scroll-lock/lib/bodyScrollLock.min.js","webpack:///../node_modules/process/browser.js","webpack:///../node_modules/tiny-slider/src/helpers/hasAttr.js","webpack:///../node_modules/tiny-slider/src/helpers/whichProperty.js","webpack:///../node_modules/util/support/isBufferBrowser.js","webpack:///../node_modules/util/node_modules/inherits/inherits_browser.js","webpack:///../node_modules/assert/assert.js","webpack:///../node_modules/object-assign/index.js","webpack:///../node_modules/scrollingelement/scrollingelement.js","webpack:///../node_modules/tiny-slider/src/helpers/addClass.js","webpack:///./components/PseudoLinks/index.js","webpack:///../node_modules/disable-scroll/es/index.js","webpack:///./components/Header/index.js","webpack:///./components/UI/loader/index.js","webpack:///../node_modules/tiny-slider/src/helpers/getAttr.js","webpack:///./pages/home/index.js","webpack:///./components/LinkAnchors/index.js","webpack:///../node_modules/tiny-slider/src/helpers/isNodeList.js","webpack:///../node_modules/tiny-slider/src/helpers/removeEvents.js","webpack:///../node_modules/tiny-slider/src/helpers/passiveOption.js","webpack:///../node_modules/tiny-slider/src/helpers/caf.js","webpack:///../node_modules/tiny-slider/src/helpers/extend.js","webpack:///../node_modules/tiny-slider/src/helpers/arrayFromNodeList.js","webpack:///../node_modules/tiny-slider/src/helpers/isVisible.js","webpack:///../node_modules/tiny-slider/src/helpers/getEndProperty.js","webpack:///../node_modules/webpack/buildin/global.js","webpack:///../node_modules/tiny-slider/src/tiny-slider.js","webpack:///../node_modules/tiny-slider/src/helpers/getSlideId.js","webpack:///../node_modules/tiny-slider/src/helpers/calc.js","webpack:///../node_modules/tiny-slider/src/helpers/percentageLayout.js","webpack:///../node_modules/tiny-slider/src/helpers/mediaquerySupport.js","webpack:///../node_modules/tiny-slider/src/helpers/createStyleSheet.js","webpack:///../node_modules/tiny-slider/src/helpers/removeCSSRule.js","webpack:///../node_modules/tiny-slider/src/helpers/toDegree.js","webpack:///../node_modules/tiny-slider/src/helpers/removeClass.js","webpack:///../node_modules/tiny-slider/src/helpers/getTouchDirection.js","webpack:///../node_modules/tiny-slider/src/helpers/has3DTransforms.js","webpack:///../node_modules/tiny-slider/src/helpers/events.js","webpack:///../node_modules/tiny-slider/src/helpers/jsTransform.js","webpack:///./components/Testimonials/config.js","webpack:///../node_modules/@uvocore-front/utils/dist/index.js","webpack:///./components/Accordion/Accordion.js","webpack:///./components/Accordion/index.js","webpack:///../node_modules/tiny-slider/src/helpers/setAttrs.js","webpack:///../node_modules/tiny-slider/src/helpers/Object.keys.js","webpack:///../node_modules/tiny-slider/src/helpers/childNode.remove.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","isVisible","elem","offsetWidth","offsetHeight","getClientRects","length","clickOutside","element","callback","outsideClickListener","event","contains","target","removeClickListener","document","removeEventListener","addEventListener","getViewportHeight","Math","max","documentElement","clientHeight","window","innerHeight","isIEcheck","ua","navigator","userAgent","indexOf","isMobile","innerWidth","openInNewTab","url","open","focus","addActiveLinkClass","anchorSelector","activeClass","anchors","querySelectorAll","current","location","pathname","getAttribute","classList","add","isiOS","platform","test","checkFetchStatus","response","ok","status","json","type","setItem","removeItem","e","options","method","headers","body","credentials","fetch","Error","text","message","hideElement","el","forceHide","style","display","tabsInit","selector","startPaneIndex","container","tabNavNodes","tabContentNodes","selectTabContent","tab","forEach","item","tabContent","dataset","remove","Promise","resolve","index","tabName","showElement","observeElement","marginValue","getWidget","widgetLink","loader","fn","STJR","ReviewCarouselWidget","id","render","siteJabberInit","testimonials","sliderContainer","nextButton","initSlider","querySelector","slider","tns","items","loop","nav","controls","autoWidth","mouseDrag","useLocalStorage","onInit","state","getInfo","displayIndex","slideCount","goTo","rebuild","children","customLoader","Loader","insertLoaderTo","tmWidget","config","callbackLoaded","checkStorageValue","JSON","parse","isPageConfig","pageConfig","keys","constructor","pageCalculatorConfig","undefined","calculator","loaderPosition","pagePaperType","calcOptions","ID","calculatorType","format","deafault","academicLevelDefault","paperTypesDefault","deadlinesDefault","Calc","setLocalStorage","storage","access","win","raf","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","cb","setTimeout","classListSupport","createElement","hasClass","str","className","getCssRulesLength","sheet","cssRules","rules","util","assert","now","Date","getTime","console","slice","Array","times","global","functions","log","apply","arguments","warn","label","time","duration","err","error","stack","inspect","expression","arr","tuple","f","addCSSRule","insertRule","addRule","getOwnPropertyDescriptors","obj","descriptors","getOwnPropertyDescriptor","formatRegExp","isString","objects","push","join","args","len","String","replace","x","Number","stringify","_","isNull","isObject","deprecate","msg","process","noDeprecation","this","warned","throwDeprecation","traceDeprecation","trace","debugEnviron","debugs","opts","ctx","seen","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","_extend","isUndefined","customInspect","stylizeWithColor","formatValue","styleType","styles","recurseTimes","isFunction","ret","primitive","simple","isNumber","formatPrimitive","visibleKeys","array","hash","val","idx","arrayToHash","getOwnPropertyNames","isError","formatError","isRegExp","RegExp","toString","isDate","output","base","braces","isArray","toUTCString","formatProperty","match","formatArray","map","pop","reduce","prev","cur","numLinesEst","reduceToSingleString","desc","set","split","line","substr","ar","arg","re","objectToString","pad","debuglog","env","NODE_DEBUG","toUpperCase","pid","isNullOrUndefined","isSymbol","isPrimitive","isBuffer","months","timestamp","getHours","getMinutes","getSeconds","getDate","getMonth","prop","inherits","origin","kCustomPromisifiedSymbol","callbackifyOnRejected","reason","newReason","promisify","original","TypeError","writable","configurable","promiseResolve","promiseReject","promise","reject","setPrototypeOf","getPrototypeOf","defineProperties","custom","callbackify","callbackified","maybeCb","self","then","nextTick","rej","addEvents","preventScrolling","option","scope","removeAttrs","els","attrs","attrLength","j","removeAttribute","NativeCustomEvent","CustomEvent","detail","foo","useNative","createEvent","params","initCustomEvent","bubbles","cancelable","createEventObject","Boolean","getBody","doc","fake","setFakeBody","docOverflow","overflow","background","appendChild","resetFakeBody","Element","closest","ownerDocument","parentElement","Event","cancelAnimationFrame","a","clearTimeout","M","q","ignore","header","topOnEmptyHash","speed","speedAsDuration","durationMax","durationMin","clip","offset","easing","customEasing","updateURL","popstate","emitEvents","I","charAt","charCodeAt","InvalidCharacterError","F","scrollHeight","activeElement","setAttribute","outline","scrollTo","H","anchor","toggle","dispatchEvent","b","A","O","C","cancelScroll","tagName","pageYOffset","u","h","parseInt","getComputedStyle","height","offsetTop","L","g","offsetParent","min","y","v","w","S","abs","E","floor","history","pushState","smoothScroll","title","matchMedia","matches","defaultPrevented","button","metaKey","ctrlKey","shiftKey","toLowerCase","hostname","href","decodeURIComponent","preventDefault","replaceState","animateScroll","destroy","docElement","from","some","allowTouchMove","touches","paddingRight","maxTouchPoints","disableBodyScroll","targetElement","concat","ontouchstart","targetTouches","clientY","ontouchmove","scrollTop","stopPropagation","passive","reserveScrollBarGap","clientWidth","clearAllBodyScrollLocks","enableBodyScroll","filter","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","browser","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","hasAttr","attr","hasAttribute","whichProperty","props","Props","prefix","copy","fill","readUInt8","ctor","superCtor","super_","TempCtor","objectAssign","compare","Buffer","_isBuffer","hasOwn","pSlice","functionsHaveNames","pToString","isView","arrbuf","ArrayBuffer","DataView","buffer","regex","getName","func","truncate","something","rawname","fail","actual","expected","operator","stackStartFunction","AssertionError","_deepEqual","strict","memos","source","multiline","lastIndex","ignoreCase","Float32Array","Float64Array","Uint8Array","actualIndex","actualVisitedObjects","aIsArgs","isArguments","bIsArgs","ka","objectKeys","kb","sort","objEquiv","expectedException","isPrototypeOf","_throws","shouldThrow","block","_tryBlock","userProvidedMessage","isUnexpectedException","generatedMessage","captureStackTrace","out","fn_name","next_line","substring","equal","notEqual","deepEqual","deepStrictEqual","notDeepEqual","notDeepStrictEqual","strictEqual","notStrictEqual","throws","doesNotThrow","ifError","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","toObject","assign","test1","test2","fromCharCode","test3","letter","shouldUseNative","symbols","to","computeStyle","currentStyle","isCompliantCached","isRendered","visibility","scrollingElement","compatMode","iframe","contentWindow","write","close","parentNode","removeChild","isCompliant","frameset","nextSibling","nodeType","HTMLBodyElement","getNextBodyElement","bodyStyle","htmlStyle","isScrollable","__defineGetter__","attachEvent","propertyName","addClass","pseudoLinks","link","which","ownKeys","enumerableOnly","sym","_toConsumableArray","arr2","_arrayWithoutHoles","iter","iterator","_iterableToArray","_nonIterableSpread","_defineProperties","descriptor","_defineProperty","canUseDOM","DisableScroll","_this","instance","Constructor","_classCallCheck","_window","lockToScrollPos","keyboardKeys","authorizedInInputs","keyCode","disableWheel","disableScroll","disableKeys","protoProps","staticProps","_objectSpread","_this$options","handleWheel","scrollLeft","scrollX","scrollY","handleScroll","handleKeydown","ToggleNav","navScrollSpace","isOpen","sel","showEvent","setNavScrollSpaceHeight","show","hide","ToggleSubNav","navItems","subnavMenuItem","navSimpleItems","subnavButton","subnavBody","subnavScrollSpace","scrollEventsPrevented","subnavHeight","getBoundingClientRect","top","onkeydown","toggleNav","toggleSubNav","scrollHandler","stickyHeader","addLoader","insertTo","position","innerHTML","getAttr","Accordion","itemsSelector","tabs","SmoothScroll","isNodeList","removeEvents","supportsPassive","passiveOption","caf","mozCancelAnimationFrame","extend","arrayFromNodeList","nl","getEndProperty","propIn","propOut","endProp","Function","axis","gutter","edgePadding","fixedWidth","viewportMax","slideBy","center","controlsPosition","controlsText","controlsContainer","prevButton","navPosition","navContainer","navAsThumbnails","arrowKeys","autoplay","autoplayPosition","autoplayTimeout","autoplayDirection","autoplayText","autoplayHoverPause","autoplayButton","autoplayButtonOutput","autoplayResetOnVisibility","animateIn","animateOut","animateNormal","animateDelay","rewind","autoHeight","responsive","lazyload","lazyloadSelector","touch","swipeAngle","nested","preventActionWhenRunning","preventScrollOnTouch","freezable","KEYS","ENTER","SPACE","LEFT","RIGHT","tnsStorage","localStorageAccess","browserInfo","uid","localStorage","getItem","CALC","PERCENTAGELAYOUT","CSSMQ","TRANSFORM","HAS3DTRANSFORMS","TRANSITIONDURATION","TRANSITIONDELAY","ANIMATIONDURATION","ANIMATIONDELAY","TRANSITIONEND","ANIMATIONEND","supportConsoleWarn","tnsList","optionsElements","nodeName","carousel","responsiveTem","updateOptions","middleWrapper","breakpointZone","horizontal","outerWrapper","innerWrapper","containerParent","containerHTML","outerHTML","slideItems","windowWidth","getWindowWidth","isOn","setBreakpointZone","slidePositions","imgsComplete","liveregionCurrent","itemsMax","result","getOption","viewport","getViewportWidth","fixedWidthViewportWidth","slideItemsOut","cloneCount","bp","tem","ceil","getItemsMax","hasOption","slideCountNew","hasRightDeadZone","rightBoundary","getRightBoundary","updateIndexBeforeTransform","transformAttr","transformPrefix","transformPostfix","getIndexMax","getStartIndex","indexCached","indexMin","getCurrentSlide","indexMax","moveDirectionExpected","running","events","newContainerClasses","slideId","disable","disabled","freeze","getFreeze","frozen","controlsEvents","onControlsClick","getEvent","keyIndex","navEvents","onTransitionEnd","getTarget","navIndex","navClicked","targetIndexBase","pages","navCurrentIndex","animating","stopAutoplay","curElement","setFocus","hoverEvents","stopAutoplayTimer","autoplayHoverPaused","setAutoplayTimer","visibilityEvent","hidden","autoplayVisibilityPaused","docmentKeydownEvent","touchEvents","onPanStart","onPanMove","onPanEnd","dragEvents","hasControls","hasNav","hasAutoplay","hasTouch","hasMouseDrag","slideActiveClass","imgCompleteClass","imgEvents","imgLoaded","img","imgCompleted","preventScroll","prevIsButton","nextIsButton","controlsContainerHTML","prevButtonHTML","nextButtonHTML","navContainerHTML","getPages","pagesCached","getCurrentNavIndex","navCurrentIndexCached","navActiveClass","navStr","navStrCurrent","autoplayTimer","autoplayUserPaused","autoplayButtonHTML","autoplayHtmlStrings","translateInit","rafIndex","initPosition","lastPosition","panStart","getDist","resetVariblesWhenDisable","insertBefore","fragmentBefore","createDocumentFragment","fragmentAfter","num","cloneFirst","cloneNode","firstChild","cloneLast","initStructure","left","fontSize","slide","marginLeft","getSlideMarginLeft","getTransitionDurationStyle","getInnerWrapperStyles","getContainerWidth","getSlideWidthStyle","getSlideGutterStyle","getAnimationDurationStyle","update_carousel_transition_duration","cssText","width","middleWrapperStr","innerWrapperStr","containerStr","slideStr","itemsBP","fixedWidthBP","speedBP","edgePaddingBP","autoHeightBP","gutterBP","initSheet","initSliderTransform","updateIndex","leftEdge","rightEdge","transformCore","resetDuration","doContainerTransform","getContainerTransformValue","updateContentWrapperHeight","eve","animateSlide","info","play","startAutoplay","pause","updateSliderHeight","updateInnerWrapperHeight","refresh","ownerNode","onResize","toggleAutoplay","clearInterval","htmlList","prevEl","previousElementSibling","parentEl","nextElementSibling","firstElementChild","condition","ind","getAbsIndex","absIndex","getInsertPosition","pos","gap","getClientWidth","rect","div","right","ww","edgePaddingTem","gutterTem","fixedWidthTem","speedTem","gutterTemUnit","itemsTem","dividend","getCSSPrefix","imgs","src","imgsLoadedCheck","getImageArray","initSliderTransformStyleCheck","doContainerTransformSilent","initTools","initEvents","stylesApplicationCheck","toFixed","initSliderTransformCore","setSlidePositions","updateSlideStatus","insertAdjacentHTML","getLiveRegionStr","txt","navHtml","hiddenStr","updateNavVisibility","isButton","updateControlsStatus","disableUI","resizeTasks","doAutoHeight","doLazyLoad","disableSlider","freezeSlider","additionalUpdates","bpChanged","breakpointZoneTem","needContainerTransform","indChanged","itemsChanged","disableTem","freezeTem","arrowKeysTem","controlsTem","navTem","touchTem","mouseDragTem","autoplayTem","autoplayHoverPauseTem","autoplayResetOnVisibilityTem","indexTem","autoHeightTem","controlsTextTem","centerTem","autoplayTextTem","classN","enableUI","enableSlider","margin","unfreezeSlider","html","updateLiveRegion","updateGallerySlidePositions","autoheightTem","vp","getVisibleSlideRange","start","end","rangestart","rangeend","parseFloat","point","cell","srcset","splice","navPrev","navCurrent","updateNavStatus","getMaxSlideHeight","slideStart","slideRange","heights","maxHeight","wp","attr2","range","getLowerCaseNodeName","isAriaDisabled","disEnableElement","prevDisabled","nextDisabled","disablePrev","disableNext","getCenterGap","denominator","number","classOut","classIn","isOut","sliderMoved","strTrans","targetIndex","indexGap","isNaN","factor","passEventObject","targetIn","setInterval","updateAutoplayButton","action","isTouchEvent","changedTouches","srcElement","preventDefaultBehavior","returnValue","getMoveDirectionExpected","$","clientX","panUpdate","dist","preventClick","indexMoved","moved","rough","getSlideId","tnsId","calc","vals","percentageLayout","supported","wrapper","outer","count","mediaquerySupport","rule","styleSheet","createTextNode","createStyleSheet","media","removeCSSRule","deleteRule","removeRule","toDegree","atan2","PI","removeClass","getTouchDirection","angle","direction","has3DTransforms","tf","has3d","cssTF","getPropertyValue","Events","topics","eventName","data","jsTransform","postfix","tick","unit","positionTick","moveElement","moreEl","containerEl","siteId","limit","template","customerId","orderTopic","callbackData","default","deployHash","getElementsByTagName","async","defer","readyState","onload","onreadystatechange","thresholdValue","rootMargin","threshold","IntersectionObserver","isIntersecting","unobserve","observe","catch","__WMS__","utils","loadScripts","headingSelector","contentWrapperSelector","contentSelector","ToggleAccordion","heading","heightContent","setAttrs"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,K,qXC7ErD,IAGeC,EAHG,SAAAC,GAAI,QAClBA,MAAWA,EAAKC,aAAeD,EAAKE,cAAgBF,EAAKG,iBAAiBC,SCiB/DC,EAhBM,SAACC,EAASC,GAC7B,IAAMC,EAAuB,SAAAC,IACtBH,EAAQI,SAASD,EAAME,SAAWZ,EAAUO,KAC/CC,IAEAK,MAIEA,EAAsB,WAC1BC,SAASC,oBAAoB,QAASN,IAGxCK,SAASE,iBAAiB,QAASP,ICbtBQ,EAHW,kBACxBC,KAAKC,IAAIL,SAASM,gBAAgBC,aAAcC,OAAOC,aAAe,ICOzDC,EARG,WAChB,IAAMC,EAAKC,UAAUC,UAIrB,OAFaF,EAAGG,QAAQ,UAAY,GAAKH,EAAGG,QAAQ,aAAe,GCDtDC,EAFE,kBAAMP,OAAOQ,WAAa,MCK5BC,EALM,SAAAC,GACPV,OAAOW,KAAKD,EAAK,UACzBE,SCeSC,EAhBY,SAAC,GAAqD,QAAnDC,sBAAmD,MAAlC,IAAkC,MAA7BC,mBAA6B,MAAf,SAAe,EACzEC,EAAUxB,SAASyB,iBAAiBH,GAC1C,GAAKE,EAIL,IAFA,IAAME,EAAUlB,OAAOmB,SAASC,SAEvB1E,EAAI,EAAGA,EAAIsE,EAAQjC,OAAQrC,GAAK,EAErCsE,EAAQtE,GAAG2E,aAAa,UAAYH,GACpCF,EAAQtE,GAAG2E,aAAa,eAAiBH,GAEzCF,EAAQtE,GAAG4E,UAAUC,IAAIR,ICdhBS,IAFCpB,UAAUqB,UAAY,mBAAmBC,KAAKtB,UAAUqB,UCOzDE,EAPU,SAAAC,GACvB,IAAKA,EAASC,GACZ,MAAMD,EAASE,OAEjB,OAAOF,EAASG,QCJH,WAAAC,GACb,IAAMN,EAAO,kBACb,IAGE,OAFA1B,OAAOgC,GAAMC,QAAQP,EAAMA,GAC3B1B,OAAOgC,GAAME,WAAWR,IACjB,EACP,MAAOS,GACP,OAAO,I,yHCPX,qB,EAAA,G,EAAA,yBAAe,WAAOzB,GAAP,yHAAY0B,EAAZ,+BAAsB,GAAtB,EAC0DA,EAA/DC,cADK,MACI,MADJ,EACWC,EAA+CF,EAA/CE,QADX,EAC0DF,EAAtCG,YADpB,MAC2B,KAD3B,IAC0DH,EAAzBI,mBADjC,MAC+C,OAD/C,oBAIYC,MAAM/B,EAAK,CAChC2B,SACAC,UACAC,OACAC,YAA6B,SAAhBA,EAAyB,UAAY,SARzC,WAILZ,EAJK,QAWGC,GAXH,sBAYH,IAAIa,MAAM,eAZP,gCAeJ,CACLX,KAAM,kBAAMH,EAASG,QACrBY,KAAM,kBAAMf,EAASe,UAjBZ,wCAoBL,IAAID,MAAJ,0BAA6B,KAAME,UApB9B,yD,+KAAf,uD,gCCAO,SAASC,EAAYC,EAAIC,GACL,SAArBD,EAAGE,MAAMC,UAAsBH,EAAGE,MAAMC,QAAU,QADxD,mC,iCCAA,yCAkBe,SAASC,EAAT,GAAyD,QAArCC,gBAAqC,MAA1B,GAA0B,MAAtBC,sBAAsB,MAAL,EAAK,EAChEC,EAAYF,GAAY3D,SACxB8D,EAAcD,EAAUpC,iBAAiB,mBACzCsC,EAAkBF,EAAUpC,iBAAiB,sBAEnD,GAAKsC,GAAoBD,EAAzB,CAEA,IAAME,EAAmB,SAAAC,GACvBF,EAAgBG,SAAQ,SAAAC,GAAQ,IAEjBC,EAETD,EAFFE,QAAWD,WACXtC,EACEqC,EADFrC,UAGEmC,IAAQG,EACVtC,EAAUC,IAAI,aAEdD,EAAUwC,OAAO,iBAiBvB,OANIR,EAAYF,KACdE,EAAYF,GAAgB9B,UAAUC,IAAI,aAC1CiC,EAAiBD,EAAgBH,GAAgBS,QAAQD,aAIpD,IAAIG,SAAQ,SAAAC,GACjBV,EAAYI,SAAQ,SAACC,EAAMM,GAAP,OAClBN,EAAKjE,iBAAiB,SAAS,kBAdd+D,EAciCH,EAAYW,GAbhEX,EAAYI,SAAQ,SAAAC,GAAI,OAAIA,EAAKrC,UAAUwC,OAAO,gBAClDL,EAAInC,UAAUC,IAAI,kBAClBiC,EAAiBC,EAAII,QAAQK,SAHV,IAAAT,QAgBnBO,GAAQ,S,gCCxDL,SAASG,EAAYrB,EAAIC,GACL,SAArBD,EAAGE,MAAMC,UAAsBH,EAAGE,MAAMC,QAAU,IADxD,mC,kyBCEuB,WACrBmB,yBAAe,CACbnF,QAAS,wBACToF,YAAa,IACbnF,SAAU,WACRoF,oBAAU,CACRC,WAAY,sDACZC,QAAQ,EACRC,GAAI,WAEF,IAAIC,KAAKC,qBAAqB,CAC5BC,GAAI,uBACJlE,IAAK,oBACJmE,gBCPbC,GAEA,IACQC,EACAC,EACAC,EAEAC,EAqDJ1F,SAAS2F,cAAc,yBAzDnBJ,EAAevF,SAAS2F,cAAc,uBACtCH,EAAkBD,EAAaI,cAAc,iCAC7CF,EAAaF,EAAaI,cAAc,2BAExCD,EAAa,WACjB,GAAIF,EAAiB,CACnB,IAAMI,EAASC,YAAI,CACjBhC,UAAW2B,EACXM,MAAO,EACPC,MAAM,EACNC,KAAK,EACLC,UAAU,EACVC,WAAW,EACXC,WAAW,EACXC,iBAAiB,EACjBC,OAAQ,WACDZ,IAELA,EAAW3D,UAAUC,IAAI,mCACzB0D,EAAWvF,iBAAiB,SAAS,WACnC,IAAMoG,EAAQV,EAAOW,UAEjBD,EAAME,aAAe,GAAKF,EAAMG,WAClCb,EAAOc,KAAK,SAEZd,EAAOc,KAAK,eAMpBlG,OAAON,iBAAiB,UAAU,WAChC0F,EAAOe,eAKb/B,yBAAe,CACbnF,QAAS,sBACToF,YAAa,IACbnF,SAAU,WACH8F,EAAgBoB,SAASrH,OAU5BmG,IATAZ,oBAAU,CACRC,WAAY,uCACZ8B,aAAcC,IACdC,eAAgB,gCAChB9B,GAAI,WACFzE,OAAOwG,SAAP,OAAqBC,KAArB,IAA6BC,eAAgBxB,a,gCC1DlD,SAASyB,EAAmBhJ,GACjC,MAAO,CAAC,OAAQ,SAAS2C,QAAQ3C,IAAU,EAAIiJ,KAAKC,MAAMlJ,GAASA,EADrE,mC,kvBCKAqC,OAAON,iBAAiB,oBAAoB,WAI1C,IAAMoH,EACJ9G,OAAO+G,YACP3J,OAAO4J,KAAKhH,OAAO+G,YAAYhI,OAAS,GACxCiB,OAAO+G,WAAWE,cAAgB7J,OAC9B8J,EACJJ,QAAiDK,IAAjCnH,OAAO+G,WAAWK,WAC9BpH,OAAO+G,WAAWK,gBAClBD,EAGF3H,SAAS2F,cAAc,8BACzBf,yBAAe,CACbnF,QAAS,4BACToF,YAAa,IACbnF,SAAU,WACRoF,oBAAU,CACRC,WAAY,qBACZ8B,aAAcC,IACdC,eAAgB,4BAChBc,eAAgB,SAChB5C,GAAI,WACF,IAAM6C,EACJR,QACiCK,IAAjCnH,OAAO+G,WAAWK,YAClBpH,OAAO+G,WAAWK,WAAWE,cACzBtH,OAAO+G,WAAWK,WAAWE,mBAC7BH,EAEAI,EAAc,CAClBC,GAAI,MACJC,eAAgB,oBAChBC,OAAQ,OACRtF,QAAS,CACPuF,SAAU,EAAF,CACNC,qBAAsB,EACtBC,kBAAmB,EACnBC,iBAAkB,CAAC,QAChBZ,UAKaC,IAAlBG,IACFC,EAAYnF,QAAQuF,SAASE,kBAAoBP,GAGtC,IAAIS,KAAKR,a,4ECvD3B,SAASS,EAAgBC,EAAShK,EAAKN,EAAOuK,GACnD,GAAIA,EACF,IAAMD,EAAQhG,QAAQhE,EAAKN,GAAU,MAAOwE,IAE9C,OAAOxE,EAJT,mC,gCCAA,sCAAIwK,EAAMnI,OAECoI,EAAMD,EAAIE,uBAChBF,EAAIG,6BACJH,EAAII,0BACJJ,EAAIK,yBACJ,SAASC,GAAM,OAAOC,WAAWD,EAAI,M,oGCNnC,IAAIE,EAAmB,cAAenJ,SAASoJ,cAAc,KCEhEC,EAAWF,EACX,SAAU7F,EAAIgG,GAAO,OAAOhG,EAAGxB,UAAUjC,SAASyJ,IAClD,SAAUhG,EAAIgG,GAAO,OAAOhG,EAAGiG,UAAUzI,QAAQwI,IAAQ,I,gCCJtD,SAASE,EAAkBC,GAEhC,OADY,eAAgBA,EAASA,EAAMC,SAAWD,EAAME,OAChDpK,OAFd,mC,oBCAA,YACA,IAAIqK,EAAO,EAAQ,IACfC,EAAS,EAAQ,IACrB,SAASC,IAAQ,OAAO,IAAIC,MAAOC,UAEnC,IACIC,EADAC,EAAQC,MAAMrL,UAAUoL,MAExBE,EAAQ,GAGRH,OADkB,IAAXI,GAA0BA,EAAOJ,QAC9BI,EAAOJ,QACQ,oBAAXzJ,QAA0BA,OAAOyJ,QACrCzJ,OAAOyJ,QAEP,GAed,IAZA,IAAIK,EAAY,CACZ,CAuBJ,aAvBU,OACN,CAwBJ,WACIL,EAAQM,IAAIC,MAAMP,EAASQ,YAzBpB,QACP,CA2BJ,WACIR,EAAQM,IAAIC,MAAMP,EAASQ,YA5BpB,QACP,CA8BJ,WACIR,EAAQS,KAAKF,MAAMP,EAASQ,YA/BpB,SACR,CAiCJ,SAAcE,GACVP,EAAMO,GAASb,KAlCR,QACP,CAoCJ,SAAiBa,GACb,IAAIC,EAAOR,EAAMO,GACjB,IAAKC,EACD,MAAM,IAAI1H,MAAM,kBAAoByH,UAGjCP,EAAMO,GACb,IAAIE,EAAWf,IAAQc,EACvBX,EAAQM,IAAII,EAAQ,KAAOE,EAAW,OA5C5B,WACV,CA8CJ,WACI,IAAIC,EAAM,IAAI5H,MACd4H,EAAIrN,KAAO,QACXqN,EAAI1H,QAAUwG,EAAK1B,OAAOsC,MAAM,KAAMC,WACtCR,EAAQc,MAAMD,EAAIE,QAlDV,SACR,CAoDJ,SAAapM,GACTqL,EAAQM,IAAIX,EAAKqB,QAAQrM,GAAU,OArD7B,OACN,CAuDJ,SAAuBsM,GACnB,IAAKA,EAAY,CACb,IAAIC,EAAMjB,EAAM7M,KAAKoN,UAAW,GAChCZ,EAAOxH,IAAG,EAAOuH,EAAK1B,OAAOsC,MAAM,KAAMW,MA1D7B,WAGXjO,EAAI,EAAGA,EAAIoN,EAAU/K,OAAQrC,IAAK,CACvC,IAAIkO,EAAQd,EAAUpN,GAClBmO,EAAID,EAAM,GACV3N,EAAO2N,EAAM,GAEZnB,EAAQxM,KACTwM,EAAQxM,GAAQ4N,GAIxBpO,EAAOD,QAAUiN,I,iDCvCjB,wCAEO,SAASqB,EAAW7B,EAAO9F,EAAUgG,EAAOlF,GAE/C,eAAgBgF,EACdA,EAAM8B,WAAW5H,EAAW,IAAMgG,EAAQ,IAAKlF,GAC/CgF,EAAM+B,QAAQ7H,EAAUgG,EAAOlF,K,oBCNrC,cAqBA,IAAIgH,EAA4B7N,OAAO6N,2BACrC,SAAmCC,GAGjC,IAFA,IAAIlE,EAAO5J,OAAO4J,KAAKkE,GACnBC,EAAc,GACTzO,EAAI,EAAGA,EAAIsK,EAAKjI,OAAQrC,IAC/ByO,EAAYnE,EAAKtK,IAAMU,OAAOgO,yBAAyBF,EAAKlE,EAAKtK,IAEnE,OAAOyO,GAGPE,EAAe,WACnB7O,EAAQkL,OAAS,SAASmD,GACxB,IAAKS,EAAST,GAAI,CAEhB,IADA,IAAIU,EAAU,GACL7O,EAAI,EAAGA,EAAIuN,UAAUlL,OAAQrC,IACpC6O,EAAQC,KAAKf,EAAQR,UAAUvN,KAEjC,OAAO6O,EAAQE,KAAK,KAGlB/O,EAAI,EAmBR,IAnBA,IACIgP,EAAOzB,UACP0B,EAAMD,EAAK3M,OACX+J,EAAM8C,OAAOf,GAAGgB,QAAQR,GAAc,SAASS,GACjD,GAAU,OAANA,EAAY,MAAO,IACvB,GAAIpP,GAAKiP,EAAK,OAAOG,EACrB,OAAQA,GACN,IAAK,KAAM,OAAOF,OAAOF,EAAKhP,MAC9B,IAAK,KAAM,OAAOqP,OAAOL,EAAKhP,MAC9B,IAAK,KACH,IACE,OAAOkK,KAAKoF,UAAUN,EAAKhP,MAC3B,MAAOuP,GACP,MAAO,aAEX,QACE,OAAOH,MAGJA,EAAIJ,EAAKhP,GAAIA,EAAIiP,EAAKG,EAAIJ,IAAOhP,GACpCwP,EAAOJ,KAAOK,EAASL,GACzBhD,GAAO,IAAMgD,EAEbhD,GAAO,IAAM2B,EAAQqB,GAGzB,OAAOhD,GAOTtM,EAAQ4P,UAAY,SAAS3H,EAAI4H,GAC/B,QAAuB,IAAZC,IAAqD,IAA1BA,EAAQC,cAC5C,OAAO9H,EAIT,QAAuB,IAAZ6H,EACT,OAAO,WACL,OAAO9P,EAAQ4P,UAAU3H,EAAI4H,GAAKrC,MAAMwC,KAAMvC,YAIlD,IAAIwC,GAAS,EAeb,OAdA,WACE,IAAKA,EAAQ,CACX,GAAIH,EAAQI,iBACV,MAAM,IAAIhK,MAAM2J,GACPC,EAAQK,iBACjBlD,EAAQmD,MAAMP,GAEd5C,EAAQc,MAAM8B,GAEhBI,GAAS,EAEX,OAAOhI,EAAGuF,MAAMwC,KAAMvC,aAO1B,IACI4C,EADAC,EAAS,GA6Bb,SAASrC,EAAQS,EAAK6B,GAEpB,IAAIC,EAAM,CACRC,KAAM,GACNC,QAASC,GAkBX,OAfIlD,UAAUlL,QAAU,IAAGiO,EAAII,MAAQnD,UAAU,IAC7CA,UAAUlL,QAAU,IAAGiO,EAAIK,OAASpD,UAAU,IAC9CqD,EAAUP,GAEZC,EAAIO,WAAaR,EACRA,GAETvQ,EAAQgR,QAAQR,EAAKD,GAGnBU,EAAYT,EAAIO,cAAaP,EAAIO,YAAa,GAC9CE,EAAYT,EAAII,SAAQJ,EAAII,MAAQ,GACpCK,EAAYT,EAAIK,UAASL,EAAIK,QAAS,GACtCI,EAAYT,EAAIU,iBAAgBV,EAAIU,eAAgB,GACpDV,EAAIK,SAAQL,EAAIE,QAAUS,GACvBC,EAAYZ,EAAK9B,EAAK8B,EAAII,OAoCnC,SAASO,EAAiB7E,EAAK+E,GAC7B,IAAI7K,EAAQyH,EAAQqD,OAAOD,GAE3B,OAAI7K,EACK,KAAYyH,EAAQ4C,OAAOrK,GAAO,GAAK,IAAM8F,EAC7C,KAAY2B,EAAQ4C,OAAOrK,GAAO,GAAK,IAEvC8F,EAKX,SAASqE,EAAerE,EAAK+E,GAC3B,OAAO/E,EAeT,SAAS8E,EAAYZ,EAAKrP,EAAOoQ,GAG/B,GAAIf,EAAIU,eACJ/P,GACAqQ,EAAWrQ,EAAM8M,UAEjB9M,EAAM8M,UAAYjO,EAAQiO,WAExB9M,EAAMsJ,aAAetJ,EAAMsJ,YAAY3I,YAAcX,GAAQ,CACjE,IAAIsQ,EAAMtQ,EAAM8M,QAAQsD,EAAcf,GAItC,OAHK1B,EAAS2C,KACZA,EAAML,EAAYZ,EAAKiB,EAAKF,IAEvBE,EAIT,IAAIC,EA+FN,SAAyBlB,EAAKrP,GAC5B,GAAI8P,EAAY9P,GACd,OAAOqP,EAAIE,QAAQ,YAAa,aAClC,GAAI5B,EAAS3N,GAAQ,CACnB,IAAIwQ,EAAS,IAAOvH,KAAKoF,UAAUrO,GAAOkO,QAAQ,SAAU,IAClBA,QAAQ,KAAM,OACdA,QAAQ,OAAQ,KAAO,IACjE,OAAOmB,EAAIE,QAAQiB,EAAQ,UAE7B,GAAIC,EAASzQ,GACX,OAAOqP,EAAIE,QAAQ,GAAKvP,EAAO,UACjC,GAAI2P,EAAU3P,GACZ,OAAOqP,EAAIE,QAAQ,GAAKvP,EAAO,WAEjC,GAAIuO,EAAOvO,GACT,OAAOqP,EAAIE,QAAQ,OAAQ,QA9GbmB,CAAgBrB,EAAKrP,GACrC,GAAIuQ,EACF,OAAOA,EAIT,IAAIlH,EAAO5J,OAAO4J,KAAKrJ,GACnB2Q,EApCN,SAAqBC,GACnB,IAAIC,EAAO,GAMX,OAJAD,EAAM7K,SAAQ,SAAS+K,EAAKC,GAC1BF,EAAKC,IAAO,KAGPD,EA6BWG,CAAY3H,GAQ9B,GANIgG,EAAIO,aACNvG,EAAO5J,OAAOwR,oBAAoBjR,IAKhCkR,EAAQlR,KACJqJ,EAAK1G,QAAQ,YAAc,GAAK0G,EAAK1G,QAAQ,gBAAkB,GACrE,OAAOwO,EAAYnR,GAIrB,GAAoB,IAAhBqJ,EAAKjI,OAAc,CACrB,GAAIiP,EAAWrQ,GAAQ,CACrB,IAAIV,EAAOU,EAAMV,KAAO,KAAOU,EAAMV,KAAO,GAC5C,OAAO+P,EAAIE,QAAQ,YAAcjQ,EAAO,IAAK,WAE/C,GAAI8R,EAASpR,GACX,OAAOqP,EAAIE,QAAQ8B,OAAO1Q,UAAU2Q,SAASpS,KAAKc,GAAQ,UAE5D,GAAIuR,EAAOvR,GACT,OAAOqP,EAAIE,QAAQ3D,KAAKjL,UAAU2Q,SAASpS,KAAKc,GAAQ,QAE1D,GAAIkR,EAAQlR,GACV,OAAOmR,EAAYnR,GAIvB,IA2CIwR,EA3CAC,EAAO,GAAIb,GAAQ,EAAOc,EAAS,CAAC,IAAK,MAGzCC,EAAQ3R,KACV4Q,GAAQ,EACRc,EAAS,CAAC,IAAK,MAIbrB,EAAWrQ,MAEbyR,EAAO,cADCzR,EAAMV,KAAO,KAAOU,EAAMV,KAAO,IACf,KAkB5B,OAdI8R,EAASpR,KACXyR,EAAO,IAAMJ,OAAO1Q,UAAU2Q,SAASpS,KAAKc,IAI1CuR,EAAOvR,KACTyR,EAAO,IAAM7F,KAAKjL,UAAUiR,YAAY1S,KAAKc,IAI3CkR,EAAQlR,KACVyR,EAAO,IAAMN,EAAYnR,IAGP,IAAhBqJ,EAAKjI,QAAkBwP,GAAyB,GAAhB5Q,EAAMoB,OAItCgP,EAAe,EACbgB,EAASpR,GACJqP,EAAIE,QAAQ8B,OAAO1Q,UAAU2Q,SAASpS,KAAKc,GAAQ,UAEnDqP,EAAIE,QAAQ,WAAY,YAInCF,EAAIC,KAAKzB,KAAK7N,GAIZwR,EADEZ,EAsCN,SAAqBvB,EAAKrP,EAAOoQ,EAAcO,EAAatH,GAE1D,IADA,IAAImI,EAAS,GACJzS,EAAI,EAAGC,EAAIgB,EAAMoB,OAAQrC,EAAIC,IAAKD,EACrC6B,EAAeZ,EAAOiO,OAAOlP,IAC/ByS,EAAO3D,KAAKgE,EAAexC,EAAKrP,EAAOoQ,EAAcO,EACjD1C,OAAOlP,IAAI,IAEfyS,EAAO3D,KAAK,IAShB,OANAxE,EAAKtD,SAAQ,SAASzF,GACfA,EAAIwR,MAAM,UACbN,EAAO3D,KAAKgE,EAAexC,EAAKrP,EAAOoQ,EAAcO,EACjDrQ,GAAK,OAGNkR,EArDIO,CAAY1C,EAAKrP,EAAOoQ,EAAcO,EAAatH,GAEnDA,EAAK2I,KAAI,SAAS1R,GACzB,OAAOuR,EAAexC,EAAKrP,EAAOoQ,EAAcO,EAAarQ,EAAKsQ,MAItEvB,EAAIC,KAAK2C,MA6GX,SAA8BT,EAAQC,EAAMC,GAQ1C,GANaF,EAAOU,QAAO,SAASC,EAAMC,GAGxC,OADIA,EAAIzP,QAAQ,OAAS,GAAG0P,EACrBF,EAAOC,EAAIlE,QAAQ,kBAAmB,IAAI9M,OAAS,IACzD,GAEU,GACX,OAAOsQ,EAAO,IACG,KAATD,EAAc,GAAKA,EAAO,OAC3B,IACAD,EAAO1D,KAAK,SACZ,IACA4D,EAAO,GAGhB,OAAOA,EAAO,GAAKD,EAAO,IAAMD,EAAO1D,KAAK,MAAQ,IAAM4D,EAAO,GA5H1DY,CAAqBd,EAAQC,EAAMC,IAxBjCA,EAAO,GAAKD,EAAOC,EAAO,GA+CrC,SAASP,EAAYnR,GACnB,MAAO,IAAM+E,MAAMpE,UAAU2Q,SAASpS,KAAKc,GAAS,IAwBtD,SAAS6R,EAAexC,EAAKrP,EAAOoQ,EAAcO,EAAarQ,EAAKsQ,GAClE,IAAItR,EAAM6L,EAAKoH,EAsCf,IArCAA,EAAO9S,OAAOgO,yBAAyBzN,EAAOM,IAAQ,CAAEN,MAAOA,EAAMM,KAC5DV,IAELuL,EADEoH,EAAKC,IACDnD,EAAIE,QAAQ,kBAAmB,WAE/BF,EAAIE,QAAQ,WAAY,WAG5BgD,EAAKC,MACPrH,EAAMkE,EAAIE,QAAQ,WAAY,YAG7B3O,EAAe+P,EAAarQ,KAC/BhB,EAAO,IAAMgB,EAAM,KAEhB6K,IACCkE,EAAIC,KAAK3M,QAAQ4P,EAAKvS,OAAS,GAE/BmL,EADEoD,EAAO6B,GACHH,EAAYZ,EAAKkD,EAAKvS,MAAO,MAE7BiQ,EAAYZ,EAAKkD,EAAKvS,MAAOoQ,EAAe,IAE5CzN,QAAQ,OAAS,IAErBwI,EADEyF,EACIzF,EAAIsH,MAAM,MAAMT,KAAI,SAASU,GACjC,MAAO,KAAOA,KACb5E,KAAK,MAAM6E,OAAO,GAEf,KAAOxH,EAAIsH,MAAM,MAAMT,KAAI,SAASU,GACxC,MAAO,MAAQA,KACd5E,KAAK,OAIZ3C,EAAMkE,EAAIE,QAAQ,aAAc,YAGhCO,EAAYxQ,GAAO,CACrB,GAAIsR,GAAStQ,EAAIwR,MAAM,SACrB,OAAO3G,GAET7L,EAAO2J,KAAKoF,UAAU,GAAK/N,IAClBwR,MAAM,iCACbxS,EAAOA,EAAKqT,OAAO,EAAGrT,EAAK8B,OAAS,GACpC9B,EAAO+P,EAAIE,QAAQjQ,EAAM,UAEzBA,EAAOA,EAAK4O,QAAQ,KAAM,OACdA,QAAQ,OAAQ,KAChBA,QAAQ,WAAY,KAChC5O,EAAO+P,EAAIE,QAAQjQ,EAAM,WAI7B,OAAOA,EAAO,KAAO6L,EA2BvB,SAASwG,EAAQiB,GACf,OAAO5G,MAAM2F,QAAQiB,GAIvB,SAASjD,EAAUkD,GACjB,MAAsB,kBAARA,EAIhB,SAAStE,EAAOsE,GACd,OAAe,OAARA,EAST,SAASpC,EAASoC,GAChB,MAAsB,iBAARA,EAIhB,SAASlF,EAASkF,GAChB,MAAsB,iBAARA,EAShB,SAAS/C,EAAY+C,GACnB,YAAe,IAARA,EAIT,SAASzB,EAAS0B,GAChB,OAAOtE,EAASsE,IAA8B,oBAAvBC,EAAeD,GAIxC,SAAStE,EAASqE,GAChB,MAAsB,iBAARA,GAA4B,OAARA,EAIpC,SAAStB,EAAOlS,GACd,OAAOmP,EAASnP,IAA4B,kBAAtB0T,EAAe1T,GAIvC,SAAS6R,EAAQ1M,GACf,OAAOgK,EAAShK,KACW,mBAAtBuO,EAAevO,IAA2BA,aAAaO,OAI9D,SAASsL,EAAWwC,GAClB,MAAsB,mBAARA,EAgBhB,SAASE,EAAevT,GACtB,OAAOC,OAAOkB,UAAU2Q,SAASpS,KAAKM,GAIxC,SAASwT,EAAIxS,GACX,OAAOA,EAAI,GAAK,IAAMA,EAAE8Q,SAAS,IAAM9Q,EAAE8Q,SAAS,IApbpDzS,EAAQoU,SAAW,SAAST,GAI1B,GAHI1C,EAAYZ,KACdA,EAAeP,EAAQuE,IAAIC,YAAc,IAC3CX,EAAMA,EAAIY,eACLjE,EAAOqD,GACV,GAAI,IAAInB,OAAO,MAAQmB,EAAM,MAAO,KAAKzO,KAAKmL,GAAe,CAC3D,IAAImE,EAAM1E,EAAQ0E,IAClBlE,EAAOqD,GAAO,WACZ,IAAI9D,EAAM7P,EAAQkL,OAAOsC,MAAMxN,EAASyN,WACxCR,EAAQc,MAAM,YAAa4F,EAAKa,EAAK3E,SAGvCS,EAAOqD,GAAO,aAGlB,OAAOrD,EAAOqD,IAoChB3T,EAAQiO,QAAUA,EAIlBA,EAAQ4C,OAAS,CACf,KAAS,CAAC,EAAG,IACb,OAAW,CAAC,EAAG,IACf,UAAc,CAAC,EAAG,IAClB,QAAY,CAAC,EAAG,IAChB,MAAU,CAAC,GAAI,IACf,KAAS,CAAC,GAAI,IACd,MAAU,CAAC,GAAI,IACf,KAAS,CAAC,GAAI,IACd,KAAS,CAAC,GAAI,IACd,MAAU,CAAC,GAAI,IACf,QAAY,CAAC,GAAI,IACjB,IAAQ,CAAC,GAAI,IACb,OAAW,CAAC,GAAI,KAIlB5C,EAAQqD,OAAS,CACf,QAAW,OACX,OAAU,SACV,QAAW,SACX,UAAa,OACb,KAAQ,OACR,OAAU,QACV,KAAQ,UAER,OAAU,OAkRZtR,EAAQ8S,QAAUA,EAKlB9S,EAAQ8Q,UAAYA,EAKpB9Q,EAAQ0P,OAASA,EAKjB1P,EAAQyU,kBAHR,SAA2BT,GACzB,OAAc,MAAPA,GAOThU,EAAQ4R,SAAWA,EAKnB5R,EAAQ8O,SAAWA,EAKnB9O,EAAQ0U,SAHR,SAAkBV,GAChB,MAAsB,iBAARA,GAOhBhU,EAAQiR,YAAcA,EAKtBjR,EAAQuS,SAAWA,EAKnBvS,EAAQ2P,SAAWA,EAKnB3P,EAAQ0S,OAASA,EAMjB1S,EAAQqS,QAAUA,EAKlBrS,EAAQwR,WAAaA,EAUrBxR,EAAQ2U,YARR,SAAqBX,GACnB,OAAe,OAARA,GACe,kBAARA,GACQ,iBAARA,GACQ,iBAARA,GACQ,iBAARA,QACQ,IAARA,GAIhBhU,EAAQ4U,SAAW,EAAQ,IAY3B,IAAIC,EAAS,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACxD,MAAO,MAAO,OAG5B,SAASC,IACP,IAAItU,EAAI,IAAIuM,KACRa,EAAO,CAACuG,EAAI3T,EAAEuU,YACNZ,EAAI3T,EAAEwU,cACNb,EAAI3T,EAAEyU,eAAehG,KAAK,KACtC,MAAO,CAACzO,EAAE0U,UAAWL,EAAOrU,EAAE2U,YAAavH,GAAMqB,KAAK,KAqCxD,SAASlN,EAAe2M,EAAK0G,GAC3B,OAAOxU,OAAOkB,UAAUC,eAAe1B,KAAKqO,EAAK0G,GAjCnDpV,EAAQuN,IAAM,WACZN,EAAQM,IAAI,UAAWuH,IAAa9U,EAAQkL,OAAOsC,MAAMxN,EAASyN,aAiBpEzN,EAAQqV,SAAW,EAAQ,IAE3BrV,EAAQgR,QAAU,SAASsE,EAAQvQ,GAEjC,IAAKA,IAAQ4K,EAAS5K,GAAM,OAAOuQ,EAInC,IAFA,IAAI9K,EAAO5J,OAAO4J,KAAKzF,GACnB7E,EAAIsK,EAAKjI,OACNrC,KACLoV,EAAO9K,EAAKtK,IAAM6E,EAAIyF,EAAKtK,IAE7B,OAAOoV,GAOT,IAAIC,EAA6C,oBAAXtU,OAAyBA,OAAO,8BAA2B0J,EA0DjG,SAAS6K,EAAsBC,EAAQxJ,GAKrC,IAAKwJ,EAAQ,CACX,IAAIC,EAAY,IAAIxP,MAAM,2CAC1BwP,EAAUD,OAASA,EACnBA,EAASC,EAEX,OAAOzJ,EAAGwJ,GAlEZzV,EAAQ2V,UAAY,SAAmBC,GACrC,GAAwB,mBAAbA,EACT,MAAM,IAAIC,UAAU,oDAEtB,GAAIN,GAA4BK,EAASL,GAA2B,CAClE,IAAItN,EACJ,GAAkB,mBADdA,EAAK2N,EAASL,IAEhB,MAAM,IAAIM,UAAU,iEAKtB,OAHAjV,OAAOC,eAAeoH,EAAIsN,EAA0B,CAClDpU,MAAO8G,EAAInH,YAAY,EAAOgV,UAAU,EAAOC,cAAc,IAExD9N,EAGT,SAASA,IAQP,IAPA,IAAI+N,EAAgBC,EAChBC,EAAU,IAAI3O,SAAQ,SAAUC,EAAS2O,GAC3CH,EAAiBxO,EACjByO,EAAgBE,KAGdjH,EAAO,GACFhP,EAAI,EAAGA,EAAIuN,UAAUlL,OAAQrC,IACpCgP,EAAKF,KAAKvB,UAAUvN,IAEtBgP,EAAKF,MAAK,SAAUlB,EAAK3M,GACnB2M,EACFmI,EAAcnI,GAEdkI,EAAe7U,MAInB,IACEyU,EAASpI,MAAMwC,KAAMd,GACrB,MAAOpB,GACPmI,EAAcnI,GAGhB,OAAOoI,EAQT,OALAtV,OAAOwV,eAAenO,EAAIrH,OAAOyV,eAAeT,IAE5CL,GAA0B3U,OAAOC,eAAeoH,EAAIsN,EAA0B,CAChFpU,MAAO8G,EAAInH,YAAY,EAAOgV,UAAU,EAAOC,cAAc,IAExDnV,OAAO0V,iBACZrO,EACAwG,EAA0BmH,KAI9B5V,EAAQ2V,UAAUY,OAAShB,EAiD3BvV,EAAQwW,YAlCR,SAAqBZ,GACnB,GAAwB,mBAAbA,EACT,MAAM,IAAIC,UAAU,oDAMtB,SAASY,IAEP,IADA,IAAIvH,EAAO,GACFhP,EAAI,EAAGA,EAAIuN,UAAUlL,OAAQrC,IACpCgP,EAAKF,KAAKvB,UAAUvN,IAGtB,IAAIwW,EAAUxH,EAAKkE,MACnB,GAAuB,mBAAZsD,EACT,MAAM,IAAIb,UAAU,8CAEtB,IAAIc,EAAO3G,KACP/D,EAAK,WACP,OAAOyK,EAAQlJ,MAAMmJ,EAAMlJ,YAI7BmI,EAASpI,MAAMwC,KAAMd,GAClB0H,MAAK,SAASnF,GAAO3B,EAAQ+G,SAAS5K,EAAI,KAAMwF,MAC3C,SAASqF,GAAOhH,EAAQ+G,SAASrB,EAAuBsB,EAAK7K,MAMvE,OAHArL,OAAOwV,eAAeK,EAAe7V,OAAOyV,eAAeT,IAC3DhV,OAAO0V,iBAAiBG,EACAhI,EAA0BmH,IAC3Ca,K,uDC5rBT,8CAEO,SAASM,EAAUzQ,EAAIoI,EAAKsI,GACjC,IAAK,IAAI5B,KAAQ1G,EAAK,CACpB,IAAIuI,EAAS,CAAC,aAAc,aAAanT,QAAQsR,IAAS,IAAM4B,GAAmB,IACnF1Q,EAAGpD,iBAAiBkS,EAAM1G,EAAI0G,GAAO6B,M,gCCJlC,SAAS/P,EAASiH,EAAKzL,EAAUwU,GACtC,IAAK,IAAIhX,EAAI,EAAGC,EAAIgO,EAAI5L,OAAQrC,EAAIC,EAAGD,IACrCwC,EAASrC,KAAK6W,EAAO/I,EAAIjO,GAAIA,GAHjC,mC,gCCAA,8CAEO,SAASiX,EAAYC,EAAKC,GAC/BD,EAAO,YAAWA,IAAQA,aAAejK,MAASiK,EAAM,CAACA,GAIzD,IADA,IAAIE,GAFJD,EAASA,aAAiBlK,MAASkK,EAAQ,CAACA,IAErB9U,OACdrC,EAAIkX,EAAI7U,OAAQrC,KACvB,IAAK,IAAIqX,EAAID,EAAYC,KACvBH,EAAIlX,GAAGsX,gBAAgBH,EAAME,M,gCCRnC,IAAIE,EAAoBpK,EAAOqK,YAmB/BzX,EAAOD,QAjBP,WACE,IACE,IAAIgC,EAAI,IAAIyV,EAAkB,MAAO,CAAEE,OAAQ,CAAEC,IAAK,SACtD,MAAQ,QAAU5V,EAAEwD,MAAQ,QAAUxD,EAAE2V,OAAOC,IAC/C,MAAOjS,IAET,OAAO,EAWQkS,GAAcJ,EAG/B,oBAAuBzU,UAAY,mBAAsBA,SAAS8U,YAAc,SAAsBtS,EAAMuS,GAC1G,IAAIpS,EAAI3C,SAAS8U,YAAY,eAM7B,OALIC,EACFpS,EAAEqS,gBAAgBxS,EAAMuS,EAAOE,QAASF,EAAOG,WAAYH,EAAOJ,QAElEhS,EAAEqS,gBAAgBxS,GAAM,GAAO,OAAO,GAEjCG,GAIT,SAAsBH,EAAMuS,GAC1B,IAAIpS,EAAI3C,SAASmV,oBAWjB,OAVAxS,EAAEH,KAAOA,EACLuS,GACFpS,EAAEsS,QAAUG,QAAQL,EAAOE,SAC3BtS,EAAEuS,WAAaE,QAAQL,EAAOG,YAC9BvS,EAAEgS,OAASI,EAAOJ,SAElBhS,EAAEsS,SAAU,EACZtS,EAAEuS,YAAa,EACfvS,EAAEgS,YAAS,GAENhS,K,iDC9CF,SAAS0S,IACd,IAAIC,EAAMtV,SACN+C,EAAOuS,EAAIvS,KAOf,OALKA,KACHA,EAAOuS,EAAIlM,cAAc,SACpBmM,MAAO,GAGPxS,EATT,mC,gCCAA,8CAEO,SAASyS,EAAazS,GAC3B,IAAI0S,EAAc,GAUlB,OATI1S,EAAKwS,OACPE,EAAc,IAAWjS,MAAMkS,SAE/B3S,EAAKS,MAAMmS,WAAa,GAExB5S,EAAKS,MAAMkS,SAAW,IAAWlS,MAAMkS,SAAW,SAClD,IAAWE,YAAY7S,IAGlB0S,I,gCCbT,8CAEO,SAASI,EAAe9S,EAAM0S,GAC/B1S,EAAKwS,OACPxS,EAAKuB,SACL,IAAWd,MAAMkS,SAAWD,EAG5B,IAAWpW,gB,oBCRf,kBACikCsD,EAAjkCnC,OAAOsV,UAAUA,QAAQhX,UAAUiX,UAAUD,QAAQhX,UAAUiX,QAAQ,SAASpT,GAAG,IAAIvE,EAAEO,GAAGqO,KAAKhN,UAAUgN,KAAKgJ,eAAevU,iBAAiBkB,GAAGhF,EAAEqP,KAAK,GAAG,IAAI5O,EAAEO,EAAEY,OAAO,KAAKnB,GAAGO,EAAEwF,KAAK/F,KAAKT,WAAWS,EAAE,IAAIT,EAAEA,EAAEsY,gBAAgB,OAAOtY,IAAI,WAA4D,SAASgF,EAAEA,EAAEvE,GAAGA,EAAEA,GAAG,CAAC6W,SAAQ,EAAGC,YAAW,EAAGP,YAAO,GAAQ,IAAIhW,EAAEqB,SAAS8U,YAAY,eAAe,OAAOnW,EAAEqW,gBAAgBrS,EAAEvE,EAAE6W,QAAQ7W,EAAE8W,WAAW9W,EAAEuW,QAAQhW,EAAjN,mBAAmB6B,OAAOkU,cAAyL/R,EAAE7D,UAAU0B,OAAO0V,MAAMpX,UAAU0B,OAAOkU,YAAY/R,GAAxR,GAA8R,WAAY,IAAI,IAAI3E,EAAE,EAAE2E,EAAE,CAAC,KAAK,MAAM,SAAS,KAAKvE,EAAE,EAAEA,EAAEuE,EAAEpD,SAASiB,OAAOqI,wBAAwBzK,EAAEoC,OAAOqI,sBAAsBrI,OAAOmC,EAAEvE,GAAG,yBAAyBoC,OAAO2V,qBAAqB3V,OAAOmC,EAAEvE,GAAG,yBAAyBoC,OAAOmC,EAAEvE,GAAG,+BAA+BoC,OAAOqI,wBAAwBrI,OAAOqI,sBAAsB,SAASlG,EAAEvE,GAAG,IAAIO,GAAE,IAAKoL,MAAMC,UAAUrM,EAAEyC,KAAKC,IAAI,EAAE,IAAI1B,EAAEX,IAAIoY,EAAE5V,OAAO0I,YAAW,WAAYvG,EAAEhE,EAAEhB,KAAKA,GAAG,OAAOK,EAAEW,EAAEhB,EAAEyY,IAAI5V,OAAO2V,uBAAuB3V,OAAO2V,qBAAqB,SAASxT,GAAG0T,aAAa1T,KAAhiB,GAAmjBA,OAAmJ,IAAoB0H,EAAOA,EAAO,oBAAoB7J,OAAOA,OAAOwM,UAA1I,KAAzB,aAAa,OAA2J,SAAUsJ,GAAG,aAAa,IAAIC,EAAE,CAACC,OAAO,uBAAuBC,OAAO,KAAKC,gBAAe,EAAGC,MAAM,IAAIC,iBAAgB,EAAGC,YAAY,KAAKC,YAAY,KAAKC,MAAK,EAAGC,OAAO,EAAEC,OAAO,iBAAiBC,aAAa,KAAKC,WAAU,EAAGC,UAAS,EAAGC,YAAW,GAAIC,EAAE,WAAW,IAAI3Y,EAAE,GAAG,OAAOwL,MAAMrL,UAAUoF,QAAQ7G,KAAKoN,WAAU,SAAU9H,GAAG,IAAI,IAAIvE,KAAKuE,EAAE,CAAC,IAAIA,EAAE5D,eAAeX,GAAG,OAAOO,EAAEP,GAAGuE,EAAEvE,OAAOO,GAAGX,EAAE,SAAS2E,GAAG,MAAMA,EAAE4U,OAAO,KAAK5U,EAAEA,EAAEmO,OAAO,IAAI,IAAI,IAAI1S,EAAEO,EAAEyN,OAAOzJ,GAAGhF,EAAEgB,EAAEY,OAAO6W,GAAG,EAAEpY,EAAE,GAAGd,EAAEyB,EAAE6Y,WAAW,KAAKpB,EAAEzY,GAAG,CAAC,GAAG,KAAKS,EAAEO,EAAE6Y,WAAWpB,IAAI,MAAM,IAAIqB,sBAAsB,iDAAuHzZ,GAAtE,GAAGI,GAAGA,GAAG,IAAI,KAAKA,GAAG,IAAIgY,GAAG,IAAIhY,GAAGA,GAAG,IAAI,IAAIgY,GAAG,IAAIhY,GAAGA,GAAG,IAAI,KAAKlB,EAAK,KAAKkB,EAAEqR,SAAS,IAAI,IAAO,KAAKrR,GAAG,KAAKA,GAAG,KAAKA,GAAG,IAAIA,GAAGA,GAAG,IAAI,IAAIA,GAAGA,GAAG,IAAI,IAAIA,GAAGA,GAAG,IAAIO,EAAE4Y,OAAOnB,GAAG,KAAKzX,EAAE4Y,OAAOnB,GAAG,MAAM,IAAIpY,GAAG0Z,EAAE,WAAW,OAAOtX,KAAKC,IAAIL,SAAS+C,KAAK4U,aAAa3X,SAASM,gBAAgBqX,aAAa3X,SAAS+C,KAAK1D,aAAaW,SAASM,gBAAgBjB,aAAaW,SAAS+C,KAAKxC,aAAaP,SAASM,gBAAgBC,eAA2G+L,EAAE,SAAS3J,EAAEvE,EAAEO,GAAG,IAAIgE,GAAG3C,SAAS+C,KAAK3B,QAAQzC,IAAIgE,EAAEvB,QAAQpB,SAAS4X,gBAAgBjV,IAAIA,EAAEkV,aAAa,WAAW,MAAMlV,EAAEvB,QAAQuB,EAAEa,MAAMsU,QAAQ,QAAQxB,EAAEyB,SAAS,EAAE3Z,KAAK4Z,EAAE,SAASrV,EAAEvE,EAAEO,EAAEhB,GAAG,GAAGS,EAAEiZ,YAAY,mBAAmBf,EAAE5B,YAAY,CAAC,IAAI0B,EAAE,IAAI1B,YAAY/R,EAAE,CAACsS,SAAQ,EAAGN,OAAO,CAACsD,OAAOtZ,EAAEuZ,OAAOva,KAAKqC,SAASmY,cAAc/B,KAAK,OAAO,SAASzY,EAAEgF,GAAG,IAAIyV,EAAEhC,EAAEiC,EAAEC,EAAEC,EAAE,CAAG,aAAe,SAAS5V,GAAGwT,qBAAqBmC,GAAGA,EAAE,KAAK3V,GAAGqV,EAAE,eAAeI,IAAI,cAAgB,SAAShC,EAAEpY,EAAE2E,GAAG4V,EAAEC,eAAe,IAAItb,EAAEoa,EAAEc,GAAG7B,EAAE5T,GAAG,IAAIpF,EAAE,oBAAoBK,OAAOkB,UAAU2Q,SAASpS,KAAK+Y,GAAGhY,EAAEb,IAAI6Y,EAAEqC,QAAQ,KAAKrC,EAAE,GAAG7Y,GAAGa,EAAE,CAAC,IAAIa,EAAEqX,EAAEoC,YAAYxb,EAAEuZ,SAAS4B,IAAIA,EAAErY,SAAS2F,cAAczI,EAAEuZ,SAAS,IAAI9X,EAAEhB,EAAEgb,EAAExb,EAAEG,EAAEE,EAAE6N,EAAEuN,EAAE5Z,EAA5xB,SAAS2D,GAAG,OAAOA,GAAGvE,EAAEuE,EAAEkW,SAASvC,EAAEwC,iBAAiB1a,GAAG2a,OAAO,IAAIpW,EAAEqW,WAAW,EAAE,IAAI5a,EAAusB6a,CAAEZ,GAAGa,EAAE3b,EAAE6Y,EAAE,SAAUzT,EAAEvE,EAAEO,EAAEhB,GAAG,IAAIyY,EAAE,EAAE,GAAGzT,EAAEwW,aAAa,KAAK/C,GAAGzT,EAAEqW,UAAUrW,EAAEA,EAAEwW,eAAe,OAAO/C,EAAEhW,KAAKC,IAAI+V,EAAEhY,EAAEO,EAAE,GAAGhB,IAAIyY,EAAEhW,KAAKgZ,IAAIhD,EAAEsB,IAAIpB,EAAE7V,cAAc2V,EAApJ,CAAwJhY,EAAEY,EAAE6Z,SAAS,mBAAmB3b,EAAE8Z,OAAO9Z,EAAE8Z,OAAOZ,EAAEpY,GAAGd,EAAE8Z,OAAO,IAAI9Z,EAAE6Z,MAAMsC,EAAEH,EAAEja,EAAEqa,EAAE5B,IAAI6B,EAAE,EAAEC,GAAG7a,EAAE0a,EAAEV,GAAGhb,EAAET,GAAG0Z,gBAAgBjZ,EAAEgZ,MAAMvW,KAAKqZ,IAAI9a,EAAE,IAAIhB,EAAEgZ,OAAOhZ,EAAEkZ,aAAa8B,EAAEhb,EAAEkZ,YAAYlZ,EAAEkZ,YAAYlZ,EAAEmZ,aAAa6B,EAAEhb,EAAEmZ,YAAYnZ,EAAEmZ,YAAY+B,SAASF,EAAE,KAAKe,EAAE,SAAS/W,GAAG,IAAIvE,EAAEO,EAAEhB,EAAER,IAAIA,EAAEwF,GAAG4W,GAAG5W,EAAExF,EAAEK,EAAEyB,EAAEoa,GAAG1a,EAAErB,EAAE,GAAGA,EAAE,IAAIkc,EAAE,EAAED,EAAEC,GAAG,EAAElc,EAAE,gBAAgBc,EAAElB,GAAG+Z,SAAStZ,EAAEgB,EAAEA,GAAG,gBAAgBP,EAAE6Y,SAAStZ,EAAEgB,GAAG,EAAEA,IAAI,kBAAkBP,EAAE6Y,SAAStZ,EAAEgB,EAAE,GAAG,EAAEA,EAAEA,GAAG,EAAE,EAAEA,GAAGA,EAAE,GAAG,gBAAgBP,EAAE6Y,SAAStZ,EAAEgB,EAAEA,EAAEA,GAAG,iBAAiBP,EAAE6Y,SAAStZ,IAAIgB,EAAEA,EAAEA,EAAE,GAAG,mBAAmBP,EAAE6Y,SAAStZ,EAAEgB,EAAE,GAAG,EAAEA,EAAEA,EAAEA,GAAGA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,GAAG,GAAG,gBAAgBP,EAAE6Y,SAAStZ,EAAEgB,EAAEA,EAAEA,EAAEA,GAAG,iBAAiBP,EAAE6Y,SAAStZ,EAAE,KAAKgB,EAAEA,EAAEA,EAAEA,GAAG,mBAAmBP,EAAE6Y,SAAStZ,EAAEgB,EAAE,GAAG,EAAEA,EAAEA,EAAEA,EAAEA,EAAE,EAAE,IAAIA,EAAEA,EAAEA,EAAEA,GAAG,gBAAgBP,EAAE6Y,SAAStZ,EAAEgB,EAAEA,EAAEA,EAAEA,EAAEA,GAAG,iBAAiBP,EAAE6Y,SAAStZ,EAAE,IAAIgB,EAAEA,EAAEA,EAAEA,EAAEA,GAAG,mBAAmBP,EAAE6Y,SAAStZ,EAAEgB,EAAE,GAAG,GAAGA,EAAEA,EAAEA,EAAEA,EAAEA,EAAE,EAAE,KAAKA,EAAEA,EAAEA,EAAEA,EAAEA,GAAGP,EAAE8Y,eAAevZ,EAAES,EAAE8Y,aAAavY,IAAIhB,GAAGgB,GAAG2X,EAAEyB,SAAS,EAAE3X,KAAKuZ,MAAMnc,IAAI,SAAUmF,EAAEvE,GAAG,IAAIO,EAAE2X,EAAEoC,YAAY,GAAG/V,GAAGvE,GAAGO,GAAGP,IAAIa,EAAEb,GAAGkY,EAAE7V,YAAY9B,IAAI2a,EAAE,OAAOf,EAAEC,cAAa,GAAIlM,EAAE8J,EAAEhY,EAAEb,GAAGya,EAAE,aAAa9a,EAAEkZ,EAAEpY,KAAKsa,EAAEnb,EAAE,MAA3I,CAAmJK,EAAE0b,KAAKZ,EAAEhC,EAAEzN,sBAAsB6Q,GAAGvc,EAAEwF,IAAI,IAAI2T,EAAEoC,aAAapC,EAAEyB,SAAS,EAAE,GAAG1M,EAAE+K,EAAEwC,EAAE1b,EAAEK,GAAGqc,QAAQC,WAAWjB,EAAEzB,WAAWyC,QAAQC,UAAU,CAACC,aAAa1S,KAAKoF,UAAUoM,GAAGX,OAAO5M,EAAEjG,IAAIpF,SAAS+Z,MAAM1O,IAAIrL,SAASM,gBAAgB,OAAO,IAAI+K,EAAEjG,IAAI,eAAekR,GAAGA,EAAE0D,WAAW,4BAA4BC,QAAQ3N,EAAE8J,EAAEhW,KAAKuZ,MAAMT,IAAG,IAAKlB,EAAE,cAAc9a,EAAEkZ,EAAEpY,GAAGua,EAAEC,cAAa,GAAIlC,EAAEzN,sBAAsB6Q,OAAUtb,EAAE,SAASuE,GAAG,IAAIA,EAAEuX,oBAAoB,IAAIvX,EAAEwX,QAAQxX,EAAEyX,SAASzX,EAAE0X,SAAS1X,EAAE2X,WAAW,YAAY3X,EAAE7C,SAASsW,EAAEzT,EAAE7C,OAAOiW,QAAQpY,KAAK,MAAMyY,EAAEqC,QAAQ8B,gBAAgB5X,EAAE7C,OAAOiW,QAAQqC,EAAE5B,SAASJ,EAAEoE,WAAWlE,EAAE3U,SAAS6Y,UAAUpE,EAAExU,WAAW0U,EAAE3U,SAASC,UAAU,IAAIM,KAAKkU,EAAEqE,MAAM,CAAC,IAAIrc,EAAEO,EAAE,IAAIP,EAAEJ,EAAE0c,mBAAmBtE,EAAEpH,OAAO,MAAMrM,GAAGvE,EAAEJ,EAAEoY,EAAEpH,MAAM,GAAG,MAAM5Q,EAAE,CAAC,IAAIga,EAAE1B,eAAe,OAAO/X,EAAEqB,SAASM,qBAAqB3B,EAAEqB,SAAS2F,cAAcvH,IAAIO,EAAEA,GAAG,SAASP,EAAEO,EAAEqB,SAASM,mBAAmBqC,EAAEgY,iBAAiB,SAAUhY,GAAG,GAAGiX,QAAQgB,cAAcjY,EAAEwU,YAAYyC,QAAQtT,MAAM,CAAC,IAAIlI,EAAEkY,EAAE3U,SAASqN,KAAK5Q,EAAEA,GAAG,GAAGwb,QAAQgB,aAAa,CAACd,aAAa1S,KAAKoF,UAAU7J,GAAGsV,OAAO7Z,GAAGkY,EAAEoC,aAAa1Y,SAAS+Z,MAAM3b,GAAGkY,EAAE3U,SAAS8Y,OAA5M,CAAqNrC,GAAGG,EAAEsC,cAAclc,EAAEyX,MAAMzX,EAAE,SAASgE,GAAG,GAAG,OAAOiX,QAAQtT,OAAOsT,QAAQtT,MAAMwT,cAAcF,QAAQtT,MAAMwT,eAAe1S,KAAKoF,UAAU4L,GAAG,CAAC,IAAIha,EAAEwb,QAAQtT,MAAM2R,OAAO,iBAAiB7Z,GAAGA,KAAKA,EAAE4B,SAAS2F,cAAc3H,EAAE4b,QAAQtT,MAAM2R,WAAWM,EAAEsC,cAAczc,EAAE,KAAK,CAAC+Y,WAAU,MAAkJ,OAA3IoB,EAAEuC,QAAQ,WAAW1C,IAAIpY,SAASC,oBAAoB,QAAQ7B,GAAE,GAAIkY,EAAErW,oBAAoB,WAAWtB,GAAE,GAAI4Z,EAAEC,eAAeF,EAAED,EAAEjC,EAAEgC,EAAE,OAAc,WAAY,KAAK,kBAAkBpY,UAAU,qBAAqBsW,GAAG,0BAA0BA,GAAG,YAAYA,EAAER,QAAQhX,WAAW,KAAK,iGAAiGyZ,EAAEuC,UAAU1C,EAAEd,EAAEf,EAAE5T,GAAG,IAAI0V,EAAED,EAAE3B,OAAOzW,SAAS2F,cAAcyS,EAAE3B,QAAQ,KAAKzW,SAASE,iBAAiB,QAAQ9B,GAAE,GAAIga,EAAEjB,WAAWiB,EAAEhB,UAAUd,EAAEpW,iBAAiB,WAAWvB,GAAE,GAApZ,GAA4Z4Z,GAA/pKna,CAAEuE,IAAG,QAA3B,OAA2B,e,iDCD9oC,kCAAO,IAAIoY,EAAa/a,SAASM,iB,mBCAjC,sBAAwD,EAAO,CAAC,QAAY,0BAAF,EAAgG,SAAStD,GAAS,aAAa,SAASE,EAAEyF,GAAG,GAAGwH,MAAM2F,QAAQnN,GAAG,CAAC,IAAI,IAAIvE,EAAE,EAAET,EAAEwM,MAAMxH,EAAEpD,QAAQnB,EAAEuE,EAAEpD,OAAOnB,IAAIT,EAAES,GAAGuE,EAAEvE,GAAG,OAAOT,EAAE,OAAOwM,MAAM6Q,KAAKrY,GAAG/E,OAAOC,eAAeb,EAAQ,aAAa,CAACmB,OAAM,IAAK,IAAIhB,GAAE,EAAG,GAAG,oBAAoBqD,OAAO,CAAC,IAAImC,EAAE,CAAC,cAAcxF,GAAE,IAAKqD,OAAON,iBAAiB,cAAc,KAAKyC,GAAGnC,OAAOP,oBAAoB,cAAc,KAAK0C,GAAG,SAASnF,EAAEY,GAAG,OAAOua,EAAEsC,MAAK,SAAStY,GAAG,SAASA,EAAEC,QAAQsY,iBAAiBvY,EAAEC,QAAQsY,eAAe9c,OAAM,SAASb,EAAEoF,GAAG,IAAIvE,EAAEuE,GAAGnC,OAAOZ,MAAM,QAAQpC,EAAEY,EAAE0B,SAAU,EAAE1B,EAAE+c,QAAQ5b,SAASnB,EAAEuc,gBAAgBvc,EAAEuc,kBAAiB,GAAK,SAAShd,IAAIuL,YAAW,gBAAW,IAAS5L,IAAI0C,SAAS+C,KAAKS,MAAM4X,aAAa9d,EAAEA,OAAE,QAAQ,IAAS+N,IAAIrL,SAAS+C,KAAKS,MAAMkS,SAASrK,EAAEA,OAAE,MAAU,IAAI+K,EAAE,oBAAoB5V,QAAQA,OAAOI,WAAWJ,OAAOI,UAAUqB,WAAW,iBAAiBC,KAAK1B,OAAOI,UAAUqB,WAAW,aAAazB,OAAOI,UAAUqB,UAAU,EAAEzB,OAAOI,UAAUya,gBAAgB1C,EAAE,GAAG1Z,GAAE,EAAGqa,GAAG,EAAEjO,OAAE,EAAO/N,OAAE,EAAON,EAAQse,kBAAkB,SAAStd,EAAE2E,GAAG,GAAGyT,EAAE,CAAC,IAAIpY,EAAE,YAAYiM,EAAQc,MAAM,kHAAkH,GAAG/M,IAAI2a,EAAEsC,MAAK,SAAStY,GAAG,OAAOA,EAAE4Y,gBAAgBvd,KAAI,CAAC,IAAII,EAAE,CAACmd,cAAcvd,EAAE4E,QAAQD,GAAG,IAAIgW,EAAE,GAAG6C,OAAOte,EAAEyb,GAAG,CAACva,IAAIJ,EAAEyd,aAAa,SAAS9Y,GAAG,IAAIA,EAAE+Y,cAAcnc,SAAS+Z,EAAE3W,EAAE+Y,cAAc,GAAGC,UAAU3d,EAAE4d,YAAY,SAASjZ,GAAG,IAAIvE,EAAET,EAAEgB,EAAEzB,EAAE,IAAIyF,EAAE+Y,cAAcnc,SAAS5B,EAAEK,EAAEd,GAAGkB,EAAEuE,GAAG+Y,cAAc,GAAGC,QAAQrC,EAAE9b,EAAEY,EAAE0B,UAAUnC,GAAG,IAAIA,EAAEke,WAAW,EAAE3e,IAAIyB,EAAEhB,IAAIgB,EAAEgZ,aAAahZ,EAAEkd,WAAWld,EAAE4B,cAAcrD,EAAE,EAAEK,EAAEa,GAAGA,EAAE0d,qBAAqB7c,IAAIe,SAASE,iBAAiB,YAAY3C,EAAEJ,EAAE,CAAC4e,SAAQ,QAAI,GAAQ9c,GAAE,QAAS,CAACN,EAAEgE,EAAEuG,YAAW,WAAW,QAAG,IAAS5L,EAAE,CAAC,IAAIqF,IAAIhE,IAAG,IAAKA,EAAEqd,oBAAoB5d,EAAEoC,OAAOQ,WAAWhB,SAASM,gBAAgB2b,YAAYtZ,GAAG,EAAEvE,IAAId,EAAE0C,SAAS+C,KAAKS,MAAM4X,aAAapb,SAAS+C,KAAKS,MAAM4X,aAAahd,EAAE,WAAM,IAASiN,IAAIA,EAAErL,SAAS+C,KAAKS,MAAMkS,SAAS1V,SAAS+C,KAAKS,MAAMkS,SAAS,aAAY,IAAI/X,EAAE,CAAC4d,cAAcvd,EAAE4E,QAAQD,GAAG,IAAIgW,EAAE,GAAG6C,OAAOte,EAAEyb,GAAG,CAAChb,IAAI,IAAIgB,GAAG3B,EAAQkf,wBAAwB,WAAW9F,GAAGuC,EAAEzU,SAAQ,SAASvB,GAAGA,EAAE4Y,cAAcE,aAAa,KAAK9Y,EAAE4Y,cAAcK,YAAY,QAAO3c,IAAIe,SAASC,oBAAoB,YAAY1C,EAAEJ,EAAE,CAAC4e,SAAQ,QAAI,GAAQ9c,GAAE,GAAI0Z,EAAE,GAAGW,GAAG,IAAI3b,IAAIgb,EAAE,KAAK3b,EAAQmf,iBAAiB,SAAS/d,GAAG,GAAGgY,EAAE,CAAC,IAAIhY,EAAE,YAAY6L,EAAQc,MAAM,gHAAgH3M,EAAEqd,aAAa,KAAKrd,EAAEwd,YAAY,KAAKjD,EAAEA,EAAEyD,QAAO,SAASzZ,GAAG,OAAOA,EAAE4Y,gBAAgBnd,KAAIa,GAAG,IAAI0Z,EAAEpZ,SAASS,SAASC,oBAAoB,YAAY1C,EAAEJ,EAAE,CAAC4e,SAAQ,QAAI,GAAQ9c,GAAE,QAAS0Z,EAAEA,EAAEyD,QAAO,SAASzZ,GAAG,OAAOA,EAAE4Y,gBAAgBnd,MAAKmB,QAAQ5B,OAAvwF,iC,mCCC5E,IAOI0e,EACAC,EARAxP,EAAU7P,EAAOD,QAAU,GAU/B,SAASuf,IACL,MAAM,IAAIrZ,MAAM,mCAEpB,SAASsZ,IACL,MAAM,IAAItZ,MAAM,qCAsBpB,SAASuZ,EAAWC,GAChB,GAAIL,IAAqBnT,WAErB,OAAOA,WAAWwT,EAAK,GAG3B,IAAKL,IAAqBE,IAAqBF,IAAqBnT,WAEhE,OADAmT,EAAmBnT,WACZA,WAAWwT,EAAK,GAE3B,IAEI,OAAOL,EAAiBK,EAAK,GAC/B,MAAM/Z,GACJ,IAEI,OAAO0Z,EAAiBhf,KAAK,KAAMqf,EAAK,GAC1C,MAAM/Z,GAEJ,OAAO0Z,EAAiBhf,KAAK2P,KAAM0P,EAAK,MAvCnD,WACG,IAEQL,EADsB,mBAAfnT,WACYA,WAEAqT,EAEzB,MAAO5Z,GACL0Z,EAAmBE,EAEvB,IAEQD,EADwB,mBAAjBjG,aACcA,aAEAmG,EAE3B,MAAO7Z,GACL2Z,EAAqBE,GAjB7B,GAwEA,IAEIG,EAFAC,EAAQ,GACRC,GAAW,EAEXC,GAAc,EAElB,SAASC,IACAF,GAAaF,IAGlBE,GAAW,EACPF,EAAapd,OACbqd,EAAQD,EAAanB,OAAOoB,GAE5BE,GAAc,EAEdF,EAAMrd,QACNyd,KAIR,SAASA,IACL,IAAIH,EAAJ,CAGA,IAAII,EAAUR,EAAWM,GACzBF,GAAW,EAGX,IADA,IAAI1Q,EAAMyQ,EAAMrd,OACV4M,GAAK,CAGP,IAFAwQ,EAAeC,EACfA,EAAQ,KACCE,EAAa3Q,GACdwQ,GACAA,EAAaG,GAAYI,MAGjCJ,GAAc,EACd3Q,EAAMyQ,EAAMrd,OAEhBod,EAAe,KACfE,GAAW,EAnEf,SAAyBM,GACrB,GAAIb,IAAuBjG,aAEvB,OAAOA,aAAa8G,GAGxB,IAAKb,IAAuBE,IAAwBF,IAAuBjG,aAEvE,OADAiG,EAAqBjG,aACdA,aAAa8G,GAExB,IAEWb,EAAmBa,GAC5B,MAAOxa,GACL,IAEI,OAAO2Z,EAAmBjf,KAAK,KAAM8f,GACvC,MAAOxa,GAGL,OAAO2Z,EAAmBjf,KAAK2P,KAAMmQ,KAgD7CC,CAAgBH,IAiBpB,SAASI,EAAKX,EAAK3N,GACf/B,KAAK0P,IAAMA,EACX1P,KAAK+B,MAAQA,EAYjB,SAASuO,KA5BTxQ,EAAQ+G,SAAW,SAAU6I,GACzB,IAAIxQ,EAAO,IAAI/B,MAAMM,UAAUlL,OAAS,GACxC,GAAIkL,UAAUlL,OAAS,EACnB,IAAK,IAAIrC,EAAI,EAAGA,EAAIuN,UAAUlL,OAAQrC,IAClCgP,EAAKhP,EAAI,GAAKuN,UAAUvN,GAGhC0f,EAAM5Q,KAAK,IAAIqR,EAAKX,EAAKxQ,IACJ,IAAjB0Q,EAAMrd,QAAiBsd,GACvBJ,EAAWO,IASnBK,EAAKve,UAAUoe,IAAM,WACjBlQ,KAAK0P,IAAIlS,MAAM,KAAMwC,KAAK+B,QAE9BjC,EAAQiN,MAAQ,UAChBjN,EAAQyQ,SAAU,EAClBzQ,EAAQuE,IAAM,GACdvE,EAAQ0Q,KAAO,GACf1Q,EAAQ2Q,QAAU,GAClB3Q,EAAQ4Q,SAAW,GAInB5Q,EAAQ6Q,GAAKL,EACbxQ,EAAQ8Q,YAAcN,EACtBxQ,EAAQ+Q,KAAOP,EACfxQ,EAAQgR,IAAMR,EACdxQ,EAAQiR,eAAiBT,EACzBxQ,EAAQkR,mBAAqBV,EAC7BxQ,EAAQmR,KAAOX,EACfxQ,EAAQoR,gBAAkBZ,EAC1BxQ,EAAQqR,oBAAsBb,EAE9BxQ,EAAQsR,UAAY,SAAU3gB,GAAQ,MAAO,IAE7CqP,EAAQuR,QAAU,SAAU5gB,GACxB,MAAM,IAAIyF,MAAM,qCAGpB4J,EAAQwR,IAAM,WAAc,MAAO,KACnCxR,EAAQyR,MAAQ,SAAUC,GACtB,MAAM,IAAItb,MAAM,mCAEpB4J,EAAQ2R,MAAQ,WAAa,OAAO,I,gCCvL7B,SAASC,EAAQpb,EAAIqb,GAC1B,OAAOrb,EAAGsb,aAAaD,GADzB,mC,gCCAO,SAASE,EAAcC,GAC5B,GAAqB,iBAAVA,EAAoB,CAC7B,IAAI3T,EAAM,CAAC2T,GACPC,EAAQD,EAAMvH,OAAO,GAAGhG,cAAgBuN,EAAMhO,OAAO,GAC1C,CAAC,SAAU,MAAO,KAAM,KAE9B5M,SAAQ,SAAS8a,GACT,OAAXA,GAA6B,cAAVF,GACrB3T,EAAIa,KAAKgT,EAASD,MAItBD,EAAQ3T,EAKV,IAFA,IAAI7H,EAAKtD,SAASoJ,cAAc,eAExBlM,GADE4hB,EAAMvf,OACJ,GAAGrC,EAAI4hB,EAAMvf,OAAQrC,IAAI,CACnC,IAAIkV,EAAO0M,EAAM5hB,GACjB,QAAuByK,IAAnBrE,EAAGE,MAAM4O,GAAuB,OAAOA,EAG7C,OAAO,EAtBT,mC,iBCAAnV,EAAOD,QAAU,SAAkBgU,GACjC,OAAOA,GAAsB,iBAARA,GACI,mBAAbA,EAAIiO,MACS,mBAAbjO,EAAIkO,MACc,mBAAlBlO,EAAImO,Y,iBCJW,mBAAlBvhB,OAAOY,OAEhBvB,EAAOD,QAAU,SAAkBoiB,EAAMC,GACvCD,EAAKE,OAASD,EACdD,EAAKtgB,UAAYlB,OAAOY,OAAO6gB,EAAUvgB,UAAW,CAClD2I,YAAa,CACXtJ,MAAOihB,EACPthB,YAAY,EACZgV,UAAU,EACVC,cAAc,MAMpB9V,EAAOD,QAAU,SAAkBoiB,EAAMC,GACvCD,EAAKE,OAASD,EACd,IAAIE,EAAW,aACfA,EAASzgB,UAAYugB,EAAUvgB,UAC/BsgB,EAAKtgB,UAAY,IAAIygB,EACrBH,EAAKtgB,UAAU2I,YAAc2X,I,iCCpBjC,YAEA,IAAII,EAAe,EAAQ,IAW3B,SAASC,EAAQrJ,EAAGgC,GAClB,GAAIhC,IAAMgC,EACR,OAAO,EAMT,IAHA,IAAI9L,EAAI8J,EAAE7W,OACN8Z,EAAIjB,EAAE7Y,OAEDrC,EAAI,EAAGiP,EAAM/L,KAAKgZ,IAAI9M,EAAG+M,GAAInc,EAAIiP,IAAOjP,EAC/C,GAAIkZ,EAAElZ,KAAOkb,EAAElb,GAAI,CACjBoP,EAAI8J,EAAElZ,GACNmc,EAAIjB,EAAElb,GACN,MAIJ,OAAIoP,EAAI+M,GACE,EAENA,EAAI/M,EACC,EAEF,EAET,SAASsF,EAASwG,GAChB,OAAI/N,EAAOqV,QAA4C,mBAA3BrV,EAAOqV,OAAO9N,SACjCvH,EAAOqV,OAAO9N,SAASwG,KAEjB,MAALA,IAAaA,EAAEuH,WA+B3B,IAAI/V,EAAO,EAAQ,IACfgW,EAAShiB,OAAOkB,UAAUC,eAC1B8gB,EAAS1V,MAAMrL,UAAUoL,MACzB4V,EACgC,QAA3B,aAAkBriB,KAE3B,SAASsiB,EAAWrU,GAClB,OAAO9N,OAAOkB,UAAU2Q,SAASpS,KAAKqO,GAExC,SAASsU,EAAOC,GACd,OAAIrO,EAASqO,KAGqB,mBAAvB5V,EAAO6V,cAGgB,mBAAvBA,YAAYF,OACdE,YAAYF,OAAOC,KAEvBA,IAGDA,aAAkBE,aAGlBF,EAAOG,QAAUH,EAAOG,kBAAkBF,gBAShD,IAAIrW,EAAS5M,EAAOD,QAAUqF,EAO1Bge,EAAQ,8BAEZ,SAASC,EAAQC,GACf,GAAK3W,EAAK4E,WAAW+R,GAArB,CAGA,GAAIT,EACF,OAAOS,EAAK9iB,KAEd,IACIwS,EADMsQ,EAAK9Q,WACCQ,MAAMoQ,GACtB,OAAOpQ,GAASA,EAAM,IAyCxB,SAASuQ,EAASvhB,EAAGN,GACnB,MAAiB,iBAANM,EACFA,EAAEM,OAASZ,EAAIM,EAAIA,EAAEiL,MAAM,EAAGvL,GAE9BM,EAGX,SAASgM,EAAQwV,GACf,GAAIX,IAAuBlW,EAAK4E,WAAWiS,GACzC,OAAO7W,EAAKqB,QAAQwV,GAEtB,IAAIC,EAAUJ,EAAQG,GAEtB,MAAO,aADIC,EAAU,KAAOA,EAAU,IACT,IAmB/B,SAASC,EAAKC,EAAQC,EAAUzd,EAAS0d,EAAUC,GACjD,MAAM,IAAIlX,EAAOmX,eAAe,CAC9B5d,QAASA,EACTwd,OAAQA,EACRC,SAAUA,EACVC,SAAUA,EACVC,mBAAoBA,IAcxB,SAAS1e,EAAGlE,EAAOiF,GACZjF,GAAOwiB,EAAKxiB,GAAO,EAAMiF,EAAS,KAAMyG,EAAOxH,IAoCtD,SAAS4e,EAAWL,EAAQC,EAAUK,EAAQC,GAE5C,GAAIP,IAAWC,EACb,OAAO,EACF,GAAIjP,EAASgP,IAAWhP,EAASiP,GACtC,OAAqC,IAA9BpB,EAAQmB,EAAQC,GAIlB,GAAIjX,EAAK8F,OAAOkR,IAAWhX,EAAK8F,OAAOmR,GAC5C,OAAOD,EAAO5W,YAAc6W,EAAS7W,UAKhC,GAAIJ,EAAK2F,SAASqR,IAAWhX,EAAK2F,SAASsR,GAChD,OAAOD,EAAOQ,SAAWP,EAASO,QAC3BR,EAAOvW,SAAWwW,EAASxW,QAC3BuW,EAAOS,YAAcR,EAASQ,WAC9BT,EAAOU,YAAcT,EAASS,WAC9BV,EAAOW,aAAeV,EAASU,WAIjC,GAAgB,OAAXX,GAAqC,iBAAXA,GACb,OAAbC,GAAyC,iBAAbA,EASjC,IAAIb,EAAOY,IAAWZ,EAAOa,IACzBd,EAAUa,KAAYb,EAAUc,MAC9BD,aAAkBY,cAClBZ,aAAkBa,cAC7B,OACoD,IAD7ChC,EAAQ,IAAIiC,WAAWd,EAAOR,QACtB,IAAIsB,WAAWb,EAAST,SAQlC,GAAIxO,EAASgP,KAAYhP,EAASiP,GACvC,OAAO,EAIP,IAAIc,GAFJR,EAAQA,GAAS,CAACP,OAAQ,GAAIC,SAAU,KAEhBD,OAAO9f,QAAQ8f,GACvC,OAAqB,IAAjBe,GACEA,IAAgBR,EAAMN,SAAS/f,QAAQ+f,KAK7CM,EAAMP,OAAO5U,KAAK4U,GAClBO,EAAMN,SAAS7U,KAAK6U,GAUxB,SAAkBzK,EAAGgC,EAAG8I,EAAQU,GAC9B,GAAIxL,eAAiCgC,EACnC,OAAO,EAET,GAAIxO,EAAK+H,YAAYyE,IAAMxM,EAAK+H,YAAYyG,GAC1C,OAAOhC,IAAMgC,EACf,GAAI8I,GAAUtjB,OAAOyV,eAAe+C,KAAOxY,OAAOyV,eAAe+E,GAC/D,OAAO,EACT,IAAIyJ,EAAUC,EAAY1L,GACtB2L,EAAUD,EAAY1J,GAC1B,GAAKyJ,IAAYE,IAAcF,GAAWE,EACxC,OAAO,EACT,GAAIF,EAGF,OAFAzL,EAAIyJ,EAAOxiB,KAAK+Y,GAChBgC,EAAIyH,EAAOxiB,KAAK+a,GACT6I,EAAW7K,EAAGgC,EAAG8I,GAE1B,IAEIziB,EAAKvB,EAFL8kB,EAAKC,EAAW7L,GAChB8L,EAAKD,EAAW7J,GAIpB,GAAI4J,EAAGziB,SAAW2iB,EAAG3iB,OACnB,OAAO,EAKT,IAHAyiB,EAAGG,OACHD,EAAGC,OAEEjlB,EAAI8kB,EAAGziB,OAAS,EAAGrC,GAAK,EAAGA,IAC9B,GAAI8kB,EAAG9kB,KAAOglB,EAAGhlB,GACf,OAAO,EAIX,IAAKA,EAAI8kB,EAAGziB,OAAS,EAAGrC,GAAK,EAAGA,IAE9B,GADAuB,EAAMujB,EAAG9kB,IACJ+jB,EAAW7K,EAAE3X,GAAM2Z,EAAE3Z,GAAMyiB,EAAQU,GACtC,OAAO,EAEX,OAAO,EA/CEQ,CAASxB,EAAQC,EAAUK,EAAQC,IApC1C,OAAOD,EAASN,IAAWC,EAAWD,GAAUC,EAwCpD,SAASiB,EAAYljB,GACnB,MAAiD,sBAA1ChB,OAAOkB,UAAU2Q,SAASpS,KAAKuB,GAgFxC,SAASyjB,EAAkBzB,EAAQC,GACjC,IAAKD,IAAWC,EACd,OAAO,EAGT,GAAgD,mBAA5CjjB,OAAOkB,UAAU2Q,SAASpS,KAAKwjB,GACjC,OAAOA,EAAS3e,KAAK0e,GAGvB,IACE,GAAIA,aAAkBC,EACpB,OAAO,EAET,MAAOle,IAIT,OAAIO,MAAMof,cAAczB,KAIa,IAA9BA,EAASxjB,KAAK,GAAIujB,GAa3B,SAAS2B,EAAQC,EAAaC,EAAO5B,EAAUzd,GAC7C,IAAIwd,EAEJ,GAAqB,mBAAV6B,EACT,MAAM,IAAI5P,UAAU,uCAGE,iBAAbgO,IACTzd,EAAUyd,EACVA,EAAW,MAGbD,EAtBF,SAAmB6B,GACjB,IAAI1X,EACJ,IACE0X,IACA,MAAO9f,GACPoI,EAAQpI,EAEV,OAAOoI,EAeE2X,CAAUD,GAEnBrf,GAAWyd,GAAYA,EAASpjB,KAAO,KAAOojB,EAASpjB,KAAO,KAAO,MAC1D2F,EAAU,IAAMA,EAAU,KAEjCof,IAAgB5B,GAClBD,EAAKC,EAAQC,EAAU,6BAA+Bzd,GAGxD,IAAIuf,EAAyC,iBAAZvf,EAE7Bwf,GAAyBJ,GAAe5B,IAAWC,EASvD,KAV2B2B,GAAe5Y,EAAKyF,QAAQuR,IAInD+B,GACAN,EAAkBzB,EAAQC,IAC1B+B,IACFjC,EAAKC,EAAQC,EAAU,yBAA2Bzd,GAG/Cof,GAAe5B,GAAUC,IACzBwB,EAAkBzB,EAAQC,KAAgB2B,GAAe5B,EAC5D,MAAMA,EAvVV/W,EAAOmX,eAAiB,SAAwBpe,GAsDhD,IAAoB+Q,EArDlB3G,KAAKvP,KAAO,iBACZuP,KAAK4T,OAAShe,EAAQge,OACtB5T,KAAK6T,SAAWje,EAAQie,SACxB7T,KAAK8T,SAAWle,EAAQke,SACpBle,EAAQQ,SACV4J,KAAK5J,QAAUR,EAAQQ,QACvB4J,KAAK6V,kBAAmB,IAExB7V,KAAK5J,QA8CAod,EAASvV,GADE0I,EA7CU3G,MA8CC4T,QAAS,KAAO,IACtCjN,EAAKmN,SAAW,IAChBN,EAASvV,EAAQ0I,EAAKkN,UAAW,KA/CtC7T,KAAK6V,kBAAmB,GAE1B,IAAI9B,EAAqBne,EAAQme,oBAAsBJ,EACvD,GAAIzd,MAAM4f,kBACR5f,MAAM4f,kBAAkB9V,KAAM+T,OACzB,CAEL,IAAIjW,EAAM,IAAI5H,MACd,GAAI4H,EAAIE,MAAO,CACb,IAAI+X,EAAMjY,EAAIE,MAGVgY,EAAU1C,EAAQS,GAClB7R,EAAM6T,EAAIjiB,QAAQ,KAAOkiB,GAC7B,GAAI9T,GAAO,EAAG,CAGZ,IAAI+T,EAAYF,EAAIjiB,QAAQ,KAAMoO,EAAM,GACxC6T,EAAMA,EAAIG,UAAUD,EAAY,GAGlCjW,KAAKhC,MAAQ+X,KAMnBnZ,EAAKyI,SAASxI,EAAOmX,eAAgB9d,OA6CrC2G,EAAO8W,KAAOA,EAYd9W,EAAOxH,GAAKA,EAMZwH,EAAOsZ,MAAQ,SAAevC,EAAQC,EAAUzd,GAC1Cwd,GAAUC,GAAUF,EAAKC,EAAQC,EAAUzd,EAAS,KAAMyG,EAAOsZ,QAMvEtZ,EAAOuZ,SAAW,SAAkBxC,EAAQC,EAAUzd,GAChDwd,GAAUC,GACZF,EAAKC,EAAQC,EAAUzd,EAAS,KAAMyG,EAAOuZ,WAOjDvZ,EAAOwZ,UAAY,SAAmBzC,EAAQC,EAAUzd,GACjD6d,EAAWL,EAAQC,GAAU,IAChCF,EAAKC,EAAQC,EAAUzd,EAAS,YAAayG,EAAOwZ,YAIxDxZ,EAAOyZ,gBAAkB,SAAyB1C,EAAQC,EAAUzd,GAC7D6d,EAAWL,EAAQC,GAAU,IAChCF,EAAKC,EAAQC,EAAUzd,EAAS,kBAAmByG,EAAOyZ,kBAuH9DzZ,EAAO0Z,aAAe,SAAsB3C,EAAQC,EAAUzd,GACxD6d,EAAWL,EAAQC,GAAU,IAC/BF,EAAKC,EAAQC,EAAUzd,EAAS,eAAgByG,EAAO0Z,eAI3D1Z,EAAO2Z,mBACP,SAASA,EAAmB5C,EAAQC,EAAUzd,GACxC6d,EAAWL,EAAQC,GAAU,IAC/BF,EAAKC,EAAQC,EAAUzd,EAAS,qBAAsBogB,IAQ1D3Z,EAAO4Z,YAAc,SAAqB7C,EAAQC,EAAUzd,GACtDwd,IAAWC,GACbF,EAAKC,EAAQC,EAAUzd,EAAS,MAAOyG,EAAO4Z,cAOlD5Z,EAAO6Z,eAAiB,SAAwB9C,EAAQC,EAAUzd,GAC5Dwd,IAAWC,GACbF,EAAKC,EAAQC,EAAUzd,EAAS,MAAOyG,EAAO6Z,iBA+ElD7Z,EAAO8Z,OAAS,SAASlB,EAAmB1X,EAAmB3H,GAC7Dmf,GAAQ,EAAME,EAAO1X,EAAO3H,IAI9ByG,EAAO+Z,aAAe,SAASnB,EAAmB1X,EAAmB3H,GACnEmf,GAAQ,EAAOE,EAAO1X,EAAO3H,IAG/ByG,EAAOga,QAAU,SAAS/Y,GAAO,GAAIA,EAAK,MAAMA,GAMhDjB,EAAOqX,OAAS1B,GAHhB,SAAS0B,EAAO/iB,EAAOiF,GAChBjF,GAAOwiB,EAAKxiB,GAAO,EAAMiF,EAAS,KAAM8d,KAEVrX,EAAQ,CAC3CsZ,MAAOtZ,EAAO4Z,YACdJ,UAAWxZ,EAAOyZ,gBAClBF,SAAUvZ,EAAO6Z,eACjBH,aAAc1Z,EAAO2Z,qBAEvB3Z,EAAOqX,OAAOA,OAASrX,EAAOqX,OAE9B,IAAIe,EAAarkB,OAAO4J,MAAQ,SAAUkE,GACxC,IAAIlE,EAAO,GACX,IAAK,IAAI/I,KAAOiN,EACVkU,EAAOviB,KAAKqO,EAAKjN,IAAM+I,EAAKwE,KAAKvN,GAEvC,OAAO+I,K,iDChfT,IAAIsc,EAAwBlmB,OAAOkmB,sBAC/B/kB,EAAiBnB,OAAOkB,UAAUC,eAClCglB,EAAmBnmB,OAAOkB,UAAUklB,qBAExC,SAASC,EAAShV,GACjB,GAAIA,QACH,MAAM,IAAI4D,UAAU,yDAGrB,OAAOjV,OAAOqR,GA+CfhS,EAAOD,QA5CP,WACC,IACC,IAAKY,OAAOsmB,OACX,OAAO,EAMR,IAAIC,EAAQ,IAAI/X,OAAO,OAEvB,GADA+X,EAAM,GAAK,KACkC,MAAzCvmB,OAAOwR,oBAAoB+U,GAAO,GACrC,OAAO,EAKR,IADA,IAAIC,EAAQ,GACHlnB,EAAI,EAAGA,EAAI,GAAIA,IACvBknB,EAAM,IAAMhY,OAAOiY,aAAannB,IAAMA,EAKvC,GAAwB,eAHXU,OAAOwR,oBAAoBgV,GAAOjU,KAAI,SAAUxR,GAC5D,OAAOylB,EAAMzlB,MAEHsN,KAAK,IACf,OAAO,EAIR,IAAIqY,EAAQ,GAIZ,MAHA,uBAAuB1T,MAAM,IAAI1M,SAAQ,SAAUqgB,GAClDD,EAAMC,GAAUA,KAGf,yBADE3mB,OAAO4J,KAAK5J,OAAOsmB,OAAO,GAAII,IAAQrY,KAAK,IAM9C,MAAOnB,GAER,OAAO,GAIQ0Z,GAAoB5mB,OAAOsmB,OAAS,SAAUpkB,EAAQshB,GAKtE,IAJA,IAAIpG,EAEAyJ,EADAC,EAAKT,EAASnkB,GAGTb,EAAI,EAAGA,EAAIwL,UAAUlL,OAAQN,IAAK,CAG1C,IAAK,IAAIR,KAFTuc,EAAOpd,OAAO6M,UAAUxL,IAGnBF,EAAe1B,KAAK2d,EAAMvc,KAC7BimB,EAAGjmB,GAAOuc,EAAKvc,IAIjB,GAAIqlB,EAAuB,CAC1BW,EAAUX,EAAsB9I,GAChC,IAAK,IAAI9d,EAAI,EAAGA,EAAIunB,EAAQllB,OAAQrC,IAC/B6mB,EAAiB1mB,KAAK2d,EAAMyJ,EAAQvnB,MACvCwnB,EAAGD,EAAQvnB,IAAM8d,EAAKyJ,EAAQvnB,MAMlC,OAAOwnB,I,iBCvFF,qBAAsB1kB,UAAY,WAEvC,SAAS2kB,EAAallB,GACrB,OAAIe,OAAOsY,iBAEHA,iBAAiBrZ,EAAS,MAG3BA,EAAQmlB,aA+BhB,IAAIC,EAuBJ,SAASC,EAAWthB,GACnB,MAAwB,QAAjBA,EAAMC,WAA2C,YAApBD,EAAMuhB,YACzC,gCAAgC7iB,KAAKsB,EAAMC,UAY7C,IAAIuhB,EAAmB,WACtB,GArCiB,WAEjB,IADsB,QAAQ9iB,KAAKlC,SAASilB,YAI3C,OAAO,EAER,QAA0B,IAAtBJ,EAA8B,CAGjC,IAAIK,EAASllB,SAASoJ,cAAc,UACpC8b,EAAO1hB,MAAMuV,OAAS,OACrB/Y,SAAS+C,MAAQ/C,SAASM,iBAAmBN,UAAU4V,YAAYsP,GACpE,IAAI5P,EAAM4P,EAAOC,cAAcnlB,SAC/BsV,EAAI8P,MAAM,qDACV9P,EAAI+P,QACJR,EAAoBvP,EAAIhV,gBAAgBqX,aAAerC,EAAIvS,KAAK4U,aAChEuN,EAAOI,WAAWC,YAAYL,GAE/B,OAAOL,EAkBHW,GACH,OAAOxlB,SAASM,gBAEjB,IAAIyC,EAAO/C,SAAS+C,KAMpB,OAFAA,EADiBA,IAAS,QAAQb,KAAKa,EAAK0V,SA9D7C,SAA4BgN,GAO3B,IADA,IAhBsBhmB,EAgBlBiC,EAAU+jB,EACP/jB,EAAUA,EAAQgkB,aACxB,GAAwB,GAApBhkB,EAAQikB,WAlBSlmB,EAkBsBiC,EAfxClB,OAAOolB,gBACHnmB,aAAmBmmB,gBAGpB,QAAQ1jB,KAAKzC,EAAQgZ,UAY1B,OAAO/W,EAIT,OAAO,KAkDamkB,CAAmB9iB,GAAQA,IAjBhD,SAAsBA,GAGrB,IAAI+iB,EAAYnB,EAAa5hB,GACzBgjB,EAAYpB,EAAa3kB,SAASM,iBACtC,MAA6B,WAAtBwlB,EAAUpQ,UAA+C,WAAtBqQ,EAAUrQ,UACnDoP,EAAWgB,IAAchB,EAAWiB,GAatBC,CAAajjB,GAAQ,KAAOA,GAGxCnF,OAAOC,eAEVD,OAAOC,eAAemC,SAAU,mBAAoB,CACnD,IAAOglB,IAEEhlB,SAASimB,iBAEnBjmB,SAASimB,iBAAiB,mBAAoBjB,IAI9ChlB,SAASglB,iBAAmBA,IAC5BhlB,SAASkmB,aAAelmB,SAASkmB,YAAY,oBAAoB,WAI/B,iBAA7B1lB,OAAOZ,MAAMumB,eAChBnmB,SAASglB,iBAAmBA,SA1GO,I,+BCDvC,8CACIoB,EAAW,IACX,SAAU9iB,EAAIgG,GACP,YAAShG,EAAKgG,IAAQhG,EAAGxB,UAAUC,IAAIuH,IAE9C,SAAUhG,EAAIgG,GACP,YAAShG,EAAKgG,KAAQhG,EAAGiG,WAAa,IAAMD,K,qDCNvD,WAiBA9I,OAAON,iBAAiB,oBAAoB,WAf5C,IACQmmB,IAAcrmB,SAASyB,iBAAiB,eAE9C0I,MAAM6Q,KAAKqL,GAAaniB,SAAQ,SAAAoiB,GAC9BA,EAAKpmB,iBAAiB,SAAS,SAAAyC,GAC7BA,EAAEgY,iBACFna,OAAOmB,SAAW2kB,EAAKzkB,aAAa,gBAGtCykB,EAAKpmB,iBAAiB,aAAa,SAAAyC,GACjB,IAAZA,EAAE4jB,OAAatlB,YAAaqlB,EAAKzkB,aAAa,wB,2CCZxD,SAAS2kB,EAAQ5nB,EAAQ6nB,GAAkB,IAAIjf,EAAO5J,OAAO4J,KAAK5I,GAAS,GAAIhB,OAAOkmB,sBAAuB,CAAE,IAAIW,EAAU7mB,OAAOkmB,sBAAsBllB,GAAa6nB,IAAgBhC,EAAUA,EAAQrI,QAAO,SAAUsK,GAAO,OAAO9oB,OAAOgO,yBAAyBhN,EAAQ8nB,GAAK5oB,eAAgB0J,EAAKwE,KAAKxB,MAAMhD,EAAMid,GAAY,OAAOjd,EAI9U,SAASmf,EAAmBxb,GAAO,OAMnC,SAA4BA,GAAO,GAAIhB,MAAM2F,QAAQ3E,GAAM,CAAE,IAAK,IAAIjO,EAAI,EAAG0pB,EAAO,IAAIzc,MAAMgB,EAAI5L,QAASrC,EAAIiO,EAAI5L,OAAQrC,IAAO0pB,EAAK1pB,GAAKiO,EAAIjO,GAAM,OAAO0pB,GANnHC,CAAmB1b,IAI7D,SAA0B2b,GAAQ,GAAI7oB,OAAO8oB,YAAYnpB,OAAOkpB,IAAkD,uBAAzClpB,OAAOkB,UAAU2Q,SAASpS,KAAKypB,GAAgC,OAAO3c,MAAM6Q,KAAK8L,GAJrFE,CAAiB7b,IAEtF,WAAgC,MAAM,IAAI0H,UAAU,mDAF0CoU,GAU9F,SAASC,EAAkBpnB,EAAQgf,GAAS,IAAK,IAAI5hB,EAAI,EAAGA,EAAI4hB,EAAMvf,OAAQrC,IAAK,CAAE,IAAIiqB,EAAarI,EAAM5hB,GAAIiqB,EAAWrpB,WAAaqpB,EAAWrpB,aAAc,EAAOqpB,EAAWpU,cAAe,EAAU,UAAWoU,IAAYA,EAAWrU,UAAW,GAAMlV,OAAOC,eAAeiC,EAAQqnB,EAAW1oB,IAAK0oB,IAI7S,SAASC,EAAgB1b,EAAKjN,EAAKN,GAAiK,OAApJM,KAAOiN,EAAO9N,OAAOC,eAAe6N,EAAKjN,EAAK,CAAEN,MAAOA,EAAOL,YAAY,EAAMiV,cAAc,EAAMD,UAAU,IAAkBpH,EAAIjN,GAAON,EAAgBuN,EAE3M,IAAI2b,IAAiC,oBAAX7mB,SAA0BA,OAAOR,WAAYQ,OAAOR,SAASoJ,eA+HxE,MA3Hf,WACE,SAASke,IACP,IAAIC,EAAQva,MAdhB,SAAyBwa,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAI5U,UAAU,qCAgB5G6U,CAAgB1a,KAAMsa,GAEtBF,EAAgBpa,KAAM,eAAe,SAAUrK,GAC7CA,EAAEgY,oBAGJyM,EAAgBpa,KAAM,gBAAgB,WACpC,IAAI2a,GAEHA,EAAUnnB,QAAQuX,SAASvN,MAAMmd,EAAShB,EAAmBY,EAAMK,qBAGtER,EAAgBpa,KAAM,iBAAiB,SAAUrK,GAC/C,IAAI6E,EAAO+f,EAAM3kB,QAAQilB,cAGgC,IAArD,CAAC,QAAS,YAAY/mB,QAAQ6B,EAAE7C,OAAO2Y,WACzCjR,EAAO+f,EAAM3kB,QAAQklB,qBAKU,IAA7BtgB,EAAK1G,QAAQ6B,EAAEolB,UACjBplB,EAAEgY,oBAIN3N,KAAKvN,QAAU,KACfuN,KAAK4a,gBAAkB,CAAC,EAAG,GAC3B5a,KAAKpK,QAAU,CACbolB,cAAc,EACdC,eAAe,EACfC,aAAa,EACbL,aAAc,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAC/CC,mBAAoB,CAAC,GAAI,GAAI,GAAI,GAAI,KAMnCT,IACF,EAAQ,IAERra,KAAKvN,QAAUO,SAASglB,kBAvD9B,IAAsByC,EAAaU,EAAYC,EAgI7C,OAhIoBX,EAmEPH,GAnEoBa,EAmEL,CAAC,CAC3B1pB,IAAK,KACLN,MAAO,SAAYsB,EAASmD,GAC1B,GAAKykB,EAAL,CACAra,KAAKvN,QAAUA,GAAWuN,KAAKvN,QAC/BuN,KAAKpK,QAtFX,SAAuB9C,GAAU,IAAK,IAAI5C,EAAI,EAAGA,EAAIuN,UAAUlL,OAAQrC,IAAK,CAAE,IAAIkkB,EAAyB,MAAhB3W,UAAUvN,GAAauN,UAAUvN,GAAK,GAAQA,EAAI,EAAKspB,EAAQ5oB,OAAOwjB,IAAS,GAAMld,SAAQ,SAAUzF,GAAO2oB,EAAgBtnB,EAAQrB,EAAK2iB,EAAO3iB,OAAsBb,OAAO6N,0BAA6B7N,OAAO0V,iBAAiBxT,EAAQlC,OAAO6N,0BAA0B2V,IAAmBoF,EAAQ5oB,OAAOwjB,IAASld,SAAQ,SAAUzF,GAAOb,OAAOC,eAAeiC,EAAQrB,EAAKb,OAAOgO,yBAAyBwV,EAAQ3iB,OAAe,OAAOqB,EAsFxfuoB,CAAc,GAAIrb,KAAKpK,QAAS,GAAIA,GACnD,IAAI0lB,EAAgBtb,KAAKpK,QACrBslB,EAAcI,EAAcJ,YAC5BD,EAAgBK,EAAcL,cACfK,EAAcN,eAI/BhoB,SAASE,iBAAiB,QAAS8M,KAAKub,YAAa,CACnDxM,SAAS,IAEX/b,SAASE,iBAAiB,YAAa8M,KAAKub,YAAa,CACvDxM,SAAS,KAMTkM,IACFjb,KAAK4a,gBAAkB,CAAC5a,KAAKvN,QAAQ+oB,YAAcxb,KAAKvN,QAAQgpB,QAASzb,KAAKvN,QAAQoc,WAAa7O,KAAKvN,QAAQipB,SAChH1oB,SAASE,iBAAiB,SAAU8M,KAAK2b,aAAc,CACrD5M,SAAS,KAMTmM,GACFloB,SAASE,iBAAiB,UAAW8M,KAAK4b,cAAe,CACvD7M,SAAS,OAQd,CACDtd,IAAK,MACLN,MAAO,WACAkpB,IACLrnB,SAASC,oBAAoB,QAAS+M,KAAKub,YAAa,CACtDxM,SAAS,IAEX/b,SAASC,oBAAoB,YAAa+M,KAAKub,YAAa,CAC1DxM,SAAS,IAEX/b,SAASC,oBAAoB,SAAU+M,KAAK2b,aAAc,CACxD5M,SAAS,IAEX/b,SAASC,oBAAoB,UAAW+M,KAAK4b,cAAe,CAC1D7M,SAAS,UA3H6DmL,EAAkBO,EAAY3oB,UAAWqpB,GAAiBC,GAAalB,EAAkBO,EAAaW,GAgI3Kd,EAxHT,I,8BCUA,SAASuB,IAAY,WACbpS,EAASzW,SAAS2F,cAAc,WAChCwU,EAAS1D,EAAO9Q,cAAc,uBAC9BK,EAAMyQ,EAAO9Q,cAAc,gBAC3BmjB,EAAiBrS,EAAO9Q,cAAc,sBAE5C,GAAK8Q,GAAW0D,GAAWnU,EAA3B,CAEAgH,KAAK1G,MAAQ,CACXyiB,QAAQ,GAEV/b,KAAKgc,IAAMhjB,EACX,IAAMijB,EAAY,IAAIvU,IAAY,QAE5BwU,EAA0B,WAC9BljB,EAAIxC,MAAMuV,OAAV,UAAsB5Y,cAAsBsW,EAAOpX,aAAnD,OAGF2N,KAAKmc,KAAO,WACN,EAAK7iB,MAAMyiB,SAEf,EAAKziB,MAAMyiB,QAAS,EAEpBzN,4BAAkBwN,GAElBrS,EAAO3U,UAAUC,IAAI,eACrBmnB,IAEA1oB,OAAON,iBAAiB,SAAUgpB,GAElC,EAAKF,IAAI7Q,cAAc8Q,KAGzBjc,KAAKoc,KAAO,WACL,EAAK9iB,MAAMyiB,SAEhB,EAAKziB,MAAMyiB,QAAS,EAEpB5M,2BAAiB2M,GACjB5M,oCAEAzF,EAAO3U,UAAUwC,OAAO,eACxB0B,EAAIxC,MAAMuV,OAAS,GAEnBvY,OAAOP,oBAAoB,SAAUipB,KAGvC/O,EAAOja,iBACL,SACA,WACM,EAAKoG,MAAMyiB,OACb,EAAKK,OAEL,EAAKD,UAGT,GAGF3oB,OAAON,iBAAiB,oBAAqB8M,KAAKoc,OAOpD,SAASC,IAAe,WAChB5S,EAASzW,SAAS2F,cAAc,WAChCmjB,EAAiBrS,EAAO9Q,cAAc,sBACtC2jB,EAAW7S,EAAOhV,iBAAiB,qBACnC8nB,EAAiB9S,EAAO9Q,cAAc,6BACtC6jB,EAAiBrf,MAAMrL,UAAUoL,MACpC7M,KAAKisB,GACLlN,QAAO,SAAAjY,GAAI,OAAIA,IAASolB,KACrBE,EAAeF,EAAe5jB,cAAc,qBAC5C+jB,EAAaH,EAAe5jB,cAAc,mBAC1CgkB,EAAoBD,EAAW/jB,cAAc,kBAE9C4jB,GAAmBE,GAAiBC,IAEzC1c,KAAK1G,MAAQ,CACXyiB,QAAQ,EACRa,uBAAuB,GAGzB5c,KAAKmc,KAAO,WACV,IAAI,EAAK7iB,MAAMyiB,OAAf,CAMA,GAJA,EAAKziB,MAAMyiB,QAAS,EAEpBQ,EAAeznB,UAAUC,IAAI,WAExBhB,cAOE,CACLua,4BAAkBqO,GAClBb,EAAetlB,MAAMkS,SAAW,SAEhC,IAAMmU,EAAezpB,KAAKuZ,MACxBxZ,cAAsBwpB,EAAkBG,wBAAwBC,KAGlEL,EAAWlmB,MAAMuV,OAAjB,UAA6B8Q,EAA7B,WAdKnpB,eACHunB,EAActK,KAGhB,EAAKiM,uBAAwB,EAC7BpqB,YAAakqB,EAAY,EAAKN,MAYhCI,EAAetlB,SAAQ,SAAAC,GACrBA,EAAKrC,UAAUC,IAAI,iCAIvBiL,KAAKoc,KAAO,WACL,EAAK9iB,MAAMyiB,SAEhB,EAAKziB,MAAMyiB,QAAS,EAEpB5M,2BAAiBwN,GAEjBH,EAAetlB,SAAQ,SAAAC,GACrBA,EAAKrC,UAAUwC,OAAO,+BAExBilB,EAAeznB,UAAUwC,OAAO,WAE5B,EAAKslB,uBACP3B,EAAcnK,MAGhBgL,EAAetlB,MAAMkS,SAAW,GAChCgU,EAAWlmB,MAAMuV,OAAS,KAG5B0Q,EAAavpB,iBACX,SACA,SAAAyC,GACEA,EAAEmZ,kBACE,EAAKxV,MAAMyiB,OACb,EAAKK,OAEL,EAAKD,UAGT,GAGF3oB,OAAON,iBAAiB,oBAAqB8M,KAAKoc,MAElDppB,SAASgqB,UAAY,SAAArnB,IAEf,QAASA,EACU,WAAVA,EAAElE,KAA8B,QAAVkE,EAAElE,IAEV,KAAdkE,EAAEolB,UAGb,EAAKqB,SAKX5oB,OAAON,iBAAiB,oBAAoB,WAC1C,IAAM+pB,EAAY,IAAIpB,EAChBqB,EAAe,IAAIb,GA9LN,WACnB,IAAM5S,EAASzW,SAAS2F,cAAc,WAEtC,GAAK8Q,EAAL,CAEA,IAAM0T,EAAgB,WACA1T,EAAOqT,wBAAwBC,IAEjC,EACXtT,EAAO3U,UAAUjC,SAAS,WAC7B4W,EAAO3U,UAAUC,IAAI,UAEd0U,EAAO3U,UAAUjC,SAAS,WACnC4W,EAAO3U,UAAUwC,OAAO,WAI5B6lB,IACA3pB,OAAON,iBAAiB,SAAUiqB,IA6KlCC,GAEAH,EAAUjB,IAAI9oB,iBAAiB,QAAQ,WACrCgqB,EAAad,c,gCC3MjB,MAsBeiB,IAfG,SAACC,GAAkC,IAAxBC,EAAwB,uDAAb,SACtC,GAAID,GAAgC,iBAAbA,EAAuB,CAC5C,IAAMhnB,EAAKtD,SAAS2F,cAAT,UAA0B2kB,IAErChnB,EAAGknB,WAAH,6CAC+BD,EAD/B,4P,6ECXG,SAASE,EAAQnnB,EAAIqb,GAC1B,OAAOrb,EAAGzB,aAAa8c,GADzB,mC,uDCAA,qEAWA/Z,yBAAe,CACbnF,QAAS,aACToF,YAAa,IACbnF,SAAU,WACI,IAAIgrB,IAAU,CACxBC,cAAe,wBAKrB/lB,yBAAe,CACbnF,QAAS,cACToF,YAAa,IACbnF,SAAU,WACR,IAAMkrB,EAAO5qB,SAASyB,iBAAiB,eACnCmpB,GACFA,EAAK1mB,SAAQ,SAAAD,GACXP,YAAS,CAAEC,SAAUM,EAAKL,eAAgB,W,gCC5BlD,qBAGApD,OAAON,iBAAiB,oBAAoB,WAC1C,IAAI2qB,IAAa,eAAgB,CAC/BpU,OAAQ,iBACRO,OAAQ,S,gCCNL,SAAS8T,EAAWxnB,GAEzB,YAA0B,IAAZA,EAAGa,KAFnB,mC,+BCAA,8CAEO,SAAS4mB,EAAaznB,EAAIoI,GAC/B,IAAK,IAAI0G,KAAQ1G,EAAK,CACpB,IAAIuI,EAAS,CAAC,aAAc,aAAanT,QAAQsR,IAAS,GAAI,IAC9D9O,EAAGrD,oBAAoBmS,EAAM1G,EAAI0G,GAAO6B,M,gCCL5C,kCACA,IAAI+W,GAAkB,EACtB,IACE,IAAIzd,EAAO3P,OAAOC,eAAe,GAAI,UAAW,CAC9CE,IAAK,WACHitB,GAAkB,KAGtBxqB,OAAON,iBAAiB,OAAQ,KAAMqN,GACtC,MAAO5K,IACF,IAAIsoB,IAAgBD,GAAkB,CAAEjP,SAAS,I,gCCVxD,sCAAIpT,EAAMnI,OAEC0qB,EAAMviB,EAAIwN,sBAChBxN,EAAIwiB,yBACJ,SAAS/lB,GAAKiR,aAAajR,K,gCCJzB,SAASgmB,IAMd,IALA,IAAI1f,EAAKjO,EAAMwhB,EACXnf,EAAS2K,UAAU,IAAM,GACzBvN,EAAI,EACJqC,EAASkL,UAAUlL,OAEhBrC,EAAIqC,EAAQrC,IACjB,GAA6B,QAAxBwO,EAAMjB,UAAUvN,IACnB,IAAKO,KAAQiO,EAGP5L,KAFJmf,EAAOvT,EAAIjO,UAISkK,IAATsX,IACTnf,EAAOrC,GAAQwhB,GAKvB,OAAOnf,EAnBT,mC,gCCAO,SAASurB,EAAmBC,GAEjC,IADA,IAAIngB,EAAM,GACDjO,EAAI,EAAGC,EAAImuB,EAAG/rB,OAAQrC,EAAIC,EAAGD,IACpCiO,EAAIa,KAAKsf,EAAGpuB,IAEd,OAAOiO,EALT,mC,gCCAO,SAASjM,EAAUoE,GACxB,MAA+C,SAAxC9C,OAAOsY,iBAAiBxV,GAAIG,QADrC,mC,gCCIO,SAAS8nB,EAAeC,EAAQC,GACrC,IAAIC,GAAU,EAQd,MAPI,UAAUxpB,KAAKspB,GACjBE,EAAU,SAAWD,EAAU,MACtB,KAAKvpB,KAAKspB,GACnBE,EAAU,IAAMD,EAAU,MACjBD,IACTE,EAAUD,EAAQlR,cAAgB,OAE7BmR,EAbT,mC,gBCAA,IAAIxS,EAGJA,EAAI,WACH,OAAOlM,KADJ,GAIJ,IAECkM,EAAIA,GAAK,IAAIyS,SAAS,cAAb,GACR,MAAOhpB,GAEc,iBAAXnC,SAAqB0Y,EAAI1Y,QAOrCvD,EAAOD,QAAUkc,G,sDCnBjB,yUAqCWrT,EAAM,SAASjD,GACxBA,EAAU,YAAO,CACfiB,UAAW,UACXxF,KAAM,WACNutB,KAAM,aACN9lB,MAAO,EACP+lB,OAAQ,EACRC,YAAa,EACbC,YAAY,EACZ7lB,WAAW,EACX8lB,aAAa,EACbC,QAAS,EACTC,QAAQ,EACRjmB,UAAU,EACVkmB,iBAAkB,MAClBC,aAAc,CAAC,OAAQ,QACvBC,mBAAmB,EACnBC,YAAY,EACZ7mB,YAAY,EACZO,KAAK,EACLumB,YAAa,MACbC,cAAc,EACdC,iBAAiB,EACjBC,WAAW,EACX/V,MAAO,IACPgW,UAAU,EACVC,iBAAkB,MAClBC,gBAAiB,IACjBC,kBAAmB,UACnBC,aAAc,CAAC,QAAS,QACxBC,oBAAoB,EACpBC,gBAAgB,EAChBC,sBAAsB,EACtBC,2BAA2B,EAC3BC,UAAW,aACXC,WAAY,cACZC,cAAe,aACfC,cAAc,EACdxnB,MAAM,EACNynB,QAAQ,EACRC,YAAY,EACZC,YAAY,EACZC,UAAU,EACVC,iBAAkB,gBAClBC,OAAO,EACP1nB,WAAW,EACX2nB,WAAY,GACZC,QAAQ,EACRC,0BAA0B,EAC1BC,sBAAsB,EACtBC,WAAW,EACX7nB,QAAQ,EACRD,iBAAiB,GAChBxD,GAAW,IAEd,IAAI0S,EAAMtV,SACN2I,EAAMnI,OACN2tB,EAAO,CACLC,MAAO,GACPC,MAAO,GACPC,KAAM,GACNC,MAAO,IAETC,EAAa,GACbC,EAAqB7rB,EAAQwD,gBAEjC,GAAIqoB,EAAoB,CAEtB,IAAIC,EAAc9tB,UAAUC,UACxB8tB,EAAM,IAAI5kB,KAEd,KACEykB,EAAa7lB,EAAIimB,eAEfJ,EAAW/rB,QAAQksB,EAAKA,GACxBF,EAAqBD,EAAWK,QAAQF,IAAQA,EAChDH,EAAW9rB,WAAWisB,IAEtBF,GAAqB,EAElBA,IAAsBD,EAAa,IACxC,MAAM7rB,GACN8rB,GAAqB,EAGnBA,IAEED,EAAmB,QAAKA,EAAmB,SAAME,GACnD,CAAC,KAAM,MAAO,MAAO,MAAO,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,MAAO,OAAOxqB,SAAQ,SAASC,GAAQqqB,EAAW9rB,WAAWyB,MAGlIyqB,aAAqB,OAAIF,GAI7B,IAAII,EAAON,EAAe,GAAI,YAAkBA,EAAe,IAAK,YAAgBA,EAAY,KAAM,cAAQC,GAC1GM,EAAmBP,EAAgB,IAAI,YAAkBA,EAAgB,KAAK,YAAgBA,EAAY,MAAO,cAAoBC,GACrIO,EAAQR,EAAgB,IAAI,YAAkBA,EAAgB,KAAK,YAAgBA,EAAY,MAAO,cAAqBC,GAC3HQ,EAAYT,EAAgB,IAAI,YAAkBA,EAAgB,KAAK,YAAgBA,EAAY,MAAO,YAAc,aAAcC,GACtIS,EAAkBV,EAAgB,IAAI,YAAkBA,EAAgB,KAAK,YAAgBA,EAAY,MAAO,YAAgBS,GAAYR,GAC5IU,EAAqBX,EAAiB,KAAI,YAAkBA,EAAiB,MAAK,YAAgBA,EAAY,OAAQ,YAAc,sBAAuBC,GAC3JW,EAAkBZ,EAAiB,KAAI,YAAkBA,EAAiB,MAAK,YAAgBA,EAAY,OAAQ,YAAc,mBAAoBC,GACrJY,EAAoBb,EAAiB,KAAI,YAAkBA,EAAiB,MAAK,YAAgBA,EAAY,OAAQ,YAAc,qBAAsBC,GACzJa,EAAiBd,EAAiB,KAAI,YAAkBA,EAAiB,MAAK,YAAgBA,EAAY,OAAQ,YAAc,kBAAmBC,GACnJc,EAAgBf,EAAgB,IAAI,YAAkBA,EAAgB,KAAK,YAAgBA,EAAY,MAAO,YAAeW,EAAoB,cAAeV,GAChKe,GAAehB,EAAgB,IAAI,YAAkBA,EAAgB,KAAK,YAAgBA,EAAY,MAAO,YAAea,EAAmB,aAAcZ,GAG7JgB,GAAqB9mB,EAAIsB,SAAuC,mBAArBtB,EAAIsB,QAAQS,KACvDglB,GAAU,CAAC,YAAa,oBAAqB,aAAc,aAAc,eAAgB,kBACzFC,GAAkB,GAkBtB,GAhBAD,GAAQxrB,SAAQ,SAASC,GACvB,GAA6B,iBAAlBvB,EAAQuB,GAAoB,CACrC,IAAImF,EAAM1G,EAAQuB,GACdb,EAAKgS,EAAI3P,cAAc2D,GAG3B,GAFAqmB,GAAgBxrB,GAAQmF,GAEpBhG,IAAMA,EAAGssB,SAIX,YADIH,IAAsBxlB,EAAQS,KAAK,aAAe9H,EAAQuB,KAF9DvB,EAAQuB,GAAQb,QASlBV,EAAQiB,UAAU+C,SAASrH,OAAS,GAAxC,CAMA,IAAImuB,GAAa9qB,EAAQ8qB,WACrBK,GAASnrB,EAAQmrB,OACjB8B,GAA4B,aAAjBjtB,EAAQvE,KAEvB,GAAIqvB,GAAY,CAEV,KAAKA,KACP9qB,EAAU,YAAOA,EAAS8qB,GAAW,WAC9BA,GAAW,IAGpB,IAAIoC,GAAgB,GACpB,IAAK,IAAIrxB,MAAOivB,GAAY,CAC1B,IAAIze,GAAMye,GAAWjvB,IAOrBwQ,GAAqB,iBAARA,GAAmB,CAACnJ,MAAOmJ,IAAOA,GAC/C6gB,GAAcrxB,IAAOwQ,GAEvBye,GAAaoC,GACbA,GAAgB,KAoBlB,GAJKD,IAZL,SAASE,EAAerkB,GACtB,IAAK,IAAIjN,KAAOiN,EACTmkB,KACS,YAARpxB,IAAqBiN,EAAIjN,GAAO,QACxB,gBAARA,IAAyBiN,EAAIjN,IAAO,GAC5B,eAARA,IAAwBiN,EAAIjN,IAAO,IAI7B,eAARA,GAAwBsxB,EAAcrkB,EAAIjN,IAGjCsxB,CAAcntB,IAI1BitB,GAAU,CACbjtB,EAAQgpB,KAAO,aACfhpB,EAAQqpB,QAAU,OAClBrpB,EAAQkpB,aAAc,EAEtB,IAAIsB,GAAYxqB,EAAQwqB,UACpBC,GAAazqB,EAAQyqB,WACrBE,GAAe3qB,EAAQ2qB,aACvBD,GAAgB1qB,EAAQ0qB,cAG9B,IAGI0C,GAMAC,GATAC,GAA8B,eAAjBttB,EAAQgpB,KACrBuE,GAAe7a,EAAIlM,cAAc,OACjCgnB,GAAe9a,EAAIlM,cAAc,OAEjCvF,GAAYjB,EAAQiB,UACpBwsB,GAAkBxsB,GAAUyhB,WAC5BgL,GAAgBzsB,GAAU0sB,UAC1BC,GAAa3sB,GAAU+C,SACvBH,GAAa+pB,GAAWjxB,OAExBkxB,GAAcC,KACdC,IAAO,EACPjD,IAAckD,KACdf,KAAYhsB,GAAU0F,WAAa,cAGvC,IA2BIsnB,GAyFAC,GACAC,GAgJEC,GACAC,GAtQF/qB,GAAYtD,EAAQsD,UACpB6lB,GAAamF,GAAU,cACvBpF,GAAcoF,GAAU,eACxBrF,GAASqF,GAAU,UACnBC,GAAWC,KACXlF,GAASgF,GAAU,UACnBprB,GAASI,GAA6C,EAAjC9F,KAAKuZ,MAAMuX,GAAU,UAC1CjF,GAAUiF,GAAU,WACpBlF,GAAcppB,EAAQopB,aAAeppB,EAAQyuB,wBAC7C3E,GAAYwE,GAAU,aACtBva,GAAQua,GAAU,SAClB1D,GAAS5qB,EAAQ4qB,OACjBznB,IAAOynB,IAAiB5qB,EAAQmD,KAChC0nB,GAAayD,GAAU,cACvBjrB,GAAWirB,GAAU,YACrB9E,GAAe8E,GAAU,gBACzBlrB,GAAMkrB,GAAU,OAChBrD,GAAQqD,GAAU,SAClB/qB,GAAY+qB,GAAU,aACtBvE,GAAWuE,GAAU,YACrBrE,GAAkBqE,GAAU,mBAC5BnE,GAAemE,GAAU,gBACzBlE,GAAqBkE,GAAU,sBAC/B/D,GAA4B+D,GAAU,6BACtCznB,GAAQ,cACRkkB,GAAW/qB,EAAQ+qB,SAGnB2D,IAFmB1uB,EAAQgrB,iBAEX,IAChB2D,GAAaxrB,IAwOXirB,GAzBN,WAEE,GAAI9qB,IAAc6lB,KAAeC,GAC/B,OAAOvlB,GAAa,EAGpB,IAAI6C,EAAMyiB,GAAa,aAAe,QAClC5gB,EAAM,GAIV,IAFI4gB,IAAcnpB,EAAQ0G,GAAO7C,KAAc0E,EAAIa,KAAKpJ,EAAQ0G,IAE5DokB,GACF,IAAK,IAAI8D,KAAM9D,GAAY,CACzB,IAAI+D,EAAM/D,GAAW8D,GAAIloB,GACrBmoB,IAAQ1F,IAAc0F,EAAMhrB,KAAe0E,EAAIa,KAAKylB,GAM5D,OAFKtmB,EAAI5L,QAAU4L,EAAIa,KAAK,GAErB5L,KAAKsxB,KAAK3F,GAAaC,GAAc5rB,KAAKgZ,IAAI5O,MAAM,KAAMW,GAAO/K,KAAKC,IAAImK,MAAM,KAAMW,IAKhFwmB,GACXV,GAASpB,GAAWzvB,KAAKsxB,MAAiB,EAAXV,GAAevqB,IAAY,GAAiB,EAAXuqB,GAAevqB,GACnFwqB,GAAS7wB,KAAKC,IAAI2wB,GAAUC,IAErBW,GAAU,eAAiBX,GAAS,EAAIA,IA5OA,EAC7CY,GAAiBhC,GAAqCppB,GAA0B,EAAb8qB,GAAvC9qB,GAAa8qB,GACzCO,MAAoB/F,KAAc7lB,IAAeH,IACjDgsB,GAAgBhG,GAAaiG,KAAqB,KAClDC,IAA+BpC,KAAa9pB,GAE5CmsB,GAAgBhC,GAAa,OAAS,MACtCiC,GAAkB,GAClBC,GAAmB,GAEnBC,GACMtG,GACK,WAAa,OAAOG,KAAWnmB,GAAOU,GAAa,EAAIrG,KAAKsxB,MAAOK,IAAiBhG,GAAaF,MAC/F3lB,GACF,WACL,IAAK,IAAIhJ,EAAI20B,GAAe30B,KAC1B,GAAI2zB,GAAe3zB,KAAQ60B,GAAiB,OAAO70B,GAIhD,WACL,OAAIgvB,IAAU2D,KAAa9pB,GAClBU,GAAa,EAEbV,IAAQ8pB,GAAWzvB,KAAKC,IAAI,EAAGwxB,GAAgBzxB,KAAKsxB,KAAK5rB,KAAU+rB,GAAgB,GAKlGptB,GAAQ6tB,GAAcpB,GAAU,eAChCqB,GAAc9tB,GAEd+tB,IADeC,KACJ,GACXC,GAAYxsB,GAA4B,KAAhBmsB,KAGxBrE,GAA2BprB,EAAQorB,yBACnCF,GAAalrB,EAAQkrB,WACrB6E,IAAwB7E,IAAa,IACrC8E,IAAU,EACVvsB,GAASzD,EAAQyD,OACjBwsB,GAAS,IAAI,IAEbC,GAAsB,mBAAqBlwB,EAAQvE,KACnD00B,GAAUlvB,GAAUuB,IAAM,cAC1B4tB,GAAU9B,GAAU,WACpB+B,IAAW,EACX/E,GAAYtrB,EAAQsrB,UACpBgF,MAAShF,IAAchoB,KAAYitB,KACnCC,IAAS,EACTC,GAAiB,CACf,MAASC,GACT,QAmkEN,SAA4B3wB,GAC1BA,EAAI4wB,GAAS5wB,GACb,IAAI6wB,EAAW,CAACrF,EAAKG,KAAMH,EAAKI,OAAOztB,QAAQ6B,EAAEolB,SAE7CyL,GAAY,IACG,IAAbA,EACGlH,GAAW2G,UAAYK,GAAgB3wB,GAAI,GACtC8C,GAAWwtB,UACrBK,GAAgB3wB,EAAG,MAzkErB8wB,GAAY,CACV,MA+8DN,SAAqB9wB,GACnB,GAAIiwB,GAAS,CACX,GAAI5E,GAA4B,OAAiB0F,KAInD,IAAI5zB,EAAS6zB,GADbhxB,EAAI4wB,GAAS5wB,IAIb,KAAO7C,IAAW0sB,KAAiB,YAAQ1sB,EAAQ,aAAeA,EAASA,EAAOwlB,WAClF,GAAI,YAAQxlB,EAAQ,YAAa,CAC/B,IAAI8zB,EAAWC,GAAatnB,OAAO,YAAQzM,EAAQ,aAC/Cg0B,EAAkB/H,IAAc7lB,GAAY0tB,EAAWntB,GAAastB,GAAQH,EAAW9tB,GAE3FY,GADkB+lB,GAAkBmH,EAAWxzB,KAAKgZ,IAAIhZ,KAAKsxB,KAAKoC,GAAkBrtB,GAAa,GAC/E9D,GAEdqxB,KAAoBJ,IAClBK,IAAaC,KACjBL,IAAc,KAh+Dd,QAklEN,SAAuBlxB,GACrBA,EAAI4wB,GAAS5wB,GACb,IAAIwxB,EAAa7e,EAAIsC,cACrB,IAAK,YAAQuc,EAAY,YAAe,OAGxC,IAAIX,EAAW,CAACrF,EAAKG,KAAMH,EAAKI,MAAOJ,EAAKC,MAAOD,EAAKE,OAAOvtB,QAAQ6B,EAAEolB,SACrE6L,EAAWrnB,OAAO,YAAQ4nB,EAAY,aAEtCX,GAAY,IACG,IAAbA,EACEI,EAAW,GAAKQ,GAAS9K,GAASsK,EAAW,IAC3B,IAAbJ,EACLI,EAAWG,GAAQ,GAAKK,GAAS9K,GAASsK,EAAW,KAEzDC,GAAaD,EACbltB,GAAKktB,EAAUjxB,OAhmEjB0xB,GAAc,CACZ,UAmiEN,WACMJ,KACFK,KACAC,IAAsB,IAriEpB,SAyiEN,WACMA,KACFC,KACAD,IAAsB,KA1iEtBE,GAAkB,CAAC,iBAohEvB,WACMnf,EAAIof,OACFT,KACFK,KACAK,IAA2B,GAEpBA,KACTH,KACAG,IAA2B,KA3hE3BC,GAAsB,CAAC,QA8iE3B,SAA4BjyB,GAC1BA,EAAI4wB,GAAS5wB,GACb,IAAI6wB,EAAW,CAACrF,EAAKG,KAAMH,EAAKI,OAAOztB,QAAQ6B,EAAEolB,SAE7CyL,GAAY,GACdF,GAAgB3wB,EAAgB,IAAb6wB,GAAkB,EAAI,KAljEzCqB,GAAc,CACZ,WAAcC,GACd,UAAaC,GACb,SAAYC,GACZ,YAAeA,IACdC,GAAa,CACd,UAAaH,GACb,UAAaC,GACb,QAAWC,GACX,WAAcA,IAEhBE,GAActD,GAAU,YACxBuD,GAASvD,GAAU,OACnBnF,KAAkBvmB,IAAmBtD,EAAQ6pB,gBAC7C2I,GAAcxD,GAAU,YACxByD,GAAWzD,GAAU,SACrB0D,GAAe1D,GAAU,aACzB2D,GAAmB,mBACnBC,GAAmB,eACnBC,GAAY,CACV,KA84CN,SAAsB9yB,GACpB+yB,GAAU/B,GAAUhxB,KA94ChB,MAi5CN,SAAsBA,GASFgzB,EARRhC,GAAUhxB,GASpB,YAASgzB,EAAK,UACdC,GAAaD,GAFf,IAAoBA,IAt5ChBE,GAAiD,UAAjCjzB,EAAQqrB,qBAG5B,GAAIiH,GACF,IAMIY,GACAC,GAPA1J,GAAoBzpB,EAAQypB,kBAC5B2J,GAAwBpzB,EAAQypB,kBAAoBzpB,EAAQypB,kBAAkBkE,UAAY,GAC1FjE,GAAa1pB,EAAQ0pB,WACrB7mB,GAAa7C,EAAQ6C,WACrBwwB,GAAiBrzB,EAAQ0pB,WAAa1pB,EAAQ0pB,WAAWiE,UAAY,GACrE2F,GAAiBtzB,EAAQ6C,WAAa7C,EAAQ6C,WAAW8qB,UAAY,GAM3E,GAAI4E,GACF,IAEI7L,GAFAkD,GAAe5pB,EAAQ4pB,aACvB2J,GAAmBvzB,EAAQ4pB,aAAe5pB,EAAQ4pB,aAAa+D,UAAY,GAE3EwD,GAAQ7tB,GAAYO,GAAa2vB,KACjCC,GAAc,EACdxC,IAAc,EACdG,GAAkBsC,KAClBC,GAAwBvC,GACxBwC,GAAiB,iBACjBC,GAAS,iBACTC,GAAgB,mBAItB,GAAItB,GACF,IAIIuB,GACA1C,GACAM,GACAqC,GACAjC,GARA7H,GAAkD,YAA9BlqB,EAAQkqB,kBAAkC,GAAK,EACnEG,GAAiBrqB,EAAQqqB,eACzB4J,GAAqBj0B,EAAQqqB,eAAiBrqB,EAAQqqB,eAAesD,UAAY,GACjFuG,GAAsB,CAAC,qCAAwC,qBAQrE,GAAIzB,IAAYC,GACd,IAEIyB,GAIAC,GANAC,GAAe,GACfC,GAAe,GAIfC,IAAW,EAEXC,GAAUlH,GACR,SAAS9Z,EAAGgC,GAAK,OAAOhC,EAAE9J,EAAI8L,EAAE9L,GAChC,SAAS8J,EAAGgC,GAAK,OAAOhC,EAAEiD,EAAIjB,EAAEiB,GAInCnT,IAAamxB,GAAyBrE,IAAWE,IAElDjE,IACFiD,GAAgBjD,EAChBkD,GAAkB,YAEdjD,GACFiD,IAAmBjC,GAAa,MAAQ,WACxCkC,GAAmBlC,GAAa,cAAgB,WAEhDiC,IAAmBjC,GAAa,KAAO,KACvCkC,GAAmB,MAKnBvC,KAAYhsB,GAAU0F,UAAY1F,GAAU0F,UAAU8C,QAAQ,YAAa,KAiO/E,WAGkBulB,GAAU,UAE1BzB,GAAa5mB,UAJI,YAKjB6mB,GAAa7mB,UAJI,YAKjB4mB,GAAa/qB,GAAK2tB,GAAU,MAC5B3C,GAAahrB,GAAK2tB,GAAU,MAGP,KAAjBlvB,GAAUuB,KAAavB,GAAUuB,GAAK2tB,IAC1CD,IAAuB/D,GAAoB7oB,GAAY,gBAAkB,mBACzE4sB,IAAuBhE,EAAO,YAAc,eACxC5oB,KAAa4sB,IAAuB,kBACxCA,IAAuB,QAAUlwB,EAAQgpB,KACzC/nB,GAAU0F,WAAaupB,GAGnBjD,KACFG,GAAgB1a,EAAIlM,cAAc,QACpBhE,GAAK2tB,GAAU,MAC7B/C,GAAczmB,UAAY,UAE1B4mB,GAAava,YAAYoa,IACzBA,GAAcpa,YAAYwa,KAE1BD,GAAava,YAAYwa,IAG3B,GAAI3C,GAAY,EACLuC,IAAgCI,IACtC7mB,WAAa,UAqBlB,GAlBA8mB,GAAgBiH,aAAanH,GAActsB,IAC3CusB,GAAaxa,YAAY/R,IAIzB,YAAQ2sB,IAAY,SAASrsB,EAAMjH,GACjC,YAASiH,EAAM,YACVA,EAAKiB,KAAMjB,EAAKiB,GAAK2tB,GAAU,QAAU71B,IACzC2yB,IAAYvC,IAAiB,YAASnpB,EAAMmpB,IACjD,YAASnpB,EAAM,CACb,cAAe,OACf,SAAY,UAOZotB,GAAY,CAId,IAHA,IAAIgG,EAAiBjiB,EAAIkiB,yBACrBC,EAAgBniB,EAAIkiB,yBAEfjjB,EAAIgd,GAAYhd,KAAM,CAC7B,IAAImjB,EAAMnjB,EAAE9N,GACRkxB,EAAanH,GAAWkH,GAAKE,WAAU,GAI3C,GAHA,YAAYD,EAAY,MACxBF,EAAcH,aAAaK,EAAYF,EAAcI,YAEjDhI,GAAU,CACZ,IAAIiI,EAAYtH,GAAW/pB,GAAa,EAAIixB,GAAKE,WAAU,GAC3D,YAAYE,EAAW,MACvBP,EAAe3hB,YAAYkiB,IAI/Bj0B,GAAUyzB,aAAaC,EAAgB1zB,GAAUg0B,YACjDh0B,GAAU+R,YAAY6hB,GACtBjH,GAAa3sB,GAAU+C,UAxS3BmxB,GAwXA,WAGE,IAAKlI,GACH,IAAK,IAAI3yB,EAAIuH,GAAOtH,EAAIsH,GAAQrE,KAAKgZ,IAAI3S,GAAYX,IAAQ5I,EAAIC,EAAGD,IAAK,CACvE,IAAIiH,EAAOqsB,GAAWtzB,GACtBiH,EAAKX,MAAMw0B,KAAqB,KAAb96B,EAAIuH,IAAeqB,GAAQ,IAC9C,YAAS3B,EAAMipB,IACf,YAAYjpB,EAAMmpB,IAkBlB4C,KACEnB,GAAoB7oB,IACtB,YAAWuD,GAAO,IAAMspB,GAAU,eAAgB,aAAepqB,EAAImQ,iBAAiB0X,GAAW,IAAIyH,SAAW,IAAK,YAAkBxuB,KACvI,YAAWA,GAAO,IAAMspB,GAAS,eAAgB,YAAkBtpB,MAC1DomB,IACT,YAAQW,IAAY,SAAU0H,EAAOh7B,GACnCg7B,EAAM10B,MAAM20B,WA3QpB,SAA6Bj7B,GAC3B,OAAO4xB,EACLA,EAAO,IAAU,IAAJ5xB,EAAU,OAAS20B,GAAgB,IAC5C,IAAJ30B,EAAU20B,GAAgB,IAwQGuG,CAAmBl7B,OAOlD,GAAI8xB,EAAO,CAET,GAAIG,EAAoB,CACtB,IAAI7lB,EAAM0mB,IAAiBptB,EAAQ6qB,WAAa4K,GAA2Bz1B,EAAQ+T,OAAS,GAC5F,YAAWlN,GAAO,IAAMspB,GAAU,MAAOzpB,EAAK,YAAkBG,KAIlEH,EAAMgvB,GAAsB11B,EAAQkpB,YAAalpB,EAAQipB,OAAQjpB,EAAQmpB,WAAYnpB,EAAQ+T,MAAO/T,EAAQ6qB,YAC5G,YAAWhkB,GAAO,IAAMspB,GAAU,MAAOzpB,EAAK,YAAkBG,KAG5DomB,KACFvmB,EAAM4mB,KAAehqB,GAAY,SAAWqyB,GAAkB31B,EAAQmpB,WAAYnpB,EAAQipB,OAAQjpB,EAAQkD,OAAS,IAAM,GACrHqpB,IAAsB7lB,GAAO+uB,GAA2B1hB,KAC5D,YAAWlN,GAAO,IAAMspB,GAASzpB,EAAK,YAAkBG,MAI1DH,EAAM4mB,KAAehqB,GAAYsyB,GAAmB51B,EAAQmpB,WAAYnpB,EAAQipB,OAAQjpB,EAAQkD,OAAS,GACrGlD,EAAQipB,SAAUviB,GAAOmvB,GAAoB71B,EAAQipB,SAEpDgE,KACCV,IAAsB7lB,GAAO+uB,GAA2B1hB,KACxD0Y,IAAqB/lB,GAAOovB,GAA0B/hB,MAExDrN,GAAO,YAAWG,GAAO,IAAMspB,GAAU,eAAgBzpB,EAAK,YAAkBG,SAM/E,CAELkvB,KAGAvI,GAAa5sB,MAAMo1B,QAAUN,GAAsBxM,GAAaD,GAAQE,GAAY0B,IAGhFoC,IAAYK,KAAehqB,KAC7BrC,GAAUL,MAAMq1B,MAAQN,GAAkBxM,GAAYF,GAAQ/lB,KAI5DwD,EAAM4mB,KAAehqB,GAAYsyB,GAAmBzM,GAAYF,GAAQ/lB,IAAS,GACjF+lB,KAAUviB,GAAOmvB,GAAoB5M,KAGrCviB,GAAO,YAAWG,GAAO,IAAMspB,GAAU,eAAgBzpB,EAAK,YAAkBG,KAItF,GAAIikB,IAAcsB,EAChB,IAAK,IAAIwC,KAAM9D,GAAY,CAEzB8D,EAAK3Y,SAAS2Y,GAEd,IAAIjkB,EAAOmgB,GAAW8D,GAElBsH,GADAxvB,EAAM,GACa,IACnByvB,EAAkB,GAClBC,EAAe,GACfC,EAAW,GACXC,EAAWhzB,GAAqC,KAAzBgrB,GAAU,QAASM,GAC1C2H,EAAejI,GAAU,aAAcM,GACvC4H,EAAUlI,GAAU,QAASM,GAC7B6H,EAAgBnI,GAAU,cAAeM,GACzC8H,EAAepI,GAAU,aAAcM,GACvC+H,EAAWrI,GAAU,SAAUM,GAG/BrC,GAAsBa,IAAiBkB,GAAU,aAAcM,IAAO,UAAWjkB,IACnFurB,EAAmB,IAAM/F,GAAU,OAASsF,GAA2Be,GAAW,MAIhF,gBAAiB7rB,GAAQ,WAAYA,KACvCwrB,EAAkB,IAAMhG,GAAU,OAASuF,GAAsBe,EAAeE,EAAUJ,EAAcC,EAASE,GAAgB,KAI/HzJ,IAAYK,KAAehqB,KAAc,eAAgBqH,GAAQ,UAAWA,GAASwe,IAAc,WAAYxe,KACjHyrB,EAAe,SAAWT,GAAkBY,EAAcI,EAAUL,GAAW,KAE7E/J,GAAsB,UAAW5hB,IACnCyrB,GAAgBX,GAA2Be,IAEzCJ,IACFA,EAAe,IAAMjG,GAAU,IAAMiG,EAAe,MAIlD,eAAgBzrB,GAASwe,IAAc,WAAYxe,IAAUsiB,IAAY,UAAWtiB,KACtF0rB,GAAYT,GAAmBW,EAAcI,EAAUL,IAErD,WAAY3rB,IACd0rB,GAAYR,GAAoBc,KAG7B1J,IAAY,UAAWtiB,IACtB4hB,IAAsB8J,GAAYZ,GAA2Be,IAC7D/J,IAAqB4J,GAAYP,GAA0BU,KAE7DH,IAAYA,EAAW,IAAMlG,GAAU,gBAAkBkG,EAAW,MAGxE3vB,EAAMwvB,EAAmBC,EAAkBC,EAAeC,IAGxDxvB,GAAM8B,WAAW,sBAAwBimB,EAAK,GAAK,QAAUloB,EAAM,IAAKG,GAAMC,SAASnK,SA5gB/Fi6B,GACAC,KAwiCA,IAAIC,GACK3zB,GACL8pB,GAEE,WACE,IAAI8J,EAAWnH,GACXoH,EAAYlH,GAEhBiH,GAAY1N,GACZ2N,GAAa3N,GAITH,IACF6N,GAAY,EACZC,GAAa,GACJ7N,KACJoF,GAAWtF,KAASE,GAAaF,MAAW+N,GAAa,GAG5DrI,KACE9sB,GAAQm1B,EACVn1B,IAASgC,GACAhC,GAAQk1B,IACjBl1B,IAASgC,MAKf,WACE,GAAIhC,GAAQiuB,GACV,KAAOjuB,IAAS+tB,GAAW/rB,IAAchC,IAASgC,QAC7C,GAAIhC,GAAQ+tB,GACjB,KAAO/tB,IAASiuB,GAAWjsB,IAAchC,IAASgC,IAIxD,WACEhC,GAAQrE,KAAKC,IAAImyB,GAAUpyB,KAAKgZ,IAAIsZ,GAAUjuB,MAsjBhDo1B,GACKhK,GACL,WACEiK,GAAcj2B,GAAW,IACrBsrB,IAAuBxY,IAGzBojB,KAGKpjB,IAAU,YAAU9S,KAAc6vB,MAIvC,YAAY7vB,GAAWquB,GAAeC,GAAiBC,GAAkB4H,KAA8BrjB,GAAO+c,IAG3GxD,IAAc+J,MAErB,WACE3I,GAAgB,GAEhB,IAAI4I,EAAM,GACVA,EAAI3K,GAAiB2K,EAAI1K,IAAgBkE,GACzC,YAAalD,GAAW+B,IAAc2H,GACtC,YAAU1J,GAAW/rB,IAAQy1B,GAE7BC,GAAa5H,GAAanF,GAAWC,IAAY,GACjD8M,GAAa11B,GAAO6oB,GAAeF,IAI9BmC,GAAkBC,IAAiB7Y,IAAU,YAAU9S,KAAc6vB,MA4jBhF,MAAO,CACLjW,QAAS,QACTlX,QAAS6zB,GACTvH,OAAQA,GACRnsB,KAAMA,GACN2zB,KA9UF,WACM1N,KAAasH,KACfqG,KACA1D,IAAqB,IA4UvB2D,MAzUF,WACMtG,KACFC,KACA0C,IAAqB,IAuUvBjG,KAAMA,GACN6J,mBAAoBC,GACpBC,QAASjB,GACT3e,QA7iDF,WAoBE,GAlBArR,GAAMwpB,UAAW,EACbxpB,GAAMkxB,WAAalxB,GAAMkxB,UAAUr2B,SAGvC,YAAaqE,EAAK,CAAC,OAAUiyB,KAGzBlO,IAAa,YAAapX,EAAKsf,IAC/BvI,IAAqB,YAAaA,GAAmBgH,IACrD7G,IAAgB,YAAaA,GAAciH,IAG/C,YAAa5vB,GAAWwwB,IACxB,YAAaxwB,GAAW4wB,IACpBxH,IAAkB,YAAaA,GAAgB,CAAC,MAAS4N,KACzDlO,IAAYmO,cAAcnE,IAG1B9G,IAAYN,EAAe,CAC7B,IAAI2K,EAAM,GACVA,EAAI3K,GAAiBmE,GACrB,YAAa7vB,GAAWq2B,GAEtBrM,IAAS,YAAahqB,GAAWgxB,IACjC1uB,IAAa,YAAatC,GAAWoxB,IAGzC,IAAI8F,EAAW,CAACzK,GAAe0F,GAAuBC,GAAgBC,GAAgBC,GAAkBU,IAmBxG,IAAK,IAAIzgB,KAjBTsZ,GAAQxrB,SAAQ,SAASC,EAAMjH,GAC7B,IAAIoG,EAAc,cAATa,EAAuBgsB,GAAevtB,EAAQuB,GAEvD,GAAkB,iBAAPb,EAAiB,CAC1B,IAAI03B,IAAS13B,EAAG23B,wBAAyB33B,EAAG23B,uBACxCC,EAAW53B,EAAGgiB,WAClBhiB,EAAGitB,UAAYwK,EAAS79B,GACxB0F,EAAQuB,GAAQ62B,EAASA,EAAOG,mBAAqBD,EAASE,sBAMlE1L,GAAUtC,GAAYC,GAAaE,GAAeD,GAAgB4C,GAAaC,GAAeC,GAAevsB,GAAYwsB,GAAkBC,GAAgBE,GAAa/pB,GAAawpB,GAAiBQ,GAAcvqB,GAAY6lB,GAAaD,GAAcD,GAASsF,GAAWrrB,GAAQmmB,GAAUD,GAAcU,GAAY/V,GAAQ6W,GAASznB,GAAO0nB,GAAahkB,GAAQkkB,GAAWkD,GAAiBS,GAAgBC,GAAaM,GAAgBC,GAAmBC,GAAgBE,GAA6BC,GAAgBC,GAAkBC,GAAmBC,GAAc5tB,GAAQ8tB,GAAcC,GAAWE,GAAyB5E,GAAa6E,GAAwBC,GAAUvsB,GAASwsB,GAASC,GAAsBC,GAAUC,GAAUC,GAAW/E,GAAYgF,GAASE,GAASC,GAAiBI,GAAYY,GAAcI,GAAkBG,GAAsBC,GAAcI,GAAaC,GAAcC,GAAS1I,GAAkB2I,GAAcC,GAAWC,GAAeC,GAAmBC,GAAmBC,GAAY3E,GAAe7qB,GAAWmmB,GAAeC,GAAoB2J,GAAwB1J,GAAa7mB,GAAaqwB,GAAeC,GAAe/vB,GAAMwmB,GAAe2J,GAAmB7M,GAAWyK,GAAQsC,GAAcxC,GAAaG,GAAkBuC,GAAwBC,GAAiBC,GAASC,GAAgB/J,GAAWE,GAAkBC,GAAoBC,GAAeC,GAAqBC,GAAiB4J,GAAqB1J,GAA4B2J,GAAsBH,GAAgB1C,GAAYM,GAAsBqC,GAAqBjC,GAA2BsC,GAAeC,GAAeH,GAA8BI,GAAWH,GAAWI,GAAUvJ,GAAQ1nB,GAAY,KAI3pD6G,KACF,YAANoJ,IAAmBpJ,KAAKoJ,GAAK,MAEnCua,IAAO,GA2/CPhqB,QAAS,WACP,OAAOd,EAAI,YAAOjD,EAAS+sB,OAzuE/B,SAAS0H,GAA0BgE,GAC7BA,IACFp1B,GAAWD,GAAM6nB,GAAQ1nB,GAAYumB,GAAYC,GAAWK,GAAqBG,IAA4B,GAIjH,SAASsF,KAEP,IADA,IAAIhB,EAAM5B,GAAWprB,GAAQ8sB,GAAa9sB,GACnCgtB,EAAM,GAAKA,GAAOhrB,GACzB,OAAOgrB,EAAIhrB,GAAa,EAG1B,SAAS6rB,GAAegJ,GAEtB,OADAA,EAAMA,EAAMl7B,KAAKC,IAAI,EAAGD,KAAKgZ,IAAIrT,GAAOU,GAAa,EAAIA,GAAaX,GAAOw1B,IAAQ,EAC9EzL,GAAWyL,EAAM/J,GAAa+J,EAGvC,SAASC,GAAar+B,GAIpB,IAHS,MAALA,IAAaA,EAAIuH,IAEjBorB,KAAY3yB,GAAKq0B,IACdr0B,EAAI,GAAKA,GAAKuJ,GAErB,OAAOrG,KAAKuZ,MAAMzc,EAAEuJ,IAGtB,SAAS6vB,KACP,IACIrF,EADAuK,EAAWD,KAUf,OAPAtK,EAASxE,GAAkB+O,EACzBzP,IAAc7lB,GAAY9F,KAAKsxB,MAAM8J,EAAW,GAAKzH,GAAQttB,GAAa,GACtErG,KAAKuZ,MAAM6hB,EAAW11B,KAGvBC,IAAQ8pB,IAAYprB,KAAUiuB,KAAYzB,EAAS8C,GAAQ,GAEzD9C,EAmCT,SAASP,KACP,OAAO/nB,EAAI3H,YAAcsU,EAAIhV,gBAAgB2b,aAAe3G,EAAIvS,KAAKkZ,YAGvE,SAASwf,GAAmBC,GAC1B,MAAe,QAARA,EAAgB,aAAe,YAYxC,SAAStK,KACP,IAAIuK,EAAM7P,GAA4B,EAAdA,GAAkBD,GAAS,EACnD,OAXF,SAAS+P,EAAgBt4B,GACvB,IAAoCu4B,EAAMhD,EAAtCiD,EAAMxmB,EAAIlM,cAAc,OAK5B,OAJA9F,EAAGsS,YAAYkmB,GAEfjD,GADAgD,EAAOC,EAAIhS,yBACEiS,MAAQF,EAAK7D,KAC1B8D,EAAIx3B,SACGu0B,GAAS+C,EAAet4B,EAAGgiB,YAK3BsW,CAAevL,IAAmBsL,EAG3C,SAAS/J,GAAWztB,GAClB,GAAIvB,EAAQuB,GACV,OAAO,EAEP,GAAIupB,GACF,IAAK,IAAI8D,KAAM9D,GACb,GAAIA,GAAW8D,GAAIrtB,GAAS,OAAO,EAGvC,OAAO,EAQX,SAAS+sB,GAAW/sB,EAAM63B,GAGxB,GAFU,MAANA,IAAcA,EAAKvL,IAEV,UAATtsB,GAAoB4nB,GACtB,OAAO3rB,KAAKuZ,OAAOwX,GAAWtF,KAAWE,GAAaF,MAAY,EAGlE,IAAIoF,EAASruB,EAAQuB,GAErB,GAAIupB,GACF,IAAK,IAAI8D,KAAM9D,GAETsO,GAAMnjB,SAAS2Y,IACbrtB,KAAQupB,GAAW8D,KAAOP,EAASvD,GAAW8D,GAAIrtB,IAQ5D,MAHa,YAATA,GAAiC,SAAX8sB,IAAqBA,EAASC,GAAU,UAC7DrB,IAAsB,YAAT1rB,GAA+B,UAATA,IAAqB8sB,EAAS7wB,KAAKuZ,MAAMsX,IAE1EA,EAUX,SAASqH,GAAuB2D,EAAgBC,EAAWC,EAAeC,EAAU9C,GAClF,IAAIhwB,EAAM,GAEV,QAAuB3B,IAAnBs0B,EAA8B,CAChC,IAAIN,EAAMM,EACNC,IAAaP,GAAOO,GACxB5yB,EAAM4mB,GACJ,aAAeyL,EAAM,QAAUM,EAAiB,MAChD,WAAaA,EAAiB,QAAUN,EAAM,aAC3C,GAAIO,IAAcC,EAAe,CACtC,IAAIE,EAAgB,IAAMH,EAAY,KAEtC5yB,EAAM,cADI4mB,GAAamM,EAAgB,OAAS,KAAOA,EAAgB,MAC5C,IAI7B,OADKxM,IAAYyJ,GAAgBnK,GAAsBiN,IAAY9yB,GAAO+uB,GAA2B+D,IAC9F9yB,EAGT,SAASivB,GAAmB4D,EAAeD,EAAWI,GACpD,OAAIH,GACMA,EAAgBD,GAAarK,GAAgB,KAE9C/C,EACLA,EAAO,IAAsB,IAAhB+C,GAAsB,OAASyK,EAAW,IACvC,IAAhBzK,GAAsByK,EAAW,IAIvC,SAAS9D,GAAoB2D,EAAeD,EAAWI,GACrD,IAAIzD,EAEJ,GAAIsD,EACFtD,EAASsD,EAAgBD,EAAa,SACjC,CACArM,KAAYyM,EAAWl8B,KAAKuZ,MAAM2iB,IACvC,IAAIC,EAAW1M,GAAWgC,GAAgByK,EAC1CzD,EAAQ/J,EACNA,EAAO,WAAayN,EAAW,IAC/B,IAAMA,EAAW,IAMrB,OAHA1D,EAAQ,SAAWA,EAGD,UAAX9K,GAAqB8K,EAAQ,IAAMA,EAAQ,eAGpD,SAASJ,GAAqByD,GAC5B,IAAI5yB,EAAM,IAIQ,IAAd4yB,IAGF5yB,GAFW4mB,GAAa,WAAa,YAC3BA,GAAa,QAAU,UACb,KAAOgM,EAAY,OAGzC,OAAO5yB,EAGT,SAASkzB,GAAc/+B,EAAMi6B,GAC3B,IAAI1Y,EAASvhB,EAAKylB,UAAU,EAAGzlB,EAAK8B,OAASm4B,GAAKnd,cAGlD,OAFIyE,IAAUA,EAAS,IAAMA,EAAS,KAE/BA,EAGT,SAASqZ,GAA4B1hB,GACnC,OAAO6lB,GAAarN,EAAoB,IAAM,uBAAyBxY,EAAQ,IAAO,KAGxF,SAAS+hB,GAA2B/hB,GAClC,OAAO6lB,GAAanN,EAAmB,IAAM,sBAAwB1Y,EAAQ,IAAO,KAgFtF,SAAS8iB,KAEP,GAAI7H,GAAU,eAAiB1rB,KAAcgqB,GAAY,CACvD,IAAIuM,EAAO54B,GAAUpC,iBAAiB,OAGtC,YAAQg7B,GAAM,SAAS9G,GACrB,IAAI+G,EAAM/G,EAAI+G,IAEVA,GAAOA,EAAI57B,QAAQ,cAAgB,GACrC,YAAU60B,EAAKF,IACfE,EAAI+G,IAAM,GACV/G,EAAI+G,IAAMA,EACV,YAAS/G,EAAK,YACJhI,IACV+H,GAAUC,MAKd,aAAI,WAAYgH,GAAgB,YAAkBF,IAAO,WAAa3L,IAAe,SAGhF5qB,IAAagqB,KAAcuM,EAAOG,GAAcn4B,GAAOrE,KAAKgZ,IAAI3U,GAAQqB,GAAQ,EAAG+rB,GAAgB,KAExGlE,GAAWkP,KAAkC,aAAI,WAAYF,GAAgB,YAAkBF,GAAOI,YAIlGhN,IAAYiN,KAGhBC,KACAC,KAIJ,SAASH,KACP,GAAI32B,GAAW,CAEb,IAAIwxB,EAAM3xB,GAAOtB,GAAQgC,GAAa,GACtC,SAAUw2B,IACRzM,GAAWkH,EAAM,GAAG5N,wBAAwBiS,MAAMmB,QAAQ,KAAO1M,GAAWkH,GAAK5N,wBAAwBkO,KAAKkF,QAAQ,GACtHC,KACAj0B,YAAW,WAAY+zB,MAA4B,IAHrD,QAMAE,KAKJ,SAASA,KAEFjN,KAAchqB,KACjBk3B,KAEIl3B,IACF6rB,GAAgBC,KACZ9D,KAAagF,GAASC,MAC1BT,GAAWL,KACXgF,GAAyBrE,IAAWE,KAEpC+G,MAKApK,IAAYiN,KAGhBC,KACAC,KA8JF,SAASD,KASP,GAPAM,KAGAlN,GAAamN,mBAAmB,aAAc,qHAAuHC,KAAqB,eAAiB92B,GAAa,UACxNsqB,GAAoBZ,GAAaxqB,cAAc,4BAG3CyvB,GAAa,CACf,IAAIoI,EAAM7Q,GAAW,OAAS,QAC1BM,GACF,YAASA,GAAgB,CAAC,cAAeuQ,IAChC56B,EAAQsqB,uBACjBiD,GAAamN,mBAAmB7B,GAAkB74B,EAAQgqB,kBAAmB,wBAA0B4Q,EAAM,KAAO1G,GAAoB,GAAK0G,EAAM1G,GAAoB,GAAK/J,GAAa,GAAK,aAC9LE,GAAiBkD,GAAaxqB,cAAc,kBAI1CsnB,IACF,YAAUA,GAAgB,CAAC,MAAS4N,KAGlClO,KACF2N,KACItN,IAAsB,YAAUnpB,GAAWwwB,IAC3ClH,IAA6B,YAAUtpB,GAAW4wB,KAK1D,GAAIU,GAAQ,CAIV,GAAI3I,GACF,YAASA,GAAc,CAAC,aAAc,wBACtClD,GAAWkD,GAAa5lB,SACxB,YAAQ0iB,IAAU,SAASnlB,EAAMjH,GAC/B,YAASiH,EAAM,CACb,WAAYjH,EACZ,SAAY,KACZ,aAAcu5B,IAAUv5B,EAAI,GAC5B,gBAAiB61B,YAKhB,CAGL,IAFA,IAAI0K,EAAU,GACVC,EAAYjR,GAAkB,GAAK,uBAC9BvvB,EAAI,EAAGA,EAAIuJ,GAAYvJ,IAE9BugC,GAAW,qBAAuBvgC,EAAG,kCAAoC61B,GAAU,KAAO2K,EAAY,gBAAkBjH,IAAUv5B,EAAI,GAAI,cAE5IugC,EAAU,yDAA2DA,EAAU,SAC/EtN,GAAamN,mBAAmB7B,GAAkB74B,EAAQ2pB,aAAckR,GAExEjR,GAAe2D,GAAaxqB,cAAc,YAC1C2jB,GAAWkD,GAAa5lB,SAM1B,GAHA+2B,KAGIxO,EAAoB,CACtB,IAAInQ,EAASmQ,EAAmBjM,UAAU,EAAGiM,EAAmB5vB,OAAS,IAAIgb,cACzEjR,EAAM,mBAAqBqN,GAAQ,IAAO,IAE1CqI,IACF1V,EAAM,IAAM0V,EAAS,IAAM1V,GAG7B,YAAWG,GAAO,mBAAqBspB,GAAU,SAAUzpB,EAAK,YAAkBG,KAGpF,YAAS6f,GAAS0K,IAAkB,CAAC,aAAcyC,IAAUzC,GAAkB,GAAK0C,KACpF,YAAYpN,GAAS0K,IAAkB,YACvC,YAAS1K,GAAS0K,IAAkBwC,IAGpC,YAAUhK,GAAciH,IAMtByB,KACG7I,IAAuBC,IAAe7mB,KACzC0qB,GAAamN,mBAAmB7B,GAAkB74B,EAAQupB,kBAAmB,qIAAuI4G,GAAS,KAAO3G,GAAa,GAAK,sEAAwE2G,GAAS,KAAO3G,GAAa,GAAK,mBAEhWC,GAAoB8D,GAAaxqB,cAAc,kBAG5C2mB,IAAe7mB,KAClB6mB,GAAaD,GAAkBzlB,SAAS,GACxCnB,GAAa4mB,GAAkBzlB,SAAS,IAGtChE,EAAQypB,mBACV,YAASA,GAAmB,CAC1B,aAAc,sBACd,SAAY,OAIZzpB,EAAQypB,mBAAsBzpB,EAAQ0pB,YAAc1pB,EAAQ6C,aAC9D,YAAS,CAAC6mB,GAAY7mB,IAAa,CACjC,gBAAiBstB,GACjB,SAAY,QAIZnwB,EAAQypB,mBAAsBzpB,EAAQ0pB,YAAc1pB,EAAQ6C,cAC9D,YAAS6mB,GAAY,CAAC,gBAAkB,SACxC,YAAS7mB,GAAY,CAAC,gBAAkB,UAG1CqwB,GAAe8H,GAAStR,IACxByJ,GAAe6H,GAASn4B,IAExBo4B,KAGIxR,GACF,YAAUA,GAAmBgH,KAE7B,YAAU/G,GAAY+G,IACtB,YAAU5tB,GAAY4tB,MAK1ByK,KAGF,SAASd,KAEP,GAAInN,IAAYN,EAAe,CAC7B,IAAI2K,EAAM,GACVA,EAAI3K,GAAiBmE,GACrB,YAAU7vB,GAAWq2B,GAGnBrM,IAAS,YAAUhqB,GAAWgxB,GAAajyB,EAAQqrB,sBACnD9nB,IAAa,YAAUtC,GAAWoxB,IAClCvI,IAAa,YAAUpX,EAAKsf,IAEjB,UAAX7G,GACF8E,GAAOlV,GAAG,gBAAgB,WACxBogB,KACAlL,GAAO5U,KAAK,cAAemc,UAEpB1M,IAAc3B,IAAc7lB,IAAaunB,KAAeyC,KACjE,YAAUvnB,EAAK,CAAC,OAAUiyB,KAGxBnN,KACa,UAAXM,GACF8E,GAAOlV,GAAG,cAAeqgB,IACfhL,IAAWgL,MAGzBC,KACIjL,GAAWkL,KAA4BhL,IAAUiL,KAErDtL,GAAOlV,GAAG,eAAgBygB,IACX,UAAXrQ,IAAsB8E,GAAO5U,KAAK,cAAemc,MAC/B,mBAAX/zB,IAAyBA,GAAO+zB,MAC3CzJ,IAAO,EA2DT,SAASiK,GAAUj4B,GACjB,aAAI,WAAYo7B,GAAYxK,GAAS5wB,OAGvC,SAASo7B,GAAap7B,GACpB,GAAKguB,GAAL,CACe,UAAX5C,IAAsB8E,GAAO5U,KAAK,eAAgBmc,GAAKz3B,IAC3D8tB,GAAcC,KACd,IAAI2N,EACAC,EAAoBrO,GACpBsO,GAAyB,EAEzB7Q,KACFkD,MACAyN,EAAYC,IAAsBrO,KAEjB4C,GAAO5U,KAAK,qBAAsBmc,GAAKz3B,KAG1D,IAAI67B,EACAC,EACAnC,EAAWx2B,GACX44B,EAAa1L,GACb2L,EAAYzL,GACZ0L,EAAelS,GACfmS,EAAc54B,GACd64B,EAAS94B,GACT+4B,EAAWlR,GACXmR,EAAe74B,GACf84B,EAActS,GACduS,EAAwBlS,GACxBmS,EAA+BhS,GAC/BiS,EAAW36B,GAEf,GAAI45B,EAAW,CACb,IAAIlC,EAAgBpQ,GAChBsT,EAAgB5R,GAChB6R,EAAkBlT,GAClBmT,EAAYrT,GACZsT,EAAkBzS,GAEtB,IAAKiC,EACH,IAAIkN,EAAYrQ,GACZoQ,EAAiBnQ,GAqJzB,GA7IAY,GAAYwE,GAAU,aACtBjrB,GAAWirB,GAAU,YACrBlrB,GAAMkrB,GAAU,OAChBrD,GAAQqD,GAAU,SAClBhF,GAASgF,GAAU,UACnB/qB,GAAY+qB,GAAU,aACtBvE,GAAWuE,GAAU,YACrBlE,GAAqBkE,GAAU,sBAC/B/D,GAA4B+D,GAAU,6BAElCmN,IACFrL,GAAU9B,GAAU,WACpBnF,GAAamF,GAAU,cACvBva,GAAQua,GAAU,SAClBzD,GAAayD,GAAU,cACvB9E,GAAe8E,GAAU,gBACzBnE,GAAemE,GAAU,gBACzBrE,GAAkBqE,GAAU,mBAEvBlC,IACHlD,GAAcoF,GAAU,eACxBrF,GAASqF,GAAU,YAIvBmG,GAAyBrE,IAEzB7B,GAAWC,KACLlB,KAAchqB,IAAe8sB,KACjCoK,KACKlN,KACH+J,KACAsE,GAAyB,KAGzBxS,IAAc7lB,MAChB6rB,GAAgBC,KAEhBU,GAAWL,OAITgM,GAAatS,MACfjmB,GAAQorB,GAAU,SAClBjF,GAAUiF,GAAU,YACpBuN,EAAe34B,KAAUw2B,KAGlBvQ,IAAe7lB,KAAawsB,GAAWL,MAG5CqH,OAIA2E,GACErL,KAAY0L,IACV1L,GACFkL,KAqVR,WACE,IAAKjL,GAAY,OAMjB,GAJAxpB,GAAMwpB,UAAW,EACjBpvB,GAAU0F,WAAaupB,GACvBgK,KAEI/2B,GACF,IAAK,IAAIwO,EAAIgd,GAAYhd,KACnBsb,IAAY,YAAYW,GAAWjc,IACvC,YAAYic,GAAWqB,GAAgBtd,EAAI,IAK/C,IAAKsb,GACH,IAAK,IAAI3yB,EAAIuH,GAAOtH,EAAIsH,GAAQgC,GAAYvJ,EAAIC,EAAGD,IAAK,CACtD,IAAIiH,EAAOqsB,GAAWtzB,GAClBuiC,EAASviC,EAAIuH,GAAQqB,GAAQsnB,GAAYE,GAC7CnpB,EAAKX,MAAMw0B,KAAqB,KAAb96B,EAAIuH,IAAeqB,GAAQ,IAC9C,YAAS3B,EAAMs7B,GAKnBC,KAEAzM,IAAW,EA9WL0M,IAKFzR,KAAcmQ,GAAatS,IAAc7lB,MAC3CgtB,GAASC,QAIMwL,IACTzL,IACF6G,GAAqBC,GAA2B1H,GAAc,KAC9D6L,QAgRR,WACE,IAAK/K,GAAU,OAIXtH,IAAekD,IAASoB,GAAa5sB,MAAMo8B,OAAS,IAGxD,GAAIrO,GAEF,IADA,IAAIjoB,EAAM,kBACDpM,EAAIq0B,GAAYr0B,KACnB2yB,IAAY,YAAYW,GAAWtzB,GAAIoM,GAC3C,YAAYknB,GAAWqB,GAAgB30B,EAAI,GAAIoM,GAKnDo2B,KAEAtM,IAAS,EAjSHyM,GACAtB,GAAyB,IAK/BlH,GAAyBrE,IAAWE,IAC/BvG,KAAYK,GAAqBG,IAA4B,GAE9DT,KAAckS,IAChBlS,GACE,YAAUpX,EAAKsf,IACf,YAAatf,EAAKsf,KAElB3uB,KAAa44B,IACX54B,GACEomB,GACF,YAAYA,KAERC,IAAc,YAAYA,IAC1B7mB,IAAc,YAAYA,KAG5B4mB,GACF,YAAYA,KAERC,IAAc,YAAYA,IAC1B7mB,IAAc,YAAYA,MAIhCO,KAAQ84B,IACV94B,GACE,YAAYwmB,IACZ,YAAYA,KAEZqB,KAAUkR,IACZlR,GACE,YAAUhqB,GAAWgxB,GAAajyB,EAAQqrB,sBAC1C,YAAapqB,GAAWgxB,KAExB1uB,KAAc64B,IAChB74B,GACE,YAAUtC,GAAWoxB,IACrB,YAAapxB,GAAWoxB,KAExBtI,KAAasS,IACXtS,IACEM,IAAkB,YAAYA,IAC7BgH,IAAc2C,IAAsB0D,OAErCrN,IAAkB,YAAYA,IAC9BgH,IAAaC,OAGjBlH,KAAuBkS,IACzBlS,GACE,YAAUnpB,GAAWwwB,IACrB,YAAaxwB,GAAWwwB,KAExBlH,KAA8BgS,IAChChS,GACE,YAAU7X,EAAKmf,IACf,YAAanf,EAAKmf,KAGlB4J,GAYF,GAXItS,KAAeoQ,GAAiBjQ,KAAWqT,IAAahB,GAAyB,GAEjF9Q,KAAe4R,IACZ5R,KAAc2C,GAAa5sB,MAAMuV,OAAS,KAG7C9S,IAAYmmB,KAAiBkT,IAC/BhT,GAAW9B,UAAY4B,GAAa,GACpC3mB,GAAW+kB,UAAY4B,GAAa,IAGlCa,IAAkBF,KAAiByS,EAAiB,CACtD,IAAItiC,EAAIyvB,GAAW,EAAI,EACnBmT,EAAO7S,GAAezC,UACtBre,EAAM2zB,EAAKvgC,OAASigC,EAAgBtiC,GAAGqC,OACvCugC,EAAK5c,UAAU/W,KAASqzB,EAAgBtiC,KAC1C+vB,GAAezC,UAAYsV,EAAK5c,UAAU,EAAG/W,GAAO4gB,GAAa7vB,UAIjEgvB,KAAWH,IAAc7lB,MAAcq4B,GAAyB,GAsBtE,IAnBIE,GAAgB1S,KAAe7lB,MACjC6tB,GAAQqC,KACRuH,OAGFa,EAAa/5B,KAAU26B,IAErBvM,GAAO5U,KAAK,eAAgBmc,MAC5BmE,GAAyB,GAChBE,EACJD,GAAcJ,MACVrS,IAAc7lB,MACvB+3B,KACAZ,KACA0C,MAGEtB,IAAiB5O,IAwevB,WAEE,IADA,IAAI1yB,EAAIsH,GAAQrE,KAAKgZ,IAAI3S,GAAYX,IAC5B5I,EAAI20B,GAAe30B,KAAM,CAChC,IAAIiH,EAAOqsB,GAAWtzB,GAElBA,GAAKuH,IAASvH,EAAIC,GAEpB,YAASgH,EAAM,cAEfA,EAAKX,MAAMw0B,KAAqB,KAAb96B,EAAIuH,IAAeqB,GAAQ,IAC9C,YAAS3B,EAAMipB,IACf,YAAYjpB,EAAMmpB,KACTnpB,EAAKX,MAAMw0B,OACpB7zB,EAAKX,MAAMw0B,KAAO,GAClB,YAAS7zB,EAAMmpB,IACf,YAAYnpB,EAAMipB,KAIpB,YAAYjpB,EAAMkpB,IAIpBnkB,YAAW,WACT,YAAQsnB,IAAY,SAASltB,GAC3B,YAAYA,EAAI,mBAEjB,KAngB8B08B,IAE5BhN,KAAYE,GAAQ,CAEvB,GAAImL,IAAcrP,IAEZvB,KAAewS,eAAiBtpB,KAAUylB,UAC5CzD,KAIE7M,KAAgBmQ,GAAkBpQ,KAAWqQ,IAC/C9L,GAAa5sB,MAAMo1B,QAAUN,GAAsBxM,GAAaD,GAAQE,GAAYpV,GAAO8W,KAGzFyC,IAAY,CAEVL,KACFhsB,GAAUL,MAAMq1B,MAAQN,GAAkBxM,GAAYF,GAAQ/lB,KAIhE,IAAIwD,EAAMkvB,GAAmBzM,GAAYF,GAAQ/lB,IACvC2yB,GAAoB5M,IAI9B,YAAcpiB,GAAO,YAAkBA,IAAS,GAChD,YAAWA,GAAO,IAAMspB,GAAU,eAAgBzpB,EAAK,YAAkBG,KAKzEgkB,IAAcuQ,KAEdO,IACFzB,KACAvK,GAAc9tB,IAId45B,GAAaxL,GAAO5U,KAAK,mBAAoBmc,GAAKz3B,KAQxD,SAASwwB,KACP,IAAKpH,KAAe7lB,GAElB,OAAQO,KADAylB,GAASpmB,IAASA,GAAQ,GAAK,EAAIA,IAI7C,IAAI+yB,EAAQ9M,IAAcA,GAAaF,IAAUplB,GAAaoqB,GAAepqB,IACzEy5B,EAAKpU,GAAcqF,GAAyB,EAAdrF,GAAkBqF,GAAWtF,GAM/D,OAJIK,KACFgU,GAAMnU,IAAcoF,GAAWpF,IAAc,GAAKoF,IAAYN,GAAepsB,GAAQ,GAAKosB,GAAepsB,IAASonB,KAAW,GAGxHgN,GAASqH,EAGlB,SAAStP,KAEP,IAAK,IAAIY,KADTvB,GAAiB,EACFvC,GACb8D,EAAK3Y,SAAS2Y,GACVf,IAAee,IAAMvB,GAAiBuB,GA+C9C,SAASsM,MACFnR,IAAYM,IAAkB,YAAYA,KAC1CjnB,IAAOwmB,IAAgB,YAAYA,IACnCvmB,KACComB,GACF,YAAYA,KAERC,IAAc,YAAYA,IAC1B7mB,IAAc,YAAYA,MAKpC,SAASi6B,KACH/S,IAAYM,IAAkB,YAAYA,IAC1CjnB,IAAOwmB,IAAgB,YAAYA,IACnCvmB,KACEomB,GACF,YAAYA,KAERC,IAAc,YAAYA,IAC1B7mB,IAAc,YAAYA,MAKpC,SAAS04B,KACP,IAAI/K,GAAJ,CAMA,GAHItH,KAAesE,GAAa5sB,MAAMo8B,OAAS,OAG3CrO,GAEF,IADA,IAAIjoB,EAAM,kBACDpM,EAAIq0B,GAAYr0B,KACnB2yB,IAAY,YAASW,GAAWtzB,GAAIoM,GACxC,YAASknB,GAAWqB,GAAgB30B,EAAI,GAAIoM,GAKhDw0B,KAEA1K,IAAS,GAyBX,SAAS8K,KACP,IAAIjL,GAAJ,CAKA,GAHAxpB,GAAMwpB,UAAW,EACjBpvB,GAAU0F,UAAY1F,GAAU0F,UAAU8C,QAAQymB,GAAoB5P,UAAU,GAAI,IACpF,YAAYrf,GAAW,CAAC,UACpBkC,GACF,IAAK,IAAIwO,EAAIgd,GAAYhd,KACnBsb,IAAY,YAAYW,GAAWjc,IACvC,YAAYic,GAAWqB,GAAgBtd,EAAI,IAQ/C,GAHK2b,IAAeL,IAAY,YAAYO,GAAc,CAAC,WAGtDP,GACH,IAAK,IAAI3yB,EAAIuH,GAAOtH,EAAIsH,GAAQgC,GAAYvJ,EAAIC,EAAGD,IAAK,CACtD,IAAIiH,EAAOqsB,GAAWtzB,GACtB,YAAYiH,EAAM,CAAC,UACnB,YAAYA,EAAMipB,IAClB,YAAYjpB,EAAMmpB,IAKtBwQ,KAEA7K,IAAW,GAiCb,SAAS8M,KACP,IAAIz2B,EAAMi0B,KACNxM,GAAkBvG,YAAclhB,IAAOynB,GAAkBvG,UAAYlhB,GAG3E,SAASi0B,KACP,IAAIpyB,EAAMg1B,KACNC,EAAQj1B,EAAI,GAAK,EACjBk1B,EAAMl1B,EAAI,GAAK,EACnB,OAAOi1B,IAAUC,EAAMD,EAAQ,GAAKA,EAAQ,OAASC,EAGvD,SAASF,GAAsBlxB,GAClB,MAAPA,IAAeA,EAAM+qB,MACzB,IAAmBqG,EAAKC,EAAYC,EAAhCH,EAAQ37B,GAiBZ,GAdIynB,IAAUJ,IACR5lB,IAAa6lB,MACfuU,IAAgBE,WAAWvxB,GAAO6c,IAClCyU,EAAWD,EAAanP,GAAyB,EAAdrF,IAGjC5lB,KACFo6B,EAAazP,GAAepsB,IAC5B87B,EAAWD,EAAanP,IAMxBjrB,GACF2qB,GAAe3sB,SAAQ,SAASu8B,EAAOvjC,GACjCA,EAAI20B,MACD3F,IAAUJ,KAAgB2U,GAASH,EAAa,KAAOF,EAAQljC,GAChEqjC,EAAWE,GAAS,KAAOJ,EAAMnjC,WAKpC,CAEL,GAAI6uB,GAAY,CACd,IAAI2U,EAAO3U,GAAaF,GACpBK,IAAUJ,IACZsU,EAAQhgC,KAAKuZ,MAAM2mB,EAAWI,GAC9BL,EAAMjgC,KAAKsxB,KAAK6O,EAASG,EAAO,IAEhCL,EAAMD,EAAQhgC,KAAKsxB,KAAKP,GAASuP,GAAQ,OAI3C,GAAIxU,IAAUJ,GAAa,CACzB,IAAI1V,EAAItQ,GAAQ,EAQhB,GAPIomB,IACFkU,GAAShqB,EAAI,EACbiqB,EAAM57B,GAAQ2R,EAAI,GAElBiqB,EAAM57B,GAAQ2R,EAGZ0V,GAAa,CACf,IAAI1T,EAAI0T,GAAchmB,GAAQqrB,GAC9BiP,GAAShoB,EACTioB,GAAOjoB,EAGTgoB,EAAQhgC,KAAKuZ,MAAMymB,GACnBC,EAAMjgC,KAAKsxB,KAAK2O,QAEhBA,EAAMD,EAAQt6B,GAAQ,EAI1Bs6B,EAAQhgC,KAAKC,IAAI+/B,EAAO,GACxBC,EAAMjgC,KAAKgZ,IAAIinB,EAAKxO,GAAgB,GAGtC,MAAO,CAACuO,EAAOC,GAGjB,SAASpC,KACHtQ,KAAaqF,IACf4J,GAAcpyB,MAAM,KAAM21B,MAAwBj8B,SAAQ,SAAUyxB,GAClE,IAAK,YAASA,EAAKH,IAAmB,CAEpC,IAAI0E,EAAM,GACVA,EAAI3K,GAAiB,SAAU5sB,GAAKA,EAAEmZ,mBACtC,YAAU6Z,EAAKuE,GAEf,YAAUvE,EAAKF,IAGfE,EAAI+G,IAAM,YAAQ/G,EAAK,YAGvB,IAAIgL,EAAS,YAAQhL,EAAK,eACtBgL,IAAUhL,EAAIgL,OAASA,GAE3B,YAAShL,EAAK,eActB,SAASD,GAAWC,GAClB,YAASA,EAAK,UACdC,GAAaD,GAQf,SAASC,GAAcD,GACrB,YAASA,EAAK,gBACd,YAAYA,EAAK,WACjB,YAAaA,EAAKF,IAGpB,SAASmH,GAAewD,EAAOC,GAE7B,IADA,IAAI5D,EAAO,GACJ2D,GAASC,GACd,YAAQ7P,GAAW4P,GAAO3+B,iBAAiB,QAAQ,SAAUk0B,GAAO8G,EAAKzwB,KAAK2pB,MAC9EyK,IAGF,OAAO3D,EAKT,SAASuB,KACP,IAAIvB,EAAOG,GAAcpyB,MAAM,KAAM21B,MACrC,aAAI,WAAYxD,GAAgBF,EAAMhC,OAGxC,SAASkC,GAAiBF,EAAMxzB,GAE9B,OAAI6nB,GAAuB7nB,KAG3BwzB,EAAKv4B,SAAQ,SAAUyxB,EAAKlxB,GACtB,YAASkxB,EAAKH,KAAqBiH,EAAKmE,OAAOn8B,EAAO,MAIvDg4B,EAAKl9B,YAGV,aAAI,WAAYo9B,GAAgBF,EAAMxzB,MAHXA,KAM7B,SAASm1B,KACPH,KACAZ,KACA0C,KACAlC,KA0GF,WAEE,GAAI73B,KACFguB,GAAkBH,IAAc,EAAIA,GAAayC,KACjDzC,IAAc,EAEVG,KAAoBuC,IAAuB,CAC7C,IAAIsK,EAAUvX,GAASiN,IACnBuK,EAAaxX,GAAS0K,IAE1B,YAAS6M,EAAS,CAChB,SAAY,KACZ,aAAcpK,IAAUF,GAAwB,KAElD,YAAYsK,EAASrK,IAErB,YAASsK,EAAY,CAAC,aAAcrK,IAAUzC,GAAkB,GAAK0C,KACrE,YAAYoK,EAAY,YACxB,YAASA,EAAYtK,IAErBD,GAAwBvC,IA7H5B+M,GAIF,SAASpI,KACH9I,IAAYpC,KACduC,GAAcxsB,MAAM2rB,GAAsBxY,GAAQ,IAAO,KAI7D,SAASqqB,GAAmBC,EAAYC,GAEtC,IADA,IAAIC,EAAU,GACLjkC,EAAI+jC,EAAY9jC,EAAIiD,KAAKgZ,IAAI6nB,EAAaC,EAAYrP,IAAgB30B,EAAIC,EAAGD,IACpFikC,EAAQn1B,KAAKwkB,GAAWtzB,GAAGmC,cAG7B,OAAOe,KAAKC,IAAImK,MAAM,KAAM22B,GAQ9B,SAAS1G,KACP,IAAI2G,EAAY3T,GAAauT,GAAkBv8B,GAAOqB,IAASk7B,GAAkBzP,GAAY9qB,IACzF46B,EAAKrR,IAAgCI,GAErCiR,EAAG79B,MAAMuV,SAAWqoB,IAAaC,EAAG79B,MAAMuV,OAASqoB,EAAY,MAKrE,SAAShE,KACPvM,GAAiB,CAAC,GAClB,IAAIlS,EAAOuR,GAAa,OAAS,MAC7BoR,EAAQpR,GAAa,QAAU,SAC/BtgB,EAAO4gB,GAAW,GAAG1G,wBAAwBnL,GAEjD,YAAQ6R,IAAY,SAASrsB,EAAMjH,GAE7BA,GAAK2zB,GAAe7kB,KAAK7H,EAAK2lB,wBAAwBnL,GAAQ/O,GAE9D1S,IAAM20B,GAAgB,GAAKhB,GAAe7kB,KAAK7H,EAAK2lB,wBAAwBwX,GAAS1xB,MAK7F,SAASytB,KACP,IAAIkE,EAAQpB,KACRC,EAAQmB,EAAM,GACdlB,EAAMkB,EAAM,GAEhB,YAAQ/Q,IAAY,SAASrsB,EAAMjH,GAE7BA,GAAKkjC,GAASljC,GAAKmjC,EACjB,YAAQl8B,EAAM,iBAChB,YAAYA,EAAM,CAAC,cAAe,aAClC,YAASA,EAAMoxB,KAIZ,YAAQpxB,EAAM,iBACjB,YAASA,EAAM,CACb,cAAe,OACf,SAAY,OAEd,YAAYA,EAAMoxB,QA+D1B,SAASiM,GAAsBl+B,GAC7B,OAAOA,EAAGssB,SAASrV,cAGrB,SAASqjB,GAAUt6B,GACjB,MAAoC,WAA7Bk+B,GAAqBl+B,GAG9B,SAASm+B,GAAgBn+B,GACvB,MAA4C,SAArCA,EAAGzB,aAAa,iBAGzB,SAAS6/B,GAAkB9D,EAAUt6B,EAAI2L,GACnC2uB,EACFt6B,EAAG2vB,SAAWhkB,EAEd3L,EAAGuU,aAAa,gBAAiB5I,EAAIQ,YAKzC,SAASouB,KACP,GAAK53B,KAAYunB,KAAUznB,GAA3B,CAEA,IAAI47B,EAAe,GAAiBrV,GAAW2G,SAAWwO,GAAenV,IACrEsV,EAAe,GAAiBn8B,GAAWwtB,SAAWwO,GAAeh8B,IACrEo8B,EAAep9B,IAAS+tB,GACxBsP,GAAgBtU,IAAU/oB,IAASiuB,GAEnCmP,IAAgBF,GAClBD,GAAiB5L,GAAcxJ,IAAY,IAExCuV,GAAeF,GAClBD,GAAiB5L,GAAcxJ,IAAY,GAEzCwV,IAAgBF,GAClBF,GAAiB3L,GAActwB,IAAY,IAExCq8B,GAAeF,GAClBF,GAAiB3L,GAActwB,IAAY,IAK/C,SAASq0B,GAAex2B,EAAIgG,GACtB6lB,IAAsB7rB,EAAGE,MAAM2rB,GAAsB7lB,GAO3D,SAASy4B,GAAcrK,GAIrB,OAHW,MAAPA,IAAeA,EAAMjzB,IAGlByB,IAAcirB,IADXrF,GAAcD,GAAS,IACOgF,GAAe6G,EAAM,GAAK7G,GAAe6G,GAAO7L,KAAS,EAC/FE,IAAcoF,GAAWpF,IAAc,GACpCjmB,GAAQ,GAAK,EAGpB,SAASksB,KACP,IACIf,EAAUE,IADJrF,GAAcD,GAAS,IAb1BE,IAAcA,GAAaF,IAAUgG,GAAgBhB,GAAegB,KAsB3E,OANI3F,KAAWnmB,KACbkrB,EAASlF,KAAgBA,GAAaF,KAAWgG,GAAgB,GAAKkQ,KACpEA,GAAalQ,GAAgB,GAAKhB,GAAegB,GAAgB,IAEjEZ,EAAS,IAAKA,EAAS,GAEpBA,EAGT,SAAS+I,GAA4BtC,GAGnC,IAAIzoB,EACJ,GAHW,MAAPyoB,IAAeA,EAAMjzB,IAGrByrB,KAAehqB,GACjB,GAAI6lB,GACF9c,IAAS8c,GAAaF,IAAU6L,EAC5BxL,KAAUjd,GAAO8yB,UAChB,CACL,IAAIC,EAAc/S,EAAY4C,GAAgB/rB,GAC1ComB,KAAUwL,GAAOqK,MACrB9yB,EAAc,KAANyoB,EAAYsK,OAGtB/yB,GAAQ4hB,GAAe6G,GACnBxL,IAAUhmB,KACZ+I,GAAO8yB,MAQX,OAJIjQ,KAAoB7iB,EAAM7O,KAAKC,IAAI4O,EAAK8iB,KAE5C9iB,IAAQihB,IAAehqB,IAAc6lB,GAAoB,KAAN,IAKrD,SAAS+Q,GAA4B7tB,GACnC6qB,GAAcj2B,GAAW,MACzBk2B,GAAqB9qB,GAGvB,SAAS8qB,GAAsB9qB,GAClB,MAAPA,IAAeA,EAAM+qB,MACzBn2B,GAAUL,MAAM0uB,IAAiBC,GAAkBljB,EAAMmjB,GAG3D,SAAS+H,GAAc8H,EAAQC,EAAUC,EAASC,GAChD,IAAIjlC,EAAI8kC,EAASn8B,GACZC,KAAQ5I,EAAIiD,KAAKgZ,IAAIjc,EAAG00B,KAE7B,IAAK,IAAI30B,EAAI+kC,EAAQ/kC,EAAIC,EAAGD,IAAK,CAC7B,IAAIiH,EAAOqsB,GAAWtzB,GAGnBklC,IAASj+B,EAAKX,MAAMw0B,KAAqB,KAAb96B,EAAIuH,IAAeqB,GAAQ,KAExDynB,IAAgB6B,IAClBjrB,EAAKX,MAAM4rB,GAAmBjrB,EAAKX,MAAM8rB,GAAkB/B,IAAgBrwB,EAAI+kC,GAAU,IAAO,KAElG,YAAY99B,EAAM+9B,GAClB,YAAS/9B,EAAMg+B,GAEXC,GAAS9Q,GAActlB,KAAK7H,IA2CpC,SAASkB,GAAQ1C,EAAG0/B,GACdpQ,IAA8ByH,MAG9Bj1B,KAAU8tB,IAAe8P,KAE3BxP,GAAO5U,KAAK,eAAgBmc,MAC5BvH,GAAO5U,KAAK,kBAAmBmc,MAC3B3M,IAAcuQ,KAGd/J,IAAatxB,GAAK,CAAC,QAAS,WAAW7B,QAAQ6B,EAAEH,OAAS,GAAK0xB,KAEnEtB,IAAU,EACViH,MAWJ,SAASyI,GAAUh5B,GACjB,OAAOA,EAAIiR,cAAclO,QAAQ,KAAM,IAWzC,SAASqnB,GAAiB9zB,GAGxB,GAAIiwB,IAAY+C,GAAS,CAGvB,GAFAC,GAAO5U,KAAK,gBAAiBmc,GAAKx6B,KAE7BiwB,IAAYyB,GAAc/xB,OAAS,EACtC,IAAK,IAAIrC,EAAI,EAAGA,EAAIo0B,GAAc/xB,OAAQrC,IAAK,CAC7C,IAAIiH,EAAOmtB,GAAcp0B,GAEzBiH,EAAKX,MAAMw0B,KAAO,GAEd1I,GAAkBF,IACpBjrB,EAAKX,MAAM8rB,GAAkB,GAC7BnrB,EAAKX,MAAM4rB,GAAmB,IAEhC,YAAYjrB,EAAMkpB,IAClB,YAASlpB,EAAMmpB,IAanB,IAAK1tB,IACAiwB,IAAYjwB,EAAME,OAAOwlB,aAAezhB,IACzCjE,EAAME,SAAW+D,IAAay+B,GAAS1iC,EAAMumB,gBAAkBmc,GAASpQ,IAAgB,CAE1F,IAAKD,GAA4B,CAC/B,IAAImN,EAAW36B,GACfi1B,KACIj1B,KAAU26B,IACZvM,GAAO5U,KAAK,eAAgBmc,MAE5B0C,MAIW,UAAX/O,IAAsB8E,GAAO5U,KAAK,cAAemc,MACrDxH,IAAU,EACVL,GAAc9tB,KAOpB,SAASiC,GAAM67B,EAAa5/B,GAC1B,IAAIuwB,GAGJ,GAAoB,SAAhBqP,EACFjP,GAAgB3wB,GAAI,QAGf,GAAoB,SAAhB4/B,EACTjP,GAAgB3wB,EAAG,OAGd,CACL,GAAIiwB,GAAS,CACX,GAAI5E,GAA4B,OAAiB0F,KAGnD,IAAI8H,EAAWD,KACXiH,EAAW,EAkBf,GAhBoB,UAAhBD,EACFC,GAAahH,EACY,SAAhB+G,EACTC,EAAW3S,GAAWppB,GAAaX,GAAQ01B,EAAW/0B,GAAa,EAAI+0B,GAE5C,iBAAhB+G,IAA4BA,EAAc1pB,SAAS0pB,IAEzDE,MAAMF,KAEJ5/B,IAAK4/B,EAAcniC,KAAKC,IAAI,EAAGD,KAAKgZ,IAAI3S,GAAa,EAAG87B,KAE7DC,EAAWD,EAAc/G,KAKxB3L,IAAY2S,GAAYpiC,KAAKqZ,IAAI+oB,GAAY18B,GAAO,CACvD,IAAI48B,EAASF,EAAW,EAAI,GAAK,EACjCA,GAAa/9B,GAAQ+9B,EAAW/7B,IAAe+rB,GAAW/rB,GAAai8B,EAAsB,EAAbj8B,GAAiBi8B,GAAU,EAG7Gj+B,IAAS+9B,EAGL3S,IAAY9pB,KACVtB,GAAQ+tB,KAAY/tB,IAASgC,IAC7BhC,GAAQiuB,KAAYjuB,IAASgC,KAI/B80B,GAAY92B,MAAW82B,GAAYhJ,KACrCltB,GAAO1C,IAOb,SAAS2wB,GAAiB3wB,EAAG6b,GAC3B,GAAIoU,GAAS,CACX,GAAI5E,GAA4B,OAAiB0F,KAEnD,IAAIiP,EAEJ,IAAKnkB,EAAK,CAIR,IAFA,IAAI1e,EAAS6zB,GADbhxB,EAAI4wB,GAAS5wB,IAGN7C,IAAWusB,IAAqB,CAACC,GAAY7mB,IAAY3E,QAAQhB,GAAU,GAAKA,EAASA,EAAOwlB,WAEvG,IAAIsd,EAAW,CAACtW,GAAY7mB,IAAY3E,QAAQhB,GAC5C8iC,GAAY,IACdD,GAAkB,EAClBnkB,EAAmB,IAAbokB,GAAkB,EAAI,GAIhC,GAAIpV,GAAQ,CACV,GAAI/oB,KAAU+tB,KAAqB,IAAThU,EAExB,YADA9X,GAAK,OAAQ/D,GAER,GAAI8B,KAAUiuB,IAAoB,IAARlU,EAE/B,YADA9X,GAAK,QAAS/D,GAKd6b,IACF/Z,IAASwnB,GAAUzN,EACftY,KAAazB,GAAQrE,KAAKuZ,MAAMlV,KAEpCY,GAAQs9B,GAAoBhgC,GAAgB,YAAXA,EAAEH,KAAuBG,EAAI,OA6BlE,SAAS6xB,KACPmC,GAAgBkM,aAAY,WAC1BvP,GAAgB,KAAMxG,MACrBD,IAEHoH,IAAY,EAGd,SAASK,KACPwG,cAAcnE,IACd1C,IAAY,EAGd,SAAS6O,GAAsBC,EAAQvF,GACrC,YAASvQ,GAAgB,CAAC,cAAe8V,IACzC9V,GAAezC,UAAYsM,GAAoB,GAAKiM,EAASjM,GAAoB,GAAK0G,EAGxF,SAASlD,KACP9F,KACIvH,IAAkB6V,GAAqB,OAAQ/V,GAAa,IAGlE,SAASmH,KACPI,KACIrH,IAAkB6V,GAAqB,QAAS/V,GAAa,IAiBnE,SAAS8N,KACH5G,IACFC,KACA0C,IAAqB,IAErB0D,KACA1D,IAAqB,GAuDzB,SAASxC,GAAU9wB,GACjBA,EAAGlC,QAyBL,SAASmyB,GAAU5wB,GAEjB,OAAOqgC,GADPrgC,EAAIA,GAAKgG,EAAI/I,OACY+C,EAAEsgC,eAAe,GAAKtgC,EAEjD,SAASgxB,GAAWhxB,GAClB,OAAOA,EAAE7C,QAAU6I,EAAI/I,MAAMsjC,WAG/B,SAASF,GAAcrgC,GACrB,OAAOA,EAAEH,KAAK1B,QAAQ,UAAY,EAGpC,SAASqiC,GAAwBxgC,GAC/BA,EAAEgY,eAAiBhY,EAAEgY,iBAAmBhY,EAAEygC,aAAc,EAG1D,SAASC,KACP,OAAO,YAAkB,YAASnM,GAAa7d,EAAI4d,GAAa5d,EAAG6d,GAAa5qB,EAAI2qB,GAAa3qB,GAAIwhB,MAAgBlrB,EAAQgpB,KAG/H,SAASkJ,GAAYnyB,GACnB,GAAIiwB,GAAS,CACX,GAAI5E,GAA4B,OAAiB0F,KAG/C/G,IAAYsH,IAAaK,KAE7B6C,IAAW,EACPH,KACF,YAAIA,IACJA,GAAW,MAGb,IAAIsM,EAAI/P,GAAS5wB,GACjBkwB,GAAO5U,KAAK+kB,GAAargC,GAAK,aAAe,YAAay3B,GAAKz3B,KAE1DqgC,GAAargC,IAAM,CAAC,MAAO,KAAK7B,QAAQ0gC,GAAqB7N,GAAUhxB,MAAQ,GAClFwgC,GAAuBxgC,GAGzBu0B,GAAa5qB,EAAI2qB,GAAa3qB,EAAIg3B,EAAEC,QACpCrM,GAAa7d,EAAI4d,GAAa5d,EAAIiqB,EAAE3nB,QAChCkU,KACFkH,GAAgByJ,WAAW38B,GAAUL,MAAM0uB,IAAe7lB,QAAQ8lB,GAAiB,KACnF2H,GAAcj2B,GAAW,OAI7B,SAASkxB,GAAWpyB,GAClB,GAAIw0B,GAAU,CACZ,IAAImM,EAAI/P,GAAS5wB,GACjBu0B,GAAa5qB,EAAIg3B,EAAEC,QACnBrM,GAAa7d,EAAIiqB,EAAE3nB,QAEfkU,GACGmH,KAAYA,GAAW,aAAI,YAUtC,SAASwM,EAAW7gC,GAClB,IAAKgwB,GAEH,YADAwE,IAAW,GAGb,YAAIH,IACAG,KAAYH,GAAW,aAAI,WAAYwM,EAAU7gC,OAEvB,MAA1BgwB,KAAiCA,GAAwB0Q,MAC7D,GAAI1Q,GAAuB,EACpBkD,IAAiBmN,GAAargC,KAAMkzB,IAAgB,GAEzD,IACMlzB,EAAEH,MAAQqwB,GAAO5U,KAAK+kB,GAAargC,GAAK,YAAc,WAAYy3B,GAAKz3B,IAC3E,MAAMmI,IAER,IAAIwB,EAAIyqB,GACJ0M,EAAOrM,GAAQF,GAAcD,IACjC,IAAK/G,IAAcnE,IAAc7lB,GAC/BoG,GAAKm3B,EACLn3B,GAAK,UAGLA,GADkB2iB,EAAYwU,EAAO39B,GAAQ,MAAQqrB,GAAWtF,IAAUgG,IAAuB,IAAP4R,GAActS,GAAWtF,IAEnHvf,GAAK,IAGPzI,GAAUL,MAAM0uB,IAAiBC,GAAkB7lB,EAAI8lB,IArCToR,CAAU7gC,QAExB,MAA1BgwB,KAAiCA,GAAwB0Q,MACzD1Q,KAAyBkD,IAAgB,IAG3CA,IAAiBlzB,EAAEgY,kBAmC3B,SAASqa,GAAUryB,GACjB,GAAIw0B,GAAU,CACRH,KACF,YAAIA,IACJA,GAAW,MAETnH,IAAYiK,GAAcj2B,GAAW,IACzCszB,IAAW,EAEX,IAAImM,EAAI/P,GAAS5wB,GACjBu0B,GAAa5qB,EAAIg3B,EAAEC,QACnBrM,GAAa7d,EAAIiqB,EAAE3nB,QACnB,IAAI8nB,EAAOrM,GAAQF,GAAcD,IAEjC,GAAI72B,KAAKqZ,IAAIgqB,GAAO,CAElB,IAAKT,GAAargC,GAAI,CAEpB,IAAI7C,EAAS6zB,GAAUhxB,GACvB,YAAU7C,EAAQ,CAAC,MAAS,SAAS4jC,EAAc/gC,GACjDwgC,GAAuBxgC,GACvB,YAAa7C,EAAQ,CAAC,MAAS4jC,OAI/B7T,GACFmH,GAAW,aAAI,WACb,GAAI9G,KAAehqB,GAAW,CAC5B,IAAIy9B,GAAeF,EAAO39B,IAASqrB,GAAWtF,IAC9C8X,EAAaF,EAAO,EAAIrjC,KAAKuZ,MAAMgqB,GAAcvjC,KAAKsxB,KAAKiS,GAC3Dl/B,IAASk/B,MACJ,CACL,IAAIC,IAAW7M,GAAgB0M,GAC/B,GAAIG,GAAS,EACXn/B,GAAQ+tB,QACH,GAAIoR,GAAS/S,GAAegB,GAAgB,GACjDptB,GAAQiuB,QAGR,IADA,IAAIx1B,EAAI,EACDA,EAAI20B,IAAiB+R,GAAS/S,GAAe3zB,IAClDuH,GAAQvH,EACJ0mC,EAAQ/S,GAAe3zB,IAAMumC,EAAO,IAAKh/B,IAAS,GACtDvH,IAKNmI,GAAO1C,EAAG8gC,GACV5Q,GAAO5U,KAAK+kB,GAAargC,GAAK,WAAa,UAAWy3B,GAAKz3B,OAGzDgwB,IACFW,GAAgB3wB,EAAG8gC,EAAO,GAAK,EAAI,IAON,SAAjC7gC,EAAQqrB,uBAAmC4H,IAAgB,GAC3D/H,KAAc6E,GAAwB,KACtChG,KAAasH,IAAaO,KAKhC,SAASyF,MACEjK,IAAgCI,IACtC5sB,MAAMuV,OAAS8X,GAAepsB,GAAQqB,IAAS+qB,GAAepsB,IAAS,KAG5E,SAAS2xB,KACP,IAAIyN,EAAQ9X,IAAcA,GAAaF,IAAUplB,GAAa0qB,GAAW1qB,GAAaX,GACtF,OAAO1F,KAAKgZ,IAAIhZ,KAAKsxB,KAAKmS,GAAQp9B,IAQpC,SAASk3B,KACP,GAAK33B,KAAOymB,IAERsH,KAAUsC,GAAa,CACzB,IAAIjd,EAAMid,GACNh2B,EAAM0zB,GACN9uB,EAAK,IAQT,IANIoxB,GAActC,KAChB3a,EAAM2a,GACN1zB,EAAMg2B,GACNpxB,EAAK,KAGAmU,EAAM/Y,GACX4E,EAAGqkB,GAASlQ,IACZA,IAIFid,GAActC,IAIlB,SAASqG,GAAMz3B,GACb,MAAO,CACLkB,UAAWA,GACX2sB,WAAYA,GACZhE,aAAcA,GACdlD,SAAUA,GACV+C,kBAAmBA,GACnB6I,YAAaA,GACb5I,WAAYA,GACZ7mB,WAAYA,GACZK,MAAOA,GACPmmB,QAASA,GACTsF,WAAYA,GACZ9qB,WAAYA,GACZorB,cAAeA,GACfptB,MAAOA,GACP8tB,YAAaA,GACb/rB,aAAcisB,KACduB,gBAAiBA,GACjBuC,sBAAuBA,GACvBxC,MAAOA,GACPsC,YAAaA,GACb5sB,MAAOA,GACPknB,KAAMA,GACN/wB,MAAO+C,GAAK,IAz+EV8sB,IAAsBxlB,EAAQS,KAAK,qBAAsB9H,EAAQiB,c,kDCtKlE,SAASigC,IACd,IAAI1+B,EAAK5E,OAAOujC,MAGhB,OAFAvjC,OAAOujC,MAAS3+B,EAASA,EAAK,EAAT,EAEd,MAAQ5E,OAAOujC,MAJxB,mC,gCCAA,8DAOO,SAASC,IACd,IAAI1uB,EAAMtV,SACN+C,EAAO,cACP0S,EAAc,YAAY1S,GAC1B+4B,EAAMxmB,EAAIlM,cAAc,OACxB6nB,GAAS,EAEbluB,EAAK6S,YAAYkmB,GACjB,IAIE,IAHA,IAEI7sB,EAFA3F,EAAM,cACN26B,EAAO,CAAC,OAAS36B,EAAK,YAAcA,EAAK,eAAiBA,GAErDpM,EAAI,EAAGA,EAAI,EAAGA,IAGrB,GAFA+R,EAAMg1B,EAAK/mC,GACX4+B,EAAIt4B,MAAMq1B,MAAQ5pB,EACM,MAApB6sB,EAAI18B,YAAqB,CAC3B6xB,EAAShiB,EAAI5C,QAAQ/C,EAAK,IAC1B,OAGJ,MAAO3G,IAIT,OAFAI,EAAKwS,KAAO,YAAcxS,EAAM0S,GAAeqmB,EAAIx3B,SAE5C2sB,I,gCC/BT,8DAMO,SAASiT,IAEd,IAQIC,EARA7uB,EAAMtV,SACN+C,EAAO,cACP0S,EAAc,YAAY1S,GAC1BqhC,EAAU9uB,EAAIlM,cAAc,OAC5Bi7B,EAAQ/uB,EAAIlM,cAAc,OAC1BE,EAAM,GAKV86B,EAAQ76B,UAAY,cACpB86B,EAAM96B,UAAY,WAElB,IAAK,IAAIrM,EAAI,EAAGA,EAPJ,GAOeA,IACzBoM,GAAO,cAWT,OARA+6B,EAAM7Z,UAAYlhB,EAClB86B,EAAQxuB,YAAYyuB,GACpBthC,EAAK6S,YAAYwuB,GAEjBD,EAAY/jC,KAAKqZ,IAAI2qB,EAAQta,wBAAwBkO,KAAOqM,EAAMz9B,SAAS09B,IAAiBxa,wBAAwBkO,MAAQ,EAE5Hj1B,EAAKwS,KAAO,YAAcxS,EAAM0S,GAAe2uB,EAAQ9/B,SAEhD6/B,I,gCCjCT,8DAIO,SAASI,IACd,IAMIha,EANAjV,EAAMtV,SACN+C,EAAO,cACP0S,EAAc,YAAY1S,GAC1B+4B,EAAMxmB,EAAIlM,cAAc,OACxB5F,EAAQ8R,EAAIlM,cAAc,SAC1Bo7B,EAAO,kEAmBX,OAhBAhhC,EAAMhB,KAAO,WACbs5B,EAAIvyB,UAAY,cAEhBxG,EAAK6S,YAAYpS,GACjBT,EAAK6S,YAAYkmB,GAEbt4B,EAAMihC,WACRjhC,EAAMihC,WAAW7L,QAAU4L,EAE3BhhC,EAAMoS,YAAYN,EAAIovB,eAAeF,IAGvCja,EAAW/pB,OAAOsY,iBAAmBtY,OAAOsY,iBAAiBgjB,GAAKvR,SAAWuR,EAAIlX,aAAuB,SAExG7hB,EAAKwS,KAAO,YAAcxS,EAAM0S,GAAeqmB,EAAIx3B,SAE/B,aAAbimB,I,gCC5BF,SAASoa,EAAkBC,GAEhC,IAAIphC,EAAQxD,SAASoJ,cAAc,SAcnC,OARIw7B,GAASphC,EAAMqU,aAAa,QAAS+sB,GAMzC5kC,SAAS2F,cAAc,QAAQiQ,YAAYpS,GAEpCA,EAAMiG,MAAQjG,EAAMiG,MAAQjG,EAAMihC,WAjB3C,mC,gCCAA,wCAEO,SAASI,EAAcp7B,EAAOhF,GAEjC,eAAgBgF,EACdA,EAAMq7B,WAAWrgC,GACjBgF,EAAMs7B,WAAWtgC,K,gCCNhB,SAASugC,EAAU3rB,EAAG/M,GAC3B,OAAOlM,KAAK6kC,MAAM5rB,EAAG/M,IAAM,IAAMlM,KAAK8kC,IADxC,mC,+BCAA,8CACIC,EAAc,IACd,SAAU7hC,EAAIgG,GACR,YAAShG,EAAKgG,IAAQhG,EAAGxB,UAAUwC,OAAOgF,IAEhD,SAAUhG,EAAIgG,GACR,YAAShG,EAAIgG,KAAQhG,EAAGiG,UAAYjG,EAAGiG,UAAU8C,QAAQ/C,EAAK,O,gCCNjE,SAAS87B,EAAkBC,EAAO9D,GACvC,IAAI+D,GAAY,EACZ3J,EAAMv7B,KAAKqZ,IAAI,GAAKrZ,KAAKqZ,IAAI4rB,IAQjC,OANI1J,GAAO,GAAK4F,EACd+D,EAAY,aACH3J,GAAO4F,IAChB+D,EAAY,YAGPA,EAVT,mC,gCCAA,8DAIO,SAASC,EAAgBC,GAC9B,IAAKA,EAAM,OAAO,EAClB,IAAKhlC,OAAOsY,iBAAoB,OAAO,EAEvC,IAII2sB,EAJAnwB,EAAMtV,SACN+C,EAAO,cACP0S,EAAc,YAAY1S,GAC1BO,EAAKgS,EAAIlM,cAAc,KAEvBs8B,EAAQF,EAAGjmC,OAAS,EAAI,IAAMimC,EAAGt7B,MAAM,GAAI,GAAGqQ,cAAgB,IAAM,GAYxE,OAVAmrB,GAAS,YAGT3iC,EAAKu0B,aAAah0B,EAAI,MAEtBA,EAAGE,MAAMgiC,GAAM,2BACfC,EAAQjlC,OAAOsY,iBAAiBxV,GAAIqiC,iBAAiBD,GAErD3iC,EAAKwS,KAAO,YAAcxS,EAAM0S,GAAenS,EAAGgB,cAEhCqD,IAAV89B,GAAuBA,EAAMlmC,OAAS,GAAe,SAAVkmC,I,gCCzB9C,SAASG,IACd,MAAO,CACLC,OAAQ,GACRloB,GAAI,SAAUmoB,EAAW7gC,GACvB+H,KAAK64B,OAAOC,GAAa94B,KAAK64B,OAAOC,IAAc,GACnD94B,KAAK64B,OAAOC,GAAW95B,KAAK/G,IAE9B6Y,IAAK,SAASgoB,EAAW7gC,GACvB,GAAI+H,KAAK64B,OAAOC,GACd,IAAK,IAAI5oC,EAAI,EAAGA,EAAI8P,KAAK64B,OAAOC,GAAWvmC,OAAQrC,IACjD,GAAI8P,KAAK64B,OAAOC,GAAW5oC,KAAO+H,EAAI,CACpC+H,KAAK64B,OAAOC,GAAWlF,OAAO1jC,EAAG,GACjC,QAKR+gB,KAAM,SAAU6nB,EAAWC,GACzBA,EAAKvjC,KAAOsjC,EACR94B,KAAK64B,OAAOC,IACd94B,KAAK64B,OAAOC,GAAW5hC,SAAQ,SAASe,GACtCA,EAAG8gC,EAAMD,QArBnB,mC,gCCAO,SAASE,EAAYvmC,EAASkf,EAAMK,EAAQinB,EAASvhB,EAAI7Z,EAAUnL,GACxE,IAAIwmC,EAAO9lC,KAAKgZ,IAAIvO,EAAU,IAC1Bs7B,EAAQzhB,EAAG5jB,QAAQ,MAAQ,EAAK,IAAM,KAEtCka,GADA0J,EAAKA,EAAGrY,QAAQ85B,EAAM,IACf55B,OAAO9M,EAAQ+D,MAAMmb,GAAMtS,QAAQ2S,EAAQ,IAAI3S,QAAQ45B,EAAS,IAAI55B,QAAQ85B,EAAM,MACzFC,GAAgB1hB,EAAK1J,GAAQnQ,EAAWq7B,EAG5Ch9B,YACA,SAASm9B,IACPx7B,GAAYq7B,EACZlrB,GAAQorB,EACR3mC,EAAQ+D,MAAMmb,GAAQK,EAAShE,EAAOmrB,EAAOF,EACzCp7B,EAAW,EACb3B,WAAWm9B,EAAaH,GAExBxmC,MARoBwmC,GAR1B,mC,gCCAA,IAAMj/B,EAAS,CACbzE,KAAM,OACN8jC,OAAQ,uCACRC,YAAa,gCACbxxB,OAAQ,CACNyxB,OAAQ,IACRC,MAAO,GAETC,SAAU,SAAAxpC,GAAC,8IAEqCA,EAAEypC,WAFvC,+DAGiCzpC,EAAE6F,KAHnC,wGAIyE7F,EAAEypC,WAJ3E,yEAK2CzpC,EAAE0pC,WAL7C,iCAQX5hC,QAAQ,EACR6hC,aAAc,WACZ,IAAM7hC,EAAShF,SAAS2F,cAAc,+CAElCX,GACFA,EAAOV,WAKE2C,O,kBC1BgLzG,OAA9HvD,EAAOD,QAAiJ,SAAS2F,GAAG,IAAIvE,EAAE,GAAG,SAASO,EAAEhB,GAAG,GAAGS,EAAET,GAAG,OAAOS,EAAET,GAAGX,QAAQ,IAAIgB,EAAEI,EAAET,GAAG,CAACT,EAAES,EAAER,GAAE,EAAGH,QAAQ,IAAI,OAAO2F,EAAEhF,GAAGN,KAAKW,EAAEhB,QAAQgB,EAAEA,EAAEhB,QAAQ2B,GAAGX,EAAEb,GAAE,EAAGa,EAAEhB,QAAQ,OAAO2B,EAAErB,EAAEqF,EAAEhE,EAAEpB,EAAEa,EAAEO,EAAEnB,EAAE,SAASmF,EAAEvE,EAAET,GAAGgB,EAAEhB,EAAEgF,EAAEvE,IAAIR,OAAOC,eAAe8E,EAAEvE,EAAE,CAACN,YAAW,EAAGC,IAAIJ,KAAKgB,EAAEX,EAAE,SAAS2E,GAAG,oBAAoB1E,QAAQA,OAAOC,aAAaN,OAAOC,eAAe8E,EAAE1E,OAAOC,YAAY,CAACC,MAAM,WAAWP,OAAOC,eAAe8E,EAAE,aAAa,CAACxE,OAAM,KAAMQ,EAAEP,EAAE,SAASuE,EAAEvE,GAAG,GAAG,EAAEA,IAAIuE,EAAEhE,EAAEgE,IAAI,EAAEvE,EAAE,OAAOuE,EAAE,GAAG,EAAEvE,GAAG,iBAAiBuE,GAAGA,GAAGA,EAAErE,WAAW,OAAOqE,EAAE,IAAIhF,EAAEC,OAAOY,OAAO,MAAM,GAAGG,EAAEX,EAAEL,GAAGC,OAAOC,eAAeF,EAAE,UAAU,CAACG,YAAW,EAAGK,MAAMwE,IAAI,EAAEvE,GAAG,iBAAiBuE,EAAE,IAAI,IAAI3E,KAAK2E,EAAEhE,EAAEnB,EAAEG,EAAEK,EAAE,SAASI,GAAG,OAAOuE,EAAEvE,IAAIM,KAAK,KAAKV,IAAI,OAAOL,GAAGgB,EAAEA,EAAE,SAASgE,GAAG,IAAIvE,EAAEuE,GAAGA,EAAErE,WAAW,WAAW,OAAOqE,EAAEmkC,SAAS,WAAW,OAAOnkC,GAAG,OAAOhE,EAAEnB,EAAEY,EAAE,IAAIA,GAAGA,GAAGO,EAAEhB,EAAE,SAASgF,EAAEvE,GAAG,OAAOR,OAAOkB,UAAUC,eAAe1B,KAAKsF,EAAEvE,IAAIO,EAAEK,EAAE,GAAGL,EAAEA,EAAEM,EAAE,GAAj5B,CAAq5B,CAAC,SAAS0D,EAAEvE,GAAG,SAASO,EAAEgE,GAAG,OAAOhE,EAAE,mBAAmBV,QAAQ,iBAAiBA,OAAO8oB,SAAS,SAASpkB,GAAG,cAAcA,GAAG,SAASA,GAAG,OAAOA,GAAG,mBAAmB1E,QAAQ0E,EAAE8E,cAAcxJ,QAAQ0E,IAAI1E,OAAOa,UAAU,gBAAgB6D,IAAIA,GAAG,SAAShF,EAAES,GAAG,MAAM,mBAAmBH,QAAQ,WAAWU,EAAEV,OAAO8oB,UAAUpkB,EAAE3F,QAAQW,EAAE,SAASgF,GAAG,OAAOhE,EAAEgE,IAAIA,EAAE3F,QAAQW,EAAE,SAASgF,GAAG,OAAOA,GAAG,mBAAmB1E,QAAQ0E,EAAE8E,cAAcxJ,QAAQ0E,IAAI1E,OAAOa,UAAU,SAASH,EAAEgE,IAAIhF,EAAES,GAAGuE,EAAE3F,QAAQW,GAAG,SAASgF,EAAEvE,EAAEO,GAAGgE,EAAE3F,QAAQ2B,EAAE,IAAI,SAASgE,EAAEvE,EAAEO,KAAK,SAASgE,EAAEvE,EAAEO,GAAG,aAAaA,EAAEX,EAAEI,GAAG,IAAIT,EAAEgB,EAAE,GAAGX,EAAEW,EAAEA,EAAEhB,GAAGT,EAAEsD,OAAOumC,YAAY,iBAAiBvmC,OAAOumC,YAAY,KAAKvmC,OAAOumC,WAAWvmC,OAAOumC,WAAW,GAAGxpC,EAAE,SAASoF,GAAG,IAAIvE,EAAEqM,UAAUlL,OAAO,QAAG,IAASkL,UAAU,GAAGA,UAAU,GAAGzK,SAASgnC,qBAAqB,QAAQ,GAAGroC,IAAI8L,UAAUlL,OAAO,QAAG,IAASkL,UAAU,KAAKA,UAAU,GAAG9M,IAAI8M,UAAUlL,OAAO,QAAG,IAASkL,UAAU,KAAKA,UAAU,GAAG,OAAO,IAAIlG,SAAQ,SAAUvG,EAAET,GAAG,GAAGoF,GAAG,iBAAiBA,EAAE,CAAC,IAAIgW,EAAEzb,EAAE,MAAMse,OAAOte,GAAG,GAAGM,EAAEmF,EAAEgW,EAAE,GAAG3Y,SAAS2F,cAAc,eAAe6V,OAAOhe,EAAE,OAAOQ,QAAQ,CAAC,IAAIqN,EAAErL,SAASoJ,cAAc,UAAUiC,EAAE47B,MAAMtoC,EAAE0M,EAAE67B,MAAMvpC,EAAE,IAAIyY,EAAE,SAASzT,EAAEvE,IAAIA,IAAIiN,EAAE87B,YAAY,kBAAkBjlC,KAAKmJ,EAAE87B,eAAe97B,EAAE+7B,OAAO,KAAK/7B,EAAEg8B,mBAAmB,KAAKh8B,OAAE,EAAOjN,EAAEb,IAAIS,MAAMqN,EAAE+7B,OAAOhxB,EAAE/K,EAAEg8B,mBAAmBjxB,EAAE/K,EAAEqxB,IAAIl/B,EAAEY,EAAEwX,YAAYvK,SAA+R7N,GAAGmB,EAAE,GAAzR,SAASgE,GAAG,IAAIvE,EAAEqM,UAAUlL,OAAO,QAAG,IAASkL,UAAU,GAAGA,UAAU,GAAG,SAAS9H,GAAG,iBAAiBA,IAAI3C,SAAS2F,cAAc,GAAG6V,OAAO7Y,IAAI6nB,UAAU,sCAAsChP,OAAOpd,EAAE,6EAAuFiN,EAAE,SAAS1I,GAAG,IAAIvE,EAAEuE,EAAElD,QAAQd,EAAEgE,EAAEkC,YAAYlH,OAAE,IAASgB,EAAE,IAAIA,EAAEX,EAAE2E,EAAE2kC,eAAepqC,OAAE,IAASc,EAAE,EAAEA,EAAET,EAAEoF,EAAEjD,SAASiZ,OAAE,IAASpb,EAAE,aAAaA,EAAE,GAAGa,GAAG,iBAAiBA,EAAE,CAAC,IAAIZ,EAAEwC,SAASyB,iBAAiBrD,GAAGiN,EAAE,CAACk8B,WAAW,GAAG/rB,OAAO7d,EAAE,WAAW6d,OAAO7d,EAAE,UAAU6pC,UAAUtqC,GAAGkZ,EAAE,IAAIqxB,sBAAqB,SAAU9kC,EAAEvE,GAAGuE,EAAEuB,SAAQ,SAAUvB,GAAGA,EAAE+kC,iBAAiBtpC,EAAEupC,UAAUhlC,EAAE7C,QAAQ6Y,EAAEhW,EAAE7C,cAAcuL,GAAG7N,GAAG,GAAG0M,MAAM7M,KAAKG,GAAG0G,SAAQ,SAAUvB,GAAGyT,EAAEwxB,QAAQjlC,QAAQyT,EAAE,SAASzT,GAAG,IAAIvE,EAAEuE,EAAEoC,WAAWpG,EAAEgE,EAAEqC,OAAOrH,OAAE,IAASgB,GAAGA,EAAEX,EAAE2E,EAAEkE,aAAa3J,OAAE,IAASc,OAAE,EAAOA,EAAE2a,EAAEhW,EAAEoE,eAAesE,OAAE,IAASsN,OAAE,EAAOA,EAAEvC,EAAEzT,EAAEkF,eAAe1K,OAAE,IAASiZ,EAAE,SAASA,EAAEnX,EAAE0D,EAAEsC,GAAGjG,OAAE,IAASC,EAAE,aAAaA,EAAEb,GAAG,iBAAiBA,GAAGb,EAAEa,GAAGwV,MAAK,WAAYjW,GAAGT,GAAG,mBAAmBA,EAAEA,EAAEmO,EAAElO,GAAGQ,GAAGH,EAAE6N,EAAElO,GAAG6B,OAAO6oC,OAAM,SAAUllC,GAAG,MAAM,IAAIO,MAAMP,OAAOhE,EAAEnB,EAAEY,EAAE,eAAc,WAAY,OAAOb,KAAKoB,EAAEnB,EAAEY,EAAE,aAAY,WAAY,OAAOZ,KAAKmB,EAAEnB,EAAEY,EAAE,kBAAiB,WAAY,OAAOiN,KAAK1M,EAAEnB,EAAEY,EAAE,aAAY,WAAY,OAAOgY,KAAK5V,OAAOsnC,QAAQ,YAAY,oBAAoBA,QAAQ,YAAY9pC,IAAI8pC,UAAUA,QAAQ,GAAGtnC,OAAOsnC,QAAQC,MAAM,CAACC,YAAYzqC,EAAE8sB,UAAU7sB,EAAEoH,eAAeyG,EAAEvG,UAAUsR,O,gCCGx2H,IA8CesU,EA9CG,SAAC,GAKb,QAJJC,qBAII,MAJY,mBAIZ,MAHJsd,uBAGI,MAHc,4BAGd,MAFJC,8BAEI,MAFqB,yBAErB,MADJC,uBACI,MADc,4BACd,EACEriC,EAAQ9F,SAASyB,iBAAiBkpB,GAGxC,SAASyd,EAAgBjkC,GAAM,WAC7B6I,KAAKvN,QAAU0E,EACf6I,KAAKq7B,QAAUr7B,KAAKvN,QAAQkG,cAAcsiC,GAC1Cj7B,KAAKs7B,cAAgBt7B,KAAKvN,QAAQkG,cAAcwiC,GAAiB9oC,aAEjE2N,KAAK7L,KAAO,WACV,EAAK1B,QAAQqC,UAAUC,IAAI,QAC3B,EAAKtC,QAAQkG,cAAcuiC,GAAwB1kC,MAAMuV,OAAzD,UAAqE,EAAKuvB,cAA1E,OAGFt7B,KAAKqY,MAAQ,WACX,EAAK5lB,QAAQqC,UAAUwC,OAAO,QAC9B,EAAK7E,QAAQkG,cAAcuiC,GAAwB1kC,MAAMuV,OAAS,OAGpE/L,KAAKkQ,IAAM,WACT,EAAKmI,QACL,EAAKgjB,QAAQnoC,iBACX,SACA,WACM,EAAKT,QAAQqC,UAAUjC,SAAS,QAClC,EAAKwlB,QAEL,EAAKlkB,UAGT,IA5BD2E,GAiCL,GAAGoE,MAAM7M,KAAKyI,GAAO5B,SAAQ,SAAAC,GACP,IAAIikC,EAAgBjkC,GAC5B+Y,U,OC1CDwN,O,+BCHf,8CAEO,SAAS6d,EAASn0B,EAAKC,GAE5B,GADAD,EAAO,YAAWA,IAAQA,aAAejK,MAASiK,EAAM,CAACA,GACX,oBAA1CxW,OAAOkB,UAAU2Q,SAASpS,KAAKgX,GAEnC,IAAK,IAAInX,EAAIkX,EAAI7U,OAAQrC,KACvB,IAAI,IAAIuB,KAAO4V,EACbD,EAAIlX,GAAG2a,aAAapZ,EAAK4V,EAAM5V,M,iBCPhCb,OAAO4J,OACV5J,OAAO4J,KAAO,SAAS5I,GACrB,IAAI4I,EAAO,GACX,IAAK,IAAI/J,KAAQmB,EACXhB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQnB,IAC/C+J,EAAKwE,KAAKvO,GAGd,OAAO+J,K,iBCRN,WAAYsO,QAAQhX,YACvBgX,QAAQhX,UAAUwF,OAAS,WACtB0I,KAAKsY,YACNtY,KAAKsY,WAAWC,YAAYvY,S","file":"js/home.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 439);\n","/**\n *\n * @param elem\n * @returns {boolean}\n */\nconst isVisible = elem =>\n !!elem && !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\n\nexport default isVisible;\n","import isVisible from './isVisible';\n\n/**\n *\n * @param element\n * @param callback\n */\nconst clickOutside = (element, callback) => {\n const outsideClickListener = event => {\n if (!element.contains(event.target) && isVisible(element)) {\n callback();\n // eslint-disable-next-line no-use-before-define\n removeClickListener();\n }\n };\n\n const removeClickListener = () => {\n document.removeEventListener('click', outsideClickListener);\n };\n\n document.addEventListener('click', outsideClickListener);\n};\n\nexport default clickOutside;\n","/**\n *\n * @returns {number}\n */\nconst getViewportHeight = () =>\n Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n\nexport default getViewportHeight;\n","/**\n *\n * @returns {boolean}\n */\nconst isIEcheck = () => {\n const ua = navigator.userAgent;\n /* MSIE used to detect old browsers and Trident used to newer ones */\n const isEI = ua.indexOf('MSIE ') > -1 || ua.indexOf('Trident/') > -1;\n\n return isEI;\n};\n\nexport default isIEcheck;\n","/**\n *\n * @returns {boolean}\n */\nconst isMobile = () => window.innerWidth < 1024;\n\nexport default isMobile;\n","/**\n *\n * @param url\n */\nconst openInNewTab = url => {\n const win = window.open(url, '_blank');\n win.focus();\n};\n\nexport default openInNewTab;\n","/**\n *\n * @param anchorSelector\n * @param activeClass\n */\nconst addActiveLinkClass = ({ anchorSelector = 'a', activeClass = 'active' }) => {\n const anchors = document.querySelectorAll(anchorSelector);\n if (!anchors) return;\n\n const current = window.location.pathname;\n\n for (let i = 0; i < anchors.length; i += 1) {\n if (\n anchors[i].getAttribute('href') === current ||\n anchors[i].getAttribute('data-href') === current\n ) {\n anchors[i].classList.add(activeClass);\n }\n }\n};\n\nexport default addActiveLinkClass;\n","const isiOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n\nexport default isiOS;\n","const checkFetchStatus = response => {\n if (!response.ok) {\n throw response.status;\n }\n return response.json();\n};\n\nexport default checkFetchStatus;\n","export default type => {\n const test = '__storageTest__';\n try {\n window[type].setItem(test, test);\n window[type].removeItem(test);\n return true;\n } catch (e) {\n return false;\n }\n};\n","export default async (url, options = {}) => {\n const { method = 'GET', headers, body = null, credentials = 'omit' } = options;\n\n try {\n const response = await fetch(url, {\n method,\n headers,\n body,\n credentials: credentials !== 'omit' ? 'include' : 'omit',\n });\n\n if (!response.ok) {\n throw new Error('Bad request');\n }\n\n return {\n json: () => response.json(),\n text: () => response.text(),\n };\n } catch (error) {\n throw new Error(`Request failed: ${error.message}`);\n }\n};\n","export function hideElement(el, forceHide) {\n if (el.style.display !== 'none') { el.style.display = 'none'; }\n}","import './index.scss';\n\n/**\n *\n * Using tabsInit\n *\n * observeElement({\n * element: '[data-tabs]',\n * marginValue: 400,\n * callback: () => {\n * const tabs = document.querySelectorAll('[data-tabs]');\n * tabs.forEach((tab) => {\n * tabsInit({ selector: tab });\n * });\n * },\n * });\n */\n\nexport default function tabsInit({ selector = '', startPaneIndex = 0 }) {\n const container = selector || document;\n const tabNavNodes = container.querySelectorAll('[data-tab-name]');\n const tabContentNodes = container.querySelectorAll('[data-tab-content]');\n\n if (!tabContentNodes && !tabNavNodes) return;\n\n const selectTabContent = tab => {\n tabContentNodes.forEach(item => {\n const {\n dataset: { tabContent },\n classList,\n } = item;\n\n if (tab === tabContent) {\n classList.add('is-active');\n } else {\n classList.remove('is-active');\n }\n });\n };\n\n const selectTabNav = tab => {\n tabNavNodes.forEach(item => item.classList.remove('is-active'));\n tab.classList.add('is-active');\n selectTabContent(tab.dataset.tabName);\n };\n\n if (tabNavNodes[startPaneIndex]) {\n tabNavNodes[startPaneIndex].classList.add('is-active');\n selectTabContent(tabContentNodes[startPaneIndex].dataset.tabContent);\n }\n\n // eslint-disable-next-line consistent-return\n return new Promise(resolve => {\n tabNavNodes.forEach((item, index) =>\n item.addEventListener('click', () => selectTabNav(tabNavNodes[index])),\n );\n resolve(true);\n });\n}\n","export function showElement(el, forceHide) {\n if (el.style.display === 'none') { el.style.display = ''; }\n}","import { observeElement, getWidget } from '@uvocore-front/utils';\n\nconst siteJabberInit = () => {\n observeElement({\n element: '#reviewCarouselWidget',\n marginValue: 300,\n callback: () => {\n getWidget({\n widgetLink: '//static.sitejabber.com/js/widget.min.1644963448.js',\n loader: false,\n fn: () => {\n // eslint-disable-next-line\n new STJR.ReviewCarouselWidget({\n id: 'reviewCarouselWidget',\n url: 'copycrafter.net',\n }).render();\n },\n });\n },\n });\n};\n\nexport default siteJabberInit;\n","import { observeElement, getWidget } from '@uvocore-front/utils';\nimport { tns } from 'tiny-slider/src/tiny-slider';\nimport 'tiny-slider/src/tiny-slider.scss';\nimport Loader from '../UI/loader';\nimport './styles.scss';\nimport config from './config';\nimport siteJabberInit from './sitejabber';\n\nsiteJabberInit();\n\nconst TestimonialsInit = () => {\n const testimonials = document.querySelector('[data-testimonials]');\n const sliderContainer = testimonials.querySelector('[data-testimonials-container]');\n const nextButton = testimonials.querySelector('.testimonials__btn-next');\n\n const initSlider = () => {\n if (sliderContainer) {\n const slider = tns({\n container: sliderContainer,\n items: 3,\n loop: false,\n nav: false,\n controls: false,\n autoWidth: true,\n mouseDrag: true,\n useLocalStorage: false,\n onInit: () => {\n if (!nextButton) return;\n\n nextButton.classList.add('testimonials__btn-next--visible');\n nextButton.addEventListener('click', () => {\n const state = slider.getInfo();\n\n if (state.displayIndex + 1 >= state.slideCount) {\n slider.goTo('first');\n } else {\n slider.goTo('next');\n }\n });\n },\n });\n\n window.addEventListener('resize', () => {\n slider.rebuild();\n });\n }\n };\n\n observeElement({\n element: '[data-testimonials]',\n marginValue: 300,\n callback: () => {\n if (!sliderContainer.children.length) {\n getWidget({\n widgetLink: '/assets/js/testimonialsWidget.min.js',\n customLoader: Loader,\n insertLoaderTo: '[data-testimonials-container]',\n fn: () => {\n window.tmWidget({ ...config, callbackLoaded: initSlider });\n },\n });\n } else {\n initSlider();\n }\n },\n });\n};\n\nif (document.querySelector('[data-testimonials]')) {\n TestimonialsInit();\n}\n","export function checkStorageValue (value) {\n return ['true', 'false'].indexOf(value) >= 0 ? JSON.parse(value) : value;\n}","import { observeElement, getWidget } from '@uvocore-front/utils';\n\nimport Loader from '../../UI/loader';\nimport './style.scss';\n\nwindow.addEventListener('DOMContentLoaded', () => {\n /**\n * Calculator\n */\n const isPageConfig =\n window.pageConfig &&\n Object.keys(window.pageConfig).length > 0 &&\n window.pageConfig.constructor === Object;\n const pageCalculatorConfig =\n isPageConfig && window.pageConfig.calculator !== undefined\n ? window.pageConfig.calculator\n : undefined;\n\n // Calculator Observer\n if (document.querySelector('[data-calculator-default]')) {\n observeElement({\n element: '[data-calculator-default]',\n marginValue: 400,\n callback: () => {\n getWidget({\n widgetLink: '/assets/js/calc.js',\n customLoader: Loader,\n insertLoaderTo: '[data-calculator-default]',\n loaderPosition: 'center',\n fn: () => {\n const pagePaperType =\n isPageConfig &&\n window.pageConfig.calculator !== undefined &&\n window.pageConfig.calculator.pagePaperType\n ? window.pageConfig.calculator.pagePaperType\n : undefined;\n\n const calcOptions = {\n ID: '113',\n calculatorType: 'DefaultCalculator',\n format: 'html',\n options: {\n deafault: {\n academicLevelDefault: 2,\n paperTypesDefault: 2,\n deadlinesDefault: [93073],\n ...pageCalculatorConfig,\n },\n },\n };\n\n if (pagePaperType !== undefined) {\n calcOptions.options.deafault.paperTypesDefault = pagePaperType;\n }\n\n const calc = new Calc(calcOptions); /* eslint-disable-line */\n },\n });\n },\n });\n }\n});\n","export function setLocalStorage(storage, key, value, access) {\n if (access) {\n try { storage.setItem(key, value); } catch (e) {}\n }\n return value;\n}","var win = window;\n\nexport var raf = win.requestAnimationFrame\n || win.webkitRequestAnimationFrame\n || win.mozRequestAnimationFrame\n || win.msRequestAnimationFrame\n || function(cb) { return setTimeout(cb, 16); };\n","export var classListSupport = 'classList' in document.createElement('_');","import { classListSupport } from './classListSupport.js';\n\nvar hasClass = classListSupport ?\n function (el, str) { return el.classList.contains(str); } :\n function (el, str) { return el.className.indexOf(str) >= 0; };\n\nexport { classListSupport, hasClass };","export function getCssRulesLength(sheet) {\n var rule = ('insertRule' in sheet) ? sheet.cssRules : sheet.rules;\n return rule.length;\n}","/*global window, global*/\nvar util = require(\"util\")\nvar assert = require(\"assert\")\nfunction now() { return new Date().getTime() }\n\nvar slice = Array.prototype.slice\nvar console\nvar times = {}\n\nif (typeof global !== \"undefined\" && global.console) {\n console = global.console\n} else if (typeof window !== \"undefined\" && window.console) {\n console = window.console\n} else {\n console = {}\n}\n\nvar functions = [\n [log, \"log\"],\n [info, \"info\"],\n [warn, \"warn\"],\n [error, \"error\"],\n [time, \"time\"],\n [timeEnd, \"timeEnd\"],\n [trace, \"trace\"],\n [dir, \"dir\"],\n [consoleAssert, \"assert\"]\n]\n\nfor (var i = 0; i < functions.length; i++) {\n var tuple = functions[i]\n var f = tuple[0]\n var name = tuple[1]\n\n if (!console[name]) {\n console[name] = f\n }\n}\n\nmodule.exports = console\n\nfunction log() {}\n\nfunction info() {\n console.log.apply(console, arguments)\n}\n\nfunction warn() {\n console.log.apply(console, arguments)\n}\n\nfunction error() {\n console.warn.apply(console, arguments)\n}\n\nfunction time(label) {\n times[label] = now()\n}\n\nfunction timeEnd(label) {\n var time = times[label]\n if (!time) {\n throw new Error(\"No such label: \" + label)\n }\n\n delete times[label]\n var duration = now() - time\n console.log(label + \": \" + duration + \"ms\")\n}\n\nfunction trace() {\n var err = new Error()\n err.name = \"Trace\"\n err.message = util.format.apply(null, arguments)\n console.error(err.stack)\n}\n\nfunction dir(object) {\n console.log(util.inspect(object) + \"\\n\")\n}\n\nfunction consoleAssert(expression) {\n if (!expression) {\n var arr = slice.call(arguments, 1)\n assert.ok(false, util.format.apply(null, arr))\n }\n}\n","// cross browsers addRule method\nimport { raf } from './raf.js';\nexport function addCSSRule(sheet, selector, rules, index) {\n // return raf(function() {\n 'insertRule' in sheet ?\n sheet.insertRule(selector + '{' + rules + '}', index) :\n sheet.addRule(selector, rules, index);\n // });\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","import { passiveOption } from './passiveOption.js';\n\nexport function addEvents(el, obj, preventScrolling) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 && !preventScrolling ? passiveOption : false;\n el.addEventListener(prop, obj[prop], option);\n }\n}","// https://toddmotto.com/ditch-the-array-foreach-call-nodelist-hack/\nexport function forEach (arr, callback, scope) {\n for (var i = 0, l = arr.length; i < l; i++) {\n callback.call(scope, arr[i], i);\n }\n}","import { isNodeList } from \"./isNodeList.js\";\n\nexport function removeAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n attrs = (attrs instanceof Array) ? attrs : [attrs];\n\n var attrLength = attrs.length;\n for (var i = els.length; i--;) {\n for (var j = attrLength; j--;) {\n els[i].removeAttribute(attrs[j]);\n }\n }\n}","\nvar NativeCustomEvent = global.CustomEvent;\n\nfunction useNative () {\n try {\n var p = new NativeCustomEvent('cat', { detail: { foo: 'bar' } });\n return 'cat' === p.type && 'bar' === p.detail.foo;\n } catch (e) {\n }\n return false;\n}\n\n/**\n * Cross-browser `CustomEvent` constructor.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent\n *\n * @public\n */\n\nmodule.exports = useNative() ? NativeCustomEvent :\n\n// IE >= 9\n'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent (type, params) {\n var e = document.createEvent('CustomEvent');\n if (params) {\n e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);\n } else {\n e.initCustomEvent(type, false, false, void 0);\n }\n return e;\n} :\n\n// IE <= 8\nfunction CustomEvent (type, params) {\n var e = document.createEventObject();\n e.type = type;\n if (params) {\n e.bubbles = Boolean(params.bubbles);\n e.cancelable = Boolean(params.cancelable);\n e.detail = params.detail;\n } else {\n e.bubbles = false;\n e.cancelable = false;\n e.detail = void 0;\n }\n return e;\n}\n","export function getBody () {\n var doc = document,\n body = doc.body;\n\n if (!body) {\n body = doc.createElement('body');\n body.fake = true;\n }\n\n return body;\n}","import { docElement } from './docElement.js';\n\nexport function setFakeBody (body) {\n var docOverflow = '';\n if (body.fake) {\n docOverflow = docElement.style.overflow;\n //avoid crashing IE8, if background image is used\n body.style.background = '';\n //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\n body.style.overflow = docElement.style.overflow = 'hidden';\n docElement.appendChild(body);\n }\n\n return docOverflow;\n}","import { docElement } from './docElement.js';\n\nexport function resetFakeBody (body, docOverflow) {\n if (body.fake) {\n body.remove();\n docElement.style.overflow = docOverflow;\n // Trigger layout so kinetic scrolling isn't disabled in iOS6+\n // eslint-disable-next-line\n docElement.offsetHeight;\n }\n}","/*! smooth-scroll v16.1.3 | (c) 2020 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/smooth-scroll */\nwindow.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t,n=(this.document||this.ownerDocument).querySelectorAll(e),o=this;do{for(t=n.length;0<=--t&&n.item(t)!==o;);}while(t<0&&(o=o.parentElement));return o}),(function(){if(\"function\"==typeof window.CustomEvent)return;function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent(\"CustomEvent\");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e})(),(function(){for(var r=0,e=[\"ms\",\"moz\",\"webkit\",\"o\"],t=0;to.durationMax?o.durationMax:o.durationMin&&u=v)return C.cancelScroll(!0),x(a,t,c),H(\"scrollStop\",i,a,r),!(O=l=null)})(d,g)||(O=M.requestAnimationFrame(E),l=e)};0===M.pageYOffset&&M.scrollTo(0,0),f=a,h=i,c||history.pushState&&h.updateURL&&history.pushState({smoothScroll:JSON.stringify(h),anchor:f.id},document.title,f===document.documentElement?\"#top\":\"#\"+f.id),\"matchMedia\"in M&&M.matchMedia(\"(prefers-reduced-motion)\").matches?x(a,Math.floor(g),!1):(H(\"scrollStart\",i,a,r),C.cancelScroll(!0),M.requestAnimationFrame(E))}};var t=function(e){if(!e.defaultPrevented&&!(0!==e.button||e.metaKey||e.ctrlKey||e.shiftKey)&&\"closest\"in e.target&&(a=e.target.closest(o))&&\"a\"===a.tagName.toLowerCase()&&!e.target.closest(b.ignore)&&a.hostname===M.location.hostname&&a.pathname===M.location.pathname&&/#/.test(a.href)){var t,n;try{t=r(decodeURIComponent(a.hash))}catch(e){t=r(a.hash)}if(\"#\"===t){if(!b.topOnEmptyHash)return;n=document.documentElement}else n=document.querySelector(t);(n=n||\"#top\"!==t?n:document.documentElement)&&(e.preventDefault(),(function(e){if(history.replaceState&&e.updateURL&&!history.state){var t=M.location.hash;t=t||\"\",history.replaceState({smoothScroll:JSON.stringify(e),anchor:t||M.pageYOffset},document.title,t||M.location.href)}})(b),C.animateScroll(n,a))}},n=function(e){if(null!==history.state&&history.state.smoothScroll&&history.state.smoothScroll===JSON.stringify(b)){var t=history.state.anchor;\"string\"==typeof t&&t&&!(t=document.querySelector(r(history.state.anchor)))||C.animateScroll(t,null,{updateURL:!1})}};C.destroy=function(){b&&(document.removeEventListener(\"click\",t,!1),M.removeEventListener(\"popstate\",n,!1),C.cancelScroll(),O=A=a=b=null)};return (function(){if(!(\"querySelector\"in document&&\"addEventListener\"in M&&\"requestAnimationFrame\"in M&&\"closest\"in M.Element.prototype))throw\"Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.\";C.destroy(),b=I(q,e||{}),A=b.header?document.querySelector(b.header):null,document.addEventListener(\"click\",t,!1),b.updateURL&&b.popstate&&M.addEventListener(\"popstate\",n,!1)})(),C}}));","export var docElement = document.documentElement;","!function(e,t){if(\"function\"==typeof define&&define.amd)define([\"exports\"],t);else if(\"undefined\"!=typeof exports)t(exports);else{var o={};t(o),e.bodyScrollLock=o}}(this,function(exports){\"use strict\";function i(e){if(Array.isArray(e)){for(var t=0,o=Array(e.length);t 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","export function hasAttr(el, attr) {\n return el.hasAttribute(attr);\n}","export function whichProperty(props){\n if (typeof props === 'string') {\n var arr = [props],\n Props = props.charAt(0).toUpperCase() + props.substr(1),\n prefixes = ['Webkit', 'Moz', 'ms', 'O'];\n \n prefixes.forEach(function(prefix) {\n if (prefix !== 'ms' || props === 'transform') {\n arr.push(prefix + Props);\n }\n });\n\n props = arr;\n }\n\n var el = document.createElement('fakeelement'),\n len = props.length;\n for(var i = 0; i < props.length; i++){\n var prop = props[i];\n if( el.style[prop] !== undefined ){ return prop; }\n }\n\n return false; // explicit for ie9-\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","'use strict';\n\nvar objectAssign = require('object-assign');\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n// NB: The URL to the CommonJS spec is kept just for tradition.\n// node-assert has evolved a lot since then, both in API and behavior.\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = require('util/');\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (util.isPrimitive(a) || util.isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\n// Expose a strict only variant of assert\nfunction strict(value, message) {\n if (!value) fail(value, true, message, '==', strict);\n}\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/*! https://mths.be/scrollingelement v1.5.2 by @diegoperini & @mathias | MIT license */\nif (!('scrollingElement' in document)) (function() {\n\n\tfunction computeStyle(element) {\n\t\tif (window.getComputedStyle) {\n\t\t\t// Support Firefox < 4 which throws on a single parameter.\n\t\t\treturn getComputedStyle(element, null);\n\t\t}\n\t\t// Support Internet Explorer < 9.\n\t\treturn element.currentStyle;\n\t}\n\n\tfunction isBodyElement(element) {\n\t\t// The `instanceof` check gives the correct result for e.g. `body` in a\n\t\t// non-HTML namespace.\n\t\tif (window.HTMLBodyElement) {\n\t\t\treturn element instanceof HTMLBodyElement;\n\t\t}\n\t\t// Fall back to a `tagName` check for old browsers.\n\t\treturn /body/i.test(element.tagName);\n\t}\n\n\tfunction getNextBodyElement(frameset) {\n\t\t// We use this function to be correct per spec in case `document.body` is\n\t\t// a `frameset` but there exists a later `body`. Since `document.body` is\n\t\t// a `frameset`, we know the root is an `html`, and there was no `body`\n\t\t// before the `frameset`, so we just need to look at siblings after the\n\t\t// `frameset`.\n\t\tvar current = frameset;\n\t\twhile (current = current.nextSibling) {\n\t\t\tif (current.nodeType == 1 && isBodyElement(current)) {\n\t\t\t\treturn current;\n\t\t\t}\n\t\t}\n\t\t// No `body` found.\n\t\treturn null;\n\t}\n\n\t// Note: standards mode / quirks mode can be toggled at runtime via\n\t// `document.write`.\n\tvar isCompliantCached;\n\tvar isCompliant = function() {\n\t\tvar isStandardsMode = /^CSS1/.test(document.compatMode);\n\t\tif (!isStandardsMode) {\n\t\t\t// In quirks mode, the result is equivalent to the non-compliant\n\t\t\t// standards mode behavior.\n\t\t\treturn false;\n\t\t}\n\t\tif (isCompliantCached === void 0) {\n\t\t\t// When called for the first time, check whether the browser is\n\t\t\t// standard-compliant, and cache the result.\n\t\t\tvar iframe = document.createElement('iframe');\n\t\t\tiframe.style.height = '1px';\n\t\t\t(document.body || document.documentElement || document).appendChild(iframe);\n\t\t\tvar doc = iframe.contentWindow.document;\n\t\t\tdoc.write('
x
');\n\t\t\tdoc.close();\n\t\t\tisCompliantCached = doc.documentElement.scrollHeight > doc.body.scrollHeight;\n\t\t\tiframe.parentNode.removeChild(iframe);\n\t\t}\n\t\treturn isCompliantCached;\n\t};\n\n\tfunction isRendered(style) {\n\t\treturn style.display != 'none' && !(style.visibility == 'collapse' &&\n\t\t\t/^table-(.+-group|row|column)$/.test(style.display));\n\t}\n\n\tfunction isScrollable(body) {\n\t\t// A `body` element is scrollable if `body` and `html` both have\n\t\t// non-`visible` overflow and are both being rendered.\n\t\tvar bodyStyle = computeStyle(body);\n\t\tvar htmlStyle = computeStyle(document.documentElement);\n\t\treturn bodyStyle.overflow != 'visible' && htmlStyle.overflow != 'visible' &&\n\t\t\tisRendered(bodyStyle) && isRendered(htmlStyle);\n\t}\n\n\tvar scrollingElement = function() {\n\t\tif (isCompliant()) {\n\t\t\treturn document.documentElement;\n\t\t}\n\t\tvar body = document.body;\n\t\t// Note: `document.body` could be a `frameset` element, or `null`.\n\t\t// `tagName` is uppercase in HTML, but lowercase in XML.\n\t\tvar isFrameset = body && !/body/i.test(body.tagName);\n\t\tbody = isFrameset ? getNextBodyElement(body) : body;\n\t\t// If `body` is itself scrollable, it is not the `scrollingElement`.\n\t\treturn body && isScrollable(body) ? null : body;\n\t};\n\n\tif (Object.defineProperty) {\n\t\t// Support modern browsers that lack a native implementation.\n\t\tObject.defineProperty(document, 'scrollingElement', {\n\t\t\t'get': scrollingElement\n\t\t});\n\t} else if (document.__defineGetter__) {\n\t\t// Support Firefox ≤ 3.6.9, Safari ≤ 4.1.3.\n\t\tdocument.__defineGetter__('scrollingElement', scrollingElement);\n\t} else {\n\t\t// IE ≤ 4 lacks `attachEvent`, so it only gets this one assignment. IE ≤ 7\n\t\t// gets it too, but the value is updated later (see `propertychange`).\n\t\tdocument.scrollingElement = scrollingElement();\n\t\tdocument.attachEvent && document.attachEvent('onpropertychange', function() {\n\t\t\t// This is for IE ≤ 7 only.\n\t\t\t// A `propertychange` event fires when `` is parsed because\n\t\t\t// `document.activeElement` then changes.\n\t\t\tif (window.event.propertyName == 'activeElement') {\n\t\t\t\tdocument.scrollingElement = scrollingElement();\n\t\t\t}\n\t\t});\n\t}\n}());\n","import { classListSupport, hasClass } from './hasClass.js';\nvar addClass = classListSupport ?\n function (el, str) {\n if (!hasClass(el, str)) { el.classList.add(str); }\n } :\n function (el, str) {\n if (!hasClass(el, str)) { el.className += ' ' + str; }\n };\n\nexport { addClass };","import { openInNewTab } from '../../utils';\n\nfunction pseudoLinksInit() {\n const pseudoLinks = document.querySelectorAll('[data-href]');\n\n Array.from(pseudoLinks).forEach(link => {\n link.addEventListener('click', e => {\n e.preventDefault();\n window.location = link.getAttribute('data-href');\n });\n\n link.addEventListener('mousedown', e => {\n if (e.which === 2) openInNewTab(link.getAttribute('data-href'));\n });\n });\n}\n\nwindow.addEventListener('DOMContentLoaded', () => {\n pseudoLinksInit();\n});\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nvar DisableScroll =\n/*#__PURE__*/\nfunction () {\n function DisableScroll() {\n var _this = this;\n\n _classCallCheck(this, DisableScroll);\n\n _defineProperty(this, \"handleWheel\", function (e) {\n e.preventDefault();\n });\n\n _defineProperty(this, \"handleScroll\", function () {\n var _window;\n\n (_window = window).scrollTo.apply(_window, _toConsumableArray(_this.lockToScrollPos));\n });\n\n _defineProperty(this, \"handleKeydown\", function (e) {\n var keys = _this.options.keyboardKeys;\n /* istanbul ignore else */\n\n if (['INPUT', 'TEXTAREA'].indexOf(e.target.tagName) !== -1) {\n keys = _this.options.authorizedInInputs;\n }\n /* istanbul ignore else */\n\n\n if (keys.indexOf(e.keyCode) !== -1) {\n e.preventDefault();\n }\n });\n\n this.element = null;\n this.lockToScrollPos = [0, 0];\n this.options = {\n disableWheel: true,\n disableScroll: true,\n disableKeys: true,\n keyboardKeys: [32, 33, 34, 35, 36, 37, 38, 39, 40],\n authorizedInInputs: [32, 37, 38, 39, 40] // space: 32, page up: 33, page down: 34, end: 35, home: 36\n // left: 37, up: 38, right: 39, down: 40\n\n };\n /* istanbul ignore else */\n\n if (canUseDOM) {\n require('scrollingelement');\n\n this.element = document.scrollingElement;\n }\n }\n /**\n * Disable Page Scroll\n * @external Node\n *\n * @param {HTMLElement} [element] - DOM Element, usually document.body\n * @param {object} [options] - Change the initial options\n */\n\n\n _createClass(DisableScroll, [{\n key: \"on\",\n value: function on(element, options) {\n if (!canUseDOM) return;\n this.element = element || this.element;\n this.options = _objectSpread({}, this.options, {}, options);\n var _this$options = this.options,\n disableKeys = _this$options.disableKeys,\n disableScroll = _this$options.disableScroll,\n disableWheel = _this$options.disableWheel;\n /* istanbul ignore else */\n\n if (disableWheel) {\n document.addEventListener('wheel', this.handleWheel, {\n passive: false\n });\n document.addEventListener('touchmove', this.handleWheel, {\n passive: false\n });\n }\n /* istanbul ignore else */\n\n\n if (disableScroll) {\n this.lockToScrollPos = [this.element.scrollLeft || this.element.scrollX, this.element.scrollTop || this.element.scrollY];\n document.addEventListener('scroll', this.handleScroll, {\n passive: false\n });\n }\n /* istanbul ignore else */\n\n\n if (disableKeys) {\n document.addEventListener('keydown', this.handleKeydown, {\n passive: false\n });\n }\n }\n /**\n * Re-enable page scrolls\n */\n\n }, {\n key: \"off\",\n value: function off() {\n if (!canUseDOM) return;\n document.removeEventListener('wheel', this.handleWheel, {\n passive: false\n });\n document.removeEventListener('touchmove', this.handleWheel, {\n passive: false\n });\n document.removeEventListener('scroll', this.handleScroll, {\n passive: false\n });\n document.removeEventListener('keydown', this.handleKeydown, {\n passive: false\n });\n }\n }]);\n\n return DisableScroll;\n}();\n\nexport default new DisableScroll();","import { disableBodyScroll, enableBodyScroll, clearAllBodyScrollLocks } from 'body-scroll-lock';\nimport disableScroll from 'disable-scroll';\nimport CustomEvent from 'custom-event';\nimport { isMobile, getViewportHeight, isIEcheck, clickOutside } from '../../utils';\nimport './header-default.scss';\n\n/**\n * Sticky header\n */\nconst stickyHeader = () => {\n const header = document.querySelector('.header');\n\n if (!header) return;\n\n const scrollHandler = () => {\n const topPosition = header.getBoundingClientRect().top;\n\n if (topPosition < 0) {\n if (!header.classList.contains('sticky')) {\n header.classList.add('sticky');\n }\n } else if (header.classList.contains('sticky')) {\n header.classList.remove('sticky');\n }\n };\n\n scrollHandler();\n window.addEventListener('scroll', scrollHandler);\n};\n\n/**\n * Toggle Navigation\n */\n\nfunction ToggleNav() {\n const header = document.querySelector('.header');\n const button = header.querySelector('.header__nav-toggle');\n const nav = header.querySelector('.header__nav');\n const navScrollSpace = header.querySelector('.header__nav-inner');\n\n if (!header || !button || !nav) return;\n\n this.state = {\n isOpen: false,\n };\n this.sel = nav;\n const showEvent = new CustomEvent('show');\n\n const setNavScrollSpaceHeight = () => {\n nav.style.height = `${getViewportHeight() - header.offsetHeight}px`;\n };\n\n this.show = () => {\n if (this.state.isOpen) return;\n\n this.state.isOpen = true;\n\n disableBodyScroll(navScrollSpace);\n\n header.classList.add('nav-is-open');\n setNavScrollSpaceHeight();\n\n window.addEventListener('resize', setNavScrollSpaceHeight);\n\n this.sel.dispatchEvent(showEvent);\n };\n\n this.hide = () => {\n if (!this.state.isOpen) return;\n\n this.state.isOpen = false;\n\n enableBodyScroll(navScrollSpace);\n clearAllBodyScrollLocks();\n\n header.classList.remove('nav-is-open');\n nav.style.height = '';\n\n window.removeEventListener('resize', setNavScrollSpaceHeight);\n };\n\n button.addEventListener(\n 'click',\n () => {\n if (this.state.isOpen) {\n this.hide();\n } else {\n this.show();\n }\n },\n false,\n );\n\n window.addEventListener('orientationchange', this.hide);\n}\n\n/**\n * Toggle SubNavigation\n */\n\nfunction ToggleSubNav() {\n const header = document.querySelector('.header');\n const navScrollSpace = header.querySelector('.header__nav-inner');\n const navItems = header.querySelectorAll('.header__nav-item');\n const subnavMenuItem = header.querySelector('.header__nav-item--subnav');\n const navSimpleItems = Array.prototype.slice\n .call(navItems)\n .filter(item => item !== subnavMenuItem);\n const subnavButton = subnavMenuItem.querySelector('.header__nav-link');\n const subnavBody = subnavMenuItem.querySelector('.header__subnav');\n const subnavScrollSpace = subnavBody.querySelector('.subnav__inner');\n\n if (!subnavMenuItem || !subnavButton || !subnavBody) return;\n\n this.state = {\n isOpen: false,\n scrollEventsPrevented: false,\n };\n\n this.show = () => {\n if (this.state.isOpen) return;\n\n this.state.isOpen = true;\n\n subnavMenuItem.classList.add('is-open');\n\n if (!isMobile()) {\n if (!isIEcheck()) {\n disableScroll.on();\n }\n\n this.scrollEventsPrevented = true;\n clickOutside(subnavBody, this.hide);\n } else {\n disableBodyScroll(subnavScrollSpace);\n navScrollSpace.style.overflow = 'hidden';\n\n const subnavHeight = Math.floor(\n getViewportHeight() - subnavScrollSpace.getBoundingClientRect().top,\n );\n\n subnavBody.style.height = `${subnavHeight}px`;\n }\n\n navSimpleItems.forEach(item => {\n item.classList.add('header__nav-item--hidden');\n });\n };\n\n this.hide = () => {\n if (!this.state.isOpen) return;\n\n this.state.isOpen = false;\n\n enableBodyScroll(subnavScrollSpace);\n\n navSimpleItems.forEach(item => {\n item.classList.remove('header__nav-item--hidden');\n });\n subnavMenuItem.classList.remove('is-open');\n\n if (this.scrollEventsPrevented) {\n disableScroll.off();\n }\n\n navScrollSpace.style.overflow = '';\n subnavBody.style.height = '';\n };\n\n subnavButton.addEventListener(\n 'click',\n e => {\n e.stopPropagation();\n if (this.state.isOpen) {\n this.hide();\n } else {\n this.show();\n }\n },\n false,\n );\n\n window.addEventListener('orientationchange', this.hide);\n\n document.onkeydown = e => {\n let isEscape = false;\n if ('key' in e) {\n isEscape = e.key === 'Escape' || e.key === 'Esc';\n } else {\n isEscape = e.keyCode === 27;\n }\n if (isEscape) {\n this.hide();\n }\n };\n}\n\nwindow.addEventListener('DOMContentLoaded', () => {\n const toggleNav = new ToggleNav();\n const toggleSubNav = new ToggleSubNav();\n stickyHeader();\n\n toggleNav.sel.addEventListener('show', () => {\n toggleSubNav.hide();\n });\n});\n","import './style.scss';\n\n/**\n *\n * @param insertTo - selector\n * @param position - center or top\n */\nconst addLoader = (insertTo, position = 'center') => {\n if (insertTo && typeof insertTo === 'string') {\n const el = document.querySelector(`${insertTo}`);\n\n el.innerHTML += `\n
\n
\n
\n
\n
\n
\n `;\n }\n};\n\nexport default addLoader;\n","export function getAttr(el, attr) {\n return el.getAttribute(attr);\n}","import { observeElement } from '@uvocore-front/utils';\nimport '../../components/Header';\nimport '../../components/Testimonials/Slider';\n// import '../../components/ProductRating'; //\nimport '../../components/Calculator/default';\nimport '../../components/PseudoLinks';\nimport '../../components/LinkAnchors';\nimport Accordion from '../../components/Accordion';\nimport tabsInit from '../../components/Tabs';\n\n// run accordion\nobserveElement({\n element: '.Accordion',\n marginValue: 400,\n callback: () => {\n const acc = new Accordion({ // eslint-disable-line\n itemsSelector: '.Accordion__item',\n });\n },\n});\n\nobserveElement({\n element: '[data-tabs]',\n marginValue: 100,\n callback: () => {\n const tabs = document.querySelectorAll('[data-tabs]');\n if (tabs) {\n tabs.forEach(tab => {\n tabsInit({ selector: tab, startPaneIndex: 1 });\n });\n }\n },\n});\n","/* eslint-disable no-new */\nimport SmoothScroll from 'smooth-scroll';\n\nwindow.addEventListener('DOMContentLoaded', () => {\n new SmoothScroll('a[href*=\"#\"]', {\n header: '.header__inner',\n offset: 50,\n });\n});\n","export function isNodeList(el) {\n // Only NodeList has the \"item()\" function\n return typeof el.item !== \"undefined\"; \n}","import { passiveOption } from './passiveOption.js';\n\nexport function removeEvents(el, obj) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 ? passiveOption : false;\n el.removeEventListener(prop, obj[prop], option);\n }\n}","// Test via a getter in the options object to see if the passive property is accessed\nvar supportsPassive = false;\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"test\", null, opts);\n} catch (e) {}\nexport var passiveOption = supportsPassive ? { passive: true } : false;","var win = window;\n\nexport var caf = win.cancelAnimationFrame\n || win.mozCancelAnimationFrame\n || function(id){ clearTimeout(id); };\n","export function extend() {\n var obj, name, copy,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length;\n\n for (; i < length; i++) {\n if ((obj = arguments[i]) !== null) {\n for (name in obj) {\n copy = obj[name];\n\n if (target === copy) {\n continue;\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n return target;\n}","export function arrayFromNodeList (nl) {\n var arr = [];\n for (var i = 0, l = nl.length; i < l; i++) {\n arr.push(nl[i]);\n }\n return arr;\n}","export function isVisible(el) {\n return window.getComputedStyle(el).display !== 'none';\n}","// get transitionend, animationend based on transitionDuration\n// @propin: string\n// @propOut: string, first-letter uppercase\n// Usage: getEndProperty('WebkitTransitionDuration', 'Transition') => webkitTransitionEnd\nexport function getEndProperty(propIn, propOut) {\n var endProp = false;\n if (/^Webkit/.test(propIn)) {\n endProp = 'webkit' + propOut + 'End';\n } else if (/^O/.test(propIn)) {\n endProp = 'o' + propOut + 'End';\n } else if (propIn) {\n endProp = propOut.toLowerCase() + 'end';\n }\n return endProp;\n}","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import './helpers/Object.keys';\nimport './helpers/childNode.remove';\nimport { raf } from './helpers/raf.js';\nimport { caf } from './helpers/caf.js';\nimport { extend } from './helpers/extend.js';\nimport { checkStorageValue } from './helpers/checkStorageValue.js';\nimport { setLocalStorage } from './helpers/setLocalStorage.js';\nimport { getSlideId } from './helpers/getSlideId.js';\nimport { calc } from './helpers/calc.js';\nimport { percentageLayout } from './helpers/percentageLayout.js';\nimport { mediaquerySupport } from './helpers/mediaquerySupport.js';\nimport { createStyleSheet } from './helpers/createStyleSheet.js';\nimport { addCSSRule } from './helpers/addCSSRule.js';\nimport { removeCSSRule } from './helpers/removeCSSRule.js';\nimport { getCssRulesLength } from './helpers/getCssRulesLength.js';\nimport { toDegree } from './helpers/toDegree.js';\nimport { getTouchDirection } from './helpers/getTouchDirection.js';\nimport { forEach } from './helpers/forEach.js';\nimport { hasClass } from './helpers/hasClass.js';\nimport { addClass } from './helpers/addClass.js';\nimport { removeClass } from './helpers/removeClass.js';\nimport { hasAttr } from './helpers/hasAttr.js';\nimport { getAttr } from './helpers/getAttr.js';\nimport { setAttrs } from './helpers/setAttrs.js';\nimport { removeAttrs } from './helpers/removeAttrs.js';\nimport { arrayFromNodeList } from './helpers/arrayFromNodeList.js';\nimport { hideElement } from './helpers/hideElement.js';\nimport { showElement } from './helpers/showElement.js';\nimport { isVisible } from './helpers/isVisible.js';\nimport { whichProperty } from './helpers/whichProperty.js';\nimport { has3DTransforms } from './helpers/has3DTransforms.js';\nimport { getEndProperty } from './helpers/getEndProperty.js';\nimport { addEvents } from './helpers/addEvents.js';\nimport { removeEvents } from './helpers/removeEvents.js';\nimport { Events } from './helpers/events.js';\nimport { jsTransform } from './helpers/jsTransform.js';\n\nexport var tns = function(options) {\n options = extend({\n container: '.slider',\n mode: 'carousel',\n axis: 'horizontal',\n items: 1,\n gutter: 0,\n edgePadding: 0,\n fixedWidth: false,\n autoWidth: false,\n viewportMax: false,\n slideBy: 1,\n center: false,\n controls: true,\n controlsPosition: 'top',\n controlsText: ['prev', 'next'],\n controlsContainer: false,\n prevButton: false,\n nextButton: false,\n nav: true,\n navPosition: 'top',\n navContainer: false,\n navAsThumbnails: false,\n arrowKeys: false,\n speed: 300,\n autoplay: false,\n autoplayPosition: 'top',\n autoplayTimeout: 5000,\n autoplayDirection: 'forward',\n autoplayText: ['start', 'stop'],\n autoplayHoverPause: false,\n autoplayButton: false,\n autoplayButtonOutput: true,\n autoplayResetOnVisibility: true,\n animateIn: 'tns-fadeIn',\n animateOut: 'tns-fadeOut',\n animateNormal: 'tns-normal',\n animateDelay: false,\n loop: true,\n rewind: false,\n autoHeight: false,\n responsive: false,\n lazyload: false,\n lazyloadSelector: '.tns-lazy-img',\n touch: true,\n mouseDrag: false,\n swipeAngle: 15,\n nested: false,\n preventActionWhenRunning: false,\n preventScrollOnTouch: false,\n freezable: true,\n onInit: false,\n useLocalStorage: true\n }, options || {});\n \n var doc = document,\n win = window,\n KEYS = {\n ENTER: 13,\n SPACE: 32,\n LEFT: 37,\n RIGHT: 39\n },\n tnsStorage = {},\n localStorageAccess = options.useLocalStorage;\n\n if (localStorageAccess) {\n // check browser version and local storage access\n var browserInfo = navigator.userAgent;\n var uid = new Date;\n\n try {\n tnsStorage = win.localStorage;\n if (tnsStorage) {\n tnsStorage.setItem(uid, uid);\n localStorageAccess = tnsStorage.getItem(uid) == uid;\n tnsStorage.removeItem(uid);\n } else {\n localStorageAccess = false;\n }\n if (!localStorageAccess) { tnsStorage = {}; }\n } catch(e) {\n localStorageAccess = false;\n }\n\n if (localStorageAccess) {\n // remove storage when browser version changes\n if (tnsStorage['tnsApp'] && tnsStorage['tnsApp'] !== browserInfo) {\n ['tC', 'tPL', 'tMQ', 'tTf', 't3D', 'tTDu', 'tTDe', 'tADu', 'tADe', 'tTE', 'tAE'].forEach(function(item) { tnsStorage.removeItem(item); });\n }\n // update browserInfo\n localStorage['tnsApp'] = browserInfo;\n }\n }\n\n var CALC = tnsStorage['tC'] ? checkStorageValue(tnsStorage['tC']) : setLocalStorage(tnsStorage, 'tC', calc(), localStorageAccess),\n PERCENTAGELAYOUT = tnsStorage['tPL'] ? checkStorageValue(tnsStorage['tPL']) : setLocalStorage(tnsStorage, 'tPL', percentageLayout(), localStorageAccess),\n CSSMQ = tnsStorage['tMQ'] ? checkStorageValue(tnsStorage['tMQ']) : setLocalStorage(tnsStorage, 'tMQ', mediaquerySupport(), localStorageAccess),\n TRANSFORM = tnsStorage['tTf'] ? checkStorageValue(tnsStorage['tTf']) : setLocalStorage(tnsStorage, 'tTf', whichProperty('transform'), localStorageAccess),\n HAS3DTRANSFORMS = tnsStorage['t3D'] ? checkStorageValue(tnsStorage['t3D']) : setLocalStorage(tnsStorage, 't3D', has3DTransforms(TRANSFORM), localStorageAccess),\n TRANSITIONDURATION = tnsStorage['tTDu'] ? checkStorageValue(tnsStorage['tTDu']) : setLocalStorage(tnsStorage, 'tTDu', whichProperty('transitionDuration'), localStorageAccess),\n TRANSITIONDELAY = tnsStorage['tTDe'] ? checkStorageValue(tnsStorage['tTDe']) : setLocalStorage(tnsStorage, 'tTDe', whichProperty('transitionDelay'), localStorageAccess),\n ANIMATIONDURATION = tnsStorage['tADu'] ? checkStorageValue(tnsStorage['tADu']) : setLocalStorage(tnsStorage, 'tADu', whichProperty('animationDuration'), localStorageAccess),\n ANIMATIONDELAY = tnsStorage['tADe'] ? checkStorageValue(tnsStorage['tADe']) : setLocalStorage(tnsStorage, 'tADe', whichProperty('animationDelay'), localStorageAccess),\n TRANSITIONEND = tnsStorage['tTE'] ? checkStorageValue(tnsStorage['tTE']) : setLocalStorage(tnsStorage, 'tTE', getEndProperty(TRANSITIONDURATION, 'Transition'), localStorageAccess),\n ANIMATIONEND = tnsStorage['tAE'] ? checkStorageValue(tnsStorage['tAE']) : setLocalStorage(tnsStorage, 'tAE', getEndProperty(ANIMATIONDURATION, 'Animation'), localStorageAccess);\n\n // get element nodes from selectors\n var supportConsoleWarn = win.console && typeof win.console.warn === \"function\",\n tnsList = ['container', 'controlsContainer', 'prevButton', 'nextButton', 'navContainer', 'autoplayButton'], \n optionsElements = {};\n \n tnsList.forEach(function(item) {\n if (typeof options[item] === 'string') {\n var str = options[item],\n el = doc.querySelector(str);\n optionsElements[item] = str;\n\n if (el && el.nodeName) {\n options[item] = el;\n } else {\n if (supportConsoleWarn) { console.warn('Can\\'t find', options[item]); }\n return;\n }\n }\n });\n\n // make sure at least 1 slide\n if (options.container.children.length < 1) {\n if (supportConsoleWarn) { console.warn('No slides found in', options.container); }\n return;\n }\n\n // update options\n var responsive = options.responsive,\n nested = options.nested,\n carousel = options.mode === 'carousel' ? true : false;\n\n if (responsive) {\n // apply responsive[0] to options and remove it\n if (0 in responsive) {\n options = extend(options, responsive[0]);\n delete responsive[0];\n }\n\n var responsiveTem = {};\n for (var key in responsive) {\n var val = responsive[key];\n // update responsive\n // from: 300: 2\n // to: \n // 300: { \n // items: 2 \n // } \n val = typeof val === 'number' ? {items: val} : val;\n responsiveTem[key] = val;\n }\n responsive = responsiveTem;\n responsiveTem = null;\n }\n\n // update options\n function updateOptions (obj) {\n for (var key in obj) {\n if (!carousel) {\n if (key === 'slideBy') { obj[key] = 'page'; }\n if (key === 'edgePadding') { obj[key] = false; }\n if (key === 'autoHeight') { obj[key] = false; }\n }\n\n // update responsive options\n if (key === 'responsive') { updateOptions(obj[key]); }\n }\n }\n if (!carousel) { updateOptions(options); }\n\n\n // === define and set variables ===\n if (!carousel) {\n options.axis = 'horizontal';\n options.slideBy = 'page';\n options.edgePadding = false;\n\n var animateIn = options.animateIn,\n animateOut = options.animateOut,\n animateDelay = options.animateDelay,\n animateNormal = options.animateNormal;\n }\n\n var horizontal = options.axis === 'horizontal' ? true : false,\n outerWrapper = doc.createElement('div'),\n innerWrapper = doc.createElement('div'),\n middleWrapper,\n container = options.container,\n containerParent = container.parentNode,\n containerHTML = container.outerHTML,\n slideItems = container.children,\n slideCount = slideItems.length,\n breakpointZone,\n windowWidth = getWindowWidth(),\n isOn = false;\n if (responsive) { setBreakpointZone(); }\n if (carousel) { container.className += ' tns-vpfix'; }\n\n // fixedWidth: viewport > rightBoundary > indexMax\n var autoWidth = options.autoWidth,\n fixedWidth = getOption('fixedWidth'),\n edgePadding = getOption('edgePadding'),\n gutter = getOption('gutter'),\n viewport = getViewportWidth(),\n center = getOption('center'),\n items = !autoWidth ? Math.floor(getOption('items')) : 1,\n slideBy = getOption('slideBy'),\n viewportMax = options.viewportMax || options.fixedWidthViewportWidth,\n arrowKeys = getOption('arrowKeys'),\n speed = getOption('speed'),\n rewind = options.rewind,\n loop = rewind ? false : options.loop,\n autoHeight = getOption('autoHeight'),\n controls = getOption('controls'),\n controlsText = getOption('controlsText'),\n nav = getOption('nav'),\n touch = getOption('touch'),\n mouseDrag = getOption('mouseDrag'),\n autoplay = getOption('autoplay'),\n autoplayTimeout = getOption('autoplayTimeout'),\n autoplayText = getOption('autoplayText'),\n autoplayHoverPause = getOption('autoplayHoverPause'),\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility'),\n sheet = createStyleSheet(),\n lazyload = options.lazyload,\n lazyloadSelector = options.lazyloadSelector,\n slidePositions, // collection of slide positions\n slideItemsOut = [],\n cloneCount = loop ? getCloneCountForLoop() : 0,\n slideCountNew = !carousel ? slideCount + cloneCount : slideCount + cloneCount * 2,\n hasRightDeadZone = (fixedWidth || autoWidth) && !loop ? true : false,\n rightBoundary = fixedWidth ? getRightBoundary() : null,\n updateIndexBeforeTransform = (!carousel || !loop) ? true : false,\n // transform\n transformAttr = horizontal ? 'left' : 'top',\n transformPrefix = '',\n transformPostfix = '',\n // index\n getIndexMax = (function () {\n if (fixedWidth) {\n return function() { return center && !loop ? slideCount - 1 : Math.ceil(- rightBoundary / (fixedWidth + gutter)); };\n } else if (autoWidth) {\n return function() {\n for (var i = slideCountNew; i--;) {\n if (slidePositions[i] >= - rightBoundary) { return i; }\n }\n };\n } else {\n return function() {\n if (center && carousel && !loop) {\n return slideCount - 1;\n } else {\n return loop || carousel ? Math.max(0, slideCountNew - Math.ceil(items)) : slideCountNew - 1;\n }\n };\n }\n })(),\n index = getStartIndex(getOption('startIndex')),\n indexCached = index,\n displayIndex = getCurrentSlide(),\n indexMin = 0,\n indexMax = !autoWidth ? getIndexMax() : null,\n // resize\n resizeTimer,\n preventActionWhenRunning = options.preventActionWhenRunning,\n swipeAngle = options.swipeAngle,\n moveDirectionExpected = swipeAngle ? '?' : true,\n running = false,\n onInit = options.onInit,\n events = new Events(),\n // id, class\n newContainerClasses = ' tns-slider tns-' + options.mode,\n slideId = container.id || getSlideId(),\n disable = getOption('disable'),\n disabled = false,\n freezable = options.freezable,\n freeze = freezable && !autoWidth ? getFreeze() : false,\n frozen = false,\n controlsEvents = {\n 'click': onControlsClick,\n 'keydown': onControlsKeydown\n },\n navEvents = {\n 'click': onNavClick,\n 'keydown': onNavKeydown\n },\n hoverEvents = {\n 'mouseover': mouseoverPause,\n 'mouseout': mouseoutRestart\n },\n visibilityEvent = {'visibilitychange': onVisibilityChange},\n docmentKeydownEvent = {'keydown': onDocumentKeydown},\n touchEvents = {\n 'touchstart': onPanStart,\n 'touchmove': onPanMove,\n 'touchend': onPanEnd,\n 'touchcancel': onPanEnd\n }, dragEvents = {\n 'mousedown': onPanStart,\n 'mousemove': onPanMove,\n 'mouseup': onPanEnd,\n 'mouseleave': onPanEnd\n },\n hasControls = hasOption('controls'),\n hasNav = hasOption('nav'),\n navAsThumbnails = autoWidth ? true : options.navAsThumbnails,\n hasAutoplay = hasOption('autoplay'),\n hasTouch = hasOption('touch'),\n hasMouseDrag = hasOption('mouseDrag'),\n slideActiveClass = 'tns-slide-active',\n imgCompleteClass = 'tns-complete',\n imgEvents = {\n 'load': onImgLoaded,\n 'error': onImgFailed\n },\n imgsComplete,\n liveregionCurrent,\n preventScroll = options.preventScrollOnTouch === 'force' ? true : false;\n\n // controls\n if (hasControls) {\n var controlsContainer = options.controlsContainer,\n controlsContainerHTML = options.controlsContainer ? options.controlsContainer.outerHTML : '',\n prevButton = options.prevButton,\n nextButton = options.nextButton,\n prevButtonHTML = options.prevButton ? options.prevButton.outerHTML : '',\n nextButtonHTML = options.nextButton ? options.nextButton.outerHTML : '',\n prevIsButton,\n nextIsButton;\n }\n\n // nav\n if (hasNav) {\n var navContainer = options.navContainer,\n navContainerHTML = options.navContainer ? options.navContainer.outerHTML : '',\n navItems,\n pages = autoWidth ? slideCount : getPages(),\n pagesCached = 0,\n navClicked = -1,\n navCurrentIndex = getCurrentNavIndex(),\n navCurrentIndexCached = navCurrentIndex,\n navActiveClass = 'tns-nav-active',\n navStr = 'Carousel Page ',\n navStrCurrent = ' (Current Slide)';\n }\n\n // autoplay\n if (hasAutoplay) {\n var autoplayDirection = options.autoplayDirection === 'forward' ? 1 : -1,\n autoplayButton = options.autoplayButton,\n autoplayButtonHTML = options.autoplayButton ? options.autoplayButton.outerHTML : '',\n autoplayHtmlStrings = ['', ' animation'],\n autoplayTimer,\n animating,\n autoplayHoverPaused,\n autoplayUserPaused,\n autoplayVisibilityPaused;\n }\n\n if (hasTouch || hasMouseDrag) {\n var initPosition = {},\n lastPosition = {},\n translateInit,\n disX,\n disY,\n panStart = false,\n rafIndex,\n getDist = horizontal ? \n function(a, b) { return a.x - b.x; } :\n function(a, b) { return a.y - b.y; };\n }\n \n // disable slider when slidecount <= items\n if (!autoWidth) { resetVariblesWhenDisable(disable || freeze); }\n\n if (TRANSFORM) {\n transformAttr = TRANSFORM;\n transformPrefix = 'translate';\n\n if (HAS3DTRANSFORMS) {\n transformPrefix += horizontal ? '3d(' : '3d(0px, ';\n transformPostfix = horizontal ? ', 0px, 0px)' : ', 0px)';\n } else {\n transformPrefix += horizontal ? 'X(' : 'Y(';\n transformPostfix = ')';\n }\n\n }\n\n if (carousel) { container.className = container.className.replace('tns-vpfix', ''); }\n initStructure();\n initSheet();\n initSliderTransform();\n\n // === COMMON FUNCTIONS === //\n function resetVariblesWhenDisable (condition) {\n if (condition) {\n controls = nav = touch = mouseDrag = arrowKeys = autoplay = autoplayHoverPause = autoplayResetOnVisibility = false;\n }\n }\n\n function getCurrentSlide () {\n var tem = carousel ? index - cloneCount : index;\n while (tem < 0) { tem += slideCount; }\n return tem%slideCount + 1;\n }\n\n function getStartIndex (ind) {\n ind = ind ? Math.max(0, Math.min(loop ? slideCount - 1 : slideCount - items, ind)) : 0;\n return carousel ? ind + cloneCount : ind;\n }\n\n function getAbsIndex (i) {\n if (i == null) { i = index; }\n\n if (carousel) { i -= cloneCount; }\n while (i < 0) { i += slideCount; }\n\n return Math.floor(i%slideCount);\n }\n\n function getCurrentNavIndex () {\n var absIndex = getAbsIndex(),\n result;\n\n result = navAsThumbnails ? absIndex : \n fixedWidth || autoWidth ? Math.ceil((absIndex + 1) * pages / slideCount - 1) : \n Math.floor(absIndex / items);\n\n // set active nav to the last one when reaches the right edge\n if (!loop && carousel && index === indexMax) { result = pages - 1; }\n\n return result;\n }\n\n function getItemsMax () {\n // fixedWidth or autoWidth while viewportMax is not available\n if (autoWidth || (fixedWidth && !viewportMax)) {\n return slideCount - 1;\n // most cases\n } else {\n var str = fixedWidth ? 'fixedWidth' : 'items',\n arr = [];\n\n if (fixedWidth || options[str] < slideCount) { arr.push(options[str]); }\n\n if (responsive) {\n for (var bp in responsive) {\n var tem = responsive[bp][str];\n if (tem && (fixedWidth || tem < slideCount)) { arr.push(tem); }\n }\n }\n\n if (!arr.length) { arr.push(0); }\n\n return Math.ceil(fixedWidth ? viewportMax / Math.min.apply(null, arr) : Math.max.apply(null, arr));\n }\n }\n\n function getCloneCountForLoop () {\n var itemsMax = getItemsMax(),\n result = carousel ? Math.ceil((itemsMax * 5 - slideCount)/2) : (itemsMax * 4 - slideCount);\n result = Math.max(itemsMax, result);\n\n return hasOption('edgePadding') ? result + 1 : result;\n }\n\n function getWindowWidth () {\n return win.innerWidth || doc.documentElement.clientWidth || doc.body.clientWidth;\n }\n\n function getInsertPosition (pos) {\n return pos === 'top' ? 'afterbegin' : 'beforeend';\n }\n\n function getClientWidth (el) {\n var div = doc.createElement('div'), rect, width;\n el.appendChild(div);\n rect = div.getBoundingClientRect();\n width = rect.right - rect.left;\n div.remove();\n return width || getClientWidth(el.parentNode);\n }\n\n function getViewportWidth () {\n var gap = edgePadding ? edgePadding * 2 - gutter : 0;\n return getClientWidth(containerParent) - gap;\n }\n\n function hasOption (item) {\n if (options[item]) {\n return true;\n } else {\n if (responsive) {\n for (var bp in responsive) {\n if (responsive[bp][item]) { return true; }\n }\n }\n return false;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n function getOption (item, ww) {\n if (ww == null) { ww = windowWidth; }\n\n if (item === 'items' && fixedWidth) {\n return Math.floor((viewport + gutter) / (fixedWidth + gutter)) || 1;\n\n } else {\n var result = options[item];\n\n if (responsive) {\n for (var bp in responsive) {\n // bp: convert string to number\n if (ww >= parseInt(bp)) {\n if (item in responsive[bp]) { result = responsive[bp][item]; }\n }\n }\n }\n\n if (item === 'slideBy' && result === 'page') { result = getOption('items'); }\n if (!carousel && (item === 'slideBy' || item === 'items')) { result = Math.floor(result); }\n\n return result;\n }\n }\n\n function getSlideMarginLeft (i) {\n return CALC ? \n CALC + '(' + i * 100 + '% / ' + slideCountNew + ')' : \n i * 100 / slideCountNew + '%';\n }\n\n function getInnerWrapperStyles (edgePaddingTem, gutterTem, fixedWidthTem, speedTem, autoHeightBP) {\n var str = '';\n\n if (edgePaddingTem !== undefined) {\n var gap = edgePaddingTem;\n if (gutterTem) { gap -= gutterTem; }\n str = horizontal ?\n 'margin: 0 ' + gap + 'px 0 ' + edgePaddingTem + 'px;' :\n 'margin: ' + edgePaddingTem + 'px 0 ' + gap + 'px 0;';\n } else if (gutterTem && !fixedWidthTem) {\n var gutterTemUnit = '-' + gutterTem + 'px',\n dir = horizontal ? gutterTemUnit + ' 0 0' : '0 ' + gutterTemUnit + ' 0';\n str = 'margin: 0 ' + dir + ';'\n }\n\n if (!carousel && autoHeightBP && TRANSITIONDURATION && speedTem) { str += getTransitionDurationStyle(speedTem); }\n return str;\n }\n\n function getContainerWidth (fixedWidthTem, gutterTem, itemsTem) {\n if (fixedWidthTem) {\n return (fixedWidthTem + gutterTem) * slideCountNew + 'px';\n } else {\n return CALC ?\n CALC + '(' + slideCountNew * 100 + '% / ' + itemsTem + ')' :\n slideCountNew * 100 / itemsTem + '%';\n }\n }\n\n function getSlideWidthStyle (fixedWidthTem, gutterTem, itemsTem) {\n var width;\n\n if (fixedWidthTem) {\n width = (fixedWidthTem + gutterTem) + 'px';\n } else {\n if (!carousel) { itemsTem = Math.floor(itemsTem); }\n var dividend = carousel ? slideCountNew : itemsTem;\n width = CALC ? \n CALC + '(100% / ' + dividend + ')' : \n 100 / dividend + '%';\n }\n\n width = 'width:' + width;\n\n // inner slider: overwrite outer slider styles\n return nested !== 'inner' ? width + ';' : width + ' !important;';\n }\n\n function getSlideGutterStyle (gutterTem) {\n var str = '';\n\n // gutter maybe interger || 0\n // so can't use 'if (gutter)'\n if (gutterTem !== false) {\n var prop = horizontal ? 'padding-' : 'margin-',\n dir = horizontal ? 'right' : 'bottom';\n str = prop + dir + ': ' + gutterTem + 'px;';\n }\n\n return str;\n }\n\n function getCSSPrefix (name, num) {\n var prefix = name.substring(0, name.length - num).toLowerCase();\n if (prefix) { prefix = '-' + prefix + '-'; }\n\n return prefix;\n }\n\n function getTransitionDurationStyle (speed) {\n return getCSSPrefix(TRANSITIONDURATION, 18) + 'transition-duration:' + speed / 1000 + 's;';\n }\n\n function getAnimationDurationStyle (speed) {\n return getCSSPrefix(ANIMATIONDURATION, 17) + 'animation-duration:' + speed / 1000 + 's;';\n }\n\n function initStructure () {\n var classOuter = 'tns-outer',\n classInner = 'tns-inner',\n hasGutter = hasOption('gutter');\n\n outerWrapper.className = classOuter;\n innerWrapper.className = classInner;\n outerWrapper.id = slideId + '-ow';\n innerWrapper.id = slideId + '-iw';\n\n // set container properties\n if (container.id === '') { container.id = slideId; }\n newContainerClasses += PERCENTAGELAYOUT || autoWidth ? ' tns-subpixel' : ' tns-no-subpixel';\n newContainerClasses += CALC ? ' tns-calc' : ' tns-no-calc';\n if (autoWidth) { newContainerClasses += ' tns-autowidth'; }\n newContainerClasses += ' tns-' + options.axis;\n container.className += newContainerClasses;\n\n // add constrain layer for carousel\n if (carousel) {\n middleWrapper = doc.createElement('div');\n middleWrapper.id = slideId + '-mw';\n middleWrapper.className = 'tns-ovh';\n\n outerWrapper.appendChild(middleWrapper);\n middleWrapper.appendChild(innerWrapper);\n } else {\n outerWrapper.appendChild(innerWrapper);\n }\n\n if (autoHeight) {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.className += ' tns-ah';\n }\n\n containerParent.insertBefore(outerWrapper, container);\n innerWrapper.appendChild(container);\n\n // add id, class, aria attributes \n // before clone slides\n forEach(slideItems, function(item, i) {\n addClass(item, 'tns-item');\n if (!item.id) { item.id = slideId + '-item' + i; }\n if (!carousel && animateNormal) { addClass(item, animateNormal); }\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n });\n\n // ## clone slides\n // carousel: n + slides + n\n // gallery: slides + n\n if (cloneCount) {\n var fragmentBefore = doc.createDocumentFragment(), \n fragmentAfter = doc.createDocumentFragment();\n\n for (var j = cloneCount; j--;) {\n var num = j%slideCount,\n cloneFirst = slideItems[num].cloneNode(true);\n removeAttrs(cloneFirst, 'id');\n fragmentAfter.insertBefore(cloneFirst, fragmentAfter.firstChild);\n\n if (carousel) {\n var cloneLast = slideItems[slideCount - 1 - num].cloneNode(true);\n removeAttrs(cloneLast, 'id');\n fragmentBefore.appendChild(cloneLast);\n }\n }\n\n container.insertBefore(fragmentBefore, container.firstChild);\n container.appendChild(fragmentAfter);\n slideItems = container.children;\n }\n\n }\n\n function initSliderTransform () {\n // ## images loaded/failed\n if (hasOption('autoHeight') || autoWidth || !horizontal) {\n var imgs = container.querySelectorAll('img');\n\n // add complete class if all images are loaded/failed\n forEach(imgs, function(img) {\n var src = img.src;\n \n if (src && src.indexOf('data:image') < 0) {\n addEvents(img, imgEvents);\n img.src = '';\n img.src = src;\n addClass(img, 'loading');\n } else if (!lazyload) {\n imgLoaded(img);\n }\n });\n\n // All imgs are completed\n raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), function() { imgsComplete = true; }); });\n\n // Check imgs in window only for auto height\n if (!autoWidth && horizontal) { imgs = getImageArray(index, Math.min(index + items - 1, slideCountNew - 1)); }\n\n lazyload ? initSliderTransformStyleCheck() : raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), initSliderTransformStyleCheck); });\n\n } else {\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n }\n\n function initSliderTransformStyleCheck () {\n if (autoWidth) {\n // check styles application\n var num = loop ? index : slideCount - 1;\n (function stylesApplicationCheck() {\n slideItems[num - 1].getBoundingClientRect().right.toFixed(2) === slideItems[num].getBoundingClientRect().left.toFixed(2) ?\n initSliderTransformCore() :\n setTimeout(function(){ stylesApplicationCheck() }, 16);\n })();\n } else {\n initSliderTransformCore();\n }\n }\n\n\n function initSliderTransformCore () {\n // run Fn()s which are rely on image loading\n if (!horizontal || autoWidth) {\n setSlidePositions();\n\n if (autoWidth) {\n rightBoundary = getRightBoundary();\n if (freezable) { freeze = getFreeze(); }\n indexMax = getIndexMax(); // <= slidePositions, rightBoundary <=\n resetVariblesWhenDisable(disable || freeze);\n } else {\n updateContentWrapperHeight();\n }\n }\n\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n\n function initSheet () {\n // gallery:\n // set animation classes and left value for gallery slider\n if (!carousel) { \n for (var i = index, l = index + Math.min(slideCount, items); i < l; i++) {\n var item = slideItems[i];\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // #### LAYOUT\n\n // ## INLINE-BLOCK VS FLOAT\n\n // ## PercentageLayout:\n // slides: inline-block\n // remove blank space between slides by set font-size: 0\n\n // ## Non PercentageLayout:\n // slides: float\n // margin-right: -100%\n // margin-left: ~\n\n // Resource: https://docs.google.com/spreadsheets/d/147up245wwTXeQYve3BRSAD4oVcvQmuGsFteJOeA5xNQ/edit?usp=sharing\n if (horizontal) {\n if (PERCENTAGELAYOUT || autoWidth) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', 'font-size:' + win.getComputedStyle(slideItems[0]).fontSize + ';', getCssRulesLength(sheet));\n addCSSRule(sheet, '#' + slideId, 'font-size:0;', getCssRulesLength(sheet));\n } else if (carousel) {\n forEach(slideItems, function (slide, i) {\n slide.style.marginLeft = getSlideMarginLeft(i);\n });\n }\n }\n\n\n // ## BASIC STYLES\n if (CSSMQ) {\n // middle wrapper style\n if (TRANSITIONDURATION) {\n var str = middleWrapper && options.autoHeight ? getTransitionDurationStyle(options.speed) : '';\n addCSSRule(sheet, '#' + slideId + '-mw', str, getCssRulesLength(sheet));\n }\n\n // inner wrapper styles\n str = getInnerWrapperStyles(options.edgePadding, options.gutter, options.fixedWidth, options.speed, options.autoHeight);\n addCSSRule(sheet, '#' + slideId + '-iw', str, getCssRulesLength(sheet));\n\n // container styles\n if (carousel) {\n str = horizontal && !autoWidth ? 'width:' + getContainerWidth(options.fixedWidth, options.gutter, options.items) + ';' : '';\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n addCSSRule(sheet, '#' + slideId, str, getCssRulesLength(sheet));\n }\n\n // slide styles\n str = horizontal && !autoWidth ? getSlideWidthStyle(options.fixedWidth, options.gutter, options.items) : '';\n if (options.gutter) { str += getSlideGutterStyle(options.gutter); }\n // set gallery items transition-duration\n if (!carousel) {\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n if (ANIMATIONDURATION) { str += getAnimationDurationStyle(speed); }\n }\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n\n // non CSS mediaqueries: IE8\n // ## update inner wrapper, container, slides if needed\n // set inline styles for inner wrapper & container\n // insert stylesheet (one line) for slides only (since slides are many)\n } else {\n // middle wrapper styles\n update_carousel_transition_duration();\n\n // inner wrapper styles\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, autoHeight);\n\n // container styles\n if (carousel && horizontal && !autoWidth) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = horizontal && !autoWidth ? getSlideWidthStyle(fixedWidth, gutter, items) : '';\n if (gutter) { str += getSlideGutterStyle(gutter); }\n\n // append to the last line\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n }\n\n // ## MEDIAQUERIES\n if (responsive && CSSMQ) {\n for (var bp in responsive) {\n // bp: convert string to number\n bp = parseInt(bp);\n\n var opts = responsive[bp],\n str = '',\n middleWrapperStr = '',\n innerWrapperStr = '',\n containerStr = '',\n slideStr = '',\n itemsBP = !autoWidth ? getOption('items', bp) : null,\n fixedWidthBP = getOption('fixedWidth', bp),\n speedBP = getOption('speed', bp),\n edgePaddingBP = getOption('edgePadding', bp),\n autoHeightBP = getOption('autoHeight', bp),\n gutterBP = getOption('gutter', bp);\n\n // middle wrapper string\n if (TRANSITIONDURATION && middleWrapper && getOption('autoHeight', bp) && 'speed' in opts) {\n middleWrapperStr = '#' + slideId + '-mw{' + getTransitionDurationStyle(speedBP) + '}';\n }\n\n // inner wrapper string\n if ('edgePadding' in opts || 'gutter' in opts) {\n innerWrapperStr = '#' + slideId + '-iw{' + getInnerWrapperStyles(edgePaddingBP, gutterBP, fixedWidthBP, speedBP, autoHeightBP) + '}';\n }\n\n // container string\n if (carousel && horizontal && !autoWidth && ('fixedWidth' in opts || 'items' in opts || (fixedWidth && 'gutter' in opts))) {\n containerStr = 'width:' + getContainerWidth(fixedWidthBP, gutterBP, itemsBP) + ';';\n }\n if (TRANSITIONDURATION && 'speed' in opts) {\n containerStr += getTransitionDurationStyle(speedBP);\n }\n if (containerStr) {\n containerStr = '#' + slideId + '{' + containerStr + '}';\n }\n\n // slide string\n if ('fixedWidth' in opts || (fixedWidth && 'gutter' in opts) || !carousel && 'items' in opts) {\n slideStr += getSlideWidthStyle(fixedWidthBP, gutterBP, itemsBP);\n }\n if ('gutter' in opts) {\n slideStr += getSlideGutterStyle(gutterBP);\n }\n // set gallery items transition-duration\n if (!carousel && 'speed' in opts) {\n if (TRANSITIONDURATION) { slideStr += getTransitionDurationStyle(speedBP); }\n if (ANIMATIONDURATION) { slideStr += getAnimationDurationStyle(speedBP); }\n }\n if (slideStr) { slideStr = '#' + slideId + ' > .tns-item{' + slideStr + '}'; }\n\n // add up\n str = middleWrapperStr + innerWrapperStr + containerStr + slideStr;\n\n if (str) {\n sheet.insertRule('@media (min-width: ' + bp / 16 + 'em) {' + str + '}', sheet.cssRules.length);\n }\n }\n }\n }\n\n function initTools () {\n // == slides ==\n updateSlideStatus();\n\n // == live region ==\n outerWrapper.insertAdjacentHTML('afterbegin', '
slide ' + getLiveRegionStr() + ' of ' + slideCount + '
');\n liveregionCurrent = outerWrapper.querySelector('.tns-liveregion .current');\n\n // == autoplayInit ==\n if (hasAutoplay) {\n var txt = autoplay ? 'stop' : 'start';\n if (autoplayButton) {\n setAttrs(autoplayButton, {'data-action': txt});\n } else if (options.autoplayButtonOutput) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.autoplayPosition), '');\n autoplayButton = outerWrapper.querySelector('[data-action]');\n }\n\n // add event\n if (autoplayButton) {\n addEvents(autoplayButton, {'click': toggleAutoplay});\n }\n\n if (autoplay) {\n startAutoplay();\n if (autoplayHoverPause) { addEvents(container, hoverEvents); }\n if (autoplayResetOnVisibility) { addEvents(container, visibilityEvent); }\n }\n }\n \n // == navInit ==\n if (hasNav) {\n var initIndex = !carousel ? 0 : cloneCount;\n // customized nav\n // will not hide the navs in case they're thumbnails\n if (navContainer) {\n setAttrs(navContainer, {'aria-label': 'Carousel Pagination'});\n navItems = navContainer.children;\n forEach(navItems, function(item, i) {\n setAttrs(item, {\n 'data-nav': i,\n 'tabindex': '-1',\n 'aria-label': navStr + (i + 1),\n 'aria-controls': slideId,\n });\n });\n\n // generated nav \n } else {\n var navHtml = '',\n hiddenStr = navAsThumbnails ? '' : 'style=\"display:none\"';\n for (var i = 0; i < slideCount; i++) {\n // hide nav items by default\n navHtml += '';\n }\n navHtml = '
' + navHtml + '
';\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.navPosition), navHtml);\n\n navContainer = outerWrapper.querySelector('.tns-nav');\n navItems = navContainer.children;\n }\n\n updateNavVisibility();\n\n // add transition\n if (TRANSITIONDURATION) {\n var prefix = TRANSITIONDURATION.substring(0, TRANSITIONDURATION.length - 18).toLowerCase(),\n str = 'transition: all ' + speed / 1000 + 's';\n\n if (prefix) {\n str = '-' + prefix + '-' + str;\n }\n\n addCSSRule(sheet, '[aria-controls^=' + slideId + '-item]', str, getCssRulesLength(sheet));\n }\n\n setAttrs(navItems[navCurrentIndex], {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navItems[navCurrentIndex], 'tabindex');\n addClass(navItems[navCurrentIndex], navActiveClass);\n\n // add events\n addEvents(navContainer, navEvents);\n }\n\n\n\n // == controlsInit ==\n if (hasControls) {\n if (!controlsContainer && (!prevButton || !nextButton)) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.controlsPosition), '
');\n\n controlsContainer = outerWrapper.querySelector('.tns-controls');\n }\n\n if (!prevButton || !nextButton) {\n prevButton = controlsContainer.children[0];\n nextButton = controlsContainer.children[1];\n }\n\n if (options.controlsContainer) {\n setAttrs(controlsContainer, {\n 'aria-label': 'Carousel Navigation',\n 'tabindex': '0'\n });\n }\n\n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs([prevButton, nextButton], {\n 'aria-controls': slideId,\n 'tabindex': '-1',\n });\n }\n \n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs(prevButton, {'data-controls' : 'prev'});\n setAttrs(nextButton, {'data-controls' : 'next'});\n }\n\n prevIsButton = isButton(prevButton);\n nextIsButton = isButton(nextButton);\n\n updateControlsStatus();\n\n // add events\n if (controlsContainer) {\n addEvents(controlsContainer, controlsEvents);\n } else {\n addEvents(prevButton, controlsEvents);\n addEvents(nextButton, controlsEvents);\n }\n }\n\n // hide tools if needed\n disableUI();\n }\n\n function initEvents () {\n // add events\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n addEvents(container, eve);\n }\n\n if (touch) { addEvents(container, touchEvents, options.preventScrollOnTouch); }\n if (mouseDrag) { addEvents(container, dragEvents); }\n if (arrowKeys) { addEvents(doc, docmentKeydownEvent); }\n\n if (nested === 'inner') {\n events.on('outerResized', function () {\n resizeTasks();\n events.emit('innerLoaded', info());\n });\n } else if (responsive || fixedWidth || autoWidth || autoHeight || !horizontal) {\n addEvents(win, {'resize': onResize});\n }\n\n if (autoHeight) {\n if (nested === 'outer') {\n events.on('innerLoaded', doAutoHeight);\n } else if (!disable) { doAutoHeight(); }\n }\n\n doLazyLoad();\n if (disable) { disableSlider(); } else if (freeze) { freezeSlider(); }\n\n events.on('indexChanged', additionalUpdates);\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n if (typeof onInit === 'function') { onInit(info()); }\n isOn = true;\n }\n\n function destroy () {\n // sheet\n sheet.disabled = true;\n if (sheet.ownerNode) { sheet.ownerNode.remove(); }\n\n // remove win event listeners\n removeEvents(win, {'resize': onResize});\n\n // arrowKeys, controls, nav\n if (arrowKeys) { removeEvents(doc, docmentKeydownEvent); }\n if (controlsContainer) { removeEvents(controlsContainer, controlsEvents); }\n if (navContainer) { removeEvents(navContainer, navEvents); }\n\n // autoplay\n removeEvents(container, hoverEvents);\n removeEvents(container, visibilityEvent);\n if (autoplayButton) { removeEvents(autoplayButton, {'click': toggleAutoplay}); }\n if (autoplay) { clearInterval(autoplayTimer); }\n\n // container\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n removeEvents(container, eve);\n }\n if (touch) { removeEvents(container, touchEvents); }\n if (mouseDrag) { removeEvents(container, dragEvents); }\n\n // cache Object values in options && reset HTML\n var htmlList = [containerHTML, controlsContainerHTML, prevButtonHTML, nextButtonHTML, navContainerHTML, autoplayButtonHTML];\n\n tnsList.forEach(function(item, i) {\n var el = item === 'container' ? outerWrapper : options[item];\n\n if (typeof el === 'object') {\n var prevEl = el.previousElementSibling ? el.previousElementSibling : false,\n parentEl = el.parentNode;\n el.outerHTML = htmlList[i];\n options[item] = prevEl ? prevEl.nextElementSibling : parentEl.firstElementChild;\n }\n });\n\n\n // reset variables\n tnsList = animateIn = animateOut = animateDelay = animateNormal = horizontal = outerWrapper = innerWrapper = container = containerParent = containerHTML = slideItems = slideCount = breakpointZone = windowWidth = autoWidth = fixedWidth = edgePadding = gutter = viewport = items = slideBy = viewportMax = arrowKeys = speed = rewind = loop = autoHeight = sheet = lazyload = slidePositions = slideItemsOut = cloneCount = slideCountNew = hasRightDeadZone = rightBoundary = updateIndexBeforeTransform = transformAttr = transformPrefix = transformPostfix = getIndexMax = index = indexCached = indexMin = indexMax = resizeTimer = swipeAngle = moveDirectionExpected = running = onInit = events = newContainerClasses = slideId = disable = disabled = freezable = freeze = frozen = controlsEvents = navEvents = hoverEvents = visibilityEvent = docmentKeydownEvent = touchEvents = dragEvents = hasControls = hasNav = navAsThumbnails = hasAutoplay = hasTouch = hasMouseDrag = slideActiveClass = imgCompleteClass = imgEvents = imgsComplete = controls = controlsText = controlsContainer = controlsContainerHTML = prevButton = nextButton = prevIsButton = nextIsButton = nav = navContainer = navContainerHTML = navItems = pages = pagesCached = navClicked = navCurrentIndex = navCurrentIndexCached = navActiveClass = navStr = navStrCurrent = autoplay = autoplayTimeout = autoplayDirection = autoplayText = autoplayHoverPause = autoplayButton = autoplayButtonHTML = autoplayResetOnVisibility = autoplayHtmlStrings = autoplayTimer = animating = autoplayHoverPaused = autoplayUserPaused = autoplayVisibilityPaused = initPosition = lastPosition = translateInit = disX = disY = panStart = rafIndex = getDist = touch = mouseDrag = null;\n // check variables\n // [animateIn, animateOut, animateDelay, animateNormal, horizontal, outerWrapper, innerWrapper, container, containerParent, containerHTML, slideItems, slideCount, breakpointZone, windowWidth, autoWidth, fixedWidth, edgePadding, gutter, viewport, items, slideBy, viewportMax, arrowKeys, speed, rewind, loop, autoHeight, sheet, lazyload, slidePositions, slideItemsOut, cloneCount, slideCountNew, hasRightDeadZone, rightBoundary, updateIndexBeforeTransform, transformAttr, transformPrefix, transformPostfix, getIndexMax, index, indexCached, indexMin, indexMax, resizeTimer, swipeAngle, moveDirectionExpected, running, onInit, events, newContainerClasses, slideId, disable, disabled, freezable, freeze, frozen, controlsEvents, navEvents, hoverEvents, visibilityEvent, docmentKeydownEvent, touchEvents, dragEvents, hasControls, hasNav, navAsThumbnails, hasAutoplay, hasTouch, hasMouseDrag, slideActiveClass, imgCompleteClass, imgEvents, imgsComplete, controls, controlsText, controlsContainer, controlsContainerHTML, prevButton, nextButton, prevIsButton, nextIsButton, nav, navContainer, navContainerHTML, navItems, pages, pagesCached, navClicked, navCurrentIndex, navCurrentIndexCached, navActiveClass, navStr, navStrCurrent, autoplay, autoplayTimeout, autoplayDirection, autoplayText, autoplayHoverPause, autoplayButton, autoplayButtonHTML, autoplayResetOnVisibility, autoplayHtmlStrings, autoplayTimer, animating, autoplayHoverPaused, autoplayUserPaused, autoplayVisibilityPaused, initPosition, lastPosition, translateInit, disX, disY, panStart, rafIndex, getDist, touch, mouseDrag ].forEach(function(item) { if (item !== null) { console.log(item); } });\n\n for (var a in this) {\n if (a !== 'rebuild') { this[a] = null; }\n }\n isOn = false;\n }\n\n// === ON RESIZE ===\n // responsive || fixedWidth || autoWidth || !horizontal\n function onResize (e) {\n raf(function(){ resizeTasks(getEvent(e)); });\n }\n\n function resizeTasks (e) {\n if (!isOn) { return; }\n if (nested === 'outer') { events.emit('outerResized', info(e)); }\n windowWidth = getWindowWidth();\n var bpChanged,\n breakpointZoneTem = breakpointZone,\n needContainerTransform = false;\n\n if (responsive) {\n setBreakpointZone();\n bpChanged = breakpointZoneTem !== breakpointZone;\n // if (hasRightDeadZone) { needContainerTransform = true; } // *?\n if (bpChanged) { events.emit('newBreakpointStart', info(e)); }\n }\n\n var indChanged,\n itemsChanged,\n itemsTem = items,\n disableTem = disable,\n freezeTem = freeze,\n arrowKeysTem = arrowKeys,\n controlsTem = controls,\n navTem = nav,\n touchTem = touch,\n mouseDragTem = mouseDrag,\n autoplayTem = autoplay,\n autoplayHoverPauseTem = autoplayHoverPause,\n autoplayResetOnVisibilityTem = autoplayResetOnVisibility,\n indexTem = index;\n\n if (bpChanged) {\n var fixedWidthTem = fixedWidth,\n autoHeightTem = autoHeight,\n controlsTextTem = controlsText,\n centerTem = center,\n autoplayTextTem = autoplayText;\n\n if (!CSSMQ) {\n var gutterTem = gutter,\n edgePaddingTem = edgePadding;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n arrowKeys = getOption('arrowKeys');\n controls = getOption('controls');\n nav = getOption('nav');\n touch = getOption('touch');\n center = getOption('center');\n mouseDrag = getOption('mouseDrag');\n autoplay = getOption('autoplay');\n autoplayHoverPause = getOption('autoplayHoverPause');\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility');\n\n if (bpChanged) {\n disable = getOption('disable');\n fixedWidth = getOption('fixedWidth');\n speed = getOption('speed');\n autoHeight = getOption('autoHeight');\n controlsText = getOption('controlsText');\n autoplayText = getOption('autoplayText');\n autoplayTimeout = getOption('autoplayTimeout');\n\n if (!CSSMQ) {\n edgePadding = getOption('edgePadding');\n gutter = getOption('gutter');\n }\n }\n // update options\n resetVariblesWhenDisable(disable);\n\n viewport = getViewportWidth(); // <= edgePadding, gutter\n if ((!horizontal || autoWidth) && !disable) {\n setSlidePositions();\n if (!horizontal) {\n updateContentWrapperHeight(); // <= setSlidePositions\n needContainerTransform = true;\n }\n }\n if (fixedWidth || autoWidth) {\n rightBoundary = getRightBoundary(); // autoWidth: <= viewport, slidePositions, gutter\n // fixedWidth: <= viewport, fixedWidth, gutter\n indexMax = getIndexMax(); // autoWidth: <= rightBoundary, slidePositions\n // fixedWidth: <= rightBoundary, fixedWidth, gutter\n }\n\n if (bpChanged || fixedWidth) {\n items = getOption('items');\n slideBy = getOption('slideBy');\n itemsChanged = items !== itemsTem;\n\n if (itemsChanged) {\n if (!fixedWidth && !autoWidth) { indexMax = getIndexMax(); } // <= items\n // check index before transform in case\n // slider reach the right edge then items become bigger\n updateIndex();\n }\n }\n \n if (bpChanged) {\n if (disable !== disableTem) {\n if (disable) {\n disableSlider();\n } else {\n enableSlider(); // <= slidePositions, rightBoundary, indexMax\n }\n }\n }\n\n if (freezable && (bpChanged || fixedWidth || autoWidth)) {\n freeze = getFreeze(); // <= autoWidth: slidePositions, gutter, viewport, rightBoundary\n // <= fixedWidth: fixedWidth, gutter, rightBoundary\n // <= others: items\n\n if (freeze !== freezeTem) {\n if (freeze) {\n doContainerTransform(getContainerTransformValue(getStartIndex(0)));\n freezeSlider();\n } else {\n unfreezeSlider();\n needContainerTransform = true;\n }\n }\n }\n\n resetVariblesWhenDisable(disable || freeze); // controls, nav, touch, mouseDrag, arrowKeys, autoplay, autoplayHoverPause, autoplayResetOnVisibility\n if (!autoplay) { autoplayHoverPause = autoplayResetOnVisibility = false; }\n\n if (arrowKeys !== arrowKeysTem) {\n arrowKeys ?\n addEvents(doc, docmentKeydownEvent) :\n removeEvents(doc, docmentKeydownEvent);\n }\n if (controls !== controlsTem) {\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n } else {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n if (nav !== navTem) {\n nav ?\n showElement(navContainer) :\n hideElement(navContainer);\n }\n if (touch !== touchTem) {\n touch ?\n addEvents(container, touchEvents, options.preventScrollOnTouch) :\n removeEvents(container, touchEvents);\n }\n if (mouseDrag !== mouseDragTem) {\n mouseDrag ?\n addEvents(container, dragEvents) :\n removeEvents(container, dragEvents);\n }\n if (autoplay !== autoplayTem) {\n if (autoplay) {\n if (autoplayButton) { showElement(autoplayButton); }\n if (!animating && !autoplayUserPaused) { startAutoplay(); }\n } else {\n if (autoplayButton) { hideElement(autoplayButton); }\n if (animating) { stopAutoplay(); }\n }\n }\n if (autoplayHoverPause !== autoplayHoverPauseTem) {\n autoplayHoverPause ?\n addEvents(container, hoverEvents) :\n removeEvents(container, hoverEvents);\n }\n if (autoplayResetOnVisibility !== autoplayResetOnVisibilityTem) {\n autoplayResetOnVisibility ?\n addEvents(doc, visibilityEvent) :\n removeEvents(doc, visibilityEvent);\n }\n\n if (bpChanged) {\n if (fixedWidth !== fixedWidthTem || center !== centerTem) { needContainerTransform = true; }\n\n if (autoHeight !== autoHeightTem) {\n if (!autoHeight) { innerWrapper.style.height = ''; }\n }\n\n if (controls && controlsText !== controlsTextTem) {\n prevButton.innerHTML = controlsText[0];\n nextButton.innerHTML = controlsText[1];\n }\n\n if (autoplayButton && autoplayText !== autoplayTextTem) {\n var i = autoplay ? 1 : 0,\n html = autoplayButton.innerHTML,\n len = html.length - autoplayTextTem[i].length;\n if (html.substring(len) === autoplayTextTem[i]) {\n autoplayButton.innerHTML = html.substring(0, len) + autoplayText[i];\n }\n }\n } else {\n if (center && (fixedWidth || autoWidth)) { needContainerTransform = true; }\n }\n\n if (itemsChanged || fixedWidth && !autoWidth) {\n pages = getPages();\n updateNavVisibility();\n }\n\n indChanged = index !== indexTem;\n if (indChanged) { \n events.emit('indexChanged', info());\n needContainerTransform = true;\n } else if (itemsChanged) {\n if (!indChanged) { additionalUpdates(); }\n } else if (fixedWidth || autoWidth) {\n doLazyLoad(); \n updateSlideStatus();\n updateLiveRegion();\n }\n\n if (itemsChanged && !carousel) { updateGallerySlidePositions(); }\n\n if (!disable && !freeze) {\n // non-meduaqueries: IE8\n if (bpChanged && !CSSMQ) {\n // middle wrapper styles\n if (autoHeight !== autoheightTem || speed !== speedTem) {\n update_carousel_transition_duration();\n }\n\n // inner wrapper styles\n if (edgePadding !== edgePaddingTem || gutter !== gutterTem) {\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, speed, autoHeight);\n }\n\n if (horizontal) {\n // container styles\n if (carousel) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = getSlideWidthStyle(fixedWidth, gutter, items) + \n getSlideGutterStyle(gutter);\n\n // remove the last line and\n // add new styles\n removeCSSRule(sheet, getCssRulesLength(sheet) - 1);\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n }\n }\n\n // auto height\n if (autoHeight) { doAutoHeight(); }\n\n if (needContainerTransform) {\n doContainerTransformSilent();\n indexCached = index;\n }\n }\n\n if (bpChanged) { events.emit('newBreakpointEnd', info(e)); }\n }\n\n\n\n\n\n // === INITIALIZATION FUNCTIONS === //\n function getFreeze () {\n if (!fixedWidth && !autoWidth) {\n var a = center ? items - (items - 1) / 2 : items;\n return slideCount <= a;\n }\n\n var width = fixedWidth ? (fixedWidth + gutter) * slideCount : slidePositions[slideCount],\n vp = edgePadding ? viewport + edgePadding * 2 : viewport + gutter;\n\n if (center) {\n vp -= fixedWidth ? (viewport - fixedWidth) / 2 : (viewport - (slidePositions[index + 1] - slidePositions[index] - gutter)) / 2;\n }\n\n return width <= vp;\n }\n\n function setBreakpointZone () {\n breakpointZone = 0;\n for (var bp in responsive) {\n bp = parseInt(bp); // convert string to number\n if (windowWidth >= bp) { breakpointZone = bp; }\n }\n }\n\n // (slideBy, indexMin, indexMax) => index\n var updateIndex = (function () {\n return loop ? \n carousel ?\n // loop + carousel\n function () {\n var leftEdge = indexMin,\n rightEdge = indexMax;\n\n leftEdge += slideBy;\n rightEdge -= slideBy;\n\n // adjust edges when has edge paddings\n // or fixed-width slider with extra space on the right side\n if (edgePadding) {\n leftEdge += 1;\n rightEdge -= 1;\n } else if (fixedWidth) {\n if ((viewport + gutter)%(fixedWidth + gutter)) { rightEdge -= 1; }\n }\n\n if (cloneCount) {\n if (index > rightEdge) {\n index -= slideCount;\n } else if (index < leftEdge) {\n index += slideCount;\n }\n }\n } :\n // loop + gallery\n function() {\n if (index > indexMax) {\n while (index >= indexMin + slideCount) { index -= slideCount; }\n } else if (index < indexMin) {\n while (index <= indexMax - slideCount) { index += slideCount; }\n }\n } :\n // non-loop\n function() {\n index = Math.max(indexMin, Math.min(indexMax, index));\n };\n })();\n\n function disableUI () {\n if (!autoplay && autoplayButton) { hideElement(autoplayButton); }\n if (!nav && navContainer) { hideElement(navContainer); }\n if (!controls) {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n\n function enableUI () {\n if (autoplay && autoplayButton) { showElement(autoplayButton); }\n if (nav && navContainer) { showElement(navContainer); }\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n }\n }\n\n function freezeSlider () {\n if (frozen) { return; }\n\n // remove edge padding from inner wrapper\n if (edgePadding) { innerWrapper.style.margin = '0px'; }\n\n // add class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { addClass(slideItems[i], str); }\n addClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n disableUI();\n\n frozen = true;\n }\n\n function unfreezeSlider () {\n if (!frozen) { return; }\n\n // restore edge padding for inner wrapper\n // for mordern browsers\n if (edgePadding && CSSMQ) { innerWrapper.style.margin = ''; }\n\n // remove class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { removeClass(slideItems[i], str); }\n removeClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n enableUI();\n\n frozen = false;\n }\n\n function disableSlider () {\n if (disabled) { return; }\n\n sheet.disabled = true;\n container.className = container.className.replace(newContainerClasses.substring(1), '');\n removeAttrs(container, ['style']);\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { hideElement(slideItems[j]); }\n hideElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // vertical slider\n if (!horizontal || !carousel) { removeAttrs(innerWrapper, ['style']); }\n\n // gallery\n if (!carousel) { \n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i];\n removeAttrs(item, ['style']);\n removeClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // update tools\n disableUI();\n\n disabled = true;\n }\n\n function enableSlider () {\n if (!disabled) { return; }\n\n sheet.disabled = false;\n container.className += newContainerClasses;\n doContainerTransformSilent();\n\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { showElement(slideItems[j]); }\n showElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // gallery\n if (!carousel) { \n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i],\n classN = i < index + items ? animateIn : animateNormal;\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, classN);\n }\n }\n\n // update tools\n enableUI();\n\n disabled = false;\n }\n\n function updateLiveRegion () {\n var str = getLiveRegionStr();\n if (liveregionCurrent.innerHTML !== str) { liveregionCurrent.innerHTML = str; }\n }\n\n function getLiveRegionStr () {\n var arr = getVisibleSlideRange(),\n start = arr[0] + 1,\n end = arr[1] + 1;\n return start === end ? start + '' : start + ' to ' + end; \n }\n\n function getVisibleSlideRange (val) {\n if (val == null) { val = getContainerTransformValue(); }\n var start = index, end, rangestart, rangeend;\n\n // get range start, range end for autoWidth and fixedWidth\n if (center || edgePadding) {\n if (autoWidth || fixedWidth) {\n rangestart = - (parseFloat(val) + edgePadding);\n rangeend = rangestart + viewport + edgePadding * 2;\n }\n } else {\n if (autoWidth) {\n rangestart = slidePositions[index];\n rangeend = rangestart + viewport;\n }\n }\n\n // get start, end\n // - check auto width\n if (autoWidth) {\n slidePositions.forEach(function(point, i) {\n if (i < slideCountNew) {\n if ((center || edgePadding) && point <= rangestart + 0.5) { start = i; }\n if (rangeend - point >= 0.5) { end = i; }\n }\n });\n\n // - check percentage width, fixed width\n } else {\n\n if (fixedWidth) {\n var cell = fixedWidth + gutter;\n if (center || edgePadding) {\n start = Math.floor(rangestart/cell);\n end = Math.ceil(rangeend/cell - 1);\n } else {\n end = start + Math.ceil(viewport/cell) - 1;\n }\n\n } else {\n if (center || edgePadding) {\n var a = items - 1;\n if (center) {\n start -= a / 2;\n end = index + a / 2;\n } else {\n end = index + a;\n }\n\n if (edgePadding) {\n var b = edgePadding * items / viewport;\n start -= b;\n end += b;\n }\n\n start = Math.floor(start);\n end = Math.ceil(end);\n } else {\n end = start + items - 1;\n }\n }\n\n start = Math.max(start, 0);\n end = Math.min(end, slideCountNew - 1);\n }\n\n return [start, end];\n }\n\n function doLazyLoad () {\n if (lazyload && !disable) {\n getImageArray.apply(null, getVisibleSlideRange()).forEach(function (img) {\n if (!hasClass(img, imgCompleteClass)) {\n // stop propagation transitionend event to container\n var eve = {};\n eve[TRANSITIONEND] = function (e) { e.stopPropagation(); };\n addEvents(img, eve);\n\n addEvents(img, imgEvents);\n\n // update src\n img.src = getAttr(img, 'data-src');\n\n // update srcset\n var srcset = getAttr(img, 'data-srcset');\n if (srcset) { img.srcset = srcset; }\n\n addClass(img, 'loading');\n }\n });\n }\n }\n\n function onImgLoaded (e) {\n imgLoaded(getTarget(e));\n }\n\n function onImgFailed (e) {\n imgFailed(getTarget(e));\n }\n\n function imgLoaded (img) {\n addClass(img, 'loaded');\n imgCompleted(img);\n }\n\n function imgFailed (img) {\n addClass(img, 'failed');\n imgCompleted(img);\n }\n\n function imgCompleted (img) {\n addClass(img, 'tns-complete');\n removeClass(img, 'loading');\n removeEvents(img, imgEvents);\n }\n\n function getImageArray (start, end) {\n var imgs = [];\n while (start <= end) {\n forEach(slideItems[start].querySelectorAll('img'), function (img) { imgs.push(img); });\n start++;\n }\n\n return imgs;\n }\n\n // check if all visible images are loaded\n // and update container height if it's done\n function doAutoHeight () {\n var imgs = getImageArray.apply(null, getVisibleSlideRange());\n raf(function(){ imgsLoadedCheck(imgs, updateInnerWrapperHeight); });\n }\n\n function imgsLoadedCheck (imgs, cb) {\n // directly execute callback function if all images are complete\n if (imgsComplete) { return cb(); }\n\n // check selected image classes otherwise\n imgs.forEach(function (img, index) {\n if (hasClass(img, imgCompleteClass)) { imgs.splice(index, 1); }\n });\n\n // execute callback function if selected images are all complete\n if (!imgs.length) { return cb(); }\n\n // otherwise execute this functiona again\n raf(function(){ imgsLoadedCheck(imgs, cb); });\n } \n\n function additionalUpdates () {\n doLazyLoad(); \n updateSlideStatus();\n updateLiveRegion();\n updateControlsStatus();\n updateNavStatus();\n }\n\n\n function update_carousel_transition_duration () {\n if (carousel && autoHeight) {\n middleWrapper.style[TRANSITIONDURATION] = speed / 1000 + 's';\n }\n }\n\n function getMaxSlideHeight (slideStart, slideRange) {\n var heights = [];\n for (var i = slideStart, l = Math.min(slideStart + slideRange, slideCountNew); i < l; i++) {\n heights.push(slideItems[i].offsetHeight);\n }\n\n return Math.max.apply(null, heights);\n }\n\n // update inner wrapper height\n // 1. get the max-height of the visible slides\n // 2. set transitionDuration to speed\n // 3. update inner wrapper height to max-height\n // 4. set transitionDuration to 0s after transition done\n function updateInnerWrapperHeight () {\n var maxHeight = autoHeight ? getMaxSlideHeight(index, items) : getMaxSlideHeight(cloneCount, slideCount),\n wp = middleWrapper ? middleWrapper : innerWrapper;\n\n if (wp.style.height !== maxHeight) { wp.style.height = maxHeight + 'px'; }\n }\n\n // get the distance from the top edge of the first slide to each slide\n // (init) => slidePositions\n function setSlidePositions () {\n slidePositions = [0];\n var attr = horizontal ? 'left' : 'top',\n attr2 = horizontal ? 'right' : 'bottom',\n base = slideItems[0].getBoundingClientRect()[attr];\n\n forEach(slideItems, function(item, i) {\n // skip the first slide\n if (i) { slidePositions.push(item.getBoundingClientRect()[attr] - base); }\n // add the end edge\n if (i === slideCountNew - 1) { slidePositions.push(item.getBoundingClientRect()[attr2] - base); }\n });\n }\n\n // update slide\n function updateSlideStatus () {\n var range = getVisibleSlideRange(),\n start = range[0],\n end = range[1];\n\n forEach(slideItems, function(item, i) {\n // show slides\n if (i >= start && i <= end) {\n if (hasAttr(item, 'aria-hidden')) {\n removeAttrs(item, ['aria-hidden', 'tabindex']);\n addClass(item, slideActiveClass);\n }\n // hide slides\n } else {\n if (!hasAttr(item, 'aria-hidden')) {\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n removeClass(item, slideActiveClass);\n }\n }\n });\n }\n\n // gallery: update slide position\n function updateGallerySlidePositions () {\n var l = index + Math.min(slideCount, items);\n for (var i = slideCountNew; i--;) {\n var item = slideItems[i];\n\n if (i >= index && i < l) {\n // add transitions to visible slides when adjusting their positions\n addClass(item, 'tns-moving');\n\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n } else if (item.style.left) {\n item.style.left = '';\n addClass(item, animateNormal);\n removeClass(item, animateIn);\n }\n\n // remove outlet animation\n removeClass(item, animateOut);\n }\n\n // removing '.tns-moving'\n setTimeout(function() {\n forEach(slideItems, function(el) {\n removeClass(el, 'tns-moving');\n });\n }, 300);\n }\n\n // set tabindex on Nav\n function updateNavStatus () {\n // get current nav\n if (nav) {\n navCurrentIndex = navClicked >= 0 ? navClicked : getCurrentNavIndex();\n navClicked = -1;\n\n if (navCurrentIndex !== navCurrentIndexCached) {\n var navPrev = navItems[navCurrentIndexCached],\n navCurrent = navItems[navCurrentIndex];\n\n setAttrs(navPrev, {\n 'tabindex': '-1',\n 'aria-label': navStr + (navCurrentIndexCached + 1)\n });\n removeClass(navPrev, navActiveClass);\n \n setAttrs(navCurrent, {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navCurrent, 'tabindex');\n addClass(navCurrent, navActiveClass);\n\n navCurrentIndexCached = navCurrentIndex;\n }\n }\n }\n\n function getLowerCaseNodeName (el) {\n return el.nodeName.toLowerCase();\n }\n\n function isButton (el) {\n return getLowerCaseNodeName(el) === 'button';\n }\n\n function isAriaDisabled (el) {\n return el.getAttribute('aria-disabled') === 'true';\n }\n\n function disEnableElement (isButton, el, val) {\n if (isButton) {\n el.disabled = val;\n } else {\n el.setAttribute('aria-disabled', val.toString());\n }\n }\n\n // set 'disabled' to true on controls when reach the edges\n function updateControlsStatus () {\n if (!controls || rewind || loop) { return; }\n\n var prevDisabled = (prevIsButton) ? prevButton.disabled : isAriaDisabled(prevButton),\n nextDisabled = (nextIsButton) ? nextButton.disabled : isAriaDisabled(nextButton),\n disablePrev = (index <= indexMin) ? true : false,\n disableNext = (!rewind && index >= indexMax) ? true : false;\n\n if (disablePrev && !prevDisabled) {\n disEnableElement(prevIsButton, prevButton, true);\n }\n if (!disablePrev && prevDisabled) {\n disEnableElement(prevIsButton, prevButton, false);\n }\n if (disableNext && !nextDisabled) {\n disEnableElement(nextIsButton, nextButton, true);\n }\n if (!disableNext && nextDisabled) {\n disEnableElement(nextIsButton, nextButton, false);\n }\n }\n\n // set duration\n function resetDuration (el, str) {\n if (TRANSITIONDURATION) { el.style[TRANSITIONDURATION] = str; }\n }\n\n function getSliderWidth () {\n return fixedWidth ? (fixedWidth + gutter) * slideCountNew : slidePositions[slideCountNew];\n }\n\n function getCenterGap (num) {\n if (num == null) { num = index; }\n\n var gap = edgePadding ? gutter : 0;\n return autoWidth ? ((viewport - gap) - (slidePositions[num + 1] - slidePositions[num] - gutter))/2 :\n fixedWidth ? (viewport - fixedWidth) / 2 :\n (items - 1) / 2;\n }\n\n function getRightBoundary () {\n var gap = edgePadding ? gutter : 0,\n result = (viewport + gap) - getSliderWidth();\n\n if (center && !loop) {\n result = fixedWidth ? - (fixedWidth + gutter) * (slideCountNew - 1) - getCenterGap() :\n getCenterGap(slideCountNew - 1) - slidePositions[slideCountNew - 1];\n }\n if (result > 0) { result = 0; }\n\n return result;\n }\n\n function getContainerTransformValue (num) {\n if (num == null) { num = index; }\n\n var val;\n if (horizontal && !autoWidth) {\n if (fixedWidth) {\n val = - (fixedWidth + gutter) * num;\n if (center) { val += getCenterGap(); }\n } else {\n var denominator = TRANSFORM ? slideCountNew : items;\n if (center) { num -= getCenterGap(); }\n val = - num * 100 / denominator;\n }\n } else {\n val = - slidePositions[num];\n if (center && autoWidth) {\n val += getCenterGap();\n }\n }\n\n if (hasRightDeadZone) { val = Math.max(val, rightBoundary); }\n\n val += (horizontal && !autoWidth && !fixedWidth) ? '%' : 'px';\n\n return val;\n }\n\n function doContainerTransformSilent (val) {\n resetDuration(container, '0s');\n doContainerTransform(val);\n }\n\n function doContainerTransform (val) {\n if (val == null) { val = getContainerTransformValue(); }\n container.style[transformAttr] = transformPrefix + val + transformPostfix;\n }\n\n function animateSlide (number, classOut, classIn, isOut) {\n var l = number + items;\n if (!loop) { l = Math.min(l, slideCountNew); }\n\n for (var i = number; i < l; i++) {\n var item = slideItems[i];\n\n // set item positions\n if (!isOut) { item.style.left = (i - index) * 100 / items + '%'; }\n\n if (animateDelay && TRANSITIONDELAY) {\n item.style[TRANSITIONDELAY] = item.style[ANIMATIONDELAY] = animateDelay * (i - number) / 1000 + 's';\n }\n removeClass(item, classOut);\n addClass(item, classIn);\n \n if (isOut) { slideItemsOut.push(item); }\n }\n }\n\n // make transfer after click/drag:\n // 1. change 'transform' property for mordern browsers\n // 2. change 'left' property for legacy browsers\n var transformCore = (function () {\n return carousel ?\n function () {\n resetDuration(container, '');\n if (TRANSITIONDURATION || !speed) {\n // for morden browsers with non-zero duration or \n // zero duration for all browsers\n doContainerTransform();\n // run fallback function manually \n // when duration is 0 / container is hidden\n if (!speed || !isVisible(container)) { onTransitionEnd(); }\n\n } else {\n // for old browser with non-zero duration\n jsTransform(container, transformAttr, transformPrefix, transformPostfix, getContainerTransformValue(), speed, onTransitionEnd);\n }\n\n if (!horizontal) { updateContentWrapperHeight(); }\n } :\n function () {\n slideItemsOut = [];\n\n var eve = {};\n eve[TRANSITIONEND] = eve[ANIMATIONEND] = onTransitionEnd;\n removeEvents(slideItems[indexCached], eve);\n addEvents(slideItems[index], eve);\n\n animateSlide(indexCached, animateIn, animateOut, true);\n animateSlide(index, animateNormal, animateIn);\n\n // run fallback function manually \n // when transition or animation not supported / duration is 0\n if (!TRANSITIONEND || !ANIMATIONEND || !speed || !isVisible(container)) { onTransitionEnd(); }\n };\n })();\n\n function render (e, sliderMoved) {\n if (updateIndexBeforeTransform) { updateIndex(); }\n\n // render when slider was moved (touch or drag) even though index may not change\n if (index !== indexCached || sliderMoved) {\n // events\n events.emit('indexChanged', info());\n events.emit('transitionStart', info());\n if (autoHeight) { doAutoHeight(); }\n\n // pause autoplay when click or keydown from user\n if (animating && e && ['click', 'keydown'].indexOf(e.type) >= 0) { stopAutoplay(); }\n\n running = true;\n transformCore();\n }\n }\n\n /*\n * Transfer prefixed properties to the same format\n * CSS: -Webkit-Transform => webkittransform\n * JS: WebkitTransform => webkittransform\n * @param {string} str - property\n *\n */\n function strTrans (str) {\n return str.toLowerCase().replace(/-/g, '');\n }\n\n // AFTER TRANSFORM\n // Things need to be done after a transfer:\n // 1. check index\n // 2. add classes to visible slide\n // 3. disable controls buttons when reach the first/last slide in non-loop slider\n // 4. update nav status\n // 5. lazyload images\n // 6. update container height\n function onTransitionEnd (event) {\n // check running on gallery mode\n // make sure trantionend/animationend events run only once\n if (carousel || running) {\n events.emit('transitionEnd', info(event));\n\n if (!carousel && slideItemsOut.length > 0) {\n for (var i = 0; i < slideItemsOut.length; i++) {\n var item = slideItemsOut[i];\n // set item positions\n item.style.left = '';\n\n if (ANIMATIONDELAY && TRANSITIONDELAY) { \n item.style[ANIMATIONDELAY] = '';\n item.style[TRANSITIONDELAY] = '';\n }\n removeClass(item, animateOut);\n addClass(item, animateNormal);\n }\n }\n\n /* update slides, nav, controls after checking ...\n * => legacy browsers who don't support 'event' \n * have to check event first, otherwise event.target will cause an error \n * => or 'gallery' mode: \n * + event target is slide item\n * => or 'carousel' mode: \n * + event target is container, \n * + event.property is the same with transform attribute\n */\n if (!event || \n !carousel && event.target.parentNode === container || \n event.target === container && strTrans(event.propertyName) === strTrans(transformAttr)) {\n\n if (!updateIndexBeforeTransform) { \n var indexTem = index;\n updateIndex();\n if (index !== indexTem) { \n events.emit('indexChanged', info());\n\n doContainerTransformSilent();\n }\n } \n\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n running = false;\n indexCached = index;\n }\n }\n\n }\n\n // # ACTIONS\n function goTo (targetIndex, e) {\n if (freeze) { return; }\n\n // prev slideBy\n if (targetIndex === 'prev') {\n onControlsClick(e, -1);\n\n // next slideBy\n } else if (targetIndex === 'next') {\n onControlsClick(e, 1);\n\n // go to exact slide\n } else {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n var absIndex = getAbsIndex(), \n indexGap = 0;\n\n if (targetIndex === 'first') {\n indexGap = - absIndex;\n } else if (targetIndex === 'last') {\n indexGap = carousel ? slideCount - items - absIndex : slideCount - 1 - absIndex;\n } else {\n if (typeof targetIndex !== 'number') { targetIndex = parseInt(targetIndex); }\n\n if (!isNaN(targetIndex)) {\n // from directly called goTo function\n if (!e) { targetIndex = Math.max(0, Math.min(slideCount - 1, targetIndex)); }\n\n indexGap = targetIndex - absIndex;\n }\n }\n\n // gallery: make sure new page won't overlap with current page\n if (!carousel && indexGap && Math.abs(indexGap) < items) {\n var factor = indexGap > 0 ? 1 : -1;\n indexGap += (index + indexGap - slideCount) >= indexMin ? slideCount * factor : slideCount * 2 * factor * -1;\n }\n\n index += indexGap;\n\n // make sure index is in range\n if (carousel && loop) {\n if (index < indexMin) { index += slideCount; }\n if (index > indexMax) { index -= slideCount; }\n }\n\n // if index is changed, start rendering\n if (getAbsIndex(index) !== getAbsIndex(indexCached)) {\n render(e);\n }\n\n }\n }\n\n // on controls click\n function onControlsClick (e, dir) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n var passEventObject;\n\n if (!dir) {\n e = getEvent(e);\n var target = getTarget(e);\n\n while (target !== controlsContainer && [prevButton, nextButton].indexOf(target) < 0) { target = target.parentNode; }\n\n var targetIn = [prevButton, nextButton].indexOf(target);\n if (targetIn >= 0) {\n passEventObject = true;\n dir = targetIn === 0 ? -1 : 1;\n }\n }\n\n if (rewind) {\n if (index === indexMin && dir === -1) {\n goTo('last', e);\n return;\n } else if (index === indexMax && dir === 1) {\n goTo('first', e);\n return;\n }\n }\n\n if (dir) {\n index += slideBy * dir;\n if (autoWidth) { index = Math.floor(index); }\n // pass e when click control buttons or keydown\n render((passEventObject || (e && e.type === 'keydown')) ? e : null);\n }\n }\n\n // on nav click\n function onNavClick (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n \n e = getEvent(e);\n var target = getTarget(e), navIndex;\n\n // find the clicked nav item\n while (target !== navContainer && !hasAttr(target, 'data-nav')) { target = target.parentNode; }\n if (hasAttr(target, 'data-nav')) {\n var navIndex = navClicked = Number(getAttr(target, 'data-nav')),\n targetIndexBase = fixedWidth || autoWidth ? navIndex * slideCount / pages : navIndex * items,\n targetIndex = navAsThumbnails ? navIndex : Math.min(Math.ceil(targetIndexBase), slideCount - 1);\n goTo(targetIndex, e);\n\n if (navCurrentIndex === navIndex) {\n if (animating) { stopAutoplay(); }\n navClicked = -1; // reset navClicked\n }\n }\n }\n\n // autoplay functions\n function setAutoplayTimer () {\n autoplayTimer = setInterval(function () {\n onControlsClick(null, autoplayDirection);\n }, autoplayTimeout);\n\n animating = true;\n }\n\n function stopAutoplayTimer () {\n clearInterval(autoplayTimer);\n animating = false;\n }\n\n function updateAutoplayButton (action, txt) {\n setAttrs(autoplayButton, {'data-action': action});\n autoplayButton.innerHTML = autoplayHtmlStrings[0] + action + autoplayHtmlStrings[1] + txt;\n }\n\n function startAutoplay () {\n setAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('stop', autoplayText[1]); }\n }\n\n function stopAutoplay () {\n stopAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('start', autoplayText[0]); }\n }\n\n // programaitcally play/pause the slider\n function play () {\n if (autoplay && !animating) {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n function pause () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n }\n }\n\n function toggleAutoplay () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n } else {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n\n function onVisibilityChange () {\n if (doc.hidden) {\n if (animating) {\n stopAutoplayTimer();\n autoplayVisibilityPaused = true;\n }\n } else if (autoplayVisibilityPaused) {\n setAutoplayTimer();\n autoplayVisibilityPaused = false;\n }\n }\n\n function mouseoverPause () {\n if (animating) { \n stopAutoplayTimer();\n autoplayHoverPaused = true;\n }\n }\n\n function mouseoutRestart () {\n if (autoplayHoverPaused) { \n setAutoplayTimer();\n autoplayHoverPaused = false;\n }\n }\n\n // keydown events on document \n function onDocumentKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n onControlsClick(e, keyIndex === 0 ? -1 : 1);\n }\n }\n\n // on key control\n function onControlsKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (!prevButton.disabled) { onControlsClick(e, -1); }\n } else if (!nextButton.disabled) {\n onControlsClick(e, 1);\n }\n }\n }\n\n // set focus\n function setFocus (el) {\n el.focus();\n }\n\n // on key nav\n function onNavKeydown (e) {\n e = getEvent(e);\n var curElement = doc.activeElement;\n if (!hasAttr(curElement, 'data-nav')) { return; }\n\n // var code = e.keyCode,\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT, KEYS.ENTER, KEYS.SPACE].indexOf(e.keyCode),\n navIndex = Number(getAttr(curElement, 'data-nav'));\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (navIndex > 0) { setFocus(navItems[navIndex - 1]); }\n } else if (keyIndex === 1) {\n if (navIndex < pages - 1) { setFocus(navItems[navIndex + 1]); }\n } else {\n navClicked = navIndex;\n goTo(navIndex, e);\n }\n }\n }\n\n function getEvent (e) {\n e = e || win.event;\n return isTouchEvent(e) ? e.changedTouches[0] : e;\n }\n function getTarget (e) {\n return e.target || win.event.srcElement;\n }\n\n function isTouchEvent (e) {\n return e.type.indexOf('touch') >= 0;\n }\n\n function preventDefaultBehavior (e) {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n }\n\n function getMoveDirectionExpected () {\n return getTouchDirection(toDegree(lastPosition.y - initPosition.y, lastPosition.x - initPosition.x), swipeAngle) === options.axis;\n }\n\n function onPanStart (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n if (autoplay && animating) { stopAutoplayTimer(); }\n \n panStart = true;\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n\n var $ = getEvent(e);\n events.emit(isTouchEvent(e) ? 'touchStart' : 'dragStart', info(e));\n\n if (!isTouchEvent(e) && ['img', 'a'].indexOf(getLowerCaseNodeName(getTarget(e))) >= 0) {\n preventDefaultBehavior(e);\n }\n\n lastPosition.x = initPosition.x = $.clientX;\n lastPosition.y = initPosition.y = $.clientY;\n if (carousel) {\n translateInit = parseFloat(container.style[transformAttr].replace(transformPrefix, ''));\n resetDuration(container, '0s');\n }\n }\n\n function onPanMove (e) {\n if (panStart) {\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n\n if (carousel) {\n if (!rafIndex) { rafIndex = raf(function(){ panUpdate(e); }); }\n } else {\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) { preventScroll = true; }\n }\n\n if (preventScroll) { e.preventDefault(); }\n }\n }\n\n function panUpdate (e) {\n if (!moveDirectionExpected) {\n panStart = false;\n return;\n }\n caf(rafIndex);\n if (panStart) { rafIndex = raf(function(){ panUpdate(e); }); }\n\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) {\n if (!preventScroll && isTouchEvent(e)) { preventScroll = true; }\n\n try {\n if (e.type) { events.emit(isTouchEvent(e) ? 'touchMove' : 'dragMove', info(e)); }\n } catch(err) {}\n\n var x = translateInit,\n dist = getDist(lastPosition, initPosition);\n if (!horizontal || fixedWidth || autoWidth) {\n x += dist;\n x += 'px';\n } else {\n var percentageX = TRANSFORM ? dist * items * 100 / ((viewport + gutter) * slideCountNew): dist * 100 / (viewport + gutter);\n x += percentageX;\n x += '%';\n }\n\n container.style[transformAttr] = transformPrefix + x + transformPostfix;\n }\n }\n\n function onPanEnd (e) {\n if (panStart) {\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n if (carousel) { resetDuration(container, ''); }\n panStart = false;\n\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n var dist = getDist(lastPosition, initPosition);\n\n if (Math.abs(dist)) {\n // drag vs click\n if (!isTouchEvent(e)) {\n // prevent \"click\"\n var target = getTarget(e);\n addEvents(target, {'click': function preventClick (e) {\n preventDefaultBehavior(e);\n removeEvents(target, {'click': preventClick});\n }}); \n }\n\n if (carousel) {\n rafIndex = raf(function() {\n if (horizontal && !autoWidth) {\n var indexMoved = - dist * items / (viewport + gutter);\n indexMoved = dist > 0 ? Math.floor(indexMoved) : Math.ceil(indexMoved);\n index += indexMoved;\n } else {\n var moved = - (translateInit + dist);\n if (moved <= 0) {\n index = indexMin;\n } else if (moved >= slidePositions[slideCountNew - 1]) {\n index = indexMax;\n } else {\n var i = 0;\n while (i < slideCountNew && moved >= slidePositions[i]) {\n index = i;\n if (moved > slidePositions[i] && dist < 0) { index += 1; }\n i++;\n }\n }\n }\n\n render(e, dist);\n events.emit(isTouchEvent(e) ? 'touchEnd' : 'dragEnd', info(e));\n });\n } else {\n if (moveDirectionExpected) {\n onControlsClick(e, dist > 0 ? -1 : 1);\n }\n }\n }\n }\n\n // reset\n if (options.preventScrollOnTouch === 'auto') { preventScroll = false; }\n if (swipeAngle) { moveDirectionExpected = '?'; } \n if (autoplay && !animating) { setAutoplayTimer(); }\n }\n\n // === RESIZE FUNCTIONS === //\n // (slidePositions, index, items) => vertical_conentWrapper.height\n function updateContentWrapperHeight () {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.style.height = slidePositions[index + items] - slidePositions[index] + 'px';\n }\n\n function getPages () {\n var rough = fixedWidth ? (fixedWidth + gutter) * slideCount / viewport : slideCount / items;\n return Math.min(Math.ceil(rough), slideCount);\n }\n\n /*\n * 1. update visible nav items list\n * 2. add \"hidden\" attributes to previous visible nav items\n * 3. remove \"hidden\" attrubutes to new visible nav items\n */\n function updateNavVisibility () {\n if (!nav || navAsThumbnails) { return; }\n\n if (pages !== pagesCached) {\n var min = pagesCached,\n max = pages,\n fn = showElement;\n\n if (pagesCached > pages) {\n min = pages;\n max = pagesCached;\n fn = hideElement;\n }\n\n while (min < max) {\n fn(navItems[min]);\n min++;\n }\n\n // cache pages\n pagesCached = pages;\n }\n }\n\n function info (e) {\n return {\n container: container,\n slideItems: slideItems,\n navContainer: navContainer,\n navItems: navItems,\n controlsContainer: controlsContainer,\n hasControls: hasControls,\n prevButton: prevButton,\n nextButton: nextButton,\n items: items,\n slideBy: slideBy,\n cloneCount: cloneCount,\n slideCount: slideCount,\n slideCountNew: slideCountNew,\n index: index,\n indexCached: indexCached,\n displayIndex: getCurrentSlide(),\n navCurrentIndex: navCurrentIndex,\n navCurrentIndexCached: navCurrentIndexCached,\n pages: pages,\n pagesCached: pagesCached,\n sheet: sheet,\n isOn: isOn,\n event: e || {},\n };\n }\n\n return {\n version: '2.9.2',\n getInfo: info,\n events: events,\n goTo: goTo,\n play: play,\n pause: pause,\n isOn: isOn,\n updateSliderHeight: updateInnerWrapperHeight,\n refresh: initSliderTransform,\n destroy: destroy,\n rebuild: function() {\n return tns(extend(options, optionsElements));\n }\n };\n};\n","export function getSlideId() {\n var id = window.tnsId;\n window.tnsId = !id ? 1 : id + 1;\n \n return 'tns' + window.tnsId;\n}","// get css-calc \n// @return - false | calc | -webkit-calc | -moz-calc\n// @usage - var calc = getCalc(); \nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function calc() {\n var doc = document, \n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'), \n result = false;\n\n body.appendChild(div);\n try {\n var str = '(10px * 10)',\n vals = ['calc' + str, '-moz-calc' + str, '-webkit-calc' + str],\n val;\n for (var i = 0; i < 3; i++) {\n val = vals[i];\n div.style.width = val;\n if (div.offsetWidth === 100) { \n result = val.replace(str, ''); \n break;\n }\n }\n } catch (e) {}\n \n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return result;\n}","// get subpixel support value\n// @return - boolean\nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function percentageLayout() {\n // check subpixel layout supporting\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n wrapper = doc.createElement('div'),\n outer = doc.createElement('div'),\n str = '',\n count = 70,\n perPage = 3,\n supported = false;\n\n wrapper.className = \"tns-t-subp2\";\n outer.className = \"tns-t-ct\";\n\n for (var i = 0; i < count; i++) {\n str += '
';\n }\n\n outer.innerHTML = str;\n wrapper.appendChild(outer);\n body.appendChild(wrapper);\n\n supported = Math.abs(wrapper.getBoundingClientRect().left - outer.children[count - perPage].getBoundingClientRect().left) < 2;\n\n body.fake ? resetFakeBody(body, docOverflow) : wrapper.remove();\n\n return supported;\n}","import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function mediaquerySupport () {\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'),\n style = doc.createElement('style'),\n rule = '@media all and (min-width:1px){.tns-mq-test{position:absolute}}',\n position;\n\n style.type = 'text/css';\n div.className = 'tns-mq-test';\n\n body.appendChild(style);\n body.appendChild(div);\n\n if (style.styleSheet) {\n style.styleSheet.cssText = rule;\n } else {\n style.appendChild(doc.createTextNode(rule));\n }\n\n position = window.getComputedStyle ? window.getComputedStyle(div).position : div.currentStyle['position'];\n\n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return position === \"absolute\";\n}","// create and append style sheet\nexport function createStyleSheet (media) {\n // Create the