{"version":3,"sources":["webpack://finstar/./app/components/anchor.ts","webpack://finstar/./app/components/back-to-top/back-to-top.ts","webpack://finstar/./app/components/back-to-top/navigation.ts","webpack://finstar/./app/components/dots-picture/dots-picture.ts","webpack://finstar/./app/components/header/header.ts","webpack://finstar/./app/components/language-chooser.ts","webpack://finstar/./app/components/magic-scroll.ts","webpack://finstar/./app/components/masonry/masonry.ts","webpack://finstar/./app/components/mega-dropdown.ts","webpack://finstar/./app/components/navbar/index.ts","webpack://finstar/./app/components/navbar/navbar-mega-dropdown.ts","webpack://finstar/./app/components/navbar/navbar-toggler.ts","webpack://finstar/./app/components/navbar/navbar.ts","webpack://finstar/./app/components/search/index.ts","webpack://finstar/./app/components/search/search-toggler.ts","webpack://finstar/./app/components/search/search.ts","webpack://finstar/./app/utilities/detection.ts","webpack://finstar/./app/utilities/scroll-helper.ts","webpack://finstar/./node_modules/@opten/animation/ease-in-out-quad/index.ts","webpack://finstar/./node_modules/@opten/animation/linear-tween/index.ts","webpack://finstar/./node_modules/@opten/collapse/index.ts","webpack://finstar/./node_modules/@opten/collapse/initializer/index.ts","webpack://finstar/./node_modules/@opten/common/new-guid/index.ts","webpack://finstar/./node_modules/@opten/common/wrap-function/index.ts","webpack://finstar/./node_modules/@opten/compiler/factory/index.ts","webpack://finstar/./node_modules/@opten/compiler/index.ts","webpack://finstar/./node_modules/@opten/compiler/metadata/component.ts","webpack://finstar/./node_modules/@opten/compiler/metadata/di.ts","webpack://finstar/./node_modules/@opten/compiler/reflector/index.ts","webpack://finstar/./node_modules/@opten/compiler/resolver/index.ts","webpack://finstar/./node_modules/@opten/compiler/util/decorators.ts","webpack://finstar/./node_modules/@opten/compiler/util/factories.ts","webpack://finstar/./node_modules/@opten/compiler/util/type.ts","webpack://finstar/./node_modules/@opten/dom/add-class/index.ts","webpack://finstar/./node_modules/@opten/dom/as-html-element/index.ts","webpack://finstar/./node_modules/@opten/dom/change-class/index.ts","webpack://finstar/./node_modules/@opten/dom/class-regex/index.ts","webpack://finstar/./node_modules/@opten/dom/create-node/index.ts","webpack://finstar/./node_modules/@opten/dom/first-by-class/index.ts","webpack://finstar/./node_modules/@opten/dom/get-class/index.ts","webpack://finstar/./node_modules/@opten/dom/get-css/index.ts","webpack://finstar/./node_modules/@opten/dom/get-offset/index.ts","webpack://finstar/./node_modules/@opten/dom/get-parent-with-class/index.ts","webpack://finstar/./node_modules/@opten/dom/get-parents-or-self/index.ts","webpack://finstar/./node_modules/@opten/dom/get-parents/index.ts","webpack://finstar/./node_modules/@opten/dom/get-selector-element-from-element/index.ts","webpack://finstar/./node_modules/@opten/dom/get-selector-from-element/index.ts","webpack://finstar/./node_modules/@opten/dom/get-siblings/index.ts","webpack://finstar/./node_modules/@opten/dom/get-styles/index.ts","webpack://finstar/./node_modules/@opten/dom/get-window-scroll-top/index.ts","webpack://finstar/./node_modules/@opten/dom/has-class/index.ts","webpack://finstar/./node_modules/@opten/dom/is-ancestor-of-class/index.ts","webpack://finstar/./node_modules/@opten/dom/is-html-element/index.ts","webpack://finstar/./node_modules/@opten/dom/remove-class/index.ts","webpack://finstar/./node_modules/@opten/dom/toggle-class/index.ts","webpack://finstar/./node_modules/@opten/events/dispatch-custom-event/index.ts","webpack://finstar/./node_modules/@opten/events/event-namespace-factory/index.ts","webpack://finstar/./node_modules/@opten/keycodes/index.ts","webpack://finstar/./node_modules/@opten/number/parse-css-unit/index.ts","webpack://finstar/./node_modules/@opten/overlay/index.ts","webpack://finstar/./node_modules/@opten/overlay/keyboard/overlay-keyboard-dispatcher.ts","webpack://finstar/./node_modules/@opten/overlay/overlay-options.ts","webpack://finstar/./node_modules/@opten/overlay/overlay.ts","webpack://finstar/./node_modules/@opten/overlay/position/connected-position-strategy.ts","webpack://finstar/./node_modules/@opten/overlay/position/connected-position.ts","webpack://finstar/./node_modules/@opten/overlay/position/global-position-strategy.ts","webpack://finstar/./node_modules/@opten/overlay/position/overlay-position-builder.ts","webpack://finstar/./node_modules/@opten/overlay/scroll/reposition-scroll-strategy.ts","webpack://finstar/./node_modules/@opten/script/create-script/index.ts","webpack://finstar/./node_modules/@opten/script/get-script-by-src/index.ts","webpack://finstar/./node_modules/@opten/script/load-script/index.ts","webpack://finstar/./node_modules/@opten/scroll/scroll-to-element/index.ts","webpack://finstar/./node_modules/@opten/scroll/scroll-to-offset/index.ts","webpack://finstar/./node_modules/@opten/scroll/scroll-to/index.ts","webpack://finstar/./node_modules/@opten/select/index.ts","webpack://finstar/./node_modules/@opten/sticky/stick-to-parent.ts","webpack://finstar/./node_modules/@opten/transition/add-transition-end-listener/index.ts","webpack://finstar/./node_modules/@opten/transition/get-transition-end-event-name/index.ts","webpack://finstar/./node_modules/@opten/url/remove-domain/index.ts","webpack://finstar/./node_modules/@opten/viewport/is-element-clipped-by-scrolling/index.ts","webpack://finstar/./node_modules/@opten/viewport/is-element-scrolled-outside-view/index.ts","webpack://finstar/./node_modules/clip-path/dist/clippath.min.js","webpack://finstar/./node_modules/core-js/es6/reflect.js","webpack://finstar/./node_modules/core-js/fn/object/assign.js","webpack://finstar/./node_modules/core-js/modules/_a-function.js","webpack://finstar/./node_modules/core-js/modules/_an-object.js","webpack://finstar/./node_modules/core-js/modules/_array-includes.js","webpack://finstar/./node_modules/core-js/modules/_bind.js","webpack://finstar/./node_modules/core-js/modules/_cof.js","webpack://finstar/./node_modules/core-js/modules/_core.js","webpack://finstar/./node_modules/core-js/modules/_ctx.js","webpack://finstar/./node_modules/core-js/modules/_defined.js","webpack://finstar/./node_modules/core-js/modules/_descriptors.js","webpack://finstar/./node_modules/core-js/modules/_dom-create.js","webpack://finstar/./node_modules/core-js/modules/_enum-bug-keys.js","webpack://finstar/./node_modules/core-js/modules/_export.js","webpack://finstar/./node_modules/core-js/modules/_fails.js","webpack://finstar/./node_modules/core-js/modules/_function-to-string.js","webpack://finstar/./node_modules/core-js/modules/_global.js","webpack://finstar/./node_modules/core-js/modules/_has.js","webpack://finstar/./node_modules/core-js/modules/_hide.js","webpack://finstar/./node_modules/core-js/modules/_html.js","webpack://finstar/./node_modules/core-js/modules/_ie8-dom-define.js","webpack://finstar/./node_modules/core-js/modules/_invoke.js","webpack://finstar/./node_modules/core-js/modules/_iobject.js","webpack://finstar/./node_modules/core-js/modules/_is-object.js","webpack://finstar/./node_modules/core-js/modules/_iter-create.js","webpack://finstar/./node_modules/core-js/modules/_library.js","webpack://finstar/./node_modules/core-js/modules/_object-assign.js","webpack://finstar/./node_modules/core-js/modules/_object-create.js","webpack://finstar/./node_modules/core-js/modules/_object-dp.js","webpack://finstar/./node_modules/core-js/modules/_object-dps.js","webpack://finstar/./node_modules/core-js/modules/_object-gopd.js","webpack://finstar/./node_modules/core-js/modules/_object-gopn.js","webpack://finstar/./node_modules/core-js/modules/_object-gops.js","webpack://finstar/./node_modules/core-js/modules/_object-gpo.js","webpack://finstar/./node_modules/core-js/modules/_object-keys-internal.js","webpack://finstar/./node_modules/core-js/modules/_object-keys.js","webpack://finstar/./node_modules/core-js/modules/_object-pie.js","webpack://finstar/./node_modules/core-js/modules/_own-keys.js","webpack://finstar/./node_modules/core-js/modules/_property-desc.js","webpack://finstar/./node_modules/core-js/modules/_redefine.js","webpack://finstar/./node_modules/core-js/modules/_set-proto.js","webpack://finstar/./node_modules/core-js/modules/_set-to-string-tag.js","webpack://finstar/./node_modules/core-js/modules/_shared-key.js","webpack://finstar/./node_modules/core-js/modules/_shared.js","webpack://finstar/./node_modules/core-js/modules/_to-absolute-index.js","webpack://finstar/./node_modules/core-js/modules/_to-integer.js","webpack://finstar/./node_modules/core-js/modules/_to-iobject.js","webpack://finstar/./node_modules/core-js/modules/_to-length.js","webpack://finstar/./node_modules/core-js/modules/_to-object.js","webpack://finstar/./node_modules/core-js/modules/_to-primitive.js","webpack://finstar/./node_modules/core-js/modules/_uid.js","webpack://finstar/./node_modules/core-js/modules/_wks.js","webpack://finstar/./node_modules/core-js/modules/es6.object.assign.js","webpack://finstar/./node_modules/core-js/modules/es6.reflect.apply.js","webpack://finstar/./node_modules/core-js/modules/es6.reflect.construct.js","webpack://finstar/./node_modules/core-js/modules/es6.reflect.define-property.js","webpack://finstar/./node_modules/core-js/modules/es6.reflect.delete-property.js","webpack://finstar/./node_modules/core-js/modules/es6.reflect.enumerate.js","webpack://finstar/./node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","webpack://finstar/./node_modules/core-js/modules/es6.reflect.get-prototype-of.js","webpack://finstar/./node_modules/core-js/modules/es6.reflect.get.js","webpack://finstar/./node_modules/core-js/modules/es6.reflect.has.js","webpack://finstar/./node_modules/core-js/modules/es6.reflect.is-extensible.js","webpack://finstar/./node_modules/core-js/modules/es6.reflect.own-keys.js","webpack://finstar/./node_modules/core-js/modules/es6.reflect.prevent-extensions.js","webpack://finstar/./node_modules/core-js/modules/es6.reflect.set-prototype-of.js","webpack://finstar/./node_modules/core-js/modules/es6.reflect.set.js","webpack://finstar/./node_modules/picturefill/dist/picturefill.js","webpack://finstar/../Opten.HypothekarbankLenzburg.Core.Static/components/cookie-consent.ts","webpack://finstar/../Opten.HypothekarbankLenzburg.Core.Static/components/datepicker.ts","webpack://finstar/../Opten.HypothekarbankLenzburg.Core.Static/components/filterpage.ts","webpack://finstar/../Opten.HypothekarbankLenzburg.Core.Static/components/input-fields-filled.ts","webpack://finstar/../Opten.HypothekarbankLenzburg.Core.Static/components/photoswipe/photoswipe.ts","webpack://finstar/../Opten.HypothekarbankLenzburg.Core.Static/components/player/player.ts","webpack://finstar/../Opten.HypothekarbankLenzburg.Core.Static/components/recaptcha-3.ts","webpack://finstar/../Opten.HypothekarbankLenzburg.Core.Static/components/recaptcha.ts","webpack://finstar/../Opten.HypothekarbankLenzburg.Core.Static/components/select/select.ts","webpack://finstar/../Opten.HypothekarbankLenzburg.Core.Static/utilities/cookie.ts","webpack://finstar/../Opten.HypothekarbankLenzburg.Core.Static/utilities/detection.ts","webpack://finstar/../Opten.HypothekarbankLenzburg.Core.Static/utilities/polyfills.ts","webpack://finstar/../Opten.HypothekarbankLenzburg.Web.Static/app/utilities/detection.ts","webpack://finstar/../Opten.HypothekarbankLenzburg.Web.Static/app/utilities/scroll-helper.ts","webpack://finstar/./app/finstar.scss","webpack://finstar/webpack/bootstrap","webpack://finstar/webpack/runtime/define property getters","webpack://finstar/webpack/runtime/hasOwnProperty shorthand","webpack://finstar/webpack/runtime/make namespace object","webpack://finstar/webpack/runtime/node module decorator","webpack://finstar/./app/finstar.ts"],"names":["Anchor","Component","className","element","_handleCollapse","_animate","_cookieConsent","removeEventListener","_handleCookieConsent","_scroll","this","document","getElementsByClassName","addEventListener","check","window","_canScroll","sidebarPanel","getElementById","hasClass","closeElement","Array","from","click","setTimeout","hash","location","indexOf","querySelector","substring","getElement","getAttribute","target","getSelectorElementFromElement","api","Collapse","isOpen","show","offset","getOffset","top","parseCssUnit","getCss","getStickyOffset","isPad","Math","round","scrollTo","BackToTopComponent","ComponentRef","Header","_bodyElement","body","animate","_headerElement","_update","removeClass","addClass","NavigationHideScrollDownShowScrollUpComponent","_lastScrollTop","_threshold","_navHeight","_direction","_wrapperElement","init","handleScroll","pageYOffset","currentYOffset","DotPicture","color","x","y","left","width","height","fill","scale","context","setTransform","beginPath","arc","PI","fillStyle","DotsPictureComponent","signs","mouse","gridXLength","gridYLength","invisibleBorder","space","mouseMoved","mouseOver","getContext","canvasColor","clearRect","clientWidth","clearTimeout","resizeId","handleResize","canvasWidth","canvasHeight","i","j","sign","TweenLite","ticker","draw","e","handleMouseMove","handleTouchMove","handleMouseLeave","calculateIconPosition","save","closePath","restore","radius","dx","dy","dist","sqrt","angle","atan2","scaleFactor","TweenMax","to","cos","sin","rect","getBoundingClientRect","clientX","clientY","touches","_paddingTop","_cachedHeight","_handleBoxShadow","_dropdowns","_handleScroll","_topCache","style","_hideDropdown","toggler","length","forEach","dropdown","classList","contains","parentElement","setAttribute","_handleScrollDown","_handleScrollUp","getWindowScrollTop","_height","LanguageChooserComponent","handleChangeLanguageChooser","select","selectMenu","selectedIndex","selectedTag","options","href","scrollMagicController","ScrollMagic","Controller","MagicScrollComponent","observe","triggerElement","scene","toUpperCase","initSceneKeyvisual","initSceneSticky","initSceneClassToggle","querySelectorAll","setSceneKeyvisual","destroy","getSceneKeyvisualOffset","cssTransformation","marginTop","getSceneKeyVisualSpacingTop","innerWidth","transform","Scene","duration","setClassToggle","setTween","css","ease","Linear","easeNone","addTo","classToToggle","triggerHook","parseFloat","reverse","windowWidth","offsetOut","innerHeight","documentElement","clientHeight","spacingTop","MasonryComponent","masonryElements","masonryElementsLeft","filter","o","masonryElementsRight","initMasonryContainer","maxHeight","heightLeft","heightRight","newMaxHeightContainer","isMobile","max","backdropElement","callback","addTransitionEndListener","console","log","NavbarMegaDropdown","Navbar","_timeout","_handleClick","event","_resetAllAriaAttributes","preventDefault","toggle","_handleBackdropClick","hide","_backdropElement","_dropdownElement","_dropdownElements","_togglerElements","_handleResize","_addDesktopListeners","container","firstElementChild","stickyOffset","marginLeft","dropdownBox","right","_setContainerHeight","_setDropdownPosition","_isOpen","_navbar","navbarElement","map","hideMegaDropdown","showMegaDropdown","transition","toElement","relatedTarget","isAncestorOfClass","childclass","NavbarToggler","Search","ComponentRefs","_search","close","blur","_handleNavbarHeaderClick","_scrollableElements","scrollable","_removeScrollable","_setScrollable","_mainScrollElement","_header","_navbar1stLevelElements","_navbar2ndLevelElements","_navbarTogglerElements","_navbarHeaderElements","children","_click","_addMobileListeners","header","navbar","id","collapseInstance","getInstance","_removeMobileListeners","_collapse","open","lockScrollbar","unlockScrollbar","_updateAria","titleElement","toString","toLowerCase","SearchToggler","SearchDesktop","_searchDesktop","getElementsByTagName","focus","undefined","bodyElement","scroll","requestAnimationFrame","isTinyMobile","clampScroll","position","overflow","paddingTop","removeAttribute","elements","cookieConsent","push","reduce","pv","cv","timeElapsed","start","distance","CollapseComponent","collapse","error","data","activeClass","activeParentClass","animateProp","collapsingClass","componentClass","showClass","showClassDesktop","desktopWidth","transitionDuration","isHideable","closeSiblings","useShowClassDesktop","dataParentSelector","dataTargetSelector","dataToggleSelector","hrefSelector","isTransitioning","eventNamespaceFn","eventNamespaceFactory","handleClick","trigger","currentTarget","tagName","triggers","outerWidth","parent","selector","actives","active","_handleShow","_handleClose","_addAriaAndCollapsedClass","collapseElement","scrollHeight","offsetWidth","create","replace","c","r","random","baseFn","extendFn","apply","components","rootElement","observables","Map","componentType","component","resolver","resolve","Error","name","safeRootElement","node","compiler","compile","set","size","MutationObserver","mutations","componentInitializer","mutation","value","key","addedNodes","isHTMLElement","asHTMLElement","comps","childList","subtree","reflector","Reflector","Resolver","Compiler","componentCache","constructor","has","get","Object","keys","queries","propName","query","nodes","descendants","cache","acc","val","concat","f","first","isType","onInit","makeDecorator","createComponent","makeMetadataFactory","Query","makePropDecorator","ChildRef","ChildrenRef","typeOrFunc","parentCtor","getParentCtor","ownAnnotations","_ownAnnotations","annotations","propMetadata","parentPropMetadata","ownPropMetadata","_ownPropMetadata","decorators","hasOwnProperty","ANNOTATIONS","PROP_METADATA","ctor","parentProto","getPrototypeOf","prototype","QUERY_METADATA_IDENTIFIERS","type","typeMetadata","metadata","findLast","metadataName","propertyMetadata","_mergeWithPropertyMetadata","a","some","_merge","mergedQueries","res","propertyName","_getQueryMetadata","q","read","arr","condition","props","parentClass","chainFn","typeFn","metaCtor","makeMetadataCtor","DecoratorFactory","args","call","annotationInstance","typeDecorator","cls","defineProperty","PropDecoratorFactory","decoratorInstance","metaName","meta","unshift","values","factory","isTypeOf","obj","v","Type","Function","getClass","trim","add","classRegexCache","RegExp","html","createElement","innerHTML","computed","getStyles","getPropertyValue","clientRect","ownerDocument","documentTop","scrollTop","clientTop","documentLeft","pageXOffset","scrollLeft","clientLeft","firstByClass","getParents","getParentsOrSelf","parents","attribute","fallbackHref","getSelectorFromElement","substr","test","child","view","defaultView","opener","getComputedStyle","parentNode","classRegex","includeSelf","nodeType","HTMLElement","nodeName","removeClassFactory","regex","state","changeClass","eventName","CustomEvent","dispatchEvent","namespace","dispatchCustomEvent","DOWN","ENTER","ESCAPE","SPACE","UP","unit","units","u","parsed","Number","OverlayKeyboardDispatcher","attachedOverlays","keydownListener","overlay","_selectOverlayFromEvent","onKeyboardEvent","overlayRef","isAttached","index","splice","_detach","find","overlayElement","backdropClassName","hasBackdrop","Overlay","portalElement","attached","keyboardDispatcher","OverlayOptions","uuid","newGuid","scrollStrategy","attach","overlayContainerElement","createNode","insertBefore","lastElementChild","overlayClassName","appendChild","backdropToDetach","removeChild","pointerEvents","positionStrategy","sizeConfig","_updateElementSize","_attach","updatePosition","beforeOpen","afterOpened","beforeClose","afterClosed","dispose","disable","detachBackdrop","remove","enable","_attachBackdrop","onAttached","hasAttached","detach","onDetached","formatCssUnit","minWidth","minHeight","maxWidth","backdropClick","ConnectedPositionStrategy","originPos","overlayPos","connectedTo","offsetX","offsetY","scrollables","preferredPositions","applied","positionLocked","boundResizeChange","_handleResizeChange","bind","origin","withFallbackPosition","pane","lastConnectedPosition","recalculateLastPosition","_validatePositions","fallbackPoint","fallbackPosition","originRect","overlayRect","viewportSize","pos","originPoint","_getOriginConnectionPoint","overlayPoint","_getOverlayPoint","fitsInViewport","_setElementPosition","visibleArea","lastPosition","ConnectionPositionPair","isLocked","positions","slice","originStartX","_getStartX","originEndX","_getEndX","originX","originY","bottom","overlayStartX","overlayStartY","overlayX","overlayY","leftOverflow","rightOverflow","topOverflow","bottomOverflow","_subtractOverflows","originBounds","overlayBounds","scrollContainerBounds","s","isOriginClipped","isElementClippedByScrolling","isOriginOutsideView","isElementScrolledOutsideView","isOverlayClipped","isOverlayOutsideView","verticalStyleProperty","horizontalStyleProperty","p","scrollableViewProperties","_getScrollVisibility","positionChange","ConnectedOverlayPositionChange","onPositionChange","overflows","currentValue","currentOverflow","pair","validateHorizontalPosition","validateVerticalPosition","property","connectionPair","GlobalPositionStrategy","cssPosition","topOffset","bottomOffset","leftOffset","rightOffset","alignItems","justifyContent","wrapper","getOptions","updateSize","parentStyles","marginBottom","marginRight","OverlayPositionBuilder","elementRef","RepositionScrollStrategy","config","throttle","scrollThrottle","autoClose","update","parentRects","src","onerror","scriptElement","async","onload","removeLoadingScript","loadingScriptWindow","loadingScripts","scripts","currentScriptElement","item","removeDomain","Promise","reject","script","getScriptBySrc","wrapFunction","newScript","createScript","head","animation","linearTween","offsetTop","scrollToOffset","animationFunction","timeStart","t","b","d","loop","time","Window","Select","Option","text","textContent","disabled","_disabled","_text","selectElement","classes","highlighted","panelOpen","htmlSelectElement","_getSelectedIndex","activeIndex","_init","triggerRect","_createOverlay","_calculateOverlayPosition","_highlightCorrectOption","_scrollActiveOptionIntoView","_shouldForward","option","tabIndex","insertAdjacentHTML","_render","stopPropagation","_handleKeydown","_emit","delta","keyCode","KEYCODES","_updateActiveItem","_handleActiveIndex","panelHTML","_getOverlayOptions","_onPanelDone","transformOrigin","_calculateOverlayOffsetX","optionElements","_createPositionStrategy","primaryPosition","strategy","withOffsetX","withOffsetY","shouldForwardEvent","newValue","newLabel","_getOptionIndex","arrowHtml","iconHtml","result","current","itemHeight","_getItemHeight","scrollOffset","panelTop","_getPanelMaxHeight","items","panelHeight","min","maxScroll","selectedOptionOffset","scrollBuffer","_calculateOverlayScroll","_calculateOverlayOffsetY","_checkOverlayWithinViewport","paddingWidth","_getPanelToViewportPadding","topSpaceAvailable","bottomSpaceAvailable","panelHeightTop","abs","panelHeightBottom","_adjustPanelUp","_adjustPanelDown","_getOriginBasedOnOption","distanceBelowViewport","distanceAboveViewport","optionHeightAdjustment","optimalScrollPosition","maxOptionsDisplayed","floor","padding","offsetHeight","createEvent","initEvent","selected","StickToParent","withPadding","enableForMobile","mobileWidth","stickyClass","offsetTopMobile","initialHeight","getOuterHeight","withPaddingParent","lastOffsetted","elementTop","elementHeight","winHeight","outerHeight","parentHeight","getSiblingsMaxHeight","isFixed","isBottom","lastScroll","diff","getSiblings","el","parseInt","fallbackDuration","called","listener","transitionEndEventName","getTransitionEndEventName","transitions","WebkitTransition","url","scrollContainers","scrollContainerRect","clippedAbove","clippedBelow","clippedLeft","clippedRight","containerBounds","outsideAbove","outsideBelow","outsideLeft","outsideRight","n","l","clipPath","split","h","createElementNS","setAttributeNS","g","m","w","cloneNode","replaceChild","webkitClipPath","navigator","userAgent","applyClipPath","jQuery","fn","ClipPath","path","each","attr","require","module","exports","it","TypeError","isObject","toIObject","toLength","toAbsoluteIndex","IS_INCLUDES","$this","fromIndex","O","aFunction","invoke","arraySlice","factories","construct","F","len","join","that","partArgs","arguments","bound","core","version","__e","is","global","redefine","ctx","$export","source","own","out","exp","IS_FORCED","IS_GLOBAL","G","IS_PROTO","P","IS_BIND","B","S","expProto","U","W","R","exec","self","__g","dP","createDesc","object","un","cof","propertyIsEnumerable","descriptor","setToStringTag","IteratorPrototype","Constructor","NAME","next","DESCRIPTORS","getKeys","gOPS","pIE","toObject","IObject","$assign","assign","A","Symbol","K","k","T","aLen","getSymbols","isEnum","anObject","dPs","enumBugKeys","IE_PROTO","Empty","createDict","iframeDocument","iframe","display","contentWindow","write","lt","Properties","IE8_DOM_DEFINE","toPrimitive","Attributes","defineProperties","gOPD","getOwnPropertyDescriptor","$keys","hiddenKeys","getOwnPropertyNames","getOwnPropertySymbols","ObjectProto","arrayIndexOf","names","gOPN","Reflect","ownKeys","bitmap","enumerable","configurable","writable","SRC","$toString","TO_STRING","TPL","safe","isFunction","String","proto","setPrototypeOf","buggy","__proto__","def","TAG","tag","stat","shared","uid","SHARED","store","mode","copyright","toInteger","ceil","isNaN","defined","valueOf","px","USE_SYMBOL","rApply","fApply","thisArgument","argumentsList","L","fails","rConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","instance","propertyKey","attributes","deleteProperty","desc","Enumerate","iterated","_t","_i","_k","done","enumerate","getProto","receiver","$isExtensible","isExtensible","$preventExtensions","preventExtensions","setProto","V","existingDescriptor","ownDesc","timer","dummySrc","fixRespimg","findPictureImgs","onResize","mq","ua","HTMLPictureElement","match","$1","img","sizes","picture","_pfLastSize","imgs","matchMedia","addListener","srcset","readyState","eminpx","alwaysCheckWDescriptor","evalId","pf","isSupportTestReady","noop","image","getImgAttr","setImgAttr","removeImgAttr","docElem","types","cfg","algorithm","srcAttr","srcsetAttr","supportAbort","curSrcProp","regWDesc","regSize","setOptions","picturefillCFG","fsCss","isVwDirty","cssCache","sizeLengthCache","DPR","devicePixelRatio","anchor","alreadyRun","regexLeadingSpaces","regexLeadingCommasOrSpaces","regexLeadingNotSpaces","regexTrailingCommas","regexNonNegativeInteger","regexFloatingPoint","on","evt","capture","attachEvent","memoize","input","isSpace","regLength","buildStr","image2","width1","isDomReady","func","timeout","timestamp","later","regReady","run","timerId","lastClientWidth","evalCSS","string","parsedLength","setResolution","candidate","sizesattr","cWidth","calcListLength","picturefill","opt","plen","qsa","reevaluate","reselect","sel","selShort","setupRun","fillImg","teardownRun","ascendingSort","getCandidateForSrc","candidates","parseSet","makeUrl","warn","implementation","hasFeature","ns","Date","getTime","supSrcset","supSizes","supPicture","complete","setSize","matchesMedia","matches","media","mMQ","calcLength","sourceSizeValue","supportsType","parseSize","sourceSizeStr","cands","collectCharacters","regEx","chars","descriptors","currentDescriptor","inputLength","parseDescriptors","lastChar","intVal","floatVal","pError","has1x","tokenize","charAt","parseSrcset","getEmValue","div","originalHTMLCSS","cssText","originalBodyCSS","sourceSizeListStr","uT","winningLength","strValue","unparsedSizesList","unparsedSizesListLength","unparsedSize","lastComponentValue","regexCssLengthWithUnits","regexCssCalc","str","chrctr","componentArray","listArray","parenDepth","inComment","pushComponent","pushComponentArray","parseComponentValues","pop","parseSizes","setRes","applySetCandidate","bestCandidate","curSrc","curCan","candidateSrc","abortCurSrc","lowerValue","higherValue","dprValue","isCached","bonusFactor","bonus","meanDensity","imageData","dpr","sets","setSrcToCur","cached","sort","pow","setSrc","origWidth","getSet","parseSets","srcsetAttribute","imageSet","isWDescripor","srcsetParsed","hasPicture","pic","sources","getAllSourceElements","supported","extreme","evaled","srcSetCandidates","matchingSet","evaluated","applyBestCandidate","vw","vh","em","rem","fillImgs","last","_","shift","define","typeUri","Image","detectTypeSupport","stickyElements","CookieConsent","_stickyElements","_options","approveClassName","showAfter","animationDuration","cookie","expirationInDays","secure","_attributeName","_boundResize","_eventNamespaceFn","banner","_getBanner","_cookieKey","button","easeInOutQuad","_setSticky","_setElements","sticky","attributeName","hasAttribute","calculated","setCookie","_setCookie","date","setDate","getDate","domain","Datepicker","_locales","i18n","previousMonth","nextMonth","months","JSON","parse","weekdays","weekdaysShort","yearRange","moment","locale","Pikaday","field","format","onSelect","inputElement","FilterPage","isInitialPageLoad","pagingSize","page","language","selectors","content","selects","selectTag","tagCategory","dropdownToggle","tagsDropdown","searchText","searchButton","tagAll","tagAllActive","tagActive","resetAllActiveTagsElements","paging","pageBack","pageNext","pageJump","pageJumpAttribute","loading","contentLoading","contentYScroll","hidden","hasActiveTags","contentLocation","wrapperId","searchValueText","tagValue","scrollToTopAfterFiltering","hasStickyOffsetDesktop","wrapperElement","dataLanguage","lang","initContentFilter","contentElement","tags","tagsCategory","searchTextInput","allTags","toggleTag","searchTextButton","which","loadFilterElements","search","searchValues","searchTextValue","decodeURIComponent","history","pushState","title","pathname","onChange","allTag","allTagClick","getParentWithClass","resetTags","resetAllActiveTags","updateSelectTag","newSelects","newTags","setPageDefault","setPageToDefault","dataSearch","getFilters","fetch","method","headers","then","response","contentType","includes","setPreviousNextJumpPageEvents","reinitFilter","callbackAfterFilter","crossselling","cookieBannerHeight","scrollToElement","pageStep","loadPreviousPage","loadNextPage","loadJumpPage","activeTags","getTagsFromLocationHash","filters","setActiveTagsClasses","setFilterPageHasActiveTags","isTagActive","deactivateAllTag","isSelectOption","addTagToFilters","activateAllTag","removeTagFromFilters","newHash","getTagsLocationHash","doActivateTag","deactivateActiveTags","activateTag","deactivateTag","deactivateActiveTag","activateActiveTag","toggleClass","getTagValue","tagValueIndex","getTagValueIndex","allTagActive","dropdownToggleBtn","filterAll","indexFilter","InputFieldsFilled","_element","_checkValue","$","validator","valid","PhotoswipeItem","PhotoswipeHtmlItem","outerHTML","PhotoswipeImageItem","msrc","currentSrc","Photoswipe","_triggerElements","galleryId","_getItems","_open","embed","getThumbBoundsFn","pageYScroll","pswp","gallery","PhotoSwipe","PhotoSwipeUI_Default","listen","IFramePlayer","_boundClick","_buttonElement","_iFrameElement","play","player","Player","Recaptcha3Validator","submit","closest","siteKey","actionName","scriptUrl","culture","loadScript","catch","exc","form","grecaptcha","ready","timerFunction","execute","action","token","RecaptchaValidator","$captcha","$form","recaptchaOnLoadCallback","render","sitekey","$textarea","border","margin","updateForm","getResponse","removeData","unobtrusive","SelectComponent","toUTCString","cookies","getCookie","all","oldWindowWidth","PAD_WIDTH","__webpack_module_cache__","__webpack_require__","moduleId","loaded","__webpack_modules__","definition","prop","toStringTag","nmd","paths","StickToParentNav","stickToParent","connectionIsSecure","FormFieldAccept","checkbox","checked"],"mappings":";0GAAA,I,EAAA,UAEA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,S,0KAIaA,GADZ,IAAAC,WAAU,CAAEC,UAAW,a,cAKpB,WAAoBC,GAAsB,Y,4FAAA,cAyHlCC,gBAAkB,WACtB,EAAKC,WAEL,EAAKC,eAAeC,oBAChB,uBACA,EAAKH,kBA9H6B,KAkIlCI,qBAAuB,WAC3B,EAAKC,UAEL,EAAKH,eAAeC,oBAChB,2BACA,EAAKC,uBAvI6B,KAAtBL,UAChBO,KAAKJ,eAAiBK,SAASC,uBAC3B,qBACF,GAEEF,KAAKJ,gBAELI,KAAKJ,eAAeO,iBAChB,2BACAH,KAAKF,sB,sDAKR,WACLE,KAAKI,QACLC,OAAOF,iBAAiB,cAAc,kBAAM,EAAKC,WACjDC,OAAOF,iBAAiB,YAAY,kBAAM,EAAKC,a,8BAI3C,WACJ,GAAIJ,KAAKM,aAAc,CAUnB,IAAIC,EAAeN,SAASO,eAAe,mBAC3C,GAAID,GAAyD,IAAzC,IAAAE,UAASF,EAAc,eAAyB,CAChE,IAAIG,EAAeC,MAAMC,KAAKX,SAASC,uBAAuB,qBAC1DQ,IACAA,EAAa,GAAGG,QAChBC,YAAW,WACP,EAAKf,YACN,WAIPC,KAAKD,a,mCAOb,IAAMgB,EAAOV,OAAOW,SAASD,KAE7B,OAAOA,IAAsC,IAA9BA,EAAKE,QAAQ,c,mCAI5B,OAAIjB,KAAKM,aACEN,KAAKP,QAAQyB,cAAb,wBACcb,OAAOW,SAASD,KAAKI,UAAU,GAD7C,OAKJ,O,gCAIP,IAAM1B,EAAUO,KAAKoB,aAErB,GAAI3B,EAEA,GAA4C,aAAxCA,EAAQ4B,aAAa,eAA+B,CACpD,IAAMC,GAAS,IAAAC,+BACX9B,EACA,eACA,GAGJ,GAAI6B,EAAQ,CACR,IAAME,EAAM,IAAIC,WAASH,GAIrBE,EAAIE,SACJ1B,KAAKL,YAEL2B,EAAOnB,iBACH,uBACAH,KAAKN,iBAGT8B,EAAIG,aAIR3B,KAAKL,gBAITK,KAAKL,a,iCAMb,IAAMF,EAAUO,KAAKoB,aAErB,GAAI3B,EAAS,CACT,IAAImC,GAAS,IAAAC,WAAUpC,GAASqC,MAEhCF,IAAyD,GAA/C,IAAAG,eAAa,IAAAC,QAAOvC,EAAS,eAChDmC,IAA+B,GAArB,IAAAK,mBACI,IAAX,IAAAC,WACFN,GAAU,IAGFA,EAASO,KAAKC,MAAMR,GAEpBvB,OAAOgC,SAAS,EAAGT,S,kICtI/B,I,UAAA,UACA,UACA,UACA,UACA,U,oLAGaU,G,GADZ,IAAA/C,WAAU,CAAEC,UAAW,mB,GAGtB,IAAA+C,cAAaC,U,mBAEd,WAAoB/C,GAAsB,I,EAAA,Q,4FAAA,U,EAAA,I,sBAAA,sB,gHAAA,W,IAAA,KAAtBA,UACnBO,KAAKyC,aAAexC,SAASyC,KAC7BjD,EAAQU,iBAAiB,SAAS,WACjC,EAAKwC,a,uDAKNtC,OAAOgC,SAAS,EAAG,GACnBrC,KAAK4C,eAAeC,QAAQ,IAC5B,IAAAC,aAAY9C,KAAKyC,aAAc,aAC/B,IAAAM,UAAS/C,KAAKyC,aAAc,mB,wjBCtB9B,I,EAAA,UACA,UACA,U,0KAGaO,GADZ,IAAAzD,WAAU,CAAEC,UAAW,a,cASvB,WAAoBC,I,4FAAsB,cANlCwD,eAAiB,EAMiB,KALlCC,WAAa,GAKqB,KAJlCC,WAAa,EAIqB,KAFlCC,WAAa,GAEqB,KAAtB3D,UACnBO,KAAKqD,gBAAkB5D,EACvBO,KAAKyC,aAAexC,SAASyC,KAC7B1C,KAAKsD,O,oDAGS,WACdjD,OAAOF,iBAAiB,UAAU,kBAAM,EAAKoD,oB,qCAI7C,GAA2B,IAAvBlD,OAAOmD,aACV,IAAAV,aAAY9C,KAAKyC,aAAc,aAC/B,IAAAM,UAAS/C,KAAKyC,aAAc,kBACtB,CACN,IAAMgB,EAAiBpD,OAAOmD,YAE7BC,EAAiBzD,KAAKiD,gBACtBQ,EAAiB,GACjBA,EAAiBzD,KAAKiD,gBAAkBjD,KAAKkD,YAE7ClD,KAAKoD,WAAa,QAClB,IAAAN,aAAY9C,KAAKyC,aAAc,aAC/B,IAAAM,UAAS/C,KAAKyC,aAAc,eAE5BgB,EAAiBzD,KAAKiD,gBACtBjD,KAAKiD,eAAiBQ,GAAkBzD,KAAKkD,aAE7ClD,KAAKoD,WAAa,MAClB,IAAAL,UAAS/C,KAAKyC,aAAc,aAC5B,IAAAK,aAAY9C,KAAKyC,aAAc,eAEhCzC,KAAKiD,eAAiBQ,Q,2KC7CzB,I,EAAA,UACA,U,iUAKMC,E,WAUL,WAAYC,GAAe,UAC1B3D,KAAK4D,EAAI,EACT5D,KAAK6D,EAAI,EAET7D,KAAK8D,KAAO,EACZ9D,KAAK8B,IAAM,EAEX9B,KAAK+D,MAAQ,EACb/D,KAAKgE,OAAS,EACdhE,KAAKiE,KAAON,EAEZ3D,KAAKkE,MAAQ,E,uCAGTC,GACJA,EAAQC,aAAapE,KAAKkE,MAAO,EAAG,EAAGlE,KAAKkE,MAC3ClE,KAAK8D,KAAO9D,KAAK4D,EAAG5D,KAAK8B,IAAM9B,KAAK6D,GAQrCM,EAAQE,YAERF,EAAQG,IAAItE,KAAK4D,EAAG5D,KAAK6D,EAAG,EAAG,EAAa,EAAV1B,KAAKoC,IAAQ,GAC/CJ,EAAQK,UAAYxE,KAAKiE,KAEzBE,EAAQF,W,KAKGQ,GADZ,IAAAlF,WAAU,CAAEC,UAAW,mB,cAkBvB,WAAoBC,GAA4B,eAhBhDiF,MAAQ,GAgBwC,KAfhDC,MAAQ,CAAEf,EAAG,EAAGC,EAAG,GAe6B,KAdhDe,YAAc,GAckC,KAbhDC,YAAc,GAakC,KAZhDC,gBAAkB,GAY8B,KAXhDC,MAAQ,GAWwC,KAThDC,YAAa,EASmC,KARhDC,WAAY,EAQoC,KAA5BxF,UACnBO,KAAKmE,QAAUnE,KAAKP,QAAQyF,WAAW,MACvClF,KAAKmF,YAAc,UAEnBnF,KAAKsD,O,iDAILtD,KAAKmE,QAAQiB,UAAU,EAAG,EAAGpF,KAAKP,QAAQsE,MAAO/D,KAAKP,QAAQuE,QAC9DhE,KAAKsD,S,6BAGC,YACF,IAAA7C,UAAST,KAAKP,QAAS,4BAC1BO,KAAKmF,YAAc,UACnBnF,KAAKP,QAAQsE,MAAQ9D,SAASyC,KAAK2C,YACnCrF,KAAK8E,gBAAkB,EAEvBzE,OAAOF,iBAAiB,UAAU,WACjCmF,aAAa,EAAKC,UAClB,EAAKA,SAAWzE,YAAW,kBAAM,EAAK0E,iBAAgB,SAIxDxF,KAAKyF,YAAczF,KAAKP,QAAQsE,MAChC/D,KAAK0F,aAAe1F,KAAKP,QAAQuE,OACjChE,KAAK4E,YAAc5E,KAAKyF,YAAczF,KAAK+E,MAC3C/E,KAAK6E,YAAc7E,KAAK0F,aAAe1F,KAAK+E,MAE5C,IAAK,IAAIY,EAAI,EAAGA,EAAI3F,KAAK4E,YAAae,IAAK,CAC1C3F,KAAK0E,MAAMiB,GAAK,GAEhB,IAAK,IAAIC,EAAI,EAAGA,EAAI5F,KAAK6E,YAAae,IAAK,CAC1C,IAAIC,EAAO,IAAInC,EAAW1D,KAAKmF,aAE/BU,EAAK/B,MAAS9D,KAAKyF,YAAczF,KAAK8E,kBAAoB9E,KAAK4E,YAAc,IAAMe,EAAI,GAAO3F,KAAK8E,gBAAkB,EACrHe,EAAK/D,KAAQ9B,KAAK0F,aAAe1F,KAAK8E,kBAAoB9E,KAAK6E,YAAc,IAAMe,EAAI,GAAO5F,KAAK8E,gBAAkB,EAErHe,EAAK9B,MAAQ/D,KAAK+E,MAClBc,EAAK7B,OAAShE,KAAK+E,MAEnB/E,KAAK0E,MAAMiB,GAAGC,GAAKC,GAIrBC,UAAUC,OAAO5F,iBAAiB,QAAQ,kBAAM,EAAK6F,UAErDhG,KAAKP,QAAQU,iBAAiB,aAAa,SAAC8F,GAAD,OAAO,EAAKC,gBAAgBD,MACvEjG,KAAKP,QAAQU,iBAAiB,aAAa,SAAC8F,GAAD,OAAO,EAAKE,gBAAgBF,MAEvEjG,KAAKP,QAAQU,iBAAiB,cAAc,WAC3C,EAAK8E,WAAY,KAElBjF,KAAKP,QAAQU,iBAAiB,cAAc,WAC3C,EAAK8E,WAAY,KAGlBjF,KAAKP,QAAQU,iBAAiB,cAAc,kBAAM,EAAKiG,sBACvDpG,KAAKP,QAAQU,iBAAiB,YAAY,kBAAM,EAAKiG,wB,6BAMjDpG,KAAKiF,WAAajF,KAAKgF,aAC1BhF,KAAKqG,wBACLrG,KAAKgF,YAAa,GAGnBhF,KAAKmE,QAAQiB,UAAU,EAAG,EAAGpF,KAAKyF,YAAazF,KAAK0F,cACpD1F,KAAKmE,QAAQmC,OACbtG,KAAKmE,QAAQE,YACb,IAAK,IAAIsB,EAAI,EAAGA,EAAI3F,KAAK4E,YAAae,IACrC,IAAK,IAAIC,EAAI,EAAGA,EAAI5F,KAAK6E,YAAae,IAC1B5F,KAAK0E,MAAMiB,GAAGC,GAEpBI,KAAKhG,KAAKmE,SAGjBnE,KAAKmE,QAAQoC,YACbvG,KAAKmE,QAAQqC,Y,8CAKb,IADA,IACSb,EAAI,EAAGA,EAAI3F,KAAK4E,YAAae,IACrC,IAAK,IAAIC,EAAI,EAAGA,EAAI5F,KAAK6E,YAAae,IAAK,CAC1C,IAAIC,EAAO7F,KAAK0E,MAAMiB,GAAGC,GACrBa,EAAS,IACTC,EAAK1G,KAAK2E,MAAMf,EAAIiC,EAAK/B,KALG,EAKK+B,EAAK9B,MACtC4C,EAAK3G,KAAK2E,MAAMd,EAAIgC,EAAK/D,IANG,EAMI+D,EAAK7B,OACrC4C,EAAOzE,KAAK0E,KAAKH,EAAKA,EAAKC,EAAKA,IAAO,EAEvCG,EAAQ3E,KAAK4E,MAAMJ,EAAID,GAE3B,GAAIE,EAAOH,EAAQ,CAClB,IAAMO,EAAc,EAAMJ,EAAOH,EAAU,EAE3CA,EAASG,EACTK,SAASC,GAAGrB,EAAM,GAAK,CAAE3B,MAAO8C,SAEhCC,SAASC,GAAGrB,EAAM,GAAK,CAAE3B,MAAO,IAOjC+C,SAASC,GAAGrB,EAAM,GAAK,CACtBjC,EAAsB,EAAlBzB,KAAKgF,IAAIL,IAAe,EAC5BjD,EAAsB,EAAlB1B,KAAKiF,IAAIN,IAAe,O,sCAOhBb,GACf,IAAIoB,EAAOrH,KAAKP,QAAQ6H,wBACxBtH,KAAK2E,MAAMf,EAAIqC,EAAEsB,QAAUF,EAAKvD,KAChC9D,KAAK2E,MAAMd,EAAIoC,EAAEuB,QAAUH,EAAKvF,IAEhC9B,KAAKgF,YAAa,I,sCAGHiB,GACf,IAAIoB,EAAOrH,KAAKP,QAAQ6H,wBACxBtH,KAAK2E,MAAMf,EAAIqC,EAAEwB,QAAQ,GAAGF,QAAUF,EAAKvD,KAC3C9D,KAAK2E,MAAMd,EAAIoC,EAAEwB,QAAQ,GAAGD,QAAUH,EAAKvF,IAE3C9B,KAAKgF,YAAa,I,yCAIlBhF,KAAKiF,WAAY,EACjB,IAAK,IAAIU,EAAI,EAAGA,EAAI3F,KAAK4E,YAAae,IACrC,IAAK,IAAIC,EAAI,EAAGA,EAAI5F,KAAK6E,YAAae,IAAK,CAC1C,IAAIC,EAAO7F,KAAK0E,MAAMiB,GAAGC,GACzBqB,SAASC,GAAGrB,EAAM,GAAK,CAAEjC,EAAG,EAAGC,EAAG,EAAGK,MAAO,S,mHC7MhD,I,EAAA,UAEA,UACA,UACA,UACA,S,0KAIa1B,GADZ,IAAAjD,WAAU,CAAEC,UAAW,a,cAgBvB,WAAoBC,I,4FAAsB,cAZlCiI,YAA6B,KAYK,KANlCC,cAA+B,KAMG,KAFlCC,kBAA4B,EAEM,KAAtBnI,UACnBO,KAAK4H,mBAAoB,IAAAnH,UAAShB,EAAS,Y,sDAGnC,WACRO,KAAK6H,WAAa5H,SAASC,uBAC1B,4BAGD,IAAA6C,UAAS/C,KAAKP,QAAS,YAIvBO,KAAK8H,gBACLzH,OAAOF,iBAAiB,UAAU,kBAAM,EAAK2H,qB,8BAG/BhG,GACF,OAARA,GACCA,IAAQ9B,KAAK+H,YAChB/H,KAAK+H,UAAYjG,EACjB9B,KAAKP,QAAQuI,MAAMlG,IAAnB,UAA4BA,EAA5B,MACA9B,KAAKiI,mB,sCAON,IAAIC,EADDlI,KAAK6H,YAAc7H,KAAK6H,WAAWM,OAAS,GAE/CxH,MAAMC,KAAKZ,KAAK6H,YAAYO,SAAQ,SAAAC,GAC/BA,EAASC,UAAUC,SAAS,aAC/B,IAAAzF,aAAYuF,EAASG,cAAe,cACpC,IAAA1F,aAAYuF,EAAU,WACtBH,EAAUG,EAASG,cAActI,uBAChC,mCACC,KAEDgI,EAAQO,aAAa,gBAAiB,e,sCAQtCxI,SAASyC,KAAK4F,UAAUC,SAAS,cACpCvI,KAAK0I,oBACKzI,SAASyC,KAAK4F,UAAUC,SAAS,aAC3CvI,KAAK2I,oB,2CAKF,IAAAC,sBAAuB5I,KAAK6I,SAC/B7I,KAAK6C,SAAS7C,KAAK6I,W,yCAMhB,IAAAD,sBAAwB5I,KAAK6I,QAChC7I,KAAK6C,QAAQ,Q,qDCtFhB,I,+PAGaiG,GADZ,EAFD,QAECvJ,WAAU,CAAEC,UAAW,uB,cAEvB,WAAYC,GAAsB,Y,4FAAA,SACjCA,EAAQU,iBAAiB,UAAU,kBAAM,EAAK4I,4BAA4BtJ,M,yEAGvCuJ,GACnC,IAAK1H,EAAS,GACF2H,EAAgCD,EAChCE,EAAgBD,EAAWC,cAC3BC,EAAuBF,EAAWG,QAAQF,GAC7B,MAAfC,IACA7H,EAAS6H,EAAY9H,aAAa,UAEzCC,GAAoB,IAAVA,IACZjB,OAAOW,SAASqI,KAAO/H,Q,kNCjB1B,I,EAAA,UACA,SACA,U,sKAMA,IAAMgI,EAAwB,IAAIC,YAAYC,WAGjCC,GADZ,IAAAlK,WAAU,CAAEC,UAAW,kBAAmBkK,SAAS,G,cAEnD,WAAoBC,I,4FAA6B,cAA7BA,iBACnB,IAAMC,EAAQ5J,KAAK2J,eAAetI,aAAa,oBAC/C,GAAa,MAATuI,EACH,OAAQA,EAAMC,eACb,IAAK,YACJ7J,KAAK8J,qBACL,MACD,IAAK,SACJ9J,KAAK+J,kBACL,MACD,IAAK,cACJ/J,KAAKgK,wB,kEASoB,WACLrJ,MAAMC,KAC5BZ,KAAK2J,eAAeM,iBACnB,4BAMa7B,SAAQ,SAAA9G,GACtB,IAAIsI,EAAQ,EAAKM,kBAAkB5I,GACnCjB,OAAOF,iBAAiB,UAAU,WACjCyJ,EAAMO,SAAQ,GACdP,EAAQ,EAAKM,kBAAkB5I,W,wCAIRA,GACzB,IAAIM,EAASwI,IACTC,EAAoB,GAmBxB,OAjBI,IAAA5J,UAASa,EAAQ,qCAEpB+I,EAAoB,CAAEC,UAAWC,IAAgC,MAC7DlK,OAAOmK,YAAc,KACxBH,EAAoB,CAAEC,UAAWC,IAAgC,KAAME,UAAW,0BAE1EpK,OAAOmK,YAAc,KAC7BH,EAAoB,CAAEC,UAAWC,IAAgC,KAAME,UAAW,qCAE1EpK,OAAOmK,YAAc,OAC7BH,EAAoB,CAAEC,UAAWC,IAAgC,KAAME,UAAW,uCAInFJ,EAAoB,CAAEtG,MAAO,OAAQuG,UAAWC,IAAgC,MAG1E,IAAIhB,YAAYmB,MAAM,CAC5Bf,eAAgB3J,KAAK2J,eACrBgB,SAAU,OACV/I,OAAQA,IAEPgJ,eAAe5K,KAAK2J,eANA,cAQpBkB,SACA5D,SAASC,GAAG5F,EAAQ,GAAK,CACxBwJ,IAAKT,EACLU,KAAMC,OAAOC,YAIdC,MAAM5B,K,6CAIR,IAAM6B,EACLnL,KAAK2J,eAAetI,aAAa,4BACjC,eACK+J,EACLpL,KAAK2J,eAAetI,aAAa,4BACjC,MACKO,EACL5B,KAAK2J,eAAetI,aAAa,sBAAwB,IAE5C,IAAIkI,YAAYmB,MAAM,CACnCf,eAAgB3J,KAAK2J,eACrByB,YAAaC,WAAWD,GACxBxJ,WAECgJ,eAAe5K,KAAK2J,eAAgBwB,GACpCG,SAAQ,GACRJ,MAAM5B,K,wCAKR,IAEMiC,EAAclL,OAAOmK,WACvB5I,EAAS,GACT4J,EAAYxL,KAAK2J,eAAerC,wBAAwBtD,OACxDoH,EAAc,EAEfG,GAAe,MACjB3J,EAAS,GACT4J,GAAa,KAEND,GAAe,MACtB3J,EAAS,GACT4J,GAAa,KAGbA,GAAa,GAEXD,EAAc,OAChBH,EAAc,GAAK/K,OAAOoL,aAKV,IAAIlC,YAAYmB,MAAM,CACtCf,eAAgB3J,KAAK2J,eACrByB,YAAaA,EACbxJ,OAAQA,IAEPgJ,eAAe5K,KAAK2J,eA7BC,cA8BrBuB,MAAM5B,GAGS,IAAIC,YAAYmB,MAAM,CACtCf,eAAgB3J,KAAK2J,eACrByB,YAAaA,EACbxJ,OAAQ4J,IAEPZ,eAAe5K,KAAK2J,eArCC,mBAsCrBuB,MAAM5B,Q,0BAOH,SAASc,IACf,IAAIxI,GAAUvB,OAAOoL,aACjBxL,SAASyL,gBAAgBC,cACzB1L,SAASyC,KAAKiJ,cAAgB,IAAM,GAOxC,OANI,IAAAzJ,SACHN,GAAU,GAES,IAAX,IAAAM,WACRN,GAAU,IAEJA,EAGD,SAAS2I,IACf,IAAIqB,EAAa,EACXL,EAAclL,OAAOmK,WAkB3B,OAZIe,GAAe,MAAQA,EAAc,KACxCK,GAAa,GAENL,GAAe,OACtBK,GAAc,IAKfA,GAAevL,OAAOoL,aAClBxL,SAASyL,gBAAgBC,cACzB1L,SAASyC,KAAKiJ,c,oHC1LnB,I,EAAA,UACA,UACA,U,0KAGaE,GADZ,IAAAtM,WAAU,CAAEC,UAAW,uBAAwBkK,SAAS,G,cAMxD,WAAoBjK,GAAsB,Y,4FAAA,cAAtBA,UACnB,IAAIqM,EAAiBnL,MAAMC,KAAMnB,EAAQS,uBAAuB,oBAC7D4L,GAAmBA,EAAgB3D,OAAS,IAC9CnI,KAAK+L,oBAAqBD,EAAgBE,QAAO,SAAAC,GAAC,OAAI,IAAAxL,UAASwL,EAAE,4BACjEjM,KAAKkM,qBAAuBJ,EAAgBE,QAAO,SAAAC,GAAC,OAAI,IAAAxL,UAASwL,EAAE,8BAGpEjM,KAAKmM,uBACL9L,OAAOF,iBAAiB,UAAU,kBAAM,EAAKgM,0B,oEAI7C,GAAGnM,KAAKkM,sBAAwBlM,KAAK+L,oBAAoB,CACxD/L,KAAKP,QAAQuI,MAAMoE,UAAY,SAC/B,IAAIC,EAAa,EACbC,EAAc,EAClBtM,KAAK+L,oBAAoB3D,SAAQ,SAAA6D,GAAC,OAAII,GAAcJ,EAAE3E,wBAAwBtD,UAC9EhE,KAAKkM,qBAAqB9D,SAAQ,SAAA6D,GAAC,OAAIK,GAAeL,EAAE3E,wBAAwBtD,UAEhF,IAAMuI,GAAwB,IAAAC,YAAa,OAASrK,KAAKsK,IAAIJ,EAAYC,GAAe,KACxFtM,KAAKP,QAAQuI,MAAMoE,UAAYG,Q,mICzB3B,SACHlE,EACAqE,EACAC,GAEIA,IACA,IAAAC,0BACIvE,GACA,kBAAMsE,MAVS,KAcvBE,QAAQC,IAAI,qBACZ,IAAA/J,UAASsF,EAAU,UAEfqE,IACA,IAAA3J,UAAS2J,EAAiB,W,mBAI3B,SACHrE,EACAqE,EACAC,IAGA,IAAA5J,UAASsF,EAAU,eACnB,IAAAvF,aAAYuF,EAAU,UAElBqE,KAEA,IAAA3J,UAAS2J,EAAiB,eAC1B,IAAA5J,aAAY4J,EAAiB,YAGjC,IAAAE,0BACIvE,GACA,YAEI,IAAAvF,aAAYuF,EAAU,cAElBqE,IAEA,IAAA5J,aAAY4J,EAAiB,cAG7BC,GACAA,MAjDW,MAJ3B,cACA,UACA,W,gECFA,oLACA,oLACA,qL,4FCFA,I,UAAA,UAEA,UACA,SACA,UACA,UACA,UACA,UAEA,UACA,U,+NAEA,I,UAIaI,G,GADZ,IAAAxN,WAAU,CAAEC,UAAW,oC,GAMtB,IAAA+C,cAAayK,U,mBAYd,WAAoBvN,GAAsB,I,EAAA,Q,4FAAA,U,EAAA,I,sBAAA,e,gHAAA,W,IAAA,KALlCwN,SAA0B,KAKQ,KAsHlCC,aAAe,SAACC,GACvB,EAAKC,wBAAwBD,EAAM7L,QACrB6L,EAAM7L,OACpB6L,EAAME,iBAEN,EAAKC,UA3HoC,KAqIlCC,qBAAuB,SAACJ,GAC/BA,EAAME,iBAEN,EAAKG,QAxIoC,KAAtB/N,UACnBO,KAAKyN,iBAAmBxN,SAASC,uBAChC,sBACC,GAEFF,KAAK0N,iBAAmBjO,EAAQ+I,cAActI,uBAC7C,2BACC,GAEFF,KAAK2N,kBAAoBhN,MAAMC,KAC9BX,SAASC,uBAAuB,4BAGjCF,KAAK4N,iBAAmBjN,MAAMC,KAC7BX,SAASC,uBAAuB,oC,0CAvBjC,OAAO,IAAAO,UAAST,KAAK0N,iBAAkB,c,oCA2B/B,WACR1N,KAAK6N,gBACL7N,KAAK8N,uBACCzN,OAAOF,iBAAiB,UAAU,kBAAM,EAAK0N,qB,6CAInD7N,KAAKP,QAAQU,iBAAiB,QAASH,KAAKkN,cAC5ClN,KAAKyN,iBAAiBtN,iBACrB,QACAH,KAAKuN,wB,gDAKF,IAAArL,WACHlC,KAAKP,QAAQI,oBAAoB,QAASG,KAAKkN,cAC/ClN,KAAKyN,iBAAiB5N,oBACrB,QACAG,KAAKuN,yB,4CAMP,IAAMQ,EAAY/N,KAAK0N,iBACrBM,kBAEIC,GAAe,IAAAhM,mBACX8L,GAAaE,KACR,IAAAzB,cACDuB,EAAU/F,MAAMoE,UAAhB,uBAA4C6B,EAA5C,W,6CAOd,GADAjO,KAAK0N,iBAAiB1F,MAAMkG,WAAa,MAC1B,IAAX,IAAAhM,SAAkB,CACrB,IAAMiM,EAAcnO,KAAK0N,iBAAiBpG,wBAEtC6G,EAAYC,MAAQ/N,OAAOmK,WADX,KAEnBxK,KAAK0N,iBAAiB1F,MAAMkG,WAC3B,KACCC,EAAYrK,KACZqK,EAAYpK,OACX1D,OAAOmK,WANS,KAOlB,S,sCAMHxK,KAAKwN,OAELxN,KAAKqO,sBAELrO,KAAKsO,yB,+BAILtO,KAAKuO,QAAUvO,KAAKwN,OAASxN,KAAK2B,S,6BAI9B3B,KAAKuO,UAGLvO,KAAKP,QAAQ+I,gBAChB,IAAAzF,UAAS/C,KAAKP,QAAQ+I,cAAe,cAEtC,IAAAzF,UAAS/C,KAAKwO,QAAQC,cAAe,yBACrCzO,KAAKP,QAAQgJ,aAAa,gBAAiB,QAG1CzI,KAAK2N,kBAAkBe,KAAI,SAAArG,GAAQ,OAAI,IAAA5H,UAAS4H,EAAU,aACxDF,OAEHnI,KAAK2N,kBAAkBvF,SAAQ,SAAAC,IAC1B,IAAA5H,UAAS4H,EAAU,YACtB,IAAAsG,kBAAiBtG,OAInB,IAAAuG,kBAAiB5O,KAAK0N,iBAAkB1N,KAAKyN,qB,6BAIxCzN,KAAKuO,UAGNvO,KAAKP,QAAQ+I,gBAChB,IAAA1F,aAAY9C,KAAKP,QAAQ+I,cAAe,cAEzC,IAAA1F,aAAY9C,KAAKwO,QAAQC,cAAe,yBACxCzO,KAAKP,QAAQgJ,aAAa,gBAAiB,UAE3C,IAAAkG,kBAAiB3O,KAAK0N,iBAAkB1N,KAAKyN,qB,8CAWdhO,GAE/BO,KAAK4N,iBAAiBxF,SAAQ,SAAAF,GAC7BA,EAAQO,aAAa,gBAAiB,c,kCAUpB0E,GAAmB,WAGjB,MAAjBnN,KAAKiN,WAKQjN,KAAK0N,iBAAiB1F,MAAM6G,YAY5C,IAAAD,kBAAiB5O,KAAK0N,iBAAkB1N,KAAKyN,kBAT7CzN,KAAKiN,SAAWnM,YACf,kBACC,IAAA8N,kBACC,EAAKlB,iBACL,EAAKD,oBA/KgB,Q,kCA8LNN,GACnB,IAAM2B,EAAa3B,EAAM4B,eAAiB5B,EAKxC2B,GACA9O,KAAKgP,kBACLF,EACA,mCAOD9O,KAAK2N,kBAAkBvF,SACtB,SAAAC,GAAQ,OAAKA,EAASL,MAAM6G,WAAa,UAL1C7O,KAAK2N,kBAAkBvF,SACtB,SAAAC,GAAQ,OAAKA,EAASL,MAAM6G,WAAa,QAQ3C7O,KAAKwN,OAEDxN,KAAKiN,WACR3H,aAAatF,KAAKiN,UAClBjN,KAAKiN,SAAW,Q,wCAGQxN,EAAsBwP,GAE/C,OADexP,EAAQS,uBAAuB+O,GAC9B9G,OAAS,M,ggBCxO3B,I,kBAAA,UACA,UAEA,UACA,UACA,SACA,U,iwBAGa+G,G,GADZ,IAAA3P,WAAU,CAAEC,UAAW,sB,GAEnB,IAAA+C,cAAayK,U,GACb,IAAAzK,cAAa4M,U,GACb,IAAAC,eAAcrC,sB,qBAEf,WAAoBtN,I,4FAAsB,4FAAtBA,U,sDAEX,WAELO,KAAKP,QAAQU,iBAAiB,SAAS,SAAAgN,GACnCA,EAAME,kBAEF,IAAAnL,UAGI,EAAKmN,SACL,EAAKA,QAAQC,QAGjB,EAAKd,QAAQlB,WAEEH,EAAM7L,OAEdiO,OAEP,EAAK1H,WAAWO,SAAQ,SAAAC,GAAQ,OAAIA,EAASmF,mB,qZClC7D,I,EAAA,UAEA,UACA,UACA,UACA,UACA,UACA,SACA,U,0KAIaR,GADZ,IAAAzN,WAAU,CAAEC,UAAW,a,cAiBvB,WAAoBC,GAAsB,Y,4FAAA,cAHlC8O,SAAmB,EAGe,KAwDlCiB,yBAA2B,SAACrC,GACnCA,EAAME,kBACN,IAAAtK,UAAUoK,EAAM7L,OAAmBkH,cAAe,eAElD,EAAKiH,oBAAoBrH,SAAQ,SAAAsH,GAAU,OAC1C,EAAKC,kBAAkBD,MAGxB,EAAKE,eAAe,EAAKC,qBAhEgB,KAAtBpQ,UACnBO,KAAKyO,cAAgBhP,EAGrBO,KAAK8P,QAAU7P,SAASC,uBACvB,aACC,GAEFF,KAAK+P,wBAA0BpP,MAAMC,KACpCX,SAASgK,iBAAT,8BAGDjK,KAAKgQ,wBAA0BrP,MAAMC,KACpCX,SAASgK,iBAAT,+BAIDjK,KAAKiQ,uBAAyBtP,MAAMC,KACnCZ,KAAK8P,QAAQ7F,iBAAb,2BAGDjK,KAAKkQ,sBAAwBvP,MAAMC,KAClCX,SAASC,uBAAuB,qBAGjCF,KAAK6P,mBAAqBlP,MAAMC,KAAKnB,EAAQ0Q,UAAUnE,QAAO,SAAAC,GAAC,OAC9D,IAAAxL,UAASwL,EAAG,2BACX,GAEFjM,KAAKyP,oBAAsB9O,MAAMC,KAChCZ,KAAKP,QAAQS,uBAAuB,yBAGrCF,KAAK4N,iBAAmBjN,MAAMC,KAC7BX,SAASC,uBAAuB,sB,sDAIzB,WACRF,KAAKiQ,uBAAuB7H,SAAQ,SAAAF,GAC1BA,EAAQ/H,iBAAiB,SAAS,SAAAgN,GAE1CA,EAAME,iBAEN,IAAM/L,GAAS,IAAAC,+BAA8B2G,GAEzC5G,GACH,EAAK8O,OAAO9O,SAKftB,KAAK6N,gBACLxN,OAAOF,iBAAiB,UAAU,kBAAM,EAAK0N,qB,uIAiCtB,WAKvB,GAJI7N,KAAKuO,SACRvO,KAAKsN,UAGF,IAAApL,SAAS,CACZlC,KAAKqQ,sBAEL,IAAMrM,EAAS7B,KAAKC,MACnBpC,KAAK8P,QAAQxI,wBAAwBtD,QAItCrD,MAAMC,KACLZ,KAAKP,QAAQS,uBAAuB,qBACnCkI,SAAQ,SAAAkI,GACRA,EAAuBtI,MAAMhE,OAA9B,UAA0CA,EAA1C,SAGDhE,KAAK+P,wBAAwB3H,SAAQ,SAAAmI,GACpC,IAAM7O,GACL,IAAAjB,UACCR,SAASiB,cAAT,kBAAkCqP,EAAOC,GAAzC,OACA,eACID,EAAOrQ,uBAAuB,cAAciI,OAC5CsI,EAAmBhP,WAASiP,YACjCH,GAEG7O,EACuC,IAAtC,IAAAjB,UAAS8P,EAAQ,mBACpBE,EAAiB9O,OAGlB8O,EAAiBjD,UAInBxN,KAAKgQ,wBAAwB5H,SAAQ,SAAA3I,GAAO,OAC3CgC,WAASiP,YAAYjR,GAAwB0K,kBAG9CnK,KAAK2Q,yBAGL3Q,KAAKyP,oBAAoBrH,SACxB,SAAAsH,GAAU,OAAKA,EAAW1H,MAAMhE,OAAS,QAG1ChE,KAAK+P,wBAAwB3H,SAAQ,SAAAmI,GAAM,OAC1C9O,WAASiP,YAAYH,GAAuBpG,aAG7CnK,KAAKgQ,wBAAwB5H,SAAQ,SAAA3I,GAAO,OAC3C,EAAKmR,UACJnR,EACAA,EAAQS,uBAAuB,aAAaiI,OAAS,Q,+BAOxDnI,KAAKuO,QAAUvO,KAAKsP,QAAUtP,KAAK6Q,S,6BAGtB,WACT7Q,KAAKuO,UAKT,IAAAuC,gBAAc,YACb,IAAAhO,aAAY,EAAKrD,QAAS,eAGb0C,KAAKC,MACjB,EAAKwL,iBAAiB,GAAGtG,wBAAwBxD,MAIlD,EAAK8J,iBAAiBxF,SAAQ,SAAAF,GAAO,OACpC,IAAAnF,UAASmF,EAAS,iBAMD,EAAKuH,oBAAoBzD,QAAO,SAAAC,GAAC,OAClD,IAAAxL,UAASwL,EAAG,eAGE9D,QACd,EAAKyH,eAAe,EAAKC,qBAE1B,IAAA9M,UAAS,EAAK+M,QAAS,cACvB,EAAKvB,SAAU,O,8BAKXvO,KAAKuO,WAIV,IAAAxL,UAAS/C,KAAKP,QAAS,eACvBO,KAAKP,QAAQuI,MAAMjE,MAAQ,KAE3B/D,KAAK4N,iBAAiBxF,SAAQ,SAAAF,GAAO,OACpC,IAAApF,aAAYoF,EAAS,kBAItB,IAAA6I,oBAOA,IAAAjO,aAAY9C,KAAK8P,QAAS,cAC1B9P,KAAKuO,SAAU,K,6BAGDjN,GAAqB,WAanC,GAZKtB,KAAKuO,UAKTvO,KAAKgQ,wBAAwB5H,SAAQ,SAAAmI,GAAM,OAC1C,IAAAxN,UAASwN,EAAOvC,kBAAmB,kBAGpChO,KAAK6Q,SAGF,IAAApQ,UAASa,EAAQ,eAAgB,EACpC,IAAAwB,aAAYxB,EAAQ,eAEpB,IAAMoO,EAAapO,EAAOpB,uBACzB,wBACC,GAEFF,KAAKyP,oBAAoBrH,SAAQ,SAAA6D,GAAC,OAAI,EAAK0D,kBAAkB1D,MAC7DjM,KAAK4P,eAAeF,M,gCAIJpO,EAAqBK,GACtC,IAAM4O,EAASjP,EAAOpB,uBAAuB,YAAY,GAEnDgI,EAAUjI,SAASiB,cAAT,mBACHqP,EAAOC,GADJ,OAIZ7O,EACHF,WAASiP,YAAYpP,GAAuBK,OAE5CF,WAASiP,YAAYpP,GAAuBkM,OAG7CxN,KAAKgR,YAAY9I,EAASvG,K,qCAGJlC,GACtB,IAAIuE,EAAS7B,KAAKC,MAAMpC,KAAK8P,QAAQxI,wBAAwBtD,QAEvDiN,EAAetQ,MAAMC,KAC1BnB,EAAQ+I,cAAc2H,UACrBnE,QAAO,SAAAC,GAAC,OAAI,IAAAxL,UAASwL,EAAG,sBAAoB,GAE1CgF,IACHjN,GAAU7B,KAAKC,MAAM6O,EAAa3J,wBAAwBtD,SAG3DvE,EAAQuI,MAAMhE,OAAd,sBAAsCA,EAAtC,QAEA,IAAAlB,aAAYrD,EAAS,WACrB,IAAAsD,UAAStD,EAAS,c,wCAGOA,GACzBA,EAAQuI,MAAMhE,OAAS,MAEvB,IAAAjB,UAAStD,EAAS,WAClB,IAAAqD,aAAYrD,EAAS,c,kCAGFyI,EAAsBxG,GACzCwG,EAAQO,aAAa,gBAAiB/G,EAAOwP,WAAWC,oB,sGC/S1D,oLACA,qL,uFCDA,I,sBAAA,UACA,UACA,UAEA,UACA,UACA,S,iwBAIaC,G,GADZ,IAAA7R,WAAU,CAAEC,UAAW,sB,GAEnB,IAAA+C,cAAayK,U,GACb,IAAAoC,eAAcrC,sB,GACd,IAAAxK,cAAa4M,U,GACb,IAAA5M,cAAa8O,iB,qBAEd,WAAoB5R,I,4FAAsB,4HAAtBA,U,sDAEX,WACLO,KAAKqP,QAAU,IAAIF,SAAOlP,SAASC,uBAAuB,aAAa,IACvEF,KAAKsR,eAAiB,IAAID,gBAAcpR,SAASC,uBAAuB,qBAAqB,IAC7FF,KAAK6N,gBACLxN,OAAOF,iBAAiB,UAAU,kBAAM,EAAK0N,mBAC7CxN,OAAOF,iBAAiB,UAAU,kBAAM,EAAK2H,mBAE7C9H,KAAKP,QAAQU,iBAAiB,SAAS,SAAAgN,GACnCA,EAAME,kBACF,IAAAb,YACA,EAAK6C,QAAQ/B,SAEb,EAAKgE,eAAehE,SAGpB,EAAKzF,YAAc,EAAKA,WAAWM,QACnC,EAAKN,WAAWO,SAAQ,SAAAC,GAAQ,OAAIA,EAASmF,e,sCAKrDxN,KAAKqP,QAAQC,QACbtP,KAAKsR,eAAehC,U,sCAIpBtP,KAAKsR,eAAehC,a,wgBC5C5B,I,IAAA,UAEA,UACA,UACA,U,iUAGaH,GADZ,IAAA5P,WAAU,CAAEC,UAAW,a,cAQvB,WAAoBC,GAAsB,eAAtBA,U,0CALnB,OAAO,IAAAgB,UAAST,KAAKP,QAAS,c,oCAOtB,WAERO,KAAKyN,iBAAmBxN,SAASC,uBAChC,sBACC,GAEFF,KAAKyN,iBAAiBtN,iBAAiB,SAAS,WAC/C0M,QAAQC,IAAI,SAEZ,EAAKwC,a,+BAKNtP,KAAKuO,QAAUvO,KAAKsP,QAAUtP,KAAK6Q,S,6BAGtB,WACT7Q,KAAKuO,UAKT,IAAAuC,gBAAc,YAEb,IAAAlC,kBAAiB,EAAKnP,QAAS,EAAKgO,kBAAkB,kBACrD,EAAKhO,QAAQ8R,qBAAqB,SAAS,GAAGC,gB,8BAM3CxR,KAAKuO,WAKV,IAAAwC,oBAEA,IAAApC,kBAAiB3O,KAAKP,QAASO,KAAKyN,uB,wBAKzB4D,GADZ,IAAA9R,WAAU,CAAEC,UAAW,qB,cAQvB,WAAoBC,GAAsB,eAAtBA,U,0CALnB,OAAO,IAAAgB,UAAST,KAAKP,QAAS,c,oCAOtB,WAERO,KAAKyN,iBAAmBxN,SAASC,uBAChC,sBACC,GAEFF,KAAKyN,iBAAiBtN,iBAAiB,SAAS,WAC/C0M,QAAQC,IAAI,SACZ,EAAKwC,a,+BAKNtP,KAAKuO,QAAUvO,KAAKsP,QAAUtP,KAAK6Q,S,6BAGtB,WACT7Q,KAAKuO,UAIJvO,KAAKyN,kBAA6CgE,MAAzBzR,KAAKyN,mBAClCzN,KAAKyN,iBAAmBxN,SAASC,uBAChC,sBACC,KAGH,IAAA0O,kBAAiB5O,KAAKP,QAASO,KAAKyN,kBAAkB,kBACrD,EAAKhO,QAAQ8R,qBAAqB,SAAS,GAAGC,c,8BAK1CxR,KAAKuO,UAGLvO,KAAKyN,kBAA6CgE,MAAzBzR,KAAKyN,mBAClCzN,KAAKyN,iBAAmBxN,SAASC,uBAChC,sBACC,KAEH,IAAAyO,kBAAiB3O,KAAKP,QAASO,KAAKyN,uB,oGCxG/B,WACH,OAAOpN,OAAOmK,WAPU,K,eAWrB,WACH,OAAOnK,OAAOmK,YAXe,K,QAe1B,WACH,OAAOnK,OAAOmK,WAfO,M,aAkBlB,WACH,OAAOnK,OAAOmK,WAlBa,M,uFAHH,I,oBACK,I,YACR,K,kBACM,M,gFCIxB,SACNmC,GAEC,IADD+E,EACC,uDAD0BzR,SAASyC,KAEpC,IAAK,IAAAR,SAAL,CAOA,IAAMyP,GAAS,IAAA/I,sBAEX+I,GAAU,GACbC,uBAAsB,YAChB,IAAAC,kBACJH,EAAY1J,MAAMlG,IAAlB,UAA2BgQ,EAAYH,GAAvC,MAGA1R,SAASyC,KAAKsF,MAAMhE,OAAS,OAC7B/D,SAASyL,gBAAgB1D,MAAMhE,OAAS,OAExC0N,EAAY1J,MAAM+J,SAAW,QAC7BL,EAAY1J,MAAMjE,MAAQ,OAC1B2N,EAAY1J,MAAMhE,OAAS,OAC3B0N,EAAY1J,MAAMgK,SAAW,UAK9BlR,YAAW,kBAAM6L,MAAY,aAzB9BA,K,kBA8BK,WAAmE,IAA1C+E,EAA0C,uDAAfzR,SAASyC,KAEnE,KAAK,IAAAmP,gBAAgB,CAGpB,IAAMF,EAASG,GAAY,IAAA/P,cAAa2P,EAAY1J,MAAMlG,MACpDmQ,GAAa,IAAAlQ,cAAa2P,EAAY1J,MAAMiK,YAClDP,EAAY1J,MAAMlG,IAAM,KAGxB4P,EAAY1J,MAAM+J,SAAW,KAC7BL,EAAY1J,MAAMjE,MAAQ,KAC1B2N,EAAY1J,MAAMhE,OAAS,KAC3B0N,EAAY1J,MAAMgK,SAAW,KAC7BN,EAAYQ,gBAAgB,SAC5BR,EAAY1J,MAAMiK,WAAaA,EAAa,KAExCN,GAAU,GACbtP,SAAS,EAAGsP,K,kBAKR,WACN,IAAMQ,EAA+B,GAG/B7B,EAASrQ,SAASC,uBACvB,aACC,GACIkS,EAAgBnS,SAASC,uBAC9B,qBACC,GASF,OAPIoQ,GACH6B,EAASE,KAAK/B,GAEX8B,GACHD,EAASE,KAAKD,GAGRjQ,KAAKC,MACX+P,EACEzD,KAAI,SAAAzC,GAAC,OAAIA,EAAE3E,wBAAwBtD,UACnCsO,QAAO,SAACC,EAAIC,GAAL,OAAYD,EAAKC,IAAI,KAtFhC,aACA,UAEA,SAuFA,SAASV,EAAYH,GACpB,OAAkB,IAAXA,EAAeA,GAAmB,EAAVA,I,8EC3FzB,SACNc,EACAC,EACAC,EACAhI,GAGA,OADA8H,GAAe9H,EAAW,GACR,EACTgI,EAAW,EAAKF,EAAcA,EAAcC,GAG5CC,EAAW,KADpBF,GACyCA,EAAc,GAAK,GAAKC,I,4ECX3D,SACND,EACAC,EACAC,EACAhI,GAEA,OAAQgI,EAAWF,EAAe9H,EAAW+H,I,2FCN9C,I,EAAA,UACA,UAGaE,GADZ,IAAArT,WAAU,CAAEC,UAAW,e,GAGvB,WAAoBC,I,4FAAsB,cAAtBA,UACnBO,KAAK6S,SAAW,IAAIpR,WAAShC,EAAS,O,oGCqXjC,SACNA,EACA2J,GAEAyD,QAAQiG,MACP,qIAED,IAAIC,EAAOtT,EAAO,SAMlB,OAJKsT,IACJA,EAAO,IAAItR,EAAShC,EAAS2J,IAGvB2J,G,kBAzYR,cACA,UACA,UAEA,UACA,UAEA,U,s5BAEA,IAsBatR,E,WAMZ,WAAmBhC,EAAsB2J,GAA2B,Y,4FAAA,cAgB5DA,QAA2B,CAClC4J,YAAa,YACbC,kBAAmB,YACnBC,YAAa,SACbC,gBAAiB,uBACjBC,eAAgB,WAChBC,UAAW,iBACXC,iBAAkB,oBAClBC,aAAc,KACdC,mBAAoB,IACpBC,YAAY,EACZC,eAAe,EACfC,qBAAqB,EACrBC,mBAAoB,cACpBC,mBAAoB,cACpBC,mBAAoB,cACpBC,aAAc,QAhCqD,KAuC5DC,iBAAkB,EAvC0C,KA0C5DC,kBAAmB,IAAAC,uBAAsB,kBA1CmB,KAkM5DC,YAAc,SAAChH,GAEtB,IAAMiH,EAAUjH,GAAUA,EAAMkH,cAC5BD,GAA+B,MAApBA,EAAQE,SACtBnH,EAAME,iBAGP,IAAM/L,GAAS,IAAAC,+BACd6S,EACA,EAAKhL,QAAQyK,oBAEVd,EAAOzR,EAAM,SAEZyR,IACJA,EAAOqB,EAAO,UAGX9S,GACHG,EAASiP,YAAYpP,EAAQyR,EAAK3J,SAASkE,UApNuB,KAAjD7N,UAClBO,KAAKoJ,QAAL,OACIpJ,KAAKoJ,SACLA,GAGCpJ,KAAKoJ,QAAQZ,gBACjBxI,KAAKoJ,QAAQZ,eAAgB,IAAAjH,+BAC5B9B,EACAO,KAAKoJ,QAAQwK,oBACb,IAIF5T,KAAKsD,O,0CAjBL,OAAOtD,KAAKuU,a,oCAsEZ,OAPCvU,KAAKoJ,QAAQuK,qBACbtT,OAAOmU,YAAcxU,KAAKoJ,QAAQmK,eAClC,IAAA9S,UAAST,KAAKP,QAASO,KAAKoJ,QAAQkK,oBAEpC,IAAAvQ,UAAS/C,KAAKP,QAASO,KAAKoJ,QAAQiK,YAErC,IAAAvQ,aAAY9C,KAAKP,QAASO,KAAKoJ,QAAQkK,mBAChC,IAAA7S,UAAST,KAAKP,QAASO,KAAKoJ,QAAQiK,a,+BAIvCrT,KAAK0B,SACJ1B,KAAKoJ,QAAQqK,YAChBzT,KAAKwN,OAGNxN,KAAK2B,S,6BAIA,WACN,IAAI3B,KAAKgU,kBAAmBhU,KAAK0B,SAAjC,CAIA,GAAI1B,KAAKoJ,QAAQsK,eAAiB1T,KAAKyU,OAAQ,CAC9C,IAAMC,EAAW,IAAH,OAAO1U,KAAKoJ,QAAQwK,mBAApB,cAA4C5T,KAAKyU,OAAOjE,GAAxD,MACRmE,EAAUhU,MAAMC,KACrBZ,KAAKyU,OAAOxK,iBAAZ,UACIyK,EADJ,YACgB1U,KAAKoJ,QAAQiK,UAD7B,aAC2CqB,EAD3C,YACuD1U,KAAKoJ,QAAQ+J,mBAEnEnH,QAAO,SAAC4I,GAAD,OAAYA,IAAW,EAAKtT,UAErC,GAAIqT,GAAWA,EAAQxM,OAAQ,CAM9B,GALyBwM,EAAQ3I,QAAO,SAAC4I,GACxC,IAAMnE,EAAmBmE,EAAM,SAC/B,OAAOnE,GAAoBA,EAAiBuD,mBAGxB7L,OACpB,OAGDwM,EAAQvM,SAAQ,SAACwM,GAAD,OACfnT,EAASiP,YAAYkE,GAAuBpH,WAK/CxN,KAAK6U,YAAY7U,KAAKP,QAASO,KAAKuU,a,8BAIhCvU,KAAKgU,iBAAoBhU,KAAK0B,UAIlC1B,KAAK8U,aAAa9U,KAAKP,QAASO,KAAKuU,Y,gCAIrC,IAAM9U,EAAUO,KAAKP,QAEjBA,EAAO,WACVA,EAAO,SAAmB,MAE1B,IAAAqD,aAAYrD,EAASO,KAAKoJ,QAAQgK,iBAClC,IAAAtQ,aAAYrD,EAASO,KAAKoJ,QAAQ+J,kBAClC,IAAArQ,aAAYrD,EAASO,KAAKoJ,QAAQiK,WAE9BrT,KAAKoJ,QAAQ8J,cAChBzT,EAAQuI,MAAMhI,KAAKoJ,QAAQ8J,aAAe,S,6BAK9B,WAEdlT,KAAKuU,SAAW5T,MAAMC,KACrBX,SAASgK,iBAAT,WACKjK,KAAKoJ,QAAQ2K,aADlB,cACoC/T,KAAKP,QAAQ+Q,GADjD,gBAC2DxQ,KAAKoJ,QAAQyK,mBADxE,cACgG7T,KAAKP,QAAQ+Q,GAD7G,QAWD,IALA,IAKA,MALgB7P,MAAMC,KACrBX,SAASgK,iBAAT,WACKjK,KAAKoJ,QAAQ0K,mBADlB,kBAID,eAA8B,CAAzB,IAAMxG,EAAM,KACVhM,GAAS,IAAAC,+BACd+L,EACAtN,KAAKoJ,QAAQyK,oBAEC,OAAXvS,GAAmBA,IAAWtB,KAAKP,UACtCO,KAAKsB,OAASA,EACdtB,KAAKuU,SAASlC,KAAK/E,IAIrBtN,KAAKyU,OAASzU,KAAKoJ,QAAQZ,cA7LN,aAgMGxI,KAAKP,SAE5BO,KAAKuU,SAASnM,SAAQ,SAACgM,GAAD,OACrBA,EAAQjU,iBAAiB,QAAS,EAAKgU,aAAa,MAIlDnU,KAAKyU,OACR9T,MAAMC,KACLZ,KAAKyU,OAAOxK,iBAAZ,WACKjK,KAAKoJ,QAAQ0K,mBADlB,wBACoD9T,KAAKoJ,QAAQwK,mBADjE,cACyF5T,KAAKyU,OAAOjE,GADrG,QAGCpI,SAAQ,SAAC3I,GACV,EAAKsV,2BACJ,IAAAxT,+BACC9B,EACA,EAAK2J,QAAQyK,oBAEd,CAACpU,OAIHO,KAAK+U,0BAA0B/U,KAAKP,QAASO,KAAKuU,WAGnD,IAAAxR,UAAS/C,KAAKP,QAASO,KAAKoJ,QAAQgK,gBAEpCpT,KAAKP,QAAL,SAA+BO,O,kCAyBZgV,EAA8BT,GAAsB,WACvEvU,KAAKiU,iBAAiBe,EAAiB,SAEvC,IAAAlS,aAAYkS,EAAiBhV,KAAKoJ,QAAQgK,iBAC1C,IAAArQ,UAASiS,EAAiBhV,KAAKoJ,QAAQ+J,iBACnCnT,KAAKoJ,QAAQ8J,cAChB8B,EAAgBhN,MAAMhI,KAAKoJ,QAAQ8J,aAClC8B,EAAgBC,aAAe,MAG7BV,GAAYA,EAASpM,QACxBoM,EAASnM,SAAQ,SAACgM,IACjB,IAAArR,UAASqR,EAAS,EAAKhL,QAAQ4J,aAC/BoB,EAAQ3L,aAAa,gBAAiB,WAIpCzI,KAAKyU,SACR,IAAA1R,UAAS/C,KAAKyU,OAAQzU,KAAKoJ,QAAQ4J,aAGpChT,KAAKgU,iBAAkB,GAEvB,IAAApH,0BACCoI,GACA,YACC,IAAAlS,aAAYkS,EAAiB,EAAK5L,QAAQ+J,kBAC1C,IAAApQ,UAASiS,EAAiB,EAAK5L,QAAQgK,iBACvC,IAAArQ,UAASiS,EAAiB,EAAK5L,QAAQiK,WAEvC,EAAKW,iBAAkB,EACnB,EAAK5K,QAAQ8J,cAChB8B,EAAgBhN,MAAM,EAAKoB,QAAQ8J,aAAe,MAGnD,EAAKe,iBAAiBe,EAAiB,WAExChV,KAAKoJ,QAAQoK,sB,mCAIMwB,EAA8BT,GAAsB,WA8BxE,GA7BAvU,KAAKiU,iBAAiBe,EAAiB,QAEnChV,KAAKoJ,QAAQ8J,cAChB8B,EAAgBhN,MAAMhI,KAAKoJ,QAAQ8J,aAClC8B,EAAgBC,aAAe,OAGjC,IAAAlS,UAASiS,EAAiBhV,KAAKoJ,QAAQ+J,kBACvC,IAAArQ,aAAYkS,EAAiBhV,KAAKoJ,QAAQgK,iBAC1C,IAAAtQ,aAAYkS,EAAiBhV,KAAKoJ,QAAQiK,WAE1C2B,EAAgBE,YAEZX,GAAYA,EAASpM,QACxBoM,EAASnM,SAAQ,SAACgM,GACjB,IAAM9S,GAAS,IAAAC,+BACd6S,EACA,EAAKhL,QAAQyK,oBAGC,OAAXvS,KACE,IAAAb,UAASa,EAAQ,EAAK8H,QAAQiK,cAClC,IAAAvQ,aAAYsR,EAAS,EAAKhL,QAAQ4J,aAClCoB,EAAQ3L,aAAa,gBAAiB,cAMtCzI,KAAKyU,OAAQ,CAChB,IAAMC,EAAW,IAAH,OAAO1U,KAAKoJ,QAAQwK,mBAApB,cAA4C5T,KAAKyU,OAAOjE,GAAxD,MACRmE,EAAUhU,MAAMC,KACrBZ,KAAKyU,OAAOxK,iBAAZ,UACIyK,EADJ,YACgB1U,KAAKoJ,QAAQiK,UAD7B,aAC2CqB,EAD3C,YACuD1U,KAAKoJ,QAAQ+J,mBAEnEnH,QAAO,SAACC,GAAD,OAAOA,IAAM+I,KAElBhV,KAAKyU,QAA6B,IAAnBE,EAAQxM,SAC1B,IAAArF,aAAY9C,KAAKyU,OAAQzU,KAAKoJ,QAAQ6J,mBAIxCjT,KAAKgU,iBAAkB,EACnBhU,KAAKoJ,QAAQ8J,cAChB8B,EAAgBhN,MAAMhI,KAAKoJ,QAAQ8J,aAAe,OAGnD,IAAAtG,0BACCoI,GACA,WACC,EAAKhB,iBAAkB,GAEvB,IAAAlR,aAAYkS,EAAiB,EAAK5L,QAAQ+J,kBAC1C,IAAApQ,UAASiS,EAAiB,EAAK5L,QAAQgK,gBAEnC,EAAKhK,QAAQ8J,cAChB8B,EAAgBhN,MAAM,EAAKoB,QAAQ8J,aAAe,MAGnD,EAAKe,iBAAiBe,EAAiB,YAExChV,KAAKoJ,QAAQoK,sB,gDAImB/T,EAAkB8U,GAAqB,WACxE,GAAI9U,EAAS,CACZ,IAAMiC,GAAS,IAAAjB,UAAShB,EAASO,KAAKoJ,QAAQiK,WAE1CkB,GAAYA,EAASpM,QACxBoM,EAASnM,SAAQ,SAACgM,GACjB1S,GACG,IAAAqB,UAASqR,EAAS,EAAKhL,QAAQ4J,cAC/B,IAAAlQ,aAAYsR,EAAS,EAAKhL,QAAQ4J,aAErCoB,EAAQ3L,aACP,gBACA/G,EAAOwP,WAAWC,sB,mCAlStB1R,EACA2J,GAEC,IADD+L,IACC,yDACGpC,EAAOtT,EAAO,SAMlB,OAJKsT,GAAQoC,IACZpC,EAAO,IAAItR,EAAShC,EAAS2J,IAGvB2J,M,2FC5FF,WACN,MAAO,uCAAuCqC,QAAQ,SAAS,SAAUC,GACxE,IAAMC,EAAqB,GAAhBnT,KAAKoT,SAAiB,EAEjC,OADU,KAALF,EAAWC,EAAS,EAAJA,EAAW,GACvBpE,SAAS,S,6ECJb,SACNsE,EACAC,GAEA,OAAO,SAAUxP,GAChBwP,EAASxP,GACTuP,EAAOE,MAAM1V,KAAM,CAACiG,O,0ECQf,SAAiB0P,GACvB,OAAO,SAACC,GACP,IAAMC,EAAc,IAAIC,IACxBH,EAAWvN,SAAQ,SAAC2N,GAGnB,IAAMC,EAAYC,EAASC,QAAQH,GAEnC,IAAIC,EAaH,MAAM,IAAIG,MAAJ,uCAEJJ,EAAgBA,EAAcK,KAAOL,EAFjC,YAZN,IAAMM,EACLT,IAAgB3V,SAASyC,KAAOzC,SAAW2V,EAC5CjV,MAAMC,KACLyV,EAAgBnW,uBAAuB8V,EAAUxW,YAChD4I,SAAQ,SAACkO,GAAD,OACTC,EAASC,QAAQR,EAAWM,EAAqBP,MAG9CC,EAAUtM,SACbmM,EAAYY,IAAIT,EAAWD,MAW1BF,EAAYa,MACf,IAAIC,kBAAiB,SAACC,GACrB,IAAMC,EAAuB,IAAIf,IAEjCc,EAAUxO,SAAQ,SAAC0O,GAClBjB,EAAYzN,SAAQ,SAAC2O,EAAOC,GAAR,OACnBrW,MAAMC,KAAKkW,EAASG,YAClBjL,QAAO,SAACsK,GAAD,OAAU,IAAAY,eAAcZ,MAC/B5H,KAAI,SAAC4H,GAAD,OAAU,IAAAa,eAAcb,MAC5BlO,SAAQ,SAACkO,GACT,IAAMc,EAAQzW,MAAMC,KACnB0V,EAAKpW,uBAAuB8W,EAAIxX,aAE7B,IAAAiB,UAAS6V,EAAMU,EAAIxX,YACtB4X,EAAM/E,KAAKiE,GAEZc,EAAMhP,SAAQ,SAAC4N,GACda,EAAqBJ,IAAIT,GAA0B,kBAClDO,EAASC,QAAQQ,EAAKhB,EAA0Be,kBAOtDF,EAAqBzO,SAAQ,SAACiN,GAAD,OAAOA,UAClC3L,QAAQzJ,SAASyC,KAAM,CACzB2U,WAAW,EACXC,SAAS,MAvEb,cACA,UACA,UAEA,UAEA,UACA,UAGMC,EAAY,IAAIC,YAChBvB,EAAW,IAAIwB,WAASF,GACxBhB,EAAW,IAAImB,WAASzB,I,kFCR9B,c,0KAGayB,E,WAGZ,WAAoBzB,I,4FAAoB,cAFhC0B,eAAiB,IAAI7B,IAEW,KAApBG,W,qDAGnBD,EACAM,EACAP,GACC,WAIK6B,EAAc,IAAI7B,EAAcO,GAElCtW,KAAK2X,eAAeE,IAAIvB,GAC3BtW,KAAK2X,eAAeG,IAAIxB,GAAMjE,KAAKuF,GAEnC5X,KAAK2X,eAAelB,IAAIH,EAAM,CAACsB,IAGhCG,OAAOC,KAAKhC,EAAUiC,SAAS7P,SAAQ,SAAC8P,GACvC,IAAMC,EAAenC,EAAUiC,QAAQC,GAIjC5W,EAAS,EAAK2U,SAASC,QAAQiC,EAAMzD,UAE3C,GAAIpT,EAAQ,CACX,IACM8W,GADaD,EAAME,YAAc/B,EAAOrW,UACrBC,uBAAuBoB,EAAO9B,WAEjD8Y,EAAQ3X,MAAMC,KAAKwX,GACvBpM,QAAO,SAACC,GAAD,OAAQkM,EAAMnM,QAASmM,EAAMnM,OAAOC,MAC3CyC,KAAI,SAACzI,GAAD,OAAO,EAAK0R,eAAeG,IAAI7R,MACnC+F,QAAO,SAAC/F,GAAD,OAAOA,WACdqM,QAAO,SAACiG,EAAKC,GAAN,OAAcD,EAAIE,OAAOD,KAAM,IACtCxM,QAAO,SAAC0M,GAAD,OAAOA,EAAEd,cAAgBO,EAAMzD,YAExCkD,EAAYM,GAAYC,EAAMQ,MAAQL,EAAM,GAAKA,OAI/C,IAAAM,QAAOhB,EAAYiB,SACrBjB,EAAuBiB,c,yICnD3B,cACA,U,urBAcO,IAAMtZ,GAAgC,IAAAuZ,eAC5C,aACA,eAACzD,EAAD,uDAAgB,GAAhB,YAA6BA,M,cAGvB,IAAM0D,GAA8C,IAAAC,qBAEzD,aAAa,eAAC3D,EAAD,uDAAgB,GAAhB,YAA6BA,M,4JCtB5C,c,2rBAesB4D,E,8HAEf,IAAM1W,GAAe,IAAA2W,mBAC3B,gBACA,SAACxE,GAAD,IAAiB3B,EAAjB,uDAA6B,GAA7B,UACC2B,WACAiE,OAAO,EACPN,aAAa,GACVtF,KAEJkG,G,iBAGM,IAAM7J,GAAgB,IAAA8J,mBAC5B,iBACA,SAACxE,GAAD,IAAiB3B,EAAjB,uDAA6B,GAA7B,UACC2B,WACAiE,OAAO,EACPN,aAAa,GACVtF,KAEJkG,G,kBAGM,IAAME,GAAW,IAAAD,mBACvB,YACA,SAACxE,GAAD,IAAiB3B,EAAjB,uDAA6B,GAA7B,UACC2B,WACAiE,OAAO,EACPN,aAAa,GACVtF,KAEJkG,G,aAGM,IAAMG,GAAc,IAAAF,mBAC1B,eACA,SAACxE,GAAD,IAAiB3B,EAAjB,uDAA6B,GAA7B,UACC2B,WACAiE,OAAO,EACPN,aAAa,GACVtF,KAEJkG,G,oGC1DD,cACA,U,u4BAGazB,E,uLACA6B,GACX,KAAK,IAAAT,QAAOS,GACX,MAAO,GAER,IAAMC,EAAaC,EAAcF,GAC3BG,EAAiBxZ,KAAKyZ,gBAAgBJ,EAAYC,IAAe,GAGvE,OADCA,IAAevB,OAAS/X,KAAK0Z,YAAYJ,GAAc,IAC/Bb,OAAOe,K,mCAGpBH,GACZ,KAAK,IAAAT,QAAOS,GACX,MAAO,GAER,IAAMC,EAAaC,EAAcF,GAC3BM,EAAyC,GAC/C,GAAIL,IAAevB,OAAQ,CAC1B,IAAM6B,EAAqB5Z,KAAK2Z,aAAaL,GAC7CvB,OAAOC,KAAK4B,GAAoBxR,SAAQ,SAAC8P,GACxCyB,EAAazB,GAAY0B,EAAmB1B,MAG9C,IAAM2B,EAAkB7Z,KAAK8Z,iBAAiBT,EAAYC,GAW1D,OAVIO,GACH9B,OAAOC,KAAK6B,GAAiBzR,SAAQ,SAAC8P,GACrC,IAAM6B,EAAoB,GACtBJ,EAAaK,eAAe9B,IAC/B6B,EAAW1H,KAAX,MAAA0H,EAAU,EAASJ,EAAazB,KAEjC6B,EAAW1H,KAAX,MAAA0H,EAAU,EAASF,EAAgB3B,KACnCyB,EAAazB,GAAY6B,KAGpBJ,I,sCAIPN,EACAC,GAGA,OAAID,EAAWW,eAAeC,eACrBZ,EAAmBY,eAErB,O,uCAIPZ,EACAC,GAGA,OAAID,EAAWW,eAAeE,iBACrBb,EAAmBa,iBAErB,U,sBAIT,SAASX,EAAcY,GACtB,IAAMC,EAAcrC,OAAOsC,eAAeF,EAAKG,WAI/C,OAHmBF,EAAcA,EAAYxC,YAAc,OAGtCG,O,iGCtEtB,c,61BAIA,IAAMwC,EAA6B,CAClC,eACA,gBACA,WACA,eAIY9C,E,WACZ,WAAoBF,I,4FAAsB,cAAtBA,Y,qDAIZiD,GACP,IAAMC,EAAeza,KAAKuX,UAAUmC,YAAYc,GAEhD,GAAIC,EAAc,CACjB,IAAMC,EAAWC,EAChBF,GACA,SAACpF,GAAD,OAAOA,GAAwB,cAAnBA,EAAEuF,gBAGf,GAAIF,EAAU,CACb,IAAMG,EAAmB7a,KAAKuX,UAAUoC,aAAaa,GAErD,OAAOxa,KAAK8a,2BACXJ,EACAG,EACAL,IAKH,OAAO,O,iDAIPxE,EACA6E,EACA9E,GAEA,IAAMkC,EAAkC,GAYxC,OAVAF,OAAOC,KAAK6C,GAAkBzS,SAAQ,SAAC8P,GACtC,IAAMC,EAAQwC,EAASE,EAAiB3C,IAAW,SAAC6C,GAAD,OAClDR,EAA2BS,MAAK,SAACrV,GAAD,OAAOA,GAAKA,IAAMoV,EAAEH,mBAGjDzC,IACHF,EAAQC,GAAYC,MAIfnY,KAAKib,OAAOjF,EAAWiC,EAASlC,K,6BAIvCC,EACAiC,EACAlC,GAEA,IAAMmF,EAAgBlF,EAAUiC,QAAV,OACdjC,EAAUiC,SAAYA,GAC3BA,EAEH,OAAO,IAAAc,iBAAgB,CACtBvZ,UAAWwW,EAAUxW,UACrBkK,QAASsM,EAAUtM,QACnBuO,QAASiD,M,0CAIiBjD,GAA0C,WAC/DkD,EAAa,GAOnB,OALApD,OAAOC,KAAKC,GAAS7P,SAAQ,SAACgT,GAC7B,IAAMjD,EAAQF,EAAQmD,GACtBD,EAAI9I,KAAK,EAAKgJ,kBAAkBlD,EAAOiD,OAGjCD,I,wCAGkBG,EAAUF,GACnC,MAAO,CACN/C,YAAaiD,EAAEjD,YACfM,MAAO2C,EAAE3C,MACTyC,eACAG,MAAM,EACN7G,SAAU4G,EAAE5G,e,sBAKf,SAASiG,EAAYa,EAAUC,GAC9B,IAAK,IAAI9V,EAAI6V,EAAIrT,OAAS,EAAGxC,GAAK,EAAGA,IACpC,GAAI8V,EAAUD,EAAI7V,IACjB,OAAO6V,EAAI7V,GAGb,OAAO,K,2mBCpFD,SACNyQ,EACAsF,EACAC,EACAC,EACAC,GAMA,IAAMC,EAAWC,EAAiBL,GAElC,SAASM,IAAoD,2BAAhCC,EAAgC,yBAAhCA,EAAgC,gBAC5D,GAAIjc,gBAAgBgc,EAEnB,OADAF,EAASI,KAAT,MAAAJ,EAAQ,CAAM9b,MAAN,OAAeic,IAChBjc,KAGR,IAAMmc,EAAqB,EAAKH,EAA4BC,GACtDG,EAA+B,SAACC,GAUrC,OATIR,GACHA,EAAM,WAAN,GAAOQ,GAAP,OAAeJ,KAIII,EAAIrC,eAAeC,GACnCoC,EAAYpC,GACblC,OAAOuE,eAAeD,EAAKpC,EAAa,CAAElD,MAAO,KAAMkD,IAC9C5H,KAAK8J,GACVE,GAKR,OAHIT,GACHA,EAAQQ,GAEFA,EAQR,OALIT,IACHK,EAAiB1B,UAAYvC,OAAO5C,OAAOwG,EAAYrB,YAGxD0B,EAAiB1B,UAAUM,aAAexE,EACnC4F,G,oBAgBD,SACN5F,EACAsF,EACAC,GAEA,IAAMG,EAAWC,EAAiBL,GAElC,SAASa,IAA0C,2BAAlBN,EAAkB,yBAAlBA,EAAkB,gBAClD,GAAIjc,gBAAgBuc,EAEnB,OADAT,EAASpG,MAAM1V,KAAMic,GACdjc,KAGR,IAAMwc,EAAoB,EAAKD,EAAgCN,GAE/D,OAAO,SAAuB3a,EAAamb,GAC1C,IAAM7E,EAActW,EAAOsW,YAGrB8E,EAAO9E,EAAYoC,eAAeE,GACpCtC,EAAoBsC,GACrBnC,OAAOuE,eAAe1E,EAAasC,EAAe,CAClDnD,MAAO,KACJmD,GACNwC,EAAKD,GAAaC,EAAK1C,eAAeyC,IAAaC,EAAKD,IAAc,GACtEC,EAAKD,GAAUE,QAAQH,IASzB,OALIb,IACHY,EAAqBjC,UAAYvC,OAAO5C,OAAOwG,EAAYrB,YAG5DiC,EAAqBjC,UAAUM,aAAexE,EACvCmG,G,qCA/GD,IAAMtC,EAAc,kB,gBACpB,IAAMC,EAAgB,qBA+D7B,SAAS6B,EAAiBL,GACzB,OAAO,WACN,GAAIA,EAAO,CACV,IAAMkB,EAASlB,EAAK,WAAL,aACf,IAAK,IAAMxD,KAAY0E,EAClBA,EAAO5C,eAAe9B,KACzBlY,KAAKkY,GAAY0E,EAAO1E,M,8xBClEtB,SACN9B,EACAsF,GAEA,IAAMmB,EAAe,WACpB,IAAMD,EAASlB,EAAQA,EAAK,WAAL,aAAiB,GACxC,UACCd,aAAcxE,GACXwG,IAKL,OAFAC,EAAQC,SAAW,SAACC,GAAD,OAAcA,GAAOA,EAAInC,eAAiBxE,GAC7DyG,EAAQjC,aAAexE,EAChByG,I,uEChBD,SAAgBG,GACtB,MAAoB,mBAANA,G,cAHR,IAAMC,EAAOC,S,qFCEb,SAAkBzd,EAAkBD,GACtCC,KAAY,IAAAgB,UAAShB,EAASD,IACjCC,EAAQgJ,aAAa,SAAS,IAAA0U,UAAS1d,GAAS2d,OAAS,IAAM5d,IALjE,aACA,W,gFCCO,SAAuByM,GAC7B,OAAI,IAAAiL,eAAcjL,GACVA,EAED,MANR,e,8ECGO,SAAqBxM,EAAkBD,GAA+B,IAAZ6d,IAAY,yDACxEA,GACH,IAAAta,UAAStD,EAASD,IAElB,IAAAsD,aAAYrD,EAASD,IAPvB,cACA,W,2ECAO,SAAoBA,GAI1B,OAHK8d,EAAgB9d,KACpB8d,EAAgB9d,GAAa,IAAI+d,OAAO,UAAY/d,EAAY,YAE1D8d,EAAgB9d,IALxB,IAAM8d,EAAkB,I,0ECAjB,SAAoBE,GAC1B,IAAI/d,EAAUQ,SAASwd,cAAc,OAGrC,OAFAhe,EAAQie,UAAYF,EACV/d,EAAQuO,oB,8ECDZ,SACNmE,EACA3S,GACc,Q,u3BAAA,CACO2S,GADP,IACd,2BAAgD,KAArCsC,EAAqC,QAC/C,IAAI,IAAAhU,UAASgU,EAAQjV,GACpB,OAAOiV,GAHK,8BAOd,OAAO,MAZR,c,oLCAO,SAAkBhV,GACxB,OAAOA,EAAQ4B,aAAa,UAAY,K,yECClC,SACN5B,EACA2W,EACAuH,GAIA,GAFAA,EAAWA,IAAY,IAAAC,WAAUne,GAGhC,OAAOke,EAASE,iBAAiBzH,IAASuH,EAASvH,IAVrD,e,yECAO,SACN3W,GAEA,IAAMqe,EAAare,EAAQ6H,wBAE3B,MAAO,CACNxF,IAAK,WACJ,IAAMic,EAAgBte,EAAQse,cACxBC,EAAc3d,OAAOmD,aAAeua,EAAcrb,KAAKub,UAC7D,OACCH,EAAWhc,IAAMkc,EAAcD,EAAcrS,gBAAgBwS,WAG/Dpa,KAAM,WACL,IAAMia,EAAgBte,EAAQse,cACxBI,EAAe9d,OAAO+d,aAAeL,EAAcrb,KAAK2b,WAC9D,OACCP,EAAWha,KACXqa,EACAJ,EAAcrS,gBAAgB4S,e,qFChB3B,SACN7e,EACAD,GAEA,OAAO,IAAA+e,eAAa,IAAAC,YAAW/e,GAAUD,IAP1C,aACA,W,mFCCO,SAASif,EAAiBhf,GAChC,IAAMif,EAAyB,GAU/B,OARIjf,IAAW,IAAAyX,eAAczX,KAC5Bif,EAAQrM,KAAK5S,GAETA,EAAQ+I,eACXkW,EAAQrM,KAAKqD,MAAMgJ,EAASD,EAAiBhf,EAAQ+I,iBAIhDkW,GAbR,e,6ECEO,SAAoBjf,GAC1B,OAAO,IAAAgf,kBAAiBhf,EAAQ+I,gBAHjC,e,gGCEO,SACN/I,GAGc,IAFdkf,EAEc,uDAFF,cACZC,IACc,yDACRlK,GAAW,IAAAmK,wBAAuBpf,EAASkf,EAAWC,GAE5D,OAAIlK,GAAsC,IAA1BA,EAASzT,QAAQ,KACzBhB,SAASO,eAAekU,EAASoK,OAAO,EAAGpK,EAASvM,OAAS,IAG9D,MAbR,c,sFCAO,SACN1I,GAGS,IAFTkf,EAES,uDAFG,cACZC,IACS,yDACLlK,EAAWjV,EAAQ4B,aAAasd,GAOpC,OALKjK,GAAYkK,IAChBlK,EAAWjV,EAAQ4B,aAAa,SAAW,GAC3CqT,EAAW,QAAQqK,KAAKrK,GAAYA,EAAW,MAGzCA,I,2ECZD,SAAqBjV,GAC3B,OAAOkB,MAAM2Z,UAAUtO,OAAOkQ,KAC7Bzc,EAAQ+I,cAAc2H,UACtB,SAAC6O,GACA,OAAOA,IAAUvf,O,0ECJb,SAAmBA,GACzB,IAAIwf,EAAOxf,EAAQse,cAAcmB,YAMjC,OAJKD,GAASA,EAAKE,SAClBF,EAAO5e,QAGD4e,EAAKG,iBAAiB3f,K,kFCPvB,WACN,YAA8BgS,IAAvBpR,OAAOmD,YACXnD,OAAOmD,aACLvD,SAASyL,iBACXzL,SAASyC,KAAK2c,YACdpf,SAASyC,MAAsBub,Y,2ECF5B,SAAkBxe,EAAkBD,GAC1C,OAAOC,IAAW,IAAA6f,YAAW9f,GAAWuf,MAAK,IAAA5B,UAAS1d,KAJvD,cACA,U,oFCCO,SACNA,EACAD,EACA+f,GAEA,IAAI9K,EAAShV,EAAQ+I,cACrB,GAAI+W,IAAe,IAAA9e,UAAShB,EAASD,GACpC,OAAO,EAER,KAAOiV,GAAUA,EAAO+K,UAAgC,IAApB/K,EAAO+K,UAAgB,CAC1D,IAAI,IAAA/e,UAASgU,EAAQjV,GACpB,OAAO,EAERiV,EAASA,EAAOjM,cAEjB,OAAO,GAjBR,e,mTCAO,SAAuByD,GAC7B,MAA8B,YAAvB,oBAAOwT,YAAP,cAAOA,cACXxT,aAAawT,YACbxT,GACa,WAAb,EAAOA,IACD,OAANA,GACe,IAAfA,EAAEuT,UACoB,iBAAfvT,EAAEyT,W,iICUN,SACNvN,EACA3S,GAEA2S,EAAS/J,QAAQuX,EAAmBngB,KArBrC,cACA,SACA,UAEO,SAASsD,EAAYrD,EAAkBD,GAC7C,GAAIC,IAAW,IAAAgB,UAAShB,EAASD,GAAY,CAC5C,IAAMogB,GAAQ,IAAAN,YAAW9f,GACzBC,EAAQgJ,aAAa,SAAS,IAAA0U,UAAS1d,GAAS2V,QAAQwK,EAAO,KAAKxC,SAI/D,SAASuC,EAAmBngB,GAClC,OAAO,SAACC,GACPqD,EAAYrD,EAASD,M,8ECVhB,SACNC,EACAD,EACAqgB,IAEA,IAAAC,aACCrgB,EACAD,OACUiS,IAAVoO,IAAuB,IAAApf,UAAShB,EAASD,GAAaqgB,IAXxD,cACA,W,oFCDO,SAA6BpgB,EAAsBsgB,GACzD,IAAM5S,EAAQ,IAAI6S,YAAYD,GAC9BtgB,EAAQwgB,cAAc9S,K,wFCAhB,SAA+B+S,GACrC,OAAO,SAACzgB,EAAsBsgB,GAAvB,OACN,IAAAI,qBAAoB1gB,EAASsgB,EAAY,IAAMG,KAJjD,e,2FCAwB,CACvBE,KAAM,GACNC,MAAO,GACPC,OAAQ,GACRC,MAAO,GACPC,GAAI,K,6ECLE,SAAsBC,GAC5B,IAAMC,EAAQ,CAAC,KAAM,MAAO,MAE5B,IAAKD,IAASC,EAAM1U,QAAO,SAAC2U,GAAD,OAA4B,IAArBF,EAAKxf,QAAQ0f,MAAWxY,OACzD,OAAO,EAGR,IAAIyY,EAASH,EAAKrL,QAAQ,IAAK,KAG/B,OAFAsL,EAAMtY,SAAQ,SAACuY,GAAD,OAAQC,EAASA,EAAOxL,QAAQuL,EAAG,OAE1CE,OAAOD,K,gECVf,oLACA,oLACA,oLACA,oLACA,oLACA,oLACA,qL,2QCJaE,E,WAOZ,WAAY7gB,GAAoB,Y,4FAAA,cALxB8gB,iBAA8B,GAKN,KA8DxBC,gBAAkB,SAAC7T,GAC1B,GAAI,EAAK4T,iBAAiB5Y,OAAQ,CAEjC,IAAM8Y,EAAU,EAAKC,wBAAwB/T,GAEzC8T,EAAQE,iBACXF,EAAQE,gBAAgBhU,KAnE1BnN,KAAKC,SAAWA,E,iDAIbmhB,GAEEphB,KAAKqhB,aACTrhB,KAAKC,SAASyC,KAAKvC,iBAClB,UACAH,KAAKghB,iBACL,GAEDhhB,KAAKqhB,YAAa,GAGnBrhB,KAAK+gB,iBAAiB1O,KAAK+O,K,6BAIrBA,GACN,IAAME,EAAQthB,KAAK+gB,iBAAiB9f,QAAQmgB,GAExCE,GAAS,GACZthB,KAAK+gB,iBAAiBQ,OAAOD,EAAO,GAIA,IAAjCthB,KAAK+gB,iBAAiB5Y,QACzBnI,KAAKwhB,Y,8CAKyBrU,GAU/B,OARwBnN,KAAK+gB,iBAAiBU,MAAK,SAACR,GACnD,OACCA,EAAQS,iBAAmBvU,EAAM7L,QACjC2f,EAAQS,eAAenZ,SAAS4E,EAAM7L,YAMpBtB,KAAK+gB,iBAAiB/gB,KAAK+gB,iBAAiB5Y,OAAS,K,gCAMrEnI,KAAKqhB,aACRrhB,KAAKC,SAASyC,KAAK7C,oBAClB,UACAG,KAAKghB,iBACL,GAEDhhB,KAAKqhB,YAAa,Q,4JChDpB,WAAYjY,GAA0B,Y,4FAAA,cAZtC5J,UAAa,YAYyB,KAVtCmiB,kBAAqB,0BAUiB,KATtCC,aAAe,EASuB,KAFtCpO,mBAAsB,IAGjBpK,GACH2O,OAAOC,KAAK5O,GACV4C,QAAO,SAACgL,GAAD,YAAiC,IAAjB5N,EAAQ4N,MAC/B5O,SAAQ,SAAC4O,GAAD,OAAU,EAAKA,GAAO5N,EAAQ4N,Q,0EC+TpC,SACNvX,EACA2J,GAEA,IAAMgY,EAAa,IAAIS,EAAQpiB,EAAS2J,GAIxC,OAFAgY,EAAWjM,SAEJiM,G,iBA7VR,cACA,UACA,SACA,UACA,UACA,UAEA,UACA,U,i2BAGaS,E,WAkBZ,WAAmBC,EAA4B1Y,I,4FAA0B,cAHjE2Y,UAAW,EAGsD,KAFjEC,mBAAqB,IAAIlB,4BAA0B7gB,UAEc,KAAtD6hB,gBAClB9hB,KAAKoJ,QAAU,IAAI6Y,iBAAe7Y,GAElCpJ,KAAKkiB,MAAO,IAAAC,WAER/Y,EAAQgZ,gBACXhZ,EAAQgZ,eAAeC,OAAOriB,M,sDAO/B,IAAMsiB,EAA0BriB,SAASC,uBAAT,UAC5BF,KAAKoJ,QAAQ5J,UADe,gBAE9B,GAEE8iB,EACHtiB,KAAKsiB,wBAA0BA,GAE/BtiB,KAAKsiB,yBAA0B,IAAAC,YAAA,sBACfviB,KAAKoJ,QAAQ5J,UADE,wBAI/BS,SAASyC,KAAK8f,aACbxiB,KAAKsiB,wBACLriB,SAASyC,KAAK+f,mBAIhBziB,KAAK0hB,gBAAiB,IAAAa,YAAA,6BACCviB,KAAKkiB,KADN,oBACsBliB,KAAKoJ,QAAQ5J,UADnC,aAIlBQ,KAAKoJ,QAAQsZ,mBAChB,IAAA3f,UAAS/C,KAAK0hB,eAAgB1hB,KAAKoJ,QAAQsZ,kBAG5C1iB,KAAKsiB,wBAAwBK,YAAY3iB,KAAK0hB,kB,oCAI9C,OAAO1hB,KAAK+hB,W,uCAGI,WACVa,EAAmB5iB,KAAK0M,gBAE1BkW,KAeH,IAAA9f,aAAY8f,EAAkB,cAE1B5iB,KAAKoJ,QAAQuY,oBAChB,IAAA7e,aAAY8f,EAAkB5iB,KAAKoJ,QAAQuY,oBAG5C,IAAA/U,0BAAyBgW,GApBJ,WAEhBA,GAAoBA,EAAiBvD,YACxCuD,EAAiBvD,WAAWwD,YAAYD,GAMrC,EAAKlW,kBAAoBkW,IAC5B,EAAKlW,gBAAkB,QAUgC,KAIzDkW,EAAiB5a,MAAM8a,cAAgB,U,uCAMpC9iB,KAAKoJ,QAAQ2Z,kBAChB/iB,KAAKoJ,QAAQ2Z,iBAAiBrN,U,mCAK/B,OAAO1V,KAAKoJ,U,iCAIF4Z,GACVhjB,KAAKoJ,QAAL,OAAoBpJ,KAAKoJ,SAAY4Z,GACrChjB,KAAKijB,uB,6BAGC,WACNjjB,KAAKkjB,UAKLljB,KAAKmjB,kBAGL,IAAApgB,UAAS/C,KAAK8hB,cAAe,cAEzB9hB,KAAKojB,YACRpjB,KAAKojB,cAIN,IAAAxW,0BACC5M,KAAK8hB,eACL,YACC,IAAAhf,aAAY,EAAKgf,cAAe,eAChC,IAAA/e,UAAS,EAAK+e,cAAe,cAEzB,EAAKuB,aACR,EAAKA,gBAGPrjB,KAAKoJ,QAAQoK,sB,8BAIP,WACPxT,KAAKwhB,WAGL,IAAAze,UAAS/C,KAAK8hB,cAAe,eAEzB9hB,KAAKsjB,aACRtjB,KAAKsjB,eAGN,IAAA1W,0BACC5M,KAAK8hB,eACL,YACC,IAAAhf,aAAY,EAAKgf,cAAe,gBAEhC,IAAAhf,aAAY,EAAKgf,cAAe,eAChC,IAAAhf,aAAY,EAAKgf,cAAe,cAK5B,EAAKyB,aACR,EAAKA,gBAGPvjB,KAAKoJ,QAAQoK,sB,gCAMVxT,KAAK8hB,eAAiB9hB,KAAK8hB,cAActZ,eAC5CxI,KAAK8hB,cAActZ,cAAeqa,YAAY7iB,KAAK8hB,eAInD9hB,KAAKoJ,QAAQ2Z,kBACb/iB,KAAKoJ,QAAQ2Z,iBAAiBS,SAE9BxjB,KAAKoJ,QAAQ2Z,iBAAiBS,UAG3BxjB,KAAKoJ,QAAQgZ,gBAChBpiB,KAAKoJ,QAAQgZ,eAAeqB,UAG7BzjB,KAAK0jB,iBAGL1jB,KAAKgiB,mBAAmB2B,OAAO3jB,Q,gCAU3BA,KAAKoJ,QAAQ2Z,kBAChB/iB,KAAKoJ,QAAQ2Z,iBAAiBV,OAAOriB,MAGlCA,KAAKoJ,QAAQgZ,gBAChBpiB,KAAKoJ,QAAQgZ,eAAewB,SAG7B5jB,KAAK0hB,eAAeiB,YAAY3iB,KAAK8hB,eAErC9hB,KAAKijB,qBAELjjB,KAAK0hB,eAAe1Z,MAAM8a,cAAgB,OAEtC9iB,KAAKoJ,QAAQwY,aAChB5hB,KAAK6jB,kBAGN7jB,KAAK+hB,UAAW,EAGhB/hB,KAAKgiB,mBAAmB3E,IAAIrd,MAExBA,KAAK8jB,YACR9jB,KAAK8jB,e,gCAKD9jB,KAAK+jB,gBAIV/jB,KAAK0jB,iBAKL1jB,KAAK0hB,eAAe1Z,MAAM8a,cAAgB,OAEtC9iB,KAAKoJ,QAAQ2Z,kBAAoB/iB,KAAKoJ,QAAQ2Z,iBAAiBiB,QAClEhkB,KAAKoJ,QAAQ2Z,iBAAiBiB,SAG3BhkB,KAAKoJ,QAAQgZ,gBAChBpiB,KAAKoJ,QAAQgZ,eAAeqB,UAI7BzjB,KAAKgiB,mBAAmB2B,OAAO3jB,MAE3BA,KAAKikB,YACRjkB,KAAKikB,gB,wCAKmB,WACzBjkB,KAAK0M,iBAAkB,IAAA6V,YAAA,sBACPviB,KAAKoJ,QAAQ5J,UADN,uBAInBQ,KAAKoJ,QAAQuY,oBAChB,IAAA5e,UAAS/C,KAAK0M,gBAAiB1M,KAAKoJ,QAAQuY,mBAK7C3hB,KAAK0hB,eAAelZ,cAAega,aAClCxiB,KAAK0M,gBACL1M,KAAK0hB,gBAKN1hB,KAAK0M,gBAAgBvM,iBAAiB,SAAS,SAACgN,GAAD,OAC9C,EAAKI,qBAAqBJ,MAI3ByE,uBAAsB,WACjB,EAAKlF,kBACR,IAAA3J,UAAS,EAAK2J,gBAAiB,mB,4CAO7B1M,KAAKoJ,QAAQrF,OAAgC,IAAvB/D,KAAKoJ,QAAQrF,SACtC/D,KAAK0hB,eAAe1Z,MAAMjE,MAAQmgB,EAAclkB,KAAKoJ,QAAQrF,SAG1D/D,KAAKoJ,QAAQpF,QAAkC,IAAxBhE,KAAKoJ,QAAQpF,UACvChE,KAAK0hB,eAAe1Z,MAAMhE,OAASkgB,EAAclkB,KAAKoJ,QAAQpF,UAG3DhE,KAAKoJ,QAAQ+a,UAAsC,IAA1BnkB,KAAKoJ,QAAQ+a,YACzCnkB,KAAK0hB,eAAe1Z,MAAMmc,SAAWD,EAAclkB,KAAKoJ,QAAQ+a,YAG7DnkB,KAAKoJ,QAAQgb,WAAwC,IAA3BpkB,KAAKoJ,QAAQgb,aAC1CpkB,KAAK0hB,eAAe1Z,MAAMoc,UAAYF,EACrClkB,KAAKoJ,QAAQgb,aAIXpkB,KAAKoJ,QAAQib,UAAsC,IAA1BrkB,KAAKoJ,QAAQib,YACzCrkB,KAAK0hB,eAAe1Z,MAAMqc,SAAWH,EAAclkB,KAAKoJ,QAAQib,YAG7DrkB,KAAKoJ,QAAQgD,WAAwC,IAA3BpM,KAAKoJ,QAAQgD,aAC1CpM,KAAK0hB,eAAe1Z,MAAMoE,UAAY8X,EACrClkB,KAAKoJ,QAAQgD,c,2CAKae,IAE1B,IAAA6B,mBAAkB7B,EAAM7L,OAAmBtB,KAAKoJ,QAAQ5J,WAAW,IAEhEQ,KAAKskB,eACRtkB,KAAKskB,cAAcnX,Q,sBAiBvB,SAAS+W,EAAcnN,GAEtB,MAAwB,iBAAVA,EAAsBA,EAA7B,UAAmDA,EAAnD,M,gHClWR,cACA,UAIA,U,oRAYawN,E,WAgCZ,WACCC,EACAC,EACQC,EACAzkB,I,4FACP,cAjCM0kB,QAAU,EAiChB,KA9BMC,QAAU,EA8BhB,KA3BMC,YAA6B,GA2BnC,KAxBMC,mBAA+C,GAwBrD,KAZMC,SAAU,EAYhB,KATMC,gBAAiB,EASvB,KAPMC,kBAAoBjlB,KAAKklB,oBAAoBC,KAAKnlB,MAOxD,KAFO0kB,cAEP,KADOzkB,WAERD,KAAKolB,OAASplB,KAAK0kB,YACnB1kB,KAAKqlB,qBAAqBb,EAAWC,G,oDAS/BrD,GACNphB,KAAKslB,KAAOlE,EAAWM,eAEvBrhB,OAAOF,iBAAiB,SAAUH,KAAKilB,qB,+BAKvCjlB,KAAK+kB,SAAU,EACf1kB,OAAOR,oBAAoB,SAAUG,KAAKilB,qB,gCAK1CjlB,KAAKgkB,W,8BAYL,GAAIhkB,KAAK+kB,SAAW/kB,KAAKglB,gBAAkBhlB,KAAKulB,sBAC/CvlB,KAAKwlB,8BADN,CAKAxlB,KAAKylB,qBACLzlB,KAAK+kB,SAAU,EAIf,IAWIW,EACAC,EA1BS,EAcPlmB,EAAUO,KAAKslB,KACfM,EAAa5lB,KAAKolB,OAAO9d,wBACzBue,EAAcpmB,EAAQ6H,wBAGtBwe,EAAe,CACpB/hB,MAAO1D,OAAOmK,WACdxG,OAAQ3D,OAAOoL,aArBH,E,w5BAAA,CA8BKzL,KAAK8kB,oBA9BV,IA8Bb,2BAA2C,KAAhCiB,EAAgC,QAGpCC,EAAchmB,KAAKimB,0BAA0BL,EAAYG,GACzDG,EAAelmB,KAAKmmB,iBACzBH,EACAH,EACAC,EACAC,GAID,GAAIG,EAAaE,eAMhB,OALApmB,KAAKqmB,oBAAoB5mB,EAASomB,EAAaK,EAAcH,QAG7D/lB,KAAKulB,sBAAwBQ,KAI5BL,GACDA,EAAcY,YAAcJ,EAAaI,eAEzCZ,EAAgBQ,EAChBP,EAAmBI,IAtDR,8BA4Db/lB,KAAKqmB,oBACJ5mB,EACAomB,EACAH,EACAC,M,gDAWD,GAAK3lB,KAAKulB,sBAAV,CAIAvlB,KAAKylB,qBAEL,IAAMG,EAAa5lB,KAAKolB,OAAO9d,wBACzBue,EAAc7lB,KAAKslB,KAAKhe,wBACxBwe,EAAe,CACpB/hB,MAAO1D,OAAOmK,WACdxG,OAAQ3D,OAAOoL,aAEV8a,EACLvmB,KAAKulB,uBAAyBvlB,KAAK8kB,mBAAmB,GAEjDkB,EAAchmB,KAAKimB,0BACxBL,EACAW,GAEKL,EAAelmB,KAAKmmB,iBACzBH,EACAH,EACAC,EACAS,GAEDvmB,KAAKqmB,oBACJrmB,KAAKslB,KACLO,EACAK,EACAK,M,+CASuB1B,GAExB,OADA7kB,KAAK6kB,YAAcA,EACZ7kB,O,2CASPwkB,EACAC,EACAE,EACAC,GAEA,IAAM7S,EAAW,IAAIyU,yBACpBhC,EACAC,EACAE,EACAC,GAGD,OADA5kB,KAAK8kB,mBAAmBzS,KAAKN,GACtB/R,O,kCAOI4B,GAEX,OADA5B,KAAK2kB,QAAU/iB,EACR5B,O,kCAOI4B,GAEX,OADA5B,KAAK4kB,QAAUhjB,EACR5B,O,yCASWymB,GAElB,OADAzmB,KAAKglB,eAAiByB,EACfzmB,O,oCAOM0mB,GAEb,OADA1mB,KAAK8kB,mBAAqB4B,EAAUC,QAC7B3mB,O,gCAOEolB,GAET,OADAplB,KAAKolB,OAASA,EACPplB,O,iCAOWqH,GAClB,OAAOA,EAAKvD,O,+BAOIuD,GAChB,OAAOA,EAAK+G,Q,gDASZwX,EACAG,GAEA,IAAMa,EAAe5mB,KAAK6mB,WAAWjB,GAC/BkB,EAAa9mB,KAAK+mB,SAASnB,GAgBjC,MAAO,CAAEhiB,EAbW,WAAhBmiB,EAAIiB,QACHJ,EAAehB,EAAW7hB,MAAQ,EAElB,UAAhBgiB,EAAIiB,QAAsBJ,EAAeE,EAUlCjjB,EANQ,WAAhBkiB,EAAIkB,QACHrB,EAAW9jB,IAAM8jB,EAAW5hB,OAAS,EAErB,QAAhB+hB,EAAIkB,QAAoBrB,EAAW9jB,IAAM8jB,EAAWsB,U,uCAYzDlB,EACAH,EACAC,EACAC,GAIA,IAAIoB,EASAC,EAPHD,EADoB,WAAjBpB,EAAIsB,UACUxB,EAAY9hB,MAAQ,EACV,UAAjBgiB,EAAIsB,SACE,GAECxB,EAAY9hB,MAK7BqjB,EADoB,WAAjBrB,EAAIuB,UACUzB,EAAY7hB,OAAS,EAEL,QAAjB+hB,EAAIuB,SAAqB,GAAKzB,EAAY7hB,OAI3D,IAAM2gB,OACkB,IAAhBoB,EAAIpB,QAA0B3kB,KAAK2kB,QAAUoB,EAAIpB,QACnDC,OACkB,IAAhBmB,EAAInB,QAA0B5kB,KAAK4kB,QAAUmB,EAAInB,QAGnDhhB,EAAIoiB,EAAYpiB,EAAIujB,EAAgBxC,EACpC9gB,EAAImiB,EAAYniB,EAAIujB,EAAgBxC,EAGpC2C,EAAe,EAAI3jB,EACnB4jB,EAAgB5jB,EAAIiiB,EAAY9hB,MAAQ+hB,EAAa/hB,MACrD0jB,EAAc,EAAI5jB,EAClB6jB,EAAiB7jB,EAAIgiB,EAAY7hB,OAAS8hB,EAAa9hB,OAevDsiB,EAZetmB,KAAK2nB,mBACzB9B,EAAY9hB,MACZwjB,EACAC,GAEqBxnB,KAAK2nB,mBAC1B9B,EAAY7hB,OACZyjB,EACAC,GAQD,MAAO,CAAE9jB,IAAGC,IAAGuiB,eAFdP,EAAY9hB,MAAQ8hB,EAAY7hB,SAAWsiB,EAEbA,iB,2CAOHrF,GAC5B,IAAM2G,EAAe5nB,KAAKolB,OAAO9d,wBAC3BugB,EAAgB5G,EAAQ3Z,wBACxBwgB,EAAwB9nB,KAAK6kB,YAAYnW,KAAI,SAACqZ,GAAD,OAClDA,EAAEzgB,2BAGH,MAAO,CACN0gB,iBAAiB,IAAAC,6BAChBL,EACAE,GAEDI,qBAAqB,IAAAC,8BACpBP,EACAE,GAEDM,kBAAkB,IAAAH,6BACjBJ,EACAC,GAEDO,sBAAsB,IAAAF,8BACrBN,EACAC,M,0CAOFroB,EACAomB,EACAK,EACAH,GAIA,IAAMuC,EAAyC,WAAjBvC,EAAIuB,SAAwB,SAAW,MAI/DzjB,EACqB,QAA1BykB,EACGpC,EAAariB,EACb7D,KAAKC,SAASyL,gBAAgBC,cAC7Bua,EAAariB,EAAIgiB,EAAY7hB,QAE5BukB,EAA2C,QAAjBxC,EAAIsB,SAAqB,QAAU,OAI7DzjB,EACuB,SAA5B2kB,EACGrC,EAAatiB,EACb5D,KAAKC,SAASyL,gBAAgBrG,aAC7B6gB,EAAatiB,EAAIiiB,EAAY9hB,OAIlC,CAAC,MAAO,SAAU,OAAQ,SAASqE,SAClC,SAACogB,GAAD,OAAQ/oB,EAAQuI,MAAMwgB,GAAK,QAG5B/oB,EAAQuI,MAAMsgB,GAAd,UAA0CzkB,EAA1C,MACApE,EAAQuI,MAAMugB,GAAd,UAA4C3kB,EAA5C,MAGA,IAAM6kB,EAA2BzoB,KAAK0oB,qBAAqBjpB,GACrDkpB,EAAiB,IAAIC,iCAC1B7C,EACA0C,GAGGzoB,KAAK6oB,kBACR7oB,KAAK6oB,iBAAiBF,K,yCAKGxgB,GAAgD,2BAA7B2gB,EAA6B,iCAA7BA,EAA6B,kBAC1E,OAAOA,EAAUxW,QAAO,SAACyW,EAAsBC,GAC9C,OAAOD,EAAe5mB,KAAKsK,IAAIuc,EAAiB,KAC9C7gB,K,2CAKH,IAAKnI,KAAK8kB,mBAAmB3c,OAC5B,MAAMgO,MACL,iEAMFnW,KAAK8kB,mBAAmB1c,SAAQ,SAAC6gB,IAChC,IAAAC,4BAA2B,UAAWD,EAAKjC,UAC3C,IAAAmC,0BAAyB,UAAWF,EAAKhC,UACzC,IAAAiC,4BAA2B,WAAYD,EAAK5B,WAC5C,IAAA8B,0BAAyB,WAAYF,EAAK3B,e,4CAK3CtnB,KAAK0V,U,gCA7aL,OAAO1V,KAAK8kB,wB,4OC8BP,SACNsE,EACArS,GAEA,GAAc,QAAVA,GAA6B,WAAVA,GAAgC,WAAVA,EAC5C,MAAMZ,MACL,qCAA8BiT,EAA9B,aAA2CrS,EAA3C,OACC,0C,6BAWG,SACNqS,EACArS,GAEA,GAAc,UAAVA,GAA+B,QAAVA,GAA6B,WAAVA,EAC3C,MAAMZ,MACL,qCAA8BiT,EAA9B,aAA2CrS,EAA3C,OACC,yC,gHArFH,WACCqO,EACAnE,EACO0D,EACAC,GACN,eAFMD,UAEN,KADMC,UAEP5kB,KAAKgnB,QAAU5B,EAAO4B,QACtBhnB,KAAKinB,QAAU7B,EAAO6B,QACtBjnB,KAAKqnB,SAAWpG,EAAQoG,SACxBrnB,KAAKsnB,SAAWrG,EAAQqG,U,+EAsCzB,WAEQ+B,EACAZ,GACN,eAFMY,iBAEN,KADMZ,6B,gGCjFT,c,0KAUaa,E,WAiBZ,WAAoBrpB,I,4FAAoB,cAbhCspB,YAAc,SAakB,KAZhCC,UAAY,GAYoB,KAXhCC,aAAe,GAWiB,KAVhCC,WAAa,GAUmB,KAThCC,YAAc,GASkB,KARhCC,WAAa,GAQmB,KAPhCC,eAAiB,GAOe,KANhC9lB,MAAQ,GAMwB,KALhCC,OAAS,GAKuB,KAFhC8lB,QAA8B,KAEE,KAApB7pB,W,oDAEbmhB,GACN,IAAMhY,EAAUgY,EAAW2I,aAE3B/pB,KAAKohB,WAAaA,EAEdphB,KAAK+D,QAAUqF,EAAQrF,OAC1Bqd,EAAW4I,WAAW,CAAEjmB,MAAO/D,KAAK+D,QAGjC/D,KAAKgE,SAAWoF,EAAQpF,QAC3Bod,EAAW4I,WAAW,CAAEhmB,OAAQhE,KAAKgE,W,4BAQjB,IAAlB+S,EAAkB,uDAAV,GAIX,OAHA/W,KAAKypB,aAAe,GACpBzpB,KAAKwpB,UAAYzS,EACjB/W,KAAK4pB,WAAa,aACX5pB,O,6BAOe,IAAlB+W,EAAkB,uDAAV,GAIZ,OAHA/W,KAAK2pB,YAAc,GACnB3pB,KAAK0pB,WAAa3S,EAClB/W,KAAK6pB,eAAiB,aACf7pB,O,+BAOiB,IAAlB+W,EAAkB,uDAAV,GAId,OAHA/W,KAAKwpB,UAAY,GACjBxpB,KAAKypB,aAAe1S,EACpB/W,KAAK4pB,WAAa,WACX5pB,O,8BAOgB,IAAlB+W,EAAkB,uDAAV,GAIb,OAHA/W,KAAK0pB,WAAa,GAClB1pB,KAAK2pB,YAAc5S,EACnB/W,KAAK6pB,eAAiB,WACf7pB,O,2CAS8B,IAAnB4B,EAAmB,uDAAV,GAG3B,OAFA5B,KAAK8D,KAAKlC,GACV5B,KAAK6pB,eAAiB,SACf7pB,O,yCAS4B,IAAnB4B,EAAmB,uDAAV,GAGzB,OAFA5B,KAAK8B,IAAIF,GACT5B,KAAK4pB,WAAa,SACX5pB,O,8BAaP,GAAKA,KAAKohB,WAAW2C,cAArB,CAIA,IAAMtkB,EAAUO,KAAKohB,WAAWM,gBAE3B1hB,KAAK8pB,SAAWrqB,EAAQ4f,aAC5Brf,KAAK8pB,QAAU9pB,KAAKC,SAASwd,cAAc,QAC3C,IAAA1a,UAAS/C,KAAK8pB,QAAS,qBACvBrqB,EAAQ4f,WAAWmD,aAAaxiB,KAAK8pB,QAAUrqB,GAC/CO,KAAK8pB,QAASnH,YAAYljB,IAG3B,IAAMwqB,EAAgBxqB,EAAQ4f,WAA2BrX,MACnDoB,EAAUpJ,KAAKohB,WAAW2I,aAEhCtqB,EAAQuI,MAAM+J,SAAW/R,KAAKupB,YAC9B9pB,EAAQuI,MAAMkG,WAA+B,SAAlB9E,EAAQrF,MAAmB,IAAM/D,KAAK0pB,WACjEjqB,EAAQuI,MAAMsC,UAA+B,SAAnBlB,EAAQpF,OAAoB,IAAMhE,KAAKwpB,UACjE/pB,EAAQuI,MAAMkiB,aAAelqB,KAAKypB,aAClChqB,EAAQuI,MAAMmiB,YAAcnqB,KAAK2pB,YAEjCM,EAAaJ,eACM,SAAlBzgB,EAAQrF,MAAmB,aAAe/D,KAAK6pB,eAChDI,EAAaL,WACO,SAAnBxgB,EAAQpF,OAAoB,aAAehE,KAAK4pB,c,gCAK7C5pB,KAAK8pB,SAAW9pB,KAAK8pB,QAAQzK,aAChCrf,KAAK8pB,QAAQzK,WAAWwD,YAAY7iB,KAAK8pB,SACzC9pB,KAAK8pB,QAAU,W,kJCrJlB,cACA,U,0KAEaM,E,oLAKX,OAAO,IAAId,yBAAuBrpB,Y,kCAUlCoqB,EACA7F,EACAC,GAEA,OAAO,IAAIF,4BACVC,EACAC,EACA4F,EACApqB,e,gKC9BH,c,0KAoBaqqB,E,WAIZ,WAAoBC,GAAyC,Y,4FAAA,cAFrDxF,SAAU,EAE2C,KAuBrDxhB,aAAe,WACtB,IAAMinB,EAAW,EAAKD,OAAS,EAAKA,OAAOE,eAAiB,EACtDC,GAAY,EAAKH,QAAS,EAAKA,OAAOG,UAEtCC,EAAS,WAGd,GAFA,EAAKvJ,WAAW+B,iBAEZuH,EAAW,CACd,IAAM7E,EAAc,EAAKzE,WAAWM,eAAepa,wBADrC,EAEY,CACzBvD,MAAO1D,OAAOmK,WACdxG,OAAQ3D,OAAOoL,aAFR1H,EAFM,EAENA,MAAOC,EAFD,EAECA,OAOT4mB,EAAc,CACnB,CACC7mB,QACAC,SACAkjB,OAAQljB,EACRoK,MAAOrK,EACPjC,IAAK,EACLgC,KAAM,KAIJ,IAAAqkB,8BAA6BtC,EAAa+E,KAC7C,EAAKnH,UACL,EAAKrC,WAAW9R,WAKfkb,EAAW,EACd1pB,YAAW,kBAAM6pB,MAAUH,GAE3BG,KA5D2D,KAAzCJ,S,oDAGbnJ,GACNphB,KAAKohB,WAAaA,I,+BAKbphB,KAAK+kB,UACT1kB,OAAOF,iBAAiB,SAAUH,KAAKuD,cACvCvD,KAAK+kB,SAAU,K,gCAMZ/kB,KAAK+kB,UACR1kB,OAAOR,oBAAoB,SAAUG,KAAKuD,cAC1CvD,KAAK+kB,SAAU,Q,iICnCX,SAAsB8F,GAA6C,IAAhCC,EAAgC,uDAAV,aACzDC,EAAgB9qB,SAASwd,cAAc,UAY7C,OAXAsN,EAAcF,IAAMA,EACpBE,EAAcC,OAAQ,EACtBD,EAAcE,OAAS,SAAChlB,GACvBilB,EAAoBL,IAErBE,EAAcD,QAAU,SAAC7kB,GACxB4G,QAAQiG,MAAM7M,GACdilB,EAAoBL,GACpBC,KAEDK,EAAoBC,eAAe/Y,KAAKwY,GACjCE,GAjBR,IAAMI,EAAuB9qB,OAoB7B,SAAS6qB,EAAoBL,GAC5B,IAAMvJ,EAAQ6J,EAAoBC,eAAenqB,QAAQ4pB,GACrDvJ,GAAS,IACZ6J,EAAoBC,eAAiBD,EAAoBC,eAAe7J,OACvED,EACA,IAvBH6J,EAAoBC,eAAiBD,EAAoBC,gBAAkB,I,iFCJpE,SAAwBP,GAI9B,IADA,IAAMQ,EAAUprB,SAASsR,qBAAqB,UACrC5L,EAAI,EAAGA,EAAI0lB,EAAQljB,OAAQxC,IAAK,CACxC,IAAM2lB,EAAuBD,EAAQE,KAAK5lB,GAE1C,IADmB,IAAA6lB,cAAaF,EAAqBT,OAClCA,EAClB,OAAOS,EAGT,OAAO,MAbR,c,6ECOO,SAAoBT,GAC1B,OAAO,IAAIY,SACV,SAACvV,EAA+BwV,GAC/B,IAAMC,GAAS,IAAAC,gBAAef,GAE9B,GAAIc,GAGD,IADAtrB,OAAe+qB,eAAenqB,SAAQ,IAAAuqB,cAAaG,EAAOd,OAG3Dc,EAAOb,SAAU,IAAAe,cAAaF,EAAOb,QAASY,GAC9CC,EAAOV,QAAS,IAAAY,cAAaF,EAAOV,OAAQ/U,IAE5CA,QAEK,CACN,IAAM4V,GAAY,IAAAC,cAAalB,GAC/BiB,EAAUhB,QAAUY,EACpBI,EAAUb,QAAS,IAAAY,cAAaC,EAAUb,OAAQ/U,GAClDjW,SAAS+rB,KAAKrJ,YAAYmJ,QA1B9B,aACA,UACA,UACA,UAECzrB,OAAe+qB,eAAkB/qB,OAAe+qB,gBAAkB,I,kFCD5D,SACN9pB,GAKC,IAJD2qB,EAIC,uDAJ8BC,cAC/BvhB,EAGC,uDAHU,IACX/I,EAEC,uDAFQ,EACTkoB,EACC,uDAD+BzpB,OAE1ByB,EACLgoB,IAAYzpB,OACRiB,EAAuB6qB,UAAarC,EAAwB7L,UAC7D3c,EAAOgG,wBAAwBxF,IAEnC,OAAO,IAAAsqB,gBAAetqB,EAAKmqB,EAAWthB,EAAU/I,EAAQkoB,IAfzD,cACA,W,iFCEO,SACNnX,GAKC,IAJD0Z,EAIC,uDAJsCH,cACvCvhB,EAGC,uDAHU,IACX/I,EAEC,uDAFQ,EACTkoB,EACC,uDAD+BzpB,QAEhC,IAAAgC,UAASsQ,EAAW/Q,EAAQyqB,EAAmB1hB,EAAUmf,IAV1D,cACA,W,2ECCO,SACNnX,GAMC,IAEG2Z,EACA7Z,EARJ4Z,EAKC,uDALsC,SAACE,EAAGC,EAAGnX,EAAGoX,GAChD,OAAQpX,EAAIkX,EAAKE,EAAID,GAEtB7hB,EAEC,uDAFU,IACXmf,EACC,uDAD+BzpB,OAE5BqS,GAAQ,IAAA9J,sBAaZ,SAAS8jB,EAAKC,GACbla,EAAcka,EAAOL,EAEjBxC,aAAmB8C,QACtB9C,EAAQznB,SACP,EACAgqB,EAAkB5Z,EAAaC,EAAOC,EAAUhI,IAG7C8H,EAAc9H,EACjBiH,sBAAsBsK,KAAK7b,OAAQqsB,GAEnC5C,EAAQznB,SAAS,EAAGqQ,EAAQC,KAG7BmX,EAAQ7L,UAAYoO,EACnB5Z,EACAC,EACAC,EACAhI,GAGG8H,EAAc9H,EACjBiH,sBAAsBsK,KAAK7b,OAAQqsB,GAEnC5C,EAAQ7L,UAAYvL,EAAQC,GAlC3BmX,aAAmBrK,cACtB/M,EAAQoX,EAAQ7L,WAGjBrM,sBAAsBsK,KAAK7b,QAAQ,SAACssB,GACnCL,EAAYK,EACZD,EAAKC,OApBP,c,yEC6xBO,SAAgBltB,GACtB,OAAO,IAAIotB,EAAOptB,I,yCA/xBnB,cACA,UACA,UACA,SACA,UACA,UASA,UACA,UACA,U,giCAkBaqtB,E,WACZ,WAAoBrtB,GAA4B,eAA5BA,UAEnBO,KAAK+sB,MAAQ/sB,KAAKP,QAAQutB,aAAe,IAAI5P,OAC7Cpd,KAAKitB,SAAWjtB,KAAKP,QAAQwtB,S,2CAI7B,OAAOjtB,KAAKktB,W,aAEAnW,GACZ/W,KAAKktB,UAAYnW,I,2BAKjB,OAAO/W,KAAKmtB,O,aAEJpW,GACR/W,KAAKmtB,MAAQpW,I,4BAMb,OAAQ/W,KAAKP,QAAQsX,OAAS,IAAIqG,W,oBAIvByP,E,WAmEZ,WACSO,EACRhkB,GACC,eAhDMmhB,OAAwB,CAC/B8C,QAAS,CACRrX,UAAW,WACXpB,OAAQ,YACR0Y,YAAa,iBACbL,SAAU,gBA2CV,KAtCMhP,UAAY,EAsClB,KA/BM2G,QAAU,EA+BhB,KAvBM8B,UAAY,CACnB,CACCM,QAAS,QACTC,QAAS,MACTI,SAAU,QACVC,SAAU,OAEX,CACCN,QAAS,QACTC,QAAS,SACTI,SAAU,QACVC,SAAU,WAYV,KAPMiG,WAAY,EAOlB,KAFOH,gBAGRptB,KAAKoW,KAAOpW,KAAKotB,cAAchX,KAC/BpW,KAAKwtB,kBAAoBxtB,KAAKotB,cAE9BptB,KAAKuqB,OAAL,OAAmBvqB,KAAKuqB,QAAWnhB,GAEnCpJ,KAAKkJ,cAAgBlJ,KAAKytB,oBAE1BztB,KAAK0tB,YAAe1tB,KAAKkJ,cAAoBlJ,KAAKkJ,cAAT,EAEzClJ,KAAKkiB,MAAO,IAAAC,WAEZniB,KAAK2tB,Q,wCA/DL,OAAQ3tB,KAAKwtB,kBAAkBzW,OAAS,IAAIqG,W,kCAqErBpd,KAAKoJ,SAC1BpJ,KAAKoJ,QAAQjB,SACdnI,KAAKutB,YAKNvtB,KAAK4tB,YAAc5tB,KAAK2J,eAAerC,wBAEvCtH,KAAKutB,WAAY,EACjBvtB,KAAK6tB,iBAAiBhd,OAEtB7Q,KAAK8tB,4BACL9tB,KAAK+tB,0BACL/tB,KAAKguB,iC,8BAIDhuB,KAAKutB,YACRvtB,KAAKohB,WAAW9R,QAIhBtP,KAAKiuB,eAAe,W,+BAKrBjuB,KAAKutB,UAAYvtB,KAAKsP,QAAUtP,KAAK6Q,S,8BAGtB,WAEf7Q,KAAKoJ,QAAUzI,MAAMC,KAAKZ,KAAKotB,cAAcjd,UAAUzB,KACtD,SAACwf,GAAD,OAA+B,IAAIpB,EAAOoB,MAG3CluB,KAAKotB,cAAce,UAAY,EAC/BnuB,KAAKotB,cAAc3kB,aAAa,cAAe,QAC/CzI,KAAKotB,cAAc3kB,aAAa,cAAezI,KAAKkiB,MACpDliB,KAAKotB,cAAcgB,mBAAmB,WAAYpuB,KAAKquB,WACvDruB,KAAKotB,cAAcjtB,iBAAiB,SAAS,WAC5C,EAAK6I,OAAOwI,QACZ,EAAKX,UAGN7Q,KAAKgJ,OAAS/I,SAASO,eAAeR,KAAKkiB,MAC3CliB,KAAKgJ,OAAOmlB,SAAW,EACvBnuB,KAAKgJ,OAAOxJ,WAAa,IAAMQ,KAAKotB,cAAc5tB,UAElDQ,KAAK2J,eAAiB3J,KAAKgJ,OAAO9I,uBAAZ,UAClBF,KAAKuqB,OAAO8C,QAAQrX,UADF,cAEpB,GAEFhW,KAAK2J,eAAexJ,iBAAiB,SAAS,SAACgN,GAC9CA,EAAME,iBACNF,EAAMmhB,kBACN,EAAKhhB,YAGNtN,KAAKgJ,OAAO7I,iBAAiB,WAAW,SAACgN,GAAD,OACvC,EAAKohB,eAAephB,MAGrBnN,KAAKotB,cAAcjtB,iBAAiB,UAAU,kBAC7C,EAAKquB,MAAM,EAAKplB,QAAQ,EAAKgkB,cAAclkB,gBAAgB,Q,yCAIlCiE,GAC1B,IAAMshB,EAAQthB,EAAMuhB,UAAYC,WAASnO,IAAM,EAAI,EAEnD,KAAIxgB,KAAK0tB,YAAce,GAAS,GAI5BzuB,KAAK0tB,YAAce,GAASzuB,KAAKoJ,QAAQjB,QAK7C,IAAK,IAAIxC,EAAI,EAAGA,GAAK3F,KAAKoJ,QAAQjB,OAAQxC,IAAK,CAC9C,IAAM2b,GACJthB,KAAK0tB,YAAce,EAAQ9oB,EAAI3F,KAAKoJ,QAAQjB,QAC7CnI,KAAKoJ,QAAQjB,OAGd,IAFanI,KAAKoJ,QAAQkY,GAEhB2L,SAET,YADAjtB,KAAK4uB,kBAAkBtN,M,wCAMAA,GACzBthB,KAAK0tB,YAAcpM,I,qCAGGnU,GACtB,OAAQA,EAAMuhB,SACb,KAAKC,WAASpO,MACbvgB,KAAKsN,SACL,MACD,KAAKqhB,WAASvO,KACd,KAAKuO,WAASnO,GACbxgB,KAAK6uB,mBAAmB1hB,GAIpBnN,KAAKutB,WACRvtB,KAAK+tB,0BACL/tB,KAAKguB,+BAELhuB,KAAKwuB,MAAMxuB,KAAKoJ,QAAQpJ,KAAK0tB,cAE9B,MACD,KAAKiB,WAASrO,OACTtgB,KAAKutB,WACRvtB,KAAKsP,QAEN,MACD,KAAKqf,WAAStO,MACRrgB,KAAKutB,WAGTvtB,KAAKwuB,MAAMxuB,KAAKoJ,QAAQpJ,KAAK0tB,cAI7B1tB,KAAK+tB,0BACL/tB,KAAKsP,SAPLtP,KAAKsN,SAcRH,EAAME,iBACNF,EAAMmhB,oB,uCAO2B,WA8CjC,OA7CKtuB,KAAKohB,aACTphB,KAAKohB,YAAa,IAAAH,UACjB,IAAAsB,YAAWviB,KAAK8uB,WAChB9uB,KAAK+uB,sBAGN/uB,KAAKohB,WAAWkD,cAAgB,kBAAM,EAAKhV,SAE3CtP,KAAKohB,WAAWiC,YAAc,kBAAM,EAAK2L,gBAEzChvB,KAAKohB,WAAWmC,YAAc,kBAAM,EAAKnC,WAAWoC,WAEpDxjB,KAAKohB,WAAW0C,WAAa,WAC5B,EAAK1C,WAAWU,cAAc9Z,MAAMinB,gBAAkB,MACtD,EAAKC,2BACL,EAAK9N,WAAWU,cAAc7D,UAAY,EAAKA,WAIhDje,KAAKohB,WAAW6C,WAAa,kBAAO,EAAKsJ,WAAY,GAErDvtB,KAAKmvB,eAAiBxuB,MAAMC,KAC3BZ,KAAKohB,WAAWU,cAAc5hB,uBAA9B,UACIF,KAAKuqB,OAAO8C,QAAQrX,UADxB,qBAKDhW,KAAKmvB,eAAe/mB,SAAQ,SAAC8lB,EAAQ5M,GACpC4M,EAAO/tB,iBAAiB,SAAS,WAChC,IAAM+tB,EAAS,EAAK9kB,QAAQkY,GAExB4M,EAAOjB,WAIX,EAAKuB,MAAMN,GAIX,EAAKH,0BACL,EAAKze,gBAKDtP,KAAKohB,a,2CAIZ,OAAO,IAAIa,iBAAe,CACzBG,eAAgB,IAAIkI,2BACpBvH,iBAAkB/iB,KAAK+R,SAAW/R,KAAKovB,0BACvCzN,kBAAmB,iCACnBC,aAAa,M,gDAqBd,IAhBA,IAAMyN,EAAkBrvB,KAAK0mB,UAAU,GACjCV,EAAc,CACnBgB,QAASqI,EAAgBrI,QACzBC,QAASoI,EAAgBpI,SAEpBf,EAAe,CACpBmB,SAAUgI,EAAgBhI,SAC1BC,SAAU+H,EAAgB/H,UAIrBgI,GAAW,IAAIlF,0BACnB1F,YAAY1kB,KAAK2J,eAAgBqc,EAAaE,GAC9CqJ,YAAY,GACZC,YAAYxvB,KAAK4kB,SAEVjf,EAAI,EAAGA,EAAI3F,KAAK0mB,UAAUve,OAAQxC,IAC1C2pB,EAASjK,qBACR,CACC2B,QAAShnB,KAAK0mB,UAAU/gB,GAAGqhB,QAC3BC,QAASjnB,KAAK0mB,UAAU/gB,GAAGshB,SAE5B,CACCI,SAAUrnB,KAAK0mB,UAAU/gB,GAAG0hB,SAC5BC,SAAUtnB,KAAK0mB,UAAU/gB,GAAG2hB,WAK/B,OAAOgI,I,4BAGMpB,GAAoD,IAApCuB,IAAoC,yDAC3DC,EAAWxB,EAAOnX,MAClB4Y,EAAWzB,EAAOnB,KAExB/sB,KAAK2J,eAAezJ,uBAApB,UACIF,KAAKuqB,OAAO8C,QAAQrX,UADxB,0BAEE,GAAGgX,YAAc2C,EACnB3vB,KAAK2J,eAAelB,aAAa,aAAcinB,GAE/C1vB,KAAKotB,cAAcrW,MAAQ2Y,EAC3B1vB,KAAKkJ,cAAgBlJ,KAAK4vB,gBAAgB1B,GAC1CluB,KAAK0tB,YAAc1tB,KAAKkJ,cACxBlJ,KAAKotB,cAAclkB,cAAgBlJ,KAAKkJ,cAEpCumB,GACHzvB,KAAKiuB,eAAe,Y,gCAII,WACnB7kB,EAAUpJ,KAAKoJ,QAAQkJ,QAAO,SAACyE,EAAOmX,EAAQ5M,GACnD,gBAAUvK,EAAV,uBACC,EAAKwT,OAAO8C,QAAQrX,UADrB,0BAGCkY,EAAOjB,SAAP,WAAsB,EAAK1C,OAAO8C,QAAQJ,UAAa,GAHxD,mCAKmBiB,EAAOnB,KAL1B,8BAOE,IAEG8C,OAC4Bpe,IAAjCzR,KAAKuqB,OAAO8C,QAAQyC,UACa,OAAjC9vB,KAAKuqB,OAAO8C,QAAQyC,UACpB9vB,KAAKuqB,OAAO8C,QAAQyC,SAAS3nB,OAAS,EACnCnI,KAAKuqB,OAAO8C,QAAQyC,SAHvB,uBAImB9vB,KAAKuqB,OAAO8C,QAAQrX,UAJvC,6BAMK5B,EAAUpU,KAAKoJ,QACnB4C,QAAO,SAACkiB,EAAQ5M,GAChB,OAAOA,IAAU,EAAKpY,iBAEtBoJ,QAAO,SAACyE,EAAOmX,GACf,gBAAUnX,EAAV,uBAA8B,EAAKwT,OAAO8C,QAAQrX,UAAlD,6DACmC,EAAKuU,OAAO8C,QAAQrX,UADvD,wEAEuC,EAAKuU,OAAO8C,QAAQrX,UAF3D,oEAG8BkY,EAAOnB,KAHrC,2GAMsB8C,EANtB,kCAQE,IAIJ,OAFA7vB,KAAK8uB,UAAL,sBAAgC9uB,KAAKuqB,OAAO8C,QAAQrX,UAApD,oBAAyE5M,EAAzE,UAEA,sBAAsBpJ,KAAKuqB,OAAO8C,QAAQrX,UAA1C,iBAA4DhW,KAAKkiB,KAAjE,aAA0E9N,EAA1E,Y,sCAIuB8Z,GACvB,OAAOluB,KAAKoJ,QAAQkJ,QACnB,SAACyd,EAAgBC,EAAiB1O,GACjC,YAAkB7P,IAAXse,EACJ7B,IAAW8B,EACV1O,OACA7P,EACDse,SAEJte,K,oDAMD,IAAMwe,EAAajwB,KAAKkwB,iBAElBC,GADoBnwB,KAAK0tB,aAAe,GACLuC,EACnCG,EAAWpwB,KAAKohB,WAAWU,cAAc7D,UACzC7R,EAAYpM,KAAKqwB,qBAEnBF,EAAeC,EAClBpwB,KAAKohB,WAAWU,cAAc7D,UAAYkS,EAChCA,EAAeF,EAAaG,EAAWhkB,IACjDpM,KAAKohB,WAAWU,cAAc7D,UAAY9b,KAAKsK,IAC9C,EACA0jB,EAAe/jB,EAAY6jB,M,kDAO7B,IAAMA,EAAajwB,KAAKkwB,iBAClBI,EAAQtwB,KAAKoJ,QAAQjB,OACrBooB,EAAcpuB,KAAKquB,IAAIF,EAAQL,EAAYjwB,KAAKqwB,sBAIhDI,EAHwBH,EAAQL,EAGIM,EAGpCG,EAAuB1wB,KAAKkJ,cAI5BynB,EAAeJ,EAAc,EACnCvwB,KAAKie,UAAYje,KAAK4wB,wBACrBF,EACAC,EACAF,GAEDzwB,KAAK4kB,QAAU5kB,KAAK6wB,yBACnBH,EACAC,EACAF,GAGDzwB,KAAK8wB,4BAA4BL,GACjCzwB,KAAK+R,SAASyd,YAAYxvB,KAAK4kB,W,kDASI6L,GACnC,IAAMR,EAAajwB,KAAKkwB,iBAClB9jB,EAAYpM,KAAKqwB,qBACjBvK,GACEzlB,OAAOmK,WACNnK,OAAOoL,aAEVslB,EAAe/wB,KAAKgxB,6BAEpBC,EAAoBjxB,KAAK4tB,YAAY9rB,IAAMivB,EAC3CG,EACLpL,EAAsB9lB,KAAK4tB,YAAY1G,OAAS6J,EAE3CI,EAAiBhvB,KAAKivB,IAAIpxB,KAAK4kB,SAK/ByM,EAJmBlvB,KAAKquB,IAC7BxwB,KAAKoJ,QAAQjB,OAAS8nB,EACtB7jB,GAGmB+kB,EAAiBnxB,KAAK4tB,YAAY5pB,OAElDqtB,EAAoBH,EACvBlxB,KAAKsxB,eAAeD,EAAmBH,GAC7BC,EAAiBF,EAC3BjxB,KAAKuxB,iBAAiBJ,EAAgBF,EAAmBR,GAEzDzwB,KAAKohB,WAAWU,cAAc9Z,MAAMinB,gBAAkBjvB,KAAKwxB,4B,qCAM5DH,EACAH,GAGA,IAAMO,EAAwBtvB,KAAKC,MAClCivB,EAAoBH,GAKrBlxB,KAAKie,WAAawT,EAClBzxB,KAAK4kB,SAAW6M,EAChBzxB,KAAKohB,WAAWU,cAAc9Z,MAAMinB,gBAAkBjvB,KAAKwxB,0BAKvDxxB,KAAK4tB,YAAY9rB,IAAM9B,KAAKie,WAAa,IAC5Cje,KAAKie,UAAY,EACjBje,KAAK4kB,QAAU,EACf5kB,KAAKohB,WAAWU,cAAc9Z,MAAMinB,gBAAkB,oB,uCAMvDkC,EACAF,EACAR,GAGA,IAAMiB,EAAwBvvB,KAAKC,MAClC+uB,EAAiBF,GAYlB,GAPAjxB,KAAKie,WAAayT,EAClB1xB,KAAK4kB,SAAW8M,EAChB1xB,KAAKohB,WAAWU,cAAc9Z,MAAMinB,gBAAkBjvB,KAAKwxB,0BAKvDxxB,KAAK4tB,YAAY9rB,IAAM9B,KAAKie,WAAawS,EAI5C,OAHAzwB,KAAKie,UAAYwS,EACjBzwB,KAAK4kB,QAAU,OACf5kB,KAAKohB,WAAWU,cAAc9Z,MAAMinB,gBAAkB,iB,gDAOvD,IAAMgB,EAAajwB,KAAKkwB,iBAClByB,GAA0B1B,EAAajwB,KAAK4tB,YAAY5pB,QAAU,EAClEijB,EACL9kB,KAAKivB,IAAIpxB,KAAK4kB,SAAW+M,EAAyB1B,EAAa,EAChE,oBAAchJ,EAAd,Y,8CAWA/d,EACAynB,EACAF,GAEA,IAAMR,EAAajwB,KAAKkwB,iBAQlB0B,EAP4B3B,EAAa/mB,EAQlBynB,EAPJV,EAAa,EAQtC,OAAO9tB,KAAKquB,IAAIruB,KAAKsK,IAAI,EAAGmlB,GAAwBnB,K,iDAWpD,IAAM5K,EAAc7lB,KAAKohB,WAAWM,eAAepa,wBAC7Cwe,EACEzlB,OAAOmK,WAGTumB,GAFG1wB,OAAOoL,YAEKzL,KAAKgxB,8BACtBrM,EAAU,EAOdA,IAAY,EAGZ,IAAM4C,EAAe,GAAK1B,EAAY/hB,KAAO6gB,GACvC6C,EACL3B,EAAYzX,MACZuW,EACAmB,EAIGyB,EAAe,EAClB5C,GAAW4C,EAAewJ,EAChBvJ,EAAgB,IAC1B7C,GAAW6C,EAAgBuJ,GAI5B/wB,KAAK+R,SAASwd,YAAY5K,GAC1B3kB,KAAKohB,WAAW+B,mB,+CAShBja,EACAynB,EACAF,GAEA,IAAMR,EAAajwB,KAAKkwB,iBAClByB,GAA0B1B,EAAajwB,KAAK4tB,YAAY5pB,QAAU,EAClEoI,EAAYpM,KAAKqwB,qBACjBwB,EAAsB1vB,KAAK2vB,MAAM1lB,EAAY6jB,GAC7CK,EAAQtwB,KAAKoJ,QAAQjB,OA8B3B,OAAmC,GA3BZ,IAAnBnI,KAAKie,UACmB/U,EAAgB+mB,EACjCjwB,KAAKie,YAAcwS,GAEAvnB,GADDonB,EAAQuB,IAaZ5B,GAPvBA,GAAeK,EAAQL,EAAa7jB,GAAa6jB,GAYvBU,EAAeV,EAAa,GAMjB0B,I,gDAGN,WACjC3xB,KAAKmvB,eAAe/mB,SAAQ,SAAC8lB,IAC5B,IAAAprB,aAAYorB,EAAQ,EAAK3D,OAAO8C,QAAQzY,SACxC,IAAA9R,aAAYorB,EAAQ,EAAK3D,OAAO8C,QAAQC,iBAGzC,IAAAvqB,UACC/C,KAAKmvB,eAAenvB,KAAKkJ,eACzBlJ,KAAKuqB,OAAO8C,QAAQzY,QAGjB5U,KAAKkJ,gBAAkBlJ,KAAK0tB,cAC/B,IAAA3qB,UACC/C,KAAKmvB,eAAenvB,KAAK0tB,aACzB1tB,KAAKuqB,OAAO8C,QAAQC,e,mDAMtB,IAAMY,EAASluB,KAAKmvB,eAAe,GAG7B4C,GAAU,IAAAhwB,eAAa,IAAAC,QAAOksB,EAAQ,iBAE5C,OAAO/rB,KAAKC,MAAM2vB,EAAU,K,2CAK5B,OAAO,IAAAhwB,eAAa,IAAAC,QAAOhC,KAAKohB,WAAWU,cAAgB,iB,uCAI3D,OAAO9hB,KAAKmvB,eAAe,GAAI6C,e,qCAQ3BhyB,KAAKutB,UACRvtB,KAAKie,UAAY,EAEjBje,KAAK+R,SAASwd,YAAY,K,qCAOLxP,GACtB,IAAM5S,EAAQlN,SAASgyB,YAAY,cACnC9kB,EAAM+kB,UAAUnS,GAAW,GAAO,GAClC/f,KAAKotB,cAAcnN,cAAc9S,K,0CAIjC,GAAInN,KAAKotB,cAAclkB,eAAiB,EACvC,OAAOlJ,KAAKotB,cAAclkB,cAK3B,IAAMipB,EAAWnyB,KAAKotB,cAAclsB,cACnC,oBAGD,OAAKixB,EAIExxB,MAAMC,KAAKuxB,EAAS3pB,cAAc2H,UAAUlP,QAAQkxB,GAHnD,M,iGC/nBH,SACN1yB,EACA2J,GAEA,OAAO,IAAIgpB,EAAc3yB,EAAS2J,I,uBA5JnC,cACA,UACA,UACA,UACA,S,i2BAaagpB,E,WAcZ,WAAoB3yB,EAAsB2J,GAAgC,Y,4FAAA,cAblEA,QAAgC,CACvC+iB,UAAW,EACXloB,MAAM,EACNouB,aAAa,EACbC,iBAAiB,EACjBC,YAAa,KACbC,YAAa,aAO4D,KAAtD/yB,UACnBO,KAAKoJ,QAAL,OACIpJ,KAAKoJ,SACLA,GAEJpJ,KAAKoJ,QAAQqpB,gBAAkBzyB,KAAKoJ,QAAQqpB,gBACzCzyB,KAAKoJ,QAAQqpB,gBACbzyB,KAAKoJ,QAAQ+iB,UAChBnsB,KAAKwI,cAAgBxI,KAAKP,QAAQ+I,cAClCxI,KAAK0yB,cAAgB1yB,KAAK2yB,eAAe3yB,KAAKP,SAC1CO,KAAKoJ,QAAQwpB,oBAChB5yB,KAAKwI,cAAcR,MAAMiK,WAAajS,KAAK0yB,cAAgB,MAE5D1yB,KAAK6yB,cAAgB,EACrBxyB,OAAOF,iBAAiB,UAAU,kBAAM,EAAKwR,YAC7CtR,OAAOF,iBAAiB,aAAa,kBAAM,EAAKwR,YAChDtR,OAAOF,iBAAiB,UAAU,kBAAM,EAAKwR,YAC7C7Q,YAAW,kBAAM,EAAK6Q,WAAU,G,sDAIhC,GACE3R,KAAKoJ,QAAQkpB,mBACdjyB,OAAOmU,YAAcxU,KAAKoJ,QAAQmpB,aAFnC,CAMA,IAAMR,EAAU/xB,KAAKoJ,QAAQipB,aAC1B,IAAAtwB,eAAa,IAAAC,QAAOhC,KAAKP,QAAS,gBAClC,EACG0sB,EACL9rB,OAAOmU,YAAcxU,KAAKoJ,QAAQmpB,YAC/BvyB,KAAKoJ,QAAQqpB,gBACbzyB,KAAKoJ,QAAQ+iB,UACX2G,EACL9yB,KAAKwI,cAAclB,wBAAwBxF,IAAMqqB,EAAY4F,EACxDgB,EAAgB/yB,KAAKoJ,QAAQnF,KAChCjE,KAAK0yB,cACL1yB,KAAKP,QAAQuyB,aACVrgB,EAAStR,OAAOmD,YAChBwvB,EAAY3yB,OAAO4yB,YACnBC,EAAelzB,KAAKoJ,QAAQnF,KAC/BjE,KAAKmzB,uBACLnzB,KAAKwI,cAAcmD,aAEhBynB,EAAUzhB,EAASmhB,EACnBO,EACL1hB,EAASwa,EAAY4F,EAAUgB,GAC/B/yB,KAAKwI,cAAc2jB,UAClBnsB,KAAKwI,cAAcwpB,aACnBhyB,KAAK6yB,cAEH7uB,EAAShE,KAAK0yB,cACdpoB,EAAY,EAEhB,GAAI+oB,EACH/oB,EAAY4oB,EAAeH,OACrB,GAAIK,EAAS,CAGnB,GAFA9oB,EAAYqH,EAAS3R,KAAKwI,cAAc2jB,UAAYA,EAAY4F,EAE5DgB,EAAgB5G,EAAY6G,GAAahzB,KAAKoJ,QAAQnF,KAAM,CAC/D,GAAIjE,KAAKszB,WAAY,CACpB,IAAMC,EAAOR,EAAgB5G,EAAY6G,EACnCvE,EAAQzuB,KAAKszB,WAAa3hB,EAE5B8c,EAAQ,GACPzuB,KAAK6yB,cAAgBpE,EAAQ,IAChCzuB,KAAK6yB,eAAiBpE,GAEvBnkB,GAAatK,KAAK6yB,gBAEd1wB,KAAKivB,IAAIpxB,KAAK6yB,cAAgBpE,GAAStsB,KAAKivB,IAAImC,KACnDvzB,KAAK6yB,eAAiBpE,GAEvBnkB,GAAatK,KAAK6yB,eAGpB7yB,KAAKszB,WAAa3hB,EAGf3R,KAAKoJ,QAAQnF,OAChBD,EAAShE,KAAKwI,cAAcmD,aAAerB,QAG5CtK,KAAK6yB,cAAgB,EACjB7yB,KAAKoJ,QAAQnF,OAChBD,EAASkvB,GAIP5oB,EAAY,GAAKA,IAAc4oB,EAAelvB,IACjD,IAAAjB,UAAS/C,KAAKP,QAASO,KAAKoJ,QAAQopB,aACpCxyB,KAAKP,QAAQuI,MAAMsC,UAAYA,EAAY,QAE3C,IAAAxH,aAAY9C,KAAKP,QAASO,KAAKoJ,QAAQopB,aACvCxyB,KAAKP,QAAQuI,MAAMsC,UAAY,KAG5BtK,KAAKoJ,QAAQnF,OAChBjE,KAAKP,QAAQuI,MAAMhE,OAASA,EAAS,S,6CAKtC,OAAO7B,KAAKsK,IAAIiJ,MACf1V,MACA,IAAAwzB,aAAYxzB,KAAKP,SAASiP,KAAI,SAAC/I,EAAG8tB,GACjC,OAAO9tB,EAAEgG,mB,qCAKW8nB,GACtB,IAAIzvB,EAASyvB,EAAGzB,aACVhqB,EAAQoX,iBAAiBqU,GAG/B,OADAzvB,GAAU0vB,SAAS1rB,EAAMsC,UAAW,IAAMopB,SAAS1rB,EAAMkiB,aAAc,U,oIC9IlE,SACNzqB,EACAkN,GAGO,IAFPgnB,EAEO,uDAFY,EACnBhQ,IACO,yDACHiQ,GAAS,EACPC,EAAW,SAAXA,EAAY1mB,GACjBymB,GAAS,EACLjQ,GACHlkB,EAAQI,oBAAoBi0B,EAAkCD,GAE/DlnB,MAG8B,IAA3BmnB,EACHhzB,YAAW,WACV6L,MACEgnB,IAEHl0B,EAAQU,iBAAiB2zB,EAAwBD,GAE7CF,GACH7yB,YAAW,WACL8yB,IACJ,IAAAzT,qBAAoB1gB,EAASq0B,KAE5BH,KAhCN,cAGMG,GAAyB,EAF/B,QAE+BC,8B,0FCHxB,WACN,IAAMt0B,EAAUQ,SAASwd,cAAc,KACjCuW,EAAc,CACnBC,iBAAkB,sBAClBplB,WAAY,iBAGb,IAAK,IAAMA,KAAcmlB,EACxB,QAAkCviB,IAA9BhS,EAAQuI,MAAM6G,GACjB,OAAOmlB,EAAYnlB,GAIrB,OAAO,I,4ECbD,SAAsBqlB,GAC5B,OAAOA,EAAI9e,QACV,0DACA,Q,4FCIK,SACN3V,EACA00B,GAEA,OAAOA,EAAiBnZ,MAAK,SAACoZ,GAC7B,IAAMC,EAAe50B,EAAQqC,IAAMsyB,EAAoBtyB,IACjDwyB,EAAe70B,EAAQynB,OAASkN,EAAoBlN,OACpDqN,EAAc90B,EAAQqE,KAAOswB,EAAoBtwB,KACjD0wB,EAAe/0B,EAAQ2O,MAAQgmB,EAAoBhmB,MAEzD,OAAOimB,GAAgBC,GAAgBC,GAAeC,O,6FCVjD,SACN/0B,EACA00B,GAEA,OAAOA,EAAiBnZ,MAAK,SAACyZ,GAC7B,IAAMC,EAAej1B,EAAQynB,OAASuN,EAAgB3yB,IAChD6yB,EAAel1B,EAAQqC,IAAM2yB,EAAgBvN,OAC7C0N,EAAcn1B,EAAQ2O,MAAQqmB,EAAgB3wB,KAC9C+wB,EAAep1B,EAAQqE,KAAO2wB,EAAgBrmB,MAEpD,OAAOsmB,GAAgBC,GAAgBC,GAAeC,O,yBCjBgB,4BAA+D,SAAStI,GAAgB,IAAItmB,EAAEN,EAAE2P,EAAEwf,EAAEC,GAAmCpvB,EAAE,+BAAlCM,EAAEhG,SAASwd,cAAc,QAAyCzV,MAAMgtB,SAASrvB,EAAEM,EAAE+B,MAAMgtB,WAAWrvB,GAAG,SAASoV,EAAEwR,EAAEtmB,EAAEN,GAAGkH,QAAQC,IAAIyf,EAAEjY,SAAS,IAAIgB,EAAE,KAAKwf,EAAE,iBAAiB,IAAI,IAAI7uB,EAAEhF,QAAQ,OAAOqU,EAAE,IAAIwf,EAAE,qBAAqB7uB,EAAEA,EAAEmP,QAAQ,WAAW,IAAI,OAAOE,EAAE,CAAC,IAAI,IAAIyf,EAAE,GAAGha,EAAE9U,EAAEgvB,MAAM,MAAMzM,EAAE,EAAEA,EAAEzN,EAAE5S,OAAOqgB,IAAI,CAAC,IAAIvc,EAAE8O,EAAEyN,GAAGyM,MAAM,KAAKlN,EAAElH,OAAO5U,EAAE,IAAIoJ,EAAEwL,OAAO5U,EAAE,IAAI,IAAI8b,IAAIA,GAAG,KAAK,IAAI1S,IAAIA,GAAG,KAAK0f,GAAGhN,EAAE,IAAI1S,EAAEmT,EAAEzN,EAAE5S,OAAO,IAAI4sB,GAAG,MAAM9uB,EAAE8uB,EAAE,IAAItI,EAAEF,EAAElrB,aAAa,qBAAqB,GAAGorB,EAAGxsB,SAASO,eAAeisB,GAAGhkB,aAAa,gBAAgBqsB,GAAG70B,SAASiB,cAAc,IAAIurB,EAAE,cAAchkB,aAAa,SAASxC,OAAO,CAAC,IAAIivB,EAAE,aAAa/yB,KAAKoT,SAASrE,SAAS,IAAI/P,UAAU,GAAGwf,EAAE1gB,SAASk1B,gBAAgB,6BAA6B,OAAO,GAAGxU,EAAElY,aAAa,QAAQ,KAAKkY,EAAElY,aAAa,SAAS,KAAKkY,EAAElY,aAAa,oBAAoBysB,GAAGvU,EAAEyU,eAAe,gCAAgC,cAAc,gCAAgCzvB,EAAE,CAAC4mB,EAAElrB,aAAa,UAAUsf,EAAElY,aAAa,QAAQ8jB,EAAElrB,aAAa,UAAUkrB,EAAE9jB,aAAa,QAAQ,IAAI8jB,EAAEvkB,MAAMjE,MAAM,OAAOwoB,EAAEvkB,MAAMhE,OAAO,OAAO2c,EAAE3Y,MAAMjE,MAAM,OAAO4c,EAAE3Y,MAAMhE,OAAO,OAAO,IAAIqxB,EAAEp1B,SAASk1B,gBAAgB,6BAA6B,SAAS3I,EAAEvsB,SAASk1B,gBAAgB,6BAA6B,aAAa1sB,aAAa,KAAKysB,GAAG1I,EAAE/jB,aAAa,gBAAgBqsB,IAAIQ,EAAEr1B,SAASk1B,gBAAgB,6BAA6B,YAAY1sB,aAAa,SAASxC,GAAG,IAAIsvB,EAAEt1B,SAASk1B,gBAAgB,6BAA6B,iBAAiBI,EAAE9sB,aAAa,YAAY,QAAQysB,EAAE,KAAKK,EAAE9sB,aAAa,QAAQ,QAAQ8sB,EAAE9sB,aAAa,SAAS,QAAQ8sB,EAAE5S,YAAY4J,EAAEiJ,WAAU,IAAK7U,EAAEgC,YAAY4S,GAAG/I,EAAE7J,YAAY2S,GAAGD,EAAE1S,YAAY6J,GAAG7L,EAAEgC,YAAY0S,GAAG9I,EAAElN,WAAWoW,aAAa9U,EAAE4L,OAAO,CAAC,IAAIC,EAAE8I,GAAG9I,EAAEvsB,SAASk1B,gBAAgB,6BAA6B,aAAa1sB,aAAa,KAAKysB,GAAG1I,EAAE/jB,aAAa,gBAAgBqsB,IAAIQ,EAAEr1B,SAASk1B,gBAAgB,6BAA6B,YAAY1sB,aAAa,SAASxC,GAAGumB,EAAE7J,YAAY2S,GAAG3U,EAAEgC,YAAY6J,GAAGvsB,SAASyC,KAAKigB,YAAYhC,GAAG4L,EAAE9jB,aAAa,oBAAoBysB,GAAGp0B,YAAW,WAAWyrB,EAAEvkB,MAAMgtB,SAAS,QAAQE,EAAE,MAAK,KAAK,SAAS1M,EAAE+D,EAAEtmB,EAAEN,GAAGA,OAAE,IAASA,EAAEA,EAAEovB,OAAE,IAASxI,EAAEvkB,MAAM0tB,eAAenJ,EAAEvkB,MAAM0tB,eAAe,WAAWzvB,EAAE,IAAIN,EAAE4mB,EAAEvkB,MAAMgtB,SAAS,WAAW/uB,EAAE,KAAK,EAAE5F,OAAOs1B,UAAUC,UAAU30B,QAAQ,QAAQ8Z,EAAEwR,EAAEtmB,GAAE,GAAI8U,EAAEwR,EAAEtmB,GAAG,SAASgG,EAAEsgB,EAAE5mB,EAAE2P,GAAG,IAAIiX,EAAE,OAAO1f,QAAQiG,MAAM,qBAAoB,EAAG,IAAI7M,EAAEhG,SAASgK,iBAAiBsiB,GAAG,IAAI5rB,MAAM2Z,UAAUlS,QAAQ8T,KAAKjW,GAAE,SAASsmB,GAAG,IAAItmB,EAAEsmB,EAAElrB,aAAa,cAAcsE,EAAEM,EAAEuiB,EAAE+D,EAAEtmB,EAAEqP,GAAGzI,QAAQiG,MAAM,0FAA0FyZ,MAAKtgB,EAAE4pB,cAAcrN,EAAE,oBAAoBsN,SAASxgB,EAAEwgB,OAAOhB,EAAE7oB,EAAEqJ,EAAEygB,GAAGC,SAAS,SAASzJ,GAAG,OAAOA,IAAIxU,OAAOwU,IAAIA,EAAE0J,OAAO1J,EAAEA,EAAE0J,MAAMj2B,KAAKk2B,MAAK,WAAWpB,EAAEe,cAAc71B,KAAKsV,EAAEtV,MAAMm2B,KAAK,cAAc5J,QAAOA,EAAEyJ,SAAS/pB,IAAh4F,UAAC,CAAC,IAAF,mB,eCAxEmqB,EAAQ,MACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,KACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,MACRA,EAAQ,MACRC,EAAOC,QAAU,EAAjBD,e,cCdAD,EAAQ,MACRC,EAAOC,QAAU,EAAjBD,qB,SCDAA,EAAOC,QAAU,SAAUC,GACzB,GAAiB,mBAANA,EAAkB,MAAMC,UAAUD,EAAK,uBAClD,OAAOA,I,eCFT,IAAIE,EAAWL,EAAQ,MACvBC,EAAOC,QAAU,SAAUC,GACzB,IAAKE,EAASF,GAAK,MAAMC,UAAUD,EAAK,sBACxC,OAAOA,I,eCDT,IAAIG,EAAYN,EAAQ,MACpBO,EAAWP,EAAQ,MACnBQ,EAAkBR,EAAQ,MAC9BC,EAAOC,QAAU,SAAUO,GACzB,OAAO,SAAUC,EAAOrD,EAAIsD,GAC1B,IAGIhgB,EAHAigB,EAAIN,EAAUI,GACd3uB,EAASwuB,EAASK,EAAE7uB,QACpBmZ,EAAQsV,EAAgBG,EAAW5uB,GAIvC,GAAI0uB,GAAepD,GAAMA,GAAI,KAAOtrB,EAASmZ,GAG3C,IAFAvK,EAAQigB,EAAE1V,OAEGvK,EAAO,OAAO,OAEtB,KAAM5O,EAASmZ,EAAOA,IAAS,IAAIuV,GAAevV,KAAS0V,IAC5DA,EAAE1V,KAAWmS,EAAI,OAAOoD,GAAevV,GAAS,EACpD,OAAQuV,IAAgB,K,eCnB9B,IAAII,EAAYb,EAAQ,MACpBK,EAAWL,EAAQ,MACnBc,EAASd,EAAQ,MACjBe,EAAa,GAAGxQ,MAChByQ,EAAY,GAEZC,EAAY,SAAUC,EAAGC,EAAKtb,GAChC,KAAMsb,KAAOH,GAAY,CACvB,IAAK,IAAItC,EAAI,GAAInvB,EAAI,EAAGA,EAAI4xB,EAAK5xB,IAAKmvB,EAAEnvB,GAAK,KAAOA,EAAI,IAExDyxB,EAAUG,GAAOra,SAAS,MAAO,gBAAkB4X,EAAE0C,KAAK,KAAO,KACjE,OAAOJ,EAAUG,GAAKD,EAAGrb,IAG7Boa,EAAOC,QAAUpZ,SAASiI,MAAQ,SAAcsS,GAC9C,IAAI1B,EAAKkB,EAAUj3B,MACf03B,EAAWP,EAAWjb,KAAKyb,UAAW,GACtCC,EAAQ,SAARA,IACF,IAAI3b,EAAOyb,EAASjf,OAAO0e,EAAWjb,KAAKyb,YAC3C,OAAO33B,gBAAgB43B,EAAQP,EAAUtB,EAAI9Z,EAAK9T,OAAQ8T,GAAQib,EAAOnB,EAAI9Z,EAAMwb,IAGrF,OADIhB,EAASV,EAAGzb,aAAYsd,EAAMtd,UAAYyb,EAAGzb,WAC1Csd,I,SCvBT,IAAI1mB,EAAW,GAAGA,SAElBmlB,EAAOC,QAAU,SAAUC,GACzB,OAAOrlB,EAASgL,KAAKqa,GAAI5P,MAAM,GAAI,K,SCHrC,IAAIkR,EAAOxB,EAAOC,QAAU,CAAEwB,QAAS,UACrB,iBAAPC,MAAiBA,IAAMF,I,cCAlC,IAAIZ,EAAYb,EAAQ,MACxBC,EAAOC,QAAU,SAAUP,EAAI0B,EAAMtvB,GAEnC,GADA8uB,EAAUlB,QACGtkB,IAATgmB,EAAoB,OAAO1B,EAC/B,OAAQ5tB,GACN,KAAK,EAAG,OAAO,SAAU4S,GACvB,OAAOgb,EAAG7Z,KAAKub,EAAM1c,IAEvB,KAAK,EAAG,OAAO,SAAUA,EAAGyR,GAC1B,OAAOuJ,EAAG7Z,KAAKub,EAAM1c,EAAGyR,IAE1B,KAAK,EAAG,OAAO,SAAUzR,EAAGyR,EAAGnX,GAC7B,OAAO0gB,EAAG7Z,KAAKub,EAAM1c,EAAGyR,EAAGnX,IAG/B,OAAO,WACL,OAAO0gB,EAAGrgB,MAAM+hB,EAAME,c,QChB1BtB,EAAOC,QAAU,SAAUC,GACzB,GAAU9kB,MAAN8kB,EAAiB,MAAMC,UAAU,yBAA2BD,GAChE,OAAOA,I,eCFTF,EAAOC,SAAWF,EAAQ,KAARA,EAAoB,WACpC,OAA+E,GAAxEre,OAAOuE,eAAe,GAAI,IAAK,CAAExE,IAAK,WAAc,OAAO,KAAQiD,M,eCF5E,IAAI0b,EAAWL,EAAQ,MACnBn2B,EAAWm2B,iBAEX4B,EAAKvB,EAASx2B,IAAaw2B,EAASx2B,EAASwd,eACjD4Y,EAAOC,QAAU,SAAUC,GACzB,OAAOyB,EAAK/3B,EAASwd,cAAc8Y,GAAM,K,SCJ3CF,EAAOC,QACL,gGACArB,MAAM,M,eCHR,IAAIgD,EAAS7B,EAAQ,MACjByB,EAAOzB,EAAQ,MACf5oB,EAAO4oB,EAAQ,MACf8B,EAAW9B,EAAQ,MACnB+B,EAAM/B,EAAQ,KAGdgC,EAAU,SAAVA,EAAoB5d,EAAMpE,EAAMiiB,GAClC,IAQIrhB,EAAKshB,EAAKC,EAAKC,EARfC,EAAYje,EAAO4d,EAAQd,EAC3BoB,EAAYle,EAAO4d,EAAQO,EAE3BC,EAAWpe,EAAO4d,EAAQS,EAC1BC,EAAUte,EAAO4d,EAAQW,EACzBz3B,EAASo3B,EAAYT,EAHTzd,EAAO4d,EAAQY,EAGef,EAAO7hB,KAAU6hB,EAAO7hB,GAAQ,KAAO6hB,EAAO7hB,IAAS,IAAjB,UAChFkgB,EAAUoC,EAAYb,EAAOA,EAAKzhB,KAAUyhB,EAAKzhB,GAAQ,IACzD6iB,EAAW3C,EAAO,YAAgBA,EAAO,UAAc,IAG3D,IAAKtf,KADD0hB,IAAWL,EAASjiB,GACZiiB,EAIVE,IAFAD,GAAOG,GAAan3B,QAA0BmQ,IAAhBnQ,EAAO0V,IAExB1V,EAAS+2B,GAAQrhB,GAE9BwhB,EAAMM,GAAWR,EAAMH,EAAII,EAAKN,GAAUW,GAA0B,mBAAPL,EAAoBJ,EAAIjb,SAAShB,KAAMqc,GAAOA,EAEvGj3B,GAAQ42B,EAAS52B,EAAQ0V,EAAKuhB,EAAK/d,EAAO4d,EAAQc,GAElD5C,EAAQtf,IAAQuhB,GAAK/qB,EAAK8oB,EAAStf,EAAKwhB,GACxCI,GAAYK,EAASjiB,IAAQuhB,IAAKU,EAASjiB,GAAOuhB,IAG1DN,EAAOJ,KAAOA,EAEdO,EAAQd,EAAI,EACZc,EAAQO,EAAI,EACZP,EAAQY,EAAI,EACZZ,EAAQS,EAAI,EACZT,EAAQW,EAAI,GACZX,EAAQe,EAAI,GACZf,EAAQc,EAAI,GACZd,EAAQgB,EAAI,IACZ/C,EAAOC,QAAU8B,G,SC1CjB/B,EAAOC,QAAU,SAAU+C,GACzB,IACE,QAASA,IACT,MAAOpzB,GACP,OAAO,K,eCJXowB,EAAOC,QAAUF,EAAQ,KAARA,CAAqB,4BAA6BlZ,SAAShM,W,SCC5E,IAAI+mB,EAAS5B,EAAOC,QAA2B,oBAAVj2B,QAAyBA,OAAO8B,MAAQA,KACzE9B,OAAwB,oBAARi5B,MAAuBA,KAAKn3B,MAAQA,KAAOm3B,KAE3Dpc,SAAS,cAATA,GACc,iBAAPqc,MAAiBA,IAAMtB,I,SCLlC,IAAIje,EAAiB,GAAGA,eACxBqc,EAAOC,QAAU,SAAUC,EAAIvf,GAC7B,OAAOgD,EAAekC,KAAKqa,EAAIvf,K,eCFjC,IAAIwiB,EAAKpD,EAAQ,MACbqD,EAAarD,EAAQ,MACzBC,EAAOC,QAAUF,EAAQ,MAAoB,SAAUsD,EAAQ1iB,EAAKD,GAClE,OAAOyiB,EAAG9gB,EAAEghB,EAAQ1iB,EAAKyiB,EAAW,EAAG1iB,KACrC,SAAU2iB,EAAQ1iB,EAAKD,GAEzB,OADA2iB,EAAO1iB,GAAOD,EACP2iB,I,eCNT,IAAIz5B,EAAWm2B,iBACfC,EAAOC,QAAUr2B,GAAYA,EAASyL,iB,eCDtC2qB,EAAOC,SAAWF,EAAQ,QAAsBA,EAAQ,KAARA,EAAoB,WAClE,OAA4G,GAArGre,OAAOuE,eAAe8Z,EAAQ,KAARA,CAAyB,OAAQ,IAAK,CAAEte,IAAK,WAAc,OAAO,KAAQiD,M,SCAzGsb,EAAOC,QAAU,SAAUP,EAAI9Z,EAAMwb,GACnC,IAAIkC,OAAcloB,IAATgmB,EACT,OAAQxb,EAAK9T,QACX,KAAK,EAAG,OAAOwxB,EAAK5D,IACAA,EAAG7Z,KAAKub,GAC5B,KAAK,EAAG,OAAOkC,EAAK5D,EAAG9Z,EAAK,IACR8Z,EAAG7Z,KAAKub,EAAMxb,EAAK,IACvC,KAAK,EAAG,OAAO0d,EAAK5D,EAAG9Z,EAAK,GAAIA,EAAK,IACjB8Z,EAAG7Z,KAAKub,EAAMxb,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAO0d,EAAK5D,EAAG9Z,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1B8Z,EAAG7Z,KAAKub,EAAMxb,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACzD,KAAK,EAAG,OAAO0d,EAAK5D,EAAG9Z,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACnC8Z,EAAG7Z,KAAKub,EAAMxb,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAClE,OAAO8Z,EAAGrgB,MAAM+hB,EAAMxb,K,cCb1B,IAAI2d,EAAMxD,EAAQ,MAElBC,EAAOC,QAAUve,OAAO,KAAK8hB,qBAAqB,GAAK9hB,OAAS,SAAUwe,GACxE,MAAkB,UAAXqD,EAAIrD,GAAkBA,EAAGtB,MAAM,IAAMld,OAAOwe,K,8OCJrDF,EAAOC,QAAU,SAAUC,GACzB,MAAqB,WAAd,EAAOA,GAAyB,OAAPA,EAA4B,mBAAPA,I,eCAvD,IAAIphB,EAASihB,EAAQ,MACjB0D,EAAa1D,EAAQ,MACrB2D,EAAiB3D,EAAQ,MACzB4D,EAAoB,GAGxB5D,EAAQ,KAARA,CAAmB4D,EAAmB5D,EAAQ,KAARA,CAAkB,aAAa,WAAc,OAAOp2B,QAE1Fq2B,EAAOC,QAAU,SAAU2D,EAAaC,EAAMC,GAC5CF,EAAY3f,UAAYnF,EAAO6kB,EAAmB,CAAEG,KAAML,EAAW,EAAGK,KACxEJ,EAAeE,EAAaC,EAAO,e,SCXrC7D,EAAOC,SAAU,G,eCEjB,IAAI8D,EAAchE,EAAQ,MACtBiE,EAAUjE,EAAQ,MAClBkE,EAAOlE,EAAQ,MACfmE,EAAMnE,EAAQ,MACdoE,EAAWpE,EAAQ,MACnBqE,EAAUrE,EAAQ,KAClBsE,EAAU3iB,OAAO4iB,OAGrBtE,EAAOC,SAAWoE,GAAWtE,EAAQ,KAARA,EAAoB,WAC/C,IAAIwE,EAAI,GACJ7B,EAAI,GAEJC,EAAI6B,SACJC,EAAI,uBAGR,OAFAF,EAAE5B,GAAK,EACP8B,EAAE7F,MAAM,IAAI7sB,SAAQ,SAAU2yB,GAAKhC,EAAEgC,GAAKA,KACd,GAArBL,EAAQ,GAAIE,GAAG5B,IAAWjhB,OAAOC,KAAK0iB,EAAQ,GAAI3B,IAAIvB,KAAK,KAAOsD,KACtE,SAAgBx5B,EAAQ+2B,GAM3B,IALA,IAAI2C,EAAIR,EAASl5B,GACb25B,EAAOtD,UAAUxvB,OACjBmZ,EAAQ,EACR4Z,EAAaZ,EAAK5hB,EAClByiB,EAASZ,EAAI7hB,EACVuiB,EAAO3Z,GAMZ,IALA,IAIItK,EAJAgiB,EAAIyB,EAAQ9C,UAAUrW,MACtBtJ,EAAOkjB,EAAab,EAAQrB,GAAGvgB,OAAOyiB,EAAWlC,IAAMqB,EAAQrB,GAC/D7wB,EAAS6P,EAAK7P,OACdvC,EAAI,EAEDuC,EAASvC,GACdoR,EAAMgB,EAAKpS,KACNw0B,IAAee,EAAOjf,KAAK8c,EAAGhiB,KAAMgkB,EAAEhkB,GAAOgiB,EAAEhiB,IAEtD,OAAOgkB,GACPN,G,eCpCJ,IAAIU,EAAWhF,EAAQ,MACnBiF,EAAMjF,EAAQ,MACdkF,EAAclF,EAAQ,MACtBmF,EAAWnF,EAAQ,KAARA,CAAyB,YACpCoF,EAAQ,aAIRC,EAAa,WAEf,IAIIC,EAJAC,EAASvF,EAAQ,KAARA,CAAyB,UAClCzwB,EAAI21B,EAAYnzB,OAcpB,IAVAwzB,EAAO3zB,MAAM4zB,QAAU,OACvBxF,oBAA+BuF,GAC/BA,EAAO9Q,IAAM,eAGb6Q,EAAiBC,EAAOE,cAAc57B,UACvB4Q,OACf6qB,EAAeI,MAAMC,uCACrBL,EAAepsB,QACfmsB,EAAaC,EAAepE,EACrB3xB,YAAY81B,EAAU,UAAYH,EAAY31B,IACrD,OAAO81B,KAGTpF,EAAOC,QAAUve,OAAO5C,QAAU,SAAgB6hB,EAAGgF,GACnD,IAAIjM,EAQJ,OAPU,OAANiH,GACFwE,EAAK,UAAcJ,EAASpE,GAC5BjH,EAAS,IAAIyL,EACbA,EAAK,UAAc,KAEnBzL,EAAOwL,GAAYvE,GACdjH,EAAS0L,SACMhqB,IAAfuqB,EAA2BjM,EAASsL,EAAItL,EAAQiM,K,eCvCzD,IAAIZ,EAAWhF,EAAQ,MACnB6F,EAAiB7F,EAAQ,MACzB8F,EAAc9F,EAAQ,MACtBoD,EAAKzhB,OAAOuE,eAEhBga,EAAQ5d,EAAI0d,EAAQ,MAAoBre,OAAOuE,eAAiB,SAAwB0a,EAAG6B,EAAGsD,GAI5F,GAHAf,EAASpE,GACT6B,EAAIqD,EAAYrD,GAAG,GACnBuC,EAASe,GACLF,EAAgB,IAClB,OAAOzC,EAAGxC,EAAG6B,EAAGsD,GAChB,MAAOl2B,IACT,GAAI,QAASk2B,GAAc,QAASA,EAAY,MAAM3F,UAAU,4BAEhE,MADI,UAAW2F,IAAYnF,EAAE6B,GAAKsD,EAAWplB,OACtCigB,I,eCdT,IAAIwC,EAAKpD,EAAQ,MACbgF,EAAWhF,EAAQ,MACnBiE,EAAUjE,EAAQ,MAEtBC,EAAOC,QAAUF,EAAQ,MAAoBre,OAAOqkB,iBAAmB,SAA0BpF,EAAGgF,GAClGZ,EAASpE,GAKT,IAJA,IAGI6B,EAHA7gB,EAAOqiB,EAAQ2B,GACf7zB,EAAS6P,EAAK7P,OACdxC,EAAI,EAEDwC,EAASxC,GAAG6zB,EAAG9gB,EAAEse,EAAG6B,EAAI7gB,EAAKrS,KAAMq2B,EAAWnD,IACrD,OAAO7B,I,eCXT,IAAIuD,EAAMnE,EAAQ,MACdqD,EAAarD,EAAQ,MACrBM,EAAYN,EAAQ,MACpB8F,EAAc9F,EAAQ,MACtBve,EAAMue,EAAQ,MACd6F,EAAiB7F,EAAQ,MACzBiG,EAAOtkB,OAAOukB,yBAElBhG,EAAQ5d,EAAI0d,EAAQ,MAAoBiG,EAAO,SAAkCrF,EAAG6B,GAGlF,GAFA7B,EAAIN,EAAUM,GACd6B,EAAIqD,EAAYrD,GAAG,GACfoD,EAAgB,IAClB,OAAOI,EAAKrF,EAAG6B,GACf,MAAO5yB,IACT,GAAI4R,EAAImf,EAAG6B,GAAI,OAAOY,GAAYc,EAAI7hB,EAAEwD,KAAK8a,EAAG6B,GAAI7B,EAAE6B,M,eCbxD,IAAI0D,EAAQnG,EAAQ,MAChBoG,EAAapG,eAAmC,SAAU,aAE9DE,EAAQ5d,EAAIX,OAAO0kB,qBAAuB,SAA6BzF,GACrE,OAAOuF,EAAMvF,EAAGwF,K,aCLlBlG,EAAQ5d,EAAIX,OAAO2kB,uB,eCCnB,IAAI7kB,EAAMue,EAAQ,MACdoE,EAAWpE,EAAQ,MACnBmF,EAAWnF,EAAQ,KAARA,CAAyB,YACpCuG,EAAc5kB,OAAOuC,UAEzB+b,EAAOC,QAAUve,OAAOsC,gBAAkB,SAAU2c,GAElD,OADAA,EAAIwD,EAASxD,GACTnf,EAAImf,EAAGuE,GAAkBvE,EAAEuE,GACH,mBAAjBvE,EAAEpf,aAA6Bof,aAAaA,EAAEpf,YAChDof,EAAEpf,YAAY0C,UACd0c,aAAajf,OAAS4kB,EAAc,O,eCX/C,IAAI9kB,EAAMue,EAAQ,MACdM,EAAYN,EAAQ,MACpBwG,EAAexG,EAAQ,KAARA,EAA6B,GAC5CmF,EAAWnF,EAAQ,KAARA,CAAyB,YAExCC,EAAOC,QAAU,SAAUoD,EAAQmD,GACjC,IAGI7lB,EAHAggB,EAAIN,EAAUgD,GACd/zB,EAAI,EACJoqB,EAAS,GAEb,IAAK/Y,KAAOggB,EAAOhgB,GAAOukB,GAAU1jB,EAAImf,EAAGhgB,IAAQ+Y,EAAO1d,KAAK2E,GAE/D,KAAO6lB,EAAM10B,OAASxC,GAAOkS,EAAImf,EAAGhgB,EAAM6lB,EAAMl3B,SAC7Ci3B,EAAa7M,EAAQ/Y,IAAQ+Y,EAAO1d,KAAK2E,IAE5C,OAAO+Y,I,eCdT,IAAIwM,EAAQnG,EAAQ,MAChBkF,EAAclF,EAAQ,MAE1BC,EAAOC,QAAUve,OAAOC,MAAQ,SAAcgf,GAC5C,OAAOuF,EAAMvF,EAAGsE,K,aCLlBhF,EAAQ5d,EAAI,GAAGmhB,sB,eCCf,IAAIiD,EAAO1G,EAAQ,MACfkE,EAAOlE,EAAQ,MACfgF,EAAWhF,EAAQ,MACnB2G,EAAU3G,gBACdC,EAAOC,QAAUyG,GAAWA,EAAQC,SAAW,SAAiBzG,GAC9D,IAAIve,EAAO8kB,EAAKpkB,EAAE0iB,EAAS7E,IACvB2E,EAAaZ,EAAK5hB,EACtB,OAAOwiB,EAAaljB,EAAKS,OAAOyiB,EAAW3E,IAAOve,I,SCRpDqe,EAAOC,QAAU,SAAU2G,EAAQlmB,GACjC,MAAO,CACLmmB,aAAuB,EAATD,GACdE,eAAyB,EAATF,GAChBG,WAAqB,EAATH,GACZlmB,MAAOA,K,eCLX,IAAIkhB,EAAS7B,EAAQ,MACjB5oB,EAAO4oB,EAAQ,MACfve,EAAMue,EAAQ,MACdiH,EAAMjH,EAAQ,KAARA,CAAkB,OACxBkH,EAAYlH,EAAQ,MACpBmH,EAAY,WACZC,GAAO,GAAKF,GAAWrI,MAAMsI,GAEjCnH,sBAAmC,SAAUG,GAC3C,OAAO+G,EAAUphB,KAAKqa,KAGvBF,EAAOC,QAAU,SAAUU,EAAGhgB,EAAKwB,EAAKilB,GACvC,IAAIC,EAA2B,mBAAPllB,EACpBklB,IAAY7lB,EAAIW,EAAK,SAAWhL,EAAKgL,EAAK,OAAQxB,IAClDggB,EAAEhgB,KAASwB,IACXklB,IAAY7lB,EAAIW,EAAK6kB,IAAQ7vB,EAAKgL,EAAK6kB,EAAKrG,EAAEhgB,GAAO,GAAKggB,EAAEhgB,GAAOwmB,EAAIhG,KAAKmG,OAAO3mB,MACnFggB,IAAMiB,EACRjB,EAAEhgB,GAAOwB,EACCilB,EAGDzG,EAAEhgB,GACXggB,EAAEhgB,GAAOwB,EAEThL,EAAKwpB,EAAGhgB,EAAKwB,WALNwe,EAAEhgB,GACTxJ,EAAKwpB,EAAGhgB,EAAKwB,OAOd0E,SAAS5C,UAAWijB,GAAW,WAChC,MAAsB,mBAARv9B,MAAsBA,KAAKq9B,IAAQC,EAAUphB,KAAKlc,U,eC3BlE,IAAIy2B,EAAWL,EAAQ,MACnBgF,EAAWhF,EAAQ,MACnBh2B,EAAQ,SAAU42B,EAAG4G,GAEvB,GADAxC,EAASpE,IACJP,EAASmH,IAAoB,OAAVA,EAAgB,MAAMpH,UAAUoH,EAAQ,8BAElEvH,EAAOC,QAAU,CACf7f,IAAKsB,OAAO8lB,iBAAmB,aAAe,GAC5C,SAAU9e,EAAM+e,EAAOrnB,GACrB,KACEA,EAAM2f,EAAQ,IAARA,CAAkBlZ,SAAShB,KAAMka,UAA4Bre,OAAOuC,UAAW,aAAa7D,IAAK,IACnGsI,EAAM,IACV+e,IAAU/e,aAAgBpe,OAC1B,MAAOsF,GAAK63B,GAAQ,EACtB,OAAO,SAAwB9G,EAAG4G,GAIhC,OAHAx9B,EAAM42B,EAAG4G,GACLE,EAAO9G,EAAE+G,UAAYH,EACpBnnB,EAAIugB,EAAG4G,GACL5G,GAVX,CAYE,IAAI,QAASvlB,GACjBrR,MAAOA,I,eCvBT,IAAI49B,EAAM5H,UACNve,EAAMue,EAAQ,MACd6H,EAAM7H,EAAQ,KAARA,CAAkB,eAE5BC,EAAOC,QAAU,SAAUC,EAAI2H,EAAKC,GAC9B5H,IAAO1e,EAAI0e,EAAK4H,EAAO5H,EAAKA,EAAGjc,UAAW2jB,IAAMD,EAAIzH,EAAI0H,EAAK,CAAEd,cAAc,EAAMpmB,MAAOmnB,M,eCLhG,IAAIE,EAAShI,EAAQ,KAARA,CAAqB,QAC9BiI,EAAMjI,EAAQ,MAClBC,EAAOC,QAAU,SAAUtf,GACzB,OAAOonB,EAAOpnB,KAASonB,EAAOpnB,GAAOqnB,EAAIrnB,M,eCH3C,IAAI6gB,EAAOzB,EAAQ,MACf6B,EAAS7B,EAAQ,MACjBkI,EAAS,qBACTC,EAAQtG,EAAOqG,KAAYrG,EAAOqG,GAAU,KAE/CjI,EAAOC,QAAU,SAAUtf,EAAKD,GAC/B,OAAOwnB,EAAMvnB,KAASunB,EAAMvnB,QAAiBvF,IAAVsF,EAAsBA,EAAQ,MAChE,WAAY,IAAI1E,KAAK,CACtBylB,QAASD,EAAKC,QACd0G,KAAMpI,EAAQ,MAAgB,OAAS,SACvCqI,UAAW,0C,eCVb,IAAIC,EAAYtI,EAAQ,MACpB3pB,EAAMtK,KAAKsK,IACX+jB,EAAMruB,KAAKquB,IACf6F,EAAOC,QAAU,SAAUhV,EAAOnZ,GAEhC,OADAmZ,EAAQod,EAAUpd,IACH,EAAI7U,EAAI6U,EAAQnZ,EAAQ,GAAKqoB,EAAIlP,EAAOnZ,K,SCJzD,IAAIw2B,EAAOx8B,KAAKw8B,KACZ7M,EAAQ3vB,KAAK2vB,MACjBuE,EAAOC,QAAU,SAAUC,GACzB,OAAOqI,MAAMrI,GAAMA,GAAM,GAAKA,EAAK,EAAIzE,EAAQ6M,GAAMpI,K,eCHvD,IAAIkE,EAAUrE,EAAQ,KAClByI,EAAUzI,EAAQ,KACtBC,EAAOC,QAAU,SAAUC,GACzB,OAAOkE,EAAQoE,EAAQtI,M,eCHzB,IAAImI,EAAYtI,EAAQ,MACpB5F,EAAMruB,KAAKquB,IACf6F,EAAOC,QAAU,SAAUC,GACzB,OAAOA,EAAK,EAAI/F,EAAIkO,EAAUnI,GAAK,kBAAoB,I,eCHzD,IAAIsI,EAAUzI,EAAQ,KACtBC,EAAOC,QAAU,SAAUC,GACzB,OAAOxe,OAAO8mB,EAAQtI,M,eCFxB,IAAIE,EAAWL,EAAQ,MAGvBC,EAAOC,QAAU,SAAUC,EAAIyC,GAC7B,IAAKvC,EAASF,GAAK,OAAOA,EAC1B,IAAIR,EAAIvd,EACR,GAAIwgB,GAAkC,mBAArBjD,EAAKQ,EAAGrlB,YAA4BulB,EAASje,EAAMud,EAAG7Z,KAAKqa,IAAM,OAAO/d,EACzF,GAAgC,mBAApBud,EAAKQ,EAAGuI,WAA2BrI,EAASje,EAAMud,EAAG7Z,KAAKqa,IAAM,OAAO/d,EACnF,IAAKwgB,GAAkC,mBAArBjD,EAAKQ,EAAGrlB,YAA4BulB,EAASje,EAAMud,EAAG7Z,KAAKqa,IAAM,OAAO/d,EAC1F,MAAMge,UAAU,6C,SCVlB,IAAIhmB,EAAK,EACLuuB,EAAK58B,KAAKoT,SACd8gB,EAAOC,QAAU,SAAUtf,GACzB,MAAO,UAAUyB,YAAehH,IAARuF,EAAoB,GAAKA,EAAK,QAASxG,EAAKuuB,GAAI7tB,SAAS,O,eCHnF,IAAIqtB,EAAQnI,EAAQ,KAARA,CAAqB,OAC7BiI,EAAMjI,EAAQ,MACdyE,EAASzE,eACT4I,EAA8B,mBAAVnE,GAETxE,EAAOC,QAAU,SAAUlgB,GACxC,OAAOmoB,EAAMnoB,KAAUmoB,EAAMnoB,GAC3B4oB,GAAcnE,EAAOzkB,KAAU4oB,EAAanE,EAASwD,GAAK,UAAYjoB,MAGjEmoB,MAAQA,G,eCTjB,IAAInG,EAAUhC,EAAQ,MAEtBgC,EAAQA,EAAQY,EAAIZ,EAAQd,EAAG,SAAU,CAAEqD,OAAQvE,EAAQ,S,eCF3D,IAAIgC,EAAUhC,EAAQ,MAClBa,EAAYb,EAAQ,MACpBgF,EAAWhF,EAAQ,MACnB6I,GAAU7I,iBAAgC,IAAI1gB,MAC9CwpB,EAAShiB,SAASxH,MAEtB0iB,EAAQA,EAAQY,EAAIZ,EAAQd,GAAKlB,EAAQ,KAARA,EAAoB,WACnD6I,GAAO,kBACL,UAAW,CACbvpB,MAAO,SAAepU,EAAQ69B,EAAcC,GAC1C,IAAIpE,EAAI/D,EAAU31B,GACd+9B,EAAIjE,EAASgE,GACjB,OAAOH,EAASA,EAAOjE,EAAGmE,EAAcE,GAAKH,EAAOhjB,KAAK8e,EAAGmE,EAAcE,O,eCZ9E,IAAIjH,EAAUhC,EAAQ,MAClBjhB,EAASihB,EAAQ,MACjBa,EAAYb,EAAQ,MACpBgF,EAAWhF,EAAQ,MACnBK,EAAWL,EAAQ,MACnBkJ,EAAQlJ,EAAQ,MAChBjR,EAAOiR,EAAQ,MACfmJ,GAAcnJ,iBAAgC,IAAIiB,UAIlDmI,EAAiBF,GAAM,WACzB,SAAShI,KACT,QAASiI,GAAW,cAA6B,GAAIjI,aAAcA,MAEjEmI,GAAYH,GAAM,WACpBC,GAAW,kBAGbnH,EAAQA,EAAQY,EAAIZ,EAAQd,GAAKkI,GAAkBC,GAAW,UAAW,CACvEpI,UAAW,SAAmBqI,EAAQzjB,GACpCgb,EAAUyI,GACVtE,EAASnf,GACT,IAAI0jB,EAAYhI,UAAUxvB,OAAS,EAAIu3B,EAASzI,EAAUU,UAAU,IACpE,GAAI8H,IAAaD,EAAgB,OAAOD,EAAWG,EAAQzjB,EAAM0jB,GACjE,GAAID,GAAUC,EAAW,CAEvB,OAAQ1jB,EAAK9T,QACX,KAAK,EAAG,OAAO,IAAIu3B,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAOzjB,EAAK,IAC/B,KAAK,EAAG,OAAO,IAAIyjB,EAAOzjB,EAAK,GAAIA,EAAK,IACxC,KAAK,EAAG,OAAO,IAAIyjB,EAAOzjB,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACjD,KAAK,EAAG,OAAO,IAAIyjB,EAAOzjB,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAG5D,IAAI2jB,EAAQ,CAAC,MAEb,OADAA,EAAMvtB,KAAKqD,MAAMkqB,EAAO3jB,GACjB,IAAKkJ,EAAKzP,MAAMgqB,EAAQE,IAGjC,IAAIhC,EAAQ+B,EAAUrlB,UAClBulB,EAAW1qB,EAAOshB,EAASmH,GAASA,EAAQ7lB,OAAOuC,WACnDyV,EAAS7S,SAASxH,MAAMwG,KAAKwjB,EAAQG,EAAU5jB,GACnD,OAAOwa,EAAS1G,GAAUA,EAAS8P,M,eC3CvC,IAAIrG,EAAKpD,EAAQ,MACbgC,EAAUhC,EAAQ,MAClBgF,EAAWhF,EAAQ,MACnB8F,EAAc9F,EAAQ,MAG1BgC,EAAQA,EAAQY,EAAIZ,EAAQd,EAAIlB,EAAQ,KAARA,EAAoB,WAElD2G,QAAQzgB,eAAekd,EAAG9gB,EAAE,GAAI,EAAG,CAAE3B,MAAO,IAAM,EAAG,CAAEA,MAAO,OAC5D,UAAW,CACbuF,eAAgB,SAAwBhb,EAAQw+B,EAAaC,GAC3D3E,EAAS95B,GACTw+B,EAAc5D,EAAY4D,GAAa,GACvC1E,EAAS2E,GACT,IAEE,OADAvG,EAAG9gB,EAAEpX,EAAQw+B,EAAaC,IACnB,EACP,MAAO95B,GACP,OAAO,O,eClBb,IAAImyB,EAAUhC,EAAQ,MAClBiG,EAAOjG,UACPgF,EAAWhF,EAAQ,MAEvBgC,EAAQA,EAAQY,EAAG,UAAW,CAC5BgH,eAAgB,SAAwB1+B,EAAQw+B,GAC9C,IAAIG,EAAO5D,EAAKjB,EAAS95B,GAASw+B,GAClC,QAAOG,IAASA,EAAK9C,sBAA8B77B,EAAOw+B,O,cCN9D,IAAI1H,EAAUhC,EAAQ,MAClBgF,EAAWhF,EAAQ,MACnB8J,EAAY,SAAUC,GACxBngC,KAAKogC,GAAKhF,EAAS+E,GACnBngC,KAAKqgC,GAAK,EACV,IACIrpB,EADAgB,EAAOhY,KAAKsgC,GAAK,GAErB,IAAKtpB,KAAOmpB,EAAUnoB,EAAK3F,KAAK2E,IAElCof,EAAQ,KAARA,CAA0B8J,EAAW,UAAU,WAC7C,IAEIlpB,EAFAygB,EAAOz3B,KACPgY,EAAOyf,EAAK6I,GAEhB,GACE,GAAI7I,EAAK4I,IAAMroB,EAAK7P,OAAQ,MAAO,CAAE4O,WAAOtF,EAAW8uB,MAAM,YACnDvpB,EAAMgB,EAAKyf,EAAK4I,SAAU5I,EAAK2I,KAC3C,MAAO,CAAErpB,MAAOC,EAAKupB,MAAM,MAG7BnI,EAAQA,EAAQY,EAAG,UAAW,CAC5BwH,UAAW,SAAmBl/B,GAC5B,OAAO,IAAI4+B,EAAU5+B,O,eCtBzB,IAAI+6B,EAAOjG,EAAQ,MACfgC,EAAUhC,EAAQ,MAClBgF,EAAWhF,EAAQ,MAEvBgC,EAAQA,EAAQY,EAAG,UAAW,CAC5BsD,yBAA0B,SAAkCh7B,EAAQw+B,GAClE,OAAOzD,EAAK3jB,EAAE0iB,EAAS95B,GAASw+B,O,eCNpC,IAAI1H,EAAUhC,EAAQ,MAClBqK,EAAWrK,EAAQ,MACnBgF,EAAWhF,EAAQ,MAEvBgC,EAAQA,EAAQY,EAAG,UAAW,CAC5B3e,eAAgB,SAAwB/Y,GACtC,OAAOm/B,EAASrF,EAAS95B,Q,eCN7B,IAAI+6B,EAAOjG,EAAQ,MACf/b,EAAiB+b,EAAQ,MACzBve,EAAMue,EAAQ,MACdgC,EAAUhC,EAAQ,MAClBK,EAAWL,EAAQ,MACnBgF,EAAWhF,EAAQ,MAcvBgC,EAAQA,EAAQY,EAAG,UAAW,CAAElhB,IAZhC,SAASA,EAAIxW,EAAQw+B,GACnB,IACIG,EAAMrC,EADN8C,EAAW/I,UAAUxvB,OAAS,EAAI7G,EAASq2B,UAAU,GAEzD,OAAIyD,EAAS95B,KAAYo/B,EAAiBp/B,EAAOw+B,IAC7CG,EAAO5D,EAAK3jB,EAAEpX,EAAQw+B,IAAqBjoB,EAAIooB,EAAM,SACrDA,EAAKlpB,WACQtF,IAAbwuB,EAAKnoB,IACHmoB,EAAKnoB,IAAIoE,KAAKwkB,QACdjvB,EACFglB,EAASmH,EAAQvjB,EAAe/Y,IAAiBwW,EAAI8lB,EAAOkC,EAAaY,QAA7E,M,eChBF,IAAItI,EAAUhC,EAAQ,MAEtBgC,EAAQA,EAAQY,EAAG,UAAW,CAC5BnhB,IAAK,SAAavW,EAAQw+B,GACxB,OAAOA,KAAex+B,M,eCJ1B,IAAI82B,EAAUhC,EAAQ,MAClBgF,EAAWhF,EAAQ,MACnBuK,EAAgB5oB,OAAO6oB,aAE3BxI,EAAQA,EAAQY,EAAG,UAAW,CAC5B4H,aAAc,SAAsBt/B,GAElC,OADA85B,EAAS95B,IACFq/B,GAAgBA,EAAcr/B,O,eCPzC,IAAI82B,EAAUhC,EAAQ,MAEtBgC,EAAQA,EAAQY,EAAG,UAAW,CAAEgE,QAAS5G,EAAQ,S,eCFjD,IAAIgC,EAAUhC,EAAQ,MAClBgF,EAAWhF,EAAQ,MACnByK,EAAqB9oB,OAAO+oB,kBAEhC1I,EAAQA,EAAQY,EAAG,UAAW,CAC5B8H,kBAAmB,SAA2Bx/B,GAC5C85B,EAAS95B,GACT,IAEE,OADIu/B,GAAoBA,EAAmBv/B,IACpC,EACP,MAAO2E,GACP,OAAO,O,eCXb,IAAImyB,EAAUhC,EAAQ,MAClB2K,EAAW3K,EAAQ,MAEnB2K,GAAU3I,EAAQA,EAAQY,EAAG,UAAW,CAC1C6E,eAAgB,SAAwBv8B,EAAQs8B,GAC9CmD,EAAS3gC,MAAMkB,EAAQs8B,GACvB,IAEE,OADAmD,EAAStqB,IAAInV,EAAQs8B,IACd,EACP,MAAO33B,GACP,OAAO,O,eCVb,IAAIuzB,EAAKpD,EAAQ,MACbiG,EAAOjG,EAAQ,MACf/b,EAAiB+b,EAAQ,MACzBve,EAAMue,EAAQ,MACdgC,EAAUhC,EAAQ,MAClBqD,EAAarD,EAAQ,MACrBgF,EAAWhF,EAAQ,MACnBK,EAAWL,EAAQ,MAwBvBgC,EAAQA,EAAQY,EAAG,UAAW,CAAEviB,IAtBhC,SAASA,EAAInV,EAAQw+B,EAAakB,GAChC,IAEIC,EAAoBrD,EAFpB8C,EAAW/I,UAAUxvB,OAAS,EAAI7G,EAASq2B,UAAU,GACrDuJ,EAAU7E,EAAK3jB,EAAE0iB,EAAS95B,GAASw+B,GAEvC,IAAKoB,EAAS,CACZ,GAAIzK,EAASmH,EAAQvjB,EAAe/Y,IAClC,OAAOmV,EAAImnB,EAAOkC,EAAakB,EAAGN,GAEpCQ,EAAUzH,EAAW,GAEvB,GAAI5hB,EAAIqpB,EAAS,SAAU,CACzB,IAAyB,IAArBA,EAAQ9D,WAAuB3G,EAASiK,GAAW,OAAO,EAC9D,GAAIO,EAAqB5E,EAAK3jB,EAAEgoB,EAAUZ,GAAc,CACtD,GAAImB,EAAmBnpB,KAAOmpB,EAAmBxqB,MAAuC,IAAhCwqB,EAAmB7D,SAAoB,OAAO,EACtG6D,EAAmBlqB,MAAQiqB,EAC3BxH,EAAG9gB,EAAEgoB,EAAUZ,EAAamB,QACvBzH,EAAG9gB,EAAEgoB,EAAUZ,EAAarG,EAAW,EAAGuH,IACjD,OAAO,EAET,YAAuBvvB,IAAhByvB,EAAQzqB,MAA6ByqB,EAAQzqB,IAAIyF,KAAKwkB,EAAUM,IAAI,O,qQCpB7E,SAAU3gC,GAET,IAIM8gC,EAEAC,EAEAC,EAqBAC,EAOAC,EAIAC,EACAl+B,EAzCFm+B,EAAK9L,UAAUC,UAEdv1B,EAAOqhC,oBAAwB,OAAQ3iB,KAAK0iB,IAAOA,EAAGE,MAAM,cAAgBpkB,OAAOqkB,GAAK,IAC5FzhC,iBAAiB,UAGZihC,EAAWnhC,SAASwd,cAAc,UAElC4jB,EAAa,SAASQ,GACzB,IAAIxJ,EAAQyJ,EACRC,EAAUF,EAAIxiB,WAEqB,YAAnC0iB,EAAQriB,SAAS7V,eACpBwuB,EAAS+I,EAAS5L,YAElBuM,EAAQvf,aAAa6V,EAAQ0J,EAAQ/zB,mBACrClN,YAAW,WACVihC,EAAQlf,YAAYwV,SAEVwJ,EAAIG,aAAeH,EAAI3sB,YAAc2sB,EAAIG,eACpDH,EAAIG,YAAcH,EAAI3sB,YACtB4sB,EAAQD,EAAIC,MACZD,EAAIC,OAAS,SACbhhC,YAAW,WACV+gC,EAAIC,MAAQA,OAKXR,EAAkB,WACrB,IAAI37B,EACAs8B,EAAOhiC,SAASgK,iBAAiB,qCACrC,IAAKtE,EAAI,EAAGA,EAAIs8B,EAAK95B,OAAQxC,IAC5B07B,EAAWY,EAAKt8B,KAGd47B,EAAW,WACdj8B,aAAa67B,GACbA,EAAQrgC,WAAWwgC,EAAiB,KAEjCE,EAAKnhC,EAAO6hC,YAAcA,WAAW,4BACrC5+B,EAAO,WACVi+B,IAEIC,GAAMA,EAAGW,aACZX,EAAGW,YAAYZ,IAIjBH,EAASgB,OAAS,6EAEd,YAAYrjB,KAAK9e,SAASoiC,YAAc,IAC3C/+B,IAEArD,SAASE,iBAAiB,mBAAoBmD,GAGxCi+B,IA3DV,CA8DGlhC,QAQH,SAAWA,EAAQJ,EAAUwR,GAO5B,IAAU6wB,EAAQC,EAAwBC,EAF1CviC,EAASwd,cAAe,WAIxB,IAAIglB,EAAK,GACLC,GAAqB,EACrBC,EAAO,aACPC,EAAQ3iC,EAASwd,cAAe,OAChColB,EAAaD,EAAMvhC,aACnByhC,EAAaF,EAAMn6B,aACnBs6B,EAAgBH,EAAM1wB,gBACtB8wB,EAAU/iC,EAASyL,gBACnBu3B,EAAQ,GACRC,EAAM,CAETC,UAAW,IAERC,EAAU,aACVC,EAAaD,EAAU,MAGvB3B,EAAK9L,UAAUC,UACf0N,EAAgB,SAAUvkB,KAAK0iB,IAAS,OAAQ1iB,KAAK0iB,IAAOA,EAAGE,MAAM,cAAgBpkB,OAAOqkB,GAAK,GACjG2B,EAAa,aACbC,EAAW,oBACXC,EAAU,sBACVC,EAAarjC,EAAOsjC,eAMpBC,EAAQ,4BACRC,GAAY,EAEZC,EAAW,GACXC,EAAkB,GAClBC,EAAM3jC,EAAO4jC,iBACbvjB,EAAQ,CACXqe,GAAI,EACJ,GAAM,IAEHmF,EAASjkC,EAASwd,cAAe,KAKjC0mB,GAAa,EAKbC,EAAqB,oBACrBC,EAA6B,qBAC7BC,EAAwB,qBACxBC,EAAsB,QACtBC,EAA0B,QAO1BC,EAAqB,oDAErBC,EAAK,SAAS3nB,EAAK4nB,EAAK5O,EAAI6O,GAC1B7nB,EAAI5c,iBACR4c,EAAI5c,iBAAiBwkC,EAAK5O,EAAI6O,IAAW,GAC9B7nB,EAAI8nB,aACf9nB,EAAI8nB,YAAa,KAAOF,EAAK5O,IAQ3B+O,EAAU,SAAS/O,GACtB,IAAIzd,EAAQ,GACZ,OAAO,SAASysB,GAIf,OAHOA,KAASzsB,IACfA,EAAOysB,GAAUhP,EAAGgP,IAEdzsB,EAAOysB,KAQhB,SAASC,EAAQ3vB,GAChB,MAAc,MAANA,GACM,OAANA,GACM,OAANA,GACM,OAANA,GACM,OAANA,EAUT,IAEK4vB,EASAC,EAiwBMC,EAaLC,EACAvD,EACA9iB,EA0cAsmB,EAqBoBC,EACnBC,GAASC,GACTC,GAtBDC,GAEAC,GAcAC,GAyBAC,GA/wCFC,IAECb,EAAY,wBASZC,EAAWJ,GAAQ,SAASh6B,GAE/B,MAAO,UAVM,WAEb,IADA,IAAImR,EAAO0b,UAAWrW,EAAQ,EAAGykB,EAAS9pB,EAAK,KACtCqF,KAASrF,GACjB8pB,EAASA,EAAO3wB,QAAQ6G,EAAKqF,GAAQrF,IAAOqF,IAE7C,OAAOykB,EAKY3wB,EAAStK,GAAO,IAAIqG,cAEtC,WAAY,KAGZ,KAAM,KAGN,oBAAqB,SAGrB,oBAAqB,SAGrB,eAAgB,OAGhB,2BAA4B,cAE5B,8CAA+C,IAC5C,OAGE,SAASrG,EAAK3C,GACpB,IAAI69B,EACJ,KAAMl7B,KAAOg5B,GAEZ,GADAA,EAASh5B,IAAO,EACZ3C,IAAW69B,EAAel7B,EAAI62B,MAAOsD,IACxCnB,EAASh5B,GAAOk7B,EAAc,GAAMtlB,EAAMslB,EAAc,SAGxD,IACClC,EAASh5B,GAAO,IAAIoS,SAAS,IAAKgoB,EAASp6B,GAA3B,CAAiC4V,GAChD,MAAMza,IAIV,OAAO69B,EAASh5B,KAIdm7B,GAAgB,SAAUC,EAAWC,GAOxC,OANKD,EAAU3Q,GACd2Q,EAAUE,OAAS3D,EAAG4D,eAAgBF,GAAa,SACnDD,EAAU/qB,IAAM+qB,EAAU3Q,EAAI2Q,EAAUE,QAExCF,EAAU/qB,IAAM+qB,EAAUzZ,EAEpByZ,GAOJI,GAAc,SAAUC,GAE3B,GAAK7D,EAAL,CAEA,IAAIvwB,EAAUxM,EAAG6gC,EAEbp9B,EAAUm9B,GAAO,GAarB,GAXKn9B,EAAQ+I,UAA0C,IAA9B/I,EAAQ+I,SAASqN,WACQ,QAA5CpW,EAAQ+I,SAASuN,SAAS7V,cAC9BT,EAAQ+I,SAAY,CAAE/I,EAAQ+I,WAE9B/I,EAAQjF,QAAUiF,EAAQ+I,SAC1B/I,EAAQ+I,SAAY,OAMhBq0B,GAFNr0B,EAAW/I,EAAQ+I,UAAYswB,EAAGgE,IAAMr9B,EAAQjF,SAAWlE,EAAamJ,EAAQs9B,YAAct9B,EAAQu9B,SAAalE,EAAGmE,IAAMnE,EAAGoE,WAEzG1+B,OAAU,CAM/B,IAJAs6B,EAAGqE,SAAU19B,GACb+6B,GAAa,EAGPx+B,EAAI,EAAGA,EAAI6gC,EAAM7gC,IACtB88B,EAAGsE,QAAQ50B,EAAUxM,GAAKyD,GAG3Bq5B,EAAGuE,YAAa59B,MA8GlB,SAAS69B,GAAelsB,EAAGyR,GAC1B,OAAOzR,EAAEI,IAAMqR,EAAErR,IAwBlB,SAAS+rB,GAAoBrc,EAAKpU,GACjC,IAAI9Q,EAAGugC,EAAWiB,EAClB,GAAKtc,GAAOpU,EAGX,IAFA0wB,EAAa1E,EAAG2E,SAAU3wB,GAC1BoU,EAAM4X,EAAG4E,QAAQxc,GACXllB,EAAI,EAAGA,EAAIwhC,EAAWh/B,OAAQxC,IACnC,GAAKklB,IAAQ4X,EAAG4E,QAAQF,EAAYxhC,GAAIuuB,KAAO,CAC9CgS,EAAYiB,EAAYxhC,GACxB,MAIH,OAAOugC,EA1IC7lC,EAAOwM,SAAWA,QAAQy6B,KAO5B/D,KAAcX,IACpBW,EAAa,OAIdN,EAAO,eAAiB,EACxBA,EAAO,cAAgB,EACvBA,EAAO,cAAgB,EAmBvBA,EAAO,iBAAoBhjC,EAASsnC,eAAeC,WAAY,2CAA4C,OAunB3G/E,EAAGgF,IAAM,MAAO,IAAIC,MAAOC,WAAW7oB,OAAO,EAAG,GAGhD2jB,EAAGmF,UAAY,WAAYhF,EAC3BH,EAAGoF,SAAW,UAAWjF,EACzBH,EAAGqF,aAAeznC,EAAOqhC,mBAIrBe,EAAGmF,WAAanF,EAAGqF,aAAerF,EAAGoF,WAC9B1C,EAKPllC,EAASwd,cAAc,OAJzBmlB,EAAMR,OAAS,UACf+C,EAAOta,IAAM,UACb4X,EAAGmF,UAAYhF,EAAMmF,WAAa5C,EAAO4C,SACzCtF,EAAGqF,WAAarF,EAAGmF,WAAanF,EAAGqF,YAKjCrF,EAAGmF,YAAcnF,EAAGoF,UAIlBzC,EAAS,6EAETrmB,EAAO,WAGI,IAFF8iB,EAAI99B,QAGf0+B,EAAGoF,UAAW,GAGftF,EAAyBE,EAAGmF,YAAcnF,EAAGoF,SAE7CnF,GAAqB,EAErB5hC,WAAWwlC,MAZRzE,EAAM5hC,EAASwd,cAAc,QAe7BwN,OAASlM,EACb8iB,EAAI/W,QAAU/L,EACd8iB,EAAIp5B,aAAa,QAAS,OAE1Bo5B,EAAIO,OAASgD,8FACbvD,EAAIhX,IAAMua,GAIX1C,GAAqB,EAKtBD,EAAGoE,SAAW,0BACdpE,EAAGmE,IAAMnE,EAAGoE,SACZpE,EAAGS,IAAMA,EAKTT,EAAGuB,IAAOA,GAAQ,EAClBvB,EAAG9hB,EAAID,EAGP+hB,EAAGQ,MAASA,EAEZR,EAAGuF,QAAUrF,EAQbF,EAAG4E,QAAUvC,GAAQ,SAASja,GAE7B,OADAqZ,EAAO76B,KAAOwhB,EACPqZ,EAAO76B,QAUfo5B,EAAGgE,IAAM,SAAStiC,EAASyiC,GAC1B,MAAS,kBAAmBziC,EAAYA,EAAQ8F,iBAAiB28B,GAAO,IAQzEnE,EAAGwF,aAAe,WASjB,OARK5nC,EAAO6hC,aAAeA,WAAY,uBAA0B,IAAIgG,QACpEzF,EAAGwF,aAAe,SAAUE,GAC3B,OAAQA,GAAWjG,WAAYiG,GAAQD,SAGxCzF,EAAGwF,aAAexF,EAAG2F,IAGf3F,EAAGwF,aAAavyB,MAAO1V,KAAM23B,YASrC8K,EAAG2F,IAAM,SAAUD,GAClB,OAAOA,GAAQrC,GAAQqC,IAYxB1F,EAAG4F,WAAa,SAAUC,GAEzB,IAAIvxB,EAAQ+uB,GAAQwC,GAAiB,KAAS,EAK9C,OAJIvxB,EAAQ,IACXA,GAAQ,GAGFA,GAOR0rB,EAAG8F,aAAe,SAAU/tB,GAC3B,OAASA,GAASyoB,EAAOzoB,IAQ1BioB,EAAG+F,UAAY1D,GAAQ,SAAU2D,GAChC,IAAI9G,GAAU8G,GAAiB,IAAK9G,MAAM8B,GAC1C,MAAO,CACN0E,MAAOxG,GAASA,EAAM,GACtBx5B,OAAQw5B,GAASA,EAAM,OAIzBc,EAAG2E,SAAW,SAAU3wB,GAIvB,OAHMA,EAAIiyB,QACTjyB,EAAIiyB,MAloBN,SAAqB3D,EAAOtuB,GAE3B,SAASkyB,EAAkBC,GAC1B,IAAIC,EACAlH,EAAQiH,EAAMvP,KAAK0L,EAAM5jC,UAAU4kB,IACvC,GAAI4b,EAGH,OAFAkH,EAAQlH,EAAO,GACf5b,GAAO8iB,EAAM1gC,OACN0gC,EAIT,IACI3U,EACA4U,EACAC,EACAlpB,EACAxK,EALA2zB,EAAcjE,EAAM58B,OASpB4d,EAAM,EAGNohB,EAAa,GASjB,SAAS8B,IAGR,IAKI1T,EAAG9I,EAAGyI,EAAGvvB,EAETs6B,EAAMiJ,EAAUnyB,EAAOoyB,EAAQC,EAP/BC,GAAS,EAMTnD,EAAY,GAKhB,IAAKvgC,EAAI,EAAIA,EAAImjC,EAAY3gC,OAAQxC,IAGpCujC,GAFAjJ,EAAO6I,EAAanjC,IAEHs6B,EAAK93B,OAAS,GAC/B4O,EAAQkpB,EAAK9+B,UAAU,EAAG8+B,EAAK93B,OAAS,GACxCghC,EAASzV,SAAS3c,EAAO,IACzBqyB,EAAW/9B,WAAW0L,GAIlBytB,EAAwBzlB,KAAKhI,IAAwB,MAAbmyB,IAGvC3T,GAAK9I,KAAI4c,GAAS,GAKP,IAAXF,EAAeE,GAAS,EAAa9T,EAAI4T,GAInC1E,EAAmB1lB,KAAKhI,IAAwB,MAAbmyB,IAIzC3T,GAAK9I,GAAKyI,KAAImU,GAAS,GAKvBD,EAAW,EAAIC,GAAS,EAAa5c,EAAI2c,GAInC5E,EAAwBzlB,KAAKhI,IAAwB,MAAbmyB,IAG9ChU,GAAKzI,KAAI4c,GAAS,GAKP,IAAXF,EAAeE,GAAS,EAAanU,EAAIiU,GAGtCE,GAAS,EAMbA,IACJnD,EAAUhS,IAAMA,EAEZqB,IAAK2Q,EAAU3Q,EAAIA,GACnB9I,IAAKyZ,EAAUzZ,EAAIA,GACnByI,IAAKgR,EAAUhR,EAAIA,GAClBA,GAAMzI,GAAM8I,IAAI2Q,EAAUzZ,EAAI,GACf,IAAhByZ,EAAUzZ,IAAUhW,EAAI6yB,OAAQ,GACpCpD,EAAUzvB,IAAMA,EAEhB0wB,EAAW90B,KAAK6zB,IAUlB,SAASqD,IAWR,IARAZ,EAAkBvE,GAGlB2E,EAAoB,GAGpBlpB,EAAQ,kBAEK,CAUZ,GAPAxK,EAAI0vB,EAAMyE,OAAOzjB,GAOH,kBAAVlG,EAOH,GAAImlB,EAAQ3vB,GACP0zB,IACHD,EAAYz2B,KAAK02B,GACjBA,EAAoB,GACpBlpB,EAAQ,wBAOH,IAAU,MAANxK,EAMV,OALA0Q,GAAO,EACHgjB,GACHD,EAAYz2B,KAAK02B,QAElBE,IAKM,GAAU,MAAN5zB,EACV0zB,GAAwC1zB,EACxCwK,EAAQ,gBAKF,IAAU,KAANxK,EAKV,OAJI0zB,GACHD,EAAYz2B,KAAK02B,QAElBE,IAMAF,GAAwC1zB,QAKnC,GAAc,cAAVwK,EAIV,GAAU,MAANxK,EACH0zB,GAAwC1zB,EACxCwK,EAAQ,oBAKF,IAAU,KAANxK,EAGV,OAFAyzB,EAAYz2B,KAAK02B,QACjBE,IAMAF,GAAwC1zB,OAInC,GAAc,qBAAVwK,EAIV,GAAImlB,EAAQ3vB,QAGL,IAAU,KAANA,EAEV,YADA4zB,IAMAppB,EAAQ,gBACRkG,GAAO,EAMTA,GAAO,GAST,OAAa,CAIZ,GAHA4iB,EAAkBtE,GAGdte,GAAOijB,EACV,OAAO7B,EAKRjT,EAAMyU,EAAkBrE,GAGxBwE,EAAc,GAKQ,MAAlB5U,EAAIvN,OAAO,IACduN,EAAMA,EAAI9e,QAAQmvB,EAAqB,IAEvC0E,KAIAM,KAsXWE,CAAYhzB,EAAI2rB,OAAQ3rB,IAE9BA,EAAIiyB,OAQZjG,EAAGiH,WAAa,WACf,IAAIhnC,EACJ,IAAM4/B,IAAW5/B,EAAOzC,EAASyC,MAAQ,CACxC,IAAIinC,EAAM1pC,EAASwd,cAAe,OACjCmsB,EAAkB5G,EAAQh7B,MAAM6hC,QAChCC,EAAkBpnC,EAAKsF,MAAM6hC,QAE9BF,EAAI3hC,MAAM6hC,QA7/BI,uJAigCd7G,EAAQh7B,MAAM6hC,QAAUjG,EACxBlhC,EAAKsF,MAAM6hC,QAAUjG,EAErBlhC,EAAKigB,YAAagnB,GAClBrH,EAASqH,EAAIz0B,YACbxS,EAAKmgB,YAAa8mB,GAGlBrH,EAASj3B,WAAYi3B,EAAQ,IAG7BU,EAAQh7B,MAAM6hC,QAAUD,EACxBlnC,EAAKsF,MAAM6hC,QAAUC,EAGtB,OAAOxH,GAAU,IAMlBG,EAAG4D,eAAiB,SAAU0D,GAI7B,KAAOA,KAAqBhG,IAAoBb,EAAI8G,GAAK,CACxD,IAAIC,EAAgBxH,EAAG4F,WAnYzB,SAAoB6B,GAUnB,IAMIvkC,EACAwkC,EACAC,EACAC,EACAC,EACA5zB,EAqFuCqR,EAhGvCwiB,EAA0B,0GAI1BC,EAAe,0CAgHnB,IAHAJ,GADAD,EA5FA,SAA8BM,GAC7B,IAAIC,EACA10B,EAAY,GACZ20B,EAAiB,GACjBC,EAAY,GACZC,EAAa,EACb9kB,EAAM,EACN+kB,GAAY,EAEhB,SAASC,IACJ/0B,IACH20B,EAAet4B,KAAK2D,GACpBA,EAAY,IAId,SAASg1B,IACJL,EAAe,KAClBC,EAAUv4B,KAAKs4B,GACfA,EAAiB,IAKnB,OAAa,CAGZ,GAAe,MAFfD,EAASD,EAAIjB,OAAOzjB,IAKnB,OAFAglB,IACAC,IACOJ,EACD,GAAIE,EAAJ,CACN,GAAgB,MAAXJ,GAAqC,MAAjBD,EAAI1kB,EAAM,GAAa,CAC/C+kB,GAAY,EACZ/kB,GAAO,EACPglB,IACA,SAEAhlB,GAAO,MAPF,CAUA,GAAIif,EAAQ0F,GAAS,CAI3B,GAAMD,EAAIjB,OAAOzjB,EAAM,IAAMif,EAASyF,EAAIjB,OAAOzjB,EAAM,MAAW/P,EAAY,CAC7E+P,GAAO,EACP,SACM,GAAmB,IAAf8kB,EAAkB,CAC5BE,IACAhlB,GAAM,EACN,SAGA2kB,EAAS,SAEJ,GAAe,MAAXA,EACVG,GAAc,OACR,GAAe,MAAXH,EACVG,GAAc,MACR,IAAe,MAAXH,EAAgB,CAC1BK,IACAC,IACAjlB,GAAO,EACP,SACM,GAAiB,MAAX2kB,GAA4C,MAAxBD,EAAIjB,OAAOzjB,EAAM,GAAc,CAC/D+kB,GAAY,EACZ/kB,GAAO,EACP,UAGD/P,GAAwB00B,EACxB3kB,GAAO,IAoBWklB,CAAqBf,IACG/hC,OAGvCxC,EAAI,EAAGA,EAAIykC,EAAyBzkC,IAkBxC,GAtC0CoiB,EAoC1CuiB,GAfAD,EAAeF,EAAkBxkC,IAeC0kC,EAAaliC,OAAS,GAnCpDoiC,EAAwBxrB,KAAKgJ,IAAO1c,WAAW0c,IAAM,GACrDyiB,EAAazrB,KAAKgJ,IAIX,MAANA,GAAqB,OAANA,GAAsB,OAANA,EAgCpC,CAUA,GATCrR,EAAO4zB,EACPD,EAAaa,MAQc,IAAxBb,EAAaliC,OAChB,OAAOuO,EAYR,GADA2zB,EAAeA,EAAa7S,KAAK,KAC3BiL,EAAGwF,aAAcoC,GAKvB,OAAO3zB,EAKR,MAAO,QAkN6By0B,CAAYpB,IAE/ChG,EAAiBgG,GAAuBE,GAAgBvpB,EAAM3c,MAG/D,OAAOggC,EAAiBgG,IAazBtH,EAAG2I,OAAS,SAAU30B,GACrB,IAAI0wB,EACJ,GAAK1wB,EAIJ,IAAM,IAAI9Q,EAAI,EAAG4xB,GAFjB4P,EAAa1E,EAAG2E,SAAU3wB,IAEQtO,OAAQxC,EAAI4xB,EAAK5xB,IAClDsgC,GAAekB,EAAYxhC,GAAK8Q,EAAIqrB,OAGtC,OAAOqF,GAGR1E,EAAG2I,OAAOjwB,IAAM8qB,GAEhBxD,EAAG4I,kBAAoB,SAAUlE,EAAYtF,GAC5C,GAAMsF,EAAWh/B,OAAjB,CACA,IAAI+9B,EACHvgC,EACAC,EACAuC,EACAmjC,EACAC,EACAC,EACAC,EACAC,EAt1BqBC,EAAYC,EAAaC,EAAUC,EACrDC,EAAsBC,EAAOC,EAu1B7BC,EAAYrK,EAAKY,EAAGgF,IACpB0E,EAAM1J,EAAGuB,IAwBb,GAtBAuH,EAASW,EAAUX,QAAU1J,EAAI0B,IAEjCiI,EAASU,EAAUV,QA/yBpB,SAAsB3J,EAAKhX,EAAKpU,GAC/B,IAAIyvB,EAiBJ,OAhBMzvB,GAAOoU,IAEZpU,GADAA,EAAMorB,EAAKY,EAAGgF,IAAK2E,OACN31B,EAAIA,EAAItO,OAAS,KAG/B+9B,EAAYgB,GAAmBrc,EAAKpU,MAGnCoU,EAAM4X,EAAG4E,QAAQxc,GACjBgX,EAAKY,EAAGgF,IAAK8D,OAAS1gB,EACtBgX,EAAKY,EAAGgF,IAAK+D,OAAStF,EAEhBA,EAAU/qB,KACf8qB,GAAeC,EAAWA,EAAUzvB,IAAIqrB,QAGnCoE,EA6xBsBmG,CAAYxK,EAAK0J,EAAQpE,EAAW,GAAG1wB,OAGrD+0B,EAAO/0B,MAAQ0wB,EAAY,GAAI1wB,OAI7Ci1B,EAAepI,IAAiBzB,EAAIkG,UAAYyD,EAAOrwB,IAAM,GAAMgxB,KAGlEX,EAAOc,QAAS,EAIXd,EAAOrwB,KAAOgxB,IAClBb,EAAgBE,MAKbF,EAOL,IALAnE,EAAWoF,KAAMtF,IAGjBqE,EAAgBnE,GADhBh/B,EAASg/B,EAAWh/B,QACiB,GAE/BxC,EAAI,EAAGA,EAAIwC,EAAQxC,IAExB,IADAugC,EAAYiB,EAAYxhC,IACTwV,KAAOgxB,EAAM,CAS1Bb,EAJGnE,EAJJvhC,EAAID,EAAI,KAKN+lC,GAAeH,IAAW9I,EAAG4E,QAASnB,EAAUhS,QAh4B/ByX,EAi4BLxE,EAAYvhC,GAAIuV,IAj4BCywB,EAi4BI1F,EAAU/qB,IAj4BD0wB,EAi4BMM,EAj4BIL,EAi4BC3E,EAAYvhC,GAAI0mC,OAh4BtEP,SAAsBC,SAAOC,SAGX,aAAlB/I,EAAIC,UACFwI,EAAa,IACjBM,EAAcJ,EAAW,GAKzBG,GAHUJ,EAAcC,IACxBE,EAAc5pC,KAAKqqC,IAAIb,EAAa,GAAK,MAIrCG,IACHE,GAAS,GAAMD,GAGhBE,EAAcN,EAAaK,GAG5BC,EAAeJ,EAAW,EACzB1pC,KAAK0E,KAAK8kC,EAAaC,GACvBD,EAGKM,EAAcJ,GA02BD1E,EAAYvhC,GAGZsgC,EAEjB,MAKEoF,IAEJG,EAAehJ,EAAG4E,QAASiE,EAAcpX,KAEzCgY,EAAUX,OAASE,EACnBS,EAAUV,OAASF,EAEdG,IAAiBF,GACrB9I,EAAGgK,OAAQ5K,EAAKyJ,GAEjB7I,EAAGuF,QAASnG,MAIdY,EAAGgK,OAAS,SAAU5K,EAAKyJ,GAC1B,IAAIoB,EACJ7K,EAAIhX,IAAMygB,EAAcpX,IAGQ,kBAA3BoX,EAAc70B,IAAI+D,OACtBkyB,EAAY7K,EAAI75B,MAAMjE,MACtB89B,EAAI75B,MAAMjE,MAAS89B,EAAI3sB,YAAc,EAAK,KAIrC2sB,EAAI3sB,YAAc,IACtB2sB,EAAI75B,MAAMjE,MAAQ2oC,KAKrBjK,EAAGkK,OAAS,SAAU9K,GACrB,IAAIl8B,EAAG8Q,EAAK8xB,EACR5G,GAAQ,EACRyK,EAAOvK,EAAMY,EAAGgF,IAAK2E,KAEzB,IAAMzmC,EAAI,EAAGA,EAAIymC,EAAKjkC,SAAWw5B,EAAOh8B,IAGvC,IAFA8Q,EAAM21B,EAAKzmC,IAEDy8B,QAAWK,EAAGwF,aAAcxxB,EAAI0xB,SAAaI,EAAe9F,EAAG8F,aAAc9xB,EAAI+D,OAA3F,CAIsB,YAAjB+tB,IACJ9xB,EAAM8xB,GAGP5G,EAAQlrB,EACR,MAGD,OAAOkrB,GAGRc,EAAGmK,UAAY,SAAUntC,EAASgV,EAAQrL,GACzC,IAAIyjC,EAAiBC,EAAUC,EAAcC,EAEzCC,EAAax4B,GAA4C,YAAlCA,EAAOiL,SAAS7V,cACvCqiC,EAAYzsC,EAASgjC,EAAGgF,KAEvByE,EAAUrhB,MAAQpZ,GAAarI,EAAQyhB,OAC3CqhB,EAAUrhB,IAAMgY,EAAW3mB,KAAMzc,EAAS,OACrCysC,EAAUrhB,IACdiY,EAAW5mB,KAAMzc,EAAS2jC,EAAS8I,EAAUrhB,KAE7CkY,EAAc7mB,KAAMzc,EAAS2jC,KAI1B8I,EAAU9J,SAAW3wB,GAAarI,EAAQg5B,SAAWK,EAAGmF,WAAanoC,EAAQ2iC,UACjFyK,EAAkBhK,EAAW3mB,KAAMzc,EAAS,UAC5CysC,EAAU9J,OAASyK,EACnBG,GAAe,GAGhBd,EAAUE,KAAO,GAEZa,IACJf,EAAUgB,KAAM,EAz4BlB,SAA+BnL,EAASoF,GACvC,IAAIxhC,EAAG4xB,EAAKc,EAAQ+J,EAKhB+K,EAAUpL,EAAQxwB,qBAAsB,UAE5C,IAAM5L,EAAI,EAAG4xB,EAAM4V,EAAQhlC,OAAQxC,EAAI4xB,EAAK5xB,KAC3C0yB,EAAS8U,EAASxnC,IACV88B,EAAGgF,KAAO,GAClBrF,EAAS/J,EAAOh3B,aAAc,YAI7B8lC,EAAW90B,KAAM,CAChB+vB,OAAQA,EACR+F,MAAO9P,EAAOh3B,aAAc,SAC5BmZ,KAAM6d,EAAOh3B,aAAc,QAC3BygC,MAAOzJ,EAAOh3B,aAAc,WAu3B9B+rC,CAAsB34B,EAAQy3B,EAAUE,OAGpCF,EAAU9J,QACd0K,EAAW,CACV1K,OAAQ8J,EAAU9J,OAClBN,MAAOe,EAAW3mB,KAAMzc,EAAS,UAGlCysC,EAAUE,KAAK/5B,KAAMy6B,IAErBC,GAAgBxK,GAA0B2J,EAAUrhB,MAAQ2Y,EAASzkB,KAAKmtB,EAAU9J,QAAU,OAGxE8J,EAAUrhB,KAAQqc,GAAmBgF,EAAUrhB,IAAKiiB,IAAcA,EAASxD,QAChGwD,EAAS1K,QAAU,KAAO8J,EAAUrhB,IACpCiiB,EAASpE,MAAMr2B,KAAK,CACnB6hB,IAAKgY,EAAUrhB,IACf4B,EAAG,EACHhW,IAAKq2B,MAIIZ,EAAUrhB,KACrBqhB,EAAUE,KAAK/5B,KAAM,CACpB+vB,OAAQ8J,EAAUrhB,IAClBiX,MAAO,OAIToK,EAAUV,OAAS,KACnBU,EAAUX,OAAS95B,EAInBy6B,EAAUmB,YAAeJ,GAAgBH,IAAarK,EAAGmF,WAAgBmF,IAAiBtK,EAAGoF,UAExFmF,GAAgBvK,EAAGmF,YAAcsE,EAAUmB,YAC1CR,GACJ/J,EAAW5mB,KAAMzc,EAAS4jC,EAAYwJ,GACtCptC,EAAQ2iC,OAAS,IAEjBW,EAAc7mB,KAAMzc,EAAS4jC,IAI3B6I,EAAUmB,YAAcnB,EAAU9J,UAAa8J,EAAUrhB,KAAOprB,EAAQorB,KAASprB,EAAQorB,MAAQ4X,EAAG4E,QAAQ6E,EAAUrhB,QACnG,OAAlBqhB,EAAUrhB,IACbprB,EAAQyS,gBAAgB,OAExBzS,EAAQorB,IAAMqhB,EAAUrhB,KAI1BqhB,EAAUtrB,QAAS,GAGpB6hB,EAAGsE,QAAU,SAAStnC,EAAS2J,GAC9B,IAAI8iC,EACAoB,EAAUlkC,EAAQu9B,UAAYv9B,EAAQs9B,WAGpCjnC,EAASgjC,EAAGgF,MACjBhoC,EAASgjC,EAAGgF,IAAO,IAGpByE,EAAYzsC,EAASgjC,EAAGgF,KAKlB6F,GAAWpB,EAAUqB,SAAW/K,KAIhC0J,EAAUtrB,SAAUxX,EAAQs9B,YACjCjE,EAAGmK,UAAWntC,EAASA,EAAQ4f,WAAYjW,GAGtC8iC,EAAUmB,UAGfnB,EAAUqB,OAAS/K,EAlhCrB,SAA6BX,GAC5B,IAAI2L,EACAC,EAAchL,EAAGkK,OAAQ9K,GACzB6L,GAAY,EACK,YAAhBD,IACJC,EAAYlL,EACPiL,IACJD,EAAmB/K,EAAG2I,OAAQqC,GAC9BhL,EAAG4I,kBAAmBmC,EAAkB3L,KAG1CA,EAAKY,EAAGgF,IAAK8F,OAASG,EAqgCrBC,CAAoBluC,KAMtBgjC,EAAGqE,SAAW,WACP3C,IAAcN,GAAcG,IAAQ3jC,EAAO4jC,mBAtkCjDJ,GAAY,EACZG,EAAM3jC,EAAO4jC,iBACbH,EAAW,GACXC,EAAkB,GAElBtB,EAAGuB,IAAMA,GAAO,EAEhBtjB,EAAM3c,MAAQ5B,KAAKsK,IAAIpM,EAAOmK,YAAc,EAAGw4B,EAAQ39B,aACvDqb,EAAM1c,OAAS7B,KAAKsK,IAAIpM,EAAOoL,aAAe,EAAGu3B,EAAQr3B,cAEzD+U,EAAMktB,GAAKltB,EAAM3c,MAAQ,IACzB2c,EAAMmtB,GAAKntB,EAAM1c,OAAS,IAE1Bw+B,EAAS,CAAE9hB,EAAM1c,OAAQ0c,EAAM3c,MAAOigC,GAAMxM,KAAK,KAEjD9W,EAAMotB,GAAKrL,EAAGiH,aACdhpB,EAAMqtB,IAAMrtB,EAAMotB,KA4jCdrL,EAAGqF,YACPxB,GAAc3D,EACdF,EAAGsE,QAAUpE,IAMR+C,GAAWrlC,EAAOwkC,YAAc,QAAU,WAE1Cc,GAAM,SAANA,IACH,IAAItD,EAAapiC,EAASoiC,YAAc,GAExCuD,GAAU9kC,WAAW6kC,EAAoB,YAAftD,EAA2B,IAAO,KACvDpiC,EAASyC,OACb+/B,EAAGuL,YACH3I,EAAaA,GAAcK,GAAS3mB,KAAKsjB,KAExC/8B,aAAcsgC,MAMbA,GAAU9kC,WAAW6kC,GAAK1lC,EAASyC,KAAO,EAAI,IAyB9CmjC,GAAkB7C,EAAQr3B,aAS9B+4B,EAAIrkC,EAAQ,UA9BYilC,EAsBT,WACdzB,EAAY1hC,KAAKsK,IAAIpM,EAAOmK,YAAc,EAAGw4B,EAAQ39B,eAAiBqb,EAAM3c,OAASi/B,EAAQr3B,eAAiBk6B,GAC9GA,GAAkB7C,EAAQr3B,aACrBk4B,GACJpB,EAAGuL,YAIoC,GA5BpCvI,GAAQ,SAARA,IACH,IAAIwI,EAAQ,IAAIvG,KAAUlC,GAEtByI,EAyBmC,GAxBtC1I,GAAUzkC,WAAW2kC,EAwBiB,GAxBHwI,IAEnC1I,GAAU,KACVD,MAIK,WACNE,GAAY,IAAIkC,KAEXnC,KACJA,GAAUzkC,WAAW2kC,GAaiB,QACzCf,EAAIzkC,EAAU,mBAAoB0lC,KAIpClD,EAAG6D,YAAcA,GAEjB7D,EAAGuL,SAAW1H,GACd7D,EAAGuE,YAAcrE,EAGjB2D,GAAY4H,EAAIzL,EAEhBpiC,EAAOsjC,eAAiB,CACvBlB,GAAIA,EACJpwB,KAAM,SAAS4J,GACd,IAAI7F,EAAO6F,EAAKkyB,QACQ,mBAAb1L,EAAGrsB,GACbqsB,EAAGrsB,GAAMV,MAAM+sB,EAAIxmB,IAEnBinB,EAAI9sB,GAAQ6F,EAAK,GACbkoB,GACH1B,EAAGuL,SAAU,CAAErH,UAAU,OAM7B,KAAOjD,GAAcA,EAAWv7B,QAC/B9H,EAAOsjC,eAAetxB,KAAKqxB,EAAWyK,SAIvC9tC,EAAOimC,YAAcA,GAGE,WAAlB,EAAOjQ,IAAiD,WAA1B,EAAOA,EAAOC,SAEhDD,EAAOC,QAAUgQ,IAGjB8H,aAAoC,OAAO9H,IAArC,kCAID7D,EAAGqF,aACR7E,EAAO,cA5sCR,SAA4BzoB,EAAM6zB,GAGjC,IAAIzL,EAAQ,IAAIviC,EAAOiuC,MAUvB,OATA1L,EAAM9X,QAAU,WACfmY,EAAOzoB,IAAS,EAChB8rB,MAED1D,EAAM3X,OAAS,WACdgY,EAAOzoB,GAAyB,IAAhBooB,EAAM7+B,MACtBuiC,MAED1D,EAAM/X,IAgsCkD,0IA/rCjD,UA+rCiB0jB,CAAkB,eAr7C5C,CAw7CKluC,OAAQJ,W,0EC/vCE,SACXuuC,EACAplC,GAEA,OAAO,IAAIqlC,EAAcD,EAAgBplC,I,8CA5Q7C,cACA,UACA,UACA,UACA,UACA,U,8+BAiBaqlC,E,WAyBT,WACYC,EACRtlC,GACF,0BA3BMulC,SAAiC,CACrCnvC,UAAW,oBACXovC,iBAAkB,4BAClBC,UAAW,IACXC,kBAAmB,IAEnBC,OAAQ,CACJC,iBAAkB,IAClBC,QAAQ,IAmBd,KAbMC,eAAyB,sBAa/B,KATMvnC,cAA+B,KASrC,KAPMwnC,aAAenvC,KAAK6N,cAAcsX,KAAKnlB,MAO7C,KALMovC,mBAAoB,IAAAl7B,uBAAsB,sBAKhD,KAFUw6B,kBAGR1uC,KAAK2uC,SAAL,OAAqB3uC,KAAK2uC,UAAavlC,GAEnCpJ,KAAK2uC,SAASE,UACd/tC,YAAW,kBAAM,EAAK6sB,UAAS3tB,KAAK2uC,SAASE,WAE7C7uC,KAAK2tB,Q,qDAIG,WACN0hB,EAASrvC,KAAKsvC,aAEhBD,IACArvC,KAAKuvC,WAAaF,EAAOhuC,aAAa,mBAElCrB,KAAKuvC,aACL5uC,MAAMC,KACFX,SAASC,uBACLF,KAAK2uC,SAASC,mBAEpBxmC,SAAQ,SAAAonC,GAAM,OACZA,EAAOrvC,iBAAiB,SAAS,SAAAgN,GAAK,OAClC,EAAKD,aAAaC,GAAO,SAIjCnN,KAAKovC,kBAAkBC,EAAQ,QAE/BrvC,KAAKL,SACD0vC,EACA,EACAA,EAAOrd,aACPhyB,KAAK2uC,SAASG,mBACd,WACI,EAAKjhC,gBAELxN,OAAOF,iBAAiB,SAAU,EAAKgvC,cAEvC,EAAKC,kBAAkBC,EAAQ,gB,+BAsB/CA,EACA38B,EACAC,EACAhI,EACAo9B,GACF,WACE,GAAIsH,EAAQ,CAER,IAAI/iB,EACA7Z,EAEEia,EAAO,SAAPA,EAAOC,GACTla,EAAcka,EAAOL,EAErB+iB,EAAOrnC,MAAMhE,OAAb,WAAyB,IAAAyrC,eACrBh9B,EACAC,EACAC,EACAhI,GAJJ,MAQA,EAAKkD,gBAED4E,EAAc9H,EACdiH,sBAAsBsK,KAAK7b,OAAQqsB,IAEnC2iB,EAAOrnC,MAAMhE,OAAS,KACtB+jC,MAIRn2B,sBAAsBsK,KAAK7b,QAAQ,SAAAssB,GAC/BL,EAAYK,GAEZ,IAAA5pB,UAASssC,EAAQ,UACjB3iB,EAAKC,S,mCAMb,OAAO1sB,SAASC,uBACZF,KAAK2uC,SAASnvC,WAChB,K,8BAGU6vC,GAERA,GACArvC,KAAK0vC,WAAWzvC,SAASyC,KAAM,iBAAiB,GAChD1C,KAAK2vC,cAAa,KAElB3vC,KAAK0vC,WAAWzvC,SAASyC,KAAM,iBAAiB,GAChD1C,KAAK2vC,cAAa,M,mCAILhsB,GAAiB,WAC9B3jB,KAAK0uC,iBACL1uC,KAAK0uC,gBAAgBtmC,SAAQ,SAAAwnC,GAAM,OAC/B,EAAKF,WAAWE,EAAQ,SAAUjsB,Q,iCAK3BisB,EAAqB5nC,EAAe2b,GACnD,IAAMksB,EAAgB,GAAH,OAAM7vC,KAAKkvC,eAAX,YAA6BlnC,GAEhD,GAAK2b,GAIE,GAAIisB,EAAOE,aAAaD,GAAgB,CAC3C,IAAME,EAAalvB,OAAO+uB,EAAOvuC,aAAawuC,IAG1CD,EAAO5nC,MAAMA,GADb+nC,GAAcA,EAAa,EAC3B,UAAyBA,EAAzB,MAEsB,KAG1BH,EAAO19B,gBAAgB29B,QAbd,CACT,IAAME,GAAa,IAAAhuC,eAAa,IAAAC,QAAO4tC,EAAQ5nC,IAC/C4nC,EAAOnnC,aAAaonC,EAAeE,EAAW7+B,YAC9C0+B,EAAO5nC,MAAMA,GAAb,UAAyB+nC,EAAa/vC,KAAK6I,QAA3C,S,mCAcasE,EAAc6iC,GAC/B7iC,EAAME,iBAEF2iC,GACAhwC,KAAKiwC,aAGT,IAAMZ,EAASrvC,KAAKsvC,aAEhBD,IACArvC,KAAKovC,kBAAkBC,EAAQ,QAI/BA,EAAO7mC,cAAcqa,YAAYwsB,GAEjCrvC,KAAKovC,kBAAkBC,EAAQ,UAG/BrvC,KAAK6C,UAGLxC,OAAOR,oBAAoB,SAAUG,KAAKmvC,iB,mCAK9C,IAAKnvC,KAAKuvC,WACN,MAAM,IAAIp5B,MAAJ,sDAKV,IAAM+5B,EAAO,IAAIxI,KACjBwI,EAAKC,QACDD,EAAKE,WAAapwC,KAAK2uC,SAASI,OAAOC,kBAAoB,OAG/D,IAAAgB,WACIhwC,KAAKuvC,WACL,OACAW,EACAlwC,KAAK2uC,SAASI,OAAOE,OACrBjvC,KAAK2uC,SAASI,OAAO9Y,KACrBj2B,KAAK2uC,SAASI,OAAOsB,U,sCAKzB,IAAMhB,EAASrvC,KAAKsvC,aAEhBD,IACArvC,KAAK6I,QAAU1G,KAAKC,MAAMitC,EAAO/nC,wBAAwBtD,QAErDhE,KAAK2H,gBAAkB3H,KAAK6I,UAC5B7I,KAAK0vC,WAAWzvC,SAASyC,KAAM,iBAAiB,GAChD1C,KAAK2vC,cAAa,GAElB3vC,KAAK2H,cAAgB3H,KAAK6I,QAC1B7I,KAAK6C,QAAQwsC,GAEbrvC,KAAKovC,kBAAkBC,EAAQ,iB,yHCrMxC,SACHtK,GAEA,OAAKA,IAAU,IAAAtkC,UAASskC,EAAO,8BAIxB9kC,SAASiB,cAAT,sBACY6jC,EAAM3uB,KADlB,sCAHI,M,iBAjEf,I,EAAA,UAEA,U,0KAKqBk6B,GADpB,IAAA/wC,WAAU,CAAEC,UAAW,sBAAuBkK,SAAS,G,cAapD,WAAoBjK,I,4FAA2B,cAA3BA,U,sDAEX,WACLO,KAAKuwC,SAAW,CACZC,KAAM,CACFC,cAAezwC,KAAKP,QAAQ4B,aAAa,uBACzCqvC,UAAW1wC,KAAKP,QAAQ4B,aAAa,mBACrCsvC,OAAQC,KAAKC,MAAM7wC,KAAKP,QAAQ4B,aAAa,gBAC7CyvC,SAAUF,KAAKC,MACX7wC,KAAKP,QAAQ4B,aAAa,kBAE9B0vC,cAAeH,KAAKC,MAChB7wC,KAAKP,QAAQ4B,aAAa,yBAGlC2vC,UAAWJ,KAAKC,MAAM7wC,KAAKP,QAAQ4B,aAAa,qBAGpD4vC,OAAOC,OAAOlxC,KAAKP,QAAQ4B,aAAa,gBAExC,IAAI8vC,QAAQ,CACRC,MAAOpxC,KAAKP,QACZuxC,UAAWhxC,KAAKuwC,SAASS,UACzBR,KAAMxwC,KAAKuwC,SAASC,KACpBa,OAAQ,aACRC,SAAU,SAAApB,GACN,IAAMqB,EAAetxC,SAASO,eAAT,UACd,EAAKf,QAAQ+Q,GADC,YAIrB+gC,EAAax6B,MAAQm5B,EACfe,OAAOf,GAAMmB,OAAO,cACpB,KAEN,IAAMlkC,EAAQlN,SAASgyB,YAAY,cACnC9kB,EAAM+kB,UAAU,UAAU,GAAO,GACjCqf,EAAatxB,cAAc9S,W,iHC+qB5B,SACX2c,EACA1gB,GAEA,OAAO,IAAIooC,EAAW1nB,EAAS1gB,I,wCA1uBnC,cACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACA,UACA,U,2+BAgDaooC,E,WA6DT,WAAoB1nB,EAAsB1gB,GAA6B,0BA5D/DqoC,mBAAoB,EA4D2C,KA/C/DC,WAAqB,GA+C0C,KA9C/DC,KAAe,EA8CgD,KA7C/DC,SAAmB,QA6C4C,KA3C/DjD,SAA8B,CAClCkD,UAAW,CACPC,QAAS,2BACTC,QAAS,oBACTC,UAAW,yBACX9T,IAAK,iBACL+T,YAAa,2BACb5pC,SAAU,sBACV6pC,eAAgB,6BAChBC,aAAc,0BACdC,WAAY,yBACZC,aAAc,2BACdC,OAAQ,qBACRC,aAAc,6BACdC,UAAW,wBACXC,2BAA4B,wBAEhCC,OAAQ,CACJC,SAAU,uBACVC,SAAU,uBACVC,SAAU,uBACVC,kBAAmB,aACnBpB,WAAY,oBAEhBqB,QAAS,CACLC,eACI,oDACJC,eAAgB,GAEpB5lB,QAAS,CACLzY,OAAQ,WACRs+B,OAAQ,WACRC,cAAe,oBAEnBC,gBAAiB,gBACjBC,UAAW,UACXC,gBAAiB,cACjBC,SAAU,aACVC,2BAA2B,EAC3BC,wBAAwB,GAI2C,KAAnD3pB,UAChB9pB,KAAK0zC,eAAiB5pB,EACtB9pB,KAAK2uC,SAAL,OAAqB3uC,KAAK2uC,UAAavlC,GACvC,IAAIuqC,EAAe1zC,SAASyL,gBAAgBkoC,KAC9CD,GAAgBA,EAAaxrC,OAAS,IACzCnI,KAAK4xC,SAAW+B,GAEX3zC,KAAKsD,OAELjD,OAAOF,iBAAiB,cAAc,kBAAM,EAAK6L,YAEjDhM,KAAKgM,SAELhM,KAAK6zC,oB,oDAGM,WA4CX,GA3CA7zC,KAAKqzC,UAAYxyB,OACb7gB,KAAK0zC,eAAeryC,aAAarB,KAAK2uC,SAAS0E,YAEnDrzC,KAAK0xC,WAAa7wB,OACd7gB,KAAK0zC,eAAeryC,aAAarB,KAAK2uC,SAAS+D,OAAOhB,aAE1D1xC,KAAKozC,gBAAkBpzC,KAAK0zC,eAAeryC,aACvCrB,KAAK2uC,SAASyE,iBAElBpzC,KAAK8zC,eAA8B9zC,KAAK0zC,eAAexzC,uBACnDF,KAAK2uC,SAASkD,UAAUC,SAC1B,GACF9xC,KAAK+xC,QAAUpxC,MAAMC,KACjBZ,KAAK0zC,eAAexzC,uBAChBF,KAAK2uC,SAASkD,UAAUE,UAGhC/xC,KAAK+zC,KAAOpzC,MAAMC,KACdZ,KAAK0zC,eAAexzC,uBAChBF,KAAK2uC,SAASkD,UAAU3T,MAGhCl+B,KAAKg0C,aAAeh0C,KAAK+zC,MAAQ/zC,KAAK+zC,KAAK5rC,OAAS,EAAInI,KAAK+zC,KAAK/nC,QAAO,SAAAC,GAAC,OAAI,IAAAxL,UAASwL,EAAG,EAAK0iC,SAASkD,UAAUI,gBAAgB,KAClIjyC,KAAKi0C,gBAAoCj0C,KAAK0zC,eAAexzC,uBACzDF,KAAK2uC,SAASkD,UAAUO,YAC1B,GACFpyC,KAAKk0C,QAAUvzC,MAAMC,KACjBZ,KAAK0zC,eAAexzC,uBAChBF,KAAK2uC,SAASkD,UAAUS,SAGhCtyC,KAAKyyC,2BAA6B9xC,MAAMC,KACpCZ,KAAK0zC,eAAexzC,uBAChBF,KAAK2uC,SAASkD,UAAUY,6BAIhCzyC,KAAK+zC,KAAK3rC,SAAQ,SAAA81B,IACT,IAAAz9B,UAASy9B,EAAK,EAAKyQ,SAASkD,UAAUG,YACvC9T,EAAI/9B,iBAAiB,SAAS,kBAAM,EAAKg0C,UAAUjW,SAI/B,MAAxBl+B,KAAKi0C,kBACLj0C,KAAKo0C,iBAAgCp0C,KAAKi0C,gBAAgBzrC,cAActI,uBACpEF,KAAK2uC,SAASkD,UAAUQ,cAC1B,GAEFryC,KAAKi0C,gBAAgB9zC,iBAAiB,YAAY,SAAA8F,GAElC,MADAA,EAAEouC,OAASpuC,EAAEyoB,UAGrB,EAAK4lB,wBAIgB,MAAzBt0C,KAAKo0C,kBACLp0C,KAAKo0C,iBAAiBj0C,iBAAiB,SAAS,kBAC5C,EAAKm0C,wBAITtzC,SAASuzC,OAAOpsC,OAAS,GAA8B,MAAzBnI,KAAKo0C,kBAA0B,CAC7D,IAAMI,EAAexzC,SAASuzC,OAAOpzC,UAAU,GAAG8zB,MAAM,KACxD,IAAK,IAAM3T,KAASkzB,EAChB,GAAIA,EAAalzB,KAAWthB,KAAK2uC,SAAS2E,gBAAiB,CACvD,IAAImB,EAAkBD,EAAa3zB,OAAOS,GAAS,GAE3B,OAApBmzB,GACoB,KAApBA,IAEAA,EAAkBC,mBACdD,IAGRz0C,KAAKi0C,gBAAgBl9B,MAAQ09B,EAC7B,MAGMp0C,OAAOW,SAASuzC,OAAOpzC,UAAU,GAGrCgH,aAGiBsJ,IAAnBpR,OAAOs0C,cACsBljC,IAA7BpR,OAAOs0C,QAAQC,WAGfv0C,OAAOs0C,QAAQC,UACX,GACA30C,SAAS40C,MACTx0C,OAAOW,SAAS8zC,UAOhC90C,KAAK+xC,SAAW/xC,KAAK+xC,QAAQ5pC,OAAS,GACtCnI,KAAK+xC,QAAQ3pC,SAAQ,SAAAY,GACjBA,EAAO7I,iBAAiB,SAAU,EAAK40C,aAI3C/0C,KAAKk0C,SAAWl0C,KAAKk0C,QAAQ/rC,OAAS,GACtCnI,KAAKk0C,QAAQ9rC,SAAQ,SAAA4sC,GAAM,OACvBA,EAAO70C,iBAAiB,SAAS,kBAC7B,EAAK80C,aACD,IAAAC,oBACiBF,EACb,kCAQhBh1C,KAAKyyC,4BACLzyC,KAAKyyC,2BAA2BtqC,OAAS,GAEzCnI,KAAKyyC,2BAA2BrqC,SAAQ,SAAA+sC,GAAS,OAC7CA,EAAUh1C,iBAAiB,SAAS,kBAChC,EAAKi1C,6B,+BAMJjoC,GACbnN,KAAKq1C,gBAAgBloC,EAAM7L,U,0CAGJ,WACjBm2B,EAAOz3B,KACb,GAA2B,MAAvBA,KAAK8zC,eAAwB,CAC7B,IAAMwB,EAAa30C,MAAMC,KACrBZ,KAAK8zC,eAAe5zC,uBAChBF,KAAK2uC,SAASkD,UAAUE,UAG1BwD,EAAU50C,MAAMC,KAClBZ,KAAK8zC,eAAe5zC,uBAChBF,KAAK2uC,SAASkD,UAAU3T,MAI5BqX,GAAWA,EAAQptC,OAAS,GAC5BotC,EAAQntC,SAAQ,SAAA81B,IACP,IAAAz9B,UAASy9B,EAAK,EAAKyQ,SAASkD,UAAUG,YACvC9T,EAAI/9B,iBAAiB,SAAS,kBAC1B,EAAKg0C,UAAUjW,MAGvBzG,EAAKsc,KAAK1hC,KAAK6rB,MAGnBoX,GAAcA,EAAWntC,OAAS,GAClCmtC,EAAWltC,SAAQ,SAAAY,GACfA,EAAO7I,iBAAiB,UAAU,kBAC9B,EAAKk1C,gBAAgBrsC,MAEzByuB,EAAKsa,QAAQ1/B,KAAKrJ,S,2CAMyB,WAAhCwsC,IAAgC,yDACnDA,GACAx1C,KAAKy1C,mBAET,IAAMrD,EACsB,MAAxBpyC,KAAKi0C,gBAA0Bj0C,KAAKi0C,gBAAgBl9B,MAAQ,GAC1D2+B,EACF,MACA11C,KAAKqzC,UACL,WACArzC,KAAK21C,aACL,eACA31C,KAAK0xC,WACL,SACA1xC,KAAK2xC,KACL,eACAS,EAEJpyC,KAAK8zC,eAAetrC,cAAcR,MAAMgK,SAAW,SACnDhS,KAAK8zC,eAAep2B,UAAY1d,KAAK2uC,SAASoE,QAAQC,eAEtD4C,MAAM,oBAAsB51C,KAAKozC,gBAAiB,CAC9CyC,OAAQ,OACRC,QAAS,CACL,eAAgB,oCAEhB,kBAAmB91C,KAAK4xC,SAExB,mBAAoB,kBAExBlvC,KAAMgzC,IAELK,MAAK,SAAAC,GACF,IAAMC,EAAcD,EAASF,QAAQh+B,IAAI,gBACzC,GAAIm+B,GAAeA,EAAYC,SAAS,aACpC,OAAOF,EAASjpB,UAGvBgpB,MAAK,SAAAhjC,GACU,MAARA,GAAgBA,EAAK5K,OAAS,IAC9B,EAAK2rC,eAAetrC,cAAcR,MAAMgK,SAAW,KACnD,EAAK8hC,eAAep2B,UAAY3K,EAChC,EAAKojC,gCAEL,EAAKC,eACL9P,cAII,EAAKqI,SAAS6E,0BACdnzC,OAAOgC,SAAS,EAAG,GAEY,GAA1B,EAAKovC,mBACV,EAAK9xC,WAET,EAAK8xC,mBAAoB,EACehgC,MAArC,EAAKk9B,SAAS0H,qBAAyE,MAArC,EAAK1H,SAAS0H,qBAC/D,EAAK1H,SAAS0H,4B,iCAO9B,IAAM52C,EAAUO,KAAK0zC,eAErB,GAAIj0C,EAAS,CACT,IAAImC,GAAS,IAAAC,WAAUpC,GAASqC,MAEhCF,IAAyD,GAA/C,IAAAG,eAAa,IAAAC,QAAOvC,EAAS,iBACnC,IAAAyC,UAAuB,IAAX,IAAAA,UAAoBlC,KAAK2uC,SAAS8E,0BAC9C7xC,IAA+B,GAArB,IAAAK,oBAGdL,EAASO,KAAKC,MAAMR,GAEpBvB,OAAOgC,SAAS,EAAGT,M,qCAKvB,GAA2B,KAAtB5B,KAAK21C,cAAyB,EAAM,CACrC,IAAMW,EAAer2C,SAASC,uBAAuB,wBAAwB,GAC7E,GAAIo2C,EAAc,CACd,IAAM/lC,EAAStQ,SAASC,uBAAuB,YAAY,GAC3D,GAAIqQ,EAAQ,CACR,IAAIgmC,EAAqB,EACrBhmC,EAAOvI,MAAMlG,MACby0C,EAAqB7iB,SAASnjB,EAAOvI,MAAMlG,IAAK,KAEpD,IAAMF,GAAkC,EAAvB2O,EAAOyhB,aAAqBukB,EAAqB,IAClE,IAAAC,iBAAgBF,OAAc7kC,EAAW,EAAG7P,Q,uCAMnCuL,GACrBA,EAAME,iBACNrN,KAAK2xC,KAAO3xC,KAAK2xC,KAAO,GAAK,EAAI3xC,KAAK2xC,KAAO,EAAI,EACjD3xC,KAAKs0C,oBAAmB,K,mCAGPnnC,GACjBA,EAAME,iBACNrN,KAAK2xC,KAAO3xC,KAAK2xC,KAAO,EACxB3xC,KAAKs0C,oBAAmB,K,mCAGPnnC,GACjBA,EAAME,iBACN,IAAM5N,EAAU0N,EAAM7L,QAAU6L,EAAMkH,cACtCrU,KAAK2xC,KAAO9wB,OACRphB,EAAQ4B,aAAarB,KAAK2uC,SAAS+D,OAAOI,oBAE9C9yC,KAAKs0C,oBAAmB,K,sDAGY,WAC9B3B,EAAWhyC,MAAMC,KACnBZ,KAAK8zC,eAAe5zC,uBAChBF,KAAK2uC,SAAS+D,OAAOC,WAGvBC,EAAWjyC,MAAMC,KACnBZ,KAAK8zC,eAAe5zC,uBAChBF,KAAK2uC,SAAS+D,OAAOE,WAIvBC,EAAWlyC,MAAMC,KACnBZ,KAAK8zC,eAAe5zC,uBAChBF,KAAK2uC,SAAS+D,OAAOG,WAIzBF,EAASxqC,OAAS,GAClBwqC,EAASvqC,SAAQ,SAAAquC,GAAQ,OACrBA,EAASt2C,iBAAiB,SAAS,SAAA8F,GAAC,OAChC,EAAKywC,iBAAiBzwC,SAI9B2sC,EAASzqC,OAAS,GAClByqC,EAASxqC,SAAQ,SAAAquC,GAAQ,OACrBA,EAASt2C,iBAAiB,SAAS,SAAA8F,GAAC,OAAI,EAAK0wC,aAAa1wC,SAI9D4sC,EAAS1qC,OAAS,GAClB0qC,EAASzqC,SAAQ,SAAAquC,GAAQ,OACrBA,EAASt2C,iBAAiB,SAAS,SAAA8F,GAAC,OAAI,EAAK2wC,aAAa3wC,W,yCAMlEjG,KAAK2xC,KAAO,I,+BAIZ3xC,KAAKo2C,eACLp2C,KAAKs0C,uB,qCAILt0C,KAAK62C,WAAa72C,KAAK82C,0BACvB92C,KAAK+2C,QAAU,GACf/2C,KAAKg3C,uBACLh3C,KAAKi3C,+B,6CAGsB,WAC3Bj3C,KAAK+zC,KAAK3rC,SAAQ,SAAA81B,GACd,IAAMiU,GAAe,IAAA+C,oBACJhX,EACb,EAAKyQ,SAASkD,UAAUM,cAER,MAAhBA,KACI,IAAA1xC,UAASy9B,EAAK,EAAKyQ,SAASkD,UAAUW,YACtC,IAAAzvC,UAASm7B,EAAI11B,cAAe,EAAKmmC,SAASthB,QAAQ6lB,SAElD,IAAApwC,aACIo7B,EAAI11B,cACJ,EAAKmmC,SAASthB,QAAQ6lB,SAK9B,EAAKgE,YAAYhZ,IACG,MAAhBiU,EACA,EAAKgF,iBAAiBhF,KAEtB,IAAApvC,UAASm7B,EAAK,EAAKyQ,SAASthB,QAAQzY,QAChC,EAAKwiC,eAAelZ,KACAA,EAAI11B,cAAeU,cAAoCg1B,EAAK5c,QAGxF,EAAK+1B,gBAAgBnZ,KAED,MAAhBiU,EAc6B,IAbPxxC,MAAMC,KACxBuxC,EAAajyC,uBACT,EAAKyuC,SAASkD,UAAU3T,IACxB,IACA,EAAKyQ,SAASkD,UAAUW,YAE9BxmC,QACE,SAAAkyB,GAAG,OAIO,KAHN,IAAAz9B,UACIy9B,EAAI11B,cACJ,EAAKmmC,SAASthB,QAAQ6lB,WAGhB/qC,QACd,EAAKmvC,eAAenF,IAGxB,IAAArvC,aAAYo7B,EAAK,EAAKyQ,SAASthB,QAAQzY,QAE3C,EAAK2iC,qBAAqBrZ,OAGlCl+B,KAAK62C,WAAa72C,KAAK+2C,QACvB,IAAIS,EAAUx3C,KAAKy3C,sBAEfD,GAAWA,EAAQrvC,OAAS,IAC5BnH,SAASD,KAAOy2C,K,gDAKpB,OAAOx2C,SAASD,KACXk0B,MAAM,KACNjpB,QAAO,SAAAC,GAAC,OAA8B,IAA1B,CAAC,GAAI,KAAKhL,QAAQgL,Q,4CAInC,MAAO,IAAMjM,KAAK62C,WAAWrf,KAAK,O,gCAGpB0G,GAAoB,WAC5BwZ,GAAiB13C,KAAKk3C,YAAYhZ,GAClCiU,GAAe,IAAA+C,oBACJhX,EACbl+B,KAAK2uC,SAASkD,UAAUM,cAER,MAAhBA,GACAnyC,KAAK23C,qBAAqBxF,GACtBuF,EACA13C,KAAK43C,YAAY1Z,GAEjBl+B,KAAK63C,cAAc3Z,IAGnBwZ,IACI,IAAAj3C,UAASy9B,EAAKl+B,KAAK2uC,SAASkD,UAAUI,cAAqC,MAArBjyC,KAAKg0C,cAC3Dh0C,KAAK+zC,KAAK/nC,QAAO,SAAAC,GAAC,OAAI,EAAKirC,YAAYjrC,MAAI7D,SAAQ,SAAA6D,GAAC,OAAI,EAAK6rC,oBAAoB7rC,MAErFjM,KAAK+3C,kBAAkB7Z,IAEvBl+B,KAAK83C,oBAAoB5Z,K,sCAKbl1B,GACpB,IAAMC,EAAgCD,EAChCE,EAAgBD,EAAWC,cAC3BC,EAAuBF,EAAWG,QAAQF,GAChDlJ,KAAK23C,qBAAqB3uC,GACP,MAAfG,GACAnJ,KAAK+3C,kBAAkB5uC,K,2CAK3BnJ,KAAK+2C,QAAU,GACf/2C,KAAKi3C,6BACLj2C,SAASD,KAAO,GAChBf,KAAK+xC,QAAQ3pC,SAAQ,SAAAY,GACGA,EAAQE,cAAgB,KAEhDlJ,KAAKs0C,uB,qCAGcpW,GACnB,OAAOl+B,KAAK+xC,QAAQ9wC,QAAQi9B,EAAI11B,gBAAkB,I,mDAIlD,IAAM2qC,EAAgC,MAAhBnzC,KAAK+2C,SAAmB/2C,KAAK+2C,QAAQ5uC,OAAS,GACpE,IAAA6vC,aAAYh4C,KAAK0zC,eAAgB1zC,KAAK2uC,SAASthB,QAAQ8lB,cAAeA,K,wCAGhDjV,IACtB,IAAAn7B,UAASm7B,EAAKl+B,KAAK2uC,SAASthB,QAAQzY,QACpC5U,KAAK43C,YAAY1Z,K,kCAGDA,GAChB,IAAMqV,EAAWvzC,KAAKi4C,YAAY/Z,GAC9BqV,EAASprC,OAAS,IAClBnI,KAAK62C,WAAWxkC,KAAKkhC,GACrBvyC,SAASD,KAAOf,KAAKy3C,yB,oCAIPvZ,GAClB,IAAMqV,EAAWvzC,KAAKi4C,YAAY/Z,GAClC,GAAIqV,EAASprC,OAAS,EAAG,CACrB,IAAM+vC,EAAgBl4C,KAAKm4C,iBAAiB5E,GACxC2E,GAAiB,IACjBl4C,KAAK62C,WAAWt1B,OAAO22B,EAAe,GACtCl3C,SAASD,KAAOf,KAAKy3C,0B,2CAKJtF,GAA6B,WAChCxxC,MAAMC,KACxBuxC,EAAajyC,uBACTF,KAAK2uC,SAASkD,UAAU3T,IACxB,IACAl+B,KAAK2uC,SAASkD,UAAUW,YAE9BxmC,QACE,SAAAkyB,GAAG,OAEC,KADA,IAAAz9B,UAASy9B,EAAI11B,cAAe,EAAKmmC,SAASthB,QAAQ6lB,WAG5C9qC,SAAQ,SAAA81B,GAAG,OAAI,EAAK2Z,cAAc3Z,MAC7Bv9B,MAAMC,KACrBuxC,EAAajyC,uBACTF,KAAK2uC,SAASkD,UAAU3T,IAAM,IAAMl+B,KAAK2uC,SAASthB,QAAQzY,SAGvDxM,SAAQ,SAAA81B,GAAG,OAAI,EAAK4Z,oBAAoB5Z,Q,0CAG3BA,IACxB,IAAAp7B,aAAYo7B,EAAKl+B,KAAK2uC,SAASthB,QAAQzY,QACvC5U,KAAK63C,cAAc3Z,K,kCAGHiU,GAChBnyC,KAAK23C,qBAAqBxF,GAC1BnyC,KAAKs3C,eAA4BnF,K,qCAGdA,GACnB,GAAoB,MAAhBnyC,KAAKk0C,SAAmBl0C,KAAKk0C,QAAQ/rC,OAAQ,CAC7C,IAAM6sC,EAAS7C,EAAajyC,uBACxBF,KAAK2uC,SAASkD,UAAUS,QAC1B,GACI8F,EAAejG,EAAajyC,uBAC9BF,KAAK2uC,SAASkD,UAAUU,cAC1B,GACI8F,GAAoB,IAAAnD,oBACtB/C,EACAnyC,KAAK2uC,SAASkD,UAAUxpC,UAC1BnI,uBAAuBF,KAAK2uC,SAASkD,UAAUK,gBAAgB,GAC3DoG,EAAYt4C,KAAKi4C,YAAYjD,GAEjB,cAAdsD,GAA2C,KAAdA,GAC7Bt4C,KAAKq3C,gBAAgBrC,IAEzB,IAAAjyC,UAASiyC,EAAOxsC,cAAexI,KAAK2uC,SAASthB,QAAQ6lB,SACrD,IAAApwC,aACIs1C,EAAa5vC,cACbxI,KAAK2uC,SAASthB,QAAQ6lB,SAE1B,IAAApwC,aAAYu1C,EAAmBr4C,KAAK2uC,SAASthB,QAAQzY,W,uCAIpCu9B,GACrB,GAAoB,MAAhBnyC,KAAKk0C,SAAmBl0C,KAAKk0C,QAAQ/rC,OAAQ,CAC7C,IAAM6sC,EAAS7C,EAAajyC,uBACxBF,KAAK2uC,SAASkD,UAAUS,QAC1B,GACI8F,EAAejG,EAAajyC,uBAC9BF,KAAK2uC,SAASkD,UAAUU,cAC1B,GACI8F,GAAoB,IAAAnD,oBACtB/C,EACAnyC,KAAK2uC,SAASkD,UAAUxpC,UAC1BnI,uBAAuBF,KAAK2uC,SAASkD,UAAUK,gBAAgB,GAC3DoG,EAAYt4C,KAAKi4C,YAAYjD,GAEjB,cAAdsD,GAA2C,KAAdA,GAC7Bt4C,KAAKu3C,qBAAqBvC,IAE9B,IAAAlyC,aAAYkyC,EAAOxsC,cAAexI,KAAK2uC,SAASthB,QAAQ6lB,SACxD,IAAAnwC,UAASq1C,EAAa5vC,cAAexI,KAAK2uC,SAASthB,QAAQ6lB,SAC3D,IAAAnwC,UAASs1C,EAAmBr4C,KAAK2uC,SAASthB,QAAQzY,W,kCAItCspB,GAChB,OAAOl+B,KAAKm4C,iBAAiBn4C,KAAKi4C,YAAY/Z,KAAS,I,uCAGlCqV,GACrB,OAAOvzC,KAAK62C,WAAW51C,QAAQsyC,K,kCAGfrV,GAChB,OAAOA,EAAI78B,aAAarB,KAAK2uC,SAAS4E,Y,mCAItC,OAAOvzC,KAAK+2C,QAAQ7lC,a,sCAGAgtB,GACpB,IAAMqV,EAAWvzC,KAAKi4C,YAAY/Z,GAEjB,cAAbqV,GAAyC,KAAbA,GACxBvzC,KAAK+2C,QAAQ91C,QAAQsyC,GAAY,GACjCvzC,KAAK+2C,QAAQ1kC,KAAKkhC,K,2CAIDrV,GACzB,IAAMqV,EAAWvzC,KAAKi4C,YAAY/Z,GAElC,GAAiB,cAAbqV,GAAyC,KAAbA,EAAiB,CAC7C,IAAMgF,EAAcv4C,KAAK+2C,QAAQ91C,QAAQsyC,GAErCgF,GAAe,GACfv4C,KAAK+2C,QAAQx1B,OAAOg3B,EAAa,S,uHChuBjD,I,EAAA,UAEA,UACA,UACA,U,0KAGqBC,GADpB,IAAAj5C,WAAU,CAAEC,UAAW,wBAAyBkK,SAAS,G,cAEtD,WAAoB+uC,I,4FAAgD,cAAhDA,W,sDAEL,WACX,IAAI,IAAAh4C,UAAST,KAAKy4C,SAAU,aAAc,CAMtC,IAAMzvC,EAAShJ,KAAKy4C,SAASjwC,cAAc+I,qBACvC,UACF,GAEEvI,IAWAhJ,KAAK04C,YAAY1vC,GACjBA,EAAO7I,iBAAiB,UAAU,kBAC9B,EAAKu4C,YAAY1vC,YAGtB,IAAI,IAAAvI,UAAST,KAAKy4C,SAAU,uBAAwB,CACvD,IAAMvF,EAASlzC,KAAKy4C,SAASjwC,cAActH,cAA5B,qCACmBlB,KAAKy4C,SAASriC,KAAKhB,QAC7C,cACA,IAHO,OAOX89B,IACAlzC,KAAK04C,YAAYxF,GACjBA,EAAO/yC,iBAAiB,UAAU,kBAAM,EAAKu4C,YAAYxF,YAG7DlzC,KAAK04C,cACL14C,KAAKy4C,SAASt4C,iBAAiB,SAAS,kBAAM,EAAKu4C,iBACnD14C,KAAKy4C,SAASt4C,iBAAiB,UAAU,kBAAM,EAAKu4C,iBAKxDz4C,SAASE,iBAAiB,oBAAoB,kBAAM,EAAKu4C,mB,oCAK3D,IADEj5C,EACF,uDADkDO,KAAKy4C,SAE7B,WAApBh5C,EAAQ6U,SAEJqkC,GAAKA,EAAEC,WAAan5C,EAAQsX,OAC5B4hC,EAAEl5C,GAASo5C,QAIfp5C,EAAQsX,OACR,IAAAhU,UAAS/C,KAAKy4C,SAAU,gBAExB,IAAA31C,aAAY9C,KAAKy4C,SAAU,oB,yZCzEvC,I,EAAA,UACA,SACA,S,0yCASsBK,EAClB,WAAmBrlB,GAAiB,eAAjBA,M,uBAGVslB,E,8BACT,WAAYtlB,EAAwBjW,GAAc,iBAC9C,cAAMiW,IAD0BjW,OAGhC,IAAMlH,GAAO,IAAAiM,YAAW/E,GAHsB,MAKX,WAA/BlH,EAAKhC,QAAQnD,gBACZmF,EAA2BvS,MAA5B,OACCuS,EAA2BtS,OAA5B,QAGJ,EAAKwZ,KAAOlH,EAAK0iC,UAV6B,E,UADdF,G,2BAe3BG,E,8BAIT,WACIxlB,EACO5I,EACA0K,EACAL,GACT,iBACE,cAAMzB,IAJC5I,MAGT,EAFS0K,IAET,EADSL,IAIP,IAAM0N,EAAQnP,EAAGliB,qBAAqB,OAAO,GAH/C,OAKMqxB,IACA,EAAKf,IAAMe,EAEX,EAAKsW,KAAO,EAAKrX,IAAIiO,aAAa,WAC5B,EAAKjO,IAAIsX,YACT,EAAKtX,IAAIhX,KAVrB,E,UATmCiuB,G,4BAyBpBM,GADpB,IAAA75C,WAAU,CAAEC,UAAW,iB,cAIpB,WAAoBC,GAAsB,0BAAtBA,UAChBO,KAAKq5C,iBAAmB14C,MAAMC,KAC1BnB,EAAQS,uBAAuB,0BAGnC,IAAMo5C,EAAYt5C,KAAKP,QAAQ4B,aAAa,mBAE5C,GAAIi4C,EAAW,CACX,IAAMhpB,EAAQtwB,KAAKu5C,UAAUD,GAE7Bt5C,KAAKq5C,iBAAiBjxC,SAAQ,SAAAgM,GAAO,OACjCA,EAAQjU,iBAAiB,SAAS,SAAAgN,GAAK,OAAI,EAAKqsC,MAAMlpB,SAG1DtwB,KAAKP,QAAQU,iBAAiB,SAAS,SAAAgN,GACnCA,EAAME,iBAEN,EAAKmsC,MAAMlpB,EAAO,EAAK7wB,a,uDAM/B65C,GAEA,OAAO34C,MAAMC,KACTX,SAASgK,iBAAT,4BAA+CqvC,EAA/C,QACF5qC,KAAI,SAAA6c,GAEF,IAAMkuB,EAAQluB,EAAKrrB,uBACf,6BACF,GAEF,OAAIu5C,EACO,IAAIV,EACPxtB,EACAkuB,EAAM/7B,WAGH,IAAIu7B,EACP1tB,EACAA,EAAKlqB,aAAa,aAClBqyB,SAASnI,EAAKlqB,aAAa,cAAe,IAC1CqyB,SAASnI,EAAKlqB,aAAa,eAAgB,U,4BAOvDivB,EACA7wB,GAEA,IAAM0S,EAAWme,EAAM5hB,KAAI,SAAAzC,GAAC,OAAIA,EAAEwnB,MAc5BrqB,EAA8B,CAChCurC,SAAS,EACTrzB,MAfQ7hB,EAAU0S,EAASlR,QAAQxB,GAAW,EAgB9Ci6C,iBAAkB,SAAAp4B,GACd,IAAMiK,EAAO+E,EAAMhP,GACbq4B,GAAc,IAAA/wC,sBAEpB,GAAI2iB,aAAgB0tB,GAAuB1tB,EAAKsW,IAAK,CACjD,IAAMx6B,EAAOkkB,EAAKsW,IAAIv6B,wBACtB,MAAO,CACH1D,EAAGyD,EAAKvD,KACRD,EAAGwD,EAAKvF,IAAM63C,EACdpkB,EAAGluB,EAAKtD,OAGZ,IAAMsD,EAAOkkB,EAAKkI,GAAGnsB,wBACrB,MAAO,CACH1D,EAAGyD,EAAKvD,KAAOuD,EAAKtD,MAAQ,EAC5BF,EAAGwD,EAAKvF,IAAM63C,EAActyC,EAAKrD,OAAS,EAC1CuxB,EAAG,KAMbqkB,EAAO35C,SAASO,eAAe,QAC/Bq5C,EAAU,IAAIC,WAChBF,EACAG,qBACAzpB,EACAlnB,GAGJywC,EAAQv2C,OACRu2C,EAAQG,OAAO,SAAS,kBACpBr5C,MAAMC,KAAKg5C,EAAKroC,qBAAqB,WAAWnJ,SAC5C,SAAC3I,GAAD,OAAsBA,EAAQyS,gBAAgB,kB,mICjK9D,I,EAAA,UACA,U,oQAEA,IAGM+nC,E,WAMF,WAAoBx6C,GAAsB,eAFlCy6C,YAAcl6C,KAAKkN,aAAaiY,KAAKnlB,MAEH,KAAtBP,UAChBO,KAAKm6C,eAAiB16C,EAAQS,uBAC1B,mBACF,GAEFF,KAAKo6C,eAAiB36C,EAAQ8R,qBAAqB,UAAU,GAE7DvR,KAAK2tB,Q,qDAhBQ,WAqBS3tB,KAAKP,SAEnBO,KAAKm6C,gBAAkBn6C,KAAKo6C,gBAC5Bp6C,KAAKm6C,eAAeh6C,iBAAiB,QAASH,KAAKk6C,aAI3Dl6C,KAAKP,QAAL,OAA6BO,O,qCAI7BA,KAAKq6C,OACLr6C,KAAKm6C,eAAet6C,oBAAoB,QAASG,KAAKk6C,e,6BAMtD,IAAqD,IAAjDl6C,KAAKo6C,eAAevvB,IAAI5pB,QAAQ,YAAoB,CACpD,IAA8C,IAA1CjB,KAAKo6C,eAAevvB,IAAI5pB,QAAQ,KAChCjB,KAAKo6C,eAAevvB,KAAO,kBACxB,CACH,IAAIA,EAAM7qB,KAAKo6C,eAAevvB,IAAIoK,MAAM,KACxCj1B,KAAKo6C,eAAevvB,IAAMA,EAAI,GAAK,eAAiBA,EAAI,IAE5D,IAAA9nB,UAAS/C,KAAKP,QAAS,mB,sBAMpB,SAAS66C,EAAO76C,GAC3B,IAAIsT,EAAOtT,EAAO,OAMlB,OAJKsT,IACDA,EAAO,IAAIknC,EAAax6C,IAGrBsT,E,IAIEwnC,GADZ,IAAAh7C,WAAU,CAAEC,UAAW,YAAakK,SAAS,G,GAE1C,WAAoBjK,GAAsB,eAAtBA,UAChB66C,EAAO76C,M,uFCJA,SACdA,GAEA,OAAO,IAAI+6C,EAAoB/6C,I,6BAnEhC,c,0KAEa+6C,E,WAKZ,WAAoB/6C,GAA2B,Y,4FAAA,cAA3BA,UACnBO,KAAKy6C,OAASz6C,KAAKP,QACjBi7C,QAAQ,QACRx5C,cAAc,iBAChBlB,KAAK26C,QAAU36C,KAAKP,QAAQ4B,aAAa,iBACzCrB,KAAK46C,WAAa56C,KAAKP,QAAQ4B,aAAa,oBAE5C,IAAIw5C,EACH,4CAA8C76C,KAAK26C,QAC9CG,EAAU76C,SAASyL,gBAAgBkoC,KACrCkH,IACHD,GAAa,OAASC,IAGvB,IAAAC,YAAWF,GACT9E,MAAK,WACL,EAAKzyC,UAEL03C,OAAM,SAACC,GAAD,OAASpuC,QAAQiG,MAAM,QAASmoC,M,oDAG1B,WAEdj7C,KAAKP,QAAQy7C,KAAKh6C,cAAc,iBAAiBuH,aAAa,WAAW,YAEzE0yC,WAAWC,OAAM,WAChB,EAAKC,qB,sCAiBiB,WACvBF,WACEG,QAAQt7C,KAAK26C,QAAS,CACtBY,OAAQv7C,KAAK46C,aAEb7E,MAAK,SAACyF,GAEN,EAAK/7C,QAAQy7C,KAAKh6C,cAAc,iBAAiBgR,gBAAgB,YACjE,EAAKzS,QAAQsX,MAAQykC,KAEvB16C,YAAW,kBAAM,EAAKu6C,kBAAiB,U,yHCe1B,SACb57C,GAEA,OAAO,IAAIg8C,EAAmBh8C,I,4BA9EhC,c,0KAEag8C,E,WAKX,WAAoBh8C,GAAsB,Y,4FAAA,cAAtBA,UAClBO,KAAK07C,SAAW/C,EAAEl5C,GAClBO,KAAK27C,MAAQ37C,KAAK07C,SAAShB,QAAQ,QAEnC,IAAIG,EACF,mFACIC,EAAU96C,KAAK07C,SAAS3oC,KAAK,MAC/B+nC,IACFD,GAAa,OAASC,IAGxB,IAAAC,YAAWF,GAAWG,OAAM,SAACC,GAAD,OAASpuC,QAAQiG,MAAM,QAASmoC,MAE5D56C,OAAOu7C,wBAA0B,WAC/B,EAAKt4C,Q,oDAIM,WACb,IACE63C,WAAWU,OAAO77C,KAAK07C,SAAS,GAAI,CAClC/uC,SAAU,SAACqpC,GAAD,OAAc,EAAKrpC,SAASqpC,IACtC8F,QAAS97C,KAAK07C,SAAS3oC,KAAK,aAG9B/S,KAAK+7C,UAAY/7C,KAAK27C,MAAMl6B,KAAK,yBAEjCzhB,KAAK+7C,UACF5lB,KAAK,oBAAqBn2B,KAAK07C,SAAS3oC,KAAK,YAC7CojB,KAAK,WAAY,QACjBA,KAAK,WAAY,YACjBA,KAAK,WAAY,YACjBrrB,IAAI,CACH8wB,QAAS,QACT53B,OAAQ,MACRD,MAAO,MACPi4C,OAAQ,OACRC,OAAQ,MAGZj8C,KAAKk8C,aAELl8C,KAAK27C,MAAMjX,GAAG,UAAU,SAACz+B,GAGvB,OAAwB,IAFPk1C,WAAWgB,cAEfh0C,UAMf,MAAO2K,O,+BAKMkjC,GACfh2C,KAAK+7C,UAAUlD,QACf74C,KAAKk8C,e,mCAILl8C,KAAK27C,MAAMS,WAAW,aACtBp8C,KAAK27C,MAAMS,WAAW,yBACtBzD,EAAEC,UAAUyD,YAAYxL,MAAM7wC,KAAK27C,Y,uICvEvC,I,EAAA,UACA,UAGaW,GADZ,IAAA/8C,WAAU,CAAEC,UAAW,a,GAGpB,WAAoBC,I,4FAA4B,cAA5BA,UAChBO,KAAKgJ,OAAS,IAAI6jB,SAAOptB,EAAS,CACvC4tB,QAAS,CACRrX,UAAW,WACXpB,OAAQ,WACR0Y,YAAa,gBACbL,SAAU,aACV6C,SAAU,S,+GCKP,SACH9Y,EACAD,EACAm5B,GAIF,IAHEjB,IAGF,yDAFEhZ,EAEF,uDAFiB,IACfoa,EACF,uCACQtB,EAAS,CAAC,GAAD,OACR/3B,GADQ,OACFD,EAAQ,IAAH,OAAOA,GAAU,KADpB,kBAEAm5B,EAAKqM,eAFL,eAGHtmB,IAGRoa,GACAtB,EAAO18B,KAAP,iBAAsBg+B,IAGtBpB,GACAF,EAAO18B,KAAP,iBAGGmqC,EAAQxlC,GACf/W,SAAS8uC,OAASA,EAAOvX,KAAK,M,eAG3B,SAAsBxgB,GAAiC,IAApBif,EAAoB,uDAAL,IACjDwmB,EAAUzlC,YACHwlC,EAAQxlC,GACf/W,SAAS8uC,OAAT,UAAqB/3B,EAArB,0DAA0Eif,EAA1E,OA9CR,IAAMumB,EAAU,GAET,SAASC,EAAUzlC,GACtB,GAAIwlC,EAAQxlC,GACR,OAAOwlC,EAAQxlC,GAKnB,IAFA,IAAM0lC,EAAMz8C,SAAS8uC,OAAO9Z,MAAM,MAEzBtvB,EAAI+2C,EAAIv0C,OAAS,EAAGxC,GAAK,EAAGA,IAAK,CACtC,IAAMopC,EAAS2N,EAAI/2C,GAAGsvB,MAAM,KAC5BunB,EAAQzN,EAAO,IAAMA,EAAO,GAGhC,OAAOyN,EAAQxlC,K,yECXZ,WACH,OAAO3W,OAAOmK,WALU,M,QASrB,WACH,OAAOnK,OAAOmK,WATO,M,iDADG,K,YACH,M,eCDzB,QACA,OAEA,QACA,Q,yECAO,WACH,OAAOnK,OAAOmK,WALU,M,sBAarB,WACH,OAAOnK,OAAOmK,YAAc,M,qCAGzB,SAA4CmyC,GAG/C,OAFkBA,EAAiBC,IAClB16C,K,iDAnBO,KACrB,IAAM06C,EAAY,KAQlB,SAAS16C,IACZ,OAAO7B,OAAOmK,WAAaoyC,E,+FCJxB,SACNjwC,GAEC,IADD+E,EACC,uDAD0BzR,SAASyC,KAEpC,IAAK,IAAAR,SAAL,CAOA,IAAMyP,GAAS,IAAA/I,sBAEX+I,GAAU,GACbC,uBAAsB,WACrBF,EAAY1J,MAAMlG,IAAlB,UAA2BgQ,EAAYH,GAAvC,MAGA1R,SAASyC,KAAKsF,MAAMhE,OAAS,OAC7B/D,SAASyL,gBAAgB1D,MAAMhE,OAAS,OAExC0N,EAAY1J,MAAM+J,SAAW,QAC7BL,EAAY1J,MAAMjE,MAAQ,OAC1B2N,EAAY1J,MAAMhE,OAAS,OAC3B0N,EAAY1J,MAAMgK,SAAW,SAI7BlR,YAAW,kBAAM6L,MAAY,aAvB9BA,K,kBA4BK,WAAmE,IAA1C+E,EAA0C,uDAAfzR,SAASyC,KACnE,IAAK,IAAAR,SAAL,CAMA,IAAMyP,EAASG,GAAY,IAAA/P,cAAa2P,EAAY1J,MAAMlG,MAE1D4P,EAAY1J,MAAMlG,IAAM,KAGxB4P,EAAY1J,MAAM+J,SAAW,KAC7BL,EAAY1J,MAAMjE,MAAQ,KAC1B2N,EAAY1J,MAAMhE,OAAS,KAC3B0N,EAAY1J,MAAMgK,SAAW,KAEzBL,GAAU,GACbtP,SAAS,EAAGsP,K,kBAIP,WACN,IAAMQ,EAA+B,GAG/B7B,EAASrQ,SAASC,uBACvB,qBACC,GAYF,OAXsBD,SAASC,uBAC9B,qBACC,GAEEoQ,GACH6B,EAASE,KAAK/B,GAMRnO,KAAKC,MACX+P,EACEzD,KAAI,SAAAzC,GAAC,OAAIA,EAAE3E,wBAAwBtD,UACnCsO,QAAO,SAACC,EAAIC,GAAL,OAAYD,EAAKC,IAAI,KAlFhC,aACA,UACA,UAoFA,SAASV,EAAYH,GACpB,OAAkB,IAAXA,EAAeA,GAAmB,EAAVA,I,6CCtFhC,SAAgB,kBAAkB,kBAAkB,oBAAoB,oBAAoB,oBAAoB,oBAAoB,iBAAiB,iBAAiB,kBAAkB,kBAAkB,aAAa,aAAa,KAAO,OAAO,aAAa,aAAa,SAAW,WAAW,iBAAiB,iBAAiB,gBAAgB,gBAAgB,mBAAmB,mBAAmB,mBAAmB,mBAAmB,mBAAmB,mBAAmB,mBAAmB,mBAAmB,uBAAuB,uBAAuB,eAAe,eAAe,qBAAqB,qBAAqB,2BAA2B,2BAA2B,iCAAiC,iCAAiC,iCAAiC,iCAAiC,iCAAiC,iCAAiC,kCAAkC,kCAAkC,kCAAkC,kCAAkC,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,YAAY,YAAY,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,YAAY,YAAY,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,YAAY,YAAY,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,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WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,YAAY,YAAY,YAAY,YAAY,iBAAiB,iBAAiB,gBAAgB,gBAAgB,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,eAAe,eAAe,eAAe,eAAe,iBAAiB,iBAAiB,gBAAgB,gBAAgB,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,eAAe,eAAe,eAAe,eAAe,iBAAiB,iBAAiB,gBAAgB,gBAAgB,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,eAAe,eAAe,eAAe,eAAe,iBAAiB,iBAAiB,gBAAgB,gBAAgB,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,cAAc,eAAe,eAAe,eAAe,eAAe,oBAAoB,oBAAoB,oBAAoB,oBAAoB,oBAAoB,oBA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","file":"Scripts/finstar.js","sourcesContent":["import { Component } from '@opten/compiler/metadata/component';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\r\nimport { getOffset } from '@opten/dom/get-offset';\r\nimport { Collapse } from '@opten/collapse/initializer';\r\nimport { getSelectorElementFromElement } from '@opten/dom/get-selector-element-from-element';\r\nimport { getCss } from '@opten/dom/get-css';\r\nimport { parseCssUnit } from '@opten/number/parse-css-unit';\r\nimport { getStickyOffset } from '../../../Opten.HypothekarbankLenzburg.Web.Static/app/utilities/scroll-helper';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { isPad } from '../utilities/detection';\r\n\r\n// todo: way to bind it do data-anchor?\r\n@Component({ className: 'js-anchor' })\r\nexport class Anchor implements OnInit {\r\n private _cookieConsent: HTMLElement;\r\n\r\n\r\n constructor(private element: HTMLElement) {\r\n this._cookieConsent = document.getElementsByClassName(\r\n 'js-cookie-consent'\r\n )[0] as HTMLElement;\r\n // check if we have a cookie consent (animation)\r\n if (this._cookieConsent) {\r\n // wait till cookie has animated\r\n this._cookieConsent.addEventListener(\r\n 'shown.hbl.cookie-consent',\r\n this._handleCookieConsent\r\n );\r\n }\r\n }\r\n\r\n onInit() {\r\n this.check();\r\n window.addEventListener('hashchange', () => this.check());\r\n window.addEventListener('popstate', () => this.check());\r\n\r\n }\r\n\r\n check() {\r\n if (this._canScroll()) {\r\n\r\n /*if (this._cookieConsent) {// check if we have a cookie consent (animation)\r\n // wait till cookie has animated\r\n this._cookieConsent.addEventListener(\r\n 'shown.hbl.cookie-consent',\r\n this._handleCookieConsent\r\n );\r\n } else {*/\r\n // otherwise just scroll to the element\r\n var sidebarPanel = document.getElementById('c-sidebar-panel');\r\n if (sidebarPanel && hasClass(sidebarPanel, '--collapsed') == false) {\r\n var closeElement = Array.from(document.getElementsByClassName('js-sidebar-close')) as Array;\r\n if (closeElement) {\r\n closeElement[0].click();\r\n setTimeout(() => {\r\n this._scroll();\r\n }, 650);\r\n }\r\n }\r\n else {\r\n this._scroll();\r\n }\r\n /*}*/\r\n }\r\n }\r\n\r\n private _canScroll(): boolean {\r\n const hash = window.location.hash;\r\n\r\n return hash && hash.indexOf('#anchor-') !== -1;\r\n }\r\n\r\n private getElement(): HTMLElement {\r\n if (this._canScroll()) {\r\n return this.element.querySelector(\r\n `[data-anchor='${window.location.hash.substring(1)}']`\r\n );\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _scroll() {\r\n const element = this.getElement();\r\n\r\n if (element) {\r\n // check if it's an accordion element, so we can open it\r\n if (element.getAttribute('data-toggle') === 'collapse') {\r\n const target = getSelectorElementFromElement(\r\n element,\r\n 'data-target',\r\n true\r\n );\r\n\r\n if (target) {\r\n const api = new Collapse(target);\r\n\r\n // check if the collapse is already open\r\n // because then the shown event might not be triggered!\r\n if (api.isOpen()) {\r\n this._animate();\r\n } else {\r\n target.addEventListener(\r\n 'shown.opten.collapse',\r\n this._handleCollapse\r\n );\r\n\r\n api.show();\r\n }\r\n } else {\r\n // fallback\r\n this._animate();\r\n }\r\n } else {\r\n // otherwise just scroll to the element...\r\n this._animate();\r\n }\r\n }\r\n }\r\n\r\n private _animate() {\r\n const element = this.getElement();\r\n\r\n if (element) {\r\n let offset = getOffset(element).top();\r\n\r\n offset += parseCssUnit(getCss(element, 'margin-top')) * -1;\r\n\t\t\toffset += getStickyOffset() * -1;\r\n\t\t\tif(isPad() == false){\r\n\t\t\t\toffset += 95; // header desktop height\r\n\t\t\t}\r\n\r\n offset = Math.round(offset);\r\n\r\n window.scrollTo(0, offset);\r\n }\r\n }\r\n\r\n private _handleCollapse = () => {\r\n this._animate();\r\n\r\n this._cookieConsent.removeEventListener(\r\n 'shown.opten.collapse',\r\n this._handleCollapse\r\n );\r\n }\r\n\r\n private _handleCookieConsent = () => {\r\n this._scroll();\r\n\r\n this._cookieConsent.removeEventListener(\r\n 'shown.hbl.cookie-consent',\r\n this._handleCookieConsent\r\n );\r\n }\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { Header } from '../header/header';\r\nimport { ComponentRef } from '@opten/compiler/metadata/di';\r\n\r\n@Component({ className: 'js-back-to-top' })\r\nexport class BackToTopComponent {\r\n\tprivate _bodyElement: HTMLElement;\r\n\t@ComponentRef(Header) _headerElement: Header;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis._bodyElement = document.body;\r\n\t\telement.addEventListener('click', () => {\r\n\t\t\tthis.animate();\r\n\t\t});\r\n\t}\r\n\r\n\tprivate animate() {\r\n\t\twindow.scrollTo(0, 0);\r\n\t\tthis._headerElement._update(0);\r\n\t\tremoveClass(this._bodyElement, 'going-up');\r\n\t\taddClass(this._bodyElement, 'going-down');\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\n\r\n@Component({ className: 'js-header' })\r\nexport class NavigationHideScrollDownShowScrollUpComponent {\r\n\tprivate _wrapperElement: HTMLElement;\r\n\tprivate _lastScrollTop = 0;\r\n\tprivate _threshold = 10;\r\n\tprivate _navHeight = 0;\r\n\tprivate _bodyElement: HTMLElement;\r\n\tprivate _direction = '';\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis._wrapperElement = element;\r\n\t\tthis._bodyElement = document.body;\r\n\t\tthis.init();\r\n\t}\r\n\r\n\tprivate init() {\r\n\t\twindow.addEventListener('scroll', () => this.handleScroll());\r\n\t}\r\n\r\n\thandleScroll() {\r\n\t\tif (window.pageYOffset === 0) {\r\n\t\t\tremoveClass(this._bodyElement, 'going-up');\r\n\t\t\taddClass(this._bodyElement, 'going-down');\r\n\t\t} else {\r\n\t\t\tconst currentYOffset = window.pageYOffset;\r\n\t\t\tif (\r\n\t\t\t\tcurrentYOffset > this._lastScrollTop &&\r\n\t\t\t\tcurrentYOffset > 0 &&\r\n\t\t\t\tcurrentYOffset - this._lastScrollTop >= this._threshold\r\n\t\t\t) {\r\n\t\t\t\tthis._direction = 'down';\r\n\t\t\t\tremoveClass(this._bodyElement, 'going-up');\r\n\t\t\t\taddClass(this._bodyElement, 'going-down');\r\n\t\t\t} else if (\r\n\t\t\t\tcurrentYOffset < this._lastScrollTop &&\r\n\t\t\t\tthis._lastScrollTop - currentYOffset >= this._threshold\r\n\t\t\t) {\r\n\t\t\t\tthis._direction = 'up';\r\n\t\t\t\taddClass(this._bodyElement, 'going-up');\r\n\t\t\t\tremoveClass(this._bodyElement, 'going-down');\r\n\t\t\t}\r\n\t\t\tthis._lastScrollTop = currentYOffset;\r\n\t\t}\r\n\t}\r\n}\r\n","import { hasClass } from '@opten/dom/has-class';\r\nimport { Component } from '@opten/compiler/metadata/component';\r\n\r\ndeclare var TweenMax: any;\r\ndeclare var TweenLite: any;\r\n\r\nclass DotPicture {\r\n\tx: number;\r\n\ty: number;\r\n\ttop: number;\r\n\tleft: number;\r\n\twidth: number;\r\n\theight: number;\r\n\tscale: number;\r\n\tfill: string;\r\n\r\n\tconstructor(color: string) {\r\n\t\tthis.x = 0;\r\n\t\tthis.y = 0;\r\n\r\n\t\tthis.left = 0;\r\n\t\tthis.top = 0;\r\n\r\n\t\tthis.width = 4;\r\n\t\tthis.height = 4;\r\n\t\tthis.fill = color;//\"#a6c032\";// \"#D2DF98\";\r\n\r\n\t\tthis.scale = 1;\r\n\t}\r\n\r\n\tdraw(context: CanvasRenderingContext2D) {\r\n\t\tcontext.setTransform(this.scale, 0, 0, this.scale,\r\n\t\t\tthis.left + this.x, this.top + this.y);\r\n\r\n\t\t// context.moveTo(0, -this.height / 2);\r\n\t\t// context.lineTo(0, this.height / 2);\r\n\r\n\t\t// context.moveTo(-this.width / 2, 0);\r\n\t\t// context.lineTo(this.width / 2, 0);\r\n\t\t//context.fillRect(this.x, this.y, this.width, this.height);\r\n\t\tcontext.beginPath();\r\n\r\n\t\tcontext.arc(this.x, this.y, 2, 0, Math.PI * 2, true);\r\n\t\tcontext.fillStyle = this.fill;\r\n\r\n\t\tcontext.fill();\r\n\t}\r\n}\r\n\r\n@Component({ className: 'js-dots-picture' })\r\nexport class DotsPictureComponent {\r\n\tsigns = [];\r\n\tmouse = { x: 0, y: 0 };\r\n\tgridXLength = 80;\r\n\tgridYLength = 40;\r\n\tinvisibleBorder = 40;\r\n\tspace = 20;\r\n\r\n\tmouseMoved = false;\r\n\tmouseOver = false;\r\n\tcontext: CanvasRenderingContext2D;\r\n\tcanvasWidth: number;\r\n\tcanvasHeight: number;\r\n\tcanvasColor: string;\r\n\tresizeId: NodeJS.Timeout;\r\n\r\n\r\n\tconstructor(private element: HTMLCanvasElement) {\r\n\t\tthis.context = this.element.getContext('2d');\r\n\t\tthis.canvasColor = '#a6c032';\r\n\r\n\t\tthis.init();\r\n\t}\r\n\r\n\thandleResize() {\r\n\t\tthis.context.clearRect(0, 0, this.element.width, this.element.height);\r\n\t\tthis.init();\r\n\t}\r\n\r\n\tinit() {\r\n\t\tif (hasClass(this.element, 'c-dots-picture--footer')) {\r\n\t\t\tthis.canvasColor = '#698bb5';\r\n\t\t\tthis.element.width = document.body.clientWidth;\r\n\t\t\tthis.invisibleBorder = 5;\r\n\r\n\t\t\twindow.addEventListener('resize', () => {\r\n\t\t\t\tclearTimeout(this.resizeId);\r\n\t\t\t\tthis.resizeId = setTimeout(() => this.handleResize(), 300);\r\n\t\t\t});\r\n\t\t\t//window.addEventListener('resize', () => this.handleResize());\r\n\t\t}\r\n\t\tthis.canvasWidth = this.element.width;\r\n\t\tthis.canvasHeight = this.element.height;\r\n\t\tthis.gridXLength = this.canvasWidth / this.space;\r\n\t\tthis.gridYLength = this.canvasHeight / this.space;\r\n\r\n\t\tfor (var i = 0; i < this.gridXLength; i++) {\r\n\t\t\tthis.signs[i] = [];\r\n\r\n\t\t\tfor (var j = 0; j < this.gridYLength; j++) {\r\n\t\t\t\tvar sign = new DotPicture(this.canvasColor);\r\n\r\n\t\t\t\tsign.left = ((this.canvasWidth - this.invisibleBorder) / (this.gridXLength + 1) * (i + 1)) + (this.invisibleBorder / 2);\r\n\t\t\t\tsign.top = ((this.canvasHeight - this.invisibleBorder) / (this.gridYLength + 1) * (j + 1)) + (this.invisibleBorder / 2);\r\n\r\n\t\t\t\tsign.width = this.space;\r\n\t\t\t\tsign.height = this.space;\r\n\r\n\t\t\t\tthis.signs[i][j] = sign;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tTweenLite.ticker.addEventListener('tick', () => this.draw());\r\n\r\n\t\tthis.element.addEventListener('mousemove', (e) => this.handleMouseMove(e));\r\n\t\tthis.element.addEventListener('touchmove', (e) => this.handleTouchMove(e));\r\n\r\n\t\tthis.element.addEventListener('touchstart', () => {\r\n\t\t\tthis.mouseOver = true;\r\n\t\t});\r\n\t\tthis.element.addEventListener('mouseenter', () => {\r\n\t\t\tthis.mouseOver = true;\r\n\t\t});\r\n\r\n\t\tthis.element.addEventListener('mouseleave', () => this.handleMouseLeave())\r\n\t\tthis.element.addEventListener('touchend', () => this.handleMouseLeave())\r\n\r\n\t}\r\n\r\n\r\n\tdraw() {\r\n\t\tif (this.mouseOver && this.mouseMoved) {\r\n\t\t\tthis.calculateIconPosition();\r\n\t\t\tthis.mouseMoved = false;\r\n\t\t}\r\n\r\n\t\tthis.context.clearRect(0, 0, this.canvasWidth, this.canvasHeight);\r\n\t\tthis.context.save();\r\n\t\tthis.context.beginPath();\r\n\t\tfor (var i = 0; i < this.gridXLength; i++) {\r\n\t\t\tfor (var j = 0; j < this.gridYLength; j++) {\r\n\t\t\t\tvar sign = this.signs[i][j];\r\n\r\n\t\t\t\tsign.draw(this.context);\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.context.closePath();\r\n\t\tthis.context.restore();\r\n\t}\r\n\r\n\tcalculateIconPosition() {\r\n\t\tconst spaceFromPositionAffected = 3;\r\n\t\tfor (var i = 0; i < this.gridXLength; i++) {\r\n\t\t\tfor (var j = 0; j < this.gridYLength; j++) {\r\n\t\t\t\tvar sign = this.signs[i][j];\r\n\t\t\t\tvar radius = 100;\r\n\t\t\t\tvar dx = this.mouse.x - sign.left - (sign.width * spaceFromPositionAffected);\r\n\t\t\t\tvar dy = this.mouse.y - sign.top - (sign.height * spaceFromPositionAffected);\r\n\t\t\t\tvar dist = Math.sqrt(dx * dx + dy * dy) || 1;\r\n\r\n\t\t\t\tvar angle = Math.atan2(dy, dx);\r\n\r\n\t\t\t\tif (dist < radius) {\r\n\t\t\t\t\tconst scaleFactor = 3 - ((dist / radius) * 2);\r\n\r\n\t\t\t\t\tradius = dist;\r\n\t\t\t\t\tTweenMax.to(sign, 0.3, { scale: scaleFactor });\r\n\t\t\t\t} else {\r\n\t\t\t\t\tTweenMax.to(sign, 0.3, { scale: 1 });\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// TweenMax.to(sign, 0.3, {\r\n\t\t\t\t// \tx: (Math.cos(angle) * radius) * -1,\r\n\t\t\t\t// \ty: (Math.sin(angle) * radius) * -1\r\n\t\t\t\t// });\r\n\t\t\t\tTweenMax.to(sign, 0.3, {\r\n\t\t\t\t\tx: (Math.cos(angle) * 5) * -1,\r\n\t\t\t\t\ty: (Math.sin(angle) * 5) * -1\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\thandleMouseMove(e: MouseEvent) {\r\n\t\tvar rect = this.element.getBoundingClientRect();\r\n\t\tthis.mouse.x = e.clientX - rect.left;\r\n\t\tthis.mouse.y = e.clientY - rect.top;\r\n\r\n\t\tthis.mouseMoved = true;\r\n\t}\r\n\r\n\thandleTouchMove(e: TouchEvent) {\r\n\t\tvar rect = this.element.getBoundingClientRect();\r\n\t\tthis.mouse.x = e.touches[0].clientX - rect.left;\r\n\t\tthis.mouse.y = e.touches[0].clientY - rect.top;\r\n\r\n\t\tthis.mouseMoved = true;\r\n\t}\r\n\r\n\thandleMouseLeave() {\r\n\t\tthis.mouseOver = false;\r\n\t\tfor (var i = 0; i < this.gridXLength; i++) {\r\n\t\t\tfor (var j = 0; j < this.gridYLength; j++) {\r\n\t\t\t\tvar sign = this.signs[i][j];\r\n\t\t\t\tTweenMax.to(sign, 0.3, { x: 0, y: 0, scale: 1 });\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import { Component } from '@opten/compiler/metadata/component';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { getWindowScrollTop } from '@opten/dom/get-window-scroll-top';\r\nimport { isPad } from '../../utilities/detection';\r\n\r\n@Component({ className: 'js-header' })\r\nexport class Header implements OnInit {\r\n\tprivate _height: number;\r\n\tprivate _topCache: number;\r\n\tprivate _paddingTop: number | null = null;\r\n\t// private _sidebar: Sidebar;\r\n\tprivate _dropdowns: HTMLCollectionOf;\r\n\r\n\t// prevent multiple resizings to add more height\r\n\t// if it's the same height as before!\r\n\tprivate _cachedHeight: number | null = null;\r\n\r\n\t// if we don't have a tangram,\r\n\t// we always want to show the shadow!\r\n\tprivate _handleBoxShadow: boolean = true;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis._handleBoxShadow = !hasClass(element, '--shadow');\r\n\t}\r\n\r\n\tonInit() {\r\n\t\tthis._dropdowns = document.getElementsByClassName(\r\n\t\t\t'js-navbar-mega-dropdown'\r\n\t\t);\r\n\r\n\t\taddClass(this.element, '--sticky');\r\n\t\t// this._sidebar = new Sidebar(\r\n\t\t// \tdocument.getElementsByClassName('js-sidebar')[0] as HTMLElement\r\n\t\t// );\r\n\t\tthis._handleScroll();\r\n\t\twindow.addEventListener('scroll', () => this._handleScroll());\r\n\t}\r\n\r\n\tpublic _update(top: number) {\r\n\t\tif (top !== null) {\r\n\t\t\tif (top !== this._topCache) {\r\n\t\t\t\tthis._topCache = top;\r\n\t\t\t\tthis.element.style.top = `${top}px`;\r\n\t\t\t\tthis._hideDropdown();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _hideDropdown() {\r\n\t\tif (this._dropdowns && this._dropdowns.length > 0) {\r\n\t\t\tlet toggler;\r\n\t\t\tArray.from(this._dropdowns).forEach(dropdown => {\r\n\t\t\t\tif (dropdown.classList.contains('--show')) {\r\n\t\t\t\t\tremoveClass(dropdown.parentElement, 'is-active');\r\n\t\t\t\t\tremoveClass(dropdown, '--show');\r\n\t\t\t\t\ttoggler = dropdown.parentElement.getElementsByClassName(\r\n\t\t\t\t\t\t'js-navbar-mega-dropdown-toggler'\r\n\t\t\t\t\t)[0];\r\n\t\t\t\t\tif (toggler) {\r\n\t\t\t\t\t\ttoggler.setAttribute('aria-expanded', 'false');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _handleScroll() {\r\n\t\tif (document.body.classList.contains('going-down')) {\r\n\t\t\tthis._handleScrollDown();\r\n\t\t} else if (document.body.classList.contains('going-up')) {\r\n\t\t\tthis._handleScrollUp();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _handleScrollDown() {\r\n\t\tif (getWindowScrollTop() > this._height) {\r\n\t\t\tthis._update(-this._height);\r\n\t\t\t// this._sidebar._update(0);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _handleScrollUp() {\r\n\t\tif (getWindowScrollTop() <= this._height) {\r\n\t\t\tthis._update(0);\r\n\t\t\t// this._sidebar._update(this._height);\r\n\t\t} else {\r\n\t\t\tthis._update(0);\r\n\t\t\t// this._sidebar._update(this._height);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\n\r\n@Component({ className: 'js-language-chooser' })\r\nexport class LanguageChooserComponent {\t\r\n\tconstructor(element: HTMLElement) {\t\t\r\n\t\telement.addEventListener('change', () => this.handleChangeLanguageChooser(element));\r\n\t}\r\n\r\n\tprivate handleChangeLanguageChooser(select: Element) {\r\n\t\tlet target = '';\r\n const selectMenu = select;\r\n const selectedIndex = selectMenu.selectedIndex;\r\n const selectedTag = selectMenu.options[selectedIndex];\r\n if (selectedTag != null) {\r\n target = selectedTag.getAttribute('value');\r\n\t\t}\r\n\t\tif(target && target != \"\"){\r\n\t\t\twindow.location.href = target;\t\t\t\r\n\t\t}\r\n }\r\n}","import { Component } from '@opten/compiler/metadata/component';\r\nimport { isPad } from '../utilities/detection';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { addClass } from '@opten/dom/add-class';\r\n\r\ndeclare var ScrollMagic: any;\r\ndeclare var TweenMax: any;\r\ndeclare var Linear: any;\r\nconst scrollMagicController = new ScrollMagic.Controller();\r\n\r\n@Component({ className: 'js-magic-scroll', observe: true })\r\nexport class MagicScrollComponent {\r\n\tconstructor(private triggerElement: HTMLElement) {\r\n\t\tconst scene = this.triggerElement.getAttribute('data-magic-scene');\r\n\t\tif (scene != null) {\r\n\t\t\tswitch (scene.toUpperCase()) {\r\n\t\t\t\tcase 'KEYVISUAL':\r\n\t\t\t\t\tthis.initSceneKeyvisual();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'STICKY':\r\n\t\t\t\t\tthis.initSceneSticky();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'CLASSTOGGLE':\r\n\t\t\t\t\tthis.initSceneClassToggle();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\r\n\tprivate initSceneKeyvisual() {\r\n\t\tconst targetElements = Array.from(\r\n\t\t\tthis.triggerElement.querySelectorAll(\r\n\t\t\t\t'.js-magic-scroll-target'\r\n\t\t\t)\r\n\t\t);\r\n\r\n\r\n\t\t//spacingTop = 0;\r\n\t\ttargetElements.forEach(target => {\r\n\t\t\tlet scene = this.setSceneKeyvisual(target);\r\n\t\t\twindow.addEventListener('resize', () => {\r\n\t\t\t\tscene.destroy(true);\r\n\t\t\t\tscene = this.setSceneKeyvisual(target);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\tprivate setSceneKeyvisual(target: HTMLElement) {\r\n\t\tlet offset = getSceneKeyvisualOffset();\r\n\t\tlet cssTransformation = {};\r\n\t\tlet indicatorsName = \"keyvisual tween\";\r\n\t\tif (hasClass(target, 'c-keyvisual__image__dots-picture')) {\r\n\t\t\tindicatorsName += \" dots-picture\"\r\n\t\t\tcssTransformation = { marginTop: getSceneKeyVisualSpacingTop() + \"px\" };\r\n\t\t\tif (window.innerWidth >= 1370) {\r\n\t\t\t\tcssTransformation = { marginTop: getSceneKeyVisualSpacingTop() + \"px\", transform: \"translate3d(70%,30%,0)\" }\r\n\t\t\t}\r\n\t\t\telse if (window.innerWidth >= 1200) {\r\n\t\t\t\tcssTransformation = { marginTop: getSceneKeyVisualSpacingTop() + \"px\", transform: \"translate3d(70%,30%,0) scale(0.8)\" }\r\n\t\t\t}\r\n\t\t\telse if (window.innerWidth >= 1024) {\r\n\t\t\t\tcssTransformation = { marginTop: getSceneKeyVisualSpacingTop() + \"px\", transform: \"translate3d(70%,10%,0) scale(0.7)\" }\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tcssTransformation = { width: \"100%\", marginTop: getSceneKeyVisualSpacingTop() + \"px\" };//, transform: \"translate3d(0,\" + getSceneKeyVisualSpacingTop() + \"px,0)\" }\r\n\t\t}\r\n\t\tconst classToToggle = 'is--sticky';\r\n\t\treturn new ScrollMagic.Scene({\r\n\t\t\ttriggerElement: this.triggerElement,\r\n\t\t\tduration: '100%',\r\n\t\t\toffset: offset\r\n\t\t})\r\n\t\t\t.setClassToggle(this.triggerElement, classToToggle)\r\n\r\n\t\t\t.setTween(\r\n\t\t\t\tTweenMax.to(target, 0.3, {\r\n\t\t\t\t\tcss: cssTransformation,\r\n\t\t\t\t\tease: Linear.easeNone\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t\t//.addIndicators({ name: indicatorsName })\r\n\t\t\t.addTo(scrollMagicController);\r\n\t}\r\n\r\n\tprivate initSceneClassToggle() {\r\n\t\tconst classToToggle =\r\n\t\t\tthis.triggerElement.getAttribute('data-magic-class-toggle') ||\r\n\t\t\t'is-animating';\r\n\t\tconst triggerHook =\r\n\t\t\tthis.triggerElement.getAttribute('data-magic-trigger-hook') ||\r\n\t\t\t'0.9';\r\n\t\tconst offset =\r\n\t\t\tthis.triggerElement.getAttribute('data-magic-offset') || '0';\r\n\r\n\t\tconst scene = new ScrollMagic.Scene({\r\n\t\t\ttriggerElement: this.triggerElement,\r\n\t\t\ttriggerHook: parseFloat(triggerHook),\r\n\t\t\toffset\r\n\t\t})\r\n\t\t\t.setClassToggle(this.triggerElement, classToToggle)\r\n\t\t\t.reverse(false)\r\n\t\t\t.addTo(scrollMagicController);\r\n\r\n\t}\r\n\r\n\tprivate initSceneSticky() {\r\n\t\tconst classToStickyIn ='is--sticky';\r\n\t\tconst classStickyOut = 'is--sticky--out'\r\n\t\tconst windowWidth = window.innerWidth;\r\n\t\tlet offset = 40;\r\n\t\tlet offsetOut = this.triggerElement.getBoundingClientRect().height;\r\n\t\tlet triggerHook = 0;\r\n\r\n\t\tif(windowWidth >= 1370){\r\n\t\t\toffset = 90;\r\n\t\t\toffsetOut -= 120;\r\n\t\t}\r\n\t\telse if(windowWidth >= 1024){\r\n\t\t\toffset = 70;\r\n\t\t\toffsetOut -= 100;\r\n\t\t}\r\n\t\telse{\r\n\t\t\toffsetOut -= 70;\r\n\t\t}\r\n\t\tif(windowWidth < 1200){\r\n\t\t\ttriggerHook = 75 / window.innerHeight;\r\n\t\t}\r\n\r\n\t\t//const id = this.triggerElement.hasAttribute('id') ? \" with id: \" + this.triggerElement.getAttribute('id') : '';\r\n\r\n\t\tconst sceneOne = new ScrollMagic.Scene({\r\n\t\t\ttriggerElement: this.triggerElement,\r\n\t\t\ttriggerHook: triggerHook,\r\n\t\t\toffset: offset\r\n\t\t})\r\n\t\t\t.setClassToggle(this.triggerElement, classToStickyIn)\r\n\t\t\t.addTo(scrollMagicController)\r\n\t\t\t//.addIndicators({ name: 'sticky scene' + id });\r\n\r\n\t\tconst sceneTwo = new ScrollMagic.Scene({\r\n\t\t\ttriggerElement: this.triggerElement,\r\n\t\t\ttriggerHook: triggerHook,\r\n\t\t\toffset: offsetOut\r\n\t\t})\r\n\t\t\t.setClassToggle(this.triggerElement, classStickyOut)\r\n\t\t\t.addTo(scrollMagicController)\r\n\t\t\t//.addIndicators({ name: 'sticky scene out' + id });\t\r\n\t}\r\n\r\n\r\n}\r\n\r\nexport function getSceneKeyvisualOffset(): number {\r\n\tlet offset = (window.innerHeight\r\n\t\t|| document.documentElement.clientHeight\r\n\t\t|| document.body.clientHeight) / 100 * 40;\r\n\tif (isPad()) {\r\n\t\toffset -= 75;\r\n\t}\r\n\telse if (isPad() == false) {\r\n\t\toffset -= 95;\r\n\t}\r\n\treturn offset;\r\n}\r\n\r\nexport function getSceneKeyVisualSpacingTop(): number {\r\n\tlet spacingTop = 0;//120;\r\n\tconst windowWidth = window.innerWidth;\r\n\r\n\t// if (windowWidth >= 1200 && windowWidth < 1370) {\r\n\t// \tspacingTop = 110;\r\n\t// }\r\n\t// else \r\n\tif (windowWidth >= 1024 && windowWidth < 1370) {\r\n\t\tspacingTop -=30;\r\n\t}\r\n\telse if(windowWidth >= 1370){\r\n\t\tspacingTop -= 10;\r\n\t}\r\n\t// else{\r\n\t// \tspacingTop += 95;\r\n\t// }\r\n\tspacingTop += (window.innerHeight\r\n\t\t|| document.documentElement.clientHeight\r\n\t\t|| document.body.clientHeight);\r\n\treturn spacingTop;\r\n}\r\n","\r\nimport { Component } from '@opten/compiler/metadata/component';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { isMobile } from '../../../../Opten.HypothekarbankLenzburg.Web.Static/app/utilities/detection';\r\n\r\n@Component({ className: 'js-masonry-container', observe: true })\r\nexport class MasonryComponent {\r\n\tmasonryElementsLeft: Element[];\r\n\tmasonryElementsRight: Element[];\r\n\tmasonryImageElements: Element[];\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tvar masonryElements= Array.from( element.getElementsByClassName('js-masonry-item'));\t\t\r\n\t\tif(masonryElements && masonryElements.length > 0){\r\n\t\t\tthis.masonryElementsLeft= masonryElements.filter(o => hasClass(o,'js-masonry-item--left'));\r\n\t\t\tthis.masonryElementsRight = masonryElements.filter(o => hasClass(o,'js-masonry-item--right'));\r\n\t\t}\r\n\r\n\t\tthis.initMasonryContainer();\t\t\r\n\t\twindow.addEventListener('resize', () => this.initMasonryContainer());\r\n\t}\r\n\r\n\tprivate initMasonryContainer(){\r\n\t\tif(this.masonryElementsRight && this.masonryElementsLeft){\r\n\t\t\tthis.element.style.maxHeight = '1500px';\r\n\t\t\tlet heightLeft = 5;\r\n\t\t\tlet heightRight = 5;\r\n\t\t\tthis.masonryElementsLeft.forEach(o => heightLeft += o.getBoundingClientRect().height);\r\n\t\t\tthis.masonryElementsRight.forEach(o => heightRight += o.getBoundingClientRect().height);\r\n\t\t\t\r\n\t\t\tconst newMaxHeightContainer = isMobile() ? 'none' : Math.max(heightLeft, heightRight) + 'px';\r\n\t\t\tthis.element.style.maxHeight = newMaxHeightContainer;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t// private init() {\r\n\t// \tvar rootElements = document.getElementsByClassName('masonry-root');\r\n\t// \troots = Array.prototype.map.call(rootElements, function (rootElement) {\r\n\t// \t\tvar cellElements = rootElement.getElementsByClassName('masonry-cell');\r\n\t// \t\tvar cells = Array.prototype.map.call(cellElements, function (cellElement) {\r\n\t// \t\t\tvar style = getComputedStyle(cellElement);\r\n\t// \t\t\treturn {\r\n\t// \t\t\t\t'element': cellElement,\r\n\t// \t\t\t\t'outerHeight': parseInt(style.marginTop) + cellElement.offsetHeight + parseInt(style.marginBottom)\r\n\t// \t\t\t};\r\n\t// \t\t});\r\n\t// \t\treturn {\r\n\t// \t\t\t'element': rootElement,\r\n\t// \t\t\t'noOfColumns': 0,\r\n\t// \t\t\t'cells': cells\r\n\t// \t\t};\r\n\t// \t});\r\n\r\n\t// \t// do the first layout\r\n\t// \t//this.handleResize();\r\n\t// }\r\n\r\n\t// private handleResize(){\r\n\r\n\t// }\r\n\r\n\t// private handleResize() {\r\n\t// \tfor (let root of roots) {\r\n\r\n\t// \t\t// only layout when the number of columns has changed\r\n\t// \t\tvar newNoOfColumns = Math.floor(root.element.offsetWidth / minColWidth);\r\n\t// \t\tif (newNoOfColumns != root.noOfColumns) {\r\n\r\n\t// \t\t\t// initialize\r\n\t// \t\t\troot.noOfColumns = newNoOfColumns;\r\n\t// \t\t\tvar columns = Array.from(new Array(root.noOfColumns)).map(function (column) {\r\n\t// \t\t\t\treturn {\r\n\t// \t\t\t\t\t'cells': new Array(),\r\n\t// \t\t\t\t\t'outerHeight': 0\r\n\t// \t\t\t\t};\r\n\t// \t\t\t});\r\n\r\n\t// \t\t\t// divide...\r\n\t// \t\t\tfor (let cell of root.cells) {\r\n\t// \t\t\t\tvar minOuterHeight = Math.min(...columns.map(function (column) {\r\n\t// \t\t\t\t\treturn column.outerHeight;\r\n\t// \t\t\t\t}));\r\n\t// \t\t\t\tvar column = columns.find(function (column) {\r\n\t// \t\t\t\t\treturn column.outerHeight == minOuterHeight;\r\n\t// \t\t\t\t});\r\n\t// \t\t\t\tcolumn.cells.push(cell);\r\n\t// \t\t\t\tcolumn.outerHeight += cell.outerHeight;\r\n\t// \t\t\t}\r\n\r\n\t// \t\t\t// calculate masonry height\r\n\t// \t\t\tvar masonryHeight = Math.max(...columns.map(function (column) {\r\n\t// \t\t\t\treturn column.outerHeight;\r\n\t// \t\t\t}));\r\n\r\n\t// \t\t\t// ...and conquer\r\n\t// \t\t\tvar order = 0;\r\n\t// \t\t\tfor (let column of columns) {\r\n\t// \t\t\t\tfor (let cell of column.cells) {\r\n\t// \t\t\t\t\tcell.element.style.order = order++;\r\n\t// \t\t\t\t\t// set the cell's flex-basis to 0\r\n\t// \t\t\t\t\tcell.element.style.flexBasis = 0;\r\n\t// \t\t\t\t}\r\n\t// \t\t\t\t// set flex-basis of the last cell to fill the\r\n\t// \t\t\t\t// leftover space at the bottom of the column\r\n\t// \t\t\t\t// to prevent the first cell of the next column\r\n\t// \t\t\t\t// to be rendered at the bottom of this column\r\n\t// \t\t\t\tcolumn.cells[column.cells.length - 1].element.style.flexBasis = column.cells[column.cells.length - 1].element.offsetHeight + masonryHeight - column.outerHeight - 1 + 'px';\r\n\t// \t\t\t}\r\n\r\n\t// \t\t\t// set the masonry height to trigger\r\n\t// \t\t\t// re-rendering of all cells over columns\r\n\t// \t\t\t// one pixel more than the tallest column\r\n\t// \t\t\troot.element.style.maxHeight = masonryHeight + 1 + 'px';\r\n\r\n\t// \t\t\tconsole.log(columns.map(function (column) {\r\n\t// \t\t\t\treturn column.outerHeight;\r\n\t// \t\t\t}));\r\n\t// \t\t\tconsole.log(root.element.style.maxHeight);\r\n\t// \t\t}\r\n\t// \t}\r\n\t// }\r\n\r\n\r\n\r\n}","import { addClass } from '@opten/dom/add-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { addTransitionEndListener } from '@opten/transition/add-transition-end-listener';\r\n\r\nconst transitionDuration = 600;\r\n\r\nexport function showMegaDropdown(\r\n dropdown: HTMLElement,\r\n backdropElement?: HTMLElement,\r\n callback?: () => void\r\n) {\r\n if (callback) {\r\n addTransitionEndListener(\r\n dropdown,\r\n () => callback(),\r\n transitionDuration\r\n );\r\n }\r\n console.log('showMegaDropdown');\r\n addClass(dropdown, '--show');\r\n\r\n if (backdropElement) {\r\n addClass(backdropElement, '--show');\r\n }\r\n}\r\n\r\nexport function hideMegaDropdown(\r\n dropdown: HTMLElement,\r\n backdropElement?: HTMLElement,\r\n callback?: () => void\r\n) {\r\n // add fade-out class for faster animations\r\n addClass(dropdown, '--fade-out');\r\n removeClass(dropdown, '--show');\r\n\r\n if (backdropElement) {\r\n // add fade-out class for faster animations\r\n addClass(backdropElement, '--fade-out');\r\n removeClass(backdropElement, '--show');\r\n }\r\n\r\n addTransitionEndListener(\r\n dropdown,\r\n () => {\r\n // remove fade-out so if we hover again, they're still slow\r\n removeClass(dropdown, '--fade-out');\r\n\r\n if (backdropElement) {\r\n // remove fade-out so if we hover again, they're still slow\r\n removeClass(backdropElement, '--fade-out');\r\n }\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n },\r\n transitionDuration\r\n );\r\n}\r\n","export * from './navbar';\r\nexport * from './navbar-toggler';\r\nexport * from './navbar-mega-dropdown';\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\r\nimport { showMegaDropdown, hideMegaDropdown } from '../mega-dropdown';\r\nimport { isPad, isMobile } from '../../utilities/detection';\r\nimport { getStickyOffset } from '../../utilities/scroll-helper';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\n\r\nimport { ComponentRef } from '@opten/compiler/metadata/di';\r\nimport { Navbar } from './navbar';\r\n\r\nconst mouseEnterDuration = 300;\r\n\r\n// todo: update arias also in dekstop e.g. for mega-dropdown\r\n@Component({ className: 'js-navbar-mega-dropdown-toggler' })\r\nexport class NavbarMegaDropdown implements OnInit {\r\n\tprivate _backdropElement: HTMLElement;\r\n\tprivate _dropdownElement: HTMLElement;\r\n\tprivate _dropdownElements: Array;\r\n\tprivate _togglerElements: Array;\r\n\t@ComponentRef(Navbar) _navbar: Navbar;\r\n\r\n\tget _isOpen(): boolean {\r\n\t\treturn hasClass(this._dropdownElement, '--show');\r\n\t}\r\n\r\n\t// used to know if we're still animating\r\n\tprivate _timeout: number | null = null;\r\n\r\n\t// private _boundShow = this._handleShow.bind(this);\r\n\t// private _boundHide = this._handleHide.bind(this);\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis._backdropElement = document.getElementsByClassName(\r\n\t\t\t'js-navbar-backdrop'\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tthis._dropdownElement = element.parentElement.getElementsByClassName(\r\n\t\t\t'js-navbar-mega-dropdown'\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tthis._dropdownElements = Array.from(\r\n\t\t\tdocument.getElementsByClassName('js-navbar-mega-dropdown')\r\n\t\t) as Array;\r\n\r\n\t\tthis._togglerElements = Array.from(\r\n\t\t\tdocument.getElementsByClassName('js-navbar-mega-dropdown-toggler')\r\n\t\t) as Array;\r\n\t}\r\n\r\n\tonInit() {\r\n\t\tthis._handleResize();\r\n\t\tthis._addDesktopListeners();\r\n window.addEventListener('resize', () => this._handleResize());\r\n\t}\r\n\r\n private _addDesktopListeners() {\r\n\t\tthis.element.addEventListener('click', this._handleClick);\r\n\t\tthis._backdropElement.addEventListener(\r\n\t\t\t'click',\r\n\t\t\tthis._handleBackdropClick\r\n\t\t);\r\n\t}\r\n\r\n\tprivate _removeDesktopListener() {\r\n\t\tif (isPad()) {\r\n\t\t\tthis.element.removeEventListener('click', this._handleClick);\r\n\t\t\tthis._backdropElement.removeEventListener(\r\n\t\t\t\t'click',\r\n\t\t\t\tthis._handleBackdropClick\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _setContainerHeight() {\r\n\t\tconst container = this._dropdownElement\r\n\t\t\t.firstElementChild as HTMLElement;\r\n\r\n\t\tconst stickyOffset = getStickyOffset();\r\n if (container && stickyOffset) {\r\n if (!isMobile()) { \r\n container.style.maxHeight = `calc(100vh - ${stickyOffset}px)`;\r\n }\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _setDropdownPosition() {\r\n\t\tthis._dropdownElement.style.marginLeft = '0px';\r\n\t\tif (isPad() == false) {\r\n\t\t\tconst dropdownBox = this._dropdownElement.getBoundingClientRect();\r\n\t\t\tconst spacerRight = 40;\r\n\t\t\tif (dropdownBox.right > window.innerWidth - spacerRight) {\r\n\t\t\t\tthis._dropdownElement.style.marginLeft =\r\n\t\t\t\t\t'-' +\r\n\t\t\t\t\t(dropdownBox.left +\r\n\t\t\t\t\t\tdropdownBox.width -\r\n\t\t\t\t\t\t(window.innerWidth - spacerRight)) +\r\n\t\t\t\t\t'px';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _handleResize() {\r\n\t\tthis.hide();\r\n\r\n\t\tthis._setContainerHeight();\r\n\t\t\r\n\t\tthis._setDropdownPosition();\r\n\t}\r\n\r\n\tpublic toggle() {\r\n\t\tthis._isOpen ? this.hide() : this.show();\r\n\t}\r\n\r\n\tpublic show() {\r\n\t\tif (this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this.element.parentElement) { \r\n\t\t\taddClass(this.element.parentElement, 'is-active');\r\n\t\t}\r\n\t\taddClass(this._navbar.navbarElement, '--mega-dropdown--open');\r\n\t\tthis.element.setAttribute('aria-expanded', 'true');\r\n\t\t// check if another one is open, to hide it except the backdrop\r\n\t\tconst anyOpen =\r\n\t\t\tthis._dropdownElements.map(dropdown => hasClass(dropdown, '--show'))\r\n\t\t\t\t.length > 0;\r\n\r\n\t\tthis._dropdownElements.forEach(dropdown => {\r\n\t\t\tif (hasClass(dropdown, '--show')) {\r\n\t\t\t\thideMegaDropdown(dropdown);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tshowMegaDropdown(this._dropdownElement, this._backdropElement);\r\n\t}\r\n\r\n\tpublic hide() {\r\n\t\tif (!this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this.element.parentElement) { \r\n\t\t\tremoveClass(this.element.parentElement, 'is-active');\r\n\t\t}\r\n\t\tremoveClass(this._navbar.navbarElement, '--mega-dropdown--open');\r\n\t\tthis.element.setAttribute('aria-expanded', 'false');\r\n\r\n\t\thideMegaDropdown(this._dropdownElement, this._backdropElement);\r\n\t}\r\n\r\n\tprivate _handleClick = (event: MouseEvent) => {\r\n\t\tthis._resetAllAriaAttributes(event.target as HTMLElement);\r\n\t\tlet element = event.target as HTMLElement;\r\n\t\tevent.preventDefault();\r\n\r\n\t\tthis.toggle();\r\n\t};\r\n\r\n\tprivate _resetAllAriaAttributes(element: HTMLElement) {\r\n\t\tlet expanded: boolean;\r\n\t\tthis._togglerElements.forEach(toggler => {\r\n\t\t\ttoggler.setAttribute('aria-expanded', 'false');\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _handleBackdropClick = (event: MouseEvent) => {\r\n\t\tevent.preventDefault();\r\n\r\n\t\tthis.hide();\r\n\t};\r\n\r\n\tprivate _handleShow(event: MouseEvent) {\r\n\t\t// add an delay so we don't show it directly when the user\r\n\t\t// hover over the link\r\n\t\tif (this._timeout != null) {\r\n\t\t\t// don't do anything if we still animating\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst animate = !this._dropdownElement.style.transition;\r\n\r\n\t\tif (animate) {\r\n\t\t\tthis._timeout = setTimeout(\r\n\t\t\t\t() =>\r\n\t\t\t\t\tshowMegaDropdown(\r\n\t\t\t\t\t\tthis._dropdownElement,\r\n\t\t\t\t\t\tthis._backdropElement\r\n\t\t\t\t\t),\r\n\t\t\t\tmouseEnterDuration\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tshowMegaDropdown(this._dropdownElement, this._backdropElement);\r\n\t\t}\r\n\r\n\t\t// close the search so we don't have to handle the backdrop\r\n\t\t// by re-adding it if the search is open...\r\n\t\t// if (this._search) {\r\n\t\t// this._search.close();\r\n\t\t// }\r\n\t}\r\n\r\n\tprivate _handleHide(event: MouseEvent) {\r\n\t\tconst toElement = (event.relatedTarget || event) as HTMLElement;\r\n\r\n\t\t// nicer animation, if we go over an other element\r\n\t\t// we just hide it instead of animate it\r\n\t\tif (\r\n\t\t\t!toElement ||\r\n\t\t\t!this.isAncestorOfClass(\r\n\t\t\t\ttoElement,\r\n\t\t\t\t'js-navbar-mega-dropdown-toggler'\r\n\t\t\t)\r\n\t\t) {\r\n\t\t\tthis._dropdownElements.forEach(\r\n\t\t\t\tdropdown => (dropdown.style.transition = null)\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tthis._dropdownElements.forEach(\r\n\t\t\t\tdropdown => (dropdown.style.transition = 'none')\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis.hide();\r\n\r\n\t\tif (this._timeout) {\r\n\t\t\tclearTimeout(this._timeout);\r\n\t\t\tthis._timeout = null;\r\n\t\t}\r\n\t}\r\n\tprivate isAncestorOfClass(element: HTMLElement, childclass: string) {\r\n\t\tlet children = element.getElementsByClassName(childclass);\r\n\t\treturn children.length < 0;\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { ComponentRef, ComponentRefs } from '@opten/compiler/metadata/di';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\r\nimport { Navbar } from './navbar';\r\nimport { Search } from '../search';\r\nimport { isPad } from '../../utilities/detection';\r\nimport { NavbarMegaDropdown } from './navbar-mega-dropdown';\r\n\r\n@Component({ className: 'js-navbar-toggler' })\r\nexport class NavbarToggler implements OnInit {\r\n @ComponentRef(Navbar) _navbar: Navbar;\r\n @ComponentRef(Search) _search: Search;\r\n @ComponentRefs(NavbarMegaDropdown) _dropdowns: Array;\r\n\r\n constructor(private element: HTMLElement) {}\r\n\r\n onInit() {\r\n \r\n this.element.addEventListener('click', event => {\r\n event.preventDefault();\r\n\r\n if (isPad()) {\r\n // close the search so we don't have to handle the backdrop\r\n // by re-adding it if the search is open...\r\n if (this._search) {\r\n this._search.close();\r\n }\r\n\r\n this._navbar.toggle();\r\n } else {\r\n const target = event.target as HTMLElement;\r\n\r\n target.blur(); // remove focus\r\n\r\n this._dropdowns.forEach(dropdown => dropdown.hide());\r\n }\r\n });\r\n }\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { getSelectorElementFromElement } from '@opten/dom/get-selector-element-from-element';\r\nimport { Collapse } from '@opten/collapse/initializer';\r\nimport { isPad } from '../../utilities/detection';\r\nimport { lockScrollbar, unlockScrollbar } from '../../utilities/scroll-helper';\r\n\r\n// todo: @opten/typescrpit?\r\n@Component({ className: 'js-navbar' })\r\nexport class Navbar implements OnInit {\r\n\r\n\tprivate _header: HTMLElement;\r\n\r\n\tprivate _navbarTogglerElements: Array;\r\n\tprivate _navbar1stLevelElements: Array;\r\n\tprivate _navbar2ndLevelElements: Array;\r\n\tprivate _navbarHeaderElements: Array;\r\n\r\n\tprivate _mainScrollElement: HTMLElement;\r\n\tprivate _scrollableElements: Array;\r\n\tprivate _togglerElements: Array;\r\n\r\n\tprivate _isOpen: boolean = false;\r\n\tnavbarElement: HTMLElement;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.navbarElement = element;\r\n\r\n\t\t// todo: @ComponentRef()?\r\n\t\tthis._header = document.getElementsByClassName(\r\n\t\t\t'js-header'\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tthis._navbar1stLevelElements = Array.from(\r\n\t\t\tdocument.querySelectorAll(`[id^=\"c-navbar-nav-true\"]`)\r\n\t\t);\r\n\r\n\t\tthis._navbar2ndLevelElements = Array.from(\r\n\t\t\tdocument.querySelectorAll(`[id^=\"c-navbar-collapse-\"]`)\r\n\t\t);\r\n\r\n\t\t// not navbar because we could also have some in the header\r\n\t\tthis._navbarTogglerElements = Array.from(\r\n\t\t\tthis._header.querySelectorAll(`[data-toggle='navbar']`)\r\n\t\t);\r\n\r\n\t\tthis._navbarHeaderElements = Array.from(\r\n\t\t\tdocument.getElementsByClassName('js-navbar-header')\r\n\t\t) as Array;\r\n\r\n\t\tthis._mainScrollElement = Array.from(element.children).filter(o =>\r\n\t\t\thasClass(o, 'c-navbar__scrollable')\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tthis._scrollableElements = Array.from(\r\n\t\t\tthis.element.getElementsByClassName('c-navbar__scrollable')\r\n\t\t) as Array;\r\n\r\n\t\tthis._togglerElements = Array.from(\r\n\t\t\tdocument.getElementsByClassName('js-navbar-toggler')\r\n\t\t) as Array;\r\n\t}\r\n\r\n\tonInit() {\r\n\t\tthis._navbarTogglerElements.forEach(toggler => {\r\n toggler.addEventListener('click', event => {\r\n \r\n\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\tconst target = getSelectorElementFromElement(toggler);\r\n\r\n\t\t\t\tif (target) {\r\n\t\t\t\t\tthis._click(target);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis._handleResize();\r\n\t\twindow.addEventListener('resize', () => this._handleResize());\r\n\t}\r\n\r\n\tprivate _handleNavbarHeaderClick = (event: MouseEvent) => {\r\n\t\tevent.preventDefault();\r\n\t\taddClass((event.target as Element).parentElement, '--collapsed');\r\n\r\n\t\tthis._scrollableElements.forEach(scrollable =>\r\n\t\t\tthis._removeScrollable(scrollable)\r\n\t\t);\r\n\r\n\t\tthis._setScrollable(this._mainScrollElement);\r\n\t};\r\n\r\n\tprivate _addMobileListeners() {\r\n\t\t// if (isPad()) {\r\n\t\t// this._navbarHeaderElements.forEach(header =>\r\n\t\t// header.addEventListener('click', this._handleNavbarHeaderClick)\r\n\t\t// );\r\n\t\t// }\r\n\t}\r\n\r\n\tprivate _removeMobileListeners() {\r\n\t\t// if (!isPad()) {\r\n\t\t// this._navbarHeaderElements.forEach(header =>\r\n\t\t// header.removeEventListener(\r\n\t\t// 'click',\r\n\t\t// this._handleNavbarHeaderClick\r\n\t\t// )\r\n\t\t// );\r\n\t\t// }\r\n\t}\r\n\r\n\tprivate _handleResize() {\r\n\t\tif (this._isOpen) {\r\n\t\t\tthis.toggle();\r\n\t\t}\r\n\r\n\t\tif (isPad()) {\r\n\t\t\tthis._addMobileListeners();\r\n\r\n\t\t\tconst height = Math.round(\r\n\t\t\t\tthis._header.getBoundingClientRect().height\r\n\t\t\t);\r\n\r\n\t\t\t// make the headers same height as the header itself\r\n\t\t\tArray.from(\r\n\t\t\t\tthis.element.getElementsByClassName('c-navbar__header')\r\n\t\t\t).forEach(header => {\r\n\t\t\t\t(header as HTMLElement).style.height = `${height}px`;\r\n\t\t\t});\r\n\r\n\t\t\tthis._navbar1stLevelElements.forEach(navbar => {\r\n\t\t\t\tconst isOpen =\r\n\t\t\t\t\thasClass(\r\n\t\t\t\t\t\tdocument.querySelector(`a[href='${navbar.id}']`),\r\n\t\t\t\t\t\t'is--active'\r\n\t\t\t\t\t) || navbar.getElementsByClassName('is--active').length;\r\n\t\t\t\tconst collapseInstance = Collapse.getInstance(\r\n\t\t\t\t\tnavbar as HTMLElement\r\n\t\t\t\t);\r\n\t\t\t\tif (isOpen) {\r\n\t\t\t\t\tif (hasClass(navbar, 'collapse--show') == false) {\r\n\t\t\t\t\t\tcollapseInstance.show();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcollapseInstance.hide();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._navbar2ndLevelElements.forEach(element =>\r\n\t\t\t\tCollapse.getInstance(element as HTMLElement).destroy()\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tthis._removeMobileListeners();\r\n\r\n\t\t\t// reset height, because we don't need it\r\n\t\t\tthis._scrollableElements.forEach(\r\n\t\t\t\tscrollable => (scrollable.style.height = null)\r\n\t\t\t);\r\n\r\n\t\t\tthis._navbar1stLevelElements.forEach(navbar =>\r\n\t\t\t\tCollapse.getInstance(navbar as HTMLElement).destroy()\r\n\t\t\t);\r\n\r\n\t\t\tthis._navbar2ndLevelElements.forEach(element =>\r\n\t\t\t\tthis._collapse(\r\n\t\t\t\t\telement,\r\n\t\t\t\t\telement.getElementsByClassName('is-active').length > 0\r\n\t\t\t\t)\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic toggle() {\r\n\t\tthis._isOpen ? this.close() : this.open();\r\n\t}\r\n\r\n\tpublic open() {\r\n\t\tif (this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// mostly for iOS devices\r\n\t\tlockScrollbar(() => {\r\n\t\t\tremoveClass(this.element, '--collapsed');\r\n\r\n\t\t\t// set the width to the navbar-toggler\r\n\t\t\tconst left = Math.round(\r\n\t\t\t\tthis._togglerElements[0].getBoundingClientRect().left\r\n\t\t\t);\r\n\t\t\t/*this.element.style.width = `${left}px`;*/\r\n\r\n\t\t\tthis._togglerElements.forEach(toggler =>\r\n\t\t\t\taddClass(toggler, '--expanded')\r\n\t\t\t);\r\n\r\n\t\t\t// check if we're on a page (a container already has --scroll)\r\n\t\t\t// so we don't apply the scroll class otherwise we might cut off\r\n\t\t\t// a sub-navigation.\r\n\t\t\tconst hasScroll = this._scrollableElements.filter(o =>\r\n\t\t\t\thasClass(o, '--scroll')\r\n\t\t\t);\r\n\r\n\t\t\tif (!hasScroll.length) {\r\n\t\t\t\tthis._setScrollable(this._mainScrollElement);\r\n\t\t\t}\r\n\t\t\taddClass(this._header, '--expanded');\r\n\t\t\tthis._isOpen = true;\r\n\t\t});\r\n\t}\r\n\r\n\tpublic close() {\r\n\t\tif (!this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\taddClass(this.element, '--collapsed');\r\n\t\tthis.element.style.width = null; // reset to default\r\n\r\n\t\tthis._togglerElements.forEach(toggler =>\r\n\t\t\tremoveClass(toggler, '--expanded')\r\n\t\t);\r\n\r\n\t\t// mostly for iOS devices\r\n\t\tunlockScrollbar();\r\n\r\n\t\t// if (!isPad()) {\r\n\t\t// this._navbar1stLevelElements.forEach(navbar =>\r\n\t\t// Collapse.getInstance(navbar as HTMLElement).hide()\r\n\t\t// );\r\n\t\t// }\r\n\t\tremoveClass(this._header, '--expanded');\r\n\t\tthis._isOpen = false;\r\n\t}\r\n\r\n\tprivate _click(target: HTMLElement) {\r\n\t\tif (!this._isOpen) {\r\n\t\t\t// todo: better way? if we have a slower animation you see the other closing...\r\n\t\t\t// maybe we have some --collapsed in the cshtml\r\n\t\t\t// because we're on a certain page\r\n\t\t\t// so close all of them...\r\n\t\t\tthis._navbar2ndLevelElements.forEach(navbar =>\r\n\t\t\t\taddClass(navbar.firstElementChild, '--collapsed')\r\n\t\t\t);\r\n\r\n\t\t\tthis.open();\r\n\t\t}\r\n\r\n\t\tif (hasClass(target, '--collapsed')) {\r\n\t\t\tremoveClass(target, '--collapsed');\r\n\r\n\t\t\tconst scrollable = target.getElementsByClassName(\r\n\t\t\t\t'c-navbar__scrollable'\r\n\t\t\t)[0] as HTMLElement;\r\n\r\n\t\t\tthis._scrollableElements.forEach(o => this._removeScrollable(o));\r\n\t\t\tthis._setScrollable(scrollable);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _collapse(target: HTMLElement, show: boolean) {\r\n\t\tconst navbar = target.getElementsByClassName('c-navbar')[0];\r\n\r\n\t\tconst toggler = document.querySelector(\r\n\t\t\t`a[href='#${navbar.id}']`\r\n\t\t) as HTMLElement;\r\n\r\n\t\tif (show) {\r\n\t\t\tCollapse.getInstance(target as HTMLElement).show();\r\n\t\t} else {\r\n\t\t\tCollapse.getInstance(target as HTMLElement).hide();\r\n\t\t}\r\n\r\n\t\tthis._updateAria(toggler, show);\r\n\t}\r\n\r\n\tprivate _setScrollable(element: HTMLElement) {\r\n\t\tlet height = Math.round(this._header.getBoundingClientRect().height);\r\n\r\n\t\tconst titleElement = Array.from(\r\n\t\t\telement.parentElement.children\r\n\t\t).filter(o => hasClass(o, 'c-navbar__title'))[0];\r\n\r\n\t\tif (titleElement) {\r\n\t\t\theight += Math.round(titleElement.getBoundingClientRect().height);\r\n\t\t}\r\n\r\n\t\telement.style.height = `calc(100% - ${height}px)`;\r\n\r\n\t\tremoveClass(element, '--lock');\r\n\t\taddClass(element, '--scroll');\r\n\t}\r\n\r\n\tprivate _removeScrollable(element: HTMLElement) {\r\n\t\telement.style.height = null;\r\n\r\n\t\taddClass(element, '--lock');\r\n\t\tremoveClass(element, '--scroll');\r\n\t}\r\n\r\n\tprivate _updateAria(toggler: HTMLElement, isOpen: boolean) {\r\n\t\ttoggler.setAttribute('aria-expanded', isOpen.toString().toLowerCase());\r\n\t}\r\n}\r\n","export * from './search';\r\nexport * from './search-toggler';\r\n","import { NavbarMegaDropdown } from './../navbar/navbar-mega-dropdown';\r\nimport { Component } from '@opten/compiler/metadata/component';\r\nimport { ComponentRef, ComponentRefs } from '@opten/compiler/metadata/di';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\r\nimport { Navbar } from '../navbar';\r\nimport { Search, SearchDesktop } from './search';\r\nimport { isMobile } from '../../utilities/detection';\r\n\r\n\r\n@Component({ className: 'js-search-toggler' })\r\nexport class SearchToggler implements OnInit {\r\n @ComponentRef(Navbar) _navbar: Navbar;\r\n @ComponentRefs(NavbarMegaDropdown) _dropdowns: Array;\r\n @ComponentRef(Search) _search: Search;\r\n @ComponentRef(SearchDesktop) _searchDesktop: SearchDesktop;\r\n\r\n constructor(private element: HTMLElement) {}\r\n\r\n onInit() {\r\n this._search = new Search(document.getElementsByClassName('js-search')[0] as HTMLElement);\r\n this._searchDesktop = new SearchDesktop(document.getElementsByClassName('js-search-desktop')[0] as HTMLElement);\r\n this._handleResize();\r\n window.addEventListener('resize', () => this._handleResize());\r\n window.addEventListener('scroll', () => this._handleScroll());\r\n \r\n this.element.addEventListener('click', event => {\r\n event.preventDefault();\r\n if (isMobile()) {\r\n this._search.toggle();\r\n } else { \r\n this._searchDesktop.toggle();\r\n }\r\n\r\n if (this._dropdowns && this._dropdowns.length) {\r\n this._dropdowns.forEach(dropdown => dropdown.hide());\r\n }\r\n });\r\n }\r\n private _handleResize() {\r\n this._search.close();\r\n this._searchDesktop.close();\r\n\t}\r\n\r\n private _handleScroll() {\r\n this._searchDesktop.close();\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { OnInit } from '@opten/compiler/metadata/lifecycle';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { showMegaDropdown, hideMegaDropdown } from '../mega-dropdown';\r\nimport { lockScrollbar, unlockScrollbar } from '../../utilities/scroll-helper';\r\n\r\n@Component({ className: 'js-search'})\r\nexport class Search implements OnInit {\r\n\tget _isOpen(): boolean {\r\n\t\treturn hasClass(this.element, '--show');\r\n\t}\r\n\r\n\tprivate _backdropElement: HTMLElement;\r\n\r\n\tconstructor(private element: HTMLElement) {}\r\n\r\n\tonInit() {\r\n\t\t// todo: own backdrop or resuse navbar?\r\n\t\tthis._backdropElement = document.getElementsByClassName(\r\n\t\t\t'js-search-backdrop'\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tthis._backdropElement.addEventListener('click', () => {\r\n\t\t\tconsole.log('click');\r\n\t\t\t// this.close();\r\n\t\t\tthis.close();\r\n\t\t});\r\n\t}\r\n\r\n\tpublic toggle() {\r\n\t\tthis._isOpen ? this.close() : this.open();\r\n\t}\r\n\r\n\tpublic open() {\r\n\t\tif (this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// mostly for iOS devices\r\n\t\tlockScrollbar(() => {\r\n\t\t\t// show and then focus search\r\n\t\t\tshowMegaDropdown(this.element, this._backdropElement, () =>\r\n\t\t\t\tthis.element.getElementsByTagName('input')[0].focus()\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\tpublic close() {\r\n\t\tif (!this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// mostly for iOS devices\r\n\t\tunlockScrollbar();\r\n\r\n\t\thideMegaDropdown(this.element, this._backdropElement);\r\n\t}\r\n}\r\n\r\n@Component({ className: 'js-search-desktop'})\r\nexport class SearchDesktop implements OnInit {\r\n\tget _isOpen(): boolean {\r\n\t\treturn hasClass(this.element, '--show');\r\n\t}\r\n\r\n\tprivate _backdropElement: HTMLElement;\r\n\r\n\tconstructor(private element: HTMLElement) {}\r\n\r\n\tonInit() {\r\n\t\t// todo: own backdrop or resuse navbar?\r\n\t\tthis._backdropElement = document.getElementsByClassName(\r\n\t\t\t'js-search-backdrop'\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tthis._backdropElement.addEventListener('click', () => {\r\n\t\t\tconsole.log('click');\r\n\t\t\tthis.close();\r\n\t\t});\r\n\t}\r\n\r\n\tpublic toggle() {\r\n\t\tthis._isOpen ? this.close() : this.open();\r\n\t}\r\n\r\n\tpublic open() {\r\n\t\tif (this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!this._backdropElement || this._backdropElement == undefined) {\r\n\t\t\tthis._backdropElement = document.getElementsByClassName(\r\n\t\t\t\t'js-search-backdrop'\r\n\t\t\t)[0] as HTMLElement;\r\n\t\t}\r\n\t\t// show and then focus search\r\n\t\tshowMegaDropdown(this.element, this._backdropElement, () =>\r\n\t\t\tthis.element.getElementsByTagName('input')[0].focus()\r\n\t\t);\r\n\t}\r\n\r\n\tpublic close() {\r\n\t\tif (!this._isOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!this._backdropElement || this._backdropElement == undefined) {\r\n\t\t\tthis._backdropElement = document.getElementsByClassName(\r\n\t\t\t\t'js-search-backdrop'\r\n\t\t\t)[0] as HTMLElement;\r\n\t\t}\r\n\t\thideMegaDropdown(this.element, this._backdropElement);\r\n\t}\r\n}","export const MOBILE_WIDTH = 768;\r\nexport const TINY_MOBILE_WIDTH = 600;\r\nexport const PAD_WIDTH = 1200;\r\nexport const PAD_WIDTH_SMALL = 1024;\r\n\r\n// todo: something like Angular? Breakpoint detection?\r\nexport function isMobile() {\r\n return window.innerWidth < MOBILE_WIDTH;\r\n}\r\n\r\n// todo: something like Angular? Breakpoint detection?\r\nexport function isTinyMobile() {\r\n return window.innerWidth <= TINY_MOBILE_WIDTH;\r\n}\r\n\r\n// todo: something like Angular? Breakpoint detection?\r\nexport function isPad() {\r\n return window.innerWidth < PAD_WIDTH;\r\n}\r\n\r\nexport function isPadSmall() {\r\n return window.innerWidth < PAD_WIDTH_SMALL;\r\n}","import { getWindowScrollTop } from '@opten/dom/get-window-scroll-top';\r\nimport { parseCssUnit } from '@opten/number/parse-css-unit';\r\n\r\nimport { isPad, isTinyMobile } from './detection';\r\n\r\n// todo: @opten/typings?\r\n\r\nexport function lockScrollbar(\r\n\tcallback: () => void,\r\n\tbodyElement: HTMLElement = document.body\r\n) {\r\n\tif (!isPad()) {\r\n\t\tcallback();\r\n\t\treturn;\r\n\t}\r\n\r\n\t// preserve the current scrolling because `--navbar--expanded`\r\n\t// fixes the body, so iOS doesn't scroll in the background!\r\n\tconst scroll = getWindowScrollTop();\r\n\r\n\tif (scroll >= 0) {\r\n\t\trequestAnimationFrame(() => {\r\n\t\t\tif (!isTinyMobile()) {\r\n\t\t\t\tbodyElement.style.top = `${clampScroll(scroll)}px`;\r\n\r\n\t\t\t\t// todo: cache old values?\r\n\t\t\t\tdocument.body.style.height = '100%';\r\n\t\t\t\tdocument.documentElement.style.height = '100%';\r\n\r\n\t\t\t\tbodyElement.style.position = 'fixed';\r\n\t\t\t\tbodyElement.style.width = '100%';\r\n\t\t\t\tbodyElement.style.height = '100%';\r\n\t\t\t\tbodyElement.style.overflow = 'hidden';\r\n\t\t\t}\r\n\r\n\t\t\t// some weird behaviour in iOS if we set the element fixed\r\n\t\t\t// the navbar closes immediately, so we have a timeout...\r\n\t\t\tsetTimeout(() => callback(), 150);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport function unlockScrollbar(bodyElement: HTMLElement = document.body) {\r\n\r\n\tif (!isTinyMobile()) {\r\n\t\t// preserve the cached scroll, so we can scroll\r\n\t\t// back to this state.\r\n\t\tconst scroll = clampScroll(parseCssUnit(bodyElement.style.top));\r\n\t\tconst paddingTop = parseCssUnit(bodyElement.style.paddingTop);\r\n\t\tbodyElement.style.top = null;\r\n\r\n\t\t// todo: reset old values?\r\n\t\tbodyElement.style.position = null;\r\n\t\tbodyElement.style.width = null;\r\n\t\tbodyElement.style.height = null;\r\n\t\tbodyElement.style.overflow = null;\r\n\t\tbodyElement.removeAttribute('style');\r\n\t\tbodyElement.style.paddingTop = paddingTop + 'px';\r\n\r\n\t\tif (scroll >= 0) {\r\n\t\t\tscrollTo(0, scroll);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function getStickyOffset() {\r\n\tconst elements: Array = [];\r\n\r\n\t// todo: better way?\r\n\tconst header = document.getElementsByClassName(\r\n\t\t'js-header'\r\n\t)[0] as HTMLElement;\r\n\tconst cookieConsent = document.getElementsByClassName(\r\n\t\t'js-cookie-consent'\r\n\t)[0] as HTMLElement;\r\n\r\n\tif (header) {\r\n\t\telements.push(header);\r\n\t}\r\n\tif (cookieConsent) {\r\n\t\telements.push(cookieConsent);\r\n\t}\r\n\r\n\treturn Math.round(\r\n\t\telements\r\n\t\t\t.map(o => o.getBoundingClientRect().height)\r\n\t\t\t.reduce((pv, cv) => pv + cv, 0)\r\n\t);\r\n}\r\n\r\nfunction clampScroll(scroll: number) {\r\n\treturn scroll === 0 ? scroll : scroll * -1;\r\n}","export function easeInOutQuad(\n\ttimeElapsed: number,\n\tstart: number,\n\tdistance: number,\n\tduration: number\n) {\n\ttimeElapsed /= duration / 2;\n\tif (timeElapsed < 1) {\n\t\treturn (distance / 2) * timeElapsed * timeElapsed + start;\n\t}\n\ttimeElapsed--;\n\treturn (-distance / 2) * (timeElapsed * (timeElapsed - 2) - 1) + start;\n}\n","export function linearTween(\n\ttimeElapsed: number,\n\tstart: number,\n\tdistance: number,\n\tduration: number\n) {\n\treturn (distance * timeElapsed) / duration + start;\n}\n","import { Component } from '@opten/compiler/metadata/component';\nimport { Collapse } from './initializer';\n\n@Component({ className: 'js-collapse' })\nexport class CollapseComponent {\n\tcollapse: Collapse;\n\tconstructor(private element: HTMLElement) {\n\t\tthis.collapse = new Collapse(element, {});\n\t}\n}\n","import { addClass } from '@opten/dom/add-class';\nimport { hasClass } from '@opten/dom/has-class';\nimport { removeClass } from '@opten/dom/remove-class';\n\nimport { getSelectorElementFromElement } from '@opten/dom/get-selector-element-from-element';\nimport { addTransitionEndListener } from '@opten/transition/add-transition-end-listener';\n\nimport { eventNamespaceFactory } from '@opten/events/event-namespace-factory';\n\nconst stringCollapse = 'Collapse';\n\nexport interface CollapseOptions {\n\tcomponentClass?: string;\n\tactiveClass?: string;\n\tactiveParentClass?: string;\n\tshowClass?: string;\n\tshowClassDesktop?: string;\n\tdesktopWidth?: number;\n\tcollapsingClass?: string;\n\tparentElement?: HTMLElement;\n\ttransitionDuration?: number;\n\tanimateProp?: 'height' | 'width' | false;\n\tisHideable?: boolean;\n\tcloseSiblings?: boolean;\n\tuseShowClassDesktop?: boolean;\n\tdataParentSelector?: string;\n\tdataTargetSelector?: string;\n\tdataToggleSelector?: string;\n\threfSelector?: string;\n}\n\nexport class Collapse {\n\t// TODO: Uggly naming\n\tget toggles(): HTMLElement[] {\n\t\treturn this.triggers;\n\t}\n\n\tconstructor(public element: HTMLElement, options?: CollapseOptions) {\n\t\tthis.options = {\n\t\t\t...this.options,\n\t\t\t...options,\n\t\t};\n\n\t\tif (!this.options.parentElement) {\n\t\t\tthis.options.parentElement = getSelectorElementFromElement(\n\t\t\t\telement,\n\t\t\t\tthis.options.dataParentSelector,\n\t\t\t\tfalse\n\t\t\t);\n\t\t}\n\n\t\tthis.init();\n\t}\n\tprivate options: CollapseOptions = {\n\t\tactiveClass: 'is-active',\n\t\tactiveParentClass: 'is-active',\n\t\tanimateProp: 'height',\n\t\tcollapsingClass: 'collapse--collapsing',\n\t\tcomponentClass: 'collapse',\n\t\tshowClass: 'collapse--show',\n\t\tshowClassDesktop: 'collapse--md-show',\n\t\tdesktopWidth: 1024,\n\t\ttransitionDuration: 600,\n\t\tisHideable: true,\n\t\tcloseSiblings: true,\n\t\tuseShowClassDesktop: false,\n\t\tdataParentSelector: 'data-parent',\n\t\tdataTargetSelector: 'data-target',\n\t\tdataToggleSelector: 'data-toggle',\n\t\threfSelector: 'href',\n\t};\n\n\tprivate parent: HTMLElement;\n\tprivate triggers: HTMLElement[];\n\n\tprivate target: Element;\n\tprivate isTransitioning = false; // when true it will prevent click handlers\n\n\t// event names\n\tprivate eventNamespaceFn = eventNamespaceFactory('opten.collapse');\n\n\tstatic getInstance(\n\t\telement: HTMLElement,\n\t\toptions?: CollapseOptions,\n\t\tcreate = true\n\t) {\n\t\tlet data = element[stringCollapse] as Collapse;\n\n\t\tif (!data && create) {\n\t\t\tdata = new Collapse(element, options);\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tisOpen(): boolean {\n\t\tif (\n\t\t\tthis.options.useShowClassDesktop &&\n\t\t\twindow.outerWidth >= this.options.desktopWidth &&\n\t\t\thasClass(this.element, this.options.showClassDesktop)\n\t\t) {\n\t\t\taddClass(this.element, this.options.showClass);\n\t\t}\n\t\tremoveClass(this.element, this.options.showClassDesktop);\n\t\treturn hasClass(this.element, this.options.showClass);\n\t}\n\n\ttoggle() {\n\t\tif (this.isOpen()) {\n\t\t\tif (this.options.isHideable) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t} else {\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\tshow() {\n\t\tif (this.isTransitioning || this.isOpen()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.options.closeSiblings && this.parent) {\n\t\t\tconst selector = `[${this.options.dataParentSelector}=\"#${this.parent.id}\"]`;\n\t\t\tconst actives = Array.from(\n\t\t\t\tthis.parent.querySelectorAll(\n\t\t\t\t\t`${selector}.${this.options.showClass}, ${selector}.${this.options.collapsingClass}`\n\t\t\t\t)\n\t\t\t).filter((active) => active !== this.target);\n\n\t\t\tif (actives && actives.length) {\n\t\t\t\tconst anyTransitioning = actives.filter((active) => {\n\t\t\t\t\tconst collapseInstance = active[stringCollapse] as Collapse;\n\t\t\t\t\treturn collapseInstance && collapseInstance.isTransitioning;\n\t\t\t\t});\n\n\t\t\t\tif (anyTransitioning.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tactives.forEach((active) =>\n\t\t\t\t\tCollapse.getInstance(active as HTMLElement).hide()\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tthis._handleShow(this.element, this.triggers);\n\t}\n\n\thide() {\n\t\tif (this.isTransitioning || !this.isOpen()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._handleClose(this.element, this.triggers);\n\t}\n\n\tdestroy() {\n\t\tconst element = this.element;\n\n\t\tif (element[stringCollapse]) {\n\t\t\telement[stringCollapse] = null;\n\n\t\t\tremoveClass(element, this.options.componentClass);\n\t\t\tremoveClass(element, this.options.collapsingClass);\n\t\t\tremoveClass(element, this.options.showClass);\n\n\t\t\tif (this.options.animateProp) {\n\t\t\t\telement.style[this.options.animateProp] = null;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate init() {\n\t\t// todo: only initalize once, like bootstrap does it?\n\t\tthis.triggers = Array.from(\n\t\t\tdocument.querySelectorAll(\n\t\t\t\t`[${this.options.hrefSelector}=\"#${this.element.id}\"], [${this.options.dataTargetSelector}=\"#${this.element.id}\"]`\n\t\t\t)\n\t\t);\n\n\t\t// todo: why do we need that?\n\t\tconst toggles = Array.from(\n\t\t\tdocument.querySelectorAll(\n\t\t\t\t`[${this.options.dataToggleSelector}=\"collapse\"]`\n\t\t\t)\n\t\t);\n\t\tfor (const toggle of toggles) {\n\t\t\tconst target = getSelectorElementFromElement(\n\t\t\t\ttoggle,\n\t\t\t\tthis.options.dataTargetSelector\n\t\t\t);\n\t\t\tif (target !== null && target === this.element) {\n\t\t\t\tthis.target = target;\n\t\t\t\tthis.triggers.push(toggle as HTMLElement);\n\t\t\t}\n\t\t}\n\n\t\tthis.parent = this.options.parentElement;\n\n\t\t// init\n\t\tif (!(stringCollapse in this.element)) {\n\t\t\t// prevent adding event handlers twice\n\t\t\tthis.triggers.forEach((trigger) =>\n\t\t\t\ttrigger.addEventListener('click', this.handleClick, false)\n\t\t\t);\n\t\t}\n\n\t\tif (this.parent) {\n\t\t\tArray.from(\n\t\t\t\tthis.parent.querySelectorAll(\n\t\t\t\t\t`[${this.options.dataToggleSelector}=\"collapse\"][${this.options.dataParentSelector}=\"#${this.parent.id}\"]`\n\t\t\t\t)\n\t\t\t).forEach((element) => {\n\t\t\t\tthis._addAriaAndCollapsedClass(\n\t\t\t\t\tgetSelectorElementFromElement(\n\t\t\t\t\t\telement,\n\t\t\t\t\t\tthis.options.dataTargetSelector\n\t\t\t\t\t),\n\t\t\t\t\t[element]\n\t\t\t\t);\n\t\t\t});\n\t\t} else {\n\t\t\tthis._addAriaAndCollapsedClass(this.element, this.triggers);\n\t\t}\n\n\t\taddClass(this.element, this.options.componentClass);\n\n\t\tthis.element[stringCollapse] = this;\n\t}\n\n\tprivate handleClick = (event: Event) => {\n\t\t// preventDefault only for elements (which change the URL) not inside the collapsible element\n\t\tconst trigger = event && (event.currentTarget as HTMLElement);\n\t\tif (trigger && trigger.tagName === 'A') {\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\tconst target = getSelectorElementFromElement(\n\t\t\ttrigger,\n\t\t\tthis.options.dataTargetSelector\n\t\t);\n\t\tlet data = target[stringCollapse] as Collapse;\n\n\t\tif (!data) {\n\t\t\tdata = trigger[stringCollapse] as Collapse;\n\t\t}\n\n\t\tif (target) {\n\t\t\tCollapse.getInstance(target, data.options).toggle();\n\t\t}\n\t};\n\n\tprivate _handleShow(collapseElement: HTMLElement, triggers?: Element[]) {\n\t\tthis.eventNamespaceFn(collapseElement, 'show');\n\n\t\tremoveClass(collapseElement, this.options.componentClass);\n\t\taddClass(collapseElement, this.options.collapsingClass);\n\t\tif (this.options.animateProp) {\n\t\t\tcollapseElement.style[this.options.animateProp] =\n\t\t\t\tcollapseElement.scrollHeight + 'px';\n\t\t}\n\n\t\tif (triggers && triggers.length) {\n\t\t\ttriggers.forEach((trigger) => {\n\t\t\t\taddClass(trigger, this.options.activeClass);\n\t\t\t\ttrigger.setAttribute('aria-expanded', 'true');\n\t\t\t});\n\t\t}\n\n\t\tif (this.parent) {\n\t\t\taddClass(this.parent, this.options.activeClass);\n\t\t}\n\n\t\tthis.isTransitioning = true;\n\n\t\taddTransitionEndListener(\n\t\t\tcollapseElement,\n\t\t\t() => {\n\t\t\t\tremoveClass(collapseElement, this.options.collapsingClass);\n\t\t\t\taddClass(collapseElement, this.options.componentClass);\n\t\t\t\taddClass(collapseElement, this.options.showClass);\n\n\t\t\t\tthis.isTransitioning = false;\n\t\t\t\tif (this.options.animateProp) {\n\t\t\t\t\tcollapseElement.style[this.options.animateProp] = null;\n\t\t\t\t}\n\n\t\t\t\tthis.eventNamespaceFn(collapseElement, 'shown');\n\t\t\t},\n\t\t\tthis.options.transitionDuration\n\t\t);\n\t}\n\n\tprivate _handleClose(collapseElement: HTMLElement, triggers?: Element[]) {\n\t\tthis.eventNamespaceFn(collapseElement, 'hide');\n\n\t\tif (this.options.animateProp) {\n\t\t\tcollapseElement.style[this.options.animateProp] =\n\t\t\t\tcollapseElement.scrollHeight + 'px';\n\t\t}\n\n\t\taddClass(collapseElement, this.options.collapsingClass);\n\t\tremoveClass(collapseElement, this.options.componentClass);\n\t\tremoveClass(collapseElement, this.options.showClass);\n\t\t// force reflow to enable transition\n\t\tcollapseElement.offsetWidth; // tslint:disable-line\n\n\t\tif (triggers && triggers.length) {\n\t\t\ttriggers.forEach((trigger) => {\n\t\t\t\tconst target = getSelectorElementFromElement(\n\t\t\t\t\ttrigger,\n\t\t\t\t\tthis.options.dataTargetSelector\n\t\t\t\t);\n\n\t\t\t\tif (target !== null) {\n\t\t\t\t\tif (!hasClass(target, this.options.showClass)) {\n\t\t\t\t\t\tremoveClass(trigger, this.options.activeClass);\n\t\t\t\t\t\ttrigger.setAttribute('aria-expanded', 'false');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (this.parent) {\n\t\t\tconst selector = `[${this.options.dataParentSelector}=\"#${this.parent.id}\"]`;\n\t\t\tconst actives = Array.from(\n\t\t\t\tthis.parent.querySelectorAll(\n\t\t\t\t\t`${selector}.${this.options.showClass}, ${selector}.${this.options.collapsingClass}`\n\t\t\t\t)\n\t\t\t).filter((o) => o !== collapseElement);\n\n\t\t\tif (this.parent && actives.length === 0) {\n\t\t\t\tremoveClass(this.parent, this.options.activeParentClass);\n\t\t\t}\n\t\t}\n\n\t\tthis.isTransitioning = true;\n\t\tif (this.options.animateProp) {\n\t\t\tcollapseElement.style[this.options.animateProp] = null;\n\t\t}\n\n\t\taddTransitionEndListener(\n\t\t\tcollapseElement,\n\t\t\t() => {\n\t\t\t\tthis.isTransitioning = false;\n\n\t\t\t\tremoveClass(collapseElement, this.options.collapsingClass);\n\t\t\t\taddClass(collapseElement, this.options.componentClass);\n\n\t\t\t\tif (this.options.animateProp) {\n\t\t\t\t\tcollapseElement.style[this.options.animateProp] = null;\n\t\t\t\t}\n\n\t\t\t\tthis.eventNamespaceFn(collapseElement, 'hidden');\n\t\t\t},\n\t\t\tthis.options.transitionDuration\n\t\t);\n\t}\n\n\tprivate _addAriaAndCollapsedClass(element: Element, triggers: Element[]) {\n\t\tif (element) {\n\t\t\tconst isOpen = hasClass(element, this.options.showClass);\n\n\t\t\tif (triggers && triggers.length) {\n\t\t\t\ttriggers.forEach((trigger) => {\n\t\t\t\t\tisOpen\n\t\t\t\t\t\t? addClass(trigger, this.options.activeClass)\n\t\t\t\t\t\t: removeClass(trigger, this.options.activeClass);\n\n\t\t\t\t\ttrigger.setAttribute(\n\t\t\t\t\t\t'aria-expanded',\n\t\t\t\t\t\tisOpen.toString().toLowerCase()\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function collapse(\n\telement: HTMLElement,\n\toptions?: CollapseOptions\n): Collapse {\n\tconsole.error(\n\t\t'collapse deprecated: use new Collapse(element, options) instead. (initialized elements can be accessed via Collapse.getInstance()'\n\t);\n\tlet data = element[stringCollapse] as Collapse;\n\n\tif (!data) {\n\t\tdata = new Collapse(element, options);\n\t}\n\n\treturn data;\n}\n","export function newGuid(): string {\n\treturn 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n\t\tconst r = (Math.random() * 16) | 0,\n\t\t\tv = c == 'x' ? r : (r & 0x3) | 0x8;\n\t\treturn v.toString(16);\n\t});\n}\n","export function wrapFunction(\r\n\tbaseFn: (this: HTMLElement, e: T) => void,\r\n\textendFn: (e: T) => void\r\n) {\r\n\treturn function (e: T) {\r\n\t\textendFn(e);\r\n\t\tbaseFn.apply(this, [e]);\r\n\t};\r\n}\r\n","import { asHTMLElement } from '@opten/dom/as-html-element';\nimport { hasClass } from '@opten/dom/has-class';\nimport { isHTMLElement } from '@opten/dom/is-html-element';\n\nimport { Compiler } from '../';\nimport { Component } from '../metadata/component';\nimport { Reflector } from '../reflector';\nimport { Resolver } from '../resolver';\n\n// todo: cache, static, inject?\nconst reflector = new Reflector();\nconst resolver = new Resolver(reflector);\nconst compiler = new Compiler(resolver);\n\nexport function factory(components: any[]) {\n\treturn (rootElement: HTMLElement) => {\n\t\tconst observables = new Map();\n\t\tcomponents.forEach((componentType) => {\n\t\t\t// todo: inject resolver, or cache?\n\t\t\t// todo: static or something to cache?\n\t\t\tconst component = resolver.resolve(componentType);\n\n\t\t\tif (component) {\n\t\t\t\tconst safeRootElement =\n\t\t\t\t\trootElement === document.body ? document : rootElement;\n\t\t\t\tArray.from(\n\t\t\t\t\tsafeRootElement.getElementsByClassName(component.className)\n\t\t\t\t).forEach((node) =>\n\t\t\t\t\tcompiler.compile(component, node as HTMLElement, componentType)\n\t\t\t\t);\n\n\t\t\t\tif (component.observe) {\n\t\t\t\t\tobservables.set(component, componentType);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`No @Component annotation for ${\n\t\t\t\t\t\tcomponentType ? componentType.name : componentType\n\t\t\t\t\t} found!`\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\tif (observables.size) {\n\t\t\tnew MutationObserver((mutations) => {\n\t\t\t\tconst componentInitializer = new Map void>();\n\n\t\t\t\tmutations.forEach((mutation) => {\n\t\t\t\t\tobservables.forEach((value, key) =>\n\t\t\t\t\t\tArray.from(mutation.addedNodes)\n\t\t\t\t\t\t\t.filter((node) => isHTMLElement(node))\n\t\t\t\t\t\t\t.map((node) => asHTMLElement(node))\n\t\t\t\t\t\t\t.forEach((node) => {\n\t\t\t\t\t\t\t\tconst comps = Array.from(\n\t\t\t\t\t\t\t\t\tnode.getElementsByClassName(key.className)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tif (hasClass(node, key.className)) {\n\t\t\t\t\t\t\t\t\tcomps.push(node);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcomps.forEach((component) => {\n\t\t\t\t\t\t\t\t\tcomponentInitializer.set(component as HTMLElement, () =>\n\t\t\t\t\t\t\t\t\t\tcompiler.compile(key, component as HTMLElement, value)\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\tcomponentInitializer.forEach((c) => c());\n\t\t\t}).observe(document.body, {\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: true,\n\t\t\t});\n\t\t}\n\t};\n}\n","import { Component } from './metadata/component';\nimport { Query } from './metadata/di';\nimport { OnInit } from './metadata/lifecycle';\nimport { Resolver } from './resolver';\nimport { isType } from './util/type';\n\n// todo: move whole project to @opten/initializer?\nexport class Compiler {\n\tprivate componentCache = new Map();\n\n\tconstructor(private resolver: Resolver) {}\n\n\tcompile(\n\t\tcomponent: Component,\n\t\tnode: HTMLElement,\n\t\tcomponentType: /*Type*/ any\n\t) {\n\t\t// todo: cache everything?\n\n\t\t// todo: cache that also?\n\t\tconst constructor = new componentType(node);\n\n\t\tif (this.componentCache.has(node)) {\n\t\t\tthis.componentCache.get(node).push(constructor);\n\t\t} else {\n\t\t\tthis.componentCache.set(node, [constructor]);\n\t\t}\n\n\t\tObject.keys(component.queries).forEach((propName) => {\n\t\t\tconst query: Query = component.queries[propName];\n\n\t\t\t// todo: why do we have to inject the resolver?\n\t\t\t// can we not get the class name by some other way?\n\t\t\tconst target = this.resolver.resolve(query.selector);\n\n\t\t\tif (target) {\n\t\t\t\tconst targetNode = query.descendants ? node : document;\n\t\t\t\tconst nodes = targetNode.getElementsByClassName(target.className);\n\n\t\t\t\tconst cache = Array.from(nodes)\n\t\t\t\t\t.filter((o) => (query.filter ? query.filter(o) : true))\n\t\t\t\t\t.map((e) => this.componentCache.get(e as HTMLElement))\n\t\t\t\t\t.filter((e) => e !== undefined && e !== null)\n\t\t\t\t\t.reduce((acc, val) => acc.concat(val), [])\n\t\t\t\t\t.filter((f) => f.constructor === query.selector);\n\n\t\t\t\tconstructor[propName] = query.first ? cache[0] : cache;\n\t\t\t}\n\t\t});\n\n\t\tif (isType(constructor.onInit)) {\n\t\t\t(constructor as OnInit).onInit();\n\t\t}\n\t}\n}\n","import { makeDecorator, TypeDecorator } from '../util/decorators';\nimport { makeMetadataFactory, MetadataFactory } from '../util/factories';\n\nexport interface ComponentDecorator {\n\t(obj: Component): TypeDecorator;\n\tnew (obj: Component): Component;\n}\n\nexport interface Component {\n\tclassName?: string;\n\tobserve?: boolean;\n\tqueries?: { [key: string]: any };\n}\n\n// tslint:disable-next-line:variable-name\nexport const Component: ComponentDecorator = makeDecorator(\n\t'Component',\n\t(c: Component = {}) => ({ ...c })\n);\n\nexport const createComponent: MetadataFactory = makeMetadataFactory<\n\tComponent\n>('Component', (c: Component = {}) => ({ ...c }));\n","import { makePropDecorator } from '../util/decorators';\n\n// tslint:disable:variable-name\n\nexport interface Metadata extends Query {\n\tmetadataName: string;\n}\n\nexport interface Query {\n\tdescendants: boolean;\n\tfirst: boolean;\n\tselector: any;\n\tfilter: (e: Element) => boolean;\n}\n\nexport abstract class Query {}\n\nexport const ComponentRef = makePropDecorator(\n\t'ComponentRef',\n\t(selector?: any, data: any = {}) => ({\n\t\tselector,\n\t\tfirst: true,\n\t\tdescendants: false,\n\t\t...data,\n\t}),\n\tQuery\n);\n\nexport const ComponentRefs = makePropDecorator(\n\t'ComponentRefs',\n\t(selector?: any, data: any = {}) => ({\n\t\tselector,\n\t\tfirst: false,\n\t\tdescendants: false,\n\t\t...data,\n\t}),\n\tQuery\n);\n\nexport const ChildRef = makePropDecorator(\n\t'ChildRef',\n\t(selector?: any, data: any = {}) => ({\n\t\tselector,\n\t\tfirst: true,\n\t\tdescendants: true,\n\t\t...data,\n\t}),\n\tQuery\n);\n\nexport const ChildrenRef = makePropDecorator(\n\t'ChildrenRef',\n\t(selector?: any, data: any = {}) => ({\n\t\tselector,\n\t\tfirst: false,\n\t\tdescendants: true,\n\t\t...data,\n\t}),\n\tQuery\n);\n","import { ANNOTATIONS, PROP_METADATA } from '../util/decorators';\nimport { isType, Type } from '../util/type';\n\n// todo: @opten/reflector? or @opten/initializer/reflector?\nexport class Reflector {\n\tannotations(typeOrFunc: Type): any[] {\n\t\tif (!isType(typeOrFunc)) {\n\t\t\treturn [];\n\t\t}\n\t\tconst parentCtor = getParentCtor(typeOrFunc);\n\t\tconst ownAnnotations = this._ownAnnotations(typeOrFunc, parentCtor) || [];\n\t\tconst parentAnnotations =\n\t\t\tparentCtor !== Object ? this.annotations(parentCtor) : [];\n\t\treturn parentAnnotations.concat(ownAnnotations);\n\t}\n\n\tpropMetadata(typeOrFunc: any): { [key: string]: any[] } {\n\t\tif (!isType(typeOrFunc)) {\n\t\t\treturn {};\n\t\t}\n\t\tconst parentCtor = getParentCtor(typeOrFunc);\n\t\tconst propMetadata: { [key: string]: any[] } = {};\n\t\tif (parentCtor !== Object) {\n\t\t\tconst parentPropMetadata = this.propMetadata(parentCtor);\n\t\t\tObject.keys(parentPropMetadata).forEach((propName) => {\n\t\t\t\tpropMetadata[propName] = parentPropMetadata[propName];\n\t\t\t});\n\t\t}\n\t\tconst ownPropMetadata = this._ownPropMetadata(typeOrFunc, parentCtor);\n\t\tif (ownPropMetadata) {\n\t\t\tObject.keys(ownPropMetadata).forEach((propName) => {\n\t\t\t\tconst decorators: any[] = [];\n\t\t\t\tif (propMetadata.hasOwnProperty(propName)) {\n\t\t\t\t\tdecorators.push(...propMetadata[propName]);\n\t\t\t\t}\n\t\t\t\tdecorators.push(...ownPropMetadata[propName]);\n\t\t\t\tpropMetadata[propName] = decorators;\n\t\t\t});\n\t\t}\n\t\treturn propMetadata;\n\t}\n\n\tprivate _ownAnnotations(\n\t\ttypeOrFunc: Type,\n\t\tparentCtor: any\n\t): any[] | null {\n\t\t// API for metadata created by invoking the decorators.\n\t\tif (typeOrFunc.hasOwnProperty(ANNOTATIONS)) {\n\t\t\treturn (typeOrFunc as any)[ANNOTATIONS];\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate _ownPropMetadata(\n\t\ttypeOrFunc: any,\n\t\tparentCtor: any\n\t): { [key: string]: any[] } | null {\n\t\t// API for metadata created by invoking the decorators.\n\t\tif (typeOrFunc.hasOwnProperty(PROP_METADATA)) {\n\t\t\treturn (typeOrFunc as any)[PROP_METADATA];\n\t\t}\n\t\treturn null;\n\t}\n}\n\nfunction getParentCtor(ctor: Type): Type {\n\tconst parentProto = Object.getPrototypeOf(ctor.prototype);\n\tconst parentCtor = parentProto ? parentProto.constructor : null;\n\t// Note: We always use `Object` as the null value\n\t// to simplify checking later on.\n\treturn parentCtor || Object;\n}\n","import { Component, createComponent } from '../metadata/component';\nimport { Query } from '../metadata/di';\nimport { Reflector } from '../reflector';\n\nconst QUERY_METADATA_IDENTIFIERS = [\n\t'ComponentRef',\n\t'ComponentRefs',\n\t'ChildRef',\n\t'ChildrenRef',\n];\n\n// todo: @opten/resolver? or @opten/initializer/resolver?\nexport class Resolver {\n\tconstructor(private reflector: Reflector) {}\n\n\t// propertyCache = new Map();\n\n\tresolve(type: any /*Type*/): Component | null {\n\t\tconst typeMetadata = this.reflector.annotations(type);\n\n\t\tif (typeMetadata) {\n\t\t\tconst metadata = findLast(\n\t\t\t\ttypeMetadata,\n\t\t\t\t(c) => c && c.metadataName === 'Component'\n\t\t\t);\n\n\t\t\tif (metadata) {\n\t\t\t\tconst propertyMetadata = this.reflector.propMetadata(type);\n\n\t\t\t\treturn this._mergeWithPropertyMetadata(\n\t\t\t\t\tmetadata,\n\t\t\t\t\tpropertyMetadata,\n\t\t\t\t\ttype\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tprivate _mergeWithPropertyMetadata(\n\t\tcomponent: Component,\n\t\tpropertyMetadata: { [key: string]: any[] },\n\t\tcomponentType: /*Type*/ any\n\t): Component {\n\t\tconst queries: { [key: string]: any } = {};\n\n\t\tObject.keys(propertyMetadata).forEach((propName: string) => {\n\t\t\tconst query = findLast(propertyMetadata[propName], (a) =>\n\t\t\t\tQUERY_METADATA_IDENTIFIERS.some((i) => i && i === a.metadataName)\n\t\t\t);\n\n\t\t\tif (query) {\n\t\t\t\tqueries[propName] = query;\n\t\t\t}\n\t\t});\n\n\t\treturn this._merge(component, queries, componentType);\n\t}\n\n\tprivate _merge(\n\t\tcomponent: Component,\n\t\tqueries: { [key: string]: any },\n\t\tcomponentType: /*Type*/ any\n\t): Component {\n\t\tconst mergedQueries = component.queries\n\t\t\t? { ...component.queries, ...queries }\n\t\t\t: queries;\n\n\t\treturn createComponent({\n\t\t\tclassName: component.className,\n\t\t\tobserve: component.observe,\n\t\t\tqueries: mergedQueries,\n\t\t});\n\t}\n\n\tprivate _getQueriesMetadata(queries: { [key: string]: Query }): any[] {\n\t\tconst res: any[] = [];\n\n\t\tObject.keys(queries).forEach((propertyName: string) => {\n\t\t\tconst query = queries[propertyName];\n\t\t\tres.push(this._getQueryMetadata(query, propertyName));\n\t\t});\n\n\t\treturn res;\n\t}\n\n\tprivate _getQueryMetadata(q: Query, propertyName: string): any {\n\t\treturn {\n\t\t\tdescendants: q.descendants,\n\t\t\tfirst: q.first,\n\t\t\tpropertyName,\n\t\t\tread: false,\n\t\t\tselector: q.selector,\n\t\t};\n\t}\n}\n\nfunction findLast(arr: T[], condition: (value: T) => boolean): T | null {\n\tfor (let i = arr.length - 1; i >= 0; i--) {\n\t\tif (condition(arr[i])) {\n\t\t\treturn arr[i];\n\t\t}\n\t}\n\treturn null;\n}\n","import { Type } from './type';\n\nexport const ANNOTATIONS = '__annotations__';\nexport const PROP_METADATA = '__prop__metadata__';\n\nexport interface TypeDecorator {\n\t// Invoke as ES7 decorator.\n\t>(type: T): T;\n\n\t// Make TypeDecorator assignable to built-in ParameterDecorator type.\n\t// ParameterDecorator is declared in lib.d.ts as a `declare type`\n\t// so we cannot declare this interface as a subtype.\n\t// see https://github.com/angular/angular/issues/3379#issuecomment-126169417\n\t(\n\t\ttarget: object,\n\t\tpropertyKey?: string | symbol,\n\t\tparameterIndex?: number\n\t): void;\n}\n\nexport function makeDecorator(\n\tname: string,\n\tprops?: (...args: any[]) => any,\n\tparentClass?: any,\n\tchainFn?: (fn: TypeDecorator) => void,\n\ttypeFn?: (type: Type, ...args: any[]) => void\n): {\n\tnew (...args: any[]): any;\n\t(...args: any[]): any;\n\t(...args: any[]): (cls: any) => any;\n} {\n\tconst metaCtor = makeMetadataCtor(props);\n\n\tfunction DecoratorFactory(...args: any[]): (cls: any) => any {\n\t\tif (this instanceof DecoratorFactory) {\n\t\t\tmetaCtor.call(this, ...args);\n\t\t\treturn this;\n\t\t}\n\n\t\tconst annotationInstance = new (DecoratorFactory as any)(...args);\n\t\tconst typeDecorator: TypeDecorator = (cls: Type) => {\n\t\t\tif (typeFn) {\n\t\t\t\ttypeFn(cls, ...args);\n\t\t\t}\n\t\t\t// Use of Object.defineProperty is important since it creates non-enumerable property which\n\t\t\t// prevents the property is copied during subclassing.\n\t\t\tconst annotations = cls.hasOwnProperty(ANNOTATIONS)\n\t\t\t\t? (cls as any)[ANNOTATIONS]\n\t\t\t\t: Object.defineProperty(cls, ANNOTATIONS, { value: [] })[ANNOTATIONS];\n\t\t\tannotations.push(annotationInstance);\n\t\t\treturn cls;\n\t\t};\n\t\tif (chainFn) {\n\t\t\tchainFn(typeDecorator);\n\t\t}\n\t\treturn typeDecorator;\n\t}\n\n\tif (parentClass) {\n\t\tDecoratorFactory.prototype = Object.create(parentClass.prototype);\n\t}\n\n\tDecoratorFactory.prototype.metadataName = name;\n\treturn DecoratorFactory as any;\n}\n\nfunction makeMetadataCtor(props?: (...args: any[]) => any): any {\n\treturn function ctor(...args: any[]) {\n\t\tif (props) {\n\t\t\tconst values = props(...args);\n\t\t\tfor (const propName in values) {\n\t\t\t\tif (values.hasOwnProperty(propName)) {\n\t\t\t\t\tthis[propName] = values[propName];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\nexport function makePropDecorator(\n\tname: string,\n\tprops?: (...args: any[]) => any,\n\tparentClass?: any\n): any {\n\tconst metaCtor = makeMetadataCtor(props);\n\n\tfunction PropDecoratorFactory(...args: any[]): any {\n\t\tif (this instanceof PropDecoratorFactory) {\n\t\t\tmetaCtor.apply(this, args);\n\t\t\treturn this;\n\t\t}\n\n\t\tconst decoratorInstance = new (PropDecoratorFactory as any)(...args);\n\n\t\treturn function PropDecorator(target: any, metaName: string) {\n\t\t\tconst constructor = target.constructor;\n\t\t\t// Use of Object.defineProperty is important since it creates non-enumerable property which\n\t\t\t// prevents the property is copied during subclassing.\n\t\t\tconst meta = constructor.hasOwnProperty(PROP_METADATA)\n\t\t\t\t? (constructor as any)[PROP_METADATA]\n\t\t\t\t: Object.defineProperty(constructor, PROP_METADATA, {\n\t\t\t\t\t\tvalue: {},\n\t\t\t\t })[PROP_METADATA];\n\t\t\tmeta[metaName] = (meta.hasOwnProperty(metaName) && meta[metaName]) || [];\n\t\t\tmeta[metaName].unshift(decoratorInstance);\n\t\t};\n\t}\n\n\tif (parentClass) {\n\t\tPropDecoratorFactory.prototype = Object.create(parentClass.prototype);\n\t}\n\n\tPropDecoratorFactory.prototype.metadataName = name;\n\treturn PropDecoratorFactory;\n}\n","export interface MetadataFactory {\n\t(...args: any[]): T;\n\tmetadataName: string;\n\tisTypeOf(obj: any): obj is T;\n}\n\nexport function makeMetadataFactory(\n\tname: string,\n\tprops?: (...args: any[]) => T\n): MetadataFactory {\n\tconst factory: any = (...args: any[]) => {\n\t\tconst values = props ? props(...args) : {};\n\t\treturn {\n\t\t\tmetadataName: name,\n\t\t\t...values,\n\t\t};\n\t};\n\tfactory.isTypeOf = (obj: any) => obj && obj.metadataName === name;\n\tfactory.metadataName = name;\n\treturn factory;\n}\n","// tslint:disable-next-line:variable-name\nexport const Type = Function;\n\nexport function isType(v: any): v is Type {\n\treturn typeof v === 'function';\n}\n\nexport type Type = new (...args: any[]) => T;\n","import { getClass } from '../get-class';\r\nimport { hasClass } from '../has-class';\r\n\r\nexport function addClass(element: Element, className: string) {\r\n\tif (element && !hasClass(element, className)) {\r\n\t\telement.setAttribute('class', getClass(element).trim() + ' ' + className);\r\n\t}\r\n}\r\n","import { isHTMLElement } from '../is-html-element';\r\n\r\nexport function asHTMLElement(o: any): HTMLElement {\r\n\tif (isHTMLElement(o)) {\r\n\t\treturn o as HTMLElement;\r\n\t}\r\n\treturn null;\r\n}\r\n","import { addClass } from '../add-class';\r\nimport { removeClass } from '../remove-class';\r\n\r\nexport function changeClass(element: Element, className: string, add = true) {\r\n\tif (add) {\r\n\t\taddClass(element, className);\r\n\t} else {\r\n\t\tremoveClass(element, className);\r\n\t}\r\n}\r\n","const classRegexCache = {};\r\nexport function classRegex(className: string): RegExp {\r\n\tif (!classRegexCache[className]) {\r\n\t\tclassRegexCache[className] = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)');\r\n\t}\r\n\treturn classRegexCache[className];\r\n}\r\n","export function createNode(html: string): HTMLElement {\r\n\tlet element = document.createElement('div') as HTMLElement;\r\n\telement.innerHTML = html;\r\n\telement = element.firstElementChild as HTMLElement;\r\n\treturn element;\r\n}\r\n","import { hasClass } from '../has-class';\r\n\r\nexport function firstByClass(\r\n\telements: HTMLElement[],\r\n\tclassName: string\r\n): HTMLElement {\r\n\tfor (const parent of elements as HTMLElement[]) {\r\n\t\tif (hasClass(parent, className)) {\r\n\t\t\treturn parent;\r\n\t\t}\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n","export function getClass(element: Element) {\r\n\treturn element.getAttribute('class') || '';\r\n}\r\n","import { getStyles } from '../get-styles';\r\n\r\nexport function getCss(\r\n\telement: Element,\r\n\tname: string,\r\n\tcomputed?: CSSStyleDeclaration\r\n): string {\r\n\tcomputed = computed || getStyles(element);\r\n\r\n\tif (computed) {\r\n\t\treturn computed.getPropertyValue(name) || computed[name];\r\n\t}\r\n\r\n\treturn undefined;\r\n}\r\n","export function getOffset(\r\n\telement: Element\r\n): { top: () => number; left: () => number } {\r\n\tconst clientRect = element.getBoundingClientRect();\r\n\r\n\treturn {\r\n\t\ttop: () => {\r\n\t\t\tconst ownerDocument = element.ownerDocument;\r\n\t\t\tconst documentTop = window.pageYOffset || ownerDocument.body.scrollTop;\r\n\t\t\treturn (\r\n\t\t\t\tclientRect.top + documentTop - ownerDocument.documentElement.clientTop\r\n\t\t\t);\r\n\t\t},\r\n\t\tleft: () => {\r\n\t\t\tconst ownerDocument = element.ownerDocument;\r\n\t\t\tconst documentLeft = window.pageXOffset || ownerDocument.body.scrollLeft;\r\n\t\t\treturn (\r\n\t\t\t\tclientRect.left +\r\n\t\t\t\tdocumentLeft -\r\n\t\t\t\townerDocument.documentElement.clientLeft\r\n\t\t\t);\r\n\t\t},\r\n\t};\r\n}\r\n","import { firstByClass } from '../first-by-class';\r\nimport { getParents } from '../get-parents';\r\n\r\nexport function getParentWithClass(\r\n\telement: HTMLElement,\r\n\tclassName: string\r\n): HTMLElement {\r\n\treturn firstByClass(getParents(element), className);\r\n}\r\n","import { isHTMLElement } from '../is-html-element';\r\n\r\nexport function getParentsOrSelf(element: HTMLElement): HTMLElement[] {\r\n\tconst parents: HTMLElement[] = [];\r\n\r\n\tif (element && isHTMLElement(element)) {\r\n\t\tparents.push(element);\r\n\r\n\t\tif (element.parentElement) {\r\n\t\t\tparents.push.apply(parents, getParentsOrSelf(element.parentElement));\r\n\t\t}\r\n\t}\r\n\r\n\treturn parents;\r\n}\r\n","import { getParentsOrSelf } from '../get-parents-or-self';\r\n\r\nexport function getParents(element: HTMLElement) {\r\n\treturn getParentsOrSelf(element.parentElement);\r\n}\r\n","import { getSelectorFromElement } from '../get-selector-from-element';\r\n\r\nexport function getSelectorElementFromElement(\r\n\telement: Element,\r\n\tattribute = 'data-target',\r\n\tfallbackHref = true\r\n): HTMLElement {\r\n\tconst selector = getSelectorFromElement(element, attribute, fallbackHref);\r\n\r\n\tif (selector && selector.indexOf('#') === 0) {\r\n\t\treturn document.getElementById(selector.substr(1, selector.length - 1));\r\n\t}\r\n\r\n\treturn null;\r\n}\r\n","export function getSelectorFromElement(\r\n\telement: Element,\r\n\tattribute = 'data-target',\r\n\tfallbackHref = true\r\n): string {\r\n\tlet selector = element.getAttribute(attribute);\r\n\r\n\tif (!selector && fallbackHref) {\r\n\t\tselector = element.getAttribute('href') || '';\r\n\t\tselector = /^#.*/i.test(selector) ? selector : null;\r\n\t}\r\n\r\n\treturn selector;\r\n}\r\n","export function getSiblings(element: HTMLElement): HTMLElement[] {\r\n\treturn Array.prototype.filter.call(\r\n\t\telement.parentElement.children,\r\n\t\t(child: HTMLElement) => {\r\n\t\t\treturn child !== element;\r\n\t\t}\r\n\t);\r\n}\r\n","export function getStyles(element: Element) {\r\n\tlet view = element.ownerDocument.defaultView;\r\n\r\n\tif (!view || !view.opener) {\r\n\t\tview = window;\r\n\t}\r\n\r\n\treturn view.getComputedStyle(element);\r\n}\r\n","export function getWindowScrollTop() {\r\n\treturn window.pageYOffset !== undefined\r\n\t\t? window.pageYOffset\r\n\t\t: ((document.documentElement ||\r\n\t\t\t\tdocument.body.parentNode ||\r\n\t\t\t\tdocument.body) as HTMLElement).scrollTop;\r\n}\r\n","import { classRegex } from '../class-regex';\r\nimport { getClass } from '../get-class';\r\n\r\nexport function hasClass(element: Element, className: string): boolean {\r\n\treturn element && classRegex(className).test(getClass(element));\r\n}\r\n","import { hasClass } from '../has-class';\r\n\r\nexport function isAncestorOfClass(\r\n\telement: Element,\r\n\tclassName: string,\r\n\tincludeSelf: boolean\r\n): boolean {\r\n\tlet parent = element.parentElement;\r\n\tif (includeSelf && hasClass(element, className)) {\r\n\t\treturn true;\r\n\t}\r\n\twhile (parent && parent.nodeType && parent.nodeType === 1) {\r\n\t\tif (hasClass(parent, className)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tparent = parent.parentElement;\r\n\t}\r\n\treturn false;\r\n}\r\n","export function isHTMLElement(o: any) {\r\n\treturn typeof HTMLElement === 'object'\r\n\t\t? o instanceof HTMLElement\r\n\t\t: o &&\r\n\t\t\t\ttypeof o === 'object' &&\r\n\t\t\t\to !== null &&\r\n\t\t\t\to.nodeType === 1 &&\r\n\t\t\t\ttypeof o.nodeName === 'string';\r\n}\r\n","import { classRegex } from '../class-regex';\r\nimport { getClass } from '../get-class';\r\nimport { hasClass } from '../has-class';\r\n\r\nexport function removeClass(element: Element, className: string) {\r\n\tif (element && hasClass(element, className)) {\r\n\t\tconst regex = classRegex(className);\r\n\t\telement.setAttribute('class', getClass(element).replace(regex, ' ').trim());\r\n\t}\r\n}\r\n\r\nexport function removeClassFactory(className: string) {\r\n\treturn (element: Element) => {\r\n\t\tremoveClass(element, className);\r\n\t};\r\n}\r\n\r\nexport function removeClassOnCollection(\r\n\telements: Element[],\r\n\tclassName: string\r\n) {\r\n\telements.forEach(removeClassFactory(className));\r\n}\r\n","import { changeClass } from '../change-class';\r\nimport { hasClass } from '../has-class';\r\n\r\nexport function toggleClass(\r\n\telement: Element,\r\n\tclassName: string,\r\n\tstate?: boolean\r\n) {\r\n\tchangeClass(\r\n\t\telement,\r\n\t\tclassName,\r\n\t\tstate === undefined ? !hasClass(element, className) : state\r\n\t);\r\n}\r\n","export function dispatchCustomEvent(element: EventTarget, eventName: string) {\n\tconst event = new CustomEvent(eventName);\n\telement.dispatchEvent(event);\n}\n","import { dispatchCustomEvent } from '../dispatch-custom-event';\n\nexport function eventNamespaceFactory(namespace: string) {\n\treturn (element: EventTarget, eventName: string) =>\n\t\tdispatchCustomEvent(element, eventName + '.' + namespace);\n}\n","export const KEYCODES = {\n\tDOWN: 40,\n\tENTER: 13,\n\tESCAPE: 27,\n\tSPACE: 32,\n\tUP: 38,\n};\n","export function parseCssUnit(unit: string): number {\n\tconst units = ['px', 'rem', 'em'];\n\n\tif (!unit || !units.filter((u) => unit.indexOf(u) !== -1).length) {\n\t\treturn 0;\n\t}\n\n\tlet parsed = unit.replace(',', '.');\n\tunits.forEach((u) => (parsed = parsed.replace(u, '')));\n\n\treturn Number(parsed);\n}\n","export * from './position/connected-position-strategy';\r\nexport * from './position/connected-position';\r\nexport * from './position/global-position-strategy';\r\nexport * from './position/overlay-position-builder';\r\nexport * from './position/position-strategy';\r\nexport * from './overlay-options';\r\nexport * from './overlay';\r\n","import { Overlay } from '../overlay';\r\n\r\nexport class OverlayKeyboardDispatcher {\r\n\t/** Currently attached overlays in the order they were attached. */\r\n\tprivate attachedOverlays: Overlay[] = [];\r\n\r\n\tprivate document: Document;\r\n\tprivate isAttached: boolean;\r\n\r\n\tconstructor(document: Document) {\r\n\t\tthis.document = document;\r\n\t}\r\n\r\n\t/** Add a new overlay to the list of attached overlay refs. */\r\n\tadd(overlayRef: Overlay): void {\r\n\t\t// Lazily start dispatcher once first overlay is added\r\n\t\tif (!this.isAttached) {\r\n\t\t\tthis.document.body.addEventListener(\r\n\t\t\t\t'keydown',\r\n\t\t\t\tthis.keydownListener,\r\n\t\t\t\ttrue\r\n\t\t\t);\r\n\t\t\tthis.isAttached = true;\r\n\t\t}\r\n\r\n\t\tthis.attachedOverlays.push(overlayRef);\r\n\t}\r\n\r\n\t/** Remove an overlay from the list of attached overlay refs. */\r\n\tremove(overlayRef: Overlay): void {\r\n\t\tconst index = this.attachedOverlays.indexOf(overlayRef);\r\n\r\n\t\tif (index > -1) {\r\n\t\t\tthis.attachedOverlays.splice(index, 1);\r\n\t\t}\r\n\r\n\t\t// Remove the global listener once there are no more overlays.\r\n\t\tif (this.attachedOverlays.length === 0) {\r\n\t\t\tthis._detach();\r\n\t\t}\r\n\t}\r\n\r\n\t/** Select the appropriate overlay from a keydown event. */\r\n\tprivate _selectOverlayFromEvent(event: KeyboardEvent): Overlay {\r\n\t\t// Check if any overlays contain the event\r\n\t\tconst targetedOverlay = this.attachedOverlays.find((overlay) => {\r\n\t\t\treturn (\r\n\t\t\t\toverlay.overlayElement === event.target ||\r\n\t\t\t\toverlay.overlayElement.contains(event.target as HTMLElement)\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\t// Use the overlay if it exists, otherwise choose the most recently attached one\r\n\t\treturn (\r\n\t\t\ttargetedOverlay || this.attachedOverlays[this.attachedOverlays.length - 1]\r\n\t\t);\r\n\t}\r\n\r\n\t/** Detaches the global keyboard event listener. */\r\n\tprivate _detach() {\r\n\t\tif (this.isAttached) {\r\n\t\t\tthis.document.body.removeEventListener(\r\n\t\t\t\t'keydown',\r\n\t\t\t\tthis.keydownListener,\r\n\t\t\t\ttrue\r\n\t\t\t);\r\n\t\t\tthis.isAttached = false;\r\n\t\t}\r\n\t}\r\n\r\n\t/** Keyboard event listener that will be attached to the body. */\r\n\tprivate keydownListener = (event: KeyboardEvent) => {\r\n\t\tif (this.attachedOverlays.length) {\r\n\t\t\t// Dispatch keydown event to the correct overlay.\r\n\t\t\tconst overlay = this._selectOverlayFromEvent(event);\r\n\r\n\t\t\tif (overlay.onKeyboardEvent) {\r\n\t\t\t\toverlay.onKeyboardEvent(event);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}\r\n","import { PositionStrategy } from './position/position-strategy';\r\nimport { ScrollStrategy } from './scroll/scroll-strategy';\r\n\r\nexport class OverlayOptions {\r\n\tpositionStrategy?: PositionStrategy;\r\n\tscrollStrategy?: ScrollStrategy;\r\n\tclassName? = 'c-overlay';\r\n\toverlayClassName?: string;\r\n\tbackdropClassName? = 'c-overlay-dark-backdrop';\r\n\thasBackdrop? = true;\r\n\twidth?: number | string;\r\n\theight?: number | string;\r\n\tminWidth?: number | string;\r\n\tminHeight?: number | string;\r\n\tmaxWidth?: number | string;\r\n\tmaxHeight?: number | string;\r\n\ttransitionDuration? = 300;\r\n\r\n\tconstructor(options?: OverlayOptions) {\r\n\t\tif (options) {\r\n\t\t\tObject.keys(options)\r\n\t\t\t\t.filter((key) => typeof options[key] !== 'undefined')\r\n\t\t\t\t.forEach((key) => (this[key] = options[key]));\r\n\t\t}\r\n\t}\r\n}\r\n","import { addClass } from '@opten/dom/add-class';\r\nimport { newGuid } from '@opten/common/new-guid';\r\nimport { createNode } from '@opten/dom/create-node';\r\nimport { isAncestorOfClass } from '@opten/dom/is-ancestor-of-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { addTransitionEndListener } from '@opten/transition/add-transition-end-listener';\r\n\r\nimport { OverlayOptions } from './overlay-options';\r\nimport { OverlayKeyboardDispatcher } from './keyboard/overlay-keyboard-dispatcher';\r\n\r\n// todo: do it more like angular with backdrop configuration etc...\r\nexport class Overlay {\r\n\toverlayElement: HTMLElement;\r\n\tonAttached: () => void;\r\n\tonDetached: () => void;\r\n\tbeforeOpen: () => void;\r\n\tbeforeClose: () => void;\r\n\tafterOpened: () => void;\r\n\tafterClosed: () => void;\r\n\tonKeyboardEvent: (event: KeyboardEvent) => void;\r\n\tbackdropClick: (event: MouseEvent) => void;\r\n\r\n\tprivate uuid: string;\r\n\tprivate options: OverlayOptions;\r\n\tprivate overlayContainerElement: HTMLElement;\r\n\tprivate backdropElement: HTMLElement;\r\n\tprivate attached = false;\r\n\tprivate keyboardDispatcher = new OverlayKeyboardDispatcher(document);\r\n\r\n\tconstructor(public portalElement: HTMLElement, options?: OverlayOptions) {\r\n\t\tthis.options = new OverlayOptions(options);\r\n\r\n\t\tthis.uuid = newGuid();\r\n\r\n\t\tif (options.scrollStrategy) {\r\n\t\t\toptions.scrollStrategy.attach(this);\r\n\t\t}\r\n\t}\r\n\r\n\tcreate() {\r\n\t\t// we want to re-use existing containers\r\n\t\t// so search it in the dom before we create it again!\r\n\t\tconst overlayContainerElement = document.getElementsByClassName(\r\n\t\t\t`${this.options.className}__container`\r\n\t\t)[0] as HTMLElement;\r\n\r\n\t\tif (overlayContainerElement) {\r\n\t\t\tthis.overlayContainerElement = overlayContainerElement;\r\n\t\t} else {\r\n\t\t\tthis.overlayContainerElement = createNode(\r\n\t\t\t\t`
`\r\n\t\t\t);\r\n\r\n\t\t\tdocument.body.insertBefore(\r\n\t\t\t\tthis.overlayContainerElement,\r\n\t\t\t\tdocument.body.lastElementChild\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis.overlayElement = createNode(\r\n\t\t\t`
`\r\n\t\t);\r\n\r\n\t\tif (this.options.overlayClassName) {\r\n\t\t\taddClass(this.overlayElement, this.options.overlayClassName);\r\n\t\t}\r\n\r\n\t\tthis.overlayContainerElement.appendChild(this.overlayElement);\r\n\t}\r\n\r\n\thasAttached() {\r\n\t\treturn this.attached;\r\n\t}\r\n\r\n\tdetachBackdrop() {\r\n\t\tconst backdropToDetach = this.backdropElement;\r\n\r\n\t\tif (backdropToDetach) {\r\n\t\t\tconst finishDetach = () => {\r\n\t\t\t\t// It may not be attached to anything in certain cases (e.g. unit tests).\r\n\t\t\t\tif (backdropToDetach && backdropToDetach.parentNode) {\r\n\t\t\t\t\tbackdropToDetach.parentNode.removeChild(backdropToDetach);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// It is possible that a new portal has been attached to this overlay since we started\r\n\t\t\t\t// removing the backdrop. If that is the case, only clear the backdrop reference if it\r\n\t\t\t\t// is still the same instance that we started to remove.\r\n\t\t\t\tif (this.backdropElement === backdropToDetach) {\r\n\t\t\t\t\tthis.backdropElement = null;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tremoveClass(backdropToDetach, 'is-showing');\r\n\r\n\t\t\tif (this.options.backdropClassName) {\r\n\t\t\t\tremoveClass(backdropToDetach, this.options.backdropClassName);\r\n\t\t\t}\r\n\r\n\t\t\taddTransitionEndListener(backdropToDetach, finishDetach, 500);\r\n\r\n\t\t\t// If the backdrop doesn't have a transition, the `transitionend` event won't fire.\r\n\t\t\t// In this case we make it unclickable and we try to remove it after a delay.\r\n\t\t\tbackdropToDetach.style.pointerEvents = 'none';\r\n\t\t}\r\n\t}\r\n\r\n\t/** Updates the position of the overlay based on the position strategy. */\r\n\tupdatePosition() {\r\n\t\tif (this.options.positionStrategy) {\r\n\t\t\tthis.options.positionStrategy.apply();\r\n\t\t}\r\n\t}\r\n\r\n\tgetOptions() {\r\n\t\treturn this.options;\r\n\t}\r\n\r\n\t/** Update the size properties of the overlay. */\r\n\tupdateSize(sizeConfig: OverlaySizeConfig) {\r\n\t\tthis.options = { ...this.options, ...sizeConfig };\r\n\t\tthis._updateElementSize();\r\n\t}\r\n\r\n\topen() {\r\n\t\tthis._attach();\r\n\r\n\t\t// Update the position once, so that the overlay will be fully rendered\r\n\t\t// before attempting to position it, as the position may depend on the size of the rendered\r\n\t\t// content.\r\n\t\tthis.updatePosition();\r\n\r\n\t\t// animate\r\n\t\taddClass(this.portalElement, 'is-showing');\r\n\r\n\t\tif (this.beforeOpen) {\r\n\t\t\tthis.beforeOpen();\r\n\t\t}\r\n\r\n\t\t// todo: Aniamte like Angular Material?\r\n\t\taddTransitionEndListener(\r\n\t\t\tthis.portalElement,\r\n\t\t\t() => {\r\n\t\t\t\tremoveClass(this.portalElement, 'is-showing');\r\n\t\t\t\taddClass(this.portalElement, 'is-visible');\r\n\r\n\t\t\t\tif (this.afterOpened) {\r\n\t\t\t\t\tthis.afterOpened();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tthis.options.transitionDuration\r\n\t\t);\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis._detach();\r\n\r\n\t\t// animate\r\n\t\taddClass(this.portalElement, 'is-fade-out');\r\n\r\n\t\tif (this.beforeClose) {\r\n\t\t\tthis.beforeClose();\r\n\t\t}\r\n\r\n\t\taddTransitionEndListener(\r\n\t\t\tthis.portalElement,\r\n\t\t\t() => {\r\n\t\t\t\tremoveClass(this.portalElement, 'is-fade-out');\r\n\t\t\t\t// todo: why?! otherwise animation only works once...\r\n\t\t\t\tremoveClass(this.portalElement, 'is-showing');\r\n\t\t\t\tremoveClass(this.portalElement, 'is-visible');\r\n\r\n\t\t\t\t// should be called by caller\r\n\t\t\t\t// this._dispose();\r\n\r\n\t\t\t\tif (this.afterClosed) {\r\n\t\t\t\t\tthis.afterClosed();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tthis.options.transitionDuration\r\n\t\t);\r\n\t}\r\n\r\n\t/** Cleans up the overlay from the DOM. */\r\n\tdispose() {\r\n\t\tif (this.portalElement && this.portalElement.parentElement) {\r\n\t\t\tthis.portalElement.parentElement!.removeChild(this.portalElement);\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tthis.options.positionStrategy &&\r\n\t\t\tthis.options.positionStrategy.dispose\r\n\t\t) {\r\n\t\t\tthis.options.positionStrategy.dispose();\r\n\t\t}\r\n\r\n\t\tif (this.options.scrollStrategy) {\r\n\t\t\tthis.options.scrollStrategy.disable();\r\n\t\t}\r\n\r\n\t\tthis.detachBackdrop();\r\n\r\n\t\t// Remove this overlay from keyboard dispatcher tracking\r\n\t\tthis.keyboardDispatcher.remove(this);\r\n\t}\r\n\r\n\tprivate _attach() {\r\n\t\t// todo: do it like angular so we have this method public\r\n\t\t// and we transfer the portalElement over here?\r\n\t\t// it should work with referencing the portalElement in e.g. select.ts\r\n\t\t// to calculate stuff. Because it works in menu.ts too (this.menu.portalElement.parentElement is c-overlay)!\r\n\t\t// Maybe then we can use ._overlayRef.position()... instead of OverlayPositionBuilder\r\n\r\n\t\tif (this.options.positionStrategy) {\r\n\t\t\tthis.options.positionStrategy.attach(this);\r\n\t\t}\r\n\r\n\t\tif (this.options.scrollStrategy) {\r\n\t\t\tthis.options.scrollStrategy.enable();\r\n\t\t}\r\n\r\n\t\tthis.overlayElement.appendChild(this.portalElement);\r\n\r\n\t\tthis._updateElementSize();\r\n\r\n\t\tthis.overlayElement.style.pointerEvents = 'auto';\r\n\r\n\t\tif (this.options.hasBackdrop) {\r\n\t\t\tthis._attachBackdrop();\r\n\t\t}\r\n\r\n\t\tthis.attached = true;\r\n\r\n\t\t// Track this overlay by the keyboard dispatcher\r\n\t\tthis.keyboardDispatcher.add(this);\r\n\r\n\t\tif (this.onAttached) {\r\n\t\t\tthis.onAttached();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _detach() {\r\n\t\tif (!this.hasAttached()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.detachBackdrop();\r\n\r\n\t\t// When the overlay is detached, the element should disable pointer events.\r\n\t\t// This is necessary because otherwise the element will cover the page and disable\r\n\t\t// pointer events therefore. Depends on the position strategy and the applied boundaries.\r\n\t\tthis.overlayElement.style.pointerEvents = 'none';\r\n\r\n\t\tif (this.options.positionStrategy && this.options.positionStrategy.detach) {\r\n\t\t\tthis.options.positionStrategy.detach();\r\n\t\t}\r\n\r\n\t\tif (this.options.scrollStrategy) {\r\n\t\t\tthis.options.scrollStrategy.disable();\r\n\t\t}\r\n\r\n\t\t// Remove this overlay from keyboard dispatcher tracking\r\n\t\tthis.keyboardDispatcher.remove(this);\r\n\r\n\t\tif (this.onDetached) {\r\n\t\t\tthis.onDetached();\r\n\t\t}\r\n\t}\r\n\r\n\t/** Attaches a backdrop for this overlay. */\r\n\tprivate _attachBackdrop() {\r\n\t\tthis.backdropElement = createNode(\r\n\t\t\t`
`\r\n\t\t);\r\n\r\n\t\tif (this.options.backdropClassName) {\r\n\t\t\taddClass(this.backdropElement, this.options.backdropClassName);\r\n\t\t}\r\n\r\n\t\t// Insert the backdrop before the overlay in the DOM order,\r\n\t\t// in order to handle stacked overlays properly.\r\n\t\tthis.overlayElement.parentElement!.insertBefore(\r\n\t\t\tthis.backdropElement,\r\n\t\t\tthis.overlayElement\r\n\t\t);\r\n\r\n\t\t// Forward backdrop clicks such that the consumer of the overlay can perform whatever\r\n\t\t// action desired when such a click occurs (usually closing the overlay).\r\n\t\tthis.backdropElement.addEventListener('click', (event: MouseEvent) =>\r\n\t\t\tthis._handleBackdropClick(event)\r\n\t\t);\r\n\r\n\t\t// Add class to fade-in the backdrop after one frame.\r\n\t\trequestAnimationFrame(() => {\r\n\t\t\tif (this.backdropElement) {\r\n\t\t\t\taddClass(this.backdropElement, 'is-showing');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/** Updates the size of the overlay element based on the overlay config. */\r\n\tprivate _updateElementSize() {\r\n\t\tif (this.options.width || this.options.width === 0) {\r\n\t\t\tthis.overlayElement.style.width = formatCssUnit(this.options.width);\r\n\t\t}\r\n\r\n\t\tif (this.options.height || this.options.height === 0) {\r\n\t\t\tthis.overlayElement.style.height = formatCssUnit(this.options.height);\r\n\t\t}\r\n\r\n\t\tif (this.options.minWidth || this.options.minWidth === 0) {\r\n\t\t\tthis.overlayElement.style.minWidth = formatCssUnit(this.options.minWidth);\r\n\t\t}\r\n\r\n\t\tif (this.options.minHeight || this.options.minHeight === 0) {\r\n\t\t\tthis.overlayElement.style.minHeight = formatCssUnit(\r\n\t\t\t\tthis.options.minHeight\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (this.options.maxWidth || this.options.maxWidth === 0) {\r\n\t\t\tthis.overlayElement.style.maxWidth = formatCssUnit(this.options.maxWidth);\r\n\t\t}\r\n\r\n\t\tif (this.options.maxHeight || this.options.maxHeight === 0) {\r\n\t\t\tthis.overlayElement.style.maxHeight = formatCssUnit(\r\n\t\t\t\tthis.options.maxHeight\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _handleBackdropClick(event: MouseEvent) {\r\n\t\tif (\r\n\t\t\t!isAncestorOfClass(event.target as Element, this.options.className, true)\r\n\t\t) {\r\n\t\t\tif (this.backdropClick) {\r\n\t\t\t\tthis.backdropClick(event);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function overlay(\r\n\telement: HTMLElement,\r\n\toptions?: OverlayOptions\r\n): Overlay {\r\n\tconst overlayRef = new Overlay(element, options);\r\n\r\n\toverlayRef.create();\r\n\r\n\treturn overlayRef;\r\n}\r\n\r\nfunction formatCssUnit(value: number | string) {\r\n\t// todo: @opten/typescript?\r\n\treturn typeof value === 'string' ? (value as string) : `${value}px`;\r\n}\r\n\r\n/** Size properties for an overlay. */\r\nexport interface OverlaySizeConfig {\r\n\twidth?: number | string;\r\n\theight?: number | string;\r\n\tminWidth?: number | string;\r\n\tminHeight?: number | string;\r\n\tmaxWidth?: number | string;\r\n\tmaxHeight?: number | string;\r\n}\r\n","import { isElementClippedByScrolling } from '@opten/viewport/is-element-clipped-by-scrolling';\r\nimport { isElementScrolledOutsideView } from '@opten/viewport/is-element-scrolled-outside-view';\r\n\r\nimport { PositionStrategy } from './position-strategy';\r\n\r\nimport {\r\n\tConnectionPositionPair,\r\n\tOriginConnectionPosition,\r\n\tOverlayConnectionPosition,\r\n\tScrollingVisibility,\r\n\tConnectedOverlayPositionChange,\r\n\tvalidateHorizontalPosition,\r\n\tvalidateVerticalPosition,\r\n} from './connected-position';\r\n\r\nimport { Overlay } from '../overlay';\r\n\r\nexport class ConnectedPositionStrategy implements PositionStrategy {\r\n\tonPositionChange: (change: ConnectedOverlayPositionChange) => void;\r\n\r\n\t/** The offset in pixels for the overlay connection point on the x-axis */\r\n\tprivate offsetX = 0;\r\n\r\n\t/** The offset in pixels for the overlay connection point on the y-axis */\r\n\tprivate offsetY = 0;\r\n\r\n\t/** The Scrollable containers used to check scrollable view properties on position change. */\r\n\tprivate scrollables: HTMLElement[] = [];\r\n\r\n\t/** Ordered list of preferred positions, from most to least desirable. */\r\n\tprivate preferredPositions: ConnectionPositionPair[] = [];\r\n\r\n\t/** The origin element against which the overlay will be positioned. */\r\n\tprivate origin: HTMLElement;\r\n\r\n\t/** The overlay pane element. */\r\n\tprivate pane: HTMLElement;\r\n\r\n\t/** The last position to have been calculated as the best fit position. */\r\n\tprivate lastConnectedPosition: ConnectionPositionPair;\r\n\r\n\t/** Whether the position strategy is applied currently. */\r\n\tprivate applied = false;\r\n\r\n\t/** Whether the overlay position is locked. */\r\n\tprivate positionLocked = false;\r\n\r\n\tprivate boundResizeChange = this._handleResizeChange.bind(this);\r\n\r\n\tconstructor(\r\n\t\toriginPos: OriginConnectionPosition,\r\n\t\toverlayPos: OverlayConnectionPosition,\r\n\t\tprivate connectedTo: HTMLElement,\r\n\t\tprivate document: Document\r\n\t) {\r\n\t\tthis.origin = this.connectedTo;\r\n\t\tthis.withFallbackPosition(originPos, overlayPos);\r\n\t}\r\n\r\n\t/** Ordered list of preferred positions, from most to least desirable. */\r\n\tget positions(): ConnectionPositionPair[] {\r\n\t\treturn this.preferredPositions;\r\n\t}\r\n\r\n\t/** Attach this position strategy to an overlay. */\r\n\tattach(overlayRef: Overlay): void {\r\n\t\tthis.pane = overlayRef.overlayElement;\r\n\r\n\t\twindow.addEventListener('resize', this.boundResizeChange);\r\n\t}\r\n\r\n\t/** @docs-private */\r\n\tdetach() {\r\n\t\tthis.applied = false;\r\n\t\twindow.removeEventListener('resize', this.boundResizeChange);\r\n\t}\r\n\r\n\t/** Disposes all resources used by the position strategy. */\r\n\tdispose() {\r\n\t\tthis.detach();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the position of the overlay element, using whichever preferred position relative\r\n\t * to the origin fits on-screen.\r\n\t * @docs-private\r\n\t */\r\n\tapply(): void {\r\n\t\t// If the position has been applied already (e.g. when the overlay was opened) and the\r\n\t\t// consumer opted into locking in the position, re-use the old position, in order to\r\n\t\t// prevent the overlay from jumping around.\r\n\t\tif (this.applied && this.positionLocked && this.lastConnectedPosition) {\r\n\t\t\tthis.recalculateLastPosition();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._validatePositions();\r\n\t\tthis.applied = true;\r\n\r\n\t\t// We need the bounding rects for the origin and the overlay to determine how to position\r\n\t\t// the overlay relative to the origin.\r\n\t\tconst element = this.pane;\r\n\t\tconst originRect = this.origin.getBoundingClientRect();\r\n\t\tconst overlayRect = element.getBoundingClientRect();\r\n\r\n\t\t// We use the viewport size to determine whether a position would go off-screen.\r\n\t\tconst viewportSize = {\r\n\t\t\twidth: window.innerWidth,\r\n\t\t\theight: window.innerHeight,\r\n\t\t};\r\n\r\n\t\t// Fallback point if none of the fallbacks fit into the viewport.\r\n\t\tlet fallbackPoint: OverlayPoint | undefined;\r\n\t\tlet fallbackPosition: ConnectionPositionPair | undefined;\r\n\r\n\t\t// We want to place the overlay in the first of the preferred positions such that the\r\n\t\t// overlay fits on-screen.\r\n\t\tfor (const pos of this.preferredPositions) {\r\n\t\t\t// Get the (x, y) point of connection on the origin, and then use that to get the\r\n\t\t\t// (top, left) coordinate for the overlay at `pos`.\r\n\t\t\tconst originPoint = this._getOriginConnectionPoint(originRect, pos);\r\n\t\t\tconst overlayPoint = this._getOverlayPoint(\r\n\t\t\t\toriginPoint,\r\n\t\t\t\toverlayRect,\r\n\t\t\t\tviewportSize,\r\n\t\t\t\tpos\r\n\t\t\t);\r\n\r\n\t\t\t// If the overlay in the calculated position fits on-screen, put it there and we're done.\r\n\t\t\tif (overlayPoint.fitsInViewport) {\r\n\t\t\t\tthis._setElementPosition(element, overlayRect, overlayPoint, pos);\r\n\r\n\t\t\t\t// Save the last connected position in case the position needs to be re-calculated.\r\n\t\t\t\tthis.lastConnectedPosition = pos;\r\n\r\n\t\t\t\treturn;\r\n\t\t\t} else if (\r\n\t\t\t\t!fallbackPoint ||\r\n\t\t\t\tfallbackPoint.visibleArea < overlayPoint.visibleArea\r\n\t\t\t) {\r\n\t\t\t\tfallbackPoint = overlayPoint;\r\n\t\t\t\tfallbackPosition = pos;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// If none of the preferred positions were in the viewport, take the one\r\n\t\t// with the largest visible area.\r\n\t\tthis._setElementPosition(\r\n\t\t\telement,\r\n\t\t\toverlayRect,\r\n\t\t\tfallbackPoint!,\r\n\t\t\tfallbackPosition!\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Re-positions the overlay element with the trigger in its last calculated position,\r\n\t * even if a position higher in the \"preferred positions\" list would now fit. This\r\n\t * allows one to re-align the panel without changing the orientation of the panel.\r\n\t */\r\n\trecalculateLastPosition(): void {\r\n\t\t// If the overlay has never been positioned before, do nothing.\r\n\t\tif (!this.lastConnectedPosition) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._validatePositions();\r\n\r\n\t\tconst originRect = this.origin.getBoundingClientRect();\r\n\t\tconst overlayRect = this.pane.getBoundingClientRect();\r\n\t\tconst viewportSize = {\r\n\t\t\twidth: window.innerWidth,\r\n\t\t\theight: window.innerHeight,\r\n\t\t};\r\n\t\tconst lastPosition =\r\n\t\t\tthis.lastConnectedPosition || this.preferredPositions[0];\r\n\r\n\t\tconst originPoint = this._getOriginConnectionPoint(\r\n\t\t\toriginRect,\r\n\t\t\tlastPosition\r\n\t\t);\r\n\t\tconst overlayPoint = this._getOverlayPoint(\r\n\t\t\toriginPoint,\r\n\t\t\toverlayRect,\r\n\t\t\tviewportSize,\r\n\t\t\tlastPosition\r\n\t\t);\r\n\t\tthis._setElementPosition(\r\n\t\t\tthis.pane,\r\n\t\t\toverlayRect,\r\n\t\t\toverlayPoint,\r\n\t\t\tlastPosition\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the list of Scrollable containers that host the origin element so that\r\n\t * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every\r\n\t * Scrollable must be an ancestor element of the strategy's origin element.\r\n\t */\r\n\twithScrollableContainers(scrollables: HTMLElement[]): this {\r\n\t\tthis.scrollables = scrollables;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a new preferred fallback position.\r\n\t * @param originPos\r\n\t * @param overlayPos\r\n\t */\r\n\twithFallbackPosition(\r\n\t\toriginPos: OriginConnectionPosition,\r\n\t\toverlayPos: OverlayConnectionPosition,\r\n\t\toffsetX?: number,\r\n\t\toffsetY?: number\r\n\t): this {\r\n\t\tconst position = new ConnectionPositionPair(\r\n\t\t\toriginPos,\r\n\t\t\toverlayPos,\r\n\t\t\toffsetX,\r\n\t\t\toffsetY\r\n\t\t);\r\n\t\tthis.preferredPositions.push(position);\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets an offset for the overlay's connection point on the x-axis\r\n\t * @param offset New offset in the X axis.\r\n\t */\r\n\twithOffsetX(offset: number): this {\r\n\t\tthis.offsetX = offset;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets an offset for the overlay's connection point on the y-axis\r\n\t * @param offset New offset in the Y axis.\r\n\t */\r\n\twithOffsetY(offset: number): this {\r\n\t\tthis.offsetY = offset;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets whether the overlay's position should be locked in after it is positioned\r\n\t * initially. When an overlay is locked in, it won't attempt to reposition itself\r\n\t * when the position is re-applied (e.g. when the user scrolls away).\r\n\t * @param isLocked Whether the overlay should locked in.\r\n\t */\r\n\twithLockedPosition(isLocked: boolean): this {\r\n\t\tthis.positionLocked = isLocked;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Overwrites the current set of positions with an array of new ones.\r\n\t * @param positions Position pairs to be set on the strategy.\r\n\t */\r\n\twithPositions(positions: ConnectionPositionPair[]): this {\r\n\t\tthis.preferredPositions = positions.slice();\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the origin element, relative to which to position the overlay.\r\n\t * @param origin Reference to the new origin element.\r\n\t */\r\n\tsetOrigin(origin: HTMLElement): this {\r\n\t\tthis.origin = origin;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the horizontal (x) \"start\" dimension\r\n\t * @param rect\r\n\t */\r\n\tprivate _getStartX(rect: ClientRect): number {\r\n\t\treturn rect.left;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the horizontal (x) \"end\" dimension\r\n\t * @param rect\r\n\t */\r\n\tprivate _getEndX(rect: ClientRect): number {\r\n\t\treturn rect.right;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the (x, y) coordinate of a connection point on the origin based on a relative position.\r\n\t * @param originRect\r\n\t * @param pos\r\n\t */\r\n\tprivate _getOriginConnectionPoint(\r\n\t\toriginRect: ClientRect,\r\n\t\tpos: ConnectionPositionPair\r\n\t): Point {\r\n\t\tconst originStartX = this._getStartX(originRect);\r\n\t\tconst originEndX = this._getEndX(originRect);\r\n\r\n\t\tlet x: number;\r\n\t\tif (pos.originX === 'center') {\r\n\t\t\tx = originStartX + originRect.width / 2;\r\n\t\t} else {\r\n\t\t\tx = pos.originX === 'start' ? originStartX : originEndX;\r\n\t\t}\r\n\r\n\t\tlet y: number;\r\n\t\tif (pos.originY === 'center') {\r\n\t\t\ty = originRect.top + originRect.height / 2;\r\n\t\t} else {\r\n\t\t\ty = pos.originY === 'top' ? originRect.top : originRect.bottom;\r\n\t\t}\r\n\r\n\t\treturn { x, y };\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the (x, y) coordinate of the top-left corner of the overlay given a given position and\r\n\t * origin point to which the overlay should be connected, as well as how much of the element\r\n\t * would be inside the viewport at that position.\r\n\t */\r\n\tprivate _getOverlayPoint(\r\n\t\toriginPoint: Point,\r\n\t\toverlayRect: ClientRect,\r\n\t\tviewportSize: { width: number; height: number },\r\n\t\tpos: ConnectionPositionPair\r\n\t): OverlayPoint {\r\n\t\t// Calculate the (overlayStartX, overlayStartY), the start of the potential overlay position\r\n\t\t// relative to the origin point.\r\n\t\tlet overlayStartX: number;\r\n\t\tif (pos.overlayX === 'center') {\r\n\t\t\toverlayStartX = -overlayRect.width / 2;\r\n\t\t} else if (pos.overlayX === 'start') {\r\n\t\t\toverlayStartX = 0;\r\n\t\t} else {\r\n\t\t\toverlayStartX = -overlayRect.width;\r\n\t\t}\r\n\r\n\t\tlet overlayStartY: number;\r\n\t\tif (pos.overlayY === 'center') {\r\n\t\t\toverlayStartY = -overlayRect.height / 2;\r\n\t\t} else {\r\n\t\t\toverlayStartY = pos.overlayY === 'top' ? 0 : -overlayRect.height;\r\n\t\t}\r\n\r\n\t\t// The (x, y) offsets of the overlay based on the current position.\r\n\t\tconst offsetX =\r\n\t\t\ttypeof pos.offsetX === 'undefined' ? this.offsetX : pos.offsetX;\r\n\t\tconst offsetY =\r\n\t\t\ttypeof pos.offsetY === 'undefined' ? this.offsetY : pos.offsetY;\r\n\r\n\t\t// The (x, y) coordinates of the overlay.\r\n\t\tconst x = originPoint.x + overlayStartX + offsetX;\r\n\t\tconst y = originPoint.y + overlayStartY + offsetY;\r\n\r\n\t\t// How much the overlay would overflow at this position, on each side.\r\n\t\tconst leftOverflow = 0 - x;\r\n\t\tconst rightOverflow = x + overlayRect.width - viewportSize.width;\r\n\t\tconst topOverflow = 0 - y;\r\n\t\tconst bottomOverflow = y + overlayRect.height - viewportSize.height;\r\n\r\n\t\t// Visible parts of the element on each axis.\r\n\t\tconst visibleWidth = this._subtractOverflows(\r\n\t\t\toverlayRect.width,\r\n\t\t\tleftOverflow,\r\n\t\t\trightOverflow\r\n\t\t);\r\n\t\tconst visibleHeight = this._subtractOverflows(\r\n\t\t\toverlayRect.height,\r\n\t\t\ttopOverflow,\r\n\t\t\tbottomOverflow\r\n\t\t);\r\n\r\n\t\t// The area of the element that's within the viewport.\r\n\t\tconst visibleArea = visibleWidth * visibleHeight;\r\n\t\tconst fitsInViewport =\r\n\t\t\toverlayRect.width * overlayRect.height === visibleArea;\r\n\r\n\t\treturn { x, y, fitsInViewport, visibleArea };\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the view properties of the trigger and overlay, including whether they are clipped\r\n\t * or completely outside the view of any of the strategy's scrollables.\r\n\t */\r\n\tprivate _getScrollVisibility(overlay: HTMLElement): ScrollingVisibility {\r\n\t\tconst originBounds = this.origin.getBoundingClientRect();\r\n\t\tconst overlayBounds = overlay.getBoundingClientRect();\r\n\t\tconst scrollContainerBounds = this.scrollables.map((s) =>\r\n\t\t\ts.getBoundingClientRect()\r\n\t\t);\r\n\r\n\t\treturn {\r\n\t\t\tisOriginClipped: isElementClippedByScrolling(\r\n\t\t\t\toriginBounds,\r\n\t\t\t\tscrollContainerBounds\r\n\t\t\t),\r\n\t\t\tisOriginOutsideView: isElementScrolledOutsideView(\r\n\t\t\t\toriginBounds,\r\n\t\t\t\tscrollContainerBounds\r\n\t\t\t),\r\n\t\t\tisOverlayClipped: isElementClippedByScrolling(\r\n\t\t\t\toverlayBounds,\r\n\t\t\t\tscrollContainerBounds\r\n\t\t\t),\r\n\t\t\tisOverlayOutsideView: isElementScrolledOutsideView(\r\n\t\t\t\toverlayBounds,\r\n\t\t\t\tscrollContainerBounds\r\n\t\t\t),\r\n\t\t};\r\n\t}\r\n\r\n\t/** Physically positions the overlay element to the given coordinate. */\r\n\tprivate _setElementPosition(\r\n\t\telement: HTMLElement,\r\n\t\toverlayRect: ClientRect,\r\n\t\toverlayPoint: Point,\r\n\t\tpos: ConnectionPositionPair\r\n\t) {\r\n\t\t// We want to set either `top` or `bottom` based on whether the overlay wants to appear above\r\n\t\t// or below the origin and the direction in which the element will expand.\r\n\t\tconst verticalStyleProperty = pos.overlayY === 'bottom' ? 'bottom' : 'top';\r\n\r\n\t\t// When using `bottom`, we adjust the y position such that it is the distance\r\n\t\t// from the bottom of the viewport rather than the top.\r\n\t\tconst y =\r\n\t\t\tverticalStyleProperty === 'top'\r\n\t\t\t\t? overlayPoint.y\r\n\t\t\t\t: this.document.documentElement.clientHeight -\r\n\t\t\t\t (overlayPoint.y + overlayRect.height);\r\n\r\n\t\tconst horizontalStyleProperty = pos.overlayX === 'end' ? 'right' : 'left';\r\n\r\n\t\t// When we're setting `right`, we adjust the x position such that it is the distance\r\n\t\t// from the right edge of the viewport rather than the left edge.\r\n\t\tconst x =\r\n\t\t\thorizontalStyleProperty === 'left'\r\n\t\t\t\t? overlayPoint.x\r\n\t\t\t\t: this.document.documentElement.clientWidth -\r\n\t\t\t\t (overlayPoint.x + overlayRect.width);\r\n\r\n\t\t// Reset any existing styles. This is necessary in case the preferred position has\r\n\t\t// changed since the last `apply`.\r\n\t\t['top', 'bottom', 'left', 'right'].forEach(\r\n\t\t\t(p) => (element.style[p] = null)\r\n\t\t);\r\n\r\n\t\telement.style[verticalStyleProperty] = `${y}px`;\r\n\t\telement.style[horizontalStyleProperty] = `${x}px`;\r\n\r\n\t\t// Notify that the position has been changed along with its change properties.\r\n\t\tconst scrollableViewProperties = this._getScrollVisibility(element);\r\n\t\tconst positionChange = new ConnectedOverlayPositionChange(\r\n\t\t\tpos,\r\n\t\t\tscrollableViewProperties\r\n\t\t);\r\n\r\n\t\tif (this.onPositionChange) {\r\n\t\t\tthis.onPositionChange(positionChange);\r\n\t\t}\r\n\t}\r\n\r\n\t/** Subtracts the amount that an element is overflowing on an axis from it's length. */\r\n\tprivate _subtractOverflows(length: number, ...overflows: number[]): number {\r\n\t\treturn overflows.reduce((currentValue: number, currentOverflow: number) => {\r\n\t\t\treturn currentValue - Math.max(currentOverflow, 0);\r\n\t\t}, length);\r\n\t}\r\n\r\n\t/** Validates that the current position match the expected values. */\r\n\tprivate _validatePositions(): void {\r\n\t\tif (!this.preferredPositions.length) {\r\n\t\t\tthrow Error(\r\n\t\t\t\t'ConnectedPositionStrategy: At least one position is required.'\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t// TODO(crisbeto): remove these once Angular's template type\r\n\t\t// checking is advanced enough to catch these cases.\r\n\t\tthis.preferredPositions.forEach((pair) => {\r\n\t\t\tvalidateHorizontalPosition('originX', pair.originX);\r\n\t\t\tvalidateVerticalPosition('originY', pair.originY);\r\n\t\t\tvalidateHorizontalPosition('overlayX', pair.overlayX);\r\n\t\t\tvalidateVerticalPosition('overlayY', pair.overlayY);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _handleResizeChange() {\r\n\t\tthis.apply();\r\n\t}\r\n}\r\n\r\n/** A simple (x, y) coordinate. */\r\n// tslint:disable-next-line:interface-name\r\ninterface Point {\r\n\tx: number;\r\n\ty: number;\r\n}\r\n\r\n/**\r\n * Expands the simple (x, y) coordinate by adding info about whether the\r\n * element would fit inside the viewport at that position, as well as\r\n * how much of the element would be visible.\r\n */\r\n// tslint:disable-next-line:interface-name\r\ninterface OverlayPoint extends Point {\r\n\tvisibleArea: number;\r\n\tfitsInViewport: boolean;\r\n}\r\n","/** Horizontal dimension of a connection point on the perimeter of the origin or overlay element. */\r\nexport type HorizontalConnectionPos = 'start' | 'center' | 'end';\r\n\r\n/** Vertical dimension of a connection point on the perimeter of the origin or overlay element. */\r\nexport type VerticalConnectionPos = 'top' | 'center' | 'bottom';\r\n\r\n/** A connection point on the origin element. */\r\n// tslint:disable-next-line:interface-name\r\nexport interface OriginConnectionPosition {\r\n\toriginX: HorizontalConnectionPos;\r\n\toriginY: VerticalConnectionPos;\r\n}\r\n\r\n/** A connection point on the overlay element. */\r\n// tslint:disable-next-line:interface-name\r\nexport interface OverlayConnectionPosition {\r\n\toverlayX: HorizontalConnectionPos;\r\n\toverlayY: VerticalConnectionPos;\r\n}\r\n\r\n/** The points of the origin element and the overlay element to connect. */\r\nexport class ConnectionPositionPair {\r\n\t/** X-axis attachment point for connected overlay origin. Can be 'start', 'end', or 'center'. */\r\n\toriginX: HorizontalConnectionPos;\r\n\t/** Y-axis attachment point for connected overlay origin. Can be 'top', 'bottom', or 'center'. */\r\n\toriginY: VerticalConnectionPos;\r\n\t/** X-axis attachment point for connected overlay. Can be 'start', 'end', or 'center'. */\r\n\toverlayX: HorizontalConnectionPos;\r\n\t/** Y-axis attachment point for connected overlay. Can be 'top', 'bottom', or 'center'. */\r\n\toverlayY: VerticalConnectionPos;\r\n\r\n\tconstructor(\r\n\t\torigin: OriginConnectionPosition,\r\n\t\toverlay: OverlayConnectionPosition,\r\n\t\tpublic offsetX?: number,\r\n\t\tpublic offsetY?: number\r\n\t) {\r\n\t\tthis.originX = origin.originX;\r\n\t\tthis.originY = origin.originY;\r\n\t\tthis.overlayX = overlay.overlayX;\r\n\t\tthis.overlayY = overlay.overlayY;\r\n\t}\r\n}\r\n\r\n/**\r\n * Set of properties regarding the position of the origin and overlay relative to the viewport\r\n * with respect to the containing Scrollable elements.\r\n *\r\n * The overlay and origin are clipped if any part of their bounding client rectangle exceeds the\r\n * bounds of any one of the strategy's Scrollable's bounding client rectangle.\r\n *\r\n * The overlay and origin are outside view if there is no overlap between their bounding client\r\n * rectangle and any one of the strategy's Scrollable's bounding client rectangle.\r\n *\r\n * ----------- -----------\r\n * | outside | | clipped |\r\n * | view | --------------------------\r\n * | | | | | |\r\n * ---------- | ----------- |\r\n * -------------------------- | |\r\n * | | | Scrollable |\r\n * | | | |\r\n * | | --------------------------\r\n * | Scrollable |\r\n * | |\r\n * --------------------------\r\n *\r\n * @docs-private\r\n */\r\nexport class ScrollingVisibility {\r\n\tisOriginClipped: boolean;\r\n\tisOriginOutsideView: boolean;\r\n\tisOverlayClipped: boolean;\r\n\tisOverlayOutsideView: boolean;\r\n}\r\n\r\n/** The change event emitted by the strategy when a fallback position is used. */\r\nexport class ConnectedOverlayPositionChange {\r\n\tconstructor(\r\n\t\t/** The position used as a result of this change. */\r\n\t\tpublic connectionPair: ConnectionPositionPair,\r\n\t\tpublic scrollableViewProperties?: ScrollingVisibility\r\n\t) {}\r\n}\r\n\r\n/**\r\n * Validates whether a vertical position property matches the expected values.\r\n * @param property Name of the property being validated.\r\n * @param value Value of the property being validated.\r\n * @docs-private\r\n */\r\nexport function validateVerticalPosition(\r\n\tproperty: string,\r\n\tvalue: VerticalConnectionPos\r\n) {\r\n\tif (value !== 'top' && value !== 'bottom' && value !== 'center') {\r\n\t\tthrow Error(\r\n\t\t\t`ConnectedPosition: Invalid ${property} '${value}'. ` +\r\n\t\t\t\t\"Expected 'top', 'bottom' or 'center'.\"\r\n\t\t);\r\n\t}\r\n}\r\n\r\n/**\r\n * Validates whether a horizontal position property matches the expected values.\r\n * @param property Name of the property being validated.\r\n * @param value Value of the property being validated.\r\n * @docs-private\r\n */\r\nexport function validateHorizontalPosition(\r\n\tproperty: string,\r\n\tvalue: HorizontalConnectionPos\r\n) {\r\n\tif (value !== 'start' && value !== 'end' && value !== 'center') {\r\n\t\tthrow Error(\r\n\t\t\t`ConnectedPosition: Invalid ${property} '${value}'. ` +\r\n\t\t\t\t\"Expected 'start', 'end' or 'center'.\"\r\n\t\t);\r\n\t}\r\n}\r\n","import { addClass } from '@opten/dom/add-class';\r\nimport { PositionStrategy } from './position-strategy';\r\nimport { Overlay } from '../overlay';\r\n\r\n/**\r\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\r\n * explicit position relative to the browser's viewport. We use flexbox, instead of\r\n * transforms, in order to avoid issues with subpixel rendering which can cause the\r\n * element to become blurry.\r\n */\r\nexport class GlobalPositionStrategy implements PositionStrategy {\r\n\t/** The overlay to which this strategy is attached. */\r\n\tprivate overlayRef: Overlay;\r\n\r\n\tprivate cssPosition = 'static';\r\n\tprivate topOffset = '';\r\n\tprivate bottomOffset = '';\r\n\tprivate leftOffset = '';\r\n\tprivate rightOffset = '';\r\n\tprivate alignItems = '';\r\n\tprivate justifyContent = '';\r\n\tprivate width = '';\r\n\tprivate height = '';\r\n\r\n\t/** A lazily-created wrapper for the overlay element that is used as a flex container. */\r\n\tprivate wrapper: HTMLElement | null = null;\r\n\r\n\tconstructor(private document: Document) {}\r\n\r\n\tattach(overlayRef: Overlay): void {\r\n\t\tconst options = overlayRef.getOptions();\r\n\r\n\t\tthis.overlayRef = overlayRef;\r\n\r\n\t\tif (this.width && !options.width) {\r\n\t\t\toverlayRef.updateSize({ width: this.width });\r\n\t\t}\r\n\r\n\t\tif (this.height && !options.height) {\r\n\t\t\toverlayRef.updateSize({ height: this.height });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the top position of the overlay. Clears any previously set vertical position.\r\n\t * @param value New top offset.\r\n\t */\r\n\ttop(value = ''): this {\r\n\t\tthis.bottomOffset = '';\r\n\t\tthis.topOffset = value;\r\n\t\tthis.alignItems = 'flex-start';\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the left position of the overlay. Clears any previously set horizontal position.\r\n\t * @param value New left offset.\r\n\t */\r\n\tleft(value = ''): this {\r\n\t\tthis.rightOffset = '';\r\n\t\tthis.leftOffset = value;\r\n\t\tthis.justifyContent = 'flex-start';\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the bottom position of the overlay. Clears any previously set vertical position.\r\n\t * @param value New bottom offset.\r\n\t */\r\n\tbottom(value = ''): this {\r\n\t\tthis.topOffset = '';\r\n\t\tthis.bottomOffset = value;\r\n\t\tthis.alignItems = 'flex-end';\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the right position of the overlay. Clears any previously set horizontal position.\r\n\t * @param value New right offset.\r\n\t */\r\n\tright(value = ''): this {\r\n\t\tthis.leftOffset = '';\r\n\t\tthis.rightOffset = value;\r\n\t\tthis.justifyContent = 'flex-end';\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Centers the overlay horizontally with an optional offset.\r\n\t * Clears any previously set horizontal position.\r\n\t *\r\n\t * @param offset Overlay offset from the horizontal center.\r\n\t */\r\n\tcenterHorizontally(offset = ''): this {\r\n\t\tthis.left(offset);\r\n\t\tthis.justifyContent = 'center';\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Centers the overlay vertically with an optional offset.\r\n\t * Clears any previously set vertical position.\r\n\t *\r\n\t * @param offset Overlay offset from the vertical center.\r\n\t */\r\n\tcenterVertically(offset = ''): this {\r\n\t\tthis.top(offset);\r\n\t\tthis.alignItems = 'center';\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Apply the position to the element.\r\n\t * @docs-private\r\n\t *\r\n\t * @returns Resolved when the styles have been applied.\r\n\t */\r\n\tapply() {\r\n\t\t// Since the overlay ref applies the strategy asynchronously, it could\r\n\t\t// have been disposed before it ends up being applied. If that is the\r\n\t\t// case, we shouldn't do anything.\r\n\t\tif (!this.overlayRef.hasAttached()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst element = this.overlayRef.overlayElement;\r\n\r\n\t\tif (!this.wrapper && element.parentNode) {\r\n\t\t\tthis.wrapper = this.document.createElement('div');\r\n\t\t\taddClass(this.wrapper, 'c-overlay__global'); // todo: settings?\r\n\t\t\telement.parentNode.insertBefore(this.wrapper!, element);\r\n\t\t\tthis.wrapper!.appendChild(element);\r\n\t\t}\r\n\r\n\t\tconst parentStyles = (element.parentNode as HTMLElement).style;\r\n\t\tconst options = this.overlayRef.getOptions();\r\n\r\n\t\telement.style.position = this.cssPosition;\r\n\t\telement.style.marginLeft = options.width === '100%' ? '0' : this.leftOffset;\r\n\t\telement.style.marginTop = options.height === '100%' ? '0' : this.topOffset;\r\n\t\telement.style.marginBottom = this.bottomOffset;\r\n\t\telement.style.marginRight = this.rightOffset;\r\n\r\n\t\tparentStyles.justifyContent =\r\n\t\t\toptions.width === '100%' ? 'flex-start' : this.justifyContent;\r\n\t\tparentStyles.alignItems =\r\n\t\t\toptions.height === '100%' ? 'flex-start' : this.alignItems;\r\n\t}\r\n\r\n\t/** Removes the wrapper element from the DOM. */\r\n\tdispose() {\r\n\t\tif (this.wrapper && this.wrapper.parentNode) {\r\n\t\t\tthis.wrapper.parentNode.removeChild(this.wrapper);\r\n\t\t\tthis.wrapper = null;\r\n\t\t}\r\n\t}\r\n}\r\n","import {\r\n\tOriginConnectionPosition,\r\n\tOverlayConnectionPosition,\r\n} from './connected-position';\r\nimport { ConnectedPositionStrategy } from './connected-position-strategy';\r\nimport { GlobalPositionStrategy } from './global-position-strategy';\r\n\r\nexport class OverlayPositionBuilder {\r\n\t/**\r\n\t * Creates a global position strategy.\r\n\t */\r\n\tglobal(): GlobalPositionStrategy {\r\n\t\treturn new GlobalPositionStrategy(document);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a relative position strategy.\r\n\t * @param elementRef\r\n\t * @param originPos\r\n\t * @param overlayPos\r\n\t */\r\n\tconnectedTo(\r\n\t\telementRef: HTMLElement,\r\n\t\toriginPos: OriginConnectionPosition,\r\n\t\toverlayPos: OverlayConnectionPosition\r\n\t): ConnectedPositionStrategy {\r\n\t\treturn new ConnectedPositionStrategy(\r\n\t\t\toriginPos,\r\n\t\t\toverlayPos,\r\n\t\t\telementRef,\r\n\t\t\tdocument\r\n\t\t);\r\n\t}\r\n}\r\n","import { isElementScrolledOutsideView } from '@opten/viewport/is-element-scrolled-outside-view';\r\n\r\nimport { ScrollStrategy } from './scroll-strategy';\r\nimport { Overlay } from '../overlay';\r\n\r\n/**\r\n * Config options for the RepositionScrollStrategy.\r\n */\r\n// tslint:disable-next-line:interface-name\r\nexport interface RepositionScrollStrategyConfig {\r\n\t/** Time in milliseconds to throttle the scroll events. */\r\n\tscrollThrottle?: number;\r\n\r\n\t/** Whether to close the overlay once the user has scrolled away completely. */\r\n\tautoClose?: boolean;\r\n}\r\n\r\n/**\r\n * Strategy that will update the element position as the user is scrolling.\r\n */\r\nexport class RepositionScrollStrategy implements ScrollStrategy {\r\n\tprivate overlayRef: Overlay;\r\n\tprivate applied = false;\r\n\r\n\tconstructor(private config?: RepositionScrollStrategyConfig) {}\r\n\r\n\t/** Attaches this scroll strategy to an overlay. */\r\n\tattach(overlayRef: Overlay) {\r\n\t\tthis.overlayRef = overlayRef;\r\n\t}\r\n\r\n\t/** Enables repositioning of the attached overlay on scroll. */\r\n\tenable() {\r\n\t\tif (!this.applied) {\r\n\t\t\twindow.addEventListener('scroll', this.handleScroll);\r\n\t\t\tthis.applied = true;\r\n\t\t}\r\n\t}\r\n\r\n\t/** Disables repositioning of the attached overlay on scroll. */\r\n\tdisable() {\r\n\t\tif (this.applied) {\r\n\t\t\twindow.removeEventListener('scroll', this.handleScroll);\r\n\t\t\tthis.applied = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate handleScroll = () => {\r\n\t\tconst throttle = this.config ? this.config.scrollThrottle : 0;\r\n\t\tconst autoClose = this.config ? this.config.autoClose : true;\r\n\r\n\t\tconst update = () => {\r\n\t\t\tthis.overlayRef.updatePosition();\r\n\r\n\t\t\tif (autoClose) {\r\n\t\t\t\tconst overlayRect = this.overlayRef.overlayElement.getBoundingClientRect();\r\n\t\t\t\tconst { width, height } = {\r\n\t\t\t\t\twidth: window.innerWidth,\r\n\t\t\t\t\theight: window.innerHeight,\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// todo: include all ancestor scroll containers here once\r\n\t\t\t\t// we have a way of exposing the trigger element to the scroll strategy.\r\n\t\t\t\tconst parentRects = [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\twidth,\r\n\t\t\t\t\t\theight,\r\n\t\t\t\t\t\tbottom: height,\r\n\t\t\t\t\t\tright: width,\r\n\t\t\t\t\t\ttop: 0,\r\n\t\t\t\t\t\tleft: 0,\r\n\t\t\t\t\t},\r\n\t\t\t\t];\r\n\r\n\t\t\t\tif (isElementScrolledOutsideView(overlayRect, parentRects)) {\r\n\t\t\t\t\tthis.disable();\r\n\t\t\t\t\tthis.overlayRef.close();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tif (throttle > 0) {\r\n\t\t\tsetTimeout(() => update(), throttle);\r\n\t\t} else {\r\n\t\t\tupdate();\r\n\t\t}\r\n\t};\r\n}\r\n","interface LoadingScriptWindow extends Window {\r\n\tloadingScripts: string[];\r\n}\r\n\r\nconst loadingScriptWindow = (window as unknown) as LoadingScriptWindow;\r\n\r\nloadingScriptWindow.loadingScripts = loadingScriptWindow.loadingScripts || [];\r\n\r\nexport function createScript(src: string, onerror: () => void = () => {}) {\r\n\tconst scriptElement = document.createElement('script');\r\n\tscriptElement.src = src;\r\n\tscriptElement.async = false;\r\n\tscriptElement.onload = (e) => {\r\n\t\tremoveLoadingScript(src);\r\n\t};\r\n\tscriptElement.onerror = (e) => {\r\n\t\tconsole.error(e);\r\n\t\tremoveLoadingScript(src);\r\n\t\tonerror();\r\n\t};\r\n\tloadingScriptWindow.loadingScripts.push(src);\r\n\treturn scriptElement;\r\n}\r\n\r\nfunction removeLoadingScript(src: string) {\r\n\tconst index = loadingScriptWindow.loadingScripts.indexOf(src);\r\n\tif (index > -1) {\r\n\t\tloadingScriptWindow.loadingScripts = loadingScriptWindow.loadingScripts.splice(\r\n\t\t\tindex,\r\n\t\t\t1\r\n\t\t);\r\n\t}\r\n}\r\n","import { removeDomain } from '@opten/url/remove-domain';\r\n\r\nexport function getScriptBySrc(src: string): HTMLScriptElement {\r\n\t// HINT: NEVER EVER change to Array.from() we need this code in load-polyfill\r\n\t// and IE doesn't understand this until the polyfills are obviously loaded!\r\n\tconst scripts = document.getElementsByTagName('script');\r\n\tfor (let i = 0; i < scripts.length; i++) {\r\n\t\tconst currentScriptElement = scripts.item(i);\r\n\t\tconst currentSrc = removeDomain(currentScriptElement.src);\r\n\t\tif (currentSrc === src) {\r\n\t\t\treturn currentScriptElement;\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n","import { removeDomain } from '@opten/url/remove-domain';\r\nimport { wrapFunction } from '@opten/common/wrap-function';\r\nimport { getScriptBySrc } from '../get-script-by-src';\r\nimport { createScript } from '../create-script';\r\n\r\n(window as any).loadingScripts = (window as any).loadingScripts || [];\r\n\r\nexport function loadScript(src: string) {\r\n\treturn new Promise(\r\n\t\t(resolve: (ev?: Event) => void, reject: (ev: ErrorEvent) => void) => {\r\n\t\t\tconst script = getScriptBySrc(src);\r\n\r\n\t\t\tif (script) {\r\n\t\t\t\tif (\r\n\t\t\t\t\t(window as any).loadingScripts.indexOf(removeDomain(script.src)) !==\r\n\t\t\t\t\t-1\r\n\t\t\t\t) {\r\n\t\t\t\t\tscript.onerror = wrapFunction(script.onerror, reject);\r\n\t\t\t\t\tscript.onload = wrapFunction(script.onload, resolve);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst newScript = createScript(src);\r\n\t\t\t\tnewScript.onerror = reject;\r\n\t\t\t\tnewScript.onload = wrapFunction(newScript.onload, resolve);\r\n\t\t\t\tdocument.head.appendChild(newScript);\r\n\t\t\t}\r\n\t\t}\r\n\t);\r\n}\r\n","import { AnimationFunction } from '@opten/animation/animation-function';\r\nimport { linearTween } from '@opten/animation/linear-tween';\r\nimport { scrollToOffset } from '../scroll-to-offset';\r\n\r\nexport function scrollToElement(\r\n\ttarget: Element,\r\n\tanimation: AnimationFunction = linearTween,\r\n\tduration = 300,\r\n\toffset = 0,\r\n\twrapper: HTMLElement | Window = window\r\n) {\r\n\tconst top =\r\n\t\twrapper !== window\r\n\t\t\t? (target as HTMLElement).offsetTop - (wrapper as HTMLElement).scrollTop\r\n\t\t\t: target.getBoundingClientRect().top;\r\n\r\n\treturn scrollToOffset(top, animation, duration, offset, wrapper);\r\n}\r\n","import { AnimationFunction } from '@opten/animation/animation-function';\r\nimport { linearTween } from '@opten/animation/linear-tween';\r\nimport { scrollTo } from '../scroll-to';\r\n\r\nexport function scrollToOffset(\r\n\tdistance: number,\r\n\tanimationFunction: AnimationFunction = linearTween,\r\n\tduration = 300,\r\n\toffset = 0,\r\n\twrapper: HTMLElement | Window = window\r\n) {\r\n\tscrollTo(distance + offset, animationFunction, duration, wrapper);\r\n}\r\n","import { AnimationFunction } from '@opten/animation/animation-function';\r\nimport { getWindowScrollTop } from '@opten/dom/get-window-scroll-top';\r\n\r\nexport function scrollTo(\r\n\tdistance: number,\r\n\tanimationFunction: AnimationFunction = (t, b, c, d) => {\r\n\t\treturn (c * t) / d + b;\r\n\t},\r\n\tduration = 300,\r\n\twrapper: HTMLElement | Window = window\r\n) {\r\n\tlet start = getWindowScrollTop();\r\n\tlet timeStart: number;\r\n\tlet timeElapsed: number;\r\n\r\n\tif (wrapper instanceof HTMLElement) {\r\n\t\tstart = wrapper.scrollTop;\r\n\t}\r\n\r\n\trequestAnimationFrame.call(window, (time) => {\r\n\t\ttimeStart = time;\r\n\t\tloop(time);\r\n\t});\r\n\r\n\tfunction loop(time) {\r\n\t\ttimeElapsed = time - timeStart;\r\n\r\n\t\tif (wrapper instanceof Window) {\r\n\t\t\twrapper.scrollTo(\r\n\t\t\t\t0,\r\n\t\t\t\tanimationFunction(timeElapsed, start, distance, duration)\r\n\t\t\t);\r\n\r\n\t\t\tif (timeElapsed < duration) {\r\n\t\t\t\trequestAnimationFrame.call(window, loop);\r\n\t\t\t} else {\r\n\t\t\t\twrapper.scrollTo(0, start + distance);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\twrapper.scrollTop = animationFunction(\r\n\t\t\t\ttimeElapsed,\r\n\t\t\t\tstart,\r\n\t\t\t\tdistance,\r\n\t\t\t\tduration\r\n\t\t\t);\r\n\r\n\t\t\tif (timeElapsed < duration) {\r\n\t\t\t\trequestAnimationFrame.call(window, loop);\r\n\t\t\t} else {\r\n\t\t\t\twrapper.scrollTop = start + distance;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import { newGuid } from '@opten/common/new-guid';\nimport { addClass } from '@opten/dom/add-class';\nimport { removeClass } from '@opten/dom/remove-class';\nimport { createNode } from '@opten/dom/create-node';\nimport { KEYCODES } from '@opten/keycodes';\nimport {\n\toverlay,\n\tOverlay,\n\tOverlayOptions,\n\tConnectedPositionStrategy,\n\tOverlayPositionBuilder,\n\tOriginConnectionPosition,\n\tOverlayConnectionPosition,\n} from '../overlay';\nimport { parseCssUnit } from '@opten/number/parse-css-unit';\nimport { getCss } from '@opten/dom/get-css';\nimport { RepositionScrollStrategy } from '../overlay/scroll/reposition-scroll-strategy';\n\n/**\n * The following style constants are necessary to save here in order\n * to properly calculate the alignment of the selected option over\n * the trigger element.\n */\n\nexport class SelectOptions {\n\tclasses: {\n\t\tcomponent: string;\n\t\tactive: string;\n\t\thighlighted: string;\n\t\tdisabled: string;\n\t\ticonHtml?: string;\n\t};\n}\n\nexport class Option {\n\tconstructor(private element: HTMLOptionElement) {\n\t\t// this properties are cached\n\t\tthis.text = (this.element.textContent || '').trim();\n\t\tthis.disabled = this.element.disabled;\n\t}\n\n\tget disabled() {\n\t\treturn this._disabled;\n\t}\n\tset disabled(value: boolean) {\n\t\tthis._disabled = value;\n\t}\n\tprivate _disabled: boolean;\n\n\tget text() {\n\t\treturn this._text;\n\t}\n\tset text(value: string) {\n\t\tthis._text = value;\n\t}\n\tprivate _text: string;\n\n\tget value() {\n\t\t// don't cache value, might change!\n\t\treturn (this.element.value || '').trim();\n\t}\n}\n\nexport class Select {\n\tprivate overlayRef: Overlay;\n\tprivate position: ConnectedPositionStrategy;\n\n\tprivate select: HTMLElement;\n\tprivate options: Option[];\n\tprivate selectedIndex: number;\n\tprivate activeIndex: number;\n\tprivate uuid: string;\n\n\tprivate triggerElement: HTMLElement;\n\tprivate triggerRect: ClientRect;\n\tprivate optionElements: HTMLElement[];\n\n\tpublic name: string;\n\tpublic htmlSelectElement: HTMLSelectElement;\n\n\tget value() {\n\t\t// don't cache value, might change!\n\t\treturn (this.htmlSelectElement.value || '').trim();\n\t}\n\n\tprivate config: SelectOptions = {\n\t\tclasses: {\n\t\t\tcomponent: 'c-select',\n\t\t\tactive: 'is-active',\n\t\t\thighlighted: 'is-highlighted',\n\t\t\tdisabled: 'is-disabled',\n\t\t},\n\t};\n\n\t/** The scroll position of the overlay panel, calculated to center the selected option. */\n\tprivate scrollTop = 0;\n\n\t/**\n\t * The y-offset of the overlay panel in relation to the trigger's top start corner.\n\t * This must be adjusted to align the selected option text over the trigger text.\n\t * when the panel opens. Will change based on the y-position of the selected option.\n\t */\n\tprivate offsetY = 0;\n\n\t/**\n\t * This position config ensures that the top \"start\" corner of the overlay\n\t * is aligned with with the top \"start\" of the origin by default (overlapping\n\t * the trigger completely). If the panel cannot fit below the trigger, it\n\t * will fall back to a position above the trigger.\n\t */\n\tprivate positions = [\n\t\t{\n\t\t\toriginX: 'start',\n\t\t\toriginY: 'top',\n\t\t\toverlayX: 'start',\n\t\t\toverlayY: 'top',\n\t\t},\n\t\t{\n\t\t\toriginX: 'start',\n\t\t\toriginY: 'bottom',\n\t\t\toverlayX: 'start',\n\t\t\toverlayY: 'bottom',\n\t\t},\n\t];\n\n\t/** Whether or not the overlay panel is open. */\n\tprivate panelOpen = false;\n\n\tprivate panelHTML: string;\n\n\tconstructor(\n\t\tprivate selectElement: HTMLSelectElement,\n\t\toptions?: SelectOptions\n\t) {\n\t\tthis.name = this.selectElement.name;\n\t\tthis.htmlSelectElement = this.selectElement;\n\n\t\tthis.config = { ...this.config, ...options };\n\n\t\tthis.selectedIndex = this._getSelectedIndex();\n\n\t\tthis.activeIndex = !this.selectedIndex ? 0 : this.selectedIndex;\n\n\t\tthis.uuid = newGuid();\n\n\t\tthis._init();\n\t}\n\n\topen(): void {\n\t\t// todo: implement disabled?\n\t\tif (\n\t\t\t/*this.disabled ||*/ !this.options ||\n\t\t\t!this.options.length ||\n\t\t\tthis.panelOpen\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.triggerRect = this.triggerElement.getBoundingClientRect();\n\n\t\tthis.panelOpen = true;\n\t\tthis._createOverlay().open();\n\n\t\tthis._calculateOverlayPosition();\n\t\tthis._highlightCorrectOption();\n\t\tthis._scrollActiveOptionIntoView();\n\t}\n\n\tclose(): void {\n\t\tif (this.panelOpen) {\n\t\t\tthis.overlayRef.close();\n\n\t\t\t// todo: gets called twice?\n\t\t\t// todo: correct? forward events\n\t\t\tthis._shouldForward('blur');\n\t\t}\n\t}\n\n\ttoggle(): void {\n\t\tthis.panelOpen ? this.close() : this.open();\n\t}\n\n\tprivate _init() {\n\t\t// todo: set arias like Angular Material\n\t\tthis.options = Array.from(this.selectElement.children).map(\n\t\t\t(option: HTMLOptionElement) => new Option(option)\n\t\t);\n\n\t\tthis.selectElement.tabIndex = -1;\n\t\tthis.selectElement.setAttribute('aria-hidden', 'true');\n\t\tthis.selectElement.setAttribute('data-select', this.uuid);\n\t\tthis.selectElement.insertAdjacentHTML('afterend', this._render());\n\t\tthis.selectElement.addEventListener('focus', () => {\n\t\t\tthis.select.focus();\n\t\t\tthis.open();\n\t\t});\n\n\t\tthis.select = document.getElementById(this.uuid);\n\t\tthis.select.tabIndex = 0;\n\t\tthis.select.className += ' ' + this.selectElement.className;\n\n\t\tthis.triggerElement = this.select.getElementsByClassName(\n\t\t\t`${this.config.classes.component}__trigger`\n\t\t)[0] as HTMLElement;\n\n\t\tthis.triggerElement.addEventListener('click', (event) => {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tthis.toggle();\n\t\t});\n\n\t\tthis.select.addEventListener('keydown', (event: KeyboardEvent) =>\n\t\t\tthis._handleKeydown(event)\n\t\t);\n\n\t\tthis.selectElement.addEventListener('change', () =>\n\t\t\tthis._emit(this.options[this.selectElement.selectedIndex], false)\n\t\t);\n\t}\n\n\tprivate _handleActiveIndex(event: KeyboardEvent) {\n\t\tconst delta = event.keyCode === KEYCODES.UP ? -1 : 1;\n\n\t\tif (this.activeIndex + delta <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.activeIndex + delta >= this.options.length) {\n\t\t\treturn;\n\t\t}\n\n\t\t// continue to move up/down the list until it finds an item that is not disabled\n\t\tfor (let i = 1; i <= this.options.length; i++) {\n\t\t\tconst index =\n\t\t\t\t(this.activeIndex + delta * i + this.options.length) %\n\t\t\t\tthis.options.length;\n\t\t\tconst item = this.options[index];\n\n\t\t\tif (!item.disabled) {\n\t\t\t\tthis._updateActiveItem(index);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _updateActiveItem(index: number) {\n\t\tthis.activeIndex = index;\n\t}\n\n\tprivate _handleKeydown(event: KeyboardEvent) {\n\t\tswitch (event.keyCode) {\n\t\t\tcase KEYCODES.SPACE:\n\t\t\t\tthis.toggle();\n\t\t\t\tbreak;\n\t\t\tcase KEYCODES.DOWN:\n\t\t\tcase KEYCODES.UP:\n\t\t\t\tthis._handleActiveIndex(event);\n\n\t\t\t\t// todo: something like subscribe on selectedIndex change\n\t\t\t\t// so we can call this method there\n\t\t\t\tif (this.panelOpen) {\n\t\t\t\t\tthis._highlightCorrectOption();\n\t\t\t\t\tthis._scrollActiveOptionIntoView();\n\t\t\t\t} else {\n\t\t\t\t\tthis._emit(this.options[this.activeIndex]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase KEYCODES.ESCAPE:\n\t\t\t\tif (this.panelOpen) {\n\t\t\t\t\tthis.close();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase KEYCODES.ENTER:\n\t\t\t\tif (!this.panelOpen) {\n\t\t\t\t\tthis.toggle();\n\t\t\t\t} else {\n\t\t\t\t\tthis._emit(this.options[this.activeIndex]);\n\n\t\t\t\t\t// todo: something like subscribe on activeIndex change\n\t\t\t\t\t// so we can call this method there\n\t\t\t\t\tthis._highlightCorrectOption();\n\t\t\t\t\tthis.close();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t}\n\n\t/**\n\t * This method creates the overlay from the provided select's template and saves its\n\t * OverlayRef so that it can be attached to the DOM when open is called.\n\t */\n\tprivate _createOverlay(): Overlay {\n\t\tif (!this.overlayRef) {\n\t\t\tthis.overlayRef = overlay(\n\t\t\t\tcreateNode(this.panelHTML),\n\t\t\t\tthis._getOverlayOptions()\n\t\t\t);\n\n\t\t\tthis.overlayRef.backdropClick = () => this.close();\n\n\t\t\tthis.overlayRef.afterOpened = () => this._onPanelDone();\n\n\t\t\tthis.overlayRef.afterClosed = () => this.overlayRef.dispose();\n\n\t\t\tthis.overlayRef.onAttached = () => {\n\t\t\t\tthis.overlayRef.portalElement.style.transformOrigin = 'top'; // set initial origin\n\t\t\t\tthis._calculateOverlayOffsetX();\n\t\t\t\tthis.overlayRef.portalElement.scrollTop = this.scrollTop;\n\t\t\t};\n\n\t\t\t// todo: better way? we need that here because of the RepositionScrollStrategy\n\t\t\tthis.overlayRef.onDetached = () => (this.panelOpen = false);\n\n\t\t\tthis.optionElements = Array.from(\n\t\t\t\tthis.overlayRef.portalElement.getElementsByClassName(\n\t\t\t\t\t`${this.config.classes.component}__panel__option`\n\t\t\t\t)\n\t\t\t) as HTMLElement[];\n\n\t\t\tthis.optionElements.forEach((option, index) => {\n\t\t\t\toption.addEventListener('click', () => {\n\t\t\t\t\tconst option = this.options[index];\n\n\t\t\t\t\tif (option.disabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._emit(option);\n\n\t\t\t\t\t// todo: something like subscribe on selectedIndex change\n\t\t\t\t\t// so we can call this method there\n\t\t\t\t\tthis._highlightCorrectOption();\n\t\t\t\t\tthis.close();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn this.overlayRef;\n\t}\n\n\tprivate _getOverlayOptions(): OverlayOptions {\n\t\treturn new OverlayOptions({\n\t\t\tscrollStrategy: new RepositionScrollStrategy(),\n\t\t\tpositionStrategy: this.position = this._createPositionStrategy(),\n\t\t\tbackdropClassName: 'c-overlay-transparent-backdrop',\n\t\t\thasBackdrop: true,\n\t\t});\n\t}\n\n\tprivate _createPositionStrategy(): ConnectedPositionStrategy {\n\t\tconst primaryPosition = this.positions[0];\n\t\tconst originPoint = {\n\t\t\toriginX: primaryPosition.originX,\n\t\t\toriginY: primaryPosition.originY,\n\t\t} as OriginConnectionPosition;\n\t\tconst overlayPoint = {\n\t\t\toverlayX: primaryPosition.overlayX,\n\t\t\toverlayY: primaryPosition.overlayY,\n\t\t} as OverlayConnectionPosition;\n\n\t\t// todo: like angular material this.overlayRef.position()?\n\t\tconst strategy = new OverlayPositionBuilder()\n\t\t\t.connectedTo(this.triggerElement, originPoint, overlayPoint)\n\t\t\t.withOffsetX(0)\n\t\t\t.withOffsetY(this.offsetY);\n\n\t\tfor (let i = 1; i < this.positions.length; i++) {\n\t\t\tstrategy.withFallbackPosition(\n\t\t\t\t{\n\t\t\t\t\toriginX: this.positions[i].originX,\n\t\t\t\t\toriginY: this.positions[i].originY,\n\t\t\t\t} as OriginConnectionPosition,\n\t\t\t\t{\n\t\t\t\t\toverlayX: this.positions[i].overlayX,\n\t\t\t\t\toverlayY: this.positions[i].overlayY,\n\t\t\t\t} as OverlayConnectionPosition\n\t\t\t);\n\t\t}\n\n\t\treturn strategy;\n\t}\n\n\tprivate _emit(option: Option, shouldForwardEvent: boolean = true) {\n\t\tconst newValue = option.value;\n\t\tconst newLabel = option.text;\n\n\t\tthis.triggerElement.getElementsByClassName(\n\t\t\t`${this.config.classes.component}__trigger__value-text`\n\t\t)[0].textContent = newLabel;\n\t\tthis.triggerElement.setAttribute('data-value', newValue);\n\n\t\tthis.selectElement.value = newValue;\n\t\tthis.selectedIndex = this._getOptionIndex(option);\n\t\tthis.activeIndex = this.selectedIndex;\n\t\tthis.selectElement.selectedIndex = this.selectedIndex;\n\n\t\tif (shouldForwardEvent) {\n\t\t\tthis._shouldForward('change');\n\t\t}\n\t}\n\n\tprivate _render(): string {\n\t\tconst options = this.options.reduce((value, option, index) => {\n\t\t\treturn `${value}
\n ${option.text}\n
`;\n\t\t}, '');\n\n\t\tconst arrowHtml =\n\t\t\tthis.config.classes.iconHtml !== undefined &&\n\t\t\tthis.config.classes.iconHtml !== null &&\n\t\t\tthis.config.classes.iconHtml.length > 0\n\t\t\t\t? this.config.classes.iconHtml\n\t\t\t\t: ``;\n\n\t\tconst trigger = this.options\n\t\t\t.filter((option, index) => {\n\t\t\t\treturn index === this.selectedIndex;\n\t\t\t})\n\t\t\t.reduce((value, option) => {\n\t\t\t\treturn `${value}
\n \n \n ${option.text}\n \n \n ${arrowHtml}\n
`;\n\t\t\t}, '');\n\n\t\tthis.panelHTML = `
${options}
`;\n\n\t\treturn `
${trigger}
`;\n\t}\n\n\t/** Gets the index of the provided option in the option list. */\n\tprivate _getOptionIndex(option: Option): number | undefined {\n\t\treturn this.options.reduce(\n\t\t\t(result: number, current: Option, index: number) => {\n\t\t\t\treturn result === undefined\n\t\t\t\t\t? option === current\n\t\t\t\t\t\t? index\n\t\t\t\t\t\t: undefined\n\t\t\t\t\t: result;\n\t\t\t},\n\t\t\tundefined\n\t\t);\n\t}\n\n\t/** Scrolls the active option into view. */\n\tprivate _scrollActiveOptionIntoView(): void {\n\t\tconst itemHeight = this._getItemHeight();\n\t\tconst activeOptionIndex = this.activeIndex || 0;\n\t\tconst scrollOffset = activeOptionIndex * itemHeight;\n\t\tconst panelTop = this.overlayRef.portalElement.scrollTop;\n\t\tconst maxHeight = this._getPanelMaxHeight();\n\n\t\tif (scrollOffset < panelTop) {\n\t\t\tthis.overlayRef.portalElement.scrollTop = scrollOffset;\n\t\t} else if (scrollOffset + itemHeight > panelTop + maxHeight) {\n\t\t\tthis.overlayRef.portalElement.scrollTop = Math.max(\n\t\t\t\t0,\n\t\t\t\tscrollOffset - maxHeight + itemHeight\n\t\t\t);\n\t\t}\n\t}\n\n\t/** Calculates the scroll position and x- and y-offsets of the overlay panel. */\n\tprivate _calculateOverlayPosition(): void {\n\t\tconst itemHeight = this._getItemHeight();\n\t\tconst items = this.options.length;\n\t\tconst panelHeight = Math.min(items * itemHeight, this._getPanelMaxHeight());\n\t\tconst scrollContainerHeight = items * itemHeight;\n\n\t\t// The farthest the panel can be scrolled before it hits the bottom\n\t\tconst maxScroll = scrollContainerHeight - panelHeight;\n\n\t\t// If no value is selected we open the popup to the first item.\n\t\tconst selectedOptionOffset = this.selectedIndex!;\n\n\t\t// We must maintain a scroll buffer so the selected option will be scrolled to the\n\t\t// center of the overlay panel rather than the top.\n\t\tconst scrollBuffer = panelHeight / 2;\n\t\tthis.scrollTop = this._calculateOverlayScroll(\n\t\t\tselectedOptionOffset,\n\t\t\tscrollBuffer,\n\t\t\tmaxScroll\n\t\t);\n\t\tthis.offsetY = this._calculateOverlayOffsetY(\n\t\t\tselectedOptionOffset,\n\t\t\tscrollBuffer,\n\t\t\tmaxScroll\n\t\t);\n\n\t\tthis._checkOverlayWithinViewport(maxScroll);\n\t\tthis.position.withOffsetY(this.offsetY);\n\t}\n\n\t/**\n\t * Checks that the attempted overlay position will fit within the viewport.\n\t * If it will not fit, tries to adjust the scroll position and the associated\n\t * y-offset so the panel can open fully on-screen. If it still won't fit,\n\t * sets the offset back to 0 to allow the fallback position to take over.\n\t */\n\tprivate _checkOverlayWithinViewport(maxScroll: number): void {\n\t\tconst itemHeight = this._getItemHeight();\n\t\tconst maxHeight = this._getPanelMaxHeight();\n\t\tconst viewportSize = {\n\t\t\twidth: window.innerWidth,\n\t\t\theight: window.innerHeight,\n\t\t};\n\t\tconst paddingWidth = this._getPanelToViewportPadding();\n\n\t\tconst topSpaceAvailable = this.triggerRect.top - paddingWidth;\n\t\tconst bottomSpaceAvailable =\n\t\t\tviewportSize.height - this.triggerRect.bottom - paddingWidth;\n\n\t\tconst panelHeightTop = Math.abs(this.offsetY);\n\t\tconst totalPanelHeight = Math.min(\n\t\t\tthis.options.length * itemHeight,\n\t\t\tmaxHeight\n\t\t);\n\t\tconst panelHeightBottom =\n\t\t\ttotalPanelHeight - panelHeightTop - this.triggerRect.height;\n\n\t\tif (panelHeightBottom > bottomSpaceAvailable) {\n\t\t\tthis._adjustPanelUp(panelHeightBottom, bottomSpaceAvailable);\n\t\t} else if (panelHeightTop > topSpaceAvailable) {\n\t\t\tthis._adjustPanelDown(panelHeightTop, topSpaceAvailable, maxScroll);\n\t\t} else {\n\t\t\tthis.overlayRef.portalElement.style.transformOrigin = this._getOriginBasedOnOption();\n\t\t}\n\t}\n\n\t/** Adjusts the overlay panel up to fit in the viewport. */\n\tprivate _adjustPanelUp(\n\t\tpanelHeightBottom: number,\n\t\tbottomSpaceAvailable: number\n\t) {\n\t\t// Browsers ignore fractional scroll offsets, so we need to round.\n\t\tconst distanceBelowViewport = Math.round(\n\t\t\tpanelHeightBottom - bottomSpaceAvailable\n\t\t);\n\n\t\t// Scrolls the panel up by the distance it was extending past the boundary, then\n\t\t// adjusts the offset by that amount to move the panel up into the viewport.\n\t\tthis.scrollTop -= distanceBelowViewport;\n\t\tthis.offsetY -= distanceBelowViewport;\n\t\tthis.overlayRef.portalElement.style.transformOrigin = this._getOriginBasedOnOption();\n\n\t\t// If the panel is scrolled to the very top, it won't be able to fit the panel\n\t\t// by scrolling, so set the offset to 0 to allow the fallback position to take\n\t\t// effect.\n\t\tif (this.triggerRect.top + this.scrollTop <= 0) {\n\t\t\tthis.scrollTop = 0;\n\t\t\tthis.offsetY = 0;\n\t\t\tthis.overlayRef.portalElement.style.transformOrigin = '50% bottom 0px';\n\t\t}\n\t}\n\n\t/** Adjusts the overlay panel down to fit in the viewport. */\n\tprivate _adjustPanelDown(\n\t\tpanelHeightTop: number,\n\t\ttopSpaceAvailable: number,\n\t\tmaxScroll: number\n\t) {\n\t\t// Browsers ignore fractional scroll offsets, so we need to round.\n\t\tconst distanceAboveViewport = Math.round(\n\t\t\tpanelHeightTop - topSpaceAvailable\n\t\t);\n\n\t\t// Scrolls the panel down by the distance it was extending past the boundary, then\n\t\t// adjusts the offset by that amount to move the panel down into the viewport.\n\t\tthis.scrollTop += distanceAboveViewport;\n\t\tthis.offsetY += distanceAboveViewport;\n\t\tthis.overlayRef.portalElement.style.transformOrigin = this._getOriginBasedOnOption();\n\n\t\t// If the panel is scrolled to the very bottom, it won't be able to fit the\n\t\t// panel by scrolling, so set the offset to 0 to allow the fallback position\n\t\t// to take effect.\n\t\tif (this.triggerRect.top + this.scrollTop >= maxScroll) {\n\t\t\tthis.scrollTop = maxScroll;\n\t\t\tthis.offsetY = 0;\n\t\t\tthis.overlayRef.portalElement.style.transformOrigin = '50% top 0px';\n\t\t\treturn;\n\t\t}\n\t}\n\n\t/** Sets the transform origin point based on the selected option. */\n\tprivate _getOriginBasedOnOption(): string {\n\t\tconst itemHeight = this._getItemHeight();\n\t\tconst optionHeightAdjustment = (itemHeight - this.triggerRect.height) / 2;\n\t\tconst originY =\n\t\t\tMath.abs(this.offsetY) - optionHeightAdjustment + itemHeight / 2;\n\t\treturn `50% ${originY}px 0px`;\n\t}\n\n\t/**\n\t * Calculates the scroll position of the select's overlay panel.\n\t *\n\t * Attempts to center the selected option in the panel. If the option is\n\t * too high or too low in the panel to be scrolled to the center, it clamps the\n\t * scroll position to the min or max scroll positions respectively.\n\t */\n\tprivate _calculateOverlayScroll(\n\t\tselectedIndex: number,\n\t\tscrollBuffer: number,\n\t\tmaxScroll: number\n\t): number {\n\t\tconst itemHeight = this._getItemHeight();\n\t\tconst optionOffsetFromScrollTop = itemHeight * selectedIndex;\n\t\tconst halfOptionHeight = itemHeight / 2;\n\n\t\t// Starts at the optionOffsetFromScrollTop, which scrolls the option to the top of the\n\t\t// scroll container, then subtracts the scroll buffer to scroll the option down to\n\t\t// the center of the overlay panel. Half the option height must be re-added to the\n\t\t// scrollTop so the option is centered based on its middle, not its top edge.\n\t\tconst optimalScrollPosition =\n\t\t\toptionOffsetFromScrollTop - scrollBuffer + halfOptionHeight;\n\t\treturn Math.min(Math.max(0, optimalScrollPosition), maxScroll);\n\t}\n\n\t/**\n\t * Sets the x-offset of the overlay panel in relation to the trigger's top start corner.\n\t * This must be adjusted to align the selected option text over the trigger text when\n\t * the panel opens. Will change based on LTR or RTL text direction. Note that the offset\n\t * can't be calculated until the panel has been attached, because we need to know the\n\t * content width in order to constrain the panel within the viewport.\n\t */\n\tprivate _calculateOverlayOffsetX(): void {\n\t\tconst overlayRect = this.overlayRef.overlayElement.getBoundingClientRect();\n\t\tconst viewportSize = {\n\t\t\twidth: window.innerWidth,\n\t\t\theight: window.innerHeight,\n\t\t};\n\t\tconst paddingWidth = this._getPanelToViewportPadding();\n\t\tlet offsetX = 0;\n\n\t\t// todo: multiple\n\t\t// Adjust the offset, depending on the option padding.\n\t\t// offsetX = this.selectedIndex ? padding.panel * 2 : padding.panel;\n\n\t\t// Invert the offset in LTR.\n\t\toffsetX *= -1;\n\n\t\t// Determine how much the select overflows on each side.\n\t\tconst leftOverflow = 0 - (overlayRect.left + offsetX);\n\t\tconst rightOverflow =\n\t\t\toverlayRect.right +\n\t\t\toffsetX -\n\t\t\tviewportSize.width; /* +\n padding.panel * 2*/\n\n\t\t// If the element overflows on either side, reduce the offset to allow it to fit.\n\t\tif (leftOverflow > 0) {\n\t\t\toffsetX += leftOverflow + paddingWidth;\n\t\t} else if (rightOverflow > 0) {\n\t\t\toffsetX -= rightOverflow + paddingWidth;\n\t\t}\n\n\t\t// Set the offset directly\n\t\tthis.position.withOffsetX(offsetX);\n\t\tthis.overlayRef.updatePosition();\n\t}\n\n\t/**\n\t * Calculates the y-offset of the select's overlay panel in relation to the\n\t * top start corner of the trigger. It has to be adjusted in order for the\n\t * selected option to be aligned over the trigger when the panel opens.\n\t */\n\tprivate _calculateOverlayOffsetY(\n\t\tselectedIndex: number,\n\t\tscrollBuffer: number,\n\t\tmaxScroll: number\n\t): number {\n\t\tconst itemHeight = this._getItemHeight();\n\t\tconst optionHeightAdjustment = (itemHeight - this.triggerRect.height) / 2;\n\t\tconst maxHeight = this._getPanelMaxHeight();\n\t\tconst maxOptionsDisplayed = Math.floor(maxHeight / itemHeight);\n\t\tconst items = this.options.length;\n\t\tlet optionOffsetFromPanelTop: number;\n\n\t\tif (this.scrollTop === 0) {\n\t\t\toptionOffsetFromPanelTop = selectedIndex * itemHeight;\n\t\t} else if (this.scrollTop === maxScroll) {\n\t\t\tconst firstDisplayedIndex = items - maxOptionsDisplayed;\n\t\t\tconst selectedDisplayIndex = selectedIndex - firstDisplayedIndex;\n\n\t\t\t// The first item is partially out of the viewport. Therefore we need to calculate what\n\t\t\t// portion of it is shown in the viewport and account for it in our offset.\n\t\t\tconst partialItemHeight =\n\t\t\t\titemHeight - ((items * itemHeight - maxHeight) % itemHeight);\n\n\t\t\t// Because the panel height is longer than the height of the options alone,\n\t\t\t// there is always extra padding at the top or bottom of the panel. When\n\t\t\t// scrolled to the very bottom, this padding is at the top of the panel and\n\t\t\t// must be added to the offset.\n\t\t\toptionOffsetFromPanelTop =\n\t\t\t\tselectedDisplayIndex * itemHeight + partialItemHeight;\n\t\t} else {\n\t\t\t// If the option was scrolled to the middle of the panel using a scroll buffer,\n\t\t\t// its offset will be the scroll buffer minus the half height that was added to\n\t\t\t// center it.\n\t\t\toptionOffsetFromPanelTop = scrollBuffer - itemHeight / 2;\n\t\t}\n\n\t\t// The final offset is the option's offset from the top, adjusted for the height\n\t\t// difference, multiplied by -1 to ensure that the overlay moves in the correct\n\t\t// direction up the page.\n\t\treturn optionOffsetFromPanelTop * -1 - optionHeightAdjustment;\n\t}\n\n\tprivate _highlightCorrectOption() {\n\t\tthis.optionElements.forEach((option) => {\n\t\t\tremoveClass(option, this.config.classes.active);\n\t\t\tremoveClass(option, this.config.classes.highlighted);\n\t\t});\n\n\t\taddClass(\n\t\t\tthis.optionElements[this.selectedIndex],\n\t\t\tthis.config.classes.active\n\t\t);\n\n\t\tif (this.selectedIndex !== this.activeIndex) {\n\t\t\taddClass(\n\t\t\t\tthis.optionElements[this.activeIndex],\n\t\t\t\tthis.config.classes.highlighted\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate _getPanelToViewportPadding() {\n\t\tconst option = this.optionElements[0]!;\n\n\t\t// todo: cache?\n\t\tconst padding = parseCssUnit(getCss(option, 'padding-left'));\n\n\t\treturn Math.round(padding / 2);\n\t}\n\n\tprivate _getPanelMaxHeight(): number {\n\t\t// todo: cache?\n\t\treturn parseCssUnit(getCss(this.overlayRef.portalElement!, 'max-height'));\n\t}\n\n\tprivate _getItemHeight(): number {\n\t\treturn this.optionElements[0]!.offsetHeight!;\n\t}\n\n\t/**\n\t * When the panel element is finished transforming in (though not fading in), it\n\t * emits an event and focuses an option if the panel is open.\n\t */\n\tprivate _onPanelDone(): void {\n\t\tif (this.panelOpen) {\n\t\t\tthis.scrollTop = 0;\n\t\t} else {\n\t\t\tthis.position.withOffsetX(0);\n\t\t}\n\t}\n\n\t/**\n\t * Forward events to the