{"version":3,"sources":["webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./resources/js/category.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./node_modules/process/browser.js","webpack:///./resources/js/bootstrap.js","webpack:///./resources/js/components/PostComponents/Image.jsx","webpack:///./resources/js/components/Dummies/SmallPostDummy.jsx","webpack:///./resources/js/components/Models/SmallPost.jsx","webpack:///./resources/js/libraries/js.cookie.js","webpack:///./resources/js/components/PostComponents/Ad.jsx","webpack:///./resources/js/translation.js","webpack:///./node_modules/object-assign/index.js","webpack:///./resources/js/other.js","webpack:///./resources/js/components/Pages/CategoryPage.jsx","webpack:///./resources/js/components/InfiniteScroll.jsx","webpack:///./node_modules/scheduler/index.js","webpack:///./node_modules/bootstrap/dist/js/bootstrap.js","webpack:///./resources/js/menu.js","webpack:///./resources/js/components/Partials/TermFilter.jsx","webpack:///./lang sync ^\\.\\/.*\\.json$","webpack:///./node_modules/lazysizes/lazysizes.js","webpack:///./node_modules/dompurify/dist/purify.js","webpack:///(webpack)/buildin/global.js"],"names":["f","g","h","k","l","window","MessageChannel","p","q","t","a","exports","unstable_now","b","setTimeout","u","Date","now","clearTimeout","unstable_forceFrameRate","w","performance","x","y","z","console","A","cancelAnimationFrame","requestAnimationFrame","error","B","C","D","E","F","G","Math","floor","H","I","port2","port1","onmessage","postMessage","J","c","length","push","d","e","K","L","M","pop","m","n","v","r","sortIndex","id","N","O","P","Q","R","S","T","U","V","callback","startTime","expirationTime","W","X","priorityLevel","Y","Z","unstable_IdlePriority","unstable_ImmediatePriority","unstable_LowPriority","unstable_NormalPriority","unstable_Profiling","unstable_UserBlockingPriority","unstable_cancelCallback","unstable_continueExecution","unstable_getCurrentPriorityLevel","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_requestPaint","unstable_runWithPriority","unstable_scheduleCallback","delay","timeout","unstable_shouldYield","unstable_wrapCallback","apply","this","arguments","require","isBrowser","document","navigator","timeoutDuration","longerTimeoutBrowsers","i","userAgent","indexOf","debounce","Promise","fn","called","resolve","then","scheduled","isFunction","functionToCheck","toString","call","getStyleComputedProperty","element","property","nodeType","css","ownerDocument","defaultView","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","body","_getStyleComputedProp","overflow","overflowX","overflowY","test","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","version","getOffsetParent","documentElement","noOffsetParent","offsetParent","nextElementSibling","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","firstElementChild","element1root","getScroll","side","undefined","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","parseFloat","getSize","computedStyle","max","parseInt","getWindowSizes","height","width","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","prototype","obj","value","_extends","assign","source","hasOwnProperty","getClientRect","offsets","getBoundingClientRect","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","innerWidth","innerHeight","offset","isFixed","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","padding","boundariesElement","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","_ref","computeAutoPlacement","placement","refRect","rects","sortedAreas","keys","map","area","sort","filteredAreas","filter","_ref2","computedPlacement","variation","split","getReferenceOffsets","state","commonOffsetParent","getOuterSizes","marginBottom","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","Array","runModifiers","modifiers","data","ends","slice","prop","findIndex","cur","match","forEach","warn","enabled","update","isDestroyed","arrowStyles","attributes","flipped","options","positionFixed","flip","originalPlacement","position","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","destroy","removeAttribute","willChange","disableEventListeners","removeOnDestroy","removeChild","getWindow","setupEventListeners","updateBound","addEventListener","passive","scrollElement","attachToScrollParents","event","scrollParents","isBody","eventsEnabled","enableEventListeners","scheduleUpdate","removeEventListener","isNumeric","isNaN","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","index","concat","reverse","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","str","toValue","index2","Defaults","shift","shiftvariation","_data$offsets","isVertical","shiftOffsets","preventOverflow","transformProp","popperStyles","transform","priority","primary","escapeWithReference","secondary","min","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","querySelector","len","sideCapitalized","toLowerCase","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","round","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","hide","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","applyStyle","setAttribute","onLoad","modifierOptions","Popper","_this","bind","jquery","Utils","global","PopperUtils","cachedSetTimeout","cachedClearTimeout","process","module","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","array","noop","nextTick","args","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","$","jQuery","axios","defaults","headers","common","withCredentials","CancelToken","axiosSource","forms","getElementsByTagName","cancel","Image","_inherits","focalX","focalY","focalZ","small","media","normal","formats","_createClass","setState","_this2","image","RegExp","imgixUrl","stateData","paddingBottom","React","className","backgroundImage","data-pin-nopin","src","alt","imageUrl","URL","searchParams","set","imageMain","imageLazy","Fragment","sizeName","format","src1x","src2x","type","data-srcset","data-src","Component","SmallPostDummy","columnSize","SmallPost","post","rowCount","postsBeforeAd","shortContent","DOMPurify","sanitize","excerpt","featured_image","href","url","categories","date_text","dangerouslySetInnerHTML","__html","infinityIndex","Ad","nbr","fitAdsToContent","timestamp","Cookie","factory","registeredInModuleLoader","define","OldCookies","Cookies","api","noConflict","extend","init","converter","path","expires","setMilliseconds","getMilliseconds","toUTCString","JSON","stringify","write","encodeURIComponent","String","decodeURIComponent","escape","stringifiedAttributes","attributeName","cookie","cookies","rdecode","parts","join","json","read","parse","get","getJSON","remove","withConverter","adSlots","count","data-aller-ad-placement","data-aduniqueid","transReplaces","text","replaces","trans","locale","getAttribute","translation","translations","trans_choice","_translation$split2","single","plural","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","toObject","val","test1","getOwnPropertyNames","test2","fromCharCode","test3","letter","err","shouldUseNative","from","symbols","to","s","viewSize","envs","createElement","appendChild","curEnv","classList","add","display","CategoryPage","pagetype","endpoint","category","urlStructure","getInitialState","seoDataArray","term","seoData","aller_ga","InfiniteScroll","pageId","perPage","getSeoDataArray","categoryPageElement","getElementById","ReactDOM","render","dataset","pageid","childType","Children","only","lastIndex","page","initialPage","total","perpage","progress","completed","skeleton","date","stateObjs","metaObjs","domain","location","pathname","categorySlug","tagSlug","childrenDivided","tags","orderDirection","year","month","hideAds","cursor","topAdDiv","usedTimestamps","keyToTimestamp","infiniteScroll","handleScroll","onOrderingChange","returner","current_page","isArray","history","pushState","current_url","metaData","cts","metadata","publishedTime","postDate","author","postAuthor","loggedIn","contentType","pageType","doUpdateMetaData","metaElement","headElement","content","updateBrowserHistory","updateMetaData","ama","adsUniqueId","hideAdsEnabled","_ana_hide_ads","hideDuration","_ana_hide_ads_duration_active","hideUntil","_ana_hide_ads_duration","hasNewTimestamp","initiateAd","instgrm","Embeds","response","status","log","getEndpoint","values","newChildCollection","last_page","prevState","meta_data","shouldHideAds","random","scrollHeight","ordering","preview","contentWrapper","findDOMNode","scrollY","each","_this3","up","down","reset","pageOverride","orderDirectionOverride","previousChildCollection","direction","_this4","generateUrl","initAds","childElement","childElements","masterindex","child","_this5","cloneElement","skeletonElements","isValidElement","constructChildren","showFilter","showLink","homeUrl","protocol","TermFilter","topCategories","_interopDefaultLegacy","$__default","Popper__default","_defineProperties","transitionEndEmulator","duration","one","Util","TRANSITION_END","triggerTransitionEnd","getUID","getSelectorFromElement","selector","hrefAttr","_","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","reflow","trigger","supportsTransitionEnd","Boolean","isElement","typeCheckConfig","componentName","config","configTypes","expectedTypes","valueType","findShadowRoot","attachShadow","getRootNode","root","ShadowRoot","jQueryDetection","emulateTransitionEnd","special","bindType","delegateType","handle","is","handleObj","handler","NAME","JQUERY_NO_CONFLICT","Alert","_element","_proto","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","closest","closeEvent","Event","removeClass","hasClass","_destroyElement","detach","_jQueryInterface","$element","_handleDismiss","alertInstance","preventDefault","JQUERY_NO_CONFLICT$1","Button","shouldAvoidTriggerChange","toggle","triggerChangeEvent","addAriaPressed","input","checked","activeElement","focus","hasAttribute","toggleClass","avoidTriggerChange","button","initialButton","inputBtn","tagName","buttons","querySelectorAll","_i","_len","_button","NAME$2","EVENT_KEY$2","JQUERY_NO_CONFLICT$2","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","_updateInterval","setInterval","visibilityState","activeIndex","_getItemIndex","_handleSwipe","absDeltax","abs","_keydown","_addTouchEventListeners","originalEvent","pointerType","clientX","touches","move","which","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","_setActiveIndicatorElement","indicators","nextIndicator","addClass","elementInterval","defaultInterval","directionalClassName","orderClassName","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","CLASS_NAME_ACTIVE$1","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$3","JQUERY_NO_CONFLICT$3","Default$1","DefaultType$1","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","show","actives","activesData","not","startEvent","dimension","_getDimension","attr","setTransitioning","scrollSize","CLASS_NAME_COLLAPSE","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","currentTarget","$trigger","selectors","$target","NAME$4","JQUERY_NO_CONFLICT$4","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","Default$2","boundary","popperConfig","DefaultType$2","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","hideEvent","stopPropagation","constructor","_getPlacement","$parentDropdown","_getOffset","toggles","context","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","item","EVENT_CLICK_DATA_API$4","JQUERY_NO_CONFLICT$5","Default$3","backdrop","DefaultType$3","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","modalTransitionDuration","modalBody","ELEMENT_NODE","_enforceFocus","shownEvent","transitionComplete","has","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","animate","appendTo","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","paddingLeft","paddingRight","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","calculatedMargin","elements","margin","scrollDiv","scrollbarWidth","_this11","uriAttrs","DefaultWhitelist","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","pre","span","sub","sup","strong","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","allowedAttribute","innerHTML","NAME$6","JQUERY_NO_CONFLICT$6","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","DefaultType$4","animation","template","container","fallbackPlacement","customClass","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$4","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","EVENT_KEY","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","CLASS_PREFIX","setElementContent","CLASS_NAME_FADE$2","empty","append","_handlePopperPlacementChange","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","popperData","initConfigAnimation","NAME$7","JQUERY_NO_CONFLICT$7","BSCLS_PREFIX_REGEX$1","Default$5","DefaultType$5","Event$1","Popover","_Tooltip","subClass","superClass","create","__proto__","_getContent","CLASS_PREFIX$1","CLASS_NAME_FADE$3","NAME$8","JQUERY_NO_CONFLICT$8","Default$6","method","DefaultType$6","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","pageYOffset","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","parents","SELECTOR_NAV_LINKS","scrollSpys","$spy","JQUERY_NO_CONFLICT$9","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","$this","JQUERY_NO_CONFLICT$a","DefaultType$7","autohide","Default$7","Toast","_clearTimeout","_close","Scrollspy","lastScroll","searchForm","toggleSubMenu","overlay","burgerIcon","doc","windowpos","open","currentScroll","menu","toggleElement","childMenu","getElementsByClassName","showAll","filterOpen","onTermChange","onShowToggle","onMenuToggle","onFilterMenuToggle","categoryIsVisible","cat","slug","archiveIndex","archive","filterTermText","currentCategory","onChange","onClick","1","2","3","4","5","6","7","8","9","10","11","12","months","childindex","number","webpackContext","req","webpackContextResolve","__webpack_require__","o","lazySizes","lazysizes","lazySizesCfg","lazySizesDefaults","lazyClass","loadedClass","loadingClass","preloadClass","errorClass","autosizesClass","fastLoadedClass","iframeLoadMode","srcAttr","srcsetAttr","sizesAttr","minSize","customMedia","expFactor","hFac","loadMode","loadHidden","ricTimeout","throttleDelay","lazySizesConfig","lazysizesConfig","cfg","noSupport","docElem","supportPicture","HTMLPictureElement","requestIdleCallback","regPicture","loadEvents","regClassCache","ele","cls","reg","addRemoveLoadEvents","dom","evt","triggerEvent","detail","noBubbles","noCancelable","createEvent","initEvent","dispatchEvent","updatePolyfill","full","polyfill","picturefill","pf","reevaluate","getCSS","getWidth","_lazysizesWidth","rAF","firstFns","secondFns","fns","runFns","running","waiting","rafBatch","_lsFlush","rAFIt","simple","that","func","later","last","loader","regImg","regIframe","supportScroll","currentExpand","isLoading","lowRuns","resetPreloading","isVisible","isBodyHidden","isNestedVisible","elemExpand","outerRect","visible","eLtop","eLbottom","eLleft","eLright","checkElements","eLlen","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","lazyloadElems","_lazyRace","prematureUnveil","unveilElement","expand","_defEx","eLvW","elvH","isCompleted","preloadElems","preloadAfterLoad","throttledCheckElements","lastTime","gDelay","rICTimeout","idleCallback","isPriority","throttle","switchLoadingClass","_lazyCache","rafSwitchLoadingClass","rafedSwitchLoadingClass","handleSources","sourceSrcset","lazyUnveil","isAuto","isImg","srcset","isPicture","firesLoad","defaultPrevented","resetPreloadingTimer","contentWindow","changeIframeSrc","isLoaded","naturalWidth","loading","autoSizer","updateElem","afterScroll","altLoadmodeScrollListner","onload","started","persisted","loadingElements","MutationObserver","observe","childList","subtree","readyState","checkElems","unveil","_aLSL","sizeElement","sources","getSizeElement","debouncedUpdateElementsSizes","autosizesElems","uP","aC","rC","hC","fire","gW","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","Reflect","construct","thisValue","Func","Function","arr2","_toConsumableArray","arrayForEach","unapply","arrayPop","arrayPush","stringToLowerCase","stringMatch","stringReplace","stringIndexOf","stringTrim","regExpTest","typeErrorCreate","_len2","_key2","thisArg","_key","addToSet","lcElement","clone","object","newObject","lookupGetter","desc","svg","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","html$1","svg$1","mathMl$1","xml","MUSTACHE_EXPR","ERB_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","_typeof","Symbol","iterator","_toConsumableArray$1","getGlobal","_createTrustedTypesPolicy","trustedTypes","createPolicy","suffix","currentScript","policyName","createHTML","html$$1","createDOMPurify","removed","isSupported","originalDocument","DocumentFragment","HTMLTemplateElement","Element","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","ElementPrototype","cloneNode","getNextSibling","getChildNodes","trustedTypesPolicy","emptyHTML","RETURN_TRUSTED_TYPE","_document","implementation","createNodeIterator","createDocumentFragment","importNode","hooks","createHTMLDocument","MUSTACHE_EXPR$$1","ERB_EXPR$$1","DATA_ATTR$$1","ARIA_ATTR$$1","IS_SCRIPT_OR_DATA$$1","ATTR_WHITESPACE$$1","IS_ALLOWED_URI$$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","tagNameCheck","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","SANITIZE_DOM","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","transformCaseFunc","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","table","tbody","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","namespaceURI","parentTagName","commonSvgAndHTMLElements","_forceRemove","outerHTML","_removeAttribute","attribute","getAttributeNode","_initDocument","dirty","leadingWhitespace","matches","dirtyPayload","createDocument","insertBefore","createTextNode","childNodes","_createIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","_isClobbered","elm","textContent","_isNode","_executeHook","entryPoint","currentNode","hook","_sanitizeElements","allowedTags","_basicCustomElementTest","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","attrValue","keepAttr","allowedAttributes","_attr","forceKeepAttr","setAttributeNS","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","nextNode","importedNode","oldNode","returnNode","toStaticHTML","firstChild","nodeIterator","shadowroot","serializedHTML","setConfig","clearConfig","isValidAttribute","tag","addHook","hookFunction","removeHook","removeHooks","removeAllHooks"],"mappings":";6FASa,IAAIA,EAAEC,EAAEC,EAAEC,EAAEC,EACzB,GAAG,oBAAqBC,QAAQ,mBAAoBC,eAAe,CAAC,IAAIC,EAAE,KAAKC,EAAE,KAAKC,EAAE,WAAW,GAAG,OAAOF,EAAE,IAAI,IAAIG,EAAEC,EAAQC,eAAeL,GAAE,EAAGG,GAAGH,EAAE,KAAK,MAAMM,GAAG,MAAMC,WAAWL,EAAE,GAAGI,IAAKE,EAAEC,KAAKC,MAAMN,EAAQC,aAAa,WAAW,OAAOI,KAAKC,MAAMF,GAAGf,EAAE,SAASU,GAAG,OAAOH,EAAEO,WAAWd,EAAE,EAAEU,IAAIH,EAAEG,EAAEI,WAAWL,EAAE,KAAKR,EAAE,SAASS,EAAEG,GAAGL,EAAEM,WAAWJ,EAAEG,IAAIX,EAAE,WAAWgB,aAAaV,IAAIL,EAAE,WAAW,OAAM,GAAIC,EAAEO,EAAQQ,wBAAwB,iBAAiB,CAAC,IAAIC,EAAEf,OAAOgB,YAAYC,EAAEjB,OAAOW,KACnfO,EAAElB,OAAOS,WAAWU,EAAEnB,OAAOa,aAAa,GAAG,oBAAqBO,QAAQ,CAAC,IAAIC,EAAErB,OAAOsB,qBAAqB,mBAAoBtB,OAAOuB,uBAAuBH,QAAQI,MAAM,2IAA2I,mBAAoBH,GAAGD,QAAQI,MAAM,0IAA0I,GAAG,iBACneT,GAAG,mBAAoBA,EAAEH,IAAIN,EAAQC,aAAa,WAAW,OAAOQ,EAAEH,WAAW,CAAC,IAAIa,EAAER,EAAEL,MAAMN,EAAQC,aAAa,WAAW,OAAOU,EAAEL,MAAMa,GAAG,IAAIC,GAAE,EAAGC,EAAE,KAAKC,GAAG,EAAEC,EAAE,EAAEC,EAAE,EAAEhC,EAAE,WAAW,OAAOQ,EAAQC,gBAAgBuB,GAAG/B,EAAE,aAAaO,EAAQQ,wBAAwB,SAAST,GAAG,EAAEA,GAAG,IAAIA,EAAEe,QAAQI,MAAM,oHAAoHK,EAAE,EAAExB,EAAE0B,KAAKC,MAAM,IAAI3B,GAAG,GAAG,IAAI4B,EAAE,IAAIhC,eAAeiC,EAAED,EAAEE,MAAMF,EAAEG,MAAMC,UACnf,WAAW,GAAG,OAAOV,EAAE,CAAC,IAAItB,EAAEC,EAAQC,eAAeuB,EAAEzB,EAAEwB,EAAE,IAAIF,GAAE,EAAGtB,GAAG6B,EAAEI,YAAY,OAAOZ,GAAE,EAAGC,EAAE,MAAM,MAAMnB,GAAG,MAAM0B,EAAEI,YAAY,MAAM9B,QAASkB,GAAE,GAAI/B,EAAE,SAASU,GAAGsB,EAAEtB,EAAEqB,IAAIA,GAAE,EAAGQ,EAAEI,YAAY,QAAQ1C,EAAE,SAASS,EAAEG,GAAGoB,EAAEV,GAAE,WAAWb,EAAEC,EAAQC,kBAAiBC,IAAIX,EAAE,WAAWsB,EAAES,GAAGA,GAAG,GAAG,SAASW,EAAElC,EAAEG,GAAG,IAAIgC,EAAEnC,EAAEoC,OAAOpC,EAAEqC,KAAKlC,GAAGH,EAAE,OAAO,CAAC,IAAIsC,EAAEH,EAAE,IAAI,EAAEI,EAAEvC,EAAEsC,GAAG,UAAG,IAASC,GAAG,EAAEC,EAAED,EAAEpC,IAA0B,MAAMH,EAA7BA,EAAEsC,GAAGnC,EAAEH,EAAEmC,GAAGI,EAAEJ,EAAEG,GAAgB,SAASG,EAAEzC,GAAU,YAAO,KAAdA,EAAEA,EAAE,IAAqB,KAAKA,EAC9c,SAAS0C,EAAE1C,GAAG,IAAIG,EAAEH,EAAE,GAAG,QAAG,IAASG,EAAE,CAAC,IAAIgC,EAAEnC,EAAE2C,MAAM,GAAGR,IAAIhC,EAAE,CAACH,EAAE,GAAGmC,EAAEnC,EAAE,IAAI,IAAIsC,EAAE,EAAEC,EAAEvC,EAAEoC,OAAOE,EAAEC,GAAG,CAAC,IAAIK,EAAE,GAAGN,EAAE,GAAG,EAAEO,EAAE7C,EAAE4C,GAAGE,EAAEF,EAAE,EAAEG,EAAE/C,EAAE8C,GAAG,QAAG,IAASD,GAAG,EAAEL,EAAEK,EAAEV,QAAG,IAASY,GAAG,EAAEP,EAAEO,EAAEF,IAAI7C,EAAEsC,GAAGS,EAAE/C,EAAE8C,GAAGX,EAAEG,EAAEQ,IAAI9C,EAAEsC,GAAGO,EAAE7C,EAAE4C,GAAGT,EAAEG,EAAEM,OAAQ,WAAG,IAASG,GAAG,EAAEP,EAAEO,EAAEZ,IAA0B,MAAMnC,EAA7BA,EAAEsC,GAAGS,EAAE/C,EAAE8C,GAAGX,EAAEG,EAAEQ,IAAgB,OAAO3C,EAAE,OAAO,KAAK,SAASqC,EAAExC,EAAEG,GAAG,IAAIgC,EAAEnC,EAAEgD,UAAU7C,EAAE6C,UAAU,OAAO,IAAIb,EAAEA,EAAEnC,EAAEiD,GAAG9C,EAAE8C,GAAG,IAAIC,EAAE,GAAGC,EAAE,GAAGC,EAAE,EAAEC,EAAE,KAAKC,EAAE,EAAEC,GAAE,EAAGC,GAAE,EAAGC,GAAE,EACja,SAASC,EAAE1D,GAAG,IAAI,IAAIG,EAAEsC,EAAEU,GAAG,OAAOhD,GAAG,CAAC,GAAG,OAAOA,EAAEwD,SAASjB,EAAES,OAAQ,MAAGhD,EAAEyD,WAAW5D,GAAgD,MAA9C0C,EAAES,GAAGhD,EAAE6C,UAAU7C,EAAE0D,eAAe3B,EAAEgB,EAAE/C,GAAcA,EAAEsC,EAAEU,IAAI,SAASW,EAAE9D,GAAa,GAAVyD,GAAE,EAAGC,EAAE1D,IAAOwD,EAAE,GAAG,OAAOf,EAAES,GAAGM,GAAE,EAAGlE,EAAEyE,OAAO,CAAC,IAAI5D,EAAEsC,EAAEU,GAAG,OAAOhD,GAAGZ,EAAEuE,EAAE3D,EAAEyD,UAAU5D,IACtP,SAAS+D,EAAE/D,EAAEG,GAAGqD,GAAE,EAAGC,IAAIA,GAAE,EAAGjE,KAAK+D,GAAE,EAAG,IAAIpB,EAAEmB,EAAE,IAAS,IAALI,EAAEvD,GAAOkD,EAAEZ,EAAES,GAAG,OAAOG,MAAMA,EAAEQ,eAAe1D,IAAIH,IAAIP,MAAM,CAAC,IAAI6C,EAAEe,EAAEM,SAAS,GAAG,OAAOrB,EAAE,CAACe,EAAEM,SAAS,KAAKL,EAAED,EAAEW,cAAc,IAAIzB,EAAED,EAAEe,EAAEQ,gBAAgB1D,GAAGA,EAAEF,EAAQC,eAAe,mBAAoBqC,EAAEc,EAAEM,SAASpB,EAAEc,IAAIZ,EAAES,IAAIR,EAAEQ,GAAGQ,EAAEvD,QAAQuC,EAAEQ,GAAGG,EAAEZ,EAAES,GAAG,GAAG,OAAOG,EAAE,IAAIT,GAAE,MAAO,CAAC,IAAIC,EAAEJ,EAAEU,GAAG,OAAON,GAAGtD,EAAEuE,EAAEjB,EAAEe,UAAUzD,GAAGyC,GAAE,EAAG,OAAOA,EAAE,QAAQS,EAAE,KAAKC,EAAEnB,EAAEoB,GAAE,GACpZ,SAASU,EAAEjE,GAAG,OAAOA,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,OAAO,WAAW,KAAK,EAAE,OAAO,IAAI,QAAQ,OAAO,KAAK,IAAIkE,EAAExE,EAAEO,EAAQkE,sBAAsB,EAAElE,EAAQmE,2BAA2B,EAAEnE,EAAQoE,qBAAqB,EAAEpE,EAAQqE,wBAAwB,EAAErE,EAAQsE,mBAAmB,KAAKtE,EAAQuE,8BAA8B,EAAEvE,EAAQwE,wBAAwB,SAASzE,GAAGA,EAAE2D,SAAS,MAAM1D,EAAQyE,2BAA2B,WAAWlB,GAAGD,IAAIC,GAAE,EAAGlE,EAAEyE,KACxc9D,EAAQ0E,iCAAiC,WAAW,OAAOrB,GAAGrD,EAAQ2E,8BAA8B,WAAW,OAAOnC,EAAES,IAAIjD,EAAQ4E,cAAc,SAAS7E,GAAG,OAAOsD,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAInD,EAAE,EAAE,MAAM,QAAQA,EAAEmD,EAAE,IAAInB,EAAEmB,EAAEA,EAAEnD,EAAE,IAAI,OAAOH,IAAI,QAAQsD,EAAEnB,IAAIlC,EAAQ6E,wBAAwB,aAAa7E,EAAQ8E,sBAAsBb,EAAEjE,EAAQ+E,yBAAyB,SAAShF,EAAEG,GAAG,OAAOH,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAImC,EAAEmB,EAAEA,EAAEtD,EAAE,IAAI,OAAOG,IAAI,QAAQmD,EAAEnB,IAChelC,EAAQgF,0BAA0B,SAASjF,EAAEG,EAAEgC,GAAG,IAAIG,EAAErC,EAAQC,eAAe,GAAG,iBAAkBiC,GAAG,OAAOA,EAAE,CAAC,IAAII,EAAEJ,EAAE+C,MAAM3C,EAAE,iBAAkBA,GAAG,EAAEA,EAAED,EAAEC,EAAED,EAAEH,EAAE,iBAAkBA,EAAEgD,QAAQhD,EAAEgD,QAAQlB,EAAEjE,QAAQmC,EAAE8B,EAAEjE,GAAGuC,EAAED,EAAyM,OAAjMtC,EAAE,CAACiD,GAAGG,IAAIO,SAASxD,EAAE6D,cAAchE,EAAE4D,UAAUrB,EAAEsB,eAAvD1B,EAAEI,EAAEJ,EAAoEa,WAAW,GAAGT,EAAED,GAAGtC,EAAEgD,UAAUT,EAAEL,EAAEiB,EAAEnD,GAAG,OAAOyC,EAAES,IAAIlD,IAAIyC,EAAEU,KAAKM,EAAEjE,IAAIiE,GAAE,EAAGlE,EAAEuE,EAAEvB,EAAED,MAAMtC,EAAEgD,UAAUb,EAAED,EAAEgB,EAAElD,GAAGwD,GAAGD,IAAIC,GAAE,EAAGlE,EAAEyE,KAAY/D,GAC3aC,EAAQmF,qBAAqB,WAAW,IAAIpF,EAAEC,EAAQC,eAAewD,EAAE1D,GAAG,IAAIG,EAAEsC,EAAES,GAAG,OAAO/C,IAAIkD,GAAG,OAAOA,GAAG,OAAOlD,GAAG,OAAOA,EAAEwD,UAAUxD,EAAEyD,WAAW5D,GAAGG,EAAE0D,eAAeR,EAAEQ,gBAAgBpE,KAAKQ,EAAQoF,sBAAsB,SAASrF,GAAG,IAAIG,EAAEmD,EAAE,OAAO,WAAW,IAAInB,EAAEmB,EAAEA,EAAEnD,EAAE,IAAI,OAAOH,EAAEsF,MAAMC,KAAKC,WAAW,QAAQlC,EAAEnB,M,uBCd/TsD,EAAQ,QAQRA,EAAQ,QAERA,EAAQ,QACRA,EAAQ,S,2ECjBR,mBAwBA,IAAIC,EAA8B,oBAAX/F,QAA8C,oBAAbgG,UAAiD,oBAAdC,UAEvFC,EAAkB,WAEpB,IADA,IAAIC,EAAwB,CAAC,OAAQ,UAAW,WACvCC,EAAI,EAAGA,EAAID,EAAsB1D,OAAQ2D,GAAK,EACrD,GAAIL,GAAaE,UAAUI,UAAUC,QAAQH,EAAsBC,KAAO,EACxE,OAAO,EAGX,OAAO,EAPa,GAqCtB,IAWIG,EAXqBR,GAAa/F,OAAOwG,QA3B7C,SAA2BC,GACzB,IAAIC,GAAS,EACb,OAAO,WACDA,IAGJA,GAAS,EACT1G,OAAOwG,QAAQG,UAAUC,MAAK,WAC5BF,GAAS,EACTD,UAKN,SAAsBA,GACpB,IAAII,GAAY,EAChB,OAAO,WACAA,IACHA,GAAY,EACZpG,YAAW,WACToG,GAAY,EACZJ,MACCP,MAyBT,SAASY,EAAWC,GAElB,OAAOA,GAA8D,sBADvD,GACoBC,SAASC,KAAKF,GAUlD,SAASG,EAAyBC,EAASC,GACzC,GAAyB,IAArBD,EAAQE,SACV,MAAO,GAGT,IACIC,EADSH,EAAQI,cAAcC,YAClBC,iBAAiBN,EAAS,MAC3C,OAAOC,EAAWE,EAAIF,GAAYE,EAUpC,SAASI,EAAcP,GACrB,MAAyB,SAArBA,EAAQQ,SACHR,EAEFA,EAAQS,YAAcT,EAAQU,KAUvC,SAASC,EAAgBX,GAEvB,IAAKA,EACH,OAAOnB,SAAS+B,KAGlB,OAAQZ,EAAQQ,UACd,IAAK,OACL,IAAK,OACH,OAAOR,EAAQI,cAAcQ,KAC/B,IAAK,YACH,OAAOZ,EAAQY,KAKnB,IAAIC,EAAwBd,EAAyBC,GACjDc,EAAWD,EAAsBC,SACjCC,EAAYF,EAAsBE,UAClCC,EAAYH,EAAsBG,UAEtC,MAAI,wBAAwBC,KAAKH,EAAWE,EAAYD,GAC/Cf,EAGFW,EAAgBJ,EAAcP,IAUvC,SAASkB,EAAiBC,GACxB,OAAOA,GAAaA,EAAUC,cAAgBD,EAAUC,cAAgBD,EAG1E,IAAIE,EAASzC,MAAgB/F,OAAOyI,uBAAwBzC,SAAS0C,cACjEC,EAAS5C,GAAa,UAAUqC,KAAKnC,UAAUI,WASnD,SAASuC,EAAKC,GACZ,OAAgB,KAAZA,EACKL,EAEO,KAAZK,EACKF,EAEFH,GAAUG,EAUnB,SAASG,EAAgB3B,GACvB,IAAKA,EACH,OAAOnB,SAAS+C,gBAQlB,IALA,IAAIC,EAAiBJ,EAAK,IAAM5C,SAAS+B,KAAO,KAG5CkB,EAAe9B,EAAQ8B,cAAgB,KAEpCA,IAAiBD,GAAkB7B,EAAQ+B,oBAChDD,GAAgB9B,EAAUA,EAAQ+B,oBAAoBD,aAGxD,IAAItB,EAAWsB,GAAgBA,EAAatB,SAE5C,OAAKA,GAAyB,SAAbA,GAAoC,SAAbA,GAMsB,IAA1D,CAAC,KAAM,KAAM,SAASrB,QAAQ2C,EAAatB,WAA2E,WAAvDT,EAAyB+B,EAAc,YACjGH,EAAgBG,GAGlBA,EATE9B,EAAUA,EAAQI,cAAcwB,gBAAkB/C,SAAS+C,gBA4BtE,SAASI,EAAQC,GACf,OAAwB,OAApBA,EAAKxB,WACAuB,EAAQC,EAAKxB,YAGfwB,EAWT,SAASC,EAAuBC,EAAUC,GAExC,KAAKD,GAAaA,EAASjC,UAAakC,GAAaA,EAASlC,UAC5D,OAAOrB,SAAS+C,gBAIlB,IAAIS,EAAQF,EAASG,wBAAwBF,GAAYG,KAAKC,4BAC1DC,EAAQJ,EAAQF,EAAWC,EAC3BM,EAAML,EAAQD,EAAWD,EAGzBQ,EAAQ9D,SAAS+D,cACrBD,EAAME,SAASJ,EAAO,GACtBE,EAAMG,OAAOJ,EAAK,GAClB,IA/CyB1C,EACrBQ,EA8CAuC,EAA0BJ,EAAMI,wBAIpC,GAAIZ,IAAaY,GAA2BX,IAAaW,GAA2BN,EAAMO,SAASN,GACjG,MAjDe,UAFblC,GADqBR,EAoDD+C,GAnDDvC,WAKH,SAAbA,GAAuBmB,EAAgB3B,EAAQiD,qBAAuBjD,EAkDpE2B,EAAgBoB,GAHdA,EAOX,IAAIG,EAAelB,EAAQG,GAC3B,OAAIe,EAAaxC,KACRwB,EAAuBgB,EAAaxC,KAAM0B,GAE1CF,EAAuBC,EAAUH,EAAQI,GAAU1B,MAY9D,SAASyC,EAAUnD,GACjB,IAAIoD,EAAO1E,UAAUpD,OAAS,QAAsB+H,IAAjB3E,UAAU,GAAmBA,UAAU,GAAK,MAE3E4E,EAAqB,QAATF,EAAiB,YAAc,aAC3C5C,EAAWR,EAAQQ,SAEvB,GAAiB,SAAbA,GAAoC,SAAbA,EAAqB,CAC9C,IAAI+C,EAAOvD,EAAQI,cAAcwB,gBAC7B4B,EAAmBxD,EAAQI,cAAcoD,kBAAoBD,EACjE,OAAOC,EAAiBF,GAG1B,OAAOtD,EAAQsD,GAYjB,SAASG,EAAcC,EAAM1D,GAC3B,IAAI2D,EAAWjF,UAAUpD,OAAS,QAAsB+H,IAAjB3E,UAAU,IAAmBA,UAAU,GAE1EkF,EAAYT,EAAUnD,EAAS,OAC/B6D,EAAaV,EAAUnD,EAAS,QAChC8D,EAAWH,GAAY,EAAI,EAK/B,OAJAD,EAAKK,KAAOH,EAAYE,EACxBJ,EAAKM,QAAUJ,EAAYE,EAC3BJ,EAAKO,MAAQJ,EAAaC,EAC1BJ,EAAKQ,OAASL,EAAaC,EACpBJ,EAaT,SAASS,EAAeC,EAAQC,GAC9B,IAAIC,EAAiB,MAATD,EAAe,OAAS,MAChCE,EAAkB,SAAVD,EAAmB,QAAU,SAEzC,OAAOE,WAAWJ,EAAO,SAAWE,EAAQ,UAAYE,WAAWJ,EAAO,SAAWG,EAAQ,UAG/F,SAASE,EAAQJ,EAAMzD,EAAM2C,EAAMmB,GACjC,OAAO9J,KAAK+J,IAAI/D,EAAK,SAAWyD,GAAOzD,EAAK,SAAWyD,GAAOd,EAAK,SAAWc,GAAOd,EAAK,SAAWc,GAAOd,EAAK,SAAWc,GAAO5C,EAAK,IAAMmD,SAASrB,EAAK,SAAWc,IAASO,SAASF,EAAc,UAAqB,WAATL,EAAoB,MAAQ,UAAYO,SAASF,EAAc,UAAqB,WAATL,EAAoB,SAAW,WAAa,GAG5U,SAASQ,EAAehG,GACtB,IAAI+B,EAAO/B,EAAS+B,KAChB2C,EAAO1E,EAAS+C,gBAChB8C,EAAgBjD,EAAK,KAAOnB,iBAAiBiD,GAEjD,MAAO,CACLuB,OAAQL,EAAQ,SAAU7D,EAAM2C,EAAMmB,GACtCK,MAAON,EAAQ,QAAS7D,EAAM2C,EAAMmB,IAIxC,IAAIM,EAAiB,SAAUC,EAAUC,GACvC,KAAMD,aAAoBC,GACxB,MAAM,IAAIC,UAAU,sCAIpBC,EAAc,WAChB,SAASC,EAAiBC,EAAQC,GAChC,IAAK,IAAItG,EAAI,EAAGA,EAAIsG,EAAMjK,OAAQ2D,IAAK,CACrC,IAAIuG,EAAaD,EAAMtG,GACvBuG,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjDC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAIlD,OAAO,SAAUN,EAAaa,EAAYC,GAGxC,OAFID,GAAYV,EAAiBH,EAAYe,UAAWF,GACpDC,GAAaX,EAAiBH,EAAac,GACxCd,GAdO,GAsBdW,EAAiB,SAAUK,EAAKJ,EAAKK,GAYvC,OAXIL,KAAOI,EACTN,OAAOC,eAAeK,EAAKJ,EAAK,CAC9BK,MAAOA,EACPV,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZO,EAAIJ,GAAOK,EAGND,GAGLE,EAAWR,OAAOS,QAAU,SAAUf,GACxC,IAAK,IAAIrG,EAAI,EAAGA,EAAIP,UAAUpD,OAAQ2D,IAAK,CACzC,IAAIqH,EAAS5H,UAAUO,GAEvB,IAAK,IAAI6G,KAAOQ,EACVV,OAAOK,UAAUM,eAAezG,KAAKwG,EAAQR,KAC/CR,EAAOQ,GAAOQ,EAAOR,IAK3B,OAAOR,GAUT,SAASkB,EAAcC,GACrB,OAAOL,EAAS,GAAIK,EAAS,CAC3BvC,MAAOuC,EAAQxC,KAAOwC,EAAQ1B,MAC9Bf,OAAQyC,EAAQ1C,IAAM0C,EAAQ3B,SAWlC,SAAS4B,EAAsB1G,GAC7B,IAAI0D,EAAO,GAKX,IACE,GAAIjC,EAAK,IAAK,CACZiC,EAAO1D,EAAQ0G,wBACf,IAAI9C,EAAYT,EAAUnD,EAAS,OAC/B6D,EAAaV,EAAUnD,EAAS,QACpC0D,EAAKK,KAAOH,EACZF,EAAKO,MAAQJ,EACbH,EAAKM,QAAUJ,EACfF,EAAKQ,OAASL,OAEdH,EAAO1D,EAAQ0G,wBAEjB,MAAOjL,IAET,IAAIkL,EAAS,CACX1C,KAAMP,EAAKO,KACXF,IAAKL,EAAKK,IACVgB,MAAOrB,EAAKQ,MAAQR,EAAKO,KACzBa,OAAQpB,EAAKM,OAASN,EAAKK,KAIzB6C,EAA6B,SAArB5G,EAAQQ,SAAsBqE,EAAe7E,EAAQI,eAAiB,GAC9E2E,EAAQ6B,EAAM7B,OAAS/E,EAAQ6G,aAAeF,EAAO5B,MACrDD,EAAS8B,EAAM9B,QAAU9E,EAAQ8G,cAAgBH,EAAO7B,OAExDiC,EAAiB/G,EAAQgH,YAAcjC,EACvCkC,EAAgBjH,EAAQkH,aAAepC,EAI3C,GAAIiC,GAAkBE,EAAe,CACnC,IAAI7C,EAASrE,EAAyBC,GACtC+G,GAAkB5C,EAAeC,EAAQ,KACzC6C,GAAiB9C,EAAeC,EAAQ,KAExCuC,EAAO5B,OAASgC,EAChBJ,EAAO7B,QAAUmC,EAGnB,OAAOT,EAAcG,GAGvB,SAASQ,EAAqCC,EAAUC,GACtD,IAAIC,EAAgB5I,UAAUpD,OAAS,QAAsB+H,IAAjB3E,UAAU,IAAmBA,UAAU,GAE/E8C,EAASC,EAAK,IACd8F,EAA6B,SAApBF,EAAO7G,SAChBgH,EAAed,EAAsBU,GACrCK,EAAaf,EAAsBW,GACnCK,EAAe/G,EAAgByG,GAE/BhD,EAASrE,EAAyBsH,GAClCM,EAAiBnD,WAAWJ,EAAOuD,gBACnCC,EAAkBpD,WAAWJ,EAAOwD,iBAGpCN,GAAiBC,IACnBE,EAAW1D,IAAMnJ,KAAK+J,IAAI8C,EAAW1D,IAAK,GAC1C0D,EAAWxD,KAAOrJ,KAAK+J,IAAI8C,EAAWxD,KAAM,IAE9C,IAAIwC,EAAUD,EAAc,CAC1BzC,IAAKyD,EAAazD,IAAM0D,EAAW1D,IAAM4D,EACzC1D,KAAMuD,EAAavD,KAAOwD,EAAWxD,KAAO2D,EAC5C7C,MAAOyC,EAAazC,MACpBD,OAAQ0C,EAAa1C,SASvB,GAPA2B,EAAQoB,UAAY,EACpBpB,EAAQqB,WAAa,GAMhBtG,GAAU+F,EAAQ,CACrB,IAAIM,EAAYrD,WAAWJ,EAAOyD,WAC9BC,EAAatD,WAAWJ,EAAO0D,YAEnCrB,EAAQ1C,KAAO4D,EAAiBE,EAChCpB,EAAQzC,QAAU2D,EAAiBE,EACnCpB,EAAQxC,MAAQ2D,EAAkBE,EAClCrB,EAAQvC,OAAS0D,EAAkBE,EAGnCrB,EAAQoB,UAAYA,EACpBpB,EAAQqB,WAAaA,EAOvB,OAJItG,IAAW8F,EAAgBD,EAAOrE,SAAS0E,GAAgBL,IAAWK,GAA0C,SAA1BA,EAAalH,YACrGiG,EAAUhD,EAAcgD,EAASY,IAG5BZ,EAGT,SAASsB,EAA8C/H,GACrD,IAAIgI,EAAgBtJ,UAAUpD,OAAS,QAAsB+H,IAAjB3E,UAAU,IAAmBA,UAAU,GAE/E6E,EAAOvD,EAAQI,cAAcwB,gBAC7BqG,EAAiBd,EAAqCnH,EAASuD,GAC/DwB,EAAQnK,KAAK+J,IAAIpB,EAAKsD,YAAahO,OAAOqP,YAAc,GACxDpD,EAASlK,KAAK+J,IAAIpB,EAAKuD,aAAcjO,OAAOsP,aAAe,GAE3DvE,EAAaoE,EAAkC,EAAlB7E,EAAUI,GACvCM,EAAcmE,EAA0C,EAA1B7E,EAAUI,EAAM,QAE9C6E,EAAS,CACXrE,IAAKH,EAAYqE,EAAelE,IAAMkE,EAAeJ,UACrD5D,KAAMJ,EAAaoE,EAAehE,KAAOgE,EAAeH,WACxD/C,MAAOA,EACPD,OAAQA,GAGV,OAAO0B,EAAc4B,GAWvB,SAASC,EAAQrI,GACf,IAAIQ,EAAWR,EAAQQ,SACvB,GAAiB,SAAbA,GAAoC,SAAbA,EACzB,OAAO,EAET,GAAsD,UAAlDT,EAAyBC,EAAS,YACpC,OAAO,EAET,IAAIS,EAAaF,EAAcP,GAC/B,QAAKS,GAGE4H,EAAQ5H,GAWjB,SAAS6H,EAA6BtI,GAEpC,IAAKA,IAAYA,EAAQuI,eAAiB9G,IACxC,OAAO5C,SAAS+C,gBAGlB,IADA,IAAI4G,EAAKxI,EAAQuI,cACVC,GAAoD,SAA9CzI,EAAyByI,EAAI,cACxCA,EAAKA,EAAGD,cAEV,OAAOC,GAAM3J,SAAS+C,gBAcxB,SAAS6G,EAAcC,EAAQvH,EAAWwH,EAASC,GACjD,IAAItB,EAAgB5I,UAAUpD,OAAS,QAAsB+H,IAAjB3E,UAAU,IAAmBA,UAAU,GAI/EmK,EAAa,CAAE9E,IAAK,EAAGE,KAAM,GAC7BnC,EAAewF,EAAgBgB,EAA6BI,GAAUxG,EAAuBwG,EAAQxH,EAAiBC,IAG1H,GAA0B,aAAtByH,EACFC,EAAad,EAA8CjG,EAAcwF,OACpE,CAEL,IAAIwB,OAAiB,EACK,iBAAtBF,EAE8B,UADhCE,EAAiBnI,EAAgBJ,EAAcY,KAC5BX,WACjBsI,EAAiBJ,EAAOtI,cAAcwB,iBAGxCkH,EAD+B,WAAtBF,EACQF,EAAOtI,cAAcwB,gBAErBgH,EAGnB,IAAInC,EAAUU,EAAqC2B,EAAgBhH,EAAcwF,GAGjF,GAAgC,SAA5BwB,EAAetI,UAAwB6H,EAAQvG,GAWjD+G,EAAapC,MAXmD,CAChE,IAAIsC,EAAkBlE,EAAe6D,EAAOtI,eACxC0E,EAASiE,EAAgBjE,OACzBC,EAAQgE,EAAgBhE,MAE5B8D,EAAW9E,KAAO0C,EAAQ1C,IAAM0C,EAAQoB,UACxCgB,EAAW7E,OAASc,EAAS2B,EAAQ1C,IACrC8E,EAAW5E,MAAQwC,EAAQxC,KAAOwC,EAAQqB,WAC1Ce,EAAW3E,MAAQa,EAAQ0B,EAAQxC,MASvC,IAAI+E,EAAqC,iBADzCL,EAAUA,GAAW,GAOrB,OALAE,EAAW5E,MAAQ+E,EAAkBL,EAAUA,EAAQ1E,MAAQ,EAC/D4E,EAAW9E,KAAOiF,EAAkBL,EAAUA,EAAQ5E,KAAO,EAC7D8E,EAAW3E,OAAS8E,EAAkBL,EAAUA,EAAQzE,OAAS,EACjE2E,EAAW7E,QAAUgF,EAAkBL,EAAUA,EAAQ3E,QAAU,EAE5D6E,EAGT,SAASI,EAAQC,GAIf,OAHYA,EAAKnE,MACJmE,EAAKpE,OAcpB,SAASqE,EAAqBC,EAAWC,EAASX,EAAQvH,EAAWyH,GACnE,IAAID,EAAUjK,UAAUpD,OAAS,QAAsB+H,IAAjB3E,UAAU,GAAmBA,UAAU,GAAK,EAElF,IAAmC,IAA/B0K,EAAUjK,QAAQ,QACpB,OAAOiK,EAGT,IAAIP,EAAaJ,EAAcC,EAAQvH,EAAWwH,EAASC,GAEvDU,EAAQ,CACVvF,IAAK,CACHgB,MAAO8D,EAAW9D,MAClBD,OAAQuE,EAAQtF,IAAM8E,EAAW9E,KAEnCG,MAAO,CACLa,MAAO8D,EAAW3E,MAAQmF,EAAQnF,MAClCY,OAAQ+D,EAAW/D,QAErBd,OAAQ,CACNe,MAAO8D,EAAW9D,MAClBD,OAAQ+D,EAAW7E,OAASqF,EAAQrF,QAEtCC,KAAM,CACJc,MAAOsE,EAAQpF,KAAO4E,EAAW5E,KACjCa,OAAQ+D,EAAW/D,SAInByE,EAAc3D,OAAO4D,KAAKF,GAAOG,KAAI,SAAU3D,GACjD,OAAOM,EAAS,CACdN,IAAKA,GACJwD,EAAMxD,GAAM,CACb4D,KAAMT,EAAQK,EAAMxD,SAErB6D,MAAK,SAAUzQ,EAAGG,GACnB,OAAOA,EAAEqQ,KAAOxQ,EAAEwQ,QAGhBE,EAAgBL,EAAYM,QAAO,SAAUC,GAC/C,IAAI/E,EAAQ+E,EAAM/E,MACdD,EAASgF,EAAMhF,OACnB,OAAOC,GAAS2D,EAAO7B,aAAe/B,GAAU4D,EAAO5B,gBAGrDiD,EAAoBH,EAActO,OAAS,EAAIsO,EAAc,GAAG9D,IAAMyD,EAAY,GAAGzD,IAErFkE,EAAYZ,EAAUa,MAAM,KAAK,GAErC,OAAOF,GAAqBC,EAAY,IAAMA,EAAY,IAa5D,SAASE,EAAoBC,EAAOzB,EAAQvH,GAC1C,IAAImG,EAAgB5I,UAAUpD,OAAS,QAAsB+H,IAAjB3E,UAAU,GAAmBA,UAAU,GAAK,KAEpF0L,EAAqB9C,EAAgBgB,EAA6BI,GAAUxG,EAAuBwG,EAAQxH,EAAiBC,IAChI,OAAOgG,EAAqChG,EAAWiJ,EAAoB9C,GAU7E,SAAS+C,EAAcrK,GACrB,IACIoE,EADSpE,EAAQI,cAAcC,YACfC,iBAAiBN,GACjClG,EAAI0K,WAAWJ,EAAOyD,WAAa,GAAKrD,WAAWJ,EAAOkG,cAAgB,GAC1EvQ,EAAIyK,WAAWJ,EAAO0D,YAAc,GAAKtD,WAAWJ,EAAOmG,aAAe,GAK9E,MAJa,CACXxF,MAAO/E,EAAQgH,YAAcjN,EAC7B+K,OAAQ9E,EAAQkH,aAAepN,GAYnC,SAAS0Q,EAAqBpB,GAC5B,IAAIqB,EAAO,CAAExG,KAAM,QAASC,MAAO,OAAQF,OAAQ,MAAOD,IAAK,UAC/D,OAAOqF,EAAUsB,QAAQ,0BAA0B,SAAUC,GAC3D,OAAOF,EAAKE,MAchB,SAASC,EAAiBlC,EAAQmC,EAAkBzB,GAClDA,EAAYA,EAAUa,MAAM,KAAK,GAGjC,IAAIa,EAAaT,EAAc3B,GAG3BqC,EAAgB,CAClBhG,MAAO+F,EAAW/F,MAClBD,OAAQgG,EAAWhG,QAIjBkG,GAAoD,IAA1C,CAAC,QAAS,QAAQ7L,QAAQiK,GACpC6B,EAAWD,EAAU,MAAQ,OAC7BE,EAAgBF,EAAU,OAAS,MACnCG,EAAcH,EAAU,SAAW,QACnCI,EAAwBJ,EAAqB,QAAX,SAStC,OAPAD,EAAcE,GAAYJ,EAAiBI,GAAYJ,EAAiBM,GAAe,EAAIL,EAAWK,GAAe,EAEnHJ,EAAcG,GADZ9B,IAAc8B,EACeL,EAAiBK,GAAiBJ,EAAWM,GAE7CP,EAAiBL,EAAqBU,IAGhEH,EAYT,SAASM,EAAKC,EAAKC,GAEjB,OAAIC,MAAMvF,UAAUoF,KACXC,EAAID,KAAKE,GAIXD,EAAIzB,OAAO0B,GAAO,GAqC3B,SAASE,EAAaC,EAAWC,EAAMC,GAoBrC,YAnB8BvI,IAATuI,EAAqBF,EAAYA,EAAUG,MAAM,EA1BxE,SAAmBP,EAAKQ,EAAM3F,GAE5B,GAAIqF,MAAMvF,UAAU8F,UAClB,OAAOT,EAAIS,WAAU,SAAUC,GAC7B,OAAOA,EAAIF,KAAU3F,KAKzB,IAAI8F,EAAQZ,EAAKC,GAAK,SAAUpF,GAC9B,OAAOA,EAAI4F,KAAU3F,KAEvB,OAAOmF,EAAInM,QAAQ8M,GAcsDF,CAAUL,EAAW,OAAQE,KAEvFM,SAAQ,SAAUpI,GAC3BA,EAAmB,UAErB7J,QAAQkS,KAAK,yDAEf,IAAI7M,EAAKwE,EAAmB,UAAKA,EAASxE,GACtCwE,EAASsI,SAAWzM,EAAWL,KAIjCqM,EAAKlF,QAAQiC,OAASlC,EAAcmF,EAAKlF,QAAQiC,QACjDiD,EAAKlF,QAAQtF,UAAYqF,EAAcmF,EAAKlF,QAAQtF,WAEpDwK,EAAOrM,EAAGqM,EAAM7H,OAIb6H,EAUT,SAASU,IAEP,IAAI5N,KAAK0L,MAAMmC,YAAf,CAIA,IAAIX,EAAO,CACT1G,SAAUxG,KACV2F,OAAQ,GACRmI,YAAa,GACbC,WAAY,GACZC,SAAS,EACThG,QAAS,IAIXkF,EAAKlF,QAAQtF,UAAY+I,EAAoBzL,KAAK0L,MAAO1L,KAAKiK,OAAQjK,KAAK0C,UAAW1C,KAAKiO,QAAQC,eAKnGhB,EAAKvC,UAAYD,EAAqB1K,KAAKiO,QAAQtD,UAAWuC,EAAKlF,QAAQtF,UAAW1C,KAAKiK,OAAQjK,KAAK0C,UAAW1C,KAAKiO,QAAQhB,UAAUkB,KAAKhE,kBAAmBnK,KAAKiO,QAAQhB,UAAUkB,KAAKjE,SAG9LgD,EAAKkB,kBAAoBlB,EAAKvC,UAE9BuC,EAAKgB,cAAgBlO,KAAKiO,QAAQC,cAGlChB,EAAKlF,QAAQiC,OAASkC,EAAiBnM,KAAKiK,OAAQiD,EAAKlF,QAAQtF,UAAWwK,EAAKvC,WAEjFuC,EAAKlF,QAAQiC,OAAOoE,SAAWrO,KAAKiO,QAAQC,cAAgB,QAAU,WAGtEhB,EAAOF,EAAahN,KAAKiN,UAAWC,GAI/BlN,KAAK0L,MAAM4C,UAIdtO,KAAKiO,QAAQM,SAASrB,IAHtBlN,KAAK0L,MAAM4C,WAAY,EACvBtO,KAAKiO,QAAQO,SAAStB,KAY1B,SAASuB,EAAkBxB,EAAWyB,GACpC,OAAOzB,EAAU0B,MAAK,SAAUlE,GAC9B,IAAImE,EAAOnE,EAAKmE,KAEhB,OADcnE,EAAKkD,SACDiB,IAASF,KAW/B,SAASG,EAAyBrN,GAIhC,IAHA,IAAIsN,EAAW,EAAC,EAAO,KAAM,SAAU,MAAO,KAC1CC,EAAYvN,EAASwN,OAAO,GAAGC,cAAgBzN,EAAS4L,MAAM,GAEzD5M,EAAI,EAAGA,EAAIsO,EAASjS,OAAQ2D,IAAK,CACxC,IAAI0O,EAASJ,EAAStO,GAClB2O,EAAUD,EAAS,GAAKA,EAASH,EAAYvN,EACjD,QAA4C,IAAjCpB,SAAS+B,KAAKiN,MAAMD,GAC7B,OAAOA,EAGX,OAAO,KAQT,SAASE,IAsBP,OArBArP,KAAK0L,MAAMmC,aAAc,EAGrBY,EAAkBzO,KAAKiN,UAAW,gBACpCjN,KAAKiK,OAAOqF,gBAAgB,eAC5BtP,KAAKiK,OAAOmF,MAAMf,SAAW,GAC7BrO,KAAKiK,OAAOmF,MAAM9J,IAAM,GACxBtF,KAAKiK,OAAOmF,MAAM5J,KAAO,GACzBxF,KAAKiK,OAAOmF,MAAM3J,MAAQ,GAC1BzF,KAAKiK,OAAOmF,MAAM7J,OAAS,GAC3BvF,KAAKiK,OAAOmF,MAAMG,WAAa,GAC/BvP,KAAKiK,OAAOmF,MAAMP,EAAyB,cAAgB,IAG7D7O,KAAKwP,wBAIDxP,KAAKiO,QAAQwB,iBACfzP,KAAKiK,OAAOjI,WAAW0N,YAAY1P,KAAKiK,QAEnCjK,KAQT,SAAS2P,EAAUpO,GACjB,IAAII,EAAgBJ,EAAQI,cAC5B,OAAOA,EAAgBA,EAAcC,YAAcxH,OAoBrD,SAASwV,EAAoBlN,EAAWuL,EAASvC,EAAOmE,GAEtDnE,EAAMmE,YAAcA,EACpBF,EAAUjN,GAAWoN,iBAAiB,SAAUpE,EAAMmE,YAAa,CAAEE,SAAS,IAG9E,IAAIC,EAAgB9N,EAAgBQ,GAKpC,OA5BF,SAASuN,EAAsBhH,EAAciH,EAAO9R,EAAU+R,GAC5D,IAAIC,EAAmC,SAA1BnH,EAAalH,SACtB8E,EAASuJ,EAASnH,EAAatH,cAAcC,YAAcqH,EAC/DpC,EAAOiJ,iBAAiBI,EAAO9R,EAAU,CAAE2R,SAAS,IAE/CK,GACHH,EAAsB/N,EAAgB2E,EAAO7E,YAAakO,EAAO9R,EAAU+R,GAE7EA,EAAcrT,KAAK+J,GAgBnBoJ,CAAsBD,EAAe,SAAUtE,EAAMmE,YAAanE,EAAMyE,eACxEzE,EAAMsE,cAAgBA,EACtBtE,EAAM2E,eAAgB,EAEf3E,EAST,SAAS4E,IACFtQ,KAAK0L,MAAM2E,gBACdrQ,KAAK0L,MAAQkE,EAAoB5P,KAAK0C,UAAW1C,KAAKiO,QAASjO,KAAK0L,MAAO1L,KAAKuQ,iBAkCpF,SAASf,IAxBT,IAA8B9M,EAAWgJ,EAyBnC1L,KAAK0L,MAAM2E,gBACb3U,qBAAqBsE,KAAKuQ,gBAC1BvQ,KAAK0L,OA3BqBhJ,EA2BQ1C,KAAK0C,UA3BFgJ,EA2Ba1L,KAAK0L,MAzBzDiE,EAAUjN,GAAW8N,oBAAoB,SAAU9E,EAAMmE,aAGzDnE,EAAMyE,cAAc1C,SAAQ,SAAU5G,GACpCA,EAAO2J,oBAAoB,SAAU9E,EAAMmE,gBAI7CnE,EAAMmE,YAAc,KACpBnE,EAAMyE,cAAgB,GACtBzE,EAAMsE,cAAgB,KACtBtE,EAAM2E,eAAgB,EACf3E,IAwBT,SAAS+E,EAAUnT,GACjB,MAAa,KAANA,IAAaoT,MAAM3K,WAAWzI,KAAOqT,SAASrT,GAWvD,SAASsT,EAAUrP,EAASoE,GAC1BwB,OAAO4D,KAAKpF,GAAQ8H,SAAQ,SAAUJ,GACpC,IAAIwD,EAAO,IAEkE,IAAzE,CAAC,QAAS,SAAU,MAAO,QAAS,SAAU,QAAQnQ,QAAQ2M,IAAgBoD,EAAU9K,EAAO0H,MACjGwD,EAAO,MAETtP,EAAQ6N,MAAM/B,GAAQ1H,EAAO0H,GAAQwD,KAgIzC,IAAIC,EAAY3Q,GAAa,WAAWqC,KAAKnC,UAAUI,WA8GvD,SAASsQ,EAAmB9D,EAAW+D,EAAgBC,GACrD,IAAIC,EAAatE,EAAKK,GAAW,SAAUxC,GAEzC,OADWA,EAAKmE,OACAoC,KAGdG,IAAeD,GAAcjE,EAAU0B,MAAK,SAAUtJ,GACxD,OAAOA,EAASuJ,OAASqC,GAAiB5L,EAASsI,SAAWtI,EAASzB,MAAQsN,EAAWtN,SAG5F,IAAKuN,EAAY,CACf,IAAIC,EAAc,IAAMJ,EAAiB,IACrCK,EAAY,IAAMJ,EAAgB,IACtCzV,QAAQkS,KAAK2D,EAAY,4BAA8BD,EAAc,4DAA8DA,EAAc,KAEnJ,OAAOD,EAoIT,IAAIG,EAAa,CAAC,aAAc,OAAQ,WAAY,YAAa,MAAO,UAAW,cAAe,QAAS,YAAa,aAAc,SAAU,eAAgB,WAAY,OAAQ,cAGhLC,EAAkBD,EAAWlE,MAAM,GAYvC,SAASoE,GAAU7G,GACjB,IAAI8G,EAAUxR,UAAUpD,OAAS,QAAsB+H,IAAjB3E,UAAU,IAAmBA,UAAU,GAEzEyR,EAAQH,EAAgB7Q,QAAQiK,GAChCkC,EAAM0E,EAAgBnE,MAAMsE,EAAQ,GAAGC,OAAOJ,EAAgBnE,MAAM,EAAGsE,IAC3E,OAAOD,EAAU5E,EAAI+E,UAAY/E,EAGnC,IAAIgF,GACI,OADJA,GAES,YAFTA,GAGgB,mBAiMpB,SAASC,GAAYnI,EAAQ2C,EAAeF,EAAkB2F,GAC5D,IAAI/J,EAAU,CAAC,EAAG,GAKdgK,GAA0D,IAA9C,CAAC,QAAS,QAAQtR,QAAQqR,GAItCE,EAAYtI,EAAO6B,MAAM,WAAWR,KAAI,SAAUkH,GACpD,OAAOA,EAAKC,UAKVC,EAAUH,EAAUvR,QAAQkM,EAAKqF,GAAW,SAAUC,GACxD,OAAgC,IAAzBA,EAAKG,OAAO,YAGjBJ,EAAUG,KAAiD,IAArCH,EAAUG,GAAS1R,QAAQ,MACnDlF,QAAQkS,KAAK,gFAKf,IAAI4E,EAAa,cACbC,GAAmB,IAAbH,EAAiB,CAACH,EAAU7E,MAAM,EAAGgF,GAAST,OAAO,CAACM,EAAUG,GAAS5G,MAAM8G,GAAY,KAAM,CAACL,EAAUG,GAAS5G,MAAM8G,GAAY,IAAIX,OAAOM,EAAU7E,MAAMgF,EAAU,KAAO,CAACH,GAqC9L,OAlCAM,EAAMA,EAAIvH,KAAI,SAAUwH,EAAId,GAE1B,IAAIhF,GAAyB,IAAVgF,GAAeM,EAAYA,GAAa,SAAW,QAClES,GAAoB,EACxB,OAAOD,EAGNE,QAAO,SAAUjY,EAAGG,GACnB,MAAwB,KAApBH,EAAEA,EAAEoC,OAAS,KAAwC,IAA3B,CAAC,IAAK,KAAK6D,QAAQ9F,IAC/CH,EAAEA,EAAEoC,OAAS,GAAKjC,EAClB6X,GAAoB,EACbhY,GACEgY,GACThY,EAAEA,EAAEoC,OAAS,IAAMjC,EACnB6X,GAAoB,EACbhY,GAEAA,EAAEkX,OAAO/W,KAEjB,IAEFoQ,KAAI,SAAU2H,GACb,OAxGN,SAAiBA,EAAKjG,EAAaJ,EAAeF,GAEhD,IAAIZ,EAAQmH,EAAInF,MAAM,6BAClB9F,GAAS8D,EAAM,GACfqF,EAAOrF,EAAM,GAGjB,IAAK9D,EACH,OAAOiL,EAGT,GAA0B,IAAtB9B,EAAKnQ,QAAQ,KAAY,CAC3B,IAAIa,OAAU,EACd,OAAQsP,GACN,IAAK,KACHtP,EAAU+K,EACV,MACF,IAAK,IACL,IAAK,KACL,QACE/K,EAAU6K,EAId,OADWrE,EAAcxG,GACbmL,GAAe,IAAMhF,EAC5B,GAAa,OAATmJ,GAA0B,OAATA,EAAe,CAQzC,OALa,OAATA,EACK1U,KAAK+J,IAAI9F,SAAS+C,gBAAgBkF,aAAcjO,OAAOsP,aAAe,GAEtEvN,KAAK+J,IAAI9F,SAAS+C,gBAAgBiF,YAAahO,OAAOqP,YAAc,IAE/D,IAAM/B,EAIpB,OAAOA,EAmEEkL,CAAQD,EAAKjG,EAAaJ,EAAeF,UAKhDqB,SAAQ,SAAU+E,EAAId,GACxBc,EAAG/E,SAAQ,SAAUyE,EAAMW,GACrBpC,EAAUyB,KACZlK,EAAQ0J,IAAUQ,GAA2B,MAAnBM,EAAGK,EAAS,IAAc,EAAI,UAIvD7K,EA2OT,IAkWI8K,GAAW,CAKbnI,UAAW,SAMXuD,eAAe,EAMfmC,eAAe,EAOfZ,iBAAiB,EAQjBjB,SAAU,aAUVD,SAAU,aAOVtB,UAnZc,CASd8F,MAAO,CAELnP,MAAO,IAEP+J,SAAS,EAET9M,GA9HJ,SAAeqM,GACb,IAAIvC,EAAYuC,EAAKvC,UACjBoH,EAAgBpH,EAAUa,MAAM,KAAK,GACrCwH,EAAiBrI,EAAUa,MAAM,KAAK,GAG1C,GAAIwH,EAAgB,CAClB,IAAIC,EAAgB/F,EAAKlF,QACrBtF,EAAYuQ,EAAcvQ,UAC1BuH,EAASgJ,EAAchJ,OAEvBiJ,GAA2D,IAA9C,CAAC,SAAU,OAAOxS,QAAQqR,GACvCpN,EAAOuO,EAAa,OAAS,MAC7BxG,EAAcwG,EAAa,QAAU,SAErCC,EAAe,CACjBnP,MAAOoD,EAAe,GAAIzC,EAAMjC,EAAUiC,IAC1CV,IAAKmD,EAAe,GAAIzC,EAAMjC,EAAUiC,GAAQjC,EAAUgK,GAAezC,EAAOyC,KAGlFQ,EAAKlF,QAAQiC,OAAStC,EAAS,GAAIsC,EAAQkJ,EAAaH,IAG1D,OAAO9F,IAgJPvD,OAAQ,CAEN/F,MAAO,IAEP+J,SAAS,EAET9M,GA7RJ,SAAgBqM,EAAMzC,GACpB,IAAId,EAASc,EAAKd,OACdgB,EAAYuC,EAAKvC,UACjBsI,EAAgB/F,EAAKlF,QACrBiC,EAASgJ,EAAchJ,OACvBvH,EAAYuQ,EAAcvQ,UAE1BqP,EAAgBpH,EAAUa,MAAM,KAAK,GAErCxD,OAAU,EAsBd,OApBEA,EADEyI,GAAW9G,GACH,EAAEA,EAAQ,GAEVmI,GAAYnI,EAAQM,EAAQvH,EAAWqP,GAG7B,SAAlBA,GACF9H,EAAO3E,KAAO0C,EAAQ,GACtBiC,EAAOzE,MAAQwC,EAAQ,IACI,UAAlB+J,GACT9H,EAAO3E,KAAO0C,EAAQ,GACtBiC,EAAOzE,MAAQwC,EAAQ,IACI,QAAlB+J,GACT9H,EAAOzE,MAAQwC,EAAQ,GACvBiC,EAAO3E,KAAO0C,EAAQ,IACK,WAAlB+J,IACT9H,EAAOzE,MAAQwC,EAAQ,GACvBiC,EAAO3E,KAAO0C,EAAQ,IAGxBkF,EAAKjD,OAASA,EACPiD,GAkQLvD,OAAQ,GAoBVyJ,gBAAiB,CAEfxP,MAAO,IAEP+J,SAAS,EAET9M,GAlRJ,SAAyBqM,EAAMe,GAC7B,IAAI9D,EAAoB8D,EAAQ9D,mBAAqBjH,EAAgBgK,EAAK1G,SAASyD,QAK/EiD,EAAK1G,SAAS9D,YAAcyH,IAC9BA,EAAoBjH,EAAgBiH,IAMtC,IAAIkJ,EAAgBxE,EAAyB,aACzCyE,EAAepG,EAAK1G,SAASyD,OAAOmF,MACpC9J,EAAMgO,EAAahO,IACnBE,EAAO8N,EAAa9N,KACpB+N,EAAYD,EAAaD,GAE7BC,EAAahO,IAAM,GACnBgO,EAAa9N,KAAO,GACpB8N,EAAaD,GAAiB,GAE9B,IAAIjJ,EAAaJ,EAAckD,EAAK1G,SAASyD,OAAQiD,EAAK1G,SAAS9D,UAAWuL,EAAQ/D,QAASC,EAAmB+C,EAAKgB,eAIvHoF,EAAahO,IAAMA,EACnBgO,EAAa9N,KAAOA,EACpB8N,EAAaD,GAAiBE,EAE9BtF,EAAQ7D,WAAaA,EAErB,IAAIxG,EAAQqK,EAAQuF,SAChBvJ,EAASiD,EAAKlF,QAAQiC,OAEtB6C,EAAQ,CACV2G,QAAS,SAAiB9I,GACxB,IAAIjD,EAAQuC,EAAOU,GAInB,OAHIV,EAAOU,GAAaP,EAAWO,KAAesD,EAAQyF,sBACxDhM,EAAQvL,KAAK+J,IAAI+D,EAAOU,GAAYP,EAAWO,KAE1CvD,EAAe,GAAIuD,EAAWjD,IAEvCiM,UAAW,SAAmBhJ,GAC5B,IAAI6B,EAAyB,UAAd7B,EAAwB,OAAS,MAC5CjD,EAAQuC,EAAOuC,GAInB,OAHIvC,EAAOU,GAAaP,EAAWO,KAAesD,EAAQyF,sBACxDhM,EAAQvL,KAAKyX,IAAI3J,EAAOuC,GAAWpC,EAAWO,IAA4B,UAAdA,EAAwBV,EAAO3D,MAAQ2D,EAAO5D,UAErGe,EAAe,GAAIoF,EAAU9E,KAWxC,OAPA9D,EAAM6J,SAAQ,SAAU9C,GACtB,IAAIhG,GAA+C,IAAxC,CAAC,OAAQ,OAAOjE,QAAQiK,GAAoB,UAAY,YACnEV,EAAStC,EAAS,GAAIsC,EAAQ6C,EAAMnI,GAAMgG,OAG5CuC,EAAKlF,QAAQiC,OAASA,EAEfiD,GA2NLsG,SAAU,CAAC,OAAQ,QAAS,MAAO,UAOnCtJ,QAAS,EAMTC,kBAAmB,gBAYrB0J,aAAc,CAEZjQ,MAAO,IAEP+J,SAAS,EAET9M,GAlgBJ,SAAsBqM,GACpB,IAAI+F,EAAgB/F,EAAKlF,QACrBiC,EAASgJ,EAAchJ,OACvBvH,EAAYuQ,EAAcvQ,UAE1BiI,EAAYuC,EAAKvC,UAAUa,MAAM,KAAK,GACtCpP,EAAQD,KAAKC,MACb8W,GAAuD,IAA1C,CAAC,MAAO,UAAUxS,QAAQiK,GACvChG,EAAOuO,EAAa,QAAU,SAC9BY,EAASZ,EAAa,OAAS,MAC/BxG,EAAcwG,EAAa,QAAU,SASzC,OAPIjJ,EAAOtF,GAAQvI,EAAMsG,EAAUoR,MACjC5G,EAAKlF,QAAQiC,OAAO6J,GAAU1X,EAAMsG,EAAUoR,IAAW7J,EAAOyC,IAE9DzC,EAAO6J,GAAU1X,EAAMsG,EAAUiC,MACnCuI,EAAKlF,QAAQiC,OAAO6J,GAAU1X,EAAMsG,EAAUiC,KAGzCuI,IA4fP6G,MAAO,CAELnQ,MAAO,IAEP+J,SAAS,EAET9M,GApxBJ,SAAeqM,EAAMe,GACnB,IAAI+F,EAGJ,IAAKjD,EAAmB7D,EAAK1G,SAASyG,UAAW,QAAS,gBACxD,OAAOC,EAGT,IAAI+G,EAAehG,EAAQ1M,QAG3B,GAA4B,iBAAjB0S,GAIT,KAHAA,EAAe/G,EAAK1G,SAASyD,OAAOiK,cAAcD,IAIhD,OAAO/G,OAKT,IAAKA,EAAK1G,SAASyD,OAAO1F,SAAS0P,GAEjC,OADAzY,QAAQkS,KAAK,iEACNR,EAIX,IAAIvC,EAAYuC,EAAKvC,UAAUa,MAAM,KAAK,GACtCyH,EAAgB/F,EAAKlF,QACrBiC,EAASgJ,EAAchJ,OACvBvH,EAAYuQ,EAAcvQ,UAE1BwQ,GAAuD,IAA1C,CAAC,OAAQ,SAASxS,QAAQiK,GAEvCwJ,EAAMjB,EAAa,SAAW,QAC9BkB,EAAkBlB,EAAa,MAAQ,OACvCvO,EAAOyP,EAAgBC,cACvBC,EAAUpB,EAAa,OAAS,MAChCY,EAASZ,EAAa,SAAW,QACjCqB,EAAmB3I,EAAcqI,GAAcE,GAQ/CzR,EAAUoR,GAAUS,EAAmBtK,EAAOtF,KAChDuI,EAAKlF,QAAQiC,OAAOtF,IAASsF,EAAOtF,IAASjC,EAAUoR,GAAUS,IAG/D7R,EAAUiC,GAAQ4P,EAAmBtK,EAAO6J,KAC9C5G,EAAKlF,QAAQiC,OAAOtF,IAASjC,EAAUiC,GAAQ4P,EAAmBtK,EAAO6J,IAE3E5G,EAAKlF,QAAQiC,OAASlC,EAAcmF,EAAKlF,QAAQiC,QAGjD,IAAIuK,EAAS9R,EAAUiC,GAAQjC,EAAUyR,GAAO,EAAII,EAAmB,EAInE7S,EAAMJ,EAAyB4L,EAAK1G,SAASyD,QAC7CwK,EAAmB1O,WAAWrE,EAAI,SAAW0S,IAC7CM,EAAmB3O,WAAWrE,EAAI,SAAW0S,EAAkB,UAC/DO,EAAYH,EAAStH,EAAKlF,QAAQiC,OAAOtF,GAAQ8P,EAAmBC,EAQxE,OALAC,EAAYxY,KAAK+J,IAAI/J,KAAKyX,IAAI3J,EAAOkK,GAAOI,EAAkBI,GAAY,GAE1EzH,EAAK+G,aAAeA,EACpB/G,EAAKlF,QAAQ+L,OAAmC3M,EAA1B4M,EAAsB,GAAwCrP,EAAMxI,KAAKyY,MAAMD,IAAavN,EAAe4M,EAAqBM,EAAS,IAAKN,GAE7J9G,GA8sBL3L,QAAS,aAcX4M,KAAM,CAEJvK,MAAO,IAEP+J,SAAS,EAET9M,GA5oBJ,SAAcqM,EAAMe,GAElB,GAAIQ,EAAkBvB,EAAK1G,SAASyG,UAAW,SAC7C,OAAOC,EAGT,GAAIA,EAAKc,SAAWd,EAAKvC,YAAcuC,EAAKkB,kBAE1C,OAAOlB,EAGT,IAAI9C,EAAaJ,EAAckD,EAAK1G,SAASyD,OAAQiD,EAAK1G,SAAS9D,UAAWuL,EAAQ/D,QAAS+D,EAAQ9D,kBAAmB+C,EAAKgB,eAE3HvD,EAAYuC,EAAKvC,UAAUa,MAAM,KAAK,GACtCqJ,EAAoB9I,EAAqBpB,GACzCY,EAAY2B,EAAKvC,UAAUa,MAAM,KAAK,IAAM,GAE5CsJ,EAAY,GAEhB,OAAQ7G,EAAQ8G,UACd,KAAKlD,GACHiD,EAAY,CAACnK,EAAWkK,GACxB,MACF,KAAKhD,GACHiD,EAAYtD,GAAU7G,GACtB,MACF,KAAKkH,GACHiD,EAAYtD,GAAU7G,GAAW,GACjC,MACF,QACEmK,EAAY7G,EAAQ8G,SAyDxB,OAtDAD,EAAUrH,SAAQ,SAAUuH,EAAMtD,GAChC,GAAI/G,IAAcqK,GAAQF,EAAUjY,SAAW6U,EAAQ,EACrD,OAAOxE,EAGTvC,EAAYuC,EAAKvC,UAAUa,MAAM,KAAK,GACtCqJ,EAAoB9I,EAAqBpB,GAEzC,IAAI2B,EAAgBY,EAAKlF,QAAQiC,OAC7BgL,EAAa/H,EAAKlF,QAAQtF,UAG1BtG,EAAQD,KAAKC,MACb8Y,EAA4B,SAAdvK,GAAwBvO,EAAMkQ,EAAc7G,OAASrJ,EAAM6Y,EAAWzP,OAAuB,UAAdmF,GAAyBvO,EAAMkQ,EAAc9G,MAAQpJ,EAAM6Y,EAAWxP,QAAwB,QAAdkF,GAAuBvO,EAAMkQ,EAAc/G,QAAUnJ,EAAM6Y,EAAW3P,MAAsB,WAAdqF,GAA0BvO,EAAMkQ,EAAchH,KAAOlJ,EAAM6Y,EAAW1P,QAEjU4P,EAAgB/Y,EAAMkQ,EAAc9G,MAAQpJ,EAAMgO,EAAW5E,MAC7D4P,EAAiBhZ,EAAMkQ,EAAc7G,OAASrJ,EAAMgO,EAAW3E,OAC/D4P,EAAejZ,EAAMkQ,EAAchH,KAAOlJ,EAAMgO,EAAW9E,KAC3DgQ,EAAkBlZ,EAAMkQ,EAAc/G,QAAUnJ,EAAMgO,EAAW7E,QAEjEgQ,EAAoC,SAAd5K,GAAwBwK,GAA+B,UAAdxK,GAAyByK,GAAgC,QAAdzK,GAAuB0K,GAA8B,WAAd1K,GAA0B2K,EAG3KpC,GAAuD,IAA1C,CAAC,MAAO,UAAUxS,QAAQiK,GAGvC6K,IAA0BvH,EAAQwH,iBAAmBvC,GAA4B,UAAd3H,GAAyB4J,GAAiBjC,GAA4B,QAAd3H,GAAuB6J,IAAmBlC,GAA4B,UAAd3H,GAAyB8J,IAAiBnC,GAA4B,QAAd3H,GAAuB+J,GAGlQI,IAA8BzH,EAAQ0H,0BAA4BzC,GAA4B,UAAd3H,GAAyB6J,GAAkBlC,GAA4B,QAAd3H,GAAuB4J,IAAkBjC,GAA4B,UAAd3H,GAAyB+J,IAAoBpC,GAA4B,QAAd3H,GAAuB8J,GAElRO,EAAmBJ,GAAyBE,GAE5CR,GAAeK,GAAuBK,KAExC1I,EAAKc,SAAU,GAEXkH,GAAeK,KACjB5K,EAAYmK,EAAUpD,EAAQ,IAG5BkE,IACFrK,EAvJR,SAA8BA,GAC5B,MAAkB,QAAdA,EACK,QACgB,UAAdA,EACF,MAEFA,EAiJWsK,CAAqBtK,IAGnC2B,EAAKvC,UAAYA,GAAaY,EAAY,IAAMA,EAAY,IAI5D2B,EAAKlF,QAAQiC,OAAStC,EAAS,GAAIuF,EAAKlF,QAAQiC,OAAQkC,EAAiBe,EAAK1G,SAASyD,OAAQiD,EAAKlF,QAAQtF,UAAWwK,EAAKvC,YAE5HuC,EAAOF,EAAaE,EAAK1G,SAASyG,UAAWC,EAAM,YAGhDA,GA4jBL6H,SAAU,OAKV7K,QAAS,EAOTC,kBAAmB,WAQnBsL,gBAAgB,EAQhBE,yBAAyB,GAU3BG,MAAO,CAELlS,MAAO,IAEP+J,SAAS,EAET9M,GArQJ,SAAeqM,GACb,IAAIvC,EAAYuC,EAAKvC,UACjBoH,EAAgBpH,EAAUa,MAAM,KAAK,GACrCyH,EAAgB/F,EAAKlF,QACrBiC,EAASgJ,EAAchJ,OACvBvH,EAAYuQ,EAAcvQ,UAE1B6J,GAAwD,IAA9C,CAAC,OAAQ,SAAS7L,QAAQqR,GAEpCgE,GAA6D,IAA5C,CAAC,MAAO,QAAQrV,QAAQqR,GAO7C,OALA9H,EAAOsC,EAAU,OAAS,OAAS7J,EAAUqP,IAAkBgE,EAAiB9L,EAAOsC,EAAU,QAAU,UAAY,GAEvHW,EAAKvC,UAAYoB,EAAqBpB,GACtCuC,EAAKlF,QAAQiC,OAASlC,EAAckC,GAE7BiD,IAkQP8I,KAAM,CAEJpS,MAAO,IAEP+J,SAAS,EAET9M,GA9TJ,SAAcqM,GACZ,IAAK6D,EAAmB7D,EAAK1G,SAASyG,UAAW,OAAQ,mBACvD,OAAOC,EAGT,IAAItC,EAAUsC,EAAKlF,QAAQtF,UACvBuT,EAAQrJ,EAAKM,EAAK1G,SAASyG,WAAW,SAAU5H,GAClD,MAAyB,oBAAlBA,EAASuJ,QACfxE,WAEH,GAAIQ,EAAQrF,OAAS0Q,EAAM3Q,KAAOsF,EAAQpF,KAAOyQ,EAAMxQ,OAASmF,EAAQtF,IAAM2Q,EAAM1Q,QAAUqF,EAAQnF,MAAQwQ,EAAMzQ,KAAM,CAExH,IAAkB,IAAd0H,EAAK8I,KACP,OAAO9I,EAGTA,EAAK8I,MAAO,EACZ9I,EAAKa,WAAW,uBAAyB,OACpC,CAEL,IAAkB,IAAdb,EAAK8I,KACP,OAAO9I,EAGTA,EAAK8I,MAAO,EACZ9I,EAAKa,WAAW,wBAAyB,EAG3C,OAAOb,IAoTPgJ,aAAc,CAEZtS,MAAO,IAEP+J,SAAS,EAET9M,GAtgCJ,SAAsBqM,EAAMe,GAC1B,IAAI5S,EAAI4S,EAAQ5S,EACZC,EAAI2S,EAAQ3S,EACZ2O,EAASiD,EAAKlF,QAAQiC,OAItBkM,EAA8BvJ,EAAKM,EAAK1G,SAASyG,WAAW,SAAU5H,GACxE,MAAyB,eAAlBA,EAASuJ,QACfwH,qBACiCxR,IAAhCuR,GACF3a,QAAQkS,KAAK,iIAEf,IAAI0I,OAAkDxR,IAAhCuR,EAA4CA,EAA8BlI,EAAQmI,gBAEpG/S,EAAeH,EAAgBgK,EAAK1G,SAASyD,QAC7CoM,EAAmBpO,EAAsB5E,GAGzCsC,EAAS,CACX0I,SAAUpE,EAAOoE,UAGfrG,EA9DN,SAA2BkF,EAAMoJ,GAC/B,IAAIrD,EAAgB/F,EAAKlF,QACrBiC,EAASgJ,EAAchJ,OACvBvH,EAAYuQ,EAAcvQ,UAC1BkS,EAAQzY,KAAKyY,MACbxY,EAAQD,KAAKC,MAEbma,EAAU,SAAiBhZ,GAC7B,OAAOA,GAGLiZ,EAAiB5B,EAAMlS,EAAU4D,OACjCmQ,EAAc7B,EAAM3K,EAAO3D,OAE3B4M,GAA4D,IAA/C,CAAC,OAAQ,SAASxS,QAAQwM,EAAKvC,WAC5C+L,GAA+C,IAAjCxJ,EAAKvC,UAAUjK,QAAQ,KAIrCiW,EAAuBL,EAAwBpD,GAAcwD,GAH3CF,EAAiB,GAAMC,EAAc,EAGuC7B,EAAQxY,EAAjEma,EACrCK,EAAqBN,EAAwB1B,EAAV2B,EAEvC,MAAO,CACL/Q,KAAMmR,EANWH,EAAiB,GAAM,GAAKC,EAAc,GAAM,IAMtBC,GAAeJ,EAAcrM,EAAOzE,KAAO,EAAIyE,EAAOzE,MACjGF,IAAKsR,EAAkB3M,EAAO3E,KAC9BC,OAAQqR,EAAkB3M,EAAO1E,QACjCE,MAAOkR,EAAoB1M,EAAOxE,QAoCtBoR,CAAkB3J,EAAM9S,OAAO0c,iBAAmB,IAAMhG,GAElEjL,EAAc,WAANxK,EAAiB,MAAQ,SACjCyK,EAAc,UAANxK,EAAgB,OAAS,QAKjCyb,EAAmBlI,EAAyB,aAW5CrJ,OAAO,EACPF,OAAM,EAqBV,GAhBIA,EAJU,WAAVO,EAG4B,SAA1BxC,EAAatB,UACRsB,EAAagF,aAAeL,EAAQzC,QAEpC8Q,EAAiBhQ,OAAS2B,EAAQzC,OAGrCyC,EAAQ1C,IAIZE,EAFU,UAAVM,EAC4B,SAA1BzC,EAAatB,UACPsB,EAAa+E,YAAcJ,EAAQvC,OAEnC4Q,EAAiB/P,MAAQ0B,EAAQvC,MAGpCuC,EAAQxC,KAEb4Q,GAAmBW,EACrBpR,EAAOoR,GAAoB,eAAiBvR,EAAO,OAASF,EAAM,SAClEK,EAAOE,GAAS,EAChBF,EAAOG,GAAS,EAChBH,EAAO4J,WAAa,gBACf,CAEL,IAAIyH,EAAsB,WAAVnR,GAAsB,EAAI,EACtCoR,EAAuB,UAAVnR,GAAqB,EAAI,EAC1CH,EAAOE,GAASP,EAAM0R,EACtBrR,EAAOG,GAASN,EAAOyR,EACvBtR,EAAO4J,WAAa1J,EAAQ,KAAOC,EAIrC,IAAIiI,EAAa,CACf,cAAeb,EAAKvC,WAQtB,OAJAuC,EAAKa,WAAapG,EAAS,GAAIoG,EAAYb,EAAKa,YAChDb,EAAKvH,OAASgC,EAAS,GAAIhC,EAAQuH,EAAKvH,QACxCuH,EAAKY,YAAcnG,EAAS,GAAIuF,EAAKlF,QAAQ+L,MAAO7G,EAAKY,aAElDZ,GAo7BLkJ,iBAAiB,EAMjB/a,EAAG,SAMHC,EAAG,SAkBL4b,WAAY,CAEVtT,MAAO,IAEP+J,SAAS,EAET9M,GAzpCJ,SAAoBqM,GApBpB,IAAuB3L,EAASwM,EAoC9B,OAXA6C,EAAU1D,EAAK1G,SAASyD,OAAQiD,EAAKvH,QAzBhBpE,EA6BP2L,EAAK1G,SAASyD,OA7BE8D,EA6BMb,EAAKa,WA5BzC5G,OAAO4D,KAAKgD,GAAYN,SAAQ,SAAUJ,IAE1B,IADFU,EAAWV,GAErB9L,EAAQ4V,aAAa9J,EAAMU,EAAWV,IAEtC9L,EAAQ+N,gBAAgBjC,MA0BxBH,EAAK+G,cAAgB9M,OAAO4D,KAAKmC,EAAKY,aAAajR,QACrD+T,EAAU1D,EAAK+G,aAAc/G,EAAKY,aAG7BZ,GA2oCLkK,OA9nCJ,SAA0B1U,EAAWuH,EAAQgE,EAASoJ,EAAiB3L,GAErE,IAAIU,EAAmBX,EAAoBC,EAAOzB,EAAQvH,EAAWuL,EAAQC,eAKzEvD,EAAYD,EAAqBuD,EAAQtD,UAAWyB,EAAkBnC,EAAQvH,EAAWuL,EAAQhB,UAAUkB,KAAKhE,kBAAmB8D,EAAQhB,UAAUkB,KAAKjE,SAQ9J,OANAD,EAAOkN,aAAa,cAAexM,GAInCiG,EAAU3G,EAAQ,CAAEoE,SAAUJ,EAAQC,cAAgB,QAAU,aAEzDD,GAsnCLmI,qBAAiBxR,KAuGjB0S,GAAS,WASX,SAASA,EAAO5U,EAAWuH,GACzB,IAAIsN,EAAQvX,KAERiO,EAAUhO,UAAUpD,OAAS,QAAsB+H,IAAjB3E,UAAU,GAAmBA,UAAU,GAAK,GAClFsG,EAAevG,KAAMsX,GAErBtX,KAAKuQ,eAAiB,WACpB,OAAO5U,sBAAsB4b,EAAM3J,SAIrC5N,KAAK4N,OAASjN,EAASX,KAAK4N,OAAO4J,KAAKxX,OAGxCA,KAAKiO,QAAUtG,EAAS,GAAI2P,EAAOxE,SAAU7E,GAG7CjO,KAAK0L,MAAQ,CACXmC,aAAa,EACbS,WAAW,EACX6B,cAAe,IAIjBnQ,KAAK0C,UAAYA,GAAaA,EAAU+U,OAAS/U,EAAU,GAAKA,EAChE1C,KAAKiK,OAASA,GAAUA,EAAOwN,OAASxN,EAAO,GAAKA,EAGpDjK,KAAKiO,QAAQhB,UAAY,GACzB9F,OAAO4D,KAAKpD,EAAS,GAAI2P,EAAOxE,SAAS7F,UAAWgB,EAAQhB,YAAYQ,SAAQ,SAAUmB,GACxF2I,EAAMtJ,QAAQhB,UAAU2B,GAAQjH,EAAS,GAAI2P,EAAOxE,SAAS7F,UAAU2B,IAAS,GAAIX,EAAQhB,UAAYgB,EAAQhB,UAAU2B,GAAQ,OAIpI5O,KAAKiN,UAAY9F,OAAO4D,KAAK/K,KAAKiO,QAAQhB,WAAWjC,KAAI,SAAU4D,GACjE,OAAOjH,EAAS,CACdiH,KAAMA,GACL2I,EAAMtJ,QAAQhB,UAAU2B,OAG5B1D,MAAK,SAAUzQ,EAAGG,GACjB,OAAOH,EAAEmJ,MAAQhJ,EAAEgJ,SAOrB5D,KAAKiN,UAAUQ,SAAQ,SAAU4J,GAC3BA,EAAgB1J,SAAWzM,EAAWmW,EAAgBD,SACxDC,EAAgBD,OAAOG,EAAM7U,UAAW6U,EAAMtN,OAAQsN,EAAMtJ,QAASoJ,EAAiBE,EAAM7L,UAKhG1L,KAAK4N,SAEL,IAAIyC,EAAgBrQ,KAAKiO,QAAQoC,cAC7BA,GAEFrQ,KAAKsQ,uBAGPtQ,KAAK0L,MAAM2E,cAAgBA,EAqD7B,OA9CA1J,EAAY2Q,EAAQ,CAAC,CACnBjQ,IAAK,SACLK,MAAO,WACL,OAAOkG,EAAOvM,KAAKrB,QAEpB,CACDqH,IAAK,UACLK,MAAO,WACL,OAAO2H,EAAQhO,KAAKrB,QAErB,CACDqH,IAAK,uBACLK,MAAO,WACL,OAAO4I,EAAqBjP,KAAKrB,QAElC,CACDqH,IAAK,wBACLK,MAAO,WACL,OAAO8H,EAAsBnO,KAAKrB,UA4B/BsX,EA7HI,GAqJbA,GAAOI,OAA2B,oBAAXtd,OAAyBA,OAASud,GAAQC,YACjEN,GAAOhG,WAAaA,EACpBgG,GAAOxE,SAAWA,GAEH,c,2CCrjFf,IAOI+E,EACAC,EARAC,EAAUC,EAAOtd,QAAU,GAU/B,SAASud,IACL,MAAM,IAAIC,MAAM,mCAEpB,SAASC,IACL,MAAM,IAAID,MAAM,qCAsBpB,SAASE,EAAWC,GAChB,GAAIR,IAAqBhd,WAErB,OAAOA,WAAWwd,EAAK,GAG3B,IAAKR,IAAqBI,IAAqBJ,IAAqBhd,WAEhE,OADAgd,EAAmBhd,WACZA,WAAWwd,EAAK,GAE3B,IAEI,OAAOR,EAAiBQ,EAAK,GAC/B,MAAMrb,GACJ,IAEI,OAAO6a,EAAiBxW,KAAK,KAAMgX,EAAK,GAC1C,MAAMrb,GAEJ,OAAO6a,EAAiBxW,KAAKrB,KAAMqY,EAAK,MAvCnD,WACG,IAEQR,EADsB,mBAAfhd,WACYA,WAEAod,EAEzB,MAAOjb,GACL6a,EAAmBI,EAEvB,IAEQH,EADwB,mBAAjB7c,aACcA,aAEAkd,EAE3B,MAAOnb,GACL8a,EAAqBK,GAjB7B,GAwEA,IAEIG,EAFAC,EAAQ,GACRC,GAAW,EAEXC,GAAc,EAElB,SAASC,IACAF,GAAaF,IAGlBE,GAAW,EACPF,EAAazb,OACb0b,EAAQD,EAAa3G,OAAO4G,GAE5BE,GAAc,EAEdF,EAAM1b,QACN8b,KAIR,SAASA,IACL,IAAIH,EAAJ,CAGA,IAAI5Y,EAAUwY,EAAWM,GACzBF,GAAW,EAGX,IADA,IAAIrE,EAAMoE,EAAM1b,OACVsX,GAAK,CAGP,IAFAmE,EAAeC,EACfA,EAAQ,KACCE,EAAatE,GACdmE,GACAA,EAAaG,GAAYG,MAGjCH,GAAc,EACdtE,EAAMoE,EAAM1b,OAEhByb,EAAe,KACfE,GAAW,EAnEf,SAAyBK,GACrB,GAAIf,IAAuB7c,aAEvB,OAAOA,aAAa4d,GAGxB,IAAKf,IAAuBK,IAAwBL,IAAuB7c,aAEvE,OADA6c,EAAqB7c,aACdA,aAAa4d,GAExB,IAEWf,EAAmBe,GAC5B,MAAO7b,GACL,IAEI,OAAO8a,EAAmBzW,KAAK,KAAMwX,GACvC,MAAO7b,GAGL,OAAO8a,EAAmBzW,KAAKrB,KAAM6Y,KAgD7CC,CAAgBlZ,IAiBpB,SAASmZ,EAAKV,EAAKW,GACfhZ,KAAKqY,IAAMA,EACXrY,KAAKgZ,MAAQA,EAYjB,SAASC,KA5BTlB,EAAQmB,SAAW,SAAUb,GACzB,IAAIc,EAAO,IAAIpM,MAAM9M,UAAUpD,OAAS,GACxC,GAAIoD,UAAUpD,OAAS,EACnB,IAAK,IAAI2D,EAAI,EAAGA,EAAIP,UAAUpD,OAAQ2D,IAClC2Y,EAAK3Y,EAAI,GAAKP,UAAUO,GAGhC+X,EAAMzb,KAAK,IAAIic,EAAKV,EAAKc,IACJ,IAAjBZ,EAAM1b,QAAiB2b,GACvBJ,EAAWO,IASnBI,EAAKvR,UAAUoR,IAAM,WACjB5Y,KAAKqY,IAAItY,MAAM,KAAMC,KAAKgZ,QAE9BjB,EAAQqB,MAAQ,UAChBrB,EAAQsB,SAAU,EAClBtB,EAAQuB,IAAM,GACdvB,EAAQwB,KAAO,GACfxB,EAAQ9U,QAAU,GAClB8U,EAAQyB,SAAW,GAInBzB,EAAQ0B,GAAKR,EACblB,EAAQ2B,YAAcT,EACtBlB,EAAQ4B,KAAOV,EACflB,EAAQ6B,IAAMX,EACdlB,EAAQ8B,eAAiBZ,EACzBlB,EAAQ+B,mBAAqBb,EAC7BlB,EAAQgC,KAAOd,EACflB,EAAQiC,gBAAkBf,EAC1BlB,EAAQkC,oBAAsBhB,EAE9BlB,EAAQmC,UAAY,SAAUtL,GAAQ,MAAO,IAE7CmJ,EAAQoC,QAAU,SAAUvL,GACxB,MAAM,IAAIsJ,MAAM,qCAGpBH,EAAQqC,IAAM,WAAc,MAAO,KACnCrC,EAAQsC,MAAQ,SAAUC,GACtB,MAAM,IAAIpC,MAAM,mCAEpBH,EAAQwC,MAAQ,WAAa,OAAO,I,oCCvLpC,0CAGgBra,EAAQ,QACxBA,EAAQ,QAQR,IACI9F,OAAOkd,OAASpX,EAAQ,QAAY,QACpC9F,OAAOogB,EAAIpgB,OAAOqgB,OAASva,EAAQ,QAEnCA,EAAQ,QACV,MAAOlD,IAQT5C,OAAOsgB,MAAQA,IAEftgB,OAAOsgB,MAAMC,SAASC,QAAQC,OAAO,oBAAsB,iBAE3DzgB,OAAOsgB,MAAMC,SAASG,iBAAkB,EAGxC,IAAMC,EAAc3gB,OAAOsgB,MAAMK,YACjC3gB,OAAO4gB,YAAcD,EAAYlT,SAIjC,IADA,IAAMoT,EAAQ7a,SAAS8a,qBAAqB,QACnC1a,EAAI,EAAGA,EAAIya,EAAMpe,OAAQ2D,IAC9Bya,EAAMza,GAAGsP,iBAAiB,UAAU,SAAS9S,GACzC5C,OAAO4gB,YAAYG,OAAO,uC,w4CCvCR,IA0HXC,EAxHJC,a,kOAAAA,U,MAAAA,OACP,WAAYvU,GAAO,MAyBb,O,4FAzBa,UACfyQ,cAAMzQ,IAGDR,MAAQiR,EAAKzQ,MAAMR,OAAS,MACjCiR,EAAKlR,OAASkR,EAAKzQ,MAAMT,QAAU,IAGnCkR,EAAK7L,MAAQ,CACT4P,OAAQ,GACRC,OAAQ,GACRC,OAAQ,EACRrT,MAAO,CACHsT,MAAO,CACHC,MAAO,qBACPpV,MAAO,IACPD,OAAQlK,KAAKyY,MAAO,IAAM2C,EAAKjR,MAASiR,EAAKlR,SAEjDsV,OAAQ,CACJD,MAAO,qBACPpV,MAAOiR,EAAKjR,MACZD,OAAQkR,EAAKlR,SAGrBuV,QAAS,CAAC,OAAQ,QACpB,EA2FL,O,EA1FAC,G,EAAAA,gCAED,WAAoB,WAEhB7b,KAAK8b,UAAS,iBAAO,CACjBR,OAAQS,EAAKjV,MAAMwU,QAAUS,EAAKrQ,MAAM4P,OACxCC,OAAQQ,EAAKjV,MAAMyU,QAAUQ,EAAKrQ,MAAM6P,OACxCC,OAAQO,EAAKjV,MAAM0U,QAAUO,EAAKrQ,MAAM8P,OACxCI,QAASG,EAAKjV,MAAM8U,SAAWG,EAAKrQ,MAAMkQ,cAEjD,oBAED,WACI,IAGMI,EAHU,IAAIC,OAAO,WAAY,KACbzZ,KAAKxC,KAAK8G,MAAMkV,OAEhBhc,KAAK8G,MAAMkV,MAAQ5hB,OAAO8hB,SAAWlc,KAAK8G,MAAMkV,MACpEG,EAAYnc,KAAK0L,MAKvB,IAHqB,IAAIuQ,OAAO,IAAD,OAAK7hB,OAAO8hB,SAASjQ,QAAQ,4BAA6B,QAAO,MAAM,KACzEzJ,KAAKwZ,GAEpB,CACV,IAAMI,EAAgBjgB,KAAKyY,MAAM5U,KAAK8G,MAAMR,MAAQtG,KAAK8G,MAAMT,OAA6B,IAAnBrG,KAAK8G,MAAMR,MAAetG,KAAK8G,MAAMT,OAA8B,IAApBrG,KAAK8G,MAAMT,OAAgBrG,KAAK8G,MAAMR,OAE9J,OACI+V,yBAAKC,UAAWtc,KAAK8G,MAAMwV,UAAY,kBAAmBlN,MAAO,CAAEgN,cAAeA,EAAgB,IAAK9V,MAAOtG,KAAK8G,MAAMR,QACrH+V,yBAAKC,UAAU,kBAAkBlN,MAAO,CAAEmN,gBAAiB,QAAF,OAAUP,EAAK,SACxEK,yBAAKG,iBAAe,OAAOC,IAAKT,EAAOU,IAAK1c,KAAK8G,MAAM4V,OAKnE,IAAMC,EAAW,IAAIC,IAAIZ,GACzBW,EAASE,aAAaC,IAAI,MAAO,QACjCH,EAASE,aAAaC,IAAI,OAAQ,cAClCH,EAASE,aAAaC,IAAI,OAAQX,EAAUb,QAC5CqB,EAASE,aAAaC,IAAI,OAAQX,EAAUZ,QAC5CoB,EAASE,aAAaC,IAAI,OAAQX,EAAUX,QAE5C,IAAMuB,EAAY,IAAIH,IAAID,GAC1BI,EAAUF,aAAaC,IAAI,IAAK9c,KAAKsG,OACrCyW,EAAUF,aAAaC,IAAI,IAAK9c,KAAKqG,QAErC,IAAM2W,EAAY,IAAIJ,IAAIG,GAS1B,OARAC,EAAUH,aAAaC,IAAI,KAAM,MACjCE,EAAUH,aAAaC,IAAI,IAAK,KAChCE,EAAUH,aAAaC,IAAI,aAAc,MAGzCC,EAAUF,aAAaC,IAAI,OAAQ,UACnCE,EAAUH,aAAaC,IAAI,OAAQ,UAG/BT,kBAACA,IAAMY,SAAQ,KACXZ,6BAASC,UAAWtc,KAAK8G,MAAMwV,UAAWE,iBAAe,QACpDrV,OAAO4D,KAAKoR,EAAUhU,OAAO6C,KAAI,SAAUkS,EAAUxL,GAClD,OAAO2K,kBAACA,IAAMY,SAAQ,CAAC5V,IAAKqK,GACvByK,EAAUP,QAAQ5Q,KAAI,SAAUmS,EAAQzL,GACrC,IAAM0L,EAAQ,IAAIR,IAAIZ,GACtBoB,EAAMP,aAAaC,IAAI,MAAO,QAC9BM,EAAMP,aAAaC,IAAI,OAAQ,cAC/BM,EAAMP,aAAaC,IAAI,OAAQX,EAAUb,QACzC8B,EAAMP,aAAaC,IAAI,OAAQX,EAAUZ,QACzC6B,EAAMP,aAAaC,IAAI,OAAQX,EAAUX,QACzC4B,EAAMP,aAAaC,IAAI,IAAKX,EAAUhU,MAAM+U,GAAU5W,OACtD8W,EAAMP,aAAaC,IAAI,IAAKX,EAAUhU,MAAM+U,GAAU7W,QACtD+W,EAAMP,aAAaC,IAAI,KAAMK,GAE7B,IAAME,EAAQ,IAAIT,IAAIQ,GAGtB,OAFAC,EAAMR,aAAaC,IAAI,MAAO,KAEvBT,4BAAQhV,IAAKqK,EAAOgK,MAAOS,EAAUhU,MAAM+U,GAAUxB,MACxD4B,KAAI,gBAAWH,GACfI,cACI,UAAGH,EAAK,mBACLC,EAAK,gBAI5BhB,yBAAKI,IAAG,UAAKO,GACTQ,WAAA,UAAaT,GACbL,IAAK1c,KAAK8G,MAAM4V,IAChBpW,MAAOtG,KAAKsG,MACZD,OAAQrG,KAAKqG,OACbmW,iBAAe,OACfF,UAAU,oB,2BAI7B,EArHMjB,CAASgB,IAAMoB,WCYXC,EAZQ,SAAC5W,GAAK,OACzBuV,yBAAKC,UAAS,uBAAkBxV,EAAM6W,aAClCtB,yBAAKC,UAAU,2DACXD,yBAAKC,UAAU,aACXD,0BAAMC,UAAU,oBAChBD,0BAAMC,UAAU,qBAChBD,0BAAMC,UAAU,yB,mhDCJM,IAEhCsB,EAASvC,a,kOAAAA,U,MAAAA,OACX,WAAYvU,GAAO,QAKwB,O,4FALxB,UACfyQ,cAAMzQ,IAED+W,KAAOtG,EAAKzQ,MAAMoG,KACvBqK,EAAKuG,SAA8B,QAAtB,EAAGvG,EAAKzQ,MAAMgX,gBAAQ,QAAI,EACvCvG,EAAKwG,cAAgC,EAAhBxG,EAAKuG,SAAa,EA+C1C,O,EA7CAjC,G,EAAAA,qBAED,WACI,IAAM8B,EAAa,GAAK3d,KAAK8d,SAE7B,QAAwB,IAAb9d,KAAK6d,KACZ,OAAOxB,kBAACqB,EAAc,CAACC,WAAYA,IAGvC,IAAMK,EAAeC,IAAUC,SAASle,KAAK6d,KAAKM,SAGlD,OACI9B,kBAACA,IAAMY,SAAQ,KACXZ,2BAAKC,UAAS,uBAAkBqB,EAAU,YAAI3d,KAAK8G,MAAMwV,YAAiBtc,KAAK8G,MAAMiH,YACjFsO,yBAAKC,UAAU,uCACVtc,KAAK6d,KAAKO,gBACP/B,uBAAGgC,KAAMre,KAAK6d,KAAKS,IAAKhC,UAAU,WAC9BD,kBAACjB,EAAK,CAACkB,UAAU,aAAaN,MAAOhc,KAAK6d,KAAKO,eAAeE,IAAK5B,IAAK1c,KAAK6d,KAAKO,eAAehF,OAASpZ,KAAK6d,KAAKzE,MAAO9S,MAAO,MAAOD,OAAQ,OAGzJgW,uBAAGgC,KAAMre,KAAK6d,KAAKS,IAAKhC,UAAU,sBAC9BD,4BAAKrc,KAAK6d,KAAKzE,QAEnBiD,yBAAKC,UAAU,aACVtc,KAAK6d,KAAKU,WAAW,IAClBlC,yBAAKC,UAAU,iBACXD,uBAAGgC,KAAI,UAAKre,KAAK6d,KAAKU,WAAW,GAAGD,MAAQte,KAAK6d,KAAKU,WAAW,GAAG3P,OAI5EyN,0BAAMC,UAAU,aAAatc,KAAK6d,KAAKW,YAE3CnC,yBAAKC,UAAU,eAAemC,wBAAyB,CAACC,OAAQV,OAItEhe,KAAK8G,MAAM6X,cAAgB3e,KAAK+d,eAAiB,GAC5C/d,KAAK8G,MAAM6X,eAAiB,EAAI3e,KAAK+d,eACxC1B,yBAAKC,UAAU,UACXD,kBAACuC,IAAE,CAACC,IAAK7e,KAAK8G,MAAM6X,cAAgB3e,KAAK+d,cAAeT,KAAK,QAAQwB,gBAAiB9e,KAAK8G,MAAMgY,gBAAiBC,UAAW/e,KAAK8G,MAAMiY,mB,2BAK3J,EArDU1D,CAASgB,IAAMoB,WAwDfG,O,kCC9Df,QAEA,qOASAxjB,OAAO4kB,OAAS,GAChB,SAAWC,GACT,IAAIC,GAA2B,EAY/B,QATgB,0BAAdC,KAAc,kCACdD,GAA2B,EAGN,WAAL,EAAPxkB,KACTsd,EAAOtd,QAAUukB,IACjBC,GAA2B,IAGxBA,EAA0B,CAC7B,IAAIE,EAAahlB,OAAOilB,QACpBC,EAAMllB,OAAOilB,QAAUJ,IAE3BK,EAAIC,WAAa,WAEf,OADAnlB,OAAOilB,QAAUD,EACVE,IAnBb,EAsBG,WACD,SAASE,IAIP,IAHA,IAAIhf,EAAI,EACJ0H,EAAS,GAEN1H,EAAIP,UAAUpD,OAAQ2D,IAAK,CAChC,IAAIuN,EAAa9N,UAAUO,GAE3B,IAAK,IAAI6G,KAAO0G,EACd7F,EAAOb,GAAO0G,EAAW1G,GAI7B,OAAOa,EAkIT,OA/HA,SAASuX,EAAKC,GACZ,SAASJ,EAAIjY,EAAKK,EAAOqG,GACvB,IAAI7F,EAEJ,GAAwB,oBAAb9H,SAAX,CAKA,GAAIH,UAAUpD,OAAS,EAAG,CAKxB,GAAkC,iBAJlCkR,EAAayR,EAAO,CAClBG,KAAM,KACLL,EAAI3E,SAAU5M,IAEK6R,QAAsB,CAC1C,IAAIA,EAAU,IAAI7kB,KAClB6kB,EAAQC,gBAAgBD,EAAQE,kBAAyC,MAArB/R,EAAW6R,SAC/D7R,EAAW6R,QAAUA,EAIvB7R,EAAW6R,QAAU7R,EAAW6R,QAAU7R,EAAW6R,QAAQG,cAAgB,GAE7E,IACE7X,EAAS8X,KAAKC,UAAUvY,GAEpB,UAAUlF,KAAK0F,KACjBR,EAAQQ,GAEV,MAAOlL,IAKP0K,EAHGgY,EAAUQ,MAGLR,EAAUQ,MAAMxY,EAAOL,GAFvB8Y,mBAAmBC,OAAO1Y,IAAQuE,QAAQ,4DAA6DoU,oBAOjHhZ,GADAA,GADAA,EAAM8Y,mBAAmBC,OAAO/Y,KACtB4E,QAAQ,2BAA4BoU,qBACpCpU,QAAQ,UAAWqU,QAC7B,IAAIC,EAAwB,GAE5B,IAAK,IAAIC,KAAiBzS,EACnBA,EAAWyS,KAIhBD,GAAyB,KAAOC,GAEE,IAA9BzS,EAAWyS,KAIfD,GAAyB,IAAMxS,EAAWyS,KAG5C,OAAOpgB,SAASqgB,OAASpZ,EAAM,IAAMK,EAAQ6Y,EAI1ClZ,IACHa,EAAS,IAUX,IAJA,IAAIwY,EAAUtgB,SAASqgB,OAASrgB,SAASqgB,OAAOjV,MAAM,MAAQ,GAC1DmV,EAAU,mBACVngB,EAAI,EAEDA,EAAIkgB,EAAQ7jB,OAAQ2D,IAAK,CAC9B,IAAIogB,EAAQF,EAAQlgB,GAAGgL,MAAM,KACzBiV,EAASG,EAAMxT,MAAM,GAAGyT,KAAK,KAE5B7gB,KAAK8gB,MAA6B,MAArBL,EAAOzR,OAAO,KAC9ByR,EAASA,EAAOrT,MAAM,GAAI,IAG5B,IACE,IAAIwB,EAAOgS,EAAM,GAAG3U,QAAQ0U,EAASN,oBAGrC,GAFAI,EAASf,EAAUqB,KAAOrB,EAAUqB,KAAKN,EAAQ7R,GAAQ8Q,EAAUe,EAAQ7R,IAAS6R,EAAOxU,QAAQ0U,EAASN,oBAExGrgB,KAAK8gB,KACP,IACEL,EAAST,KAAKgB,MAAMP,GACpB,MAAOzjB,IAGX,GAAIqK,IAAQuH,EAAM,CAChB1G,EAASuY,EACT,MAGGpZ,IACHa,EAAO0G,GAAQ6R,GAEjB,MAAOzjB,KAGX,OAAOkL,GAwBT,OArBA9N,OAAO4kB,OAAOlC,IAAMwC,EAEpBllB,OAAO4kB,OAAOiC,IAAM,SAAU5Z,GAC5B,OAAOiY,EAAIje,KAAKie,EAAKjY,IAGvBjN,OAAO4kB,OAAOkC,QAAU,WACtB,OAAO5B,EAAIvf,MAAM,CACf+gB,MAAM,GACL,GAAG1T,MAAM/L,KAAKpB,aAGnB7F,OAAO4kB,OAAOrE,SAAW,GAEzBvgB,OAAO4kB,OAAOmC,OAAS,SAAU9Z,EAAK0G,GACpCuR,EAAIjY,EAAK,GAAImY,EAAOzR,EAAY,CAC9B6R,SAAU,MAIdxlB,OAAO4kB,OAAOoC,cAAgB3B,EACvBH,EAGFG,EAAK,mB,m3CCjLY,IACpBb,EAAEvD,a,kOAAAA,U,MAAAA,OACJ,WAAYvU,GAAO,MAYb,O,4FAZa,UACfyQ,cAAMzQ,IACDua,QAAU,CACX,GACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,gBACF,EAgBL,O,EAfAxF,G,EAAAA,qBAED,WACI,OACIQ,yBAAKC,UAAS,6BAAwBtc,KAAK8G,MAAM+X,MAC7CxC,yBAAKC,UAAS,UAAKtc,KAAK8G,MAAMgY,gBAAkB,iCAAmC,GAAE,6EACjFzC,yBAAK3e,GAAE,UAAKsC,KAAKqhB,QAAQrhB,KAAK8G,MAAM+X,KAAI,YAAI7e,KAAK8G,MAAMiY,WACnDzC,UAAU,SACVgF,MAAOthB,KAAK8G,MAAM+X,IAClB0C,0BAAA,qBAAuCvhB,KAAK8G,MAAM+X,KAClD2C,kBAAiBxhB,KAAK8G,MAAMiY,mB,2BAK/C,EA7BG1D,CAASgB,IAAMoB,WA+BRmB,O,q+BCYf,SAAS6C,EAAcC,EAAMC,GACzB,IAAK,IAAIta,KAAOsa,EACZD,EAAOA,EAAKzV,QAAQ,IAAM5E,EAAKsa,EAASta,IAG5C,OAAOqa,EA9CXtnB,OAAOwnB,MAAQ,SAASva,EAAKsa,GACzB,IAAIE,EAASzhB,SAAS+C,gBAAgB2e,aAAa,QAC/CC,EAAc1a,EAGlB,GAAIjN,OAAO4nB,cAAgB5nB,OAAO4nB,aAAaD,GAG3C,OADAA,EAAcN,EADdM,EAAc3nB,OAAO4nB,aAAaD,GACOJ,GAK7C,GAAc,MAAVE,EAEA,OADAE,EAAcN,EAAcM,EAAaJ,GAK7C,IACI,IAAMK,EAAe9hB,UAAO,YAAU2hB,EAAM,UAG5CE,EAAcN,EAFdM,EAAcC,EAAa3a,GAAO2a,EAAa3a,GAAOA,EAEbsa,GAC3C,MAAO/lB,GACDmc,EAKR,OAAOgK,GAIX3nB,OAAO6nB,aAAe,SAAS5a,GAA0B,IAArBia,EAAQ,UAAH,6CAAG,EAAGK,EAAQ,uCAC/CI,EAAcH,MAAMva,EAAKsa,GAC7B,EAAyBI,EAAYvW,MAAM,KAAI0W,SAAxCC,EAAM,KAAEC,EAAM,KAErB,OAAOd,EAAQ,EAAIc,EAASD,I,kCChChC,IAAIE,EAAwBlb,OAAOkb,sBAC/Bva,EAAiBX,OAAOK,UAAUM,eAClCwa,EAAmBnb,OAAOK,UAAU+a,qBAExC,SAASC,EAASC,GACjB,GAAIA,QACH,MAAM,IAAI/b,UAAU,yDAGrB,OAAOS,OAAOsb,GA+CfzK,EAAOtd,QA5CP,WACC,IACC,IAAKyM,OAAOS,OACX,OAAO,EAMR,IAAI8a,EAAQ,IAAItC,OAAO,OAEvB,GADAsC,EAAM,GAAK,KACkC,MAAzCvb,OAAOwb,oBAAoBD,GAAO,GACrC,OAAO,EAKR,IADA,IAAIE,EAAQ,GACHpiB,EAAI,EAAGA,EAAI,GAAIA,IACvBoiB,EAAM,IAAMxC,OAAOyC,aAAariB,IAAMA,EAKvC,GAAwB,eAHX2G,OAAOwb,oBAAoBC,GAAO5X,KAAI,SAAU1N,GAC5D,OAAOslB,EAAMtlB,MAEHujB,KAAK,IACf,OAAO,EAIR,IAAIiC,EAAQ,GAIZ,MAHA,uBAAuBtX,MAAM,IAAIiC,SAAQ,SAAUsV,GAClDD,EAAMC,GAAUA,KAGf,yBADE5b,OAAO4D,KAAK5D,OAAOS,OAAO,GAAIkb,IAAQjC,KAAK,IAM9C,MAAOmC,GAER,OAAO,GAIQC,GAAoB9b,OAAOS,OAAS,SAAUf,EAAQgB,GAKtE,IAJA,IAAIqb,EAEAC,EADAC,EAAKZ,EAAS3b,GAGTwc,EAAI,EAAGA,EAAIpjB,UAAUpD,OAAQwmB,IAAK,CAG1C,IAAK,IAAIhc,KAFT6b,EAAO/b,OAAOlH,UAAUojB,IAGnBvb,EAAezG,KAAK6hB,EAAM7b,KAC7B+b,EAAG/b,GAAO6b,EAAK7b,IAIjB,GAAIgb,EAAuB,CAC1Bc,EAAUd,EAAsBa,GAChC,IAAK,IAAI1iB,EAAI,EAAGA,EAAI2iB,EAAQtmB,OAAQ2D,IAC/B8hB,EAAiBjhB,KAAK6hB,EAAMC,EAAQ3iB,MACvC4iB,EAAGD,EAAQ3iB,IAAM0iB,EAAKC,EAAQ3iB,MAMlC,OAAO4iB,I,uiCCvFRhpB,OAAOynB,OAASzhB,SAAS+C,gBAAgB2e,aAAa,QAGtD1nB,OAAOkpB,SAAW,WACd,IAAIC,EAAO,CAAC,KAAM,KAAM,KAAM,KAAM,MAEhCxZ,EAAK3J,SAASojB,cAAc,OAChCpjB,SAAS+B,KAAKshB,YAAY1Z,GAE1B,IAE8B,EAF1B2Z,EAASH,EAAKxQ,QAAQ,IAEVwQ,EAAK3R,WAAS,IAA9B,IAAK,EAAL,qBAAgC,KAAvB0H,EAAG,QAGR,GAFAvP,EAAG4Z,UAAUC,IAAI,KAAD,OAAMtK,EAAG,UAEmB,SAAxClf,OAAOyH,iBAAiBkI,GAAI8Z,QAAoB,CAChDH,EAASpK,EACT,QAEP,8BAGD,OADAlZ,SAAS+B,KAAKuN,YAAY3F,GACnB2Z,I,u6CCnBiC,IAEtCI,EAAYzI,a,kOAAAA,U,MAAAA,OAChB,WAAYvU,GAAO,MAOf,O,4FAPe,UACjByQ,cAAMzQ,IAED4E,MAAS,CACZqY,SAAU,GACVC,SAAU,YAAF,OAAc5pB,OAAO6pB,SAASvmB,IACtCwmB,aAAc,sCACd,EA4CH,O,EA3CArI,G,EAAAA,gCAGD,WACE7b,KAAKmkB,oBACN,6BAED,WACEnkB,KAAK8b,UAAS,iBAAO,CACnBiI,SAAU,iBAEb,6BAED,SAAgBlG,GAAM,MAChBuG,EAAe,GAEnB,IAAKvG,EACH,OAAOuG,EAGT,IAAMC,EAAOxG,EAAKU,WAAW3R,MAAK,YAAK,SAAFlP,IAAetD,OAAO6pB,SAASvmB,MACpE,OAAK2mB,GAILD,EAAuB,SAAyB,QAAxB,EAAGC,EAAKC,QAAQC,gBAAQ,QAAI,GAE7CH,GALEA,IAMV,oBAED,WACE,OACE/H,kBAACmI,IAAc,CACbC,OAAQzkB,KAAK8G,MAAM2d,OACnBP,aAAclkB,KAAK0L,MAAMwY,aACzBQ,QAAS,GACTV,SAAUhkB,KAAK0L,MAAMsY,SACrBD,SAAU/jB,KAAK0L,MAAMqY,SACrBY,gBAAiB3kB,KAAK2kB,iBAEtBtI,kBAACuB,IAAS,CAACE,SAAU,EAAGgB,iBAAiB,U,2BAG9C,EApDezD,CAASgB,IAAMoB,WAuD7BmH,EAAsBxkB,SAASykB,eAAe,YAC9CD,GACFE,IAASC,OAAO1I,kBAACyH,EAAY,CAACW,OAAQG,EAAoBI,QAAQC,SAAWL,I,o6CC5DhC,IAEzCJ,EAAcnJ,a,kOAAAA,U,MAAAA,OAClB,WAAYvU,GAAO,cAsCwC,O,4FAtCxC,UACjByQ,cAAMzQ,IAED4E,MAAS,CACZwZ,UAAWC,WAASC,KAAK7N,EAAKzQ,MAAM6B,UAAU2U,KAAK1O,KAAKyF,cACxD1L,SAAU,GACV0c,UAAW,EACXC,KAAuB,QAAnB,EAAE/N,EAAKzQ,MAAM2d,cAAM,QAAI,EAC3Bc,YAAahO,EAAKzQ,MAAM2d,OAASte,SAASoR,EAAKzQ,MAAM2d,QAAU,EAC/De,MAAO,EACPC,QAA2B,QAApB,EAAElO,EAAKzQ,MAAM4d,eAAO,QAAI,EAC/B/a,OAAQ,IACR+b,UAAU,EACVC,WAAW,EACXC,UAAU,EACVloB,GAAI6Z,EAAKzQ,MAAMpJ,IAAM,EACrBmoB,KAAMtO,EAAKzQ,MAAM+e,OAAQ,EACzBC,UAAW,GACXC,SAAU,GACVC,OAAQ,WAAF,OAAa5rB,OAAO6rB,SAAShkB,MACnCikB,SAAU,GAAF,OAAK9rB,OAAO6rB,SAASC,UAC7BC,aAAoD,QAAxC,EAAE/rB,OAAO6rB,SAASC,SAAS1a,MAAM,KAAK,UAAE,SACpD4a,QAA+C,QAAxC,EAAEhsB,OAAO6rB,SAASC,SAAS1a,MAAM,KAAK,UAAE,SAC/C6a,gBAAiB,GACjBC,KAAM,GACN/H,WAAY,GACZgI,eAAgB,OAChBC,KAAMjP,EAAKzQ,MAAM0f,OAAQ,EACzBC,MAAOlP,EAAKzQ,MAAM2f,QAAS,EAC3BC,SAAS,EACTC,OAAQpP,EAAKzQ,MAAM6f,QAAU,MAG/BpP,EAAKqP,SAAWxmB,SAAS8T,cAAc,YACvCqD,EAAKsP,eAAiB,GACtBtP,EAAKuP,eAAiB,GACtBvP,EAAKwP,eAAiBxP,EAAKwP,eAAevP,KAAK,EAAD,IAC9CD,EAAKyP,aAAezP,EAAKyP,aAAaxP,KAAK,EAAD,IAC1CD,EAAK0P,iBAAmB1P,EAAK0P,iBAAiBzP,KAAK,EAAD,IAAO,EAga1D,O,EA/ZAqE,G,EAAAA,0BAED,SAAY3O,GACV,IAAIga,EAAWlnB,KAAK8G,MAAMod,aAS1B,OADAgD,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,GADAA,EAAWA,EAASjb,QAAQ,WAAYjM,KAAK0L,MAAMsa,SAC/B/Z,QAAQ,OAAQiB,EAAKia,eACrBlb,QAAQ,QAASc,MAAMqa,QAAQla,EAAKA,OAASA,EAAKA,KAAKrQ,OAAS,EAAIqQ,EAAKA,KAAK,GAAGoR,IAAY,KAC7FrS,QAAQ,aAAcjM,KAAK0L,MAAMwa,WACjCja,QAAQ,iBAAkBjM,KAAK0L,MAAMya,eACrCla,QAAQ,YAAajM,KAAK0L,MAAM0a,UAChCna,QAAQ,SAAUjM,KAAK0L,MAAM8a,OAC7Bva,QAAQ,UAAWjM,KAAK0L,MAAM+a,SAEnD,kCAED,SAAqB/U,GAEM,MAArB1R,KAAK0L,MAAMib,SACXjV,GAAS1R,KAAK0L,MAAM6Z,YACpB8B,QAAQC,UAAUtnB,KAAK0L,MAAMoa,UAAUpU,GAAQ,GAAK1R,KAAK0L,MAAMoa,UAAUpU,GAAO6V,gBAErF,4BAED,SAAe7V,EAAO8V,GAOpB,GALa,MAAT9V,IACFA,GAAS1R,KAAK0L,MAAM6Z,YACpBiC,EAAWxnB,KAAK0L,MAAMqa,SAASrU,IAG7B8V,GAAYA,EAAmB,UAAkD,IAA7CrgB,OAAO4D,KAAKyc,EAAmB,UAAG3qB,OAAc,CACtF,IAAM0nB,EAAWiD,EAAmB,SAWtC,OAVEptB,OAAOqtB,IAAMrtB,OAAOqtB,KAAO,QAC3BrtB,OAAOqtB,IAAIC,SAAW,CACpBjD,OAAQF,EAAS7mB,GACjBiqB,cAAepD,EAASqD,SACxBC,OAAQtD,EAASuD,WACjBC,SAAUxD,EAASwD,SACnBC,YAAazD,EAAS0D,YAY4B,GAL5B,CACxB,OACA,UAGmBvnB,QAAQV,KAAK8G,MAAMid,WAIxC/jB,KAAKkoB,iBAAiBV,KACvB,8BAED,SAAiBA,GACf,IACIW,EADEC,EAAchoB,SAAS8T,cAAc,QAG3C,IAAK,IAAI7M,KAAOmgB,EAAU,QACxBW,EAAkE,QAAvD,EAAGC,EAAYlU,cAAc,kBAAD,OAAmB7M,EAAG,cAAK,YAEhE8gB,EAAYE,QAAUb,EAASngB,OAGpC,gBAED,SAAGqK,GACD1R,KAAKsoB,qBAAqB5W,GAC1B1R,KAAKuoB,eAAe7W,KACrB,kBAED,SAAKA,GACH1R,KAAKsoB,qBAAqB5W,GAC1B1R,KAAKuoB,eAAe7W,KACrB,mBAED,WACE1R,KAAKsoB,qBAAqB,KAC3B,wBAED,WAWwC,MAVlCtoB,KAAK0L,MAAMqT,YACZ/e,KAAK0L,MAAMgb,UAEZ1mB,KAAK6mB,eAAe/pB,KAAKkD,KAAK0L,MAAMqT,WACjC/e,KAAK4mB,WACJ5mB,KAAK4mB,SAASlpB,GAAK,GAAH,OAAMsC,KAAK4mB,SAASlpB,IAAE,OAAGsC,KAAK0L,MAAMqT,WACpD/e,KAAK4mB,SAAW,MAIhB5mB,KAAK6mB,eAAehqB,OAAS,EAEC,mBAAX,QAAjB,EAAOzC,OAAOouB,WAAG,aAAVpuB,EAAYqlB,MACrBrlB,OAAOouB,IAAI/I,KAAKzf,KAAK0L,MAAMqT,WAE3BvjB,QAAQI,MAAM,+EAGhBxB,OAAOouB,IAAMpuB,OAAOouB,KAAO,GAC3BpuB,OAAOouB,IAAIC,YAAc,GAAH,OAAMzoB,KAAK0L,MAAMqT,eAG5C,2BAED,SAAcyI,GAAU,UAClBkB,EAAuC,QAAzB,EAAGlB,EAASmB,qBAAa,SACvCjC,GAAU,EACVkC,EAAqD,QAAzC,EAAGpB,EAASqB,qCAA6B,SACrDC,EAA2C,QAAlC,EAAGtB,EAASuB,8BAAsB,SAS/C,OARIL,IACFhC,GAAU,EAENkC,IACFlC,EAAU,IAAI3rB,KAAK+tB,GAAa,IAAI/tB,OAIjC2rB,IACR,6BAED,WACE,OAAO1mB,KAAK0L,MAAMqT,YAAmE,GAAtD/e,KAAK6mB,eAAenmB,QAAQV,KAAK0L,MAAMqT,aACvE,gCAED,WACM/e,KAAKgpB,mBACPhpB,KAAKipB,kBAGuB,IAAnB7uB,OAAO8uB,SAChB9uB,OAAO8uB,QAAQC,OAAOpR,YAEzB,+BAED,WACE/X,KAAKmkB,kBACL/pB,OAAO0V,iBAAiB,SAAU9P,KAAKgnB,gBACxC,6BAED,WAAkB,iBAChBhnB,KAAK8b,UAAS,uBAAO,CACnB4J,UAAU,EACVJ,KAAuB,QAAnB,EAAEvJ,EAAKjV,MAAM2d,cAAM,QAAI,EAC3BkC,OAAQ5K,EAAKjV,MAAM6f,QAAU,SAG3B3mB,KAAK0L,MAAMya,cAA4C,YAA5BnmB,KAAK0L,MAAMya,cAA0D,WAA5BnmB,KAAK0L,MAAMya,cACjFzL,MAAMuG,IAAI,iBACTjgB,MAAK,SAACooB,GACkB,KAAnBA,EAASC,QACXtN,EAAKD,UAAS,iBAAO,CACnByC,WAAY6K,EAASlc,YAGzB,OACK,SAACtR,GACNJ,QAAQ8tB,IAAI1tB,MAIhB,IAAIooB,EAAqC,QAA7B,EAAyB,QAAzB,GAAG,EAAAhkB,KAAK8G,OAAMyiB,mBAAW,aAAtB,iBAA0B,uBAAYvpB,KAAK8G,MAAMkd,SAAQ,kBAAUhkB,KAAK0L,MAAM4Z,KAAI,kBAAUtlB,KAAK0L,MAAM+Z,QAAO,eAAOzlB,KAAK0L,MAAMhO,GAAE,sBAAcsC,KAAK0L,MAAM6a,eAAc,iBAASvmB,KAAK0L,MAAM8a,KAAI,kBAAUxmB,KAAK0L,MAAM+a,OAE3M,OAAtBzmB,KAAK0L,MAAMib,SACX3C,GAAY,WAAJ,OAAehkB,KAAK0L,MAAMib,SAGtCjM,MAAMuG,IAAI+C,GACThjB,MAAK,SAACooB,GAAa,UACdrD,EAAW,GACXD,EAAY,GACZ5Y,EAAO/F,OAAOqiB,OAAOJ,EAASlc,KAAKA,MACnCmZ,EAAkB,GAClBoD,EAAqBvc,EACnByY,EAAYyD,EAASlc,KAAKia,cAAgBiC,EAASlc,KAAKwc,UAE9D3D,EAAS5f,SAAS4V,EAAKrQ,MAAM4Z,OAA8C,QAAxC,EAA6B,QAA7B,GAAG,IAAKxe,OAAM6d,uBAAe,aAA1B,SAA6BzX,EAAK,WAAG,QAAI,GAC/E4Y,EAAU3f,SAAS4V,EAAKrQ,MAAM4Z,OAAS,CAAC,YAAclrB,OAAO6rB,SAAS5H,KAAM,WAAanR,EAAKkM,OAC9FiN,EAAgB,GAAKoD,EACrB,IAAM9C,EAASyC,EAASlc,KAAKyZ,QAAU,KAEvC5K,EAAKD,UAAS,SAAC6N,GAAS,YAAM,CAC5BrE,KAAMnf,SAAS4V,EAAKrQ,MAAM4Z,MAC1B3c,SAAU8gB,EACVjE,MAAO4D,EAASlc,KAAKsY,MACrBE,UAAU,EACVC,UAAWA,EACXG,UAAWA,EACXC,SAAUA,EACVM,gBAAiBA,EACjBK,UAAiB,QAAP,EAAAxZ,EAAK,UAAE,QAAPA,EAAS0c,YAAa7N,EAAK8N,cAAc3c,EAAK,GAAG0c,WAC3D7K,WAAY5iB,KAAKC,MAAsB,GAAhBD,KAAK2tB,UAAiB,GAAG1oB,WAChDulB,aAGEvsB,OAAOsP,aAAetJ,SAAS+C,gBAAgB4mB,eAAiBpE,EAClE5J,EAAKgL,eAAe,KAAM,KAAM,KAAM0C,GAGtC1N,EAAKwM,eAAe,MAEtB,OACK,SAAC3sB,GACNJ,QAAQ8tB,IAAI1tB,QAEf,8BAED,SAAiBsU,GACf,IAAM8Z,EAAW9Z,EAAMrJ,OAAOa,MAC9B1H,KAAK8b,UAAS,iBAAO,CACnBwJ,KAAM,EACN3c,SAAU,GACV0d,gBAAiB,GACjBE,eAAgByD,EAChBzE,YAAa,EACbO,UAAW,GACXC,SAAU,GACVJ,WAAW,MAEb3lB,KAAK+mB,gBAAe,EAAM,EAAGiD,KAC9B,0BAED,WAAgB,WACd,IAAGhqB,KAAK8G,MAAMmjB,QAAd,CAGA,IAAIC,EACJ,IACEA,EAAiBpF,IAASqF,YAAYnqB,MACtC,MAAOpE,GACP,QAEGoE,KAAK0L,MAAMia,YACb3lB,KAAK0L,MAAMga,UACXtrB,OAAOsP,YAActP,OAAOgwB,SAAaF,EAAezhB,cAEvDzI,KAAK+mB,iBAKPvM,EAAE,uBAAuB6P,MAAK,SAAC3Y,EAAOnQ,GACpC,IAAI0D,EAAO1D,EAAQ0G,wBACnB,GAAGhD,EAAKK,IAAM,KACZL,EAAKM,OAAS,KACd+kB,EAAK5e,MAAM2Z,WAAa3T,EAUxB,OATIA,EAAQ4Y,EAAK5e,MAAM2Z,UAErBiF,EAAKC,GAAG7Y,GAER4Y,EAAKE,KAAK9Y,QAEZ4Y,EAAKxO,SAAS,CACZuJ,UAAW3T,UAKpB,4BAED,SAAe+Y,EAAOC,EAAcC,EAAwBC,GAAyB,iBACnF,IAAG5qB,KAAK8G,MAAMmjB,QAAd,CAGAjqB,KAAK8b,UAAS,iBAAO,CACnB4J,UAAU,MAGZ,IAAMJ,EAAOoF,UAAgB1qB,KAAK0L,MAAM4Z,KAClCuF,EAAYF,UAA0B3qB,KAAK0L,MAAM6a,eACnDvC,EAEgE,QAFxD,EAAyB,QAAzB,GAAG,EAAAhkB,KAAK8G,OAAMyiB,mBAAW,aAAtB,SACbqB,GACA5qB,KAAK0L,MAAM2a,gBAAgBrmB,KAAK0L,MAAM2a,gBAAgBxpB,OAAS,WAAG,uBAC1DmD,KAAK8G,MAAMkd,SAAQ,kBAAUsB,EAAO,EAAC,kBAAUtlB,KAAK0L,MAAM+Z,QAAO,eAAOzlB,KAAK0L,MAAMhO,GAAE,sBAAcmtB,EAAS,iBAAS7qB,KAAK0L,MAAM8a,KAAI,kBAAUxmB,KAAK0L,MAAM+a,OAEnJ,GAAZzC,GASsB,OAAtBhkB,KAAK0L,MAAMib,SACX3C,GAAY,WAAJ,OAAehkB,KAAK0L,MAAMib,SAGtCjM,MAAMuG,IAAI+C,GACThjB,MAAK,SAACooB,GAAa,UACdtD,EAAYgF,EAAKpf,MAAMoa,UACvBC,EAAW+E,EAAKpf,MAAMqa,SACtB7Y,EAAO/F,OAAOqiB,OAAOJ,EAASlc,KAAKA,MACnCmZ,EAAkByE,EAAKpf,MAAM2a,gBAEjCP,EAAUR,EAAO,GAAK,CAAC,YAAcwF,EAAKC,YAAY3B,EAASlc,MAAO,WAAaA,EAAKkM,OACxF2M,EAAST,EAAO,GAA0C,QAAxC,EAA6B,QAA7B,GAAG,IAAKxe,OAAM6d,uBAAe,aAA1B,SAA6BzX,EAAK,WAAG,QAAI,GAC9DmZ,EAAgByE,EAAKpf,MAAM2a,gBAAgBxpB,QAAUqQ,EACrD,IAAMyZ,EAASyC,EAASlc,KAAKyZ,QAAU,KAEvCmE,EAAKE,SAAU,EACfF,EAAKhP,UAAS,SAAC6N,GAAS,YAAM,CAC5BrE,KAAMA,EAAO,EACb3c,SAAUmiB,EAAKpf,MAAM/C,SAASgJ,OAAOzE,GACrCsY,MAAO4D,EAASlc,KAAKsY,MACrBE,UAAU,EACVC,UAAWyD,EAASlc,KAAKia,cAAgBiC,EAASlc,KAAKwc,UACvD5D,UAAWA,EACXC,SAAUA,EACVM,gBAAiBA,EACjBK,UAAiB,QAAP,EAAAxZ,EAAK,UAAE,QAAPA,EAAS0c,YAAakB,EAAKjB,cAAc3c,EAAK,GAAG0c,WAC3D7K,WAAY5iB,KAAKC,MAAsB,GAAhBD,KAAK2tB,UAAiB,GAAG1oB,WAChDulB,aAIE8D,GACFK,EAAKL,QAGPK,EAAK9D,kBACL,OACK,SAACprB,GACNJ,QAAQ8tB,IAAI1tB,OA/CZoE,KAAK8b,UAAS,SAAC6N,GAAS,MAAM,CAC5BjE,UAAU,EACVC,WAAW,SA+ChB,+BAED,SAAkBsF,GAAc,WAC1BC,EAAgB,GAChBC,EAAc,EACdxM,EAAgB,EAEpB3e,KAAK0L,MAAM2a,gBAAgB5Y,SAAQ,SAAAuL,GACjCkS,EAAcpuB,KACZuf,yBAAKC,UAAU,yBAAyBjV,IAAK8jB,GAC1CnS,EAAMhO,KAAI,SAACogB,EAAO1Z,GAAU,MACvBrK,EAAMqK,EAAQyZ,GAAkC,QAAvB,EAAIC,EAAM1tB,GAAG0D,kBAAU,QAAI,UACrDiqB,EAAKvE,eAAezf,KACvBgkB,EAAKvE,eAAezf,GAAOgkB,EAAK3f,MAAMqT,WAExC,IAAMjY,EAAQ,CACZiY,UAAWsM,EAAKvE,eAAezf,GAC/BsX,cAAeA,EACfzR,KAAMke,EACN/jB,IAAKA,EACL4iB,QAASoB,EAAKvkB,MAAMmjB,SAGtB,OADAtL,IACOtC,IAAMiP,aAAaL,EAAcnkB,QAG1CqkB,OAEJ,IAAII,EAAmB,GACvB,GAAIvrB,KAAK0L,MAAMga,WAAa1lB,KAAK0L,MAAMia,UAAW,CAChD,IAAK,IAAIjU,EAAQ,EAAGA,EAAQ1R,KAAK8G,MAAM4d,QAAShT,IAAS,CACvD,IAAI5K,EAAQ,CAACO,IAAK,GAAF,OAAKqK,EAAK,YAAI1R,KAAK0L,MAAM4Z,OACzCiG,EAAiBzuB,KAAKuf,IAAMiP,aAAaL,EAAcnkB,IAEzDokB,EAAcpuB,KACZuf,yBAAKC,UAAU,MAAMjV,IAAK8jB,GACvBI,IAKP,OAAOL,IACR,oBAED,WACE,IAAMD,EAAe9F,WAASC,KAAKplB,KAAK8G,MAAM6B,UAE9C,GAAK0T,IAAMmP,eAAeP,GAA1B,CAIA,IAAMC,EAAgBlrB,KAAKyrB,kBAAkBR,GACvCS,GAAuE,IAA1D,CAAC,WAAY,WAAWhrB,QAAQV,KAAK8G,MAAMid,UACxD4H,EAAmC,UAAvB3rB,KAAK8G,MAAMid,UAA+C,OAAvB/jB,KAAK8G,MAAMid,UAA4C,YAAvB/jB,KAAK8G,MAAMid,UAAiD,WAAvB/jB,KAAK8G,MAAMid,SAC/H6H,EAAU,GAAH,OAAMxrB,SAAS6lB,SAAS4F,SAAQ,aAAKzrB,SAAS6lB,SAAShkB,KAAI,KAExE,OACEoa,kBAACA,IAAMY,SAAQ,KACbZ,yBAAKC,UAAU,OACXoP,GACArP,kBAACyP,IAAU,CACT/H,SAAU/jB,KAAK8G,MAAMid,SACrBgI,cAAe/rB,KAAK0L,MAAMqgB,cAC1BzF,KAAMtmB,KAAK0L,MAAM4a,KACjBF,QAASpmB,KAAK0L,MAAM0a,QACpB7H,WAAYve,KAAK0L,MAAM6S,WACvB4H,aAAcnmB,KAAK0L,MAAMya,aACzB6D,SAAUhqB,KAAK0L,MAAMse,SACrB/C,iBAAkBjnB,KAAKinB,mBAE3B5K,yBAAKC,UAAS,wCAAmCoP,EAAa,EAAI,KAC9DR,EACsB,IAAvBlrB,KAAK8G,MAAMmjB,SAAiBjqB,KAAK0L,MAAMia,WAAyB,GAAZgG,GACnDtP,yBAAKC,UAAU,eACbD,wBAAIC,UAAU,aAAa,+BAGP,IAAvBtc,KAAK8G,MAAMmjB,SAAiBjqB,KAAK0L,MAAMia,WAAagG,GACrDtP,yBAAKC,UAAU,yBACbD,wBAAIC,UAAU,aAAa,8BAC3BD,uBAAGgC,KAAMuN,GAAS,uC,2BAO7B,EAvciBvQ,CAASgB,IAAMoB,WA2cpB+G,Q,wDC5cbxM,EAAOtd,QAAU,EAAQ,S,sBCMnB,SAAWA,EAAS8f,EAAGlD,GAAU,aAEvC,SAAS0U,EAAuBhvB,GAAK,OAAOA,GAAkB,iBAANA,GAAkB,YAAaA,EAAIA,EAAI,CAAE,QAAWA,GAE5G,IAAIivB,EAA0BD,EAAsBxR,GAChD0R,EAA+BF,EAAsB1U,GAEzD,SAAS6U,EAAkBtlB,EAAQC,GACjC,IAAK,IAAItG,EAAI,EAAGA,EAAIsG,EAAMjK,OAAQ2D,IAAK,CACrC,IAAIuG,EAAaD,EAAMtG,GACvBuG,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjDC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAIlD,SAAS8U,EAAapV,EAAaa,EAAYC,GAG7C,OAFID,GAAY6kB,EAAkB1lB,EAAYe,UAAWF,GACrDC,GAAa4kB,EAAkB1lB,EAAac,GACzCd,EAGT,SAASkB,IAeP,OAdAA,EAAWR,OAAOS,QAAU,SAAUf,GACpC,IAAK,IAAIrG,EAAI,EAAGA,EAAIP,UAAUpD,OAAQ2D,IAAK,CACzC,IAAIqH,EAAS5H,UAAUO,GAEvB,IAAK,IAAI6G,KAAOQ,EACVV,OAAOK,UAAUM,eAAezG,KAAKwG,EAAQR,KAC/CR,EAAOQ,GAAOQ,EAAOR,IAK3B,OAAOR,IAGO9G,MAAMC,KAAMC,WA+C9B,SAASmsB,EAAsBC,GAC7B,IAAI9U,EAAQvX,KAERc,GAAS,EASb,OARAmrB,EAAoB,QAAEjsB,MAAMssB,IAAIC,EAAKC,gBAAgB,WACnD1rB,GAAS,KAEXjG,YAAW,WACJiG,GACHyrB,EAAKE,qBAAqBlV,KAE3B8U,GACIrsB,KAcT,IAAIusB,EAAO,CACTC,eAAgB,kBAChBE,OAAQ,SAAgBxd,GACtB,GACEA,MAvDQ,IAuDK/S,KAAK2tB,gBACX1pB,SAASykB,eAAe3V,IAEjC,OAAOA,GAETyd,uBAAwB,SAAgCprB,GACtD,IAAIqrB,EAAWrrB,EAAQugB,aAAa,eAEpC,IAAK8K,GAAyB,MAAbA,EAAkB,CACjC,IAAIC,EAAWtrB,EAAQugB,aAAa,QACpC8K,EAAWC,GAAyB,MAAbA,EAAmBA,EAAS1a,OAAS,GAG9D,IACE,OAAO/R,SAAS8T,cAAc0Y,GAAYA,EAAW,KACrD,MAAOE,GACP,OAAO,OAGXC,iCAAkC,SAA0CxrB,GAC1E,IAAKA,EACH,OAAO,EAIT,IAAIyrB,EAAqBf,EAAoB,QAAE1qB,GAASG,IAAI,uBACxDurB,EAAkBhB,EAAoB,QAAE1qB,GAASG,IAAI,oBACrDwrB,EAA0BnnB,WAAWinB,GACrCG,EAAuBpnB,WAAWknB,GAEtC,OAAKC,GAA4BC,GAKjCH,EAAqBA,EAAmBxhB,MAAM,KAAK,GACnDyhB,EAAkBA,EAAgBzhB,MAAM,KAAK,GA1FnB,KA2FlBzF,WAAWinB,GAAsBjnB,WAAWknB,KAN3C,GAQXG,OAAQ,SAAgB7rB,GACtB,OAAOA,EAAQkH,cAEjBgkB,qBAAsB,SAA8BlrB,GAClD0qB,EAAoB,QAAE1qB,GAAS8rB,QAnGd,kBAqGnBC,sBAAuB,WACrB,OAAOC,QAtGU,kBAwGnBC,UAAW,SAAmB/lB,GAC5B,OAAQA,EAAI,IAAMA,GAAKhG,UAEzBgsB,gBAAiB,SAAyBC,EAAeC,EAAQC,GAC/D,IAAK,IAAIpsB,KAAYosB,EACnB,GAAIzmB,OAAOK,UAAUM,eAAezG,KAAKusB,EAAapsB,GAAW,CAC/D,IAAIqsB,EAAgBD,EAAYpsB,GAC5BkG,EAAQimB,EAAOnsB,GACfssB,EAAYpmB,GAAS6kB,EAAKiB,UAAU9lB,GAAS,UA3GnDD,OADUA,EA4G4DC,GA1GjE,GAAKD,EAGP,GAAGrG,SAASC,KAAKoG,GAAK+F,MAAM,eAAe,GAAG6G,cAyG/C,IAAK,IAAI4H,OAAO4R,GAAerrB,KAAKsrB,GAClC,MAAM,IAAI5V,MAAMwV,EAAcze,cAAdye,aAAoDlsB,EAAW,oBAAwBssB,EAAvFJ,wBAAsIG,EAAgB,MA/GhL,IAAgBpmB,GAoHdsmB,eAAgB,SAAwBxsB,GACtC,IAAKnB,SAAS+C,gBAAgB6qB,aAC5B,OAAO,KAIT,GAAmC,mBAAxBzsB,EAAQ0sB,YAA4B,CAC7C,IAAIC,EAAO3sB,EAAQ0sB,cACnB,OAAOC,aAAgBC,WAAaD,EAAO,KAG7C,OAAI3sB,aAAmB4sB,WACd5sB,EAIJA,EAAQS,WAINuqB,EAAKwB,eAAexsB,EAAQS,YAH1B,MAKXosB,gBAAiB,WACf,QAAqC,IAA1BnC,EAAoB,QAC7B,MAAM,IAAIvlB,UAAU,kGAGtB,IAAIzD,EAAUgpB,EAAoB,QAAEprB,GAAG4W,OAAOjM,MAAM,KAAK,GAAGA,MAAM,KAOlE,GAAIvI,EAAQ,GALE,GAKcA,EAAQ,GAJrB,GAFA,IAMsCA,EAAQ,IAJ9C,IAIiEA,EAAQ,IAAmBA,EAAQ,GAHpG,GAGqHA,EAAQ,IAF7H,EAGb,MAAM,IAAIiV,MAAM,iFAItBqU,EAAK6B,kBArHHnC,EAAoB,QAAEprB,GAAGwtB,qBAAuBjC,EAChDH,EAAoB,QAAE/b,MAAMoe,QAAQ/B,EAAKC,gBA9BlC,CACL+B,SAdiB,gBAejBC,aAfiB,gBAgBjBC,OAAQ,SAAgBve,GACtB,GAAI+b,EAAoB,QAAE/b,EAAMrJ,QAAQ6nB,GAAG1uB,MACzC,OAAOkQ,EAAMye,UAAUC,QAAQ7uB,MAAMC,KAAMC,aAsJnD,IAAI4uB,EAAO,QAKPC,EAAqB7C,EAAoB,QAAEprB,GAAGguB,GAc9CE,EAAqB,WACvB,SAASA,EAAMxtB,GACbvB,KAAKgvB,SAAWztB,EAIlB,IAAI0tB,EAASF,EAAMvnB,UAqGnB,OAlGAynB,EAAOC,MAAQ,SAAe3tB,GAC5B,IAAI4tB,EAAcnvB,KAAKgvB,SAEnBztB,IACF4tB,EAAcnvB,KAAKovB,gBAAgB7tB,IAGnBvB,KAAKqvB,mBAAmBF,GAE1BG,sBAIhBtvB,KAAKuvB,eAAeJ,IAGtBF,EAAOO,QAAU,WACfvD,EAAoB,QAAEwD,WAAWzvB,KAAKgvB,SA3C3B,YA4CXhvB,KAAKgvB,SAAW,MAIlBC,EAAOG,gBAAkB,SAAyB7tB,GAChD,IAAIqrB,EAAWL,EAAKI,uBAAuBprB,GACvCqH,GAAS,EAUb,OARIgkB,IACFhkB,EAASxI,SAAS8T,cAAc0Y,IAG7BhkB,IACHA,EAASqjB,EAAoB,QAAE1qB,GAASmuB,QAAQ,UAAwB,IAGnE9mB,GAGTqmB,EAAOI,mBAAqB,SAA4B9tB,GACtD,IAAIouB,EAAa1D,EAAoB,QAAE2D,MA3DzB,kBA6Dd,OADA3D,EAAoB,QAAE1qB,GAAS8rB,QAAQsC,GAChCA,GAGTV,EAAOM,eAAiB,SAAwBhuB,GAC9C,IAAIgW,EAAQvX,KAIZ,GAFAisB,EAAoB,QAAE1qB,GAASsuB,YA9Db,QAgEb5D,EAAoB,QAAE1qB,GAASuuB,SAjElB,QAiElB,CAMA,IAAI9C,EAAqBT,EAAKQ,iCAAiCxrB,GAC/D0qB,EAAoB,QAAE1qB,GAAS+qB,IAAIC,EAAKC,gBAAgB,SAAUtc,GAChE,OAAOqH,EAAMwY,gBAAgBxuB,EAAS2O,MACrCme,qBAAqBrB,QARtBhtB,KAAK+vB,gBAAgBxuB,IAWzB0tB,EAAOc,gBAAkB,SAAyBxuB,GAChD0qB,EAAoB,QAAE1qB,GAASyuB,SAAS3C,QAjFzB,mBAiF+ClM,UAIhE4N,EAAMkB,iBAAmB,SAA0BtC,GACjD,OAAO3tB,KAAKqqB,MAAK,WACf,IAAI6F,EAAWjE,EAAoB,QAAEjsB,MACjCkN,EAAOgjB,EAAShjB,KA9FX,YAgGJA,IACHA,EAAO,IAAI6hB,EAAM/uB,MACjBkwB,EAAShjB,KAlGF,WAkGiBA,IAGX,UAAXygB,GACFzgB,EAAKygB,GAAQ3tB,UAKnB+uB,EAAMoB,eAAiB,SAAwBC,GAC7C,OAAO,SAAUlgB,GACXA,GACFA,EAAMmgB,iBAGRD,EAAclB,MAAMlvB,QAIxB6b,EAAakT,EAAO,KAAM,CAAC,CACzB1nB,IAAK,UACL4Z,IAAK,WACH,MAzHQ,YA6HL8N,EA3GgB,GAoHzB9C,EAAoB,QAAE7rB,UAAUqZ,GA9HL,0BAHJ,yBAiIoDsV,EAAMoB,eAAe,IAAIpB,IAOpG9C,EAAoB,QAAEprB,GAAGguB,GAAQE,EAAMkB,iBACvChE,EAAoB,QAAEprB,GAAGguB,GAAMpoB,YAAcsoB,EAE7C9C,EAAoB,QAAEprB,GAAGguB,GAAMtP,WAAa,WAE1C,OADA0M,EAAoB,QAAEprB,GAAGguB,GAAQC,EAC1BC,EAAMkB,kBASf,IAKIK,EAAuBrE,EAAoB,QAAEprB,GAAS,OAoBtD0vB,EAAsB,WACxB,SAASA,EAAOhvB,GACdvB,KAAKgvB,SAAWztB,EAChBvB,KAAKwwB,0BAA2B,EAIlC,IAAIvB,EAASsB,EAAO/oB,UAkFpB,OA/EAynB,EAAOwB,OAAS,WACd,IAAIC,GAAqB,EACrBC,GAAiB,EACjBxB,EAAclD,EAAoB,QAAEjsB,KAAKgvB,UAAUU,QA5B/B,2BA4B8D,GAEtF,GAAIP,EAAa,CACf,IAAIyB,EAAQ5wB,KAAKgvB,SAAS9a,cA5BX,8BA8Bf,GAAI0c,EAAO,CACT,GAAmB,UAAfA,EAAMtT,KACR,GAAIsT,EAAMC,SAAW7wB,KAAKgvB,SAASrL,UAAUpf,SAvC/B,UAwCZmsB,GAAqB,MAChB,CACL,IAAII,EAAgB3B,EAAYjb,cAlCtB,WAoCN4c,GACF7E,EAAoB,QAAE6E,GAAejB,YA7C3B,UAkDZa,IAEiB,aAAfE,EAAMtT,MAAsC,UAAfsT,EAAMtT,OACrCsT,EAAMC,SAAW7wB,KAAKgvB,SAASrL,UAAUpf,SArD7B,WAwDTvE,KAAKwwB,0BACRvE,EAAoB,QAAE2E,GAAOvD,QAAQ,WAIzCuD,EAAMG,QACNJ,GAAiB,GAIf3wB,KAAKgvB,SAASgC,aAAa,aAAehxB,KAAKgvB,SAASrL,UAAUpf,SAAS,cAC3EosB,GACF3wB,KAAKgvB,SAAS7X,aAAa,gBAAiBnX,KAAKgvB,SAASrL,UAAUpf,SApEpD,WAuEdmsB,GACFzE,EAAoB,QAAEjsB,KAAKgvB,UAAUiC,YAxErB,YA6EtBhC,EAAOO,QAAU,WACfvD,EAAoB,QAAEwD,WAAWzvB,KAAKgvB,SAlFzB,aAmFbhvB,KAAKgvB,SAAW,MAIlBuB,EAAON,iBAAmB,SAA0BtC,EAAQuD,GAC1D,OAAOlxB,KAAKqqB,MAAK,WACf,IAAI6F,EAAWjE,EAAoB,QAAEjsB,MACjCkN,EAAOgjB,EAAShjB,KA1FT,aA4FNA,IACHA,EAAO,IAAIqjB,EAAOvwB,MAClBkwB,EAAShjB,KA9FA,YA8FiBA,IAG5BA,EAAKsjB,yBAA2BU,EAEjB,WAAXvD,GACFzgB,EAAKygB,SAKX9R,EAAa0U,EAAQ,KAAM,CAAC,CAC1BlpB,IAAK,UACL4Z,IAAK,WACH,MA7GU,YAiHPsP,EAzFiB,GAkG1BtE,EAAoB,QAAE7rB,UAAUqZ,GA3GH,2BAPK,2BAkHsD,SAAUvJ,GAChG,IAAIihB,EAASjhB,EAAMrJ,OACfuqB,EAAgBD,EAMpB,GAJKlF,EAAoB,QAAEkF,GAAQrB,SAxHb,SAyHpBqB,EAASlF,EAAoB,QAAEkF,GAAQzB,QAjHrB,QAiH8C,KAG7DyB,GAAUA,EAAOH,aAAa,aAAeG,EAAOxN,UAAUpf,SAAS,YAC1E2L,EAAMmgB,qBACD,CACL,IAAIgB,EAAWF,EAAOjd,cAzHL,8BA2HjB,GAAImd,IAAaA,EAASL,aAAa,aAAeK,EAAS1N,UAAUpf,SAAS,aAGhF,YAFA2L,EAAMmgB,iBAKsB,UAA1Be,EAAcE,SAA0C,UAAnBH,EAAOG,SAC9Cf,EAAON,iBAAiB5uB,KAAK4qB,EAAoB,QAAEkF,GAAS,SAAoC,UAA1BC,EAAcE,aAGvF7X,GAjI6B,mDARE,2BAyI4B,SAAUvJ,GACtE,IAAIihB,EAASlF,EAAoB,QAAE/b,EAAMrJ,QAAQ6oB,QApI7B,QAoIsD,GAC1EzD,EAAoB,QAAEkF,GAAQF,YA5IT,QA4IuC,eAAezuB,KAAK0N,EAAMoN,UAExF2O,EAAoB,QAAE7xB,QAAQqf,GApIJ,2BAoI4B,WAKpD,IAFA,IAAI8X,EAAU,GAAGnkB,MAAM/L,KAAKjB,SAASoxB,iBA7IH,iCA+IzBhxB,EAAI,EAAG2T,EAAMod,EAAQ10B,OAAQ2D,EAAI2T,EAAK3T,IAAK,CAClD,IAAI2wB,EAASI,EAAQ/wB,GACjBowB,EAAQO,EAAOjd,cAhJF,8BAkJb0c,EAAMC,SAAWD,EAAMI,aAAa,WACtCG,EAAOxN,UAAUC,IA1JC,UA4JlBuN,EAAOxN,UAAUxC,OA5JC,UAmKtB,IAAK,IAAIsQ,EAAK,EAAGC,GAFjBH,EAAU,GAAGnkB,MAAM/L,KAAKjB,SAASoxB,iBA5JR,4BA8JO30B,OAAQ40B,EAAKC,EAAMD,IAAM,CACvD,IAAIE,EAAUJ,EAAQE,GAEuB,SAAzCE,EAAQ7P,aAAa,gBACvB6P,EAAQhO,UAAUC,IAvKA,UAyKlB+N,EAAQhO,UAAUxC,OAzKA,cAmLxB8K,EAAoB,QAAEprB,GAAS,OAAI0vB,EAAON,iBAC1ChE,EAAoB,QAAEprB,GAAS,OAAE4F,YAAc8pB,EAE/CtE,EAAoB,QAAEprB,GAAS,OAAE0e,WAAa,WAE5C,OADA0M,EAAoB,QAAEprB,GAAS,OAAIyvB,EAC5BC,EAAON,kBAShB,IAAI2B,EAAS,WAGTC,EAAc,eAEdC,EAAuB7F,EAAoB,QAAEprB,GAAG+wB,GAQhDG,EAAU,CACZC,SAAU,IACVC,UAAU,EACVC,OAAO,EACPC,MAAO,QACPC,MAAM,EACNC,OAAO,GAELC,EAAc,CAChBN,SAAU,mBACVC,SAAU,UACVC,MAAO,mBACPC,MAAO,mBACPC,KAAM,UACNC,MAAO,WAmCLE,EAAc,CAChBC,MAAO,QACPC,IAAK,OAQHC,EAAwB,WAC1B,SAASA,EAASnxB,EAASosB,GACzB3tB,KAAK2yB,OAAS,KACd3yB,KAAK4yB,UAAY,KACjB5yB,KAAK6yB,eAAiB,KACtB7yB,KAAK8yB,WAAY,EACjB9yB,KAAK+yB,YAAa,EAClB/yB,KAAKgzB,aAAe,KACpBhzB,KAAKizB,YAAc,EACnBjzB,KAAKkzB,YAAc,EACnBlzB,KAAKmzB,QAAUnzB,KAAKozB,WAAWzF,GAC/B3tB,KAAKgvB,SAAWztB,EAChBvB,KAAKqzB,mBAAqBrzB,KAAKgvB,SAAS9a,cAzBlB,wBA0BtBlU,KAAKszB,gBAAkB,iBAAkBlzB,SAAS+C,iBAAmB9C,UAAUkzB,eAAiB,EAChGvzB,KAAKwzB,cAAgBjG,QAAQnzB,OAAOq5B,cAAgBr5B,OAAOs5B,gBAE3D1zB,KAAK2zB,qBAIP,IAAI1E,EAASyD,EAASlrB,UAodtB,OAjdAynB,EAAO2E,KAAO,WACP5zB,KAAK+yB,YACR/yB,KAAK6zB,OApEU,SAwEnB5E,EAAO6E,gBAAkB,WACvB,IAAI5D,EAAWjE,EAAoB,QAAEjsB,KAAKgvB,WAGrC5uB,SAAS2zB,QAAU7D,EAASxB,GAAG,aAA8C,WAA/BwB,EAASxuB,IAAI,eAC9D1B,KAAK4zB,QAIT3E,EAAO+E,KAAO,WACPh0B,KAAK+yB,YACR/yB,KAAK6zB,OAlFU,SAsFnB5E,EAAOkD,MAAQ,SAAejiB,GACvBA,IACHlQ,KAAK8yB,WAAY,GAGf9yB,KAAKgvB,SAAS9a,cA/DG,8CAgEnBqY,EAAKE,qBAAqBzsB,KAAKgvB,UAC/BhvB,KAAKi0B,OAAM,IAGbC,cAAcl0B,KAAK4yB,WACnB5yB,KAAK4yB,UAAY,MAGnB3D,EAAOgF,MAAQ,SAAe/jB,GACvBA,IACHlQ,KAAK8yB,WAAY,GAGf9yB,KAAK4yB,YACPsB,cAAcl0B,KAAK4yB,WACnB5yB,KAAK4yB,UAAY,MAGf5yB,KAAKmzB,QAAQnB,WAAahyB,KAAK8yB,YACjC9yB,KAAKm0B,kBAELn0B,KAAK4yB,UAAYwB,aAAah0B,SAASi0B,gBAAkBr0B,KAAK8zB,gBAAkB9zB,KAAK4zB,MAAMpc,KAAKxX,MAAOA,KAAKmzB,QAAQnB,YAIxH/C,EAAO7L,GAAK,SAAY1R,GACtB,IAAI6F,EAAQvX,KAEZA,KAAK6yB,eAAiB7yB,KAAKgvB,SAAS9a,cA/Fb,yBAiGvB,IAAIogB,EAAct0B,KAAKu0B,cAAcv0B,KAAK6yB,gBAE1C,KAAInhB,EAAQ1R,KAAK2yB,OAAO91B,OAAS,GAAK6U,EAAQ,GAI9C,GAAI1R,KAAK+yB,WACP9G,EAAoB,QAAEjsB,KAAKgvB,UAAU1C,IA7H1B,oBA6H0C,WACnD,OAAO/U,EAAM6L,GAAG1R,UAFpB,CAOA,GAAI4iB,IAAgB5iB,EAGlB,OAFA1R,KAAKmyB,aACLnyB,KAAKi0B,QAIP,IAAIpJ,EAAYnZ,EAAQ4iB,EA9IP,OACA,OA+IjBt0B,KAAK6zB,OAAOhJ,EAAW7qB,KAAK2yB,OAAOjhB,MAGrCud,EAAOO,QAAU,WACfvD,EAAoB,QAAEjsB,KAAKgvB,UAAUpV,IAAIiY,GACzC5F,EAAoB,QAAEwD,WAAWzvB,KAAKgvB,SAhLzB,eAiLbhvB,KAAK2yB,OAAS,KACd3yB,KAAKmzB,QAAU,KACfnzB,KAAKgvB,SAAW,KAChBhvB,KAAK4yB,UAAY,KACjB5yB,KAAK8yB,UAAY,KACjB9yB,KAAK+yB,WAAa,KAClB/yB,KAAK6yB,eAAiB,KACtB7yB,KAAKqzB,mBAAqB,MAI5BpE,EAAOmE,WAAa,SAAoBzF,GAGtC,OAFAA,EAAShmB,EAAS,GAAIoqB,EAASpE,GAC/BpB,EAAKkB,gBAAgBmE,EAAQjE,EAAQ2E,GAC9B3E,GAGTsB,EAAOuF,aAAe,WACpB,IAAIC,EAAYt4B,KAAKu4B,IAAI10B,KAAKkzB,aAE9B,KAAIuB,GA3Lc,IA2LlB,CAIA,IAAI5J,EAAY4J,EAAYz0B,KAAKkzB,YACjClzB,KAAKkzB,YAAc,EAEfrI,EAAY,GACd7qB,KAAKg0B,OAIHnJ,EAAY,GACd7qB,KAAK4zB,SAIT3E,EAAO0E,mBAAqB,WAC1B,IAAI5X,EAAS/b,KAETA,KAAKmzB,QAAQlB,UACfhG,EAAoB,QAAEjsB,KAAKgvB,UAAUvV,GAzLvB,uBAyLyC,SAAUvJ,GAC/D,OAAO6L,EAAO4Y,SAASzkB,MAIA,UAAvBlQ,KAAKmzB,QAAQhB,OACflG,EAAoB,QAAEjsB,KAAKgvB,UAAUvV,GA9LpB,0BA8LyC,SAAUvJ,GAClE,OAAO6L,EAAOoW,MAAMjiB,MACnBuJ,GA/Lc,0BA+LO,SAAUvJ,GAChC,OAAO6L,EAAOkY,MAAM/jB,MAIpBlQ,KAAKmzB,QAAQd,OACfryB,KAAK40B,2BAIT3F,EAAO2F,wBAA0B,WAC/B,IAAItK,EAAStqB,KAEb,GAAKA,KAAKszB,gBAAV,CAIA,IAAItvB,EAAQ,SAAekM,GACrBoa,EAAOkJ,eAAiBjB,EAAYriB,EAAM2kB,cAAcC,YAAY7lB,eACtEqb,EAAO2I,YAAc/iB,EAAM2kB,cAAcE,QAC/BzK,EAAOkJ,gBACjBlJ,EAAO2I,YAAc/iB,EAAM2kB,cAAcG,QAAQ,GAAGD,UAapD9wB,EAAM,SAAaiM,GACjBoa,EAAOkJ,eAAiBjB,EAAYriB,EAAM2kB,cAAcC,YAAY7lB,iBACtEqb,EAAO4I,YAAchjB,EAAM2kB,cAAcE,QAAUzK,EAAO2I,aAG5D3I,EAAOkK,eAEsB,UAAzBlK,EAAO6I,QAAQhB,QAQjB7H,EAAO6H,QAEH7H,EAAO0I,cACT/3B,aAAaqvB,EAAO0I,cAGtB1I,EAAO0I,aAAen4B,YAAW,SAAUqV,GACzC,OAAOoa,EAAO2J,MAAM/jB,KAlRD,IAmROoa,EAAO6I,QAAQnB,YAI/C/F,EAAoB,QAAEjsB,KAAKgvB,SAASwC,iBAxOhB,uBAwOqD/X,GAtPtD,yBAsP2E,SAAUzc,GACtG,OAAOA,EAAEqzB,oBAGPrwB,KAAKwzB,eACPvH,EAAoB,QAAEjsB,KAAKgvB,UAAUvV,GA7PnB,2BA6PyC,SAAUvJ,GACnE,OAAOlM,EAAMkM,MAEf+b,EAAoB,QAAEjsB,KAAKgvB,UAAUvV,GA/PrB,yBA+PyC,SAAUvJ,GACjE,OAAOjM,EAAIiM,MAGblQ,KAAKgvB,SAASrL,UAAUC,IAxPC,mBA0PzBqI,EAAoB,QAAEjsB,KAAKgvB,UAAUvV,GAzQpB,0BAyQyC,SAAUvJ,GAClE,OAAOlM,EAAMkM,MAEf+b,EAAoB,QAAEjsB,KAAKgvB,UAAUvV,GA3QrB,yBA2QyC,SAAUvJ,GACjE,OAtDO,SAAcA,GAEnBA,EAAM2kB,cAAcG,SAAW9kB,EAAM2kB,cAAcG,QAAQn4B,OAAS,EACtEytB,EAAO4I,YAAc,EAErB5I,EAAO4I,YAAchjB,EAAM2kB,cAAcG,QAAQ,GAAGD,QAAUzK,EAAO2I,YAiD9DgC,CAAK/kB,MAEd+b,EAAoB,QAAEjsB,KAAKgvB,UAAUvV,GA7QtB,wBA6QyC,SAAUvJ,GAChE,OAAOjM,EAAIiM,SAKjB+e,EAAO0F,SAAW,SAAkBzkB,GAClC,IAAI,kBAAkB1N,KAAK0N,EAAMrJ,OAAOyqB,SAIxC,OAAQphB,EAAMglB,OACZ,KA3TmB,GA4TjBhlB,EAAMmgB,iBACNrwB,KAAKg0B,OACL,MAEF,KA9ToB,GA+TlB9jB,EAAMmgB,iBACNrwB,KAAK4zB,SAKX3E,EAAOsF,cAAgB,SAAuBhzB,GAE5C,OADAvB,KAAK2yB,OAASpxB,GAAWA,EAAQS,WAAa,GAAGoL,MAAM/L,KAAKE,EAAQS,WAAWwvB,iBAtR/D,mBAsRkG,GAC3GxxB,KAAK2yB,OAAOjyB,QAAQa,IAG7B0tB,EAAOkG,oBAAsB,SAA6BtK,EAAWiG,GACnE,IAAIsE,EAtTa,SAsTKvK,EAClBwK,EAtTa,SAsTKxK,EAElByJ,EAAct0B,KAAKu0B,cAAczD,GAEjCwE,EAAgBt1B,KAAK2yB,OAAO91B,OAAS,EAGzC,IAFoBw4B,GAAmC,IAAhBf,GAAqBc,GAAmBd,IAAgBgB,KAEzEt1B,KAAKmzB,QAAQf,KACjC,OAAOtB,EAGT,IACIyE,GAAajB,GAlUA,SAiULzJ,GAAgC,EAAI,IACR7qB,KAAK2yB,OAAO91B,OACpD,OAAsB,IAAf04B,EAAmBv1B,KAAK2yB,OAAO3yB,KAAK2yB,OAAO91B,OAAS,GAAKmD,KAAK2yB,OAAO4C,IAG9EtG,EAAOuG,mBAAqB,SAA4BC,EAAeC,GACrE,IAAIC,EAAc31B,KAAKu0B,cAAckB,GAEjCG,EAAY51B,KAAKu0B,cAAcv0B,KAAKgvB,SAAS9a,cAhT1B,0BAkTnB2hB,EAAa5J,EAAoB,QAAE2D,MAxUzB,oBAwU4C,CACxD6F,cAAeA,EACf5K,UAAW6K,EACXxS,KAAM0S,EACNxS,GAAIuS,IAGN,OADA1J,EAAoB,QAAEjsB,KAAKgvB,UAAU3B,QAAQwI,GACtCA,GAGT5G,EAAO6G,2BAA6B,SAAoCv0B,GACtE,GAAIvB,KAAKqzB,mBAAoB,CAC3B,IAAI0C,EAAa,GAAG3oB,MAAM/L,KAAKrB,KAAKqzB,mBAAmB7B,iBA/TrC,YAgUlBvF,EAAoB,QAAE8J,GAAYlG,YAvUd,UAyUpB,IAAImG,EAAgBh2B,KAAKqzB,mBAAmB1qB,SAAS3I,KAAKu0B,cAAchzB,IAEpEy0B,GACF/J,EAAoB,QAAE+J,GAAeC,SA5UnB,YAiVxBhH,EAAOkF,gBAAkB,WACvB,IAAI5yB,EAAUvB,KAAK6yB,gBAAkB7yB,KAAKgvB,SAAS9a,cA1U5B,yBA4UvB,GAAK3S,EAAL,CAIA,IAAI20B,EAAkB/vB,SAAS5E,EAAQugB,aAAa,iBAAkB,IAElEoU,GACFl2B,KAAKmzB,QAAQgD,gBAAkBn2B,KAAKmzB,QAAQgD,iBAAmBn2B,KAAKmzB,QAAQnB,SAC5EhyB,KAAKmzB,QAAQnB,SAAWkE,GAExBl2B,KAAKmzB,QAAQnB,SAAWhyB,KAAKmzB,QAAQgD,iBAAmBn2B,KAAKmzB,QAAQnB,WAIzE/C,EAAO4E,OAAS,SAAgBhJ,EAAWtpB,GACzC,IAWI60B,EACAC,EACAX,EAbA5K,EAAS9qB,KAET8wB,EAAgB9wB,KAAKgvB,SAAS9a,cA7VX,yBA+VnBoiB,EAAqBt2B,KAAKu0B,cAAczD,GAExCyF,EAAch1B,GAAWuvB,GAAiB9wB,KAAKm1B,oBAAoBtK,EAAWiG,GAE9E0F,EAAmBx2B,KAAKu0B,cAAcgC,GAEtCE,EAAYlJ,QAAQvtB,KAAK4yB,WAe7B,GA9YiB,SAoYb/H,GACFuL,EAhXgB,qBAiXhBC,EAhXgB,qBAiXhBX,EArYe,SAuYfU,EArXiB,sBAsXjBC,EAnXgB,qBAoXhBX,EAxYgB,SA2Yda,GAAetK,EAAoB,QAAEsK,GAAazG,SA5XhC,UA6XpB9vB,KAAK+yB,YAAa,OAMpB,IAFiB/yB,KAAKw1B,mBAAmBe,EAAab,GAEvCpG,sBAIVwB,GAAkByF,EAAvB,CAKAv2B,KAAK+yB,YAAa,EAEd0D,GACFz2B,KAAKmyB,QAGPnyB,KAAK81B,2BAA2BS,GAEhCv2B,KAAK6yB,eAAiB0D,EACtB,IAAIG,EAAYzK,EAAoB,QAAE2D,MAlazB,mBAka2C,CACtD6F,cAAec,EACf1L,UAAW6K,EACXxS,KAAMoT,EACNlT,GAAIoT,IAGN,GAAIvK,EAAoB,QAAEjsB,KAAKgvB,UAAUc,SA3ZtB,SA2ZkD,CACnE7D,EAAoB,QAAEsK,GAAaN,SAASI,GAC5C9J,EAAKa,OAAOmJ,GACZtK,EAAoB,QAAE6E,GAAemF,SAASG,GAC9CnK,EAAoB,QAAEsK,GAAaN,SAASG,GAC5C,IAAIpJ,EAAqBT,EAAKQ,iCAAiC+D,GAC/D7E,EAAoB,QAAE6E,GAAexE,IAAIC,EAAKC,gBAAgB,WAC5DP,EAAoB,QAAEsK,GAAa1G,YAAYuG,EAAuB,IAAMC,GAAgBJ,SAna1E,UAoalBhK,EAAoB,QAAE6E,GAAejB,YAAY8G,UAA4BN,EAAiB,IAAMD,GACpGtL,EAAOiI,YAAa,EACpBl4B,YAAW,WACT,OAAOoxB,EAAoB,QAAEnB,EAAOkE,UAAU3B,QAAQqJ,KACrD,MACFrI,qBAAqBrB,QAExBf,EAAoB,QAAE6E,GAAejB,YA3ajB,UA4apB5D,EAAoB,QAAEsK,GAAaN,SA5af,UA6apBj2B,KAAK+yB,YAAa,EAClB9G,EAAoB,QAAEjsB,KAAKgvB,UAAU3B,QAAQqJ,GAG3CD,GACFz2B,KAAKi0B,UAKTvB,EAASzC,iBAAmB,SAA0BtC,GACpD,OAAO3tB,KAAKqqB,MAAK,WACf,IAAInd,EAAO+e,EAAoB,QAAEjsB,MAAMkN,KAte5B,eAwePimB,EAAUxrB,EAAS,GAAIoqB,EAAS9F,EAAoB,QAAEjsB,MAAMkN,QAE1C,iBAAXygB,IACTwF,EAAUxrB,EAAS,GAAIwrB,EAASxF,IAGlC,IAAIiJ,EAA2B,iBAAXjJ,EAAsBA,EAASwF,EAAQjB,MAO3D,GALKhlB,IACHA,EAAO,IAAIwlB,EAAS1yB,KAAMmzB,GAC1BlH,EAAoB,QAAEjsB,MAAMkN,KAlfnB,cAkfoCA,IAGzB,iBAAXygB,EACTzgB,EAAKkW,GAAGuK,QACH,GAAsB,iBAAXiJ,EAAqB,CACrC,QAA4B,IAAjB1pB,EAAK0pB,GACd,MAAM,IAAIlwB,UAAU,oBAAuBkwB,EAAS,KAGtD1pB,EAAK0pB,UACIzD,EAAQnB,UAAYmB,EAAQ0D,OACrC3pB,EAAKilB,QACLjlB,EAAK+mB,aAKXvB,EAASoE,qBAAuB,SAA8B5mB,GAC5D,IAAI0c,EAAWL,EAAKI,uBAAuB3sB,MAE3C,GAAK4sB,EAAL,CAIA,IAAI/lB,EAASolB,EAAoB,QAAEW,GAAU,GAE7C,GAAK/lB,GAAWolB,EAAoB,QAAEplB,GAAQipB,SAjexB,YAietB,CAIA,IAAInC,EAAShmB,EAAS,GAAIskB,EAAoB,QAAEplB,GAAQqG,OAAQ+e,EAAoB,QAAEjsB,MAAMkN,QAExF6pB,EAAa/2B,KAAK8hB,aAAa,iBAE/BiV,IACFpJ,EAAOqE,UAAW,GAGpBU,EAASzC,iBAAiB5uB,KAAK4qB,EAAoB,QAAEplB,GAAS8mB,GAE1DoJ,GACF9K,EAAoB,QAAEplB,GAAQqG,KA5hBnB,eA4hBoCkW,GAAG2T,GAGpD7mB,EAAMmgB,oBAGRxU,EAAa6W,EAAU,KAAM,CAAC,CAC5BrrB,IAAK,UACL4Z,IAAK,WACH,MAtiBU,UAwiBX,CACD5Z,IAAK,UACL4Z,IAAK,WACH,OAAO8Q,MAIJW,EAxemB,GAif5BzG,EAAoB,QAAE7rB,UAAUqZ,GA5gBH,6BAeH,gCA6fsDiZ,EAASoE,sBACzF7K,EAAoB,QAAE7xB,QAAQqf,GA9gBF,6BA8gB4B,WAGtD,IAFA,IAAIud,EAAY,GAAG5pB,MAAM/L,KAAKjB,SAASoxB,iBA9fhB,2BAggBdhxB,EAAI,EAAG2T,EAAM6iB,EAAUn6B,OAAQ2D,EAAI2T,EAAK3T,IAAK,CACpD,IAAIy2B,EAAYhL,EAAoB,QAAE+K,EAAUx2B,IAEhDkyB,EAASzC,iBAAiB5uB,KAAK41B,EAAWA,EAAU/pB,YASxD+e,EAAoB,QAAEprB,GAAG+wB,GAAUc,EAASzC,iBAC5ChE,EAAoB,QAAEprB,GAAG+wB,GAAQnrB,YAAcisB,EAE/CzG,EAAoB,QAAEprB,GAAG+wB,GAAQrS,WAAa,WAE5C,OADA0M,EAAoB,QAAEprB,GAAG+wB,GAAUE,EAC5BY,EAASzC,kBASlB,IAAIiH,EAAS,WAKTC,EAAuBlL,EAAoB,QAAEprB,GAAGq2B,GAChDE,EAAY,CACd3G,QAAQ,EACR7nB,OAAQ,IAENyuB,EAAgB,CAClB5G,OAAQ,UACR7nB,OAAQ,oBAqBN0uB,EAAwB,WAC1B,SAASA,EAAS/1B,EAASosB,GACzB3tB,KAAKu3B,kBAAmB,EACxBv3B,KAAKgvB,SAAWztB,EAChBvB,KAAKmzB,QAAUnzB,KAAKozB,WAAWzF,GAC/B3tB,KAAKw3B,cAAgB,GAAGpqB,MAAM/L,KAAKjB,SAASoxB,iBAAiB,mCAAwCjwB,EAAQ7D,GAAhD,6CAA8G6D,EAAQ7D,GAAK,OAGxL,IAFA,IAAI+5B,EAAa,GAAGrqB,MAAM/L,KAAKjB,SAASoxB,iBAbf,6BAehBhxB,EAAI,EAAG2T,EAAMsjB,EAAW56B,OAAQ2D,EAAI2T,EAAK3T,IAAK,CACrD,IAAIk3B,EAAOD,EAAWj3B,GAClBosB,EAAWL,EAAKI,uBAAuB+K,GACvCC,EAAgB,GAAGvqB,MAAM/L,KAAKjB,SAASoxB,iBAAiB5E,IAAWxhB,QAAO,SAAUwsB,GACtF,OAAOA,IAAcr2B,KAGN,OAAbqrB,GAAqB+K,EAAc96B,OAAS,IAC9CmD,KAAK63B,UAAYjL,EAEjB5sB,KAAKw3B,cAAc16B,KAAK46B,IAI5B13B,KAAK83B,QAAU93B,KAAKmzB,QAAQvqB,OAAS5I,KAAK+3B,aAAe,KAEpD/3B,KAAKmzB,QAAQvqB,QAChB5I,KAAKg4B,0BAA0Bh4B,KAAKgvB,SAAUhvB,KAAKw3B,eAGjDx3B,KAAKmzB,QAAQ1C,QACfzwB,KAAKywB,SAKT,IAAIxB,EAASqI,EAAS9vB,UA4OtB,OAzOAynB,EAAOwB,OAAS,WACVxE,EAAoB,QAAEjsB,KAAKgvB,UAAUc,SApDrB,QAqDlB9vB,KAAKgW,OAELhW,KAAKi4B,QAIThJ,EAAOgJ,KAAO,WACZ,IAMIC,EACAC,EAPA5gB,EAAQvX,KAEZ,KAAIA,KAAKu3B,kBAAoBtL,EAAoB,QAAEjsB,KAAKgvB,UAAUc,SA9D9C,UAqEhB9vB,KAAK83B,SASgB,KARvBI,EAAU,GAAG9qB,MAAM/L,KAAKrB,KAAK83B,QAAQtG,iBAhEpB,uBAgEwDpmB,QAAO,SAAUssB,GACxF,MAAoC,iBAAzBngB,EAAM4b,QAAQvqB,OAChB8uB,EAAK5V,aAAa,iBAAmBvK,EAAM4b,QAAQvqB,OAGrD8uB,EAAK/T,UAAUpf,SA1EJ,gBA6ER1H,SACVq7B,EAAU,MAIVA,IACFC,EAAclM,EAAoB,QAAEiM,GAASE,IAAIp4B,KAAK63B,WAAW3qB,KArGtD,iBAuGQirB,EAAYZ,mBAHjC,CAQA,IAAIc,EAAapM,EAAoB,QAAE2D,MAhG1B,oBAmGb,GAFA3D,EAAoB,QAAEjsB,KAAKgvB,UAAU3B,QAAQgL,IAEzCA,EAAW/I,qBAAf,CAII4I,IACFZ,EAASrH,iBAAiB5uB,KAAK4qB,EAAoB,QAAEiM,GAASE,IAAIp4B,KAAK63B,WAAY,QAE9EM,GACHlM,EAAoB,QAAEiM,GAAShrB,KAvHtB,cAuHuC,OAIpD,IAAIorB,EAAYt4B,KAAKu4B,gBAErBtM,EAAoB,QAAEjsB,KAAKgvB,UAAUa,YA3Gf,YA2GgDoG,SA1G9C,cA2GxBj2B,KAAKgvB,SAAS5f,MAAMkpB,GAAa,EAE7Bt4B,KAAKw3B,cAAc36B,QACrBovB,EAAoB,QAAEjsB,KAAKw3B,eAAe3H,YA7GrB,aA6GuD2I,KAAK,iBAAiB,GAGpGx4B,KAAKy4B,kBAAiB,GAEtB,IAUIC,EAAa,UADUJ,EAAU,GAAGrpB,cAAgBqpB,EAAUlrB,MAAM,IAEpE4f,EAAqBT,EAAKQ,iCAAiC/sB,KAAKgvB,UACpE/C,EAAoB,QAAEjsB,KAAKgvB,UAAU1C,IAAIC,EAAKC,gBAZ/B,WACbP,EAAoB,QAAE1U,EAAMyX,UAAUa,YApHhB,cAoHmDoG,SAAS0C,iBAClFphB,EAAMyX,SAAS5f,MAAMkpB,GAAa,GAElC/gB,EAAMkhB,kBAAiB,GAEvBxM,EAAoB,QAAE1U,EAAMyX,UAAU3B,QA/H1B,wBAqI0DgB,qBAAqBrB,GAC7FhtB,KAAKgvB,SAAS5f,MAAMkpB,GAAat4B,KAAKgvB,SAAS0J,GAAc,QAG/DzJ,EAAOjZ,KAAO,WACZ,IAAI+F,EAAS/b,KAEb,IAAIA,KAAKu3B,kBAAqBtL,EAAoB,QAAEjsB,KAAKgvB,UAAUc,SAxI/C,QAwIpB,CAIA,IAAIuI,EAAapM,EAAoB,QAAE2D,MA/I1B,oBAkJb,GAFA3D,EAAoB,QAAEjsB,KAAKgvB,UAAU3B,QAAQgL,IAEzCA,EAAW/I,qBAAf,CAIA,IAAIgJ,EAAYt4B,KAAKu4B,gBAErBv4B,KAAKgvB,SAAS5f,MAAMkpB,GAAat4B,KAAKgvB,SAAS/mB,wBAAwBqwB,GAAa,KACpF/L,EAAKa,OAAOptB,KAAKgvB,UACjB/C,EAAoB,QAAEjsB,KAAKgvB,UAAUiH,SArJb,cAqJ6CpG,YAAY8I,iBACjF,IAAIC,EAAqB54B,KAAKw3B,cAAc36B,OAE5C,GAAI+7B,EAAqB,EACvB,IAAK,IAAIp4B,EAAI,EAAGA,EAAIo4B,EAAoBp4B,IAAK,CAC3C,IAAI6sB,EAAUrtB,KAAKw3B,cAAch3B,GAC7BosB,EAAWL,EAAKI,uBAAuBU,GAE1B,OAAbT,IACUX,EAAoB,QAAE,GAAG7e,MAAM/L,KAAKjB,SAASoxB,iBAAiB5E,KAE/DkD,SAlKG,SAmKZ7D,EAAoB,QAAEoB,GAAS4I,SAhKhB,aAgK+CuC,KAAK,iBAAiB,IAM5Fx4B,KAAKy4B,kBAAiB,GAQtBz4B,KAAKgvB,SAAS5f,MAAMkpB,GAAa,GACjC,IAAItL,EAAqBT,EAAKQ,iCAAiC/sB,KAAKgvB,UACpE/C,EAAoB,QAAEjsB,KAAKgvB,UAAU1C,IAAIC,EAAKC,gBAR/B,WACbzQ,EAAO0c,kBAAiB,GAExBxM,EAAoB,QAAElQ,EAAOiT,UAAUa,YA5KjB,cA4KoDoG,SA7KtD,YA6KoF5I,QAhL3F,yBAqLyDgB,qBAAqBrB,MAG/FiC,EAAOwJ,iBAAmB,SAA0BI,GAClD74B,KAAKu3B,iBAAmBsB,GAG1B5J,EAAOO,QAAU,WACfvD,EAAoB,QAAEwD,WAAWzvB,KAAKgvB,SA5MzB,eA6MbhvB,KAAKmzB,QAAU,KACfnzB,KAAK83B,QAAU,KACf93B,KAAKgvB,SAAW,KAChBhvB,KAAKw3B,cAAgB,KACrBx3B,KAAKu3B,iBAAmB,MAI1BtI,EAAOmE,WAAa,SAAoBzF,GAKtC,OAJAA,EAAShmB,EAAS,GAAIyvB,EAAWzJ,IAC1B8C,OAASlD,QAAQI,EAAO8C,QAE/BlE,EAAKkB,gBAAgByJ,EAAQvJ,EAAQ0J,GAC9B1J,GAGTsB,EAAOsJ,cAAgB,WAErB,OADetM,EAAoB,QAAEjsB,KAAKgvB,UAAUc,SAzMlC,iBACC,UA4MrBb,EAAO8I,WAAa,WAClB,IAEInvB,EAFA0hB,EAAStqB,KAITusB,EAAKiB,UAAUxtB,KAAKmzB,QAAQvqB,SAC9BA,EAAS5I,KAAKmzB,QAAQvqB,YAEoB,IAA/B5I,KAAKmzB,QAAQvqB,OAAO6O,SAC7B7O,EAAS5I,KAAKmzB,QAAQvqB,OAAO,KAG/BA,EAASxI,SAAS8T,cAAclU,KAAKmzB,QAAQvqB,QAG/C,IAAIgkB,EAAW,yCAA8C5sB,KAAKmzB,QAAQvqB,OAAS,KAC/ED,EAAW,GAAGyE,MAAM/L,KAAKuH,EAAO4oB,iBAAiB5E,IAIrD,OAHAX,EAAoB,QAAEtjB,GAAU0hB,MAAK,SAAU7pB,EAAGe,GAChD+oB,EAAO0N,0BAA0BV,EAASwB,sBAAsBv3B,GAAU,CAACA,OAEtEqH,GAGTqmB,EAAO+I,0BAA4B,SAAmCz2B,EAASw3B,GAC7E,IAAIC,EAAS/M,EAAoB,QAAE1qB,GAASuuB,SAzOxB,QA2OhBiJ,EAAal8B,QACfovB,EAAoB,QAAE8M,GAAc9H,YAzOf,aAyOkD+H,GAAQR,KAAK,gBAAiBQ,IAKzG1B,EAASwB,sBAAwB,SAA+Bv3B,GAC9D,IAAIqrB,EAAWL,EAAKI,uBAAuBprB,GAC3C,OAAOqrB,EAAWxsB,SAAS8T,cAAc0Y,GAAY,MAGvD0K,EAASrH,iBAAmB,SAA0BtC,GACpD,OAAO3tB,KAAKqqB,MAAK,WACf,IAAI6F,EAAWjE,EAAoB,QAAEjsB,MACjCkN,EAAOgjB,EAAShjB,KA1QT,eA4QPimB,EAAUxrB,EAAS,GAAIyvB,EAAWlH,EAAShjB,OAA0B,iBAAXygB,GAAuBA,EAASA,EAAS,IAWvG,IATKzgB,GAAQimB,EAAQ1C,QAA4B,iBAAX9C,GAAuB,YAAYnrB,KAAKmrB,KAC5EwF,EAAQ1C,QAAS,GAGdvjB,IACHA,EAAO,IAAIoqB,EAASt3B,KAAMmzB,GAC1BjD,EAAShjB,KApRA,cAoRiBA,IAGN,iBAAXygB,EAAqB,CAC9B,QAA4B,IAAjBzgB,EAAKygB,GACd,MAAM,IAAIjnB,UAAU,oBAAuBinB,EAAS,KAGtDzgB,EAAKygB,UAKX9R,EAAayb,EAAU,KAAM,CAAC,CAC5BjwB,IAAK,UACL4Z,IAAK,WACH,MArSU,UAuSX,CACD5Z,IAAK,UACL4Z,IAAK,WACH,OAAOmW,MAIJE,EA9QmB,GAuR5BrL,EAAoB,QAAE7rB,UAAUqZ,GAtSH,6BAQA,4BA8RsD,SAAUvJ,GAEvD,MAAhCA,EAAM+oB,cAAc3H,SACtBphB,EAAMmgB,iBAGR,IAAI6I,EAAWjN,EAAoB,QAAEjsB,MACjC4sB,EAAWL,EAAKI,uBAAuB3sB,MACvCm5B,EAAY,GAAG/rB,MAAM/L,KAAKjB,SAASoxB,iBAAiB5E,IACxDX,EAAoB,QAAEkN,GAAW9O,MAAK,WACpC,IAAI+O,EAAUnN,EAAoB,QAAEjsB,MAEhC2tB,EADOyL,EAAQlsB,KAjUN,eAkUO,SAAWgsB,EAAShsB,OAExCoqB,EAASrH,iBAAiB5uB,KAAK+3B,EAASzL,SAS5C1B,EAAoB,QAAEprB,GAAGq2B,GAAUI,EAASrH,iBAC5ChE,EAAoB,QAAEprB,GAAGq2B,GAAQzwB,YAAc6wB,EAE/CrL,EAAoB,QAAEprB,GAAGq2B,GAAQ3X,WAAa,WAE5C,OADA0M,EAAoB,QAAEprB,GAAGq2B,GAAUC,EAC5BG,EAASrH,kBASlB,IAAIoJ,EAAS,WAKTC,EAAuBrN,EAAoB,QAAEprB,GAAGw4B,GAahDE,EAAiB,IAAItd,OAAOud,YA2B5BC,EAAY,CACd9vB,OAAQ,EACRwE,MAAM,EACNurB,SAAU,eACVh3B,UAAW,SACXmhB,QAAS,UACT8V,aAAc,MAEZC,EAAgB,CAClBjwB,OAAQ,2BACRwE,KAAM,UACNurB,SAAU,mBACVh3B,UAAW,mBACXmhB,QAAS,SACT8V,aAAc,iBAQZE,EAAwB,WAC1B,SAASA,EAASt4B,EAASosB,GACzB3tB,KAAKgvB,SAAWztB,EAChBvB,KAAK85B,QAAU,KACf95B,KAAKmzB,QAAUnzB,KAAKozB,WAAWzF,GAC/B3tB,KAAK+5B,MAAQ/5B,KAAKg6B,kBAClBh6B,KAAKi6B,UAAYj6B,KAAKk6B,gBAEtBl6B,KAAK2zB,qBAIP,IAAI1E,EAAS4K,EAASryB,UA8YtB,OA3YAynB,EAAOwB,OAAS,WACd,IAAIzwB,KAAKgvB,SAASmL,WAAYlO,EAAoB,QAAEjsB,KAAKgvB,UAAUc,SAxD7C,YAwDtB,CAIA,IAAIsK,EAAWnO,EAAoB,QAAEjsB,KAAK+5B,OAAOjK,SA3D7B,QA6DpB+J,EAASQ,cAELD,GAIJp6B,KAAKi4B,MAAK,KAGZhJ,EAAOgJ,KAAO,SAAcqC,GAK1B,QAJkB,IAAdA,IACFA,GAAY,KAGVt6B,KAAKgvB,SAASmL,UAAYlO,EAAoB,QAAEjsB,KAAKgvB,UAAUc,SA5E7C,aA4E8E7D,EAAoB,QAAEjsB,KAAK+5B,OAAOjK,SA3ElH,SA2EpB,CAIA,IAAI2F,EAAgB,CAClBA,cAAez1B,KAAKgvB,UAElBuL,EAAYtO,EAAoB,QAAE2D,MAzFvB,mBAyF2C6F,GAEtD7sB,EAASixB,EAASW,sBAAsBx6B,KAAKgvB,UAIjD,GAFA/C,EAAoB,QAAErjB,GAAQykB,QAAQkN,IAElCA,EAAUjL,qBAAd,CAKA,IAAKtvB,KAAKi6B,WAAaK,EAAW,CAKhC,QAA0C,IAA/BpO,EAAyB,QAClC,MAAM,IAAIxlB,UAAU,gEAGtB,IAAI+zB,EAAmBz6B,KAAKgvB,SAEG,WAA3BhvB,KAAKmzB,QAAQzwB,UACf+3B,EAAmB7xB,EACV2jB,EAAKiB,UAAUxtB,KAAKmzB,QAAQzwB,aACrC+3B,EAAmBz6B,KAAKmzB,QAAQzwB,eAEa,IAAlC1C,KAAKmzB,QAAQzwB,UAAU+U,SAChCgjB,EAAmBz6B,KAAKmzB,QAAQzwB,UAAU,KAOhB,iBAA1B1C,KAAKmzB,QAAQuG,UACfzN,EAAoB,QAAErjB,GAAQqtB,SAjHL,mBAoH3Bj2B,KAAK85B,QAAU,IAAI5N,EAAyB,QAAEuO,EAAkBz6B,KAAK+5B,MAAO/5B,KAAK06B,oBAO/E,iBAAkBt6B,SAAS+C,iBAAyF,IAAtE8oB,EAAoB,QAAErjB,GAAQ8mB,QAvH1D,eAuHuF7yB,QAC3GovB,EAAoB,QAAE7rB,SAAS+B,MAAMwG,WAAW8Q,GAAG,YAAa,KAAMwS,EAAoB,QAAEhT,MAG9FjZ,KAAKgvB,SAAS+B,QAEd/wB,KAAKgvB,SAAS7X,aAAa,iBAAiB,GAE5C8U,EAAoB,QAAEjsB,KAAK+5B,OAAO9I,YAxId,QAyIpBhF,EAAoB,QAAErjB,GAAQqoB,YAzIV,QAyIyC5D,QAAQpB,EAAoB,QAAE2D,MA/I3E,oBA+IgG6F,OAGlHxG,EAAOjZ,KAAO,WACZ,IAAIhW,KAAKgvB,SAASmL,WAAYlO,EAAoB,QAAEjsB,KAAKgvB,UAAUc,SA9I7C,aA8I+E7D,EAAoB,QAAEjsB,KAAK+5B,OAAOjK,SA7InH,QA6IpB,CAIA,IAAI2F,EAAgB,CAClBA,cAAez1B,KAAKgvB,UAElB2L,EAAY1O,EAAoB,QAAE2D,MA7JvB,mBA6J2C6F,GAEtD7sB,EAASixB,EAASW,sBAAsBx6B,KAAKgvB,UAEjD/C,EAAoB,QAAErjB,GAAQykB,QAAQsN,GAElCA,EAAUrL,uBAIVtvB,KAAK85B,SACP95B,KAAK85B,QAAQzqB,UAGf4c,EAAoB,QAAEjsB,KAAK+5B,OAAO9I,YAlKd,QAmKpBhF,EAAoB,QAAErjB,GAAQqoB,YAnKV,QAmKyC5D,QAAQpB,EAAoB,QAAE2D,MA3K1E,qBA2KgG6F,OAGnHxG,EAAOO,QAAU,WACfvD,EAAoB,QAAEwD,WAAWzvB,KAAKgvB,SAjMzB,eAkMb/C,EAAoB,QAAEjsB,KAAKgvB,UAAUpV,IAjMvB,gBAkMd5Z,KAAKgvB,SAAW,KAChBhvB,KAAK+5B,MAAQ,KAEQ,OAAjB/5B,KAAK85B,UACP95B,KAAK85B,QAAQzqB,UAEbrP,KAAK85B,QAAU,OAInB7K,EAAOrhB,OAAS,WACd5N,KAAKi6B,UAAYj6B,KAAKk6B,gBAED,OAAjBl6B,KAAK85B,SACP95B,KAAK85B,QAAQvpB,kBAKjB0e,EAAO0E,mBAAqB,WAC1B,IAAIpc,EAAQvX,KAEZisB,EAAoB,QAAEjsB,KAAKgvB,UAAUvV,GApMvB,qBAoMuC,SAAUvJ,GAC7DA,EAAMmgB,iBACNngB,EAAM0qB,kBAENrjB,EAAMkZ,aAIVxB,EAAOmE,WAAa,SAAoBzF,GAGtC,OAFAA,EAAShmB,EAAS,GAAI3H,KAAK66B,YAAY9I,QAAS9F,EAAoB,QAAEjsB,KAAKgvB,UAAU9hB,OAAQygB,GAC7FpB,EAAKkB,gBAAgB4L,EAAQ1L,EAAQ3tB,KAAK66B,YAAYvI,aAC/C3E,GAGTsB,EAAO+K,gBAAkB,WACvB,IAAKh6B,KAAK+5B,MAAO,CACf,IAAInxB,EAASixB,EAASW,sBAAsBx6B,KAAKgvB,UAE7CpmB,IACF5I,KAAK+5B,MAAQnxB,EAAOsL,cA1MR,mBA8MhB,OAAOlU,KAAK+5B,OAGd9K,EAAO6L,cAAgB,WACrB,IAAIC,EAAkB9O,EAAoB,QAAEjsB,KAAKgvB,SAAShtB,YACtD2I,EA9Me,eA0NnB,OAVIowB,EAAgBjL,SA5NA,UA6NlBnlB,EAAYshB,EAAoB,QAAEjsB,KAAK+5B,OAAOjK,SA1NzB,uBAQJ,UADH,YAoNLiL,EAAgBjL,SA7NJ,aA8NrBnlB,EAjNgB,cAkNPowB,EAAgBjL,SA9NL,YA+NpBnlB,EAlNe,aAmNNshB,EAAoB,QAAEjsB,KAAK+5B,OAAOjK,SA/NtB,yBAgOrBnlB,EAtNoB,cAyNfA,GAGTskB,EAAOiL,cAAgB,WACrB,OAAOjO,EAAoB,QAAEjsB,KAAKgvB,UAAUU,QAAQ,WAAW7yB,OAAS,GAG1EoyB,EAAO+L,WAAa,WAClB,IAAIjf,EAAS/b,KAET2J,EAAS,GAWb,MATmC,mBAAxB3J,KAAKmzB,QAAQxpB,OACtBA,EAAO9I,GAAK,SAAUqM,GAEpB,OADAA,EAAKlF,QAAUL,EAAS,GAAIuF,EAAKlF,QAAS+T,EAAOoX,QAAQxpB,OAAOuD,EAAKlF,QAAS+T,EAAOiT,WAAa,IAC3F9hB,GAGTvD,EAAOA,OAAS3J,KAAKmzB,QAAQxpB,OAGxBA,GAGTslB,EAAOyL,iBAAmB,WACxB,IAAIf,EAAe,CACjBhvB,UAAW3K,KAAK86B,gBAChB7tB,UAAW,CACTtD,OAAQ3J,KAAKg7B,aACb7sB,KAAM,CACJR,QAAS3N,KAAKmzB,QAAQhlB,MAExBiF,gBAAiB,CACfjJ,kBAAmBnK,KAAKmzB,QAAQuG,YAWtC,MAN6B,WAAzB15B,KAAKmzB,QAAQtP,UACf8V,EAAa1sB,UAAUiK,WAAa,CAClCvJ,SAAS,IAINhG,EAAS,GAAIgyB,EAAc35B,KAAKmzB,QAAQwG,eAIjDE,EAAS5J,iBAAmB,SAA0BtC,GACpD,OAAO3tB,KAAKqqB,MAAK,WACf,IAAInd,EAAO+e,EAAoB,QAAEjsB,MAAMkN,KAnT5B,eA4TX,GALKA,IACHA,EAAO,IAAI2sB,EAAS75B,KAHU,iBAAX2tB,EAAsBA,EAAS,MAIlD1B,EAAoB,QAAEjsB,MAAMkN,KAzTnB,cAyToCA,IAGzB,iBAAXygB,EAAqB,CAC9B,QAA4B,IAAjBzgB,EAAKygB,GACd,MAAM,IAAIjnB,UAAU,oBAAuBinB,EAAS,KAGtDzgB,EAAKygB,UAKXkM,EAASQ,YAAc,SAAqBnqB,GAC1C,IAAIA,GAzTuB,IAyTbA,EAAMglB,QAAqD,UAAfhlB,EAAMoN,MA/TlD,IA+TsEpN,EAAMglB,OAM1F,IAFA,IAAI+F,EAAU,GAAG7tB,MAAM/L,KAAKjB,SAASoxB,iBA3SZ,6BA6ShBhxB,EAAI,EAAG2T,EAAM8mB,EAAQp+B,OAAQ2D,EAAI2T,EAAK3T,IAAK,CAClD,IAAIoI,EAASixB,EAASW,sBAAsBS,EAAQz6B,IAEhD06B,EAAUjP,EAAoB,QAAEgP,EAAQz6B,IAAI0M,KAhVrC,eAiVPuoB,EAAgB,CAClBA,cAAewF,EAAQz6B,IAOzB,GAJI0P,GAAwB,UAAfA,EAAMoN,OACjBmY,EAAc0F,WAAajrB,GAGxBgrB,EAAL,CAIA,IAAIE,EAAeF,EAAQnB,MAE3B,GAAK9N,EAAoB,QAAErjB,GAAQknB,SArUjB,WAyUd5f,IAAyB,UAAfA,EAAMoN,MAAoB,kBAAkB9a,KAAK0N,EAAMrJ,OAAOyqB,UAA2B,UAAfphB,EAAMoN,MA3VlF,IA2VsGpN,EAAMglB,QAA0BjJ,EAAoB,QAAE1nB,SAASqE,EAAQsH,EAAMrJ,SAA/L,CAIA,IAAI8zB,EAAY1O,EAAoB,QAAE2D,MAtVzB,mBAsV6C6F,GAC1DxJ,EAAoB,QAAErjB,GAAQykB,QAAQsN,GAElCA,EAAUrL,uBAMV,iBAAkBlvB,SAAS+C,iBAC7B8oB,EAAoB,QAAE7rB,SAAS+B,MAAMwG,WAAWiR,IAAI,YAAa,KAAMqS,EAAoB,QAAEhT,MAG/FgiB,EAAQz6B,GAAG2W,aAAa,gBAAiB,SAErC+jB,EAAQpB,SACVoB,EAAQpB,QAAQzqB,UAGlB4c,EAAoB,QAAEmP,GAAcvL,YAhWlB,QAiWlB5D,EAAoB,QAAErjB,GAAQinB,YAjWZ,QAiW2CxC,QAAQpB,EAAoB,QAAE2D,MAzW5E,qBAyWkG6F,SAIrHoE,EAASW,sBAAwB,SAA+Bj5B,GAC9D,IAAIqH,EACAgkB,EAAWL,EAAKI,uBAAuBprB,GAM3C,OAJIqrB,IACFhkB,EAASxI,SAAS8T,cAAc0Y,IAG3BhkB,GAAUrH,EAAQS,YAI3B63B,EAASwB,uBAAyB,SAAgCnrB,GAQhE,KAAI,kBAAkB1N,KAAK0N,EAAMrJ,OAAOyqB,SA7YxB,KA6YmCphB,EAAMglB,OA/YxC,KA+YmEhlB,EAAMglB,QAvYrE,KAuYkGhlB,EAAMglB,OAzY1G,KAyY0IhlB,EAAMglB,OAA8BjJ,EAAoB,QAAE/b,EAAMrJ,QAAQ6oB,QAjXrN,kBAiX4O7yB,SAAW08B,EAAe/2B,KAAK0N,EAAMglB,UAI7Rl1B,KAAKm6B,WAAYlO,EAAoB,QAAEjsB,MAAM8vB,SA9X3B,YA8XtB,CAIA,IAAIlnB,EAASixB,EAASW,sBAAsBx6B,MAExCo6B,EAAWnO,EAAoB,QAAErjB,GAAQknB,SAnYzB,QAqYpB,GAAKsK,GA3ZY,KA2ZAlqB,EAAMglB,MAAvB,CAOA,GAHAhlB,EAAMmgB,iBACNngB,EAAM0qB,mBAEDR,GAlaY,KAkaAlqB,EAAMglB,OAhaP,KAgamChlB,EAAMglB,MAMvD,OAxae,KAmaXhlB,EAAMglB,OACRjJ,EAAoB,QAAErjB,EAAOsL,cAxYR,6BAwY+CmZ,QAAQ,cAG9EpB,EAAoB,QAAEjsB,MAAMqtB,QAAQ,SAItC,IAAIiO,EAAQ,GAAGluB,MAAM/L,KAAKuH,EAAO4oB,iBA3YR,gEA2YkDpmB,QAAO,SAAUmwB,GAC1F,OAAOtP,EAAoB,QAAEsP,GAAM7M,GAAG,eAGxC,GAAqB,IAAjB4M,EAAMz+B,OAAV,CAIA,IAAI6U,EAAQ4pB,EAAM56B,QAAQwP,EAAMrJ,QA7ab,KA+afqJ,EAAMglB,OAA8BxjB,EAAQ,GAE9CA,IA/amB,KAkbjBxB,EAAMglB,OAAgCxjB,EAAQ4pB,EAAMz+B,OAAS,GAE/D6U,IAGEA,EAAQ,IACVA,EAAQ,GAGV4pB,EAAM5pB,GAAOqf,YAGflV,EAAage,EAAU,KAAM,CAAC,CAC5BxyB,IAAK,UACL4Z,IAAK,WACH,MA9cU,UAgdX,CACD5Z,IAAK,UACL4Z,IAAK,WACH,OAAOwY,IAER,CACDpyB,IAAK,cACL4Z,IAAK,WACH,OAAO2Y,MAIJC,EA1ZmB,GAma5B5N,EAAoB,QAAE7rB,UAAUqZ,GA7cH,+BASA,2BAocsDogB,EAASwB,wBAAwB5hB,GA7cvF,+BAWT,iBAkc0IogB,EAASwB,wBAAwB5hB,GAAG+hB,wDAAqD3B,EAASQ,aAAa5gB,GA9chP,6BAUA,4BAocmS,SAAUvJ,GACxUA,EAAMmgB,iBACNngB,EAAM0qB,kBAENf,EAAS5J,iBAAiB5uB,KAAK4qB,EAAoB,QAAEjsB,MAAO,aAC3DyZ,GAnd0B,6BAWH,kBAwcyB,SAAUzc,GAC3DA,EAAE49B,qBAQJ3O,EAAoB,QAAEprB,GAAGw4B,GAAUQ,EAAS5J,iBAC5ChE,EAAoB,QAAEprB,GAAGw4B,GAAQ5yB,YAAcozB,EAE/C5N,EAAoB,QAAEprB,GAAGw4B,GAAQ9Z,WAAa,WAE5C,OADA0M,EAAoB,QAAEprB,GAAGw4B,GAAUC,EAC5BO,EAAS5J,kBASlB,IAKIwL,EAAuBxP,EAAoB,QAAEprB,GAAS,MAGtD66B,EAAY,CACdC,UAAU,EACV1J,UAAU,EACVlB,OAAO,EACPkH,MAAM,GAEJ2D,EAAgB,CAClBD,SAAU,mBACV1J,SAAU,UACVlB,MAAO,UACPkH,KAAM,WAiCJ4D,EAAqB,WACvB,SAASA,EAAMt6B,EAASosB,GACtB3tB,KAAKmzB,QAAUnzB,KAAKozB,WAAWzF,GAC/B3tB,KAAKgvB,SAAWztB,EAChBvB,KAAK87B,QAAUv6B,EAAQ2S,cAhBL,iBAiBlBlU,KAAK+7B,UAAY,KACjB/7B,KAAKg8B,UAAW,EAChBh8B,KAAKi8B,oBAAqB,EAC1Bj8B,KAAKk8B,sBAAuB,EAC5Bl8B,KAAKu3B,kBAAmB,EACxBv3B,KAAKm8B,gBAAkB,EAIzB,IAAIlN,EAAS4M,EAAMr0B,UA0enB,OAveAynB,EAAOwB,OAAS,SAAgBgF,GAC9B,OAAOz1B,KAAKg8B,SAAWh8B,KAAKgW,OAAShW,KAAKi4B,KAAKxC,IAGjDxG,EAAOgJ,KAAO,SAAcxC,GAC1B,IAAIle,EAAQvX,KAEZ,IAAIA,KAAKg8B,WAAYh8B,KAAKu3B,iBAA1B,CAIItL,EAAoB,QAAEjsB,KAAKgvB,UAAUc,SA3CrB,UA4ClB9vB,KAAKu3B,kBAAmB,GAG1B,IAAIgD,EAAYtO,EAAoB,QAAE2D,MA5DvB,gBA4D2C,CACxD6F,cAAeA,IAEjBxJ,EAAoB,QAAEjsB,KAAKgvB,UAAU3B,QAAQkN,GAEzCv6B,KAAKg8B,UAAYzB,EAAUjL,uBAI/BtvB,KAAKg8B,UAAW,EAEhBh8B,KAAKo8B,kBAELp8B,KAAKq8B,gBAELr8B,KAAKs8B,gBAELt8B,KAAKu8B,kBAELv8B,KAAKw8B,kBAELvQ,EAAoB,QAAEjsB,KAAKgvB,UAAUvV,GA7Ef,yBAeE,0BA8D4D,SAAUvJ,GAC5F,OAAOqH,EAAMvB,KAAK9F,MAEpB+b,EAAoB,QAAEjsB,KAAK87B,SAASriB,GA7EV,8BA6EsC,WAC9DwS,EAAoB,QAAE1U,EAAMyX,UAAU1C,IA/EhB,4BA+E2C,SAAUpc,GACrE+b,EAAoB,QAAE/b,EAAMrJ,QAAQ6nB,GAAGnX,EAAMyX,YAC/CzX,EAAM2kB,sBAAuB,SAKnCl8B,KAAKy8B,eAAc,WACjB,OAAOllB,EAAMmlB,aAAajH,SAI9BxG,EAAOjZ,KAAO,SAAc9F,GAC1B,IAAI6L,EAAS/b,KAMb,GAJIkQ,GACFA,EAAMmgB,iBAGHrwB,KAAKg8B,WAAYh8B,KAAKu3B,iBAA3B,CAIA,IAAIoD,EAAY1O,EAAoB,QAAE2D,MA/GvB,iBAkHf,GAFA3D,EAAoB,QAAEjsB,KAAKgvB,UAAU3B,QAAQsN,GAExC36B,KAAKg8B,WAAYrB,EAAUrL,qBAAhC,CAIAtvB,KAAKg8B,UAAW,EAChB,IAAIW,EAAa1Q,EAAoB,QAAEjsB,KAAKgvB,UAAUc,SAvGlC,QAsHpB,GAbI6M,IACF38B,KAAKu3B,kBAAmB,GAG1Bv3B,KAAKu8B,kBAELv8B,KAAKw8B,kBAELvQ,EAAoB,QAAE7rB,UAAUwZ,IA5HhB,oBA6HhBqS,EAAoB,QAAEjsB,KAAKgvB,UAAUa,YAjHjB,QAkHpB5D,EAAoB,QAAEjsB,KAAKgvB,UAAUpV,IA5Hf,0BA6HtBqS,EAAoB,QAAEjsB,KAAK87B,SAASliB,IA1HV,8BA4HtB+iB,EAAY,CACd,IAAI3P,EAAqBT,EAAKQ,iCAAiC/sB,KAAKgvB,UACpE/C,EAAoB,QAAEjsB,KAAKgvB,UAAU1C,IAAIC,EAAKC,gBAAgB,SAAUtc,GACtE,OAAO6L,EAAO6gB,WAAW1sB,MACxBme,qBAAqBrB,QAExBhtB,KAAK48B,gBAIT3N,EAAOO,QAAU,WACf,CAACp1B,OAAQ4F,KAAKgvB,SAAUhvB,KAAK87B,SAASruB,SAAQ,SAAUovB,GACtD,OAAO5Q,EAAoB,QAAE4Q,GAAajjB,IAnK9B,gBA2KdqS,EAAoB,QAAE7rB,UAAUwZ,IArJhB,oBAsJhBqS,EAAoB,QAAEwD,WAAWzvB,KAAKgvB,SA7KzB,YA8KbhvB,KAAKmzB,QAAU,KACfnzB,KAAKgvB,SAAW,KAChBhvB,KAAK87B,QAAU,KACf97B,KAAK+7B,UAAY,KACjB/7B,KAAKg8B,SAAW,KAChBh8B,KAAKi8B,mBAAqB,KAC1Bj8B,KAAKk8B,qBAAuB,KAC5Bl8B,KAAKu3B,iBAAmB,KACxBv3B,KAAKm8B,gBAAkB,MAGzBlN,EAAO6N,aAAe,WACpB98B,KAAKs8B,iBAIPrN,EAAOmE,WAAa,SAAoBzF,GAGtC,OAFAA,EAAShmB,EAAS,GAAI+zB,EAAW/N,GACjCpB,EAAKkB,gBAlMI,QAkMoBE,EAAQiO,GAC9BjO,GAGTsB,EAAO8N,2BAA6B,WAClC,IAAIzS,EAAStqB,KAETg9B,EAAqB/Q,EAAoB,QAAE2D,MApLxB,0BAuLvB,GAFA3D,EAAoB,QAAEjsB,KAAKgvB,UAAU3B,QAAQ2P,IAEzCA,EAAmB1N,qBAAvB,CAIA,IAAI2N,EAAqBj9B,KAAKgvB,SAASjF,aAAe3pB,SAAS+C,gBAAgBkF,aAE1E40B,IACHj9B,KAAKgvB,SAAS5f,MAAM7M,UAAY,UAGlCvC,KAAKgvB,SAASrL,UAAUC,IAhLJ,gBAkLpB,IAAIsZ,EAA0B3Q,EAAKQ,iCAAiC/sB,KAAK87B,SACzE7P,EAAoB,QAAEjsB,KAAKgvB,UAAUpV,IAAI2S,EAAKC,gBAC9CP,EAAoB,QAAEjsB,KAAKgvB,UAAU1C,IAAIC,EAAKC,gBAAgB,WAC5DlC,EAAO0E,SAASrL,UAAUxC,OArLR,gBAuLb8b,GACHhR,EAAoB,QAAE3B,EAAO0E,UAAU1C,IAAIC,EAAKC,gBAAgB,WAC9DlC,EAAO0E,SAAS5f,MAAM7M,UAAY,MACjC8rB,qBAAqB/D,EAAO0E,SAAUkO,MAE1C7O,qBAAqB6O,GAExBl9B,KAAKgvB,SAAS+B,UAGhB9B,EAAOyN,aAAe,SAAsBjH,GAC1C,IAAI3K,EAAS9qB,KAET28B,EAAa1Q,EAAoB,QAAEjsB,KAAKgvB,UAAUc,SAtMlC,QAuMhBqN,EAAYn9B,KAAK87B,QAAU97B,KAAK87B,QAAQ5nB,cAnMtB,eAmM2D,KAE5ElU,KAAKgvB,SAAShtB,YAAchC,KAAKgvB,SAAShtB,WAAWP,WAAaqC,KAAKs5B,cAE1Eh9B,SAAS+B,KAAKshB,YAAYzjB,KAAKgvB,UAGjChvB,KAAKgvB,SAAS5f,MAAMyU,QAAU,QAE9B7jB,KAAKgvB,SAAS1f,gBAAgB,eAE9BtP,KAAKgvB,SAAS7X,aAAa,cAAc,GAEzCnX,KAAKgvB,SAAS7X,aAAa,OAAQ,UAE/B8U,EAAoB,QAAEjsB,KAAK87B,SAAShM,SA1NhB,4BA0NmDqN,EACzEA,EAAUh4B,UAAY,EAEtBnF,KAAKgvB,SAAS7pB,UAAY,EAGxBw3B,GACFpQ,EAAKa,OAAOptB,KAAKgvB,UAGnB/C,EAAoB,QAAEjsB,KAAKgvB,UAAUiH,SA/NjB,QAiOhBj2B,KAAKmzB,QAAQpC,OACf/wB,KAAKq9B,gBAGP,IAAIC,EAAarR,EAAoB,QAAE2D,MAlPvB,iBAkP4C,CAC1D6F,cAAeA,IAGb8H,EAAqB,WACnBzS,EAAOqI,QAAQpC,OACjBjG,EAAOkE,SAAS+B,QAGlBjG,EAAOyM,kBAAmB,EAC1BtL,EAAoB,QAAEnB,EAAOkE,UAAU3B,QAAQiQ,IAGjD,GAAIX,EAAY,CACd,IAAI3P,EAAqBT,EAAKQ,iCAAiC/sB,KAAK87B,SACpE7P,EAAoB,QAAEjsB,KAAK87B,SAASxP,IAAIC,EAAKC,eAAgB+Q,GAAoBlP,qBAAqBrB,QAEtGuQ,KAIJtO,EAAOoO,cAAgB,WACrB,IAAIhS,EAASrrB,KAEbisB,EAAoB,QAAE7rB,UAAUwZ,IAzQhB,oBA0QfH,GA1Qe,oBA0QG,SAAUvJ,GACvB9P,WAAa8P,EAAMrJ,QAAUwkB,EAAO2D,WAAa9e,EAAMrJ,QAA8E,IAApEolB,EAAoB,QAAEZ,EAAO2D,UAAUwO,IAAIttB,EAAMrJ,QAAQhK,QAC5HwuB,EAAO2D,SAAS+B,YAKtB9B,EAAOsN,gBAAkB,WACvB,IAAIkB,EAASz9B,KAETA,KAAKg8B,SACP/P,EAAoB,QAAEjsB,KAAKgvB,UAAUvV,GAlRf,4BAkRyC,SAAUvJ,GACnEutB,EAAOtK,QAAQlB,UAzSJ,KAySgB/hB,EAAMglB,OACnChlB,EAAMmgB,iBAENoN,EAAOznB,QACGynB,EAAOtK,QAAQlB,UA7SZ,KA6SwB/hB,EAAMglB,OAC3CuI,EAAOV,gCAGD/8B,KAAKg8B,UACf/P,EAAoB,QAAEjsB,KAAKgvB,UAAUpV,IA5Rf,6BAgS1BqV,EAAOuN,gBAAkB,WACvB,IAAIkB,EAAS19B,KAETA,KAAKg8B,SACP/P,EAAoB,QAAE7xB,QAAQqf,GAtSjB,mBAsSkC,SAAUvJ,GACvD,OAAOwtB,EAAOZ,aAAa5sB,MAG7B+b,EAAoB,QAAE7xB,QAAQwf,IA1SjB,oBA8SjBqV,EAAO2N,WAAa,WAClB,IAAIe,EAAS39B,KAEbA,KAAKgvB,SAAS5f,MAAMyU,QAAU,OAE9B7jB,KAAKgvB,SAAS7X,aAAa,eAAe,GAE1CnX,KAAKgvB,SAAS1f,gBAAgB,cAE9BtP,KAAKgvB,SAAS1f,gBAAgB,QAE9BtP,KAAKu3B,kBAAmB,EAExBv3B,KAAKy8B,eAAc,WACjBxQ,EAAoB,QAAE7rB,SAAS+B,MAAM0tB,YAnTrB,cAqThB8N,EAAOC,oBAEPD,EAAOE,kBAEP5R,EAAoB,QAAE0R,EAAO3O,UAAU3B,QAtUxB,uBA0UnB4B,EAAO6O,gBAAkB,WACnB99B,KAAK+7B,YACP9P,EAAoB,QAAEjsB,KAAK+7B,WAAW5a,SACtCnhB,KAAK+7B,UAAY,OAIrB9M,EAAOwN,cAAgB,SAAuBr+B,GAC5C,IAAI2/B,EAAS/9B,KAETg+B,EAAU/R,EAAoB,QAAEjsB,KAAKgvB,UAAUc,SAtU/B,eAsUiF,GAErG,GAAI9vB,KAAKg8B,UAAYh8B,KAAKmzB,QAAQwI,SAAU,CAgC1C,GA/BA37B,KAAK+7B,UAAY37B,SAASojB,cAAc,OACxCxjB,KAAK+7B,UAAUzf,UA5UK,iBA8UhB0hB,GACFh+B,KAAK+7B,UAAUpY,UAAUC,IAAIoa,GAG/B/R,EAAoB,QAAEjsB,KAAK+7B,WAAWkC,SAAS79B,SAAS+B,MACxD8pB,EAAoB,QAAEjsB,KAAKgvB,UAAUvV,GA1VjB,0BA0VyC,SAAUvJ,GACjE6tB,EAAO7B,qBACT6B,EAAO7B,sBAAuB,EAI5BhsB,EAAMrJ,SAAWqJ,EAAM+oB,gBAIK,WAA5B8E,EAAO5K,QAAQwI,SACjBoC,EAAOhB,6BAEPgB,EAAO/nB,WAIPgoB,GACFzR,EAAKa,OAAOptB,KAAK+7B,WAGnB9P,EAAoB,QAAEjsB,KAAK+7B,WAAW9F,SArWpB,SAuWb73B,EACH,OAGF,IAAK4/B,EAEH,YADA5/B,IAIF,IAAI8/B,EAA6B3R,EAAKQ,iCAAiC/sB,KAAK+7B,WAC5E9P,EAAoB,QAAEjsB,KAAK+7B,WAAWzP,IAAIC,EAAKC,eAAgBpuB,GAAUiwB,qBAAqB6P,QACzF,IAAKl+B,KAAKg8B,UAAYh8B,KAAK+7B,UAAW,CAC3C9P,EAAoB,QAAEjsB,KAAK+7B,WAAWlM,YAnXpB,QAqXlB,IAAIsO,EAAiB,WACnBJ,EAAOD,kBAEH1/B,GACFA,KAIJ,GAAI6tB,EAAoB,QAAEjsB,KAAKgvB,UAAUc,SA9XvB,QA8XoD,CACpE,IAAIsO,EAA8B7R,EAAKQ,iCAAiC/sB,KAAK+7B,WAE7E9P,EAAoB,QAAEjsB,KAAK+7B,WAAWzP,IAAIC,EAAKC,eAAgB2R,GAAgB9P,qBAAqB+P,QAEpGD,SAEO//B,GACTA,KAQJ6wB,EAAOqN,cAAgB,WACrB,IAAIW,EAAqBj9B,KAAKgvB,SAASjF,aAAe3pB,SAAS+C,gBAAgBkF,cAE1ErI,KAAKi8B,oBAAsBgB,IAC9Bj9B,KAAKgvB,SAAS5f,MAAMivB,YAAcr+B,KAAKm8B,gBAAkB,MAGvDn8B,KAAKi8B,qBAAuBgB,IAC9Bj9B,KAAKgvB,SAAS5f,MAAMkvB,aAAet+B,KAAKm8B,gBAAkB,OAI9DlN,EAAO2O,kBAAoB,WACzB59B,KAAKgvB,SAAS5f,MAAMivB,YAAc,GAClCr+B,KAAKgvB,SAAS5f,MAAMkvB,aAAe,IAGrCrP,EAAOmN,gBAAkB,WACvB,IAAIn3B,EAAO7E,SAAS+B,KAAK8F,wBACzBjI,KAAKi8B,mBAAqB9/B,KAAKyY,MAAM3P,EAAKO,KAAOP,EAAKQ,OAASrL,OAAOqP,WACtEzJ,KAAKm8B,gBAAkBn8B,KAAKu+B,sBAG9BtP,EAAOoN,cAAgB,WACrB,IAAImC,EAAUx+B,KAEd,GAAIA,KAAKi8B,mBAAoB,CAG3B,IAAIwC,EAAe,GAAGrxB,MAAM/L,KAAKjB,SAASoxB,iBApanB,sDAqanBkN,EAAgB,GAAGtxB,MAAM/L,KAAKjB,SAASoxB,iBApanB,gBAsaxBvF,EAAoB,QAAEwS,GAAcpU,MAAK,SAAU3Y,EAAOnQ,GACxD,IAAIo9B,EAAgBp9B,EAAQ6N,MAAMkvB,aAC9BM,EAAoB3S,EAAoB,QAAE1qB,GAASG,IAAI,iBAC3DuqB,EAAoB,QAAE1qB,GAAS2L,KAAK,gBAAiByxB,GAAej9B,IAAI,gBAAiBqE,WAAW64B,GAAqBJ,EAAQrC,gBAAkB,SAGrJlQ,EAAoB,QAAEyS,GAAerU,MAAK,SAAU3Y,EAAOnQ,GACzD,IAAIs9B,EAAet9B,EAAQ6N,MAAMtD,YAC7BgzB,EAAmB7S,EAAoB,QAAE1qB,GAASG,IAAI,gBAC1DuqB,EAAoB,QAAE1qB,GAAS2L,KAAK,eAAgB2xB,GAAcn9B,IAAI,eAAgBqE,WAAW+4B,GAAoBN,EAAQrC,gBAAkB,SAGjJ,IAAIwC,EAAgBv+B,SAAS+B,KAAKiN,MAAMkvB,aACpCM,EAAoB3S,EAAoB,QAAE7rB,SAAS+B,MAAMT,IAAI,iBACjEuqB,EAAoB,QAAE7rB,SAAS+B,MAAM+K,KAAK,gBAAiByxB,GAAej9B,IAAI,gBAAiBqE,WAAW64B,GAAqB5+B,KAAKm8B,gBAAkB,MAGxJlQ,EAAoB,QAAE7rB,SAAS+B,MAAM8zB,SAhcnB,eAmcpBhH,EAAO4O,gBAAkB,WAEvB,IAAIY,EAAe,GAAGrxB,MAAM/L,KAAKjB,SAASoxB,iBA7bjB,sDA8bzBvF,EAAoB,QAAEwS,GAAcpU,MAAK,SAAU3Y,EAAOnQ,GACxD,IAAI2I,EAAU+hB,EAAoB,QAAE1qB,GAAS2L,KAAK,iBAClD+e,EAAoB,QAAE1qB,GAASkuB,WAAW,iBAC1CluB,EAAQ6N,MAAMkvB,aAAep0B,GAAoB,MAGnD,IAAI60B,EAAW,GAAG3xB,MAAM/L,KAAKjB,SAASoxB,iBAncZ,gBAoc1BvF,EAAoB,QAAE8S,GAAU1U,MAAK,SAAU3Y,EAAOnQ,GACpD,IAAIy9B,EAAS/S,EAAoB,QAAE1qB,GAAS2L,KAAK,qBAE3B,IAAX8xB,GACT/S,EAAoB,QAAE1qB,GAASG,IAAI,eAAgBs9B,GAAQvP,WAAW,mBAI1E,IAAIvlB,EAAU+hB,EAAoB,QAAE7rB,SAAS+B,MAAM+K,KAAK,iBACxD+e,EAAoB,QAAE7rB,SAAS+B,MAAMstB,WAAW,iBAChDrvB,SAAS+B,KAAKiN,MAAMkvB,aAAep0B,GAAoB,IAGzD+kB,EAAOsP,mBAAqB,WAE1B,IAAIU,EAAY7+B,SAASojB,cAAc,OACvCyb,EAAU3iB,UA/dsB,0BAgehClc,SAAS+B,KAAKshB,YAAYwb,GAC1B,IAAIC,EAAiBD,EAAUh3B,wBAAwB3B,MAAQ24B,EAAU72B,YAEzE,OADAhI,SAAS+B,KAAKuN,YAAYuvB,GACnBC,GAITrD,EAAM5L,iBAAmB,SAA0BtC,EAAQ8H,GACzD,OAAOz1B,KAAKqqB,MAAK,WACf,IAAInd,EAAO+e,EAAoB,QAAEjsB,MAAMkN,KAxgB5B,YA0gBPimB,EAAUxrB,EAAS,GAAI+zB,EAAWzP,EAAoB,QAAEjsB,MAAMkN,OAA0B,iBAAXygB,GAAuBA,EAASA,EAAS,IAO1H,GALKzgB,IACHA,EAAO,IAAI2uB,EAAM77B,KAAMmzB,GACvBlH,EAAoB,QAAEjsB,MAAMkN,KA9gBnB,WA8gBoCA,IAGzB,iBAAXygB,EAAqB,CAC9B,QAA4B,IAAjBzgB,EAAKygB,GACd,MAAM,IAAIjnB,UAAU,oBAAuBinB,EAAS,KAGtDzgB,EAAKygB,GAAQ8H,QACJtC,EAAQ8E,MACjB/qB,EAAK+qB,KAAKxC,OAKhB5Z,EAAaggB,EAAO,KAAM,CAAC,CACzBx0B,IAAK,UACL4Z,IAAK,WACH,MAjiBU,UAmiBX,CACD5Z,IAAK,UACL4Z,IAAK,WACH,OAAOya,MAIJG,EAxfgB,GAigBzB5P,EAAoB,QAAE7rB,UAAUqZ,GArhBH,0BAUA,yBA2gBsD,SAAUvJ,GAC3F,IAEIrJ,EAFAs4B,EAAUn/B,KAGV4sB,EAAWL,EAAKI,uBAAuB3sB,MAEvC4sB,IACF/lB,EAASzG,SAAS8T,cAAc0Y,IAGlC,IAAIe,EAAS1B,EAAoB,QAAEplB,GAAQqG,KA5jB5B,YA4jB+C,SAAWvF,EAAS,GAAIskB,EAAoB,QAAEplB,GAAQqG,OAAQ+e,EAAoB,QAAEjsB,MAAMkN,QAEnI,MAAjBlN,KAAKsxB,SAAoC,SAAjBtxB,KAAKsxB,SAC/BphB,EAAMmgB,iBAGR,IAAI+I,EAAUnN,EAAoB,QAAEplB,GAAQylB,IA7iB3B,iBA6iB6C,SAAUiO,GAClEA,EAAUjL,sBAKd8J,EAAQ9M,IApjBS,mBAojBW,WACtBL,EAAoB,QAAEkT,GAASzQ,GAAG,aACpCyQ,EAAQpO,cAKd8K,EAAM5L,iBAAiB5uB,KAAK4qB,EAAoB,QAAEplB,GAAS8mB,EAAQ3tB,SAQrEisB,EAAoB,QAAEprB,GAAS,MAAIg7B,EAAM5L,iBACzChE,EAAoB,QAAEprB,GAAS,MAAE4F,YAAco1B,EAE/C5P,EAAoB,QAAEprB,GAAS,MAAE0e,WAAa,WAE5C,OADA0M,EAAoB,QAAEprB,GAAS,MAAI46B,EAC5BI,EAAM5L,kBASf,IAAImP,EAAW,CAAC,aAAc,OAAQ,OAAQ,WAAY,WAAY,SAAU,MAAO,cAEnFC,EAAmB,CAErB,IAAK,CAAC,QAAS,MAAO,KAAM,OAAQ,OAHT,kBAI3B5kC,EAAG,CAAC,SAAU,OAAQ,QAAS,OAC/BwQ,KAAM,GACNrQ,EAAG,GACH0kC,GAAI,GACJC,IAAK,GACLC,KAAM,GACNC,IAAK,GACLC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJz/B,EAAG,GACH0/B,IAAK,CAAC,MAAO,SAAU,MAAO,QAAS,QAAS,UAChDC,GAAI,GACJC,GAAI,GACJ9lC,EAAG,GACH+lC,IAAK,GACLhd,EAAG,GACH5H,MAAO,GACP6kB,KAAM,GACNC,IAAK,GACLC,IAAK,GACLC,OAAQ,GACR3lC,EAAG,GACH4lC,GAAI,IAQFC,EAAmB,8DAOnBC,EAAmB,qIA0BvB,SAASC,EAAaC,EAAYC,EAAWC,GAC3C,GAA0B,IAAtBF,EAAWjkC,OACb,OAAOikC,EAGT,GAAIE,GAAoC,mBAAfA,EACvB,OAAOA,EAAWF,GA0BpB,IAvBA,IACIG,GADY,IAAI7mC,OAAO8mC,WACKC,gBAAgBL,EAAY,aACxDM,EAAgBj6B,OAAO4D,KAAKg2B,GAC5BhC,EAAW,GAAG3xB,MAAM/L,KAAK4/B,EAAgB9+B,KAAKqvB,iBAAiB,MAE/D6P,EAAQ,SAAe7gC,EAAG2T,GAC5B,IAAIpK,EAAKg1B,EAASv+B,GACd8gC,EAASv3B,EAAGhI,SAASsS,cAEzB,IAA0D,IAAtD+sB,EAAc1gC,QAAQqJ,EAAGhI,SAASsS,eAEpC,OADAtK,EAAG/H,WAAW0N,YAAY3F,GACnB,WAGT,IAAIw3B,EAAgB,GAAGn0B,MAAM/L,KAAK0I,EAAGgE,YACjCyzB,EAAwB,GAAG7vB,OAAOovB,EAAU,MAAQ,GAAIA,EAAUO,IAAW,IACjFC,EAAc9zB,SAAQ,SAAU+qB,IAjDpC,SAA0BA,EAAMiJ,GAC9B,IAAIC,EAAWlJ,EAAKz2B,SAASsS,cAE7B,IAAgD,IAA5CotB,EAAqB/gC,QAAQghC,GAC/B,OAAoC,IAAhCtC,EAAS1+B,QAAQghC,IACZnU,QAAQiL,EAAKmJ,UAAUn0B,MAAMmzB,IAAqBnI,EAAKmJ,UAAUn0B,MAAMozB,IAUlF,IAJA,IAAIgB,EAASH,EAAqBr2B,QAAO,SAAUy2B,GACjD,OAAOA,aAAqB5lB,UAGrBzb,EAAI,EAAG2T,EAAMytB,EAAO/kC,OAAQ2D,EAAI2T,EAAK3T,IAC5C,GAAIkhC,EAASl0B,MAAMo0B,EAAOphC,IACxB,OAAO,EAIX,OAAO,GA6BEshC,CAAiBtJ,EAAMgJ,IAC1Bz3B,EAAGuF,gBAAgBkpB,EAAKz2B,cAKrBvB,EAAI,EAAG2T,EAAM4qB,EAASliC,OAAQ2D,EAAI2T,EAAK3T,IACnC6gC,EAAM7gC,GAKnB,OAAOygC,EAAgB9+B,KAAK4/B,UAS9B,IAAIC,EAAS,UAITC,EAAuBhW,EAAoB,QAAEprB,GAAGmhC,GAEhDE,EAAqB,IAAIjmB,OAAO,wBAAmC,KACnEkmB,EAAwB,CAAC,WAAY,YAAa,cAClDC,EAAgB,CAClBC,UAAW,UACXC,SAAU,SACVlpB,MAAO,4BACPiU,QAAS,SACT1tB,MAAO,kBACPmF,KAAM,UACN8nB,SAAU,mBACVjiB,UAAW,oBACXhB,OAAQ,2BACR44B,UAAW,2BACXC,kBAAmB,iBACnB9I,SAAU,mBACV+I,YAAa,oBACbvkB,SAAU,UACV8iB,WAAY,kBACZD,UAAW,SACXpH,aAAc,iBAEZ+I,EAAgB,CAClBC,KAAM,OACNC,IAAK,MACLC,MAAO,QACPC,OAAQ,SACRC,KAAM,QAEJC,EAAY,CACdX,WAAW,EACXC,SAAU,uGACVjV,QAAS,cACTjU,MAAO,GACPzZ,MAAO,EACPmF,MAAM,EACN8nB,UAAU,EACVjiB,UAAW,MACXhB,OAAQ,EACR44B,WAAW,EACXC,kBAAmB,OACnB9I,SAAU,eACV+I,YAAa,GACbvkB,UAAU,EACV8iB,WAAY,KACZD,UAAW1B,EACX1F,aAAc,MAIZ/J,EAAQ,CACVqT,KAAM,kBACNC,OAAQ,oBACRC,KAAM,kBACNC,MAAO,mBACPC,SAAU,sBACVC,MAAO,mBACPC,QAAS,qBACTC,SAAU,sBACVC,WAAY,wBACZC,WAAY,yBAgBVC,EAAuB,WACzB,SAASA,EAAQpiC,EAASosB,GACxB,QAA0C,IAA/BzB,EAAyB,QAClC,MAAM,IAAIxlB,UAAU,+DAItB1G,KAAK4jC,YAAa,EAClB5jC,KAAK6jC,SAAW,EAChB7jC,KAAK8jC,YAAc,GACnB9jC,KAAK+jC,eAAiB,GACtB/jC,KAAK85B,QAAU,KAEf95B,KAAKuB,QAAUA,EACfvB,KAAK2tB,OAAS3tB,KAAKozB,WAAWzF,GAC9B3tB,KAAKgkC,IAAM,KAEXhkC,KAAKikC,gBAIP,IAAIhV,EAAS0U,EAAQn8B,UA+kBrB,OA5kBAynB,EAAOiV,OAAS,WACdlkC,KAAK4jC,YAAa,GAGpB3U,EAAOkV,QAAU,WACfnkC,KAAK4jC,YAAa,GAGpB3U,EAAOmV,cAAgB,WACrBpkC,KAAK4jC,YAAc5jC,KAAK4jC,YAG1B3U,EAAOwB,OAAS,SAAgBvgB,GAC9B,GAAKlQ,KAAK4jC,WAIV,GAAI1zB,EAAO,CACT,IAAIm0B,EAAUrkC,KAAK66B,YAAYyJ,SAC3BpJ,EAAUjP,EAAoB,QAAE/b,EAAM+oB,eAAe/rB,KAAKm3B,GAEzDnJ,IACHA,EAAU,IAAIl7B,KAAK66B,YAAY3qB,EAAM+oB,cAAej5B,KAAKukC,sBACzDtY,EAAoB,QAAE/b,EAAM+oB,eAAe/rB,KAAKm3B,EAASnJ,IAG3DA,EAAQ6I,eAAeS,OAAStJ,EAAQ6I,eAAeS,MAEnDtJ,EAAQuJ,uBACVvJ,EAAQwJ,OAAO,KAAMxJ,GAErBA,EAAQyJ,OAAO,KAAMzJ,OAElB,CACL,GAAIjP,EAAoB,QAAEjsB,KAAK4kC,iBAAiB9U,SAvE9B,QA0EhB,YAFA9vB,KAAK2kC,OAAO,KAAM3kC,MAKpBA,KAAK0kC,OAAO,KAAM1kC,QAItBivB,EAAOO,QAAU,WACfv0B,aAAa+E,KAAK6jC,UAClB5X,EAAoB,QAAEwD,WAAWzvB,KAAKuB,QAASvB,KAAK66B,YAAYyJ,UAChErY,EAAoB,QAAEjsB,KAAKuB,SAASqY,IAAI5Z,KAAK66B,YAAYgK,WACzD5Y,EAAoB,QAAEjsB,KAAKuB,SAASmuB,QAAQ,UAAU9V,IAAI,gBAAiB5Z,KAAK8kC,mBAE5E9kC,KAAKgkC,KACP/X,EAAoB,QAAEjsB,KAAKgkC,KAAK7iB,SAGlCnhB,KAAK4jC,WAAa,KAClB5jC,KAAK6jC,SAAW,KAChB7jC,KAAK8jC,YAAc,KACnB9jC,KAAK+jC,eAAiB,KAElB/jC,KAAK85B,SACP95B,KAAK85B,QAAQzqB,UAGfrP,KAAK85B,QAAU,KACf95B,KAAKuB,QAAU,KACfvB,KAAK2tB,OAAS,KACd3tB,KAAKgkC,IAAM,MAGb/U,EAAOgJ,KAAO,WACZ,IAAI1gB,EAAQvX,KAEZ,GAA2D,SAAvDisB,EAAoB,QAAEjsB,KAAKuB,SAASG,IAAI,WAC1C,MAAM,IAAIwW,MAAM,uCAGlB,IAAIqiB,EAAYtO,EAAoB,QAAE2D,MAAM5vB,KAAK66B,YAAYjL,MAAMuT,MAEnE,GAAInjC,KAAK+kC,iBAAmB/kC,KAAK4jC,WAAY,CAC3C3X,EAAoB,QAAEjsB,KAAKuB,SAAS8rB,QAAQkN,GAC5C,IAAIyK,EAAazY,EAAKwB,eAAe/tB,KAAKuB,SACtC0jC,EAAahZ,EAAoB,QAAE1nB,SAAwB,OAAfygC,EAAsBA,EAAahlC,KAAKuB,QAAQI,cAAcwB,gBAAiBnD,KAAKuB,SAEpI,GAAIg5B,EAAUjL,uBAAyB2V,EACrC,OAGF,IAAIjB,EAAMhkC,KAAK4kC,gBACXM,EAAQ3Y,EAAKG,OAAO1sB,KAAK66B,YAAYhM,MACzCmV,EAAI7sB,aAAa,KAAM+tB,GACvBllC,KAAKuB,QAAQ4V,aAAa,mBAAoB+tB,GAC9CllC,KAAKmlC,aAEDnlC,KAAK2tB,OAAO0U,WACdpW,EAAoB,QAAE+X,GAAK/N,SApIX,QAuIlB,IAAItrB,EAA6C,mBAA1B3K,KAAK2tB,OAAOhjB,UAA2B3K,KAAK2tB,OAAOhjB,UAAUtJ,KAAKrB,KAAMgkC,EAAKhkC,KAAKuB,SAAWvB,KAAK2tB,OAAOhjB,UAE5Hy6B,EAAaplC,KAAKqlC,eAAe16B,GAErC3K,KAAKslC,mBAAmBF,GAExB,IAAI7C,EAAYviC,KAAKulC,gBAErBtZ,EAAoB,QAAE+X,GAAK92B,KAAKlN,KAAK66B,YAAYyJ,SAAUtkC,MAEtDisB,EAAoB,QAAE1nB,SAASvE,KAAKuB,QAAQI,cAAcwB,gBAAiBnD,KAAKgkC,MACnF/X,EAAoB,QAAE+X,GAAK/F,SAASsE,GAGtCtW,EAAoB,QAAEjsB,KAAKuB,SAAS8rB,QAAQrtB,KAAK66B,YAAYjL,MAAMyT,UACnErjC,KAAK85B,QAAU,IAAI5N,EAAyB,QAAElsB,KAAKuB,QAASyiC,EAAKhkC,KAAK06B,iBAAiB0K,IACvFnZ,EAAoB,QAAE+X,GAAK/N,SAtJT,QAuJlBhK,EAAoB,QAAE+X,GAAK/N,SAASj2B,KAAK2tB,OAAO8U,aAK5C,iBAAkBriC,SAAS+C,iBAC7B8oB,EAAoB,QAAE7rB,SAAS+B,MAAMwG,WAAW8Q,GAAG,YAAa,KAAMwS,EAAoB,QAAEhT,MAG9F,IAAIusB,EAAW,WACTjuB,EAAMoW,OAAO0U,WACf9qB,EAAMkuB,iBAGR,IAAIC,EAAiBnuB,EAAMusB,YAC3BvsB,EAAMusB,YAAc,KACpB7X,EAAoB,QAAE1U,EAAMhW,SAAS8rB,QAAQ9V,EAAMsjB,YAAYjL,MAAMwT,OArLvD,QAuLVsC,GACFnuB,EAAMotB,OAAO,KAAMptB,IAIvB,GAAI0U,EAAoB,QAAEjsB,KAAKgkC,KAAKlU,SA/KlB,QA+K+C,CAC/D,IAAI9C,EAAqBT,EAAKQ,iCAAiC/sB,KAAKgkC,KACpE/X,EAAoB,QAAEjsB,KAAKgkC,KAAK1X,IAAIC,EAAKC,eAAgBgZ,GAAUnX,qBAAqBrB,QAExFwY,MAKNvW,EAAOjZ,KAAO,SAAc5X,GAC1B,IAAI2d,EAAS/b,KAETgkC,EAAMhkC,KAAK4kC,gBACXjK,EAAY1O,EAAoB,QAAE2D,MAAM5vB,KAAK66B,YAAYjL,MAAMqT,MAE/DuC,EAAW,WA5MI,SA6MbzpB,EAAO+nB,aAAoCE,EAAIhiC,YACjDgiC,EAAIhiC,WAAW0N,YAAYs0B,GAG7BjoB,EAAO4pB,iBAEP5pB,EAAOxa,QAAQ+N,gBAAgB,oBAE/B2c,EAAoB,QAAElQ,EAAOxa,SAAS8rB,QAAQtR,EAAO8e,YAAYjL,MAAMsT,QAEhD,OAAnBnnB,EAAO+d,SACT/d,EAAO+d,QAAQzqB,UAGbjR,GACFA,KAMJ,GAFA6tB,EAAoB,QAAEjsB,KAAKuB,SAAS8rB,QAAQsN,IAExCA,EAAUrL,qBAAd,CAeA,GAXArD,EAAoB,QAAE+X,GAAKnU,YAvNP,QA0NhB,iBAAkBzvB,SAAS+C,iBAC7B8oB,EAAoB,QAAE7rB,SAAS+B,MAAMwG,WAAWiR,IAAI,YAAa,KAAMqS,EAAoB,QAAEhT,MAG/FjZ,KAAK+jC,eAA4B,OAAI,EACrC/jC,KAAK+jC,eAA4B,OAAI,EACrC/jC,KAAK+jC,eAA4B,OAAI,EAEjC9X,EAAoB,QAAEjsB,KAAKgkC,KAAKlU,SAnOhB,QAmO6C,CAC/D,IAAI9C,EAAqBT,EAAKQ,iCAAiCiX,GAC/D/X,EAAoB,QAAE+X,GAAK1X,IAAIC,EAAKC,eAAgBgZ,GAAUnX,qBAAqBrB,QAEnFwY,IAGFxlC,KAAK8jC,YAAc,KAGrB7U,EAAOrhB,OAAS,WACO,OAAjB5N,KAAK85B,SACP95B,KAAK85B,QAAQvpB,kBAKjB0e,EAAO8V,cAAgB,WACrB,OAAOxX,QAAQvtB,KAAK4lC,aAGtB3W,EAAOqW,mBAAqB,SAA4BF,GACtDnZ,EAAoB,QAAEjsB,KAAK4kC,iBAAiB3O,SAAS4P,cAAqBT,IAG5EnW,EAAO2V,cAAgB,WAErB,OADA5kC,KAAKgkC,IAAMhkC,KAAKgkC,KAAO/X,EAAoB,QAAEjsB,KAAK2tB,OAAO2U,UAAU,GAC5DtiC,KAAKgkC,KAGd/U,EAAOkW,WAAa,WAClB,IAAInB,EAAMhkC,KAAK4kC,gBACf5kC,KAAK8lC,kBAAkB7Z,EAAoB,QAAE+X,EAAIxS,iBAjQxB,mBAiQmExxB,KAAK4lC,YACjG3Z,EAAoB,QAAE+X,GAAKnU,YAAYkW,cAGzC9W,EAAO6W,kBAAoB,SAA2B5V,EAAU7H,GACvC,iBAAZA,IAAyBA,EAAQ5mB,WAAY4mB,EAAQ5Q,OAa5DzX,KAAK2tB,OAAO7oB,MACV9E,KAAK2tB,OAAOzP,WACdmK,EAAUwY,EAAaxY,EAASroB,KAAK2tB,OAAOoT,UAAW/gC,KAAK2tB,OAAOqT,aAGrE9Q,EAASprB,KAAKujB,IAEd6H,EAASxO,KAAK2G,GAlBVroB,KAAK2tB,OAAO7oB,KACTmnB,EAAoB,QAAE5D,GAASzf,SAAS8lB,GAAGwB,IAC9CA,EAAS8V,QAAQC,OAAO5d,GAG1B6H,EAASxO,KAAKuK,EAAoB,QAAE5D,GAAS3G,SAiBnDuN,EAAO2W,SAAW,WAChB,IAAIxsB,EAAQpZ,KAAKuB,QAAQugB,aAAa,uBAMtC,OAJK1I,IACHA,EAAqC,mBAAtBpZ,KAAK2tB,OAAOvU,MAAuBpZ,KAAK2tB,OAAOvU,MAAM/X,KAAKrB,KAAKuB,SAAWvB,KAAK2tB,OAAOvU,OAGhGA,GAIT6V,EAAOyL,iBAAmB,SAA0B0K,GAClD,IAAI9a,EAAStqB,KAyBb,OAAO2H,EAAS,GAvBM,CACpBgD,UAAWy6B,EACXn4B,UAAW,CACTtD,OAAQ3J,KAAKg7B,aACb7sB,KAAM,CACJ4G,SAAU/U,KAAK2tB,OAAO6U,mBAExBzuB,MAAO,CACLxS,QAnTW,UAqTb6R,gBAAiB,CACfjJ,kBAAmBnK,KAAK2tB,OAAO+L,WAGnClrB,SAAU,SAAkBtB,GACtBA,EAAKkB,oBAAsBlB,EAAKvC,WAClC2f,EAAO4b,6BAA6Bh5B,IAGxCqB,SAAU,SAAkBrB,GAC1B,OAAOod,EAAO4b,6BAA6Bh5B,KAGVlN,KAAK2tB,OAAOgM,eAGnD1K,EAAO+L,WAAa,WAClB,IAAIlQ,EAAS9qB,KAET2J,EAAS,GAWb,MATkC,mBAAvB3J,KAAK2tB,OAAOhkB,OACrBA,EAAO9I,GAAK,SAAUqM,GAEpB,OADAA,EAAKlF,QAAUL,EAAS,GAAIuF,EAAKlF,QAAS8iB,EAAO6C,OAAOhkB,OAAOuD,EAAKlF,QAAS8iB,EAAOvpB,UAAY,IACzF2L,GAGTvD,EAAOA,OAAS3J,KAAK2tB,OAAOhkB,OAGvBA,GAGTslB,EAAOsW,cAAgB,WACrB,OAA8B,IAA1BvlC,KAAK2tB,OAAO4U,UACPniC,SAAS+B,KAGdoqB,EAAKiB,UAAUxtB,KAAK2tB,OAAO4U,WACtBtW,EAAoB,QAAEjsB,KAAK2tB,OAAO4U,WAGpCtW,EAAoB,QAAE7rB,UAAUwM,KAAK5M,KAAK2tB,OAAO4U,YAG1DtT,EAAOoW,eAAiB,SAAwB16B,GAC9C,OAAO+3B,EAAc/3B,EAAUsE,gBAGjCggB,EAAOgV,cAAgB,WACrB,IAAI5Y,EAASrrB,KAEEA,KAAK2tB,OAAON,QAAQ7hB,MAAM,KAChCiC,SAAQ,SAAU4f,GACzB,GAAgB,UAAZA,EACFpB,EAAoB,QAAEZ,EAAO9pB,SAASkY,GAAG4R,EAAOwP,YAAYjL,MAAM0T,MAAOjY,EAAOsC,OAAOf,UAAU,SAAU1c,GACzG,OAAOmb,EAAOoF,OAAOvgB,WAElB,GA3WQ,WA2WJmd,EAA4B,CACrC,IAAI8Y,EA/WQ,UA+WE9Y,EAA4BhC,EAAOwP,YAAYjL,MAAM6T,WAAapY,EAAOwP,YAAYjL,MAAM2T,QACrG6C,EAhXQ,UAgXG/Y,EAA4BhC,EAAOwP,YAAYjL,MAAM8T,WAAarY,EAAOwP,YAAYjL,MAAM4T,SAC1GvX,EAAoB,QAAEZ,EAAO9pB,SAASkY,GAAG0sB,EAAS9a,EAAOsC,OAAOf,UAAU,SAAU1c,GAClF,OAAOmb,EAAOqZ,OAAOx0B,MACpBuJ,GAAG2sB,EAAU/a,EAAOsC,OAAOf,UAAU,SAAU1c,GAChD,OAAOmb,EAAOsZ,OAAOz0B,UAK3BlQ,KAAK8kC,kBAAoB,WACnBzZ,EAAO9pB,SACT8pB,EAAOrV,QAIXiW,EAAoB,QAAEjsB,KAAKuB,SAASmuB,QAAQ,UAAUjW,GAAG,gBAAiBzZ,KAAK8kC,mBAE3E9kC,KAAK2tB,OAAOf,SACd5sB,KAAK2tB,OAAShmB,EAAS,GAAI3H,KAAK2tB,OAAQ,CACtCN,QAAS,SACTT,SAAU,KAGZ5sB,KAAKqmC,aAITpX,EAAOoX,UAAY,WACjB,IAAIC,SAAmBtmC,KAAKuB,QAAQugB,aAAa,wBAE7C9hB,KAAKuB,QAAQugB,aAAa,UAA0B,WAAdwkB,KACxCtmC,KAAKuB,QAAQ4V,aAAa,sBAAuBnX,KAAKuB,QAAQugB,aAAa,UAAY,IACvF9hB,KAAKuB,QAAQ4V,aAAa,QAAS,MAIvC8X,EAAOyV,OAAS,SAAgBx0B,EAAOgrB,GACrC,IAAImJ,EAAUrkC,KAAK66B,YAAYyJ,UAC/BpJ,EAAUA,GAAWjP,EAAoB,QAAE/b,EAAM+oB,eAAe/rB,KAAKm3B,MAGnEnJ,EAAU,IAAIl7B,KAAK66B,YAAY3qB,EAAM+oB,cAAej5B,KAAKukC,sBACzDtY,EAAoB,QAAE/b,EAAM+oB,eAAe/rB,KAAKm3B,EAASnJ,IAGvDhrB,IACFgrB,EAAQ6I,eAA8B,YAAf7zB,EAAMoN,KA7Zf,QADA,UA8ZqE,GAGjF2O,EAAoB,QAAEiP,EAAQ0J,iBAAiB9U,SApa/B,SAfD,SAmb+DoL,EAAQ4I,YACxF5I,EAAQ4I,YApbS,QAwbnB7oC,aAAaigC,EAAQ2I,UACrB3I,EAAQ4I,YAzbW,OA2bd5I,EAAQvN,OAAOhuB,OAAUu7B,EAAQvN,OAAOhuB,MAAMs4B,KAKnDiD,EAAQ2I,SAAWhpC,YAAW,WAhcX,SAicbqgC,EAAQ4I,aACV5I,EAAQjD,SAETiD,EAAQvN,OAAOhuB,MAAMs4B,MARtBiD,EAAQjD,SAWZhJ,EAAO0V,OAAS,SAAgBz0B,EAAOgrB,GACrC,IAAImJ,EAAUrkC,KAAK66B,YAAYyJ,UAC/BpJ,EAAUA,GAAWjP,EAAoB,QAAE/b,EAAM+oB,eAAe/rB,KAAKm3B,MAGnEnJ,EAAU,IAAIl7B,KAAK66B,YAAY3qB,EAAM+oB,cAAej5B,KAAKukC,sBACzDtY,EAAoB,QAAE/b,EAAM+oB,eAAe/rB,KAAKm3B,EAASnJ,IAGvDhrB,IACFgrB,EAAQ6I,eAA8B,aAAf7zB,EAAMoN,KA9bf,QADA,UA+bsE,GAGlF4d,EAAQuJ,yBAIZxpC,aAAaigC,EAAQ2I,UACrB3I,EAAQ4I,YAxdU,MA0db5I,EAAQvN,OAAOhuB,OAAUu7B,EAAQvN,OAAOhuB,MAAMqW,KAKnDklB,EAAQ2I,SAAWhpC,YAAW,WA/dZ,QAgeZqgC,EAAQ4I,aACV5I,EAAQllB,SAETklB,EAAQvN,OAAOhuB,MAAMqW,MARtBklB,EAAQllB,SAWZiZ,EAAOwV,qBAAuB,WAC5B,IAAK,IAAIpX,KAAWrtB,KAAK+jC,eACvB,GAAI/jC,KAAK+jC,eAAe1W,GACtB,OAAO,EAIX,OAAO,GAGT4B,EAAOmE,WAAa,SAAoBzF,GACtC,IAAI4Y,EAAiBta,EAAoB,QAAEjsB,KAAKuB,SAAS2L,OA6BzD,OA5BA/F,OAAO4D,KAAKw7B,GAAgB94B,SAAQ,SAAU+4B,IACK,IAA7CrE,EAAsBzhC,QAAQ8lC,WACzBD,EAAeC,MAKE,iBAF5B7Y,EAAShmB,EAAS,GAAI3H,KAAK66B,YAAY9I,QAASwU,EAAkC,iBAAX5Y,GAAuBA,EAASA,EAAS,KAE9FhuB,QAChBguB,EAAOhuB,MAAQ,CACbs4B,KAAMtK,EAAOhuB,MACbqW,KAAM2X,EAAOhuB,QAIW,iBAAjBguB,EAAOvU,QAChBuU,EAAOvU,MAAQuU,EAAOvU,MAAMhY,YAGA,iBAAnBusB,EAAOtF,UAChBsF,EAAOtF,QAAUsF,EAAOtF,QAAQjnB,YAGlCmrB,EAAKkB,gBAAgBuU,EAAQrU,EAAQ3tB,KAAK66B,YAAYvI,aAElD3E,EAAOzP,WACTyP,EAAO2U,SAAWzB,EAAalT,EAAO2U,SAAU3U,EAAOoT,UAAWpT,EAAOqT,aAGpErT,GAGTsB,EAAOsV,mBAAqB,WAC1B,IAAI5W,EAAS,GAEb,GAAI3tB,KAAK2tB,OACP,IAAK,IAAItmB,KAAOrH,KAAK2tB,OACf3tB,KAAK66B,YAAY9I,QAAQ1qB,KAASrH,KAAK2tB,OAAOtmB,KAChDsmB,EAAOtmB,GAAOrH,KAAK2tB,OAAOtmB,IAKhC,OAAOsmB,GAGTsB,EAAO0W,eAAiB,WACtB,IAAIc,EAAOxa,EAAoB,QAAEjsB,KAAK4kC,iBAClC8B,EAAWD,EAAKjO,KAAK,SAAShrB,MAAM00B,GAEvB,OAAbwE,GAAqBA,EAAS7pC,QAChC4pC,EAAK5W,YAAY6W,EAAS7lB,KAAK,MAInCoO,EAAOiX,6BAA+B,SAAsCS,GAC1E3mC,KAAKgkC,IAAM2C,EAAWngC,SAASyD,OAE/BjK,KAAK2lC,iBAEL3lC,KAAKslC,mBAAmBtlC,KAAKqlC,eAAesB,EAAWh8B,aAGzDskB,EAAOwW,eAAiB,WACtB,IAAIzB,EAAMhkC,KAAK4kC,gBACXgC,EAAsB5mC,KAAK2tB,OAAO0U,UAEE,OAApC2B,EAAIliB,aAAa,iBAIrBmK,EAAoB,QAAE+X,GAAKnU,YA3iBP,QA4iBpB7vB,KAAK2tB,OAAO0U,WAAY,EACxBriC,KAAKgW,OACLhW,KAAKi4B,OACLj4B,KAAK2tB,OAAO0U,UAAYuE,IAI1BjD,EAAQ1T,iBAAmB,SAA0BtC,GACnD,OAAO3tB,KAAKqqB,MAAK,WACf,IAAI6F,EAAWjE,EAAoB,QAAEjsB,MACjCkN,EAAOgjB,EAAShjB,KAvnBT,cAynBPimB,EAA4B,iBAAXxF,GAAuBA,EAE5C,IAAKzgB,IAAQ,eAAe1K,KAAKmrB,MAI5BzgB,IACHA,EAAO,IAAIy2B,EAAQ3jC,KAAMmzB,GACzBjD,EAAShjB,KAjoBA,aAioBiBA,IAGN,iBAAXygB,GAAqB,CAC9B,QAA4B,IAAjBzgB,EAAKygB,GACd,MAAM,IAAIjnB,UAAU,oBAAuBinB,EAAS,KAGtDzgB,EAAKygB,UAKX9R,EAAa8nB,EAAS,KAAM,CAAC,CAC3Bt8B,IAAK,UACL4Z,IAAK,WACH,MAlpBU,UAopBX,CACD5Z,IAAK,UACL4Z,IAAK,WACH,OAAO+hB,IAER,CACD37B,IAAK,OACL4Z,IAAK,WACH,OAAO+gB,IAER,CACD36B,IAAK,WACL4Z,IAAK,WACH,MAhqBW,eAkqBZ,CACD5Z,IAAK,QACL4Z,IAAK,WACH,OAAO2O,IAER,CACDvoB,IAAK,YACL4Z,IAAK,WACH,MAzqBY,gBA2qBb,CACD5Z,IAAK,cACL4Z,IAAK,WACH,OAAOmhB,MAIJuB,EApmBkB,GA6mB3B1X,EAAoB,QAAEprB,GAAGmhC,GAAU2B,EAAQ1T,iBAC3ChE,EAAoB,QAAEprB,GAAGmhC,GAAQv7B,YAAck9B,EAE/C1X,EAAoB,QAAEprB,GAAGmhC,GAAQziB,WAAa,WAE5C,OADA0M,EAAoB,QAAEprB,GAAGmhC,GAAUC,EAC5B0B,EAAQ1T,kBASjB,IAAI4W,EAAS,UAITC,EAAuB7a,EAAoB,QAAEprB,GAAGgmC,GAEhDE,GAAuB,IAAI9qB,OAAO,wBAAqC,KAEvE+qB,GAAYr/B,EAAS,GAAIg8B,EAAQ5R,QAAS,CAC5CpnB,UAAW,QACX0iB,QAAS,QACThF,QAAS,GACTia,SAAU,wIAGR2E,GAAgBt/B,EAAS,GAAIg8B,EAAQrR,YAAa,CACpDjK,QAAS,8BAOP6e,GAAU,CACZjE,KAAM,kBACNC,OAAQ,oBACRC,KAAM,kBACNC,MAAO,mBACPC,SAAU,sBACVC,MAAO,mBACPC,QAAS,qBACTC,SAAU,sBACVC,WAAY,wBACZC,WAAY,yBAQVyD,GAAuB,SAAUC,GAx6GrC,IAAwBC,EAAUC,EA26GhC,SAASH,IACP,OAAOC,EAASrnC,MAAMC,KAAMC,YAAcD,KA56GZsnC,EAy6GRF,GAz6GFC,EAy6GPF,GAx6GN3/B,UAAYL,OAAOogC,OAAOD,EAAW9/B,WAC9C6/B,EAAS7/B,UAAUqzB,YAAcwM,EACjCA,EAASG,UAAYF,EA46GrB,IAAIrY,EAASkY,EAAQ3/B,UA6GrB,OA1GAynB,EAAO8V,cAAgB,WACrB,OAAO/kC,KAAK4lC,YAAc5lC,KAAKynC,eAGjCxY,EAAOqW,mBAAqB,SAA4BF,GACtDnZ,EAAoB,QAAEjsB,KAAK4kC,iBAAiB3O,SAASyR,cAAuBtC,IAG9EnW,EAAO2V,cAAgB,WAErB,OADA5kC,KAAKgkC,IAAMhkC,KAAKgkC,KAAO/X,EAAoB,QAAEjsB,KAAK2tB,OAAO2U,UAAU,GAC5DtiC,KAAKgkC,KAGd/U,EAAOkW,WAAa,WAClB,IAAIsB,EAAOxa,EAAoB,QAAEjsB,KAAK4kC,iBAEtC5kC,KAAK8lC,kBAAkBW,EAAK75B,KA9CX,mBA8CiC5M,KAAK4lC,YAEvD,IAAIvd,EAAUroB,KAAKynC,cAEI,mBAAZpf,IACTA,EAAUA,EAAQhnB,KAAKrB,KAAKuB,UAG9BvB,KAAK8lC,kBAAkBW,EAAK75B,KArDT,iBAqDiCyb,GACpDoe,EAAK5W,YAAY8X,cAInB1Y,EAAOwY,YAAc,WACnB,OAAOznC,KAAKuB,QAAQugB,aAAa,iBAAmB9hB,KAAK2tB,OAAOtF,SAGlE4G,EAAO0W,eAAiB,WACtB,IAAIc,EAAOxa,EAAoB,QAAEjsB,KAAK4kC,iBAClC8B,EAAWD,EAAKjO,KAAK,SAAShrB,MAAMu5B,IAEvB,OAAbL,GAAqBA,EAAS7pC,OAAS,GACzC4pC,EAAK5W,YAAY6W,EAAS7lB,KAAK,MAKnCsmB,EAAQlX,iBAAmB,SAA0BtC,GACnD,OAAO3tB,KAAKqqB,MAAK,WACf,IAAInd,EAAO+e,EAAoB,QAAEjsB,MAAMkN,KA9F5B,cAgGPimB,EAA4B,iBAAXxF,EAAsBA,EAAS,KAEpD,IAAKzgB,IAAQ,eAAe1K,KAAKmrB,MAI5BzgB,IACHA,EAAO,IAAIi6B,EAAQnnC,KAAMmzB,GACzBlH,EAAoB,QAAEjsB,MAAMkN,KAxGnB,aAwGoCA,IAGzB,iBAAXygB,GAAqB,CAC9B,QAA4B,IAAjBzgB,EAAKygB,GACd,MAAM,IAAIjnB,UAAU,oBAAuBinB,EAAS,KAGtDzgB,EAAKygB,UAKX9R,EAAasrB,EAAS,KAAM,CAAC,CAC3B9/B,IAAK,UAEL4Z,IAAK,WACH,MA1HU,UA4HX,CACD5Z,IAAK,UACL4Z,IAAK,WACH,OAAO+lB,KAER,CACD3/B,IAAK,OACL4Z,IAAK,WACH,OAAO4lB,IAER,CACDx/B,IAAK,WACL4Z,IAAK,WACH,MAxIW,eA0IZ,CACD5Z,IAAK,QACL4Z,IAAK,WACH,OAAOimB,KAER,CACD7/B,IAAK,YACL4Z,IAAK,WACH,MAjJY,gBAmJb,CACD5Z,IAAK,cACL4Z,IAAK,WACH,OAAOgmB,OAIJE,EApHkB,CAqHzBxD,GAQF1X,EAAoB,QAAEprB,GAAGgmC,GAAUM,GAAQlX,iBAC3ChE,EAAoB,QAAEprB,GAAGgmC,GAAQpgC,YAAc0gC,GAE/Clb,EAAoB,QAAEprB,GAAGgmC,GAAQtnB,WAAa,WAE5C,OADA0M,EAAoB,QAAEprB,GAAGgmC,GAAUC,EAC5BK,GAAQlX,kBASjB,IAAI2X,GAAS,YAKTC,GAAuB5b,EAAoB,QAAEprB,GAAG+mC,IAChDE,GAAY,CACdn+B,OAAQ,GACRo+B,OAAQ,OACRlhC,OAAQ,IAENmhC,GAAgB,CAClBr+B,OAAQ,SACRo+B,OAAQ,SACRlhC,OAAQ,oBAuBNohC,GAAyB,WAC3B,SAASA,EAAU1mC,EAASosB,GAC1B,IAAIpW,EAAQvX,KAEZA,KAAKgvB,SAAWztB,EAChBvB,KAAKkoC,eAAqC,SAApB3mC,EAAQ+vB,QAAqBl3B,OAASmH,EAC5DvB,KAAKmzB,QAAUnzB,KAAKozB,WAAWzF,GAC/B3tB,KAAK63B,UAAY73B,KAAKmzB,QAAQtsB,OAAb7G,cAAwDA,KAAKmzB,QAAQtsB,OAAd,qBAA2D7G,KAAKmzB,QAAQtsB,OAAd,kBAClI7G,KAAKmoC,SAAW,GAChBnoC,KAAKooC,SAAW,GAChBpoC,KAAKqoC,cAAgB,KACrBroC,KAAKsoC,cAAgB,EACrBrc,EAAoB,QAAEjsB,KAAKkoC,gBAAgBzuB,GAhC5B,uBAgC6C,SAAUvJ,GACpE,OAAOqH,EAAMgxB,SAASr4B,MAExBlQ,KAAKwoC,UAELxoC,KAAKuoC,WAIP,IAAItZ,EAASgZ,EAAUzgC,UAmMvB,OAhMAynB,EAAOuZ,QAAU,WACf,IAAIzsB,EAAS/b,KAETyoC,EAAazoC,KAAKkoC,iBAAmBloC,KAAKkoC,eAAe9tC,OAnC7C,SACE,WAmCdsuC,EAAuC,SAAxB1oC,KAAKmzB,QAAQ4U,OAAoBU,EAAazoC,KAAKmzB,QAAQ4U,OAC1EY,EApCc,aAoCDD,EAAmC1oC,KAAK4oC,gBAAkB,EAC3E5oC,KAAKmoC,SAAW,GAChBnoC,KAAKooC,SAAW,GAChBpoC,KAAKsoC,cAAgBtoC,KAAK6oC,mBACZ,GAAGz7B,MAAM/L,KAAKjB,SAASoxB,iBAAiBxxB,KAAK63B,YACnD7sB,KAAI,SAAUzJ,GACpB,IAAIsF,EACAiiC,EAAiBvc,EAAKI,uBAAuBprB,GAMjD,GAJIunC,IACFjiC,EAASzG,SAAS8T,cAAc40B,IAG9BjiC,EAAQ,CACV,IAAIkiC,EAAYliC,EAAOoB,wBAEvB,GAAI8gC,EAAUziC,OAASyiC,EAAU1iC,OAE/B,MAAO,CAAC4lB,EAAoB,QAAEplB,GAAQ6hC,KAAgBpjC,IAAMqjC,EAAYG,GAI5E,OAAO,QACN19B,QAAO,SAAUmwB,GAClB,OAAOA,KACNrwB,MAAK,SAAUzQ,EAAGG,GACnB,OAAOH,EAAE,GAAKG,EAAE,MACf6S,SAAQ,SAAU8tB,GACnBxf,EAAOosB,SAASrrC,KAAKy+B,EAAK,IAE1Bxf,EAAOqsB,SAAStrC,KAAKy+B,EAAK,QAI9BtM,EAAOO,QAAU,WACfvD,EAAoB,QAAEwD,WAAWzvB,KAAKgvB,SAnGzB,gBAoGb/C,EAAoB,QAAEjsB,KAAKkoC,gBAAgBtuB,IAnG7B,iBAoGd5Z,KAAKgvB,SAAW,KAChBhvB,KAAKkoC,eAAiB,KACtBloC,KAAKmzB,QAAU,KACfnzB,KAAK63B,UAAY,KACjB73B,KAAKmoC,SAAW,KAChBnoC,KAAKooC,SAAW,KAChBpoC,KAAKqoC,cAAgB,KACrBroC,KAAKsoC,cAAgB,MAIvBrZ,EAAOmE,WAAa,SAAoBzF,GAGtC,GAA6B,iBAF7BA,EAAShmB,EAAS,GAAImgC,GAA6B,iBAAXna,GAAuBA,EAASA,EAAS,KAE/D9mB,QAAuB0lB,EAAKiB,UAAUG,EAAO9mB,QAAS,CACtE,IAAInJ,EAAKuuB,EAAoB,QAAE0B,EAAO9mB,QAAQ2xB,KAAK,MAE9C96B,IACHA,EAAK6uB,EAAKG,OAAOkb,IACjB3b,EAAoB,QAAE0B,EAAO9mB,QAAQ2xB,KAAK,KAAM96B,IAGlDiwB,EAAO9mB,OAAS,IAAMnJ,EAIxB,OADA6uB,EAAKkB,gBAAgBma,GAAQja,EAAQqa,IAC9Bra,GAGTsB,EAAO2Z,cAAgB,WACrB,OAAO5oC,KAAKkoC,iBAAmB9tC,OAAS4F,KAAKkoC,eAAec,YAAchpC,KAAKkoC,eAAe/iC,WAGhG8pB,EAAO4Z,iBAAmB,WACxB,OAAO7oC,KAAKkoC,eAAene,cAAgB5tB,KAAK+J,IAAI9F,SAAS+B,KAAK4nB,aAAc3pB,SAAS+C,gBAAgB4mB,eAG3GkF,EAAOga,iBAAmB,WACxB,OAAOjpC,KAAKkoC,iBAAmB9tC,OAASA,OAAOsP,YAAc1J,KAAKkoC,eAAejgC,wBAAwB5B,QAG3G4oB,EAAOsZ,SAAW,WAChB,IAAIpjC,EAAYnF,KAAK4oC,gBAAkB5oC,KAAKmzB,QAAQxpB,OAEhDogB,EAAe/pB,KAAK6oC,mBAEpBK,EAAYlpC,KAAKmzB,QAAQxpB,OAASogB,EAAe/pB,KAAKipC,mBAM1D,GAJIjpC,KAAKsoC,gBAAkBve,GACzB/pB,KAAKwoC,UAGHrjC,GAAa+jC,EAAjB,CACE,IAAIriC,EAAS7G,KAAKooC,SAASpoC,KAAKooC,SAASvrC,OAAS,GAE9CmD,KAAKqoC,gBAAkBxhC,GACzB7G,KAAKmpC,UAAUtiC,OAJnB,CAUA,GAAI7G,KAAKqoC,eAAiBljC,EAAYnF,KAAKmoC,SAAS,IAAMnoC,KAAKmoC,SAAS,GAAK,EAK3E,OAJAnoC,KAAKqoC,cAAgB,UAErBroC,KAAKopC,SAKP,IAAK,IAAI5oC,EAAIR,KAAKmoC,SAAStrC,OAAQ2D,KACZR,KAAKqoC,gBAAkBroC,KAAKooC,SAAS5nC,IAAM2E,GAAanF,KAAKmoC,SAAS3nC,UAAuC,IAAzBR,KAAKmoC,SAAS3nC,EAAI,IAAsB2E,EAAYnF,KAAKmoC,SAAS3nC,EAAI,KAG7KR,KAAKmpC,UAAUnpC,KAAKooC,SAAS5nC,MAKnCyuB,EAAOka,UAAY,SAAmBtiC,GACpC7G,KAAKqoC,cAAgBxhC,EAErB7G,KAAKopC,SAEL,IAAIC,EAAUrpC,KAAK63B,UAAUrsB,MAAM,KAAKR,KAAI,SAAU4hB,GACpD,OAAOA,EAAW,iBAAoB/lB,EAAS,MAAS+lB,EAAW,UAAa/lB,EAAS,QAGvFyiC,EAAQrd,EAAoB,QAAE,GAAG7e,MAAM/L,KAAKjB,SAASoxB,iBAAiB6X,EAAQxoB,KAAK,QAEnFyoB,EAAMxZ,SA9KiB,kBA+KzBwZ,EAAM5Z,QAxKY,aAwKe9iB,KAtKR,oBAsKuCqpB,SA9K5C,UA+KpBqT,EAAMrT,SA/Kc,YAkLpBqT,EAAMrT,SAlLc,UAqLpBqT,EAAMC,QAnLkB,qBAmLevV,KAAKwV,+BAAiDvT,SArLzE,UAuLpBqT,EAAMC,QArLkB,qBAqLevV,KAnLpB,aAmL6CrrB,SApL7C,aAoL0EstB,SAvLzE,WA0LtBhK,EAAoB,QAAEjsB,KAAKkoC,gBAAgB7a,QA9L1B,wBA8LkD,CACjEoI,cAAe5uB,KAInBooB,EAAOma,OAAS,WACd,GAAGh8B,MAAM/L,KAAKjB,SAASoxB,iBAAiBxxB,KAAK63B,YAAYzsB,QAAO,SAAU5H,GACxE,OAAOA,EAAKmgB,UAAUpf,SAjMF,aAkMnBkJ,SAAQ,SAAUjK,GACnB,OAAOA,EAAKmgB,UAAUxC,OAnMF,cAwMxB8mB,EAAUhY,iBAAmB,SAA0BtC,GACrD,OAAO3tB,KAAKqqB,MAAK,WACf,IAAInd,EAAO+e,EAAoB,QAAEjsB,MAAMkN,KA5N5B,gBAqOX,GALKA,IACHA,EAAO,IAAI+6B,EAAUjoC,KAHS,iBAAX2tB,GAAuBA,GAI1C1B,EAAoB,QAAEjsB,MAAMkN,KAlOnB,eAkOoCA,IAGzB,iBAAXygB,EAAqB,CAC9B,QAA4B,IAAjBzgB,EAAKygB,GACd,MAAM,IAAIjnB,UAAU,oBAAuBinB,EAAS,KAGtDzgB,EAAKygB,UAKX9R,EAAaosB,EAAW,KAAM,CAAC,CAC7B5gC,IAAK,UACL4Z,IAAK,WACH,MAnPU,UAqPX,CACD5Z,IAAK,UACL4Z,IAAK,WACH,OAAO6mB,OAIJG,EAxNoB,GAiO7Bhc,EAAoB,QAAE7xB,QAAQqf,GApPF,8BAoP4B,WAItD,IAHA,IAAIgwB,EAAa,GAAGr8B,MAAM/L,KAAKjB,SAASoxB,iBAlPlB,wBAqPbhxB,EAFcipC,EAAW5sC,OAEH2D,KAAM,CACnC,IAAIkpC,EAAOzd,EAAoB,QAAEwd,EAAWjpC,IAE5CynC,GAAUhY,iBAAiB5uB,KAAKqoC,EAAMA,EAAKx8B,YAS/C+e,EAAoB,QAAEprB,GAAG+mC,IAAUK,GAAUhY,iBAC7ChE,EAAoB,QAAEprB,GAAG+mC,IAAQnhC,YAAcwhC,GAE/Chc,EAAoB,QAAEprB,GAAG+mC,IAAQroB,WAAa,WAE5C,OADA0M,EAAoB,QAAEprB,GAAG+mC,IAAUC,GAC5BI,GAAUhY,kBASnB,IAKI0Z,GAAuB1d,EAAoB,QAAEprB,GAAS,IAwBtD+oC,GAAmB,WACrB,SAASA,EAAIroC,GACXvB,KAAKgvB,SAAWztB,EAIlB,IAAI0tB,EAAS2a,EAAIpiC,UA6JjB,OA1JAynB,EAAOgJ,KAAO,WACZ,IAAI1gB,EAAQvX,KAEZ,KAAIA,KAAKgvB,SAAShtB,YAAchC,KAAKgvB,SAAShtB,WAAWP,WAAaqC,KAAKs5B,cAAgBnR,EAAoB,QAAEjsB,KAAKgvB,UAAUc,SA7B1G,WA6B2I7D,EAAoB,QAAEjsB,KAAKgvB,UAAUc,SA5B9K,aA4BxB,CAIA,IAAIjpB,EACAgjC,EACAC,EAAc7d,EAAoB,QAAEjsB,KAAKgvB,UAAUU,QA9B3B,qBA8B8D,GACtF9C,EAAWL,EAAKI,uBAAuB3sB,KAAKgvB,UAEhD,GAAI8a,EAAa,CACf,IAAIC,EAAwC,OAAzBD,EAAY/nC,UAA8C,OAAzB+nC,EAAY/nC,SAhC7C,iBADD,UAmClB8nC,GADAA,EAAW5d,EAAoB,QAAE+d,UAAU/d,EAAoB,QAAE6d,GAAal9B,KAAKm9B,KAC/DF,EAAShtC,OAAS,GAGxC,IAAI89B,EAAY1O,EAAoB,QAAE2D,MAlDvB,cAkD2C,CACxD6F,cAAez1B,KAAKgvB,WAElBuL,EAAYtO,EAAoB,QAAE2D,MAnDvB,cAmD2C,CACxD6F,cAAeoU,IASjB,GANIA,GACF5d,EAAoB,QAAE4d,GAAUxc,QAAQsN,GAG1C1O,EAAoB,QAAEjsB,KAAKgvB,UAAU3B,QAAQkN,IAEzCA,EAAUjL,uBAAwBqL,EAAUrL,qBAAhD,CAII1C,IACF/lB,EAASzG,SAAS8T,cAAc0Y,IAGlC5sB,KAAKmpC,UAAUnpC,KAAKgvB,SAAU8a,GAE9B,IAAItE,EAAW,WACb,IAAIyE,EAAche,EAAoB,QAAE2D,MAzEzB,gBAyE+C,CAC5D6F,cAAele,EAAMyX,WAEnBsO,EAAarR,EAAoB,QAAE2D,MA1EzB,eA0E8C,CAC1D6F,cAAeoU,IAEjB5d,EAAoB,QAAE4d,GAAUxc,QAAQ4c,GACxChe,EAAoB,QAAE1U,EAAMyX,UAAU3B,QAAQiQ,IAG5Cz2B,EACF7G,KAAKmpC,UAAUtiC,EAAQA,EAAO7E,WAAYwjC,GAE1CA,OAIJvW,EAAOO,QAAU,WACfvD,EAAoB,QAAEwD,WAAWzvB,KAAKgvB,SAhGzB,UAiGbhvB,KAAKgvB,SAAW,MAIlBC,EAAOka,UAAY,SAAmB5nC,EAASghC,EAAWnkC,GACxD,IAAI2d,EAAS/b,KAGTkqC,IADiB3H,GAAqC,OAAvBA,EAAUxgC,UAA4C,OAAvBwgC,EAAUxgC,SAAiFkqB,EAAoB,QAAEsW,GAAW55B,SAxF1K,WAwF6EsjB,EAAoB,QAAEsW,GAAW31B,KAvF7G,mBAwFO,GACxBisB,EAAkBz6B,GAAY8rC,GAAUje,EAAoB,QAAEie,GAAQpa,SA9FtD,QAgGhB0V,EAAW,WACb,OAAOzpB,EAAOouB,oBAAoB5oC,EAAS2oC,EAAQ9rC,IAGrD,GAAI8rC,GAAUrR,EAAiB,CAC7B,IAAI7L,EAAqBT,EAAKQ,iCAAiCmd,GAC/Dje,EAAoB,QAAEie,GAAQra,YArGZ,QAqG2CvD,IAAIC,EAAKC,eAAgBgZ,GAAUnX,qBAAqBrB,QAErHwY,KAIJvW,EAAOkb,oBAAsB,SAA6B5oC,EAAS2oC,EAAQ9rC,GACzE,GAAI8rC,EAAQ,CACVje,EAAoB,QAAEie,GAAQra,YAhHV,UAiHpB,IAAIua,EAAgBne,EAAoB,QAAEie,EAAOloC,YAAY4K,KAvG9B,4BAuGmE,GAE9Fw9B,GACFne,EAAoB,QAAEme,GAAeva,YApHnB,UAuHgB,QAAhCqa,EAAOpoB,aAAa,SACtBooB,EAAO/yB,aAAa,iBAAiB,GAgBzC,GAZA8U,EAAoB,QAAE1qB,GAAS00B,SA5HT,UA8He,QAAjC10B,EAAQugB,aAAa,SACvBvgB,EAAQ4V,aAAa,iBAAiB,GAGxCoV,EAAKa,OAAO7rB,GAERA,EAAQoiB,UAAUpf,SAlIF,SAmIlBhD,EAAQoiB,UAAUC,IAlIA,QAqIhBriB,EAAQS,YAAciqB,EAAoB,QAAE1qB,EAAQS,YAAY8tB,SAzIzC,iBAyI6E,CACtG,IAAIua,EAAkBpe,EAAoB,QAAE1qB,GAASmuB,QArIjC,aAqI8D,GAElF,GAAI2a,EAAiB,CACnB,IAAIC,EAAqB,GAAGl9B,MAAM/L,KAAKgpC,EAAgB7Y,iBAnI9B,qBAoIzBvF,EAAoB,QAAEqe,GAAoBrU,SA7IxB,UAgJpB10B,EAAQ4V,aAAa,iBAAiB,GAGpC/Y,GACFA,KAKJwrC,EAAI3Z,iBAAmB,SAA0BtC,GAC/C,OAAO3tB,KAAKqqB,MAAK,WACf,IAAIkgB,EAAQte,EAAoB,QAAEjsB,MAC9BkN,EAAOq9B,EAAMr9B,KAtKN,UA6KX,GALKA,IACHA,EAAO,IAAI08B,EAAI5pC,MACfuqC,EAAMr9B,KA1KG,SA0KcA,IAGH,iBAAXygB,EAAqB,CAC9B,QAA4B,IAAjBzgB,EAAKygB,GACd,MAAM,IAAIjnB,UAAU,oBAAuBinB,EAAS,KAGtDzgB,EAAKygB,UAKX9R,EAAa+tB,EAAK,KAAM,CAAC,CACvBviC,IAAK,UACL4Z,IAAK,WACH,MA3LU,YA+LP2oB,EAnKc,GA4KvB3d,EAAoB,QAAE7rB,UAAUqZ,GA/LH,wBAUA,mEAqLsD,SAAUvJ,GAC3FA,EAAMmgB,iBAENuZ,GAAI3Z,iBAAiB5uB,KAAK4qB,EAAoB,QAAEjsB,MAAO,WAQzDisB,EAAoB,QAAEprB,GAAS,IAAI+oC,GAAI3Z,iBACvChE,EAAoB,QAAEprB,GAAS,IAAE4F,YAAcmjC,GAE/C3d,EAAoB,QAAEprB,GAAS,IAAE0e,WAAa,WAE5C,OADA0M,EAAoB,QAAEprB,GAAS,IAAI8oC,GAC5BC,GAAI3Z,kBASb,IAIIua,GAAuBve,EAAoB,QAAEprB,GAAS,MAUtD4pC,GAAgB,CAClBpI,UAAW,UACXqI,SAAU,UACV/qC,MAAO,UAELgrC,GAAY,CACdtI,WAAW,EACXqI,UAAU,EACV/qC,MAAO,KASLirC,GAAqB,WACvB,SAASA,EAAMrpC,EAASosB,GACtB3tB,KAAKgvB,SAAWztB,EAChBvB,KAAKmzB,QAAUnzB,KAAKozB,WAAWzF,GAC/B3tB,KAAK6jC,SAAW,KAEhB7jC,KAAKikC,gBAIP,IAAIhV,EAAS2b,EAAMpjC,UA0JnB,OAvJAynB,EAAOgJ,KAAO,WACZ,IAAI1gB,EAAQvX,KAERu6B,EAAYtO,EAAoB,QAAE2D,MAvCvB,iBA0Cf,GAFA3D,EAAoB,QAAEjsB,KAAKgvB,UAAU3B,QAAQkN,IAEzCA,EAAUjL,qBAAd,CAIAtvB,KAAK6qC,gBAED7qC,KAAKmzB,QAAQkP,WACfriC,KAAKgvB,SAASrL,UAAUC,IA/CN,QAkDpB,IAAI4hB,EAAW,WACbjuB,EAAMyX,SAASrL,UAAUxC,OAhDN,WAkDnB5J,EAAMyX,SAASrL,UAAUC,IAnDP,QAqDlBqI,EAAoB,QAAE1U,EAAMyX,UAAU3B,QAxDxB,kBA0DV9V,EAAM4b,QAAQuX,WAChBnzB,EAAMssB,SAAWhpC,YAAW,WAC1B0c,EAAMvB,SACLuB,EAAM4b,QAAQxzB,SAUrB,GANAK,KAAKgvB,SAASrL,UAAUxC,OA/DN,QAiElBoL,EAAKa,OAAOptB,KAAKgvB,UAEjBhvB,KAAKgvB,SAASrL,UAAUC,IAjEH,WAmEjB5jB,KAAKmzB,QAAQkP,UAAW,CAC1B,IAAIrV,EAAqBT,EAAKQ,iCAAiC/sB,KAAKgvB,UACpE/C,EAAoB,QAAEjsB,KAAKgvB,UAAU1C,IAAIC,EAAKC,eAAgBgZ,GAAUnX,qBAAqBrB,QAE7FwY,MAIJvW,EAAOjZ,KAAO,WACZ,GAAKhW,KAAKgvB,SAASrL,UAAUpf,SA7ET,QA6EpB,CAIA,IAAIo2B,EAAY1O,EAAoB,QAAE2D,MAvFvB,iBAwFf3D,EAAoB,QAAEjsB,KAAKgvB,UAAU3B,QAAQsN,GAEzCA,EAAUrL,sBAIdtvB,KAAK8qC,WAGP7b,EAAOO,QAAU,WACfxvB,KAAK6qC,gBAED7qC,KAAKgvB,SAASrL,UAAUpf,SA9FR,SA+FlBvE,KAAKgvB,SAASrL,UAAUxC,OA/FN,QAkGpB8K,EAAoB,QAAEjsB,KAAKgvB,UAAUpV,IAzGb,0BA0GxBqS,EAAoB,QAAEwD,WAAWzvB,KAAKgvB,SA7GzB,YA8GbhvB,KAAKgvB,SAAW,KAChBhvB,KAAKmzB,QAAU,MAIjBlE,EAAOmE,WAAa,SAAoBzF,GAGtC,OAFAA,EAAShmB,EAAS,GAAIgjC,GAAW1e,EAAoB,QAAEjsB,KAAKgvB,UAAU9hB,OAA0B,iBAAXygB,GAAuBA,EAASA,EAAS,IAC9HpB,EAAKkB,gBAvHI,QAuHoBE,EAAQ3tB,KAAK66B,YAAYvI,aAC/C3E,GAGTsB,EAAOgV,cAAgB,WACrB,IAAIloB,EAAS/b,KAEbisB,EAAoB,QAAEjsB,KAAKgvB,UAAUvV,GAzHb,yBAmBE,0BAsG8D,WACtF,OAAOsC,EAAO/F,WAIlBiZ,EAAO6b,OAAS,WACd,IAAIxgB,EAAStqB,KAETwlC,EAAW,WACblb,EAAO0E,SAASrL,UAAUC,IA5HV,QA8HhBqI,EAAoB,QAAE3B,EAAO0E,UAAU3B,QAlIxB,oBAuIjB,GAFArtB,KAAKgvB,SAASrL,UAAUxC,OAhIJ,QAkIhBnhB,KAAKmzB,QAAQkP,UAAW,CAC1B,IAAIrV,EAAqBT,EAAKQ,iCAAiC/sB,KAAKgvB,UACpE/C,EAAoB,QAAEjsB,KAAKgvB,UAAU1C,IAAIC,EAAKC,eAAgBgZ,GAAUnX,qBAAqBrB,QAE7FwY,KAIJvW,EAAO4b,cAAgB,WACrB5vC,aAAa+E,KAAK6jC,UAClB7jC,KAAK6jC,SAAW,MAIlB+G,EAAM3a,iBAAmB,SAA0BtC,GACjD,OAAO3tB,KAAKqqB,MAAK,WACf,IAAI6F,EAAWjE,EAAoB,QAAEjsB,MACjCkN,EAAOgjB,EAAShjB,KA7JT,YAsKX,GALKA,IACHA,EAAO,IAAI09B,EAAM5qC,KAHa,iBAAX2tB,GAAuBA,GAI1CuC,EAAShjB,KAnKA,WAmKiBA,IAGN,iBAAXygB,EAAqB,CAC9B,QAA4B,IAAjBzgB,EAAKygB,GACd,MAAM,IAAIjnB,UAAU,oBAAuBinB,EAAS,KAGtDzgB,EAAKygB,GAAQ3tB,WAKnB6b,EAAa+uB,EAAO,KAAM,CAAC,CACzBvjC,IAAK,UACL4Z,IAAK,WACH,MApLU,UAsLX,CACD5Z,IAAK,cACL4Z,IAAK,WACH,OAAOwpB,KAER,CACDpjC,IAAK,UACL4Z,IAAK,WACH,OAAO0pB,OAIJC,EApKgB,GA6KzB3e,EAAoB,QAAEprB,GAAS,MAAI+pC,GAAM3a,iBACzChE,EAAoB,QAAEprB,GAAS,MAAE4F,YAAcmkC,GAE/C3e,EAAoB,QAAEprB,GAAS,MAAE0e,WAAa,WAE5C,OADA0M,EAAoB,QAAEprB,GAAS,MAAI2pC,GAC5BI,GAAM3a,kBAGfv1B,EAAQq0B,MAAQA,EAChBr0B,EAAQ61B,OAASA,EACjB71B,EAAQg4B,SAAWA,EACnBh4B,EAAQ48B,SAAWA,EACnB58B,EAAQm/B,SAAWA,EACnBn/B,EAAQmhC,MAAQA,EAChBnhC,EAAQysC,QAAUA,GAClBzsC,EAAQqwC,UAAY9C,GACpBvtC,EAAQkvC,IAAMA,GACdlvC,EAAQkwC,MAAQA,GAChBlwC,EAAQipC,QAAUA,EAClBjpC,EAAQ6xB,KAAOA,EAEfplB,OAAOC,eAAe1M,EAAS,aAAc,CAAEgN,OAAO,IAt0ISuX,CAAQvkB,EAAS,EAAQ,QAAW,EAAQ,U,qsnBCN7G,YACA8f,GAAE,WAEE,IAAMrY,EAAO/B,SAAS+B,KAGlB6oC,EAAa,EACXC,EAAa7qC,SAAS8T,cAAc,8BA0D1C,SAASg3B,IAA4B,IAAdx/B,EAAQ,UAAH,6CAAG,KACrBy/B,EAAU3wB,EAAE,qBACZ4wB,EAAa5wB,EAAE,qBACf6wB,EAAM7wB,EAAE,QACR8wB,EAAY9wB,EAAEpgB,QAAQ+K,YACtBomC,EAAgB,MAAT7/B,GAAiBA,EAAyC,QAAjCy/B,EAAQ3S,KAAK,iBAE/C+S,GACAF,EAAI3pC,IAAI,cAAe,CAAC4pC,cAAYzb,YAAY,eAChDub,EAAWvb,YAAY,4BACvBsb,EAAQ3S,KAAK,iBAAiB,GAAO3I,YAAY,+BAEjDwb,EAAI3pC,IAAI,aAAc,IAAIu0B,SAAS,eACnCmV,EAAWnV,SAAS,4BACpBkV,EAAQ3S,KAAK,iBAAiB,GAAMvC,SAAS,8BAvErD77B,OAAO0V,iBAAiB,UAAU,WAC9B,IAAM07B,EAAgBpxC,OAAO4uC,YAEzBwC,GAAiB,EACjBrpC,EAAKwhB,UAAUxC,OARN,cAYTqqB,EAAgBR,IAAe7oC,EAAKwhB,UAAUpf,SAXnC,gBAaXpC,EAAKwhB,UAAUxC,OAdN,aAeThf,EAAKwhB,UAAUC,IAdJ,gBAeJ4nB,EAAgBR,GAAc7oC,EAAKwhB,UAAUpf,SAfzC,iBAiBXpC,EAAKwhB,UAAUxC,OAjBJ,eAkBXhf,EAAKwhB,UAAUC,IAnBN,cAsBbonB,EAAaQ,MAGbP,GACAA,EAAWn7B,iBAAiB,UAAU,SAAC9S,GACnCA,EAAEqzB,iBACF,IAAMO,EAAQqa,EAAW/2B,cAAc,0CACnC0c,EAAMlpB,MAAM7K,OAAS,IACrBzC,OAAO6rB,SAAW,WAAH,OAAc2K,EAAMlpB,WAyB/C8S,EAAE,0BAA0Bf,GAAG,SAAS,WAnBxC,IACU0xB,EACAC,EACAC,EACAI,EACAH,EAeNJ,GAAc,GAnBRC,EAAU3wB,EAAE,iBACZ4wB,EAAa5wB,EAAE,0BACf6wB,EAAM7wB,EAAE,QACRixB,EAAOjxB,EAAE,SACT8wB,EAAY9wB,EAAEpgB,QAAQ+K,YAES,QAAjCgmC,EAAQ3S,KAAK,kBACb6S,EAAI3pC,IAAI,cAAe,CAAC4pC,cAAYzb,YAAY,eAChDub,EAAWvb,YAAY,iCACvBsb,EAAQ3S,KAAK,iBAAiB,GAAO3I,YAAY,yBACjD4b,EAAK5b,YAAY,gBAEjBwb,EAAI3pC,IAAI,aAAc,IAAIu0B,SAAS,eACnCmV,EAAWnV,SAAS,iCACpBkV,EAAQ3S,KAAK,iBAAiB,GAAMvC,SAAS,yBAC7CwV,EAAKxV,SAAS,kBA0BtBzb,EAAE,qBAAqBf,GAAG,SAAS,SAASzc,GACxCkuC,OAEJ1wB,EAAE,qBAAqBf,GAAG,SAAS,SAASzc,GACpCwd,EAAExd,EAAE6J,QAAQ6nB,GAAG,sBACfwc,OAgBR1wB,EAAE,+BAA+Bf,GAAG,SAAS,SAASzc,GAZtD,IAAuC6J,EAC7B6kC,EACAC,EAF6B9kC,EAaL7J,EAAEi8B,cAZ1ByS,EAAgB7kC,EAChB8kC,EAAY9kC,EAAO7E,WAAW4pC,uBAAuB,0BAA0B,GAEjFF,EAAc/nB,UAAUpf,SAAS,uCACjCmnC,EAAc/nB,UAAUxC,OAAO,sCAC/BwqB,EAAUhoB,UAAUxC,OAAO,qCAE3BuqB,EAAc/nB,UAAUC,IAAI,sCAC5B+nB,EAAUhoB,UAAUC,IAAI,4C,44CCpGV,IAEpBkI,EAAUzQ,a,kOAAAA,U,MAAAA,OACZ,WAAYvU,GAAO,MAW8C,O,4FAX9C,UACfyQ,cAAMzQ,IAED4E,MAAS,CACVmgC,SAAS,EACTC,YAAY,GAGhBv0B,EAAKw0B,aAAex0B,EAAKw0B,aAAav0B,KAAK,EAAD,IAC1CD,EAAKy0B,aAAez0B,EAAKy0B,aAAax0B,KAAK,EAAD,IAC1CD,EAAK00B,aAAe10B,EAAK00B,aAAaz0B,KAAK,EAAD,IAC1CD,EAAK20B,mBAAqB30B,EAAK20B,mBAAmB10B,KAAK,EAAD,IAAO,EAqIhE,O,EApIAqE,G,EAAAA,iCAED,WAAqB,WACU,YAAvB7b,KAAK8G,MAAMid,WACN/jB,KAAKmsC,qBAAwBnsC,KAAK0L,MAAMmgC,SAAsC,cAA3B7rC,KAAK8G,MAAMqf,cAC/DnmB,KAAK8b,UAAS,iBAAO,CACjB+vB,SAAU9vB,EAAKowB,2BAI9B,+BAED,WAAoB,WAEhB,OADwBnsC,KAAK8G,MAAMyX,WAAWnR,MAAM,EAAG,IAChCuB,MAAK,SAAAy9B,GAAG,OAAIA,EAAIC,OAAS/hB,EAAKxjB,MAAMqf,kBAC9D,0BAED,SAAajW,GACT9V,OAAO6rB,SAAW/V,EAAMrJ,OAAOa,QAClC,0BAED,WAAe,WACX1H,KAAK8b,UAAS,iBAAO,CACjB+vB,SAAU/gB,EAAKpf,MAAMmgC,cAE5B,0BAED,SAAa37B,GACQA,EAAM+oB,cAAcnvB,cAC5B6Z,UAAU8M,OAAO,UAC7B,gCAED,SAAmBzzB,GAAG,WAClBA,EAAEqzB,iBAEFrwB,KAAK8b,UAAS,iBAAO,CACjBgwB,YAAazgB,EAAK3f,MAAMogC,iBAE/B,oBAED,WAAS,iBACCQ,GAA6B,QAAd,EAAAlyC,OAAOmyC,eAAO,aAAd,EAAgB76B,QAAS,GAGxC86B,EAAyC,QAA3B,EAAqB,QAArB,EADIxsC,KAAK8G,MAAMyX,WAAWnT,QAAO,SAACxO,GAAC,OAAKA,EAAEyvC,MAAQ5O,EAAK32B,MAAMqf,gBAC1C,UAAE,aAAlBsmB,EAAoB79B,YAAI,QAAI,kBAiBnD,OACIyN,kBAACA,IAAMY,SAAQ,KACXZ,yBAAKC,UAAU,gGACXD,4BAAQC,UAAU,eAAeowB,SAAU1sC,KAAK8G,MAAMmgB,iBAAkBvf,MAAO1H,KAAK8G,MAAMkjB,UACtF3N,4BAAQ3U,MAAM,QAAO,eACrB2U,4BAAQ3U,MAAM,OAAM,kBAG5B2U,yBAAKC,UAAU,mCACXD,yBAAKC,UAAU,OACXD,yBAAKC,UAAU,yCACXD,4BAAQC,UAAU,eAAeowB,SAAU1sC,KAAK8G,MAAMmgB,iBAAkBvf,MAAO1H,KAAK8G,MAAMkjB,UACtF3N,4BAAQ3U,MAAM,QAAO,eACrB2U,4BAAQ3U,MAAM,OAAM,iBAExB2U,0BAAMC,UAAU,kBAEK,YAAvBtc,KAAK8G,MAAMid,UACT1H,yBAAKC,UAAU,gDACXD,uBAAGgC,KAAK,IAAIsuB,QAAS3sC,KAAKksC,oBAAqBM,EAAex9B,OAAO,GAAGC,cAAgBu9B,EAAep/B,MAAM,KAG5F,WAAvBpN,KAAK8G,MAAMid,UACT1H,yBAAKC,UAAU,gDACXD,uBAAGgC,KAAK,IAAI/B,UAAWtc,KAAK0L,MAAMogC,WAAa,OAAS,GAAIa,QAAS3sC,KAAKksC,oBAAmB,UAvClG,CACfU,EAAG,UACHC,EAAG,WACHC,EAAG,OACHC,EAAG,QACHC,EAAG,MACHC,EAAG,OACHC,EAAG,OACHC,EAAG,UACHC,EAAG,YACHC,GAAI,UACJC,GAAI,WACJC,GAAI,YA2B6HpnC,SAAS/L,OAAOmyC,QAAQ9lB,QAAO,YAAIrsB,OAAOmyC,QAAQ/lB,UAK/KnK,yBAAKC,UAAU,mCACXD,yBAAKC,UAAS,iBAAYtc,KAAK0L,MAAMogC,WAAa,eAAiB,GAAE,uBACrEzvB,yBAAKC,UAAU,iBACc,YAAvBtc,KAAK8G,MAAMid,UACT1H,kBAACA,IAAMY,SAAQ,KACXZ,4BACIA,wBAAIhV,KAAM,GAAGgV,uBAAGgC,KAAI,eAAkB/B,UAAuC,eAA5Btc,KAAK8G,MAAMqf,aAAgC,SAAW,IAAI,SAC1GnmB,KAAK8G,MAAMyX,WAAWvT,KAAI,SAACogB,EAAO1Z,GAC/B,OAAO2K,wBAAIhV,IAAKqK,EAAOtC,OAAQquB,EAAK/xB,MAAMmgC,SAAWn6B,EAAQ,EAAI,CAACmS,QAAS,QAAU,IAAIxH,uBAAGgC,KAAI,WAAM+M,EAAMihB,KAAI,KAAK/vB,UAAWmhB,EAAK32B,MAAMqf,eAAiBiF,EAAMihB,KAAO,SAAW,IAAKjhB,EAAMxc,KAAKI,OAAO,GAAGC,cAAgBmc,EAAMxc,KAAKxB,MAAM,SAGtPpN,KAAK8G,MAAMyX,WAAW1hB,OAAS,GAC5Bwf,4BAAQC,UAAS,yBAAqBtc,KAAK0L,MAAMmgC,QAAU,uBAAyB,IAAOc,QAAS3sC,KAAKgsC,cACnGhsC,KAAK0L,MAAMmgC,QAAU,mBAAqB,oBAKnC,WAAvB7rC,KAAK8G,MAAMid,UACT1H,kBAACA,IAAMY,SAAQ,KACXZ,wBAAIC,UAAU,gBACTgwB,EAAathC,KAAI,SAACwb,EAAM9U,GACrB,OACI2K,wBAAIhV,IAAKqK,EAAO4K,UAAWkK,EAAKA,MAAQpsB,OAAOmyC,QAAQ/lB,KAAO,OAAS,IACnEnK,0BAAMswB,QAASlP,EAAKwO,cAAezlB,EAAKA,MACxCnK,4BACKmK,EAAKgnB,OAAOxiC,KAAI,SAACyb,EAAOgnB,GACrB,OAAOpxB,wBAAIhV,IAAKomC,GAAYpxB,uBAAGgC,KAAI,WAAMmI,EAAKA,KAAI,YAAIC,EAAMinB,OAAM,KAAKpxB,UAAWkK,EAAKA,MAAQpsB,OAAOmyC,QAAQ/lB,MAAQC,EAAMinB,QAAUtzC,OAAOmyC,QAAQ9lB,MAAQ,SAAW,IAAKA,EAAM7X,KAAK,IAAC,8BAAM,IAAE6X,EAAMjB,MAAM,oBAYrPnJ,yBAAKC,UAAS,0BAAqBtc,KAAK0L,MAAMogC,WAAa,wBAA0B,IAAMa,QAAS3sC,KAAKksC,2B,2BAGpH,EAjJW7wB,CAASgB,IAAMoB,WAoJhBqO,O,qBCtJf,IAAI9gB,EAAM,CACT,YAAa,QAId,SAAS2iC,EAAeC,GACvB,IAAIlwC,EAAKmwC,EAAsBD,GAC/B,OAAOE,EAAoBpwC,GAE5B,SAASmwC,EAAsBD,GAC9B,IAAIE,EAAoBC,EAAE/iC,EAAK4iC,GAAM,CACpC,IAAI5wC,EAAI,IAAIkb,MAAM,uBAAyB01B,EAAM,KAEjD,MADA5wC,EAAEwiC,KAAO,mBACHxiC,EAEP,OAAOgO,EAAI4iC,GAEZD,EAAe5iC,KAAO,WACrB,OAAO5D,OAAO4D,KAAKC,IAEpB2iC,EAAe5sC,QAAU8sC,EACzB71B,EAAOtd,QAAUizC,EACjBA,EAAejwC,GAAK,Q,wBCtBnB,SAAStD,EAAQ6kB,GACjB,IAAI+uB,EAWL,SAAW5zC,EAAQgG,EAAUrF,GAC5B,aAGA,IAAIkzC,EAIHC,EAuCD,GArCA,WACC,IAAI7gC,EAEA8gC,EAAoB,CACvBC,UAAW,WACXC,YAAa,aACbC,aAAc,cACdC,aAAc,cACdC,WAAY,YAEZC,eAAgB,gBAChBC,gBAAiB,eACjBC,eAAgB,EAChBC,QAAS,WACTC,WAAY,cACZC,UAAW,aAEXC,QAAS,GACTC,YAAa,GACbvvB,MAAM,EACNwvB,UAAW,IACXC,KAAM,GACNC,SAAU,EACVC,YAAY,EACZC,WAAY,EACZC,cAAe,KAKhB,IAAIjiC,KAFJ6gC,EAAe9zC,EAAOm1C,iBAAmBn1C,EAAOo1C,iBAAmB,GAEvDrB,EACN9gC,KAAQ6gC,IACZA,EAAa7gC,GAAQ8gC,EAAkB9gC,IAhC1C,IAqCKjN,IAAaA,EAASwrC,uBAC1B,MAAO,CACNnsB,KAAM,aAINgwB,IAAKvB,EAILwB,WAAW,GAIb,IAAIC,EAAUvvC,EAAS+C,gBAEnBysC,EAAiBx1C,EAAOy1C,mBAUxB//B,EAAmB1V,EAAwB,iBAAEod,KAAKpd,GAElDS,EAAaT,EAAOS,WAEpBc,EAAwBvB,EAAOuB,uBAAyBd,EAExDi1C,EAAsB11C,EAAO01C,oBAE7BC,EAAa,aAEbC,EAAa,CAAC,OAAQ,QAAS,eAAgB,eAE/CC,EAAgB,GAEhBxiC,EAAUV,MAAMvF,UAAUiG,QAM1BqiB,EAAW,SAASogB,EAAKC,GAI5B,OAHIF,EAAcE,KACjBF,EAAcE,GAAO,IAAIl0B,OAAO,UAAUk0B,EAAI,YAExCF,EAAcE,GAAK3tC,KAAK0tC,EAAiB,aAAE,UAAY,KAAOD,EAAcE,IAOhFla,EAAW,SAASia,EAAKC,GACvBrgB,EAASogB,EAAKC,IAClBD,EAAI/4B,aAAa,SAAU+4B,EAAiB,aAAE,UAAY,IAAI/9B,OAAS,IAAMg+B,IAQ3EtgB,EAAc,SAASqgB,EAAKC,GAC/B,IAAIC,GACCA,EAAMtgB,EAASogB,EAAIC,KACvBD,EAAI/4B,aAAa,SAAU+4B,EAAiB,aAAE,UAAY,IAAIjkC,QAAQmkC,EAAK,OAIzEC,EAAsB,SAASC,EAAKzvC,EAAI+iB,GAC3C,IAAIgT,EAAShT,EAzDU,mBAyDgB,sBACpCA,GACFysB,EAAoBC,EAAKzvC,GAE1BmvC,EAAWviC,SAAQ,SAAS8iC,GAC3BD,EAAI1Z,GAAQ2Z,EAAK1vC,OAYf2vC,EAAe,SAAS9Y,EAAM9oB,EAAM6hC,EAAQC,EAAWC,GAC1D,IAAIzgC,EAAQ9P,EAASwwC,YAAY,SAajC,OAXIH,IACHA,EAAS,IAGVA,EAAOjqC,SAAWynC,EAElB/9B,EAAM2gC,UAAUjiC,GAAO8hC,GAAYC,GAEnCzgC,EAAMugC,OAASA,EAEf/Y,EAAKoZ,cAAc5gC,GACZA,GAGJ6gC,EAAiB,SAAUhnC,EAAIinC,GAClC,IAAIC,GACCrB,IAAoBqB,EAAY72C,EAAO82C,aAAehD,EAAaiD,KACpEH,GAAQA,EAAKv0B,MAAQ1S,EAAgB,aAAE,WACzCA,EAAGoN,aAAa,SAAU65B,EAAKv0B,KAEhCw0B,EAAS,CAACG,YAAY,EAAMrS,SAAU,CAACh1B,MAC9BinC,GAAQA,EAAKv0B,MACtB1S,EAAG0S,IAAMu0B,EAAKv0B,MAIZ40B,EAAS,SAAU3Z,EAAMtoB,GAC5B,OAAQvN,iBAAiB61B,EAAM,OAAS,IAAItoB,IAUzCkiC,EAAW,SAAS5Z,EAAM9uB,EAAQtC,GAGrC,IAFAA,EAAQA,GAASoxB,EAAKnvB,YAEhBjC,EAAQ4nC,EAAaa,SAAWnmC,IAAW8uB,EAAK6Z,iBACrDjrC,EAASsC,EAAOL,YAChBK,EAASA,EAAO5G,WAGjB,OAAOsE,GAGJkrC,GAECC,GAAW,GACXC,GAAY,GACZC,GAAMF,GAEN74B,GAAM,WACT,IAAIg5B,EAASD,GAOb,IALAA,GAAMF,GAAS50C,OAAS60C,GAAYD,GAEpCI,IAAU,EACVC,IAAU,EAEJF,EAAO/0C,QACZ+0C,EAAO7+B,OAAP6+B,GAGDC,IAAU,GAGPE,GAAW,SAASlxC,EAAI0X,GACxBs5B,KAAYt5B,EACd1X,EAAGd,MAAMC,KAAMC,YAEf0xC,GAAI70C,KAAK+D,GAELixC,KACHA,IAAU,GACT1xC,EAAS2zB,OAASl5B,EAAac,GAAuBid,OAK1Dm5B,GAASC,SAAWp5B,GAEbm5B,IAGJE,EAAQ,SAASpxC,EAAIqxC,GACxB,OAAOA,EACN,WACCV,EAAI3wC,IAEL,WACC,IAAIsxC,EAAOnyC,KACPmZ,EAAOlZ,UACXuxC,GAAI,WACH3wC,EAAGd,MAAMoyC,EAAMh5B,QAyDfxY,EAAW,SAASyxC,GACvB,IAAIxyC,EAASmf,EAETnG,EAAM,WACThZ,EAAU,KACVwyC,KAEGC,EAAQ,WACX,IAAIC,EAAOv3C,EAAKC,MAAQ+jB,EAEpBuzB,EARM,GASTz3C,EAAWw3C,EATF,GASgBC,IAExBxC,GAAuBl3B,GAAKA,IAI/B,OAAO,WACNmG,EAAYhkB,EAAKC,MAEZ4E,IACJA,EAAU/E,EAAWw3C,EAnBZ,OAwBRE,GAKCC,EAAS,SACTC,EAAY,YAEZC,EAAiB,aAAct4C,IAAa,eAAeoI,KAAKnC,UAAUI,WAG1EkyC,EAAgB,EAEhBC,EAAY,EACZC,GAAW,EAEXC,EAAkB,SAAS91C,GAC9B41C,MACI51C,GAAK41C,EAAY,IAAM51C,EAAE6J,UAC5B+rC,EAAY,IAIVG,EAAY,SAAUrb,GAKzB,OAJoB,MAAhBsb,IACHA,EAAsD,UAAvC3B,EAAOjxC,EAAS+B,KAAM,eAG/B6wC,KAA2D,UAAzC3B,EAAO3Z,EAAK11B,WAAY,eAA2D,UAA9BqvC,EAAO3Z,EAAM,gBAGxFub,EAAkB,SAASvb,EAAMwb,GACpC,IAAIC,EACAvqC,EAAS8uB,EACT0b,EAAUL,EAAUrb,GAOxB,IALA2b,GAASH,EACTI,GAAYJ,EACZK,GAAUL,EACVM,GAAWN,EAELE,IAAYxqC,EAASA,EAAOvF,eAAiBuF,GAAUxI,EAAS+B,MAAQyG,GAAU+mC,IACvFyD,GAAY/B,EAAOzoC,EAAQ,YAAc,GAAK,IAEF,WAA9ByoC,EAAOzoC,EAAQ,cAC5BuqC,EAAYvqC,EAAOX,wBACnBmrC,EAAUI,EAAUL,EAAU3tC,MAC7B+tC,EAASJ,EAAU1tC,OACnB6tC,EAAWH,EAAU7tC,IAAM,GAC3B+tC,EAAQF,EAAU5tC,OAAS,GAK9B,OAAO6tC,GAGJK,GAAgB,WACnB,IAAIC,EAAOlzC,EAAGyE,EAAM0uC,EAAcC,EAAiBV,EAAYW,EAAoBC,EAClFC,EAAiBC,EAAeC,EAAe/E,EAC5CgF,EAAgBjG,EAAUlP,SAE9B,IAAIoQ,EAAWjB,EAAaiB,WAAayD,EAAY,IAAMc,EAAQQ,EAAcr3C,QAAQ,CAMxF,IAJA2D,EAAI,EAEJqyC,IAEMryC,EAAIkzC,EAAOlzC,IAEhB,GAAI0zC,EAAc1zC,KAAM0zC,EAAc1zC,GAAG2zC,UAEzC,IAAIzB,GAAkBzE,EAAUmG,iBAAmBnG,EAAUmG,gBAAgBF,EAAc1zC,IAAM6zC,GAAcH,EAAc1zC,SAoC7H,IAlCKszC,EAAgBI,EAAc1zC,GAAgB,aAAE,kBAAqB0yC,EAA6B,EAAhBY,KACtFZ,EAAaP,GAGTqB,IACJA,GAAkB9F,EAAaoG,QAAUpG,EAAaoG,OAAS,EAC9D3E,EAAQtnC,aAAe,KAAOsnC,EAAQvnC,YAAc,IAAM,IAAM,IAChE8lC,EAAaoG,OAEdrG,EAAUsG,OAASP,EAEnBC,EAAgBD,EAAgB9F,EAAae,UAC7CC,EAAOhB,EAAagB,KACpB8D,EAAe,KAEZL,EAAgBsB,GAAiBrB,EAAY,GAAKC,EAAU,GAAK1D,EAAW,IAAM/uC,EAAS2zB,QAC7F4e,EAAgBsB,EAChBpB,EAAU,GAEVF,EADSxD,EAAW,GAAK0D,EAAU,GAAKD,EAAY,EACpCoB,EAnFF,GAyFbD,IAAoBb,IACtBsB,EAAO/qC,WAAcypC,EAAahE,EAClCuF,EAAO/qC,YAAcwpC,EACrBW,GAAmC,EAAdX,EACrBa,EAAkBb,GAGnBjuC,EAAOivC,EAAc1zC,GAAGyH,yBAEnBqrC,EAAWruC,EAAKM,SAAWsuC,IAC9BR,EAAQpuC,EAAKK,MAAQmvC,IACrBjB,EAAUvuC,EAAKQ,QAAUouC,EAAqB3E,IAC9CqE,EAAStuC,EAAKO,OAASgvC,IACvBlB,GAAYE,GAAWD,GAAUF,KACjCnF,EAAakB,YAAc2D,EAAUmB,EAAc1zC,OAClDk0C,GAAe9B,EAAY,IAAMkB,IAAkB3E,EAAW,GAAK0D,EAAU,IAAOI,EAAgBiB,EAAc1zC,GAAI0yC,KAGxH,GAFAmB,GAAcH,EAAc1zC,IAC5BozC,GAAkB,EACfhB,EAAY,EAAG,WACRgB,GAAmBc,IAAgBf,GAC7Cf,EAAY,GAAKC,EAAU,GAAK1D,EAAW,IAC1CwF,EAAa,IAAMzG,EAAa0G,oBAChCD,EAAa,KAAQb,IAAmBR,GAAYE,GAAWD,GAAUF,GAAqE,QAA3Da,EAAc1zC,GAAgB,aAAE0tC,EAAaY,eACjI6E,EAAegB,EAAa,IAAMT,EAAc1zC,IAI/CmzC,IAAiBC,GACnBS,GAAcV,KAKbkB,GAjNU,SAASh0C,GACvB,IAAIgxC,EACAiD,EAAW,EACXC,EAAS7G,EAAaoB,cACtB0F,EAAa9G,EAAamB,WAC1Bz2B,EAAM,WACTi5B,GAAU,EACViD,EAAW/5C,EAAKC,MAChB6F,KAEGo0C,EAAenF,GAAuBkF,EAAa,GACtD,WACClF,EAAoBl3B,EAAK,CAAChZ,QAASo1C,IAEhCA,IAAe9G,EAAamB,aAC9B2F,EAAa9G,EAAamB,aAG5B4C,GAAM,WACLp3C,EAAW+d,MACT,GAGJ,OAAO,SAASs8B,GACf,IAAIv1C,GAEAu1C,GAA4B,IAAfA,KAChBF,EAAa,IAGXnD,IAIHA,GAAW,GAEXlyC,EAAQo1C,GAAUh6C,EAAKC,MAAQ85C,IAEpB,IACVn1C,EAAQ,GAGNu1C,GAAcv1C,EAAQ,EACxBs1C,IAEAp6C,EAAWo6C,EAAct1C,KAoKEw1C,CAAS1B,IAElC2B,GAAqB,SAASp4C,GACjC,IAAI06B,EAAO16B,EAAE6J,OAET6wB,EAAK2d,kBACD3d,EAAK2d,YAIbvC,EAAgB91C,GAChBi5B,EAASyB,EAAMwW,EAAaG,aAC5Bxe,EAAY6H,EAAMwW,EAAaI,cAC/B+B,EAAoB3Y,EAAM4d,IAC1B9E,EAAa9Y,EAAM,gBAEhB6d,GAA0BtD,EAAMmD,IAChCE,GAAwB,SAASt4C,GACpCu4C,GAAwB,CAAC1uC,OAAQ7J,EAAE6J,UAchC2uC,GAAgB,SAAS3tC,GAC5B,IAAImnC,EAEAyG,EAAe5tC,EAAoB,aAAEqmC,EAAaW,aAEjDG,EAAcd,EAAac,YAAYnnC,EAAoB,aAAE,eAAiBA,EAAoB,aAAE,YACxGA,EAAOsP,aAAa,QAAS63B,GAG3ByG,GACF5tC,EAAOsP,aAAa,SAAUs+B,IAI5BC,GAAazD,GAAM,SAAUva,EAAM+Y,EAAQkF,EAAQxtC,EAAOytC,GAC7D,IAAIn5B,EAAKo5B,EAAQjtC,EAAQktC,EAAW5lC,EAAO6lC,GAEtC7lC,EAAQsgC,EAAa9Y,EAAM,mBAAoB+Y,IAASuF,mBAEzD7tC,IACCwtC,EACF1f,EAASyB,EAAMwW,EAAaO,gBAE5B/W,EAAKvgB,aAAa,QAAShP,IAI7B0tC,EAASne,EAAkB,aAAEwW,EAAaW,YAC1CpyB,EAAMib,EAAkB,aAAEwW,EAAaU,SAEpCgH,IAEFE,GADAltC,EAAS8uB,EAAK11B,aACQ+tC,EAAWvtC,KAAKoG,EAAO7G,UAAY,KAG1Dg0C,EAAYtF,EAAOsF,WAAe,QAASre,IAAUme,GAAUp5B,GAAOq5B,GAEtE5lC,EAAQ,CAACrJ,OAAQ6wB,GAEjBzB,EAASyB,EAAMwW,EAAaI,cAEzByH,IACF96C,aAAag7C,GACbA,EAAuBp7C,EAAWi4C,EAAiB,MACnDzC,EAAoB3Y,EAAM4d,IAAuB,IAG/CQ,GACFroC,EAAQpM,KAAKuH,EAAOsS,qBAAqB,UAAWs6B,IAGlDK,EACFne,EAAKvgB,aAAa,SAAU0+B,GACnBp5B,IAAQq5B,IACdrD,EAAUjwC,KAAKk1B,EAAK31B,UAjEJ,SAAS21B,EAAMjb,GACpC,IAAI0yB,EAAWzX,EAAK5V,aAAa,mBAAqBosB,EAAaS,eAGnD,GAAZQ,EACHzX,EAAKwe,cAAcjwB,SAASha,QAAQwQ,GACd,GAAZ0yB,IACVzX,EAAKjb,IAAMA,GA2DT05B,CAAgBze,EAAMjb,GAEtBib,EAAKjb,IAAMA,GAIVm5B,IAAUC,GAAUC,IACtB/E,EAAerZ,EAAM,CAACjb,IAAKA,KAI1Bib,EAAKyc,kBACAzc,EAAKyc,UAEbtkB,EAAY6H,EAAMwW,EAAaE,WAE/BoD,GAAI,WAEH,IAAI4E,EAAW1e,EAAK8N,UAAY9N,EAAK2e,aAAe,EAE/CN,IAAaK,IACbA,GACHngB,EAASyB,EAAMwW,EAAaQ,iBAE7B0G,GAAmBllC,GACnBwnB,EAAK2d,YAAa,EAClBx6C,GAAW,WACN,eAAgB68B,UACZA,EAAK2d,aAEX,IAEgB,QAAhB3d,EAAK4e,SACR1D,OAEC,MAOAyB,GAAgB,SAAU3c,GAC7B,IAAIA,EAAKyc,UAAT,CACA,IAAI1D,EAEAmF,EAAQpD,EAAOhwC,KAAKk1B,EAAK31B,UAGzBoG,EAAQytC,IAAUle,EAAkB,aAAEwW,EAAaY,YAAcpX,EAAkB,aAAE,UACrFie,EAAkB,QAATxtC,IAERwtC,GAAWjB,IAAgBkB,IAAUle,EAAkB,aAAE,SAAUA,EAAKme,QAAYne,EAAK8N,UAAa1V,EAAS4H,EAAMwW,EAAaM,cAAe1e,EAAS4H,EAAMwW,EAAaE,cAElLqC,EAASD,EAAa9Y,EAAM,kBAAkB+Y,OAE3CkF,GACDY,EAAUC,WAAW9e,GAAM,EAAMA,EAAKnvB,aAGxCmvB,EAAKyc,WAAY,EACjBvB,IAEA8C,GAAWhe,EAAM+Y,EAAQkF,EAAQxtC,EAAOytC,MAGrCa,GAAc91C,GAAS,WAC1ButC,EAAaiB,SAAW,EACxB0F,QAGG6B,GAA2B,WACF,GAAzBxI,EAAaiB,WACfjB,EAAaiB,SAAW,GAEzBsH,MAGGE,GAAS,WACTjC,IACA35C,EAAKC,MAAQ47C,EAAU,IACzB/7C,EAAW87C,GAAQ,MAKpBjC,GAAc,EAEdxG,EAAaiB,SAAW,EAExB0F,KAEA/kC,EAAiB,SAAU4mC,IAA0B,MAG/C,CACN5pB,EAAG,WACF8pB,EAAU77C,EAAKC,MAEfizC,EAAUlP,SAAW3+B,EAASwrC,uBAAuBsC,EAAaE,WAClEuG,EAAev0C,EAASwrC,uBAAuBsC,EAAaE,UAAY,IAAMF,EAAaK,cAE3Fz+B,EAAiB,SAAU+kC,IAAwB,GAEnD/kC,EAAiB,SAAU+kC,IAAwB,GAEnD/kC,EAAiB,YAAY,SAAU9S,GACtC,GAAIA,EAAE65C,UAAW,CAChB,IAAIC,EAAkB12C,EAASoxB,iBAAiB,IAAM0c,EAAaI,cAE/DwI,EAAgBj6C,QAAUi6C,EAAgBrpC,SAC7C9R,GAAsB,WACrBm7C,EAAgBrpC,SAAS,SAAUyyB,GAC9BA,EAAIsF,UACP6O,GAAcnU,aAQjB9lC,EAAO28C,iBACT,IAAIA,iBAAkBlC,IAAyBmC,QAASrH,EAAS,CAACsH,WAAW,EAAMC,SAAS,EAAMnpC,YAAY,KAE9G4hC,EAAyB,iBAAE,kBAAmBkF,IAAwB,GACtElF,EAAyB,iBAAE,kBAAmBkF,IAAwB,GACtEzgB,YAAYygB,GAAwB,MAGrC/kC,EAAiB,aAAc+kC,IAAwB,GAGvD,CAAC,QAAS,YAAa,QAAS,OAAQ,gBAAiB,gBAAgBpnC,SAAQ,SAASmB,GACzFxO,EAA0B,iBAAEwO,EAAMimC,IAAwB,MAGvD,QAAQryC,KAAKpC,EAAS+2C,YACzBR,MAEA7mC,EAAiB,OAAQ6mC,IACzBv2C,EAA0B,iBAAE,mBAAoBy0C,IAChDh6C,EAAW87C,GAAQ,MAGjB1I,EAAUlP,SAASliC,QACrB42C,KACAjC,EAAIQ,YAEJ6C,MAGFuC,WAAYvC,GACZwC,OAAQhD,GACRiD,MAAOZ,KAKLH,GAGCgB,EAActF,GAAM,SAASva,EAAM9uB,EAAQsH,EAAO5J,GACrD,IAAIkxC,EAASh3C,EAAG2T,EAMhB,GALAujB,EAAK6Z,gBAAkBjrC,EACvBA,GAAS,KAEToxB,EAAKvgB,aAAa,QAAS7Q,GAExBypC,EAAWvtC,KAAKoG,EAAO7G,UAAY,IAErC,IAAIvB,EAAI,EAAG2T,GADXqjC,EAAU5uC,EAAOsS,qBAAqB,WACbre,OAAQ2D,EAAI2T,EAAK3T,IACzCg3C,EAAQh3C,GAAG2W,aAAa,QAAS7Q,GAI/B4J,EAAMugC,OAAOjK,UAChBuK,EAAerZ,EAAMxnB,EAAMugC,WASzBgH,EAAiB,SAAU/f,EAAM8O,EAAUlgC,GAC9C,IAAI4J,EACAtH,EAAS8uB,EAAK11B,WAEf4G,IACFtC,EAAQgrC,EAAS5Z,EAAM9uB,EAAQtC,IAC/B4J,EAAQsgC,EAAa9Y,EAAM,kBAAmB,CAACpxB,MAAOA,EAAOkgC,WAAYA,KAE/DwP,mBACT1vC,EAAQ4J,EAAMugC,OAAOnqC,QAETA,IAAUoxB,EAAK6Z,iBAC1BgG,EAAY7f,EAAM9uB,EAAQsH,EAAO5J,KAkBjCoxC,EAA+B/2C,GAZT,WACzB,IAAIH,EACA2T,EAAMwjC,EAAe96C,OACzB,GAAGsX,EAGF,IAFA3T,EAAI,EAEEA,EAAI2T,EAAK3T,IACdi3C,EAAeE,EAAen3C,OAO1B,CACNssB,EAAG,WACF6qB,EAAiBv3C,EAASwrC,uBAAuBsC,EAAaO,gBAC9D3+B,EAAiB,SAAU4nC,IAE5BN,WAAYM,EACZlB,WAAYiB,IAIVh4B,EAAO,YACNA,EAAKjf,GAAKJ,EAASwrC,yBACtBnsB,EAAKjf,GAAI,EACT+1C,EAAUzpB,IACVylB,EAAOzlB,MAzEO,IACX6qB,EAEAJ,EAwBAE,EA8BAC,EAnbQ,IACR/C,EAAcD,EAAauB,EAAsB9G,EAAUyH,EAE3DpC,EAAMC,EAAMpB,EAAOE,EAAQC,EAASF,EAAUN,EAE9CR,EACAC,EAEAC,EAGAC,EAEAC,EACAC,EAEAC,EAOAC,EAQAE,EA0BAQ,GA2EAoB,GAEAO,GAcAG,GACAD,GAeAE,GAcAE,GAmFArB,GAwBAoC,GAKAC,GAOAC,GA5aK,IACL9E,GAASC,GACTL,GACAC,GACAC,GAEA/4B,GAeAm5B,GA4kBL,OAvBAl3C,GAAW,WACPqzC,EAAazuB,MACfA,OAIFwuB,EAAY,CAIXwB,IAAKvB,EACLqI,UAAWA,EACXhE,OAAQA,EACR9yB,KAAMA,EACNm4B,GAAI7G,EACJ8G,GAAI5hB,EACJ6hB,GAAIjoB,EACJkoB,GAAIjoB,EACJkoB,KAAMxH,EACNyH,GAAI3G,EACJE,IAAKA,GAvyBUvyB,CAAQ7kB,EAAQA,EAAOgG,SAAUrF,MACjDX,EAAO4zC,UAAYA,EACah2B,EAAOtd,UACtCsd,EAAOtd,QAAUszC,GAJnB,CAMmB,oBAAV5zC,OACHA,OAAS,K,qBCJkD4d,EAAOtd,QAGhE,WAAc,aAIpB,IAAIoN,EAAiBX,OAAOW,eACxBowC,EAAiB/wC,OAAO+wC,eACxBC,EAAWhxC,OAAOgxC,SAClBC,EAAiBjxC,OAAOixC,eACxBC,EAA2BlxC,OAAOkxC,yBAClCC,EAASnxC,OAAOmxC,OAChBC,EAAOpxC,OAAOoxC,KACdhR,EAASpgC,OAAOogC,OAEhB98B,EAA0B,oBAAZ+tC,SAA2BA,QACzCz4C,EAAQ0K,EAAK1K,MACb04C,EAAYhuC,EAAKguC,UAEhB14C,IACHA,EAAQ,SAAesY,EAAKqgC,EAAWv/B,GACrC,OAAOd,EAAItY,MAAM24C,EAAWv/B,KAI3Bm/B,IACHA,EAAS,SAAgBj9C,GACvB,OAAOA,IAINk9C,IACHA,EAAO,SAAcl9C,GACnB,OAAOA,IAINo9C,IACHA,EAAY,SAAmBE,EAAMx/B,GACnC,OAAO,IAAKy/B,SAASpxC,UAAUgQ,KAAKzX,MAAM44C,EAAM,CAAC,MAAMhnC,OAnC3D,SAA4B9E,GAAO,GAAIE,MAAMqa,QAAQva,GAAM,CAAE,IAAK,IAAIrM,EAAI,EAAGq4C,EAAO9rC,MAAMF,EAAIhQ,QAAS2D,EAAIqM,EAAIhQ,OAAQ2D,IAAOq4C,EAAKr4C,GAAKqM,EAAIrM,GAAM,OAAOq4C,EAAe,OAAO9rC,MAAMmW,KAAKrW,GAmCxHisC,CAAmB3/B,QAIrF,IAwBqBi5B,EAxBjB2G,EAAeC,EAAQjsC,MAAMvF,UAAUiG,SACvCwrC,EAAWD,EAAQjsC,MAAMvF,UAAUpK,KACnC87C,EAAYF,EAAQjsC,MAAMvF,UAAU1K,MAEpCq8C,EAAoBH,EAAQ54B,OAAO5Y,UAAU6M,aAC7C+kC,EAAcJ,EAAQ54B,OAAO5Y,UAAUgG,OACvC6rC,EAAgBL,EAAQ54B,OAAO5Y,UAAUyE,SACzCqtC,EAAgBN,EAAQ54B,OAAO5Y,UAAU9G,SACzC64C,EAAaP,EAAQ54B,OAAO5Y,UAAU2K,MAEtCqnC,EAAaR,EAAQ/8B,OAAOzU,UAAUhF,MAEtCi3C,GAYiBrH,EAZa1rC,UAazB,WACL,IAAK,IAAIgzC,EAAQz5C,UAAUpD,OAAQsc,EAAOpM,MAAM2sC,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAChFxgC,EAAKwgC,GAAS15C,UAAU05C,GAG1B,OAAOlB,EAAUrG,EAAMj5B,KAhB3B,SAAS6/B,EAAQ5G,GACf,OAAO,SAAUwH,GACf,IAAK,IAAIloB,EAAOzxB,UAAUpD,OAAQsc,EAAOpM,MAAM2kB,EAAO,EAAIA,EAAO,EAAI,GAAImoB,EAAO,EAAGA,EAAOnoB,EAAMmoB,IAC9F1gC,EAAK0gC,EAAO,GAAK55C,UAAU45C,GAG7B,OAAO95C,EAAMqyC,EAAMwH,EAASzgC,IAehC,SAAS2gC,EAASh9B,EAAK9D,GACjBk/B,GAIFA,EAAep7B,EAAK,MAItB,IADA,IAAI3iB,EAAI6e,EAAMnc,OACP1C,KAAK,CACV,IAAIoH,EAAUyX,EAAM7e,GACpB,GAAuB,iBAAZoH,EAAsB,CAC/B,IAAIw4C,EAAYZ,EAAkB53C,GAC9Bw4C,IAAcx4C,IAEX42C,EAASn/B,KACZA,EAAM7e,GAAK4/C,GAGbx4C,EAAUw4C,GAIdj9B,EAAIvb,IAAW,EAGjB,OAAOub,EAIT,SAASk9B,EAAMC,GACb,IAAIC,EAAY3S,EAAO,MAEnB/lC,OAAW,EACf,IAAKA,KAAYy4C,EACXl6C,EAAM+H,EAAgBmyC,EAAQ,CAACz4C,MACjC04C,EAAU14C,GAAYy4C,EAAOz4C,IAIjC,OAAO04C,EAOT,SAASC,EAAaF,EAAQ5sC,GAC5B,KAAkB,OAAX4sC,GAAiB,CACtB,IAAIG,EAAO/B,EAAyB4B,EAAQ5sC,GAC5C,GAAI+sC,EAAM,CACR,GAAIA,EAAKn5B,IACP,OAAO+3B,EAAQoB,EAAKn5B,KAGtB,GAA0B,mBAAfm5B,EAAK1yC,MACd,OAAOsxC,EAAQoB,EAAK1yC,OAIxBuyC,EAAS7B,EAAe6B,GAQ1B,OALA,SAAuB14C,GAErB,OADA/F,QAAQkS,KAAK,qBAAsBnM,GAC5B,MAMX,IAAIuD,EAAOwzC,EAAO,CAAC,IAAK,OAAQ,UAAW,UAAW,OAAQ,UAAW,QAAS,QAAS,IAAK,MAAO,MAAO,MAAO,QAAS,aAAc,OAAQ,KAAM,SAAU,SAAU,UAAW,SAAU,OAAQ,OAAQ,MAAO,WAAY,UAAW,OAAQ,WAAY,KAAM,YAAa,MAAO,UAAW,MAAO,SAAU,MAAO,MAAO,KAAM,KAAM,UAAW,KAAM,WAAY,aAAc,SAAU,OAAQ,SAAU,OAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAAQ,SAAU,SAAU,KAAM,OAAQ,IAAK,MAAO,QAAS,MAAO,MAAO,QAAS,SAAU,KAAM,OAAQ,MAAO,OAAQ,UAAW,OAAQ,WAAY,QAAS,MAAO,OAAQ,KAAM,WAAY,SAAU,SAAU,IAAK,UAAW,MAAO,WAAY,IAAK,KAAM,KAAM,OAAQ,IAAK,OAAQ,UAAW,SAAU,SAAU,QAAS,SAAU,SAAU,OAAQ,SAAU,SAAU,QAAS,MAAO,UAAW,MAAO,QAAS,QAAS,KAAM,WAAY,WAAY,QAAS,KAAM,QAAS,OAAQ,KAAM,QAAS,KAAM,IAAK,KAAM,MAAO,QAAS,QAGj+B+B,EAAM/B,EAAO,CAAC,MAAO,IAAK,WAAY,cAAe,eAAgB,eAAgB,gBAAiB,mBAAoB,SAAU,WAAY,OAAQ,OAAQ,UAAW,SAAU,OAAQ,IAAK,QAAS,WAAY,QAAS,QAAS,OAAQ,iBAAkB,SAAU,OAAQ,WAAY,QAAS,OAAQ,UAAW,UAAW,WAAY,iBAAkB,OAAQ,OAAQ,QAAS,SAAU,SAAU,OAAQ,WAAY,QAAS,OAAQ,QAAS,OAAQ,UAEzcgC,EAAahC,EAAO,CAAC,UAAW,gBAAiB,sBAAuB,cAAe,mBAAoB,oBAAqB,oBAAqB,iBAAkB,UAAW,UAAW,UAAW,UAAW,UAAW,iBAAkB,UAAW,UAAW,cAAe,eAAgB,WAAY,eAAgB,qBAAsB,cAAe,SAAU,iBAMhXiC,EAAgBjC,EAAO,CAAC,UAAW,gBAAiB,SAAU,UAAW,eAAgB,YAAa,mBAAoB,iBAAkB,gBAAiB,gBAAiB,gBAAiB,QAAS,YAAa,OAAQ,eAAgB,YAAa,UAAW,gBAAiB,SAAU,MAAO,aAAc,UAAW,QAEhUkC,EAASlC,EAAO,CAAC,OAAQ,WAAY,SAAU,UAAW,QAAS,SAAU,KAAM,aAAc,gBAAiB,KAAM,KAAM,QAAS,UAAW,WAAY,QAAS,OAAQ,KAAM,SAAU,QAAS,SAAU,OAAQ,OAAQ,UAAW,SAAU,MAAO,QAAS,MAAO,SAAU,eAIxRmC,EAAmBnC,EAAO,CAAC,UAAW,cAAe,aAAc,WAAY,YAAa,UAAW,UAAW,SAAU,SAAU,QAAS,YAAa,aAAc,iBAAkB,cAAe,SAE3M52B,EAAO42B,EAAO,CAAC,UAEfoC,EAASpC,EAAO,CAAC,SAAU,SAAU,QAAS,MAAO,iBAAkB,eAAgB,uBAAwB,WAAY,aAAc,UAAW,SAAU,UAAW,cAAe,cAAe,UAAW,OAAQ,QAAS,QAAS,QAAS,OAAQ,UAAW,WAAY,eAAgB,SAAU,cAAe,WAAY,WAAY,UAAW,MAAO,WAAY,0BAA2B,wBAAyB,WAAY,YAAa,UAAW,eAAgB,OAAQ,MAAO,UAAW,SAAU,SAAU,OAAQ,OAAQ,WAAY,KAAM,YAAa,YAAa,QAAS,OAAQ,QAAS,OAAQ,OAAQ,UAAW,OAAQ,MAAO,MAAO,YAAa,QAAS,SAAU,MAAO,YAAa,WAAY,QAAS,OAAQ,QAAS,UAAW,aAAc,SAAU,OAAQ,UAAW,UAAW,cAAe,cAAe,SAAU,UAAW,UAAW,aAAc,WAAY,MAAO,WAAY,MAAO,WAAY,OAAQ,OAAQ,UAAW,aAAc,QAAS,WAAY,QAAS,OAAQ,QAAS,OAAQ,UAAW,QAAS,MAAO,SAAU,OAAQ,QAAS,UAAW,WAAY,QAAS,YAAa,OAAQ,SAAU,SAAU,QAAS,QAAS,QAAS,SAEnqCqC,EAAQrC,EAAO,CAAC,gBAAiB,aAAc,WAAY,qBAAsB,SAAU,gBAAiB,gBAAiB,UAAW,gBAAiB,iBAAkB,QAAS,OAAQ,KAAM,QAAS,OAAQ,gBAAiB,YAAa,YAAa,QAAS,sBAAuB,8BAA+B,gBAAiB,kBAAmB,KAAM,KAAM,IAAK,KAAM,KAAM,kBAAmB,YAAa,UAAW,UAAW,MAAO,WAAY,YAAa,MAAO,OAAQ,eAAgB,YAAa,SAAU,cAAe,cAAe,gBAAiB,cAAe,YAAa,mBAAoB,eAAgB,aAAc,eAAgB,cAAe,KAAM,KAAM,KAAM,KAAM,aAAc,WAAY,gBAAiB,oBAAqB,SAAU,OAAQ,KAAM,kBAAmB,KAAM,MAAO,IAAK,KAAM,KAAM,KAAM,KAAM,UAAW,YAAa,aAAc,WAAY,OAAQ,eAAgB,iBAAkB,eAAgB,mBAAoB,iBAAkB,QAAS,aAAc,aAAc,eAAgB,eAAgB,cAAe,cAAe,mBAAoB,YAAa,MAAO,OAAQ,QAAS,SAAU,OAAQ,MAAO,OAAQ,aAAc,SAAU,WAAY,UAAW,QAAS,SAAU,cAAe,SAAU,WAAY,cAAe,OAAQ,aAAc,sBAAuB,mBAAoB,eAAgB,SAAU,gBAAiB,sBAAuB,iBAAkB,IAAK,KAAM,KAAM,SAAU,OAAQ,OAAQ,cAAe,YAAa,UAAW,SAAU,SAAU,QAAS,OAAQ,kBAAmB,mBAAoB,mBAAoB,eAAgB,cAAe,eAAgB,cAAe,aAAc,eAAgB,mBAAoB,oBAAqB,iBAAkB,kBAAmB,oBAAqB,iBAAkB,SAAU,eAAgB,QAAS,eAAgB,iBAAkB,WAAY,UAAW,UAAW,YAAa,cAAe,kBAAmB,iBAAkB,aAAc,OAAQ,KAAM,KAAM,UAAW,SAAU,UAAW,aAAc,UAAW,aAAc,gBAAiB,gBAAiB,QAAS,eAAgB,OAAQ,eAAgB,mBAAoB,mBAAoB,IAAK,KAAM,KAAM,QAAS,IAAK,KAAM,KAAM,IAAK,eAE5uEsC,EAAWtC,EAAO,CAAC,SAAU,cAAe,QAAS,WAAY,QAAS,eAAgB,cAAe,aAAc,aAAc,QAAS,MAAO,UAAW,eAAgB,WAAY,QAAS,QAAS,SAAU,OAAQ,KAAM,UAAW,SAAU,gBAAiB,SAAU,SAAU,iBAAkB,YAAa,WAAY,cAAe,UAAW,UAAW,gBAAiB,WAAY,WAAY,OAAQ,WAAY,WAAY,aAAc,UAAW,SAAU,SAAU,cAAe,gBAAiB,uBAAwB,YAAa,YAAa,aAAc,WAAY,iBAAkB,iBAAkB,YAAa,UAAW,QAAS,UAEvpBuC,EAAMvC,EAAO,CAAC,aAAc,SAAU,cAAe,YAAa,gBAGlEwC,EAAgBvC,EAAK,6BACrBwC,EAAWxC,EAAK,yBAChByC,EAAYzC,EAAK,8BACjB0C,EAAY1C,EAAK,kBACjB2C,EAAiB3C,EAAK,yFAEtB4C,EAAoB5C,EAAK,yBACzB6C,EAAkB7C,EAAK,+DAGvB8C,EAA4B,mBAAXC,QAAoD,iBAApBA,OAAOC,SAAwB,SAAU9zC,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,mBAAX6zC,QAAyB7zC,EAAIozB,cAAgBygB,QAAU7zC,IAAQ6zC,OAAO9zC,UAAY,gBAAkBC,GAEtQ,SAAS+zC,EAAqB3uC,GAAO,GAAIE,MAAMqa,QAAQva,GAAM,CAAE,IAAK,IAAIrM,EAAI,EAAGq4C,EAAO9rC,MAAMF,EAAIhQ,QAAS2D,EAAIqM,EAAIhQ,OAAQ2D,IAAOq4C,EAAKr4C,GAAKqM,EAAIrM,GAAM,OAAOq4C,EAAe,OAAO9rC,MAAMmW,KAAKrW,GAE5L,IAAI4uC,EAAY,WACd,MAAyB,oBAAXrhD,OAAyB,KAAOA,QAW5CshD,EAA4B,SAAmCC,EAAcv7C,GAC/E,GAAoF,iBAAvD,IAAjBu7C,EAA+B,YAAcN,EAAQM,KAAoE,mBAA9BA,EAAaC,aAClH,OAAO,KAMT,IAAIC,EAAS,KAETz7C,EAAS07C,eAAiB17C,EAAS07C,cAAc9qB,aADrC,2BAEd6qB,EAASz7C,EAAS07C,cAAch6B,aAFlB,0BAKhB,IAAIi6B,EAAa,aAAeF,EAAS,IAAMA,EAAS,IAExD,IACE,OAAOF,EAAaC,aAAaG,EAAY,CAC3CC,WAAY,SAAoBC,GAC9B,OAAOA,KAGX,MAAOnvB,GAKP,OADAtxB,QAAQkS,KAAK,uBAAyBquC,EAAa,0BAC5C,OAkrCX,OA9qCA,SAASG,IACP,IAAI9hD,EAAS6F,UAAUpD,OAAS,QAAsB+H,IAAjB3E,UAAU,GAAmBA,UAAU,GAAKw7C,IAE7Ex9B,EAAY,SAAmBiQ,GACjC,OAAOguB,EAAgBhuB,IAezB,GARAjQ,EAAUhb,QAAU,QAMpBgb,EAAUk+B,QAAU,IAEf/hD,IAAWA,EAAOgG,UAAyC,IAA7BhG,EAAOgG,SAASqB,SAKjD,OAFAwc,EAAUm+B,aAAc,EAEjBn+B,EAGT,IAAIo+B,EAAmBjiD,EAAOgG,SAE1BA,EAAWhG,EAAOgG,SAClBk8C,EAAmBliD,EAAOkiD,iBAC1BC,EAAsBniD,EAAOmiD,oBAC7Bz4C,EAAO1J,EAAO0J,KACd04C,EAAUpiD,EAAOoiD,QACjBC,EAAariD,EAAOqiD,WACpBC,EAAuBtiD,EAAOuiD,aAC9BA,OAAwC/3C,IAAzB83C,EAAqCtiD,EAAOuiD,cAAgBviD,EAAOwiD,gBAAkBF,EACpGG,EAAkBziD,EAAOyiD,gBACzB3b,EAAY9mC,EAAO8mC,UACnBya,EAAevhD,EAAOuhD,aAGtBmB,EAAmBN,EAAQh1C,UAE3Bu1C,EAAY5C,EAAa2C,EAAkB,aAC3CE,EAAiB7C,EAAa2C,EAAkB,eAChDG,GAAgB9C,EAAa2C,EAAkB,cAC/Ch7C,GAAgBq4C,EAAa2C,EAAkB,cAQnD,GAAmC,mBAAxBP,EAAoC,CAC7C,IAAIja,GAAWliC,EAASojB,cAAc,YAClC8e,GAASja,SAAWia,GAASja,QAAQ1mB,gBACvCvB,EAAWkiC,GAASja,QAAQ1mB,eAIhC,IAAIu7C,GAAqBxB,EAA0BC,EAAcU,GAC7Dc,GAAYD,IAAsBE,GAAsBF,GAAmBlB,WAAW,IAAM,GAE5FqB,GAAYj9C,EACZk9C,GAAiBD,GAAUC,eAC3BC,GAAqBF,GAAUE,mBAC/BC,GAAyBH,GAAUG,uBACnCtiC,GAAuBmiC,GAAUniC,qBACjCuiC,GAAapB,EAAiBoB,WAG9B36C,GAAe,GACnB,IACEA,GAAek3C,EAAM55C,GAAU0C,aAAe1C,EAAS0C,aAAe,GACtE,MAAOgqB,IAET,IAAI4wB,GAAQ,GAKZz/B,EAAUm+B,YAAuC,mBAAlBt6C,IAAgCw7C,SAA+D,IAAtCA,GAAeK,oBAAuD,IAAjB76C,GAE7I,IAAI86C,GAAmB9C,EACnB+C,GAAc9C,EACd+C,GAAe9C,EACf+C,GAAe9C,EACf+C,GAAuB7C,EACvB8C,GAAqB7C,EACrB8C,GAAoBhD,EASpBiD,GAAe,KACfC,GAAuBtE,EAAS,GAAI,GAAGnoC,OAAO6pC,EAAqB12C,GAAO02C,EAAqBnB,GAAMmB,EAAqBlB,GAAakB,EAAqBhB,GAASgB,EAAqB95B,KAG1L28B,GAAe,KACfC,GAAuBxE,EAAS,GAAI,GAAGnoC,OAAO6pC,EAAqBd,GAASc,EAAqBb,GAAQa,EAAqBZ,GAAWY,EAAqBX,KAQ9J0D,GAA0Bp3C,OAAOoxC,KAAKpxC,OAAOogC,OAAO,KAAM,CAC5DiX,aAAc,CACZt3C,UAAU,EACVD,cAAc,EACdD,YAAY,EACZU,MAAO,MAET+2C,mBAAoB,CAClBv3C,UAAU,EACVD,cAAc,EACdD,YAAY,EACZU,MAAO,MAETg3C,+BAAgC,CAC9Bx3C,UAAU,EACVD,cAAc,EACdD,YAAY,EACZU,OAAO,MAKPi3C,GAAc,KAGdC,GAAc,KAGdC,IAAkB,EAGlBC,IAAkB,EAGlBC,IAA0B,EAK1BC,IAAqB,EAGrBC,IAAiB,EAGjBC,IAAa,EAIbC,IAAa,EAMbC,IAAa,EAIbC,IAAsB,EAItBjC,IAAsB,EAGtBkC,IAAe,EAGfC,IAAe,EAIfC,IAAW,EAGXC,GAAe,GAGfC,GAAkB,KAClBC,GAA0B7F,EAAS,GAAI,CAAC,iBAAkB,QAAS,WAAY,OAAQ,gBAAiB,OAAQ,SAAU,OAAQ,KAAM,KAAM,KAAM,KAAM,QAAS,UAAW,WAAY,WAAY,YAAa,SAAU,QAAS,MAAO,WAAY,QAAS,QAAS,QAAS,QAGpR8F,GAAgB,KAChBC,GAAwB/F,EAAS,GAAI,CAAC,QAAS,QAAS,MAAO,SAAU,QAAS,UAGlFgG,GAAsB,KACtBC,GAA8BjG,EAAS,GAAI,CAAC,MAAO,QAAS,MAAO,KAAM,QAAS,OAAQ,UAAW,cAAe,OAAQ,UAAW,QAAS,QAAS,QAAS,UAElKkG,GAAmB,qCACnBC,GAAgB,6BAChBC,GAAiB,+BAEjBC,GAAYD,GACZE,IAAiB,EAGjBC,QAAoB,EACpBC,GAA+B,CAAC,wBAAyB,aACzDC,GAA4B,YAC5BC,QAAoB,EAGpBC,GAAS,KAKTC,GAActgD,EAASojB,cAAc,QAErCm9B,GAAoB,SAA2BC,GACjD,OAAOA,aAAqB3kC,QAAU2kC,aAAqBhI,UASzDiI,GAAe,SAAsBpR,GACnCgR,IAAUA,KAAWhR,IAKpBA,GAAqE,iBAA9C,IAARA,EAAsB,YAAc4L,EAAQ5L,MAC9DA,EAAM,IAIRA,EAAMuK,EAAMvK,GAGZ0O,GAAe,iBAAkB1O,EAAMqK,EAAS,GAAIrK,EAAI0O,cAAgBC,GACxEC,GAAe,iBAAkB5O,EAAMqK,EAAS,GAAIrK,EAAI4O,cAAgBC,GACxEwB,GAAsB,sBAAuBrQ,EAAMqK,EAASE,EAAM+F,IAA8BtQ,EAAIqR,mBAAqBf,GACzHH,GAAgB,sBAAuBnQ,EAAMqK,EAASE,EAAM6F,IAAwBpQ,EAAIsR,mBAAqBlB,GAC7GH,GAAkB,oBAAqBjQ,EAAMqK,EAAS,GAAIrK,EAAIiQ,iBAAmBC,GACjFhB,GAAc,gBAAiBlP,EAAMqK,EAAS,GAAIrK,EAAIkP,aAAe,GACrEC,GAAc,gBAAiBnP,EAAMqK,EAAS,GAAIrK,EAAImP,aAAe,GACrEa,GAAe,iBAAkBhQ,GAAMA,EAAIgQ,aAC3CZ,IAA0C,IAAxBpP,EAAIoP,gBACtBC,IAA0C,IAAxBrP,EAAIqP,gBACtBC,GAA0BtP,EAAIsP,0BAA2B,EACzDC,GAAqBvP,EAAIuP,qBAAsB,EAC/CC,GAAiBxP,EAAIwP,iBAAkB,EACvCG,GAAa3P,EAAI2P,aAAc,EAC/BC,GAAsB5P,EAAI4P,sBAAuB,EACjDjC,GAAsB3N,EAAI2N,sBAAuB,EACjD+B,GAAa1P,EAAI0P,aAAc,EAC/BG,IAAoC,IAArB7P,EAAI6P,aACnBC,IAAoC,IAArB9P,EAAI8P,aACnBC,GAAW/P,EAAI+P,WAAY,EAC3BtB,GAAoBzO,EAAIuR,oBAAsB9C,GAC9CiC,GAAY1Q,EAAI0Q,WAAaD,GACzBzQ,EAAI8O,yBAA2BoC,GAAkBlR,EAAI8O,wBAAwBC,gBAC/ED,GAAwBC,aAAe/O,EAAI8O,wBAAwBC,cAGjE/O,EAAI8O,yBAA2BoC,GAAkBlR,EAAI8O,wBAAwBE,sBAC/EF,GAAwBE,mBAAqBhP,EAAI8O,wBAAwBE,oBAGvEhP,EAAI8O,yBAAiG,kBAA/D9O,EAAI8O,wBAAwBG,iCACpEH,GAAwBG,+BAAiCjP,EAAI8O,wBAAwBG,gCAGvF2B,GAEqEA,IAAJ,IAAjEC,GAA6B5/C,QAAQ+uC,EAAI4Q,mBAAgDE,GAAgD9Q,EAAI4Q,kBAG7IG,GAA0C,0BAAtBH,GAAgD,SAAUhlD,GAC5E,OAAOA,GACL89C,EAEA6F,KACFF,IAAkB,GAGhBO,KACFD,IAAa,GAIXK,KACFtB,GAAerE,EAAS,GAAI,GAAGnoC,OAAO6pC,EAAqB95B,KAC3D28B,GAAe,IACW,IAAtBoB,GAAa36C,OACfg1C,EAASqE,GAAcr5C,GACvBg1C,EAASuE,GAAc3D,KAGA,IAArB+E,GAAapF,MACfP,EAASqE,GAAc9D,GACvBP,EAASuE,GAAc1D,GACvBb,EAASuE,GAAcxD,KAGO,IAA5B4E,GAAanF,aACfR,EAASqE,GAAc7D,GACvBR,EAASuE,GAAc1D,GACvBb,EAASuE,GAAcxD,KAGG,IAAxB4E,GAAajF,SACfV,EAASqE,GAAc3D,GACvBV,EAASuE,GAAczD,GACvBd,EAASuE,GAAcxD,KAKvBpL,EAAIwR,WACF9C,KAAiBC,KACnBD,GAAenE,EAAMmE,KAGvBrE,EAASqE,GAAc1O,EAAIwR,WAGzBxR,EAAIyR,WACF7C,KAAiBC,KACnBD,GAAerE,EAAMqE,KAGvBvE,EAASuE,GAAc5O,EAAIyR,WAGzBzR,EAAIqR,mBACNhH,EAASgG,GAAqBrQ,EAAIqR,mBAGhCrR,EAAIiQ,kBACFA,KAAoBC,KACtBD,GAAkB1F,EAAM0F,KAG1B5F,EAAS4F,GAAiBjQ,EAAIiQ,kBAI5BH,KACFpB,GAAa,UAAW,GAItBc,IACFnF,EAASqE,GAAc,CAAC,OAAQ,OAAQ,SAItCA,GAAagD,QACfrH,EAASqE,GAAc,CAAC,iBACjBQ,GAAYyC,OAKjB9I,GACFA,EAAO7I,GAGTgR,GAAShR,IAGP4R,GAAiCvH,EAAS,GAAI,CAAC,KAAM,KAAM,KAAM,KAAM,UAEvEwH,GAA0BxH,EAAS,GAAI,CAAC,gBAAiB,OAAQ,QAAS,mBAK1EyH,GAAezH,EAAS,GAAIO,GAChCP,EAASyH,GAAcjH,GACvBR,EAASyH,GAAchH,GAEvB,IAAIiH,GAAkB1H,EAAS,GAAIU,GACnCV,EAAS0H,GAAiB/G,GAU1B,IAAIgH,GAAuB,SAA8BlgD,GACvD,IAAIqH,EAAS9G,GAAcP,GAItBqH,GAAWA,EAAO0oB,UACrB1oB,EAAS,CACP84C,aAAcxB,GACd5uB,QAAS,aAIb,IAAIA,EAAU6nB,EAAkB53C,EAAQ+vB,SACpCqwB,EAAgBxI,EAAkBvwC,EAAO0oB,SAE7C,GAAI/vB,EAAQmgD,eAAiBzB,GAI3B,OAAIr3C,EAAO84C,eAAiBxB,GACP,QAAZ5uB,EAML1oB,EAAO84C,eAAiB1B,GACP,QAAZ1uB,IAAwC,mBAAlBqwB,GAAsCN,GAA+BM,IAK7Fp0B,QAAQg0B,GAAajwB,IAG9B,GAAI/vB,EAAQmgD,eAAiB1B,GAI3B,OAAIp3C,EAAO84C,eAAiBxB,GACP,SAAZ5uB,EAKL1oB,EAAO84C,eAAiBzB,GACP,SAAZ3uB,GAAsBgwB,GAAwBK,GAKhDp0B,QAAQi0B,GAAgBlwB,IAGjC,GAAI/vB,EAAQmgD,eAAiBxB,GAAgB,CAI3C,GAAIt3C,EAAO84C,eAAiBzB,KAAkBqB,GAAwBK,GACpE,OAAO,EAGT,GAAI/4C,EAAO84C,eAAiB1B,KAAqBqB,GAA+BM,GAC9E,OAAO,EAOT,IAAIC,EAA2B9H,EAAS,GAAI,CAAC,QAAS,QAAS,OAAQ,IAAK,WAI5E,OAAQ0H,GAAgBlwB,KAAaswB,EAAyBtwB,KAAaiwB,GAAajwB,IAM1F,OAAO,GAQLuwB,GAAe,SAAsBr+C,GACvC01C,EAAUj7B,EAAUk+B,QAAS,CAAE56C,QAASiC,IACxC,IAEEA,EAAKxB,WAAW0N,YAAYlM,GAC5B,MAAOspB,GACP,IACEtpB,EAAKs+C,UAAY3E,GACjB,MAAOrwB,GACPtpB,EAAK2d,YAWP4gC,GAAmB,SAA0BnzC,EAAMpL,GACrD,IACE01C,EAAUj7B,EAAUk+B,QAAS,CAC3B6F,UAAWx+C,EAAKy+C,iBAAiBrzC,GACjCsU,KAAM1f,IAER,MAAOspB,GACPosB,EAAUj7B,EAAUk+B,QAAS,CAC3B6F,UAAW,KACX9+B,KAAM1f,IAOV,GAHAA,EAAK8L,gBAAgBV,GAGR,OAATA,IAAkByvC,GAAazvC,GACjC,GAAIwwC,IAAcC,GAChB,IACEwC,GAAar+C,GACb,MAAOspB,SAET,IACEtpB,EAAK2T,aAAavI,EAAM,IACxB,MAAOke,MAWXo1B,GAAgB,SAAuBC,GAEzC,IAAI9W,OAAM,EACN+W,OAAoB,EAExB,GAAIjD,GACFgD,EAAQ,oBAAsBA,MACzB,CAEL,IAAIE,EAAUjJ,EAAY+I,EAAO,eACjCC,EAAoBC,GAAWA,EAAQ,GAGf,0BAAtBhC,KAEF8B,EAAQ,iEAAmEA,EAAQ,kBAGrF,IAAIG,EAAepF,GAAqBA,GAAmBlB,WAAWmG,GAASA,EAK/E,GAAIhC,KAAcD,GAChB,IACE7U,GAAM,IAAInK,GAAYC,gBAAgBmhB,EAAcjC,IACpD,MAAOvzB,IAIX,IAAKue,IAAQA,EAAIloC,gBAAiB,CAChCkoC,EAAMiS,GAAeiF,eAAepC,GAAW,WAAY,MAC3D,IACE9U,EAAIloC,gBAAgB4+B,UAAYqe,GAAiB,GAAKkC,EACtD,MAAOx1B,KAKX,IAAI3qB,EAAOkpC,EAAIlpC,MAAQkpC,EAAIloC,gBAO3B,OALIg/C,GAASC,GACXjgD,EAAKqgD,aAAapiD,EAASqiD,eAAeL,GAAoBjgD,EAAKugD,WAAW,IAAM,MAIlFvC,KAAcD,GACThlC,GAAqB7Z,KAAKgqC,EAAK4T,GAAiB,OAAS,QAAQ,GAGnEA,GAAiB5T,EAAIloC,gBAAkBhB,GAS5CwgD,GAAkB,SAAyBz0B,GAC7C,OAAOqvB,GAAmBl8C,KAAK6sB,EAAKvsB,eAAiBusB,EAAMA,EAAMuuB,EAAWmG,aAAenG,EAAWoG,aAAepG,EAAWqG,UAAW,MAAM,IAS/IC,GAAe,SAAsBC,GACvC,OAAOA,aAAenG,IAA4C,iBAAjBmG,EAAIjhD,UAAoD,iBAApBihD,EAAIC,aAAuD,mBAApBD,EAAItzC,eAAgCszC,EAAIj1C,sBAAsB4uC,IAAgD,mBAAxBqG,EAAI1zC,iBAA8D,mBAArB0zC,EAAI7rC,cAA2D,iBAArB6rC,EAAItB,cAAyD,mBAArBsB,EAAIR,eASnVU,GAAU,SAAiBjJ,GAC7B,MAAuE,iBAA/C,IAATn2C,EAAuB,YAAcu3C,EAAQv3C,IAAsBm2C,aAAkBn2C,EAAOm2C,GAA8E,iBAAjD,IAAXA,EAAyB,YAAcoB,EAAQpB,KAAoD,iBAApBA,EAAOx4C,UAAoD,iBAApBw4C,EAAOl4C,UAWxPohD,GAAe,SAAsBC,EAAYC,EAAan2C,GAC3DwwC,GAAM0F,IAIXrK,EAAa2E,GAAM0F,IAAa,SAAUE,GACxCA,EAAKjiD,KAAK4c,EAAWolC,EAAan2C,EAAMuzC,QAcxC8C,GAAoB,SAA2BF,GACjD,IAAIh7B,OAAU,EAMd,GAHA86B,GAAa,yBAA0BE,EAAa,MAGhDN,GAAaM,GAEf,OADAxB,GAAawB,IACN,EAIT,GAAIjK,EAAYiK,EAAYthD,SAAU,mBAEpC,OADA8/C,GAAawB,IACN,EAIT,IAAI/xB,EAAUkvB,GAAkB6C,EAAYthD,UAS5C,GANAohD,GAAa,sBAAuBE,EAAa,CAC/C/xB,QAASA,EACTkyB,YAAarF,MAIV+E,GAAQG,EAAY7+C,sBAAwB0+C,GAAQG,EAAYh7B,WAAa66B,GAAQG,EAAYh7B,QAAQ7jB,qBAAuBg1C,EAAW,UAAW6J,EAAYthB,YAAcyX,EAAW,UAAW6J,EAAYJ,aAErN,OADApB,GAAawB,IACN,EAIT,GAAgB,WAAZ/xB,GAAwBkoB,EAAW,aAAc6J,EAAYthB,WAE/D,OADA8f,GAAawB,IACN,EAIT,IAAKlF,GAAa7sB,IAAYqtB,GAAYrtB,GAAU,CAElD,GAAIiuB,KAAiBG,GAAgBpuB,GAAU,CAC7C,IAAItvB,EAAaF,GAAcuhD,IAAgBA,EAAYrhD,WACvD0gD,EAAazF,GAAcoG,IAAgBA,EAAYX,WAE3D,GAAIA,GAAc1gD,EAGhB,IAFA,IAESxB,EAFQkiD,EAAW7lD,OAEF,EAAG2D,GAAK,IAAKA,EACrCwB,EAAWwgD,aAAazF,EAAU2F,EAAWliD,IAAI,GAAOw8C,EAAeqG,IAK7E,IAAK1E,GAAYrtB,IAAYmyB,GAAwBnyB,GAAU,CAC7D,GAAIitB,GAAwBC,wBAAwBviC,QAAUu9B,EAAW+E,GAAwBC,aAAcltB,GAAU,OAAO,EAChI,GAAIitB,GAAwBC,wBAAwB5F,UAAY2F,GAAwBC,aAAaltB,GAAU,OAAO,EAIxH,OADAuwB,GAAawB,IACN,EAIT,OAAIA,aAAuB7G,IAAYiF,GAAqB4B,IAC1DxB,GAAawB,IACN,GAGQ,aAAZ/xB,GAAsC,YAAZA,IAA0BkoB,EAAW,uBAAwB6J,EAAYthB,YAMpGid,IAA+C,IAAzBqE,EAAY5hD,WAEpC4mB,EAAUg7B,EAAYJ,YACtB56B,EAAUgxB,EAAchxB,EAASu1B,GAAkB,KACnDv1B,EAAUgxB,EAAchxB,EAASw1B,GAAa,KAC1CwF,EAAYJ,cAAgB56B,IAC9B6wB,EAAUj7B,EAAUk+B,QAAS,CAAE56C,QAAS8hD,EAAYtG,cACpDsG,EAAYJ,YAAc56B,IAK9B86B,GAAa,wBAAyBE,EAAa,OAE5C,IAnBLxB,GAAawB,IACN,IA8BPK,GAAoB,SAA2BC,EAAOC,EAAQl8C,GAEhE,GAAI43C,KAA4B,OAAXsE,GAA8B,SAAXA,KAAuBl8C,KAAStH,GAAYsH,KAASg5C,IAC3F,OAAO,EAOT,GAAI5B,KAAoBF,GAAYgF,IAAWpK,EAAWsE,GAAc8F,SAAgB,GAAI/E,IAAmBrF,EAAWuE,GAAc6F,SAAgB,IAAKvF,GAAauF,IAAWhF,GAAYgF,IAC/L,KAIAH,GAAwBE,KAAWpF,GAAwBC,wBAAwBviC,QAAUu9B,EAAW+E,GAAwBC,aAAcmF,IAAUpF,GAAwBC,wBAAwB5F,UAAY2F,GAAwBC,aAAamF,MAAYpF,GAAwBE,8BAA8BxiC,QAAUu9B,EAAW+E,GAAwBE,mBAAoBmF,IAAWrF,GAAwBE,8BAA8B7F,UAAY2F,GAAwBE,mBAAmBmF,KAGze,OAAXA,GAAmBrF,GAAwBG,iCAAmCH,GAAwBC,wBAAwBviC,QAAUu9B,EAAW+E,GAAwBC,aAAc92C,IAAU62C,GAAwBC,wBAAwB5F,UAAY2F,GAAwBC,aAAa92C,KAClS,OAAO,OAGJ,GAAIo4C,GAAoB8D,SAAgB,GAAIpK,EAAW0E,GAAmB7E,EAAc3xC,EAAOu2C,GAAoB,WAAa,GAAgB,QAAX2F,GAA+B,eAAXA,GAAsC,SAAXA,GAAgC,WAAVD,GAAwD,IAAlCrK,EAAc5xC,EAAO,WAAkBk4C,GAAc+D,GAAe,GAAI5E,KAA4BvF,EAAWwE,GAAsB3E,EAAc3xC,EAAOu2C,GAAoB,WAAa,GAAKv2C,EACra,OAAO,EAGT,OAAO,GASL+7C,GAA0B,SAAiCnyB,GAC7D,OAAOA,EAAQ5wB,QAAQ,KAAO,GAa5BmjD,GAAsB,SAA6BR,GACrD,IAAI7qB,OAAO,EACP9wB,OAAQ,EACRk8C,OAAS,EACTzpD,OAAI,EAERgpD,GAAa,2BAA4BE,EAAa,MAEtD,IAAIt1C,EAAas1C,EAAYt1C,WAI7B,GAAKA,EAAL,CAIA,IAAI+1C,EAAY,CACdpiB,SAAU,GACVqiB,UAAW,GACXC,UAAU,EACVC,kBAAmB5F,IAKrB,IAHAlkD,EAAI4T,EAAWlR,OAGR1C,KAAK,CAEV,IAAI+pD,EADJ1rB,EAAOzqB,EAAW5T,GAEdyU,EAAOs1C,EAAMt1C,KACb8yC,EAAewC,EAAMxC,aAazB,GAXAh6C,EAAQ6xC,EAAW/gB,EAAK9wB,OACxBk8C,EAASpD,GAAkB5xC,GAG3Bk1C,EAAUpiB,SAAWkiB,EACrBE,EAAUC,UAAYr8C,EACtBo8C,EAAUE,UAAW,EACrBF,EAAUK,mBAAgBv/C,EAC1Bu+C,GAAa,wBAAyBE,EAAaS,GACnDp8C,EAAQo8C,EAAUC,WAEdD,EAAUK,gBAKdpC,GAAiBnzC,EAAMy0C,GAGlBS,EAAUE,UAKf,GAAIxK,EAAW,OAAQ9xC,GACrBq6C,GAAiBnzC,EAAMy0C,OADzB,CAMIrE,KACFt3C,EAAQ2xC,EAAc3xC,EAAOk2C,GAAkB,KAC/Cl2C,EAAQ2xC,EAAc3xC,EAAOm2C,GAAa,MAI5C,IAAI8F,EAAQnD,GAAkB6C,EAAYthD,UAC1C,GAAK2hD,GAAkBC,EAAOC,EAAQl8C,GAKtC,IACMg6C,EACF2B,EAAYe,eAAe1C,EAAc9yC,EAAMlH,GAG/C27C,EAAYlsC,aAAavI,EAAMlH,GAGjCuxC,EAASh7B,EAAUk+B,SACnB,MAAOrvB,MAIXq2B,GAAa,0BAA2BE,EAAa,QAQnDgB,GAAqB,SAASA,EAAmBC,GACnD,IAAIC,OAAa,EACbC,EAAiB7B,GAAgB2B,GAKrC,IAFAnB,GAAa,0BAA2BmB,EAAU,MAE3CC,EAAaC,EAAeC,YAEjCtB,GAAa,yBAA0BoB,EAAY,MAG/ChB,GAAkBgB,KAKlBA,EAAWl8B,mBAAmBi0B,GAChC+H,EAAmBE,EAAWl8B,SAIhCw7B,GAAoBU,IAItBpB,GAAa,yBAA0BmB,EAAU,OAyQnD,OA9PArmC,EAAUC,SAAW,SAAUikC,EAAO1S,GACpC,IAAIttC,OAAO,EACPuiD,OAAe,EACfrB,OAAc,EACdsB,OAAU,EACVC,OAAa,EAUjB,IANAxE,IAAkB+B,KAEhBA,EAAQ,eAIW,iBAAVA,IAAuBe,GAAQf,GAAQ,CAEhD,GAA8B,mBAAnBA,EAAM/gD,SACf,MAAMq4C,EAAgB,8BAGtB,GAAqB,iBADrB0I,EAAQA,EAAM/gD,YAEZ,MAAMq4C,EAAgB,mCAM5B,IAAKx7B,EAAUm+B,YAAa,CAC1B,GAAqC,WAAjCf,EAAQjhD,EAAOyqD,eAA6D,mBAAxBzqD,EAAOyqD,aAA6B,CAC1F,GAAqB,iBAAV1C,EACT,OAAO/nD,EAAOyqD,aAAa1C,GAG7B,GAAIe,GAAQf,GACV,OAAO/nD,EAAOyqD,aAAa1C,EAAML,WAIrC,OAAOK,EAgBT,GAZKjD,IACH2B,GAAapR,GAIfxxB,EAAUk+B,QAAU,GAGC,iBAAVgG,IACT3C,IAAW,GAGTA,SAAiB,GAAI2C,aAAiBr+C,EAKV,KAD9B4gD,GADAviD,EAAO+/C,GAAc,kBACDvgD,cAAc87C,WAAW0E,GAAO,IACnC1gD,UAA4C,SAA1BijD,EAAa3iD,UAGX,SAA1B2iD,EAAa3iD,SADtBI,EAAOuiD,EAKPviD,EAAKshB,YAAYihC,OAEd,CAEL,IAAKtF,KAAeJ,KAAuBC,KAEnB,IAAxBkD,EAAMzhD,QAAQ,KACZ,OAAOw8C,IAAsBE,GAAsBF,GAAmBlB,WAAWmG,GAASA,EAO5F,KAHAhgD,EAAO+/C,GAAcC,IAInB,OAAO/C,GAAa,KAAOjC,GAK3Bh7C,GAAQg9C,IACV0C,GAAa1/C,EAAK2iD,YAOpB,IAHA,IAAIC,EAAepC,GAAgBnD,GAAW2C,EAAQhgD,GAG/CkhD,EAAc0B,EAAaN,YAEH,IAAzBpB,EAAY5hD,UAAkB4hD,IAAgBsB,GAK9CpB,GAAkBF,KAKlBA,EAAYh7B,mBAAmBi0B,GACjC+H,GAAmBhB,EAAYh7B,SAIjCw7B,GAAoBR,GAEpBsB,EAAUtB,GAMZ,GAHAsB,EAAU,KAGNnF,GACF,OAAO2C,EAIT,GAAI/C,GAAY,CACd,GAAIC,GAGF,IAFAuF,EAAapH,GAAuBn8C,KAAKc,EAAKR,eAEvCQ,EAAK2iD,YAEVF,EAAWnhC,YAAYthB,EAAK2iD,iBAG9BF,EAAaziD,EAcf,OAXIk8C,GAAa2G,aAQfJ,EAAanH,GAAWp8C,KAAKg7C,EAAkBuI,GAAY,IAGtDA,EAGT,IAAIK,EAAiBhG,GAAiB98C,EAAK2/C,UAAY3/C,EAAK4/B,UAQ5D,OALIid,KACFiG,EAAiB5L,EAAc4L,EAAgBrH,GAAkB,KACjEqH,EAAiB5L,EAAc4L,EAAgBpH,GAAa,MAGvDX,IAAsBE,GAAsBF,GAAmBlB,WAAWiJ,GAAkBA,GASrGhnC,EAAUinC,UAAY,SAAUzV,GAC9BoR,GAAapR,GACbyP,IAAa,GAQfjhC,EAAUknC,YAAc,WACtB1E,GAAS,KACTvB,IAAa,GAafjhC,EAAUmnC,iBAAmB,SAAUC,EAAK7sB,EAAM9wB,GAE3C+4C,IACHI,GAAa,IAGf,IAAI8C,EAAQnD,GAAkB6E,GAC1BzB,EAASpD,GAAkBhoB,GAC/B,OAAOkrB,GAAkBC,EAAOC,EAAQl8C,IAU1CuW,EAAUqnC,QAAU,SAAUlC,EAAYmC,GACZ,mBAAjBA,IAIX7H,GAAM0F,GAAc1F,GAAM0F,IAAe,GACzClK,EAAUwE,GAAM0F,GAAamC,KAU/BtnC,EAAUunC,WAAa,SAAUpC,GAC3B1F,GAAM0F,IACRnK,EAASyE,GAAM0F,KAUnBnlC,EAAUwnC,YAAc,SAAUrC,GAC5B1F,GAAM0F,KACR1F,GAAM0F,GAAc,KASxBnlC,EAAUynC,eAAiB,WACzBhI,GAAQ,IAGHz/B,EAGIi+B,GAz5CmEj9B,I,mBCHlF,IAAIjlB,EAGJA,EAAI,WACH,OAAOgG,KADJ,GAIJ,IAEChG,EAAIA,GAAK,IAAI4+C,SAAS,cAAb,GACR,MAAO57C,GAEc,iBAAX5C,SAAqBJ,EAAII,QAOrC4d,EAAOtd,QAAUV,I","file":"/js/category.js","sourcesContent":["/** @license React v0.19.1\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):F=0<a?Math.floor(1E3/a):5};var H=new MessageChannel,I=H.port2;H.port1.onmessage=\nfunction(){if(null!==D){var a=exports.unstable_now();G=a+F;try{D(!0,a)?I.postMessage(null):(C=!1,D=null)}catch(b){throw I.postMessage(null),b;}}else C=!1};f=function(a){D=a;C||(C=!0,I.postMessage(null))};g=function(a,b){E=y(function(){a(exports.unstable_now())},b)};h=function(){z(E);E=-1}}function J(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<K(e,b))a[d]=b,a[c]=e,c=d;else break a}}function L(a){a=a[0];return void 0===a?null:a}\nfunction M(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0<e?d+e:d;c=\"number\"===typeof c.timeout?c.timeout:Y(a)}else c=Y(a),e=d;c=e+c;a={id:P++,callback:b,priorityLevel:a,startTime:e,expirationTime:c,sortIndex:-1};e>d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<Q.expirationTime||k()};exports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}};\n","/**\n * First we will load all of this project's JavaScript dependencies which\n * includes React and other helpers. It's a great starting point while\n * building robust, powerful web applications using React + Laravel.\n */\n\nrequire('./bootstrap');\n\n/**\n * Next, we will create a fresh React component instance and attach it to\n * the page. Then, you may begin adding components to this application\n * or customize the JavaScript scaffolding to fit your unique needs.\n */\n\nrequire('./components/Pages/CategoryPage');\n\nrequire('./other');\nrequire('./menu');","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n  var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n  for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n    if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n      return 1;\n    }\n  }\n  return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n  var called = false;\n  return function () {\n    if (called) {\n      return;\n    }\n    called = true;\n    window.Promise.resolve().then(function () {\n      called = false;\n      fn();\n    });\n  };\n}\n\nfunction taskDebounce(fn) {\n  var scheduled = false;\n  return function () {\n    if (!scheduled) {\n      scheduled = true;\n      setTimeout(function () {\n        scheduled = false;\n        fn();\n      }, timeoutDuration);\n    }\n  };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n  var getType = {};\n  return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n  if (element.nodeType !== 1) {\n    return [];\n  }\n  // NOTE: 1 DOM access here\n  var window = element.ownerDocument.defaultView;\n  var css = window.getComputedStyle(element, null);\n  return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n  if (element.nodeName === 'HTML') {\n    return element;\n  }\n  return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n  // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n  if (!element) {\n    return document.body;\n  }\n\n  switch (element.nodeName) {\n    case 'HTML':\n    case 'BODY':\n      return element.ownerDocument.body;\n    case '#document':\n      return element.body;\n  }\n\n  // Firefox want us to check `-x` and `-y` variations as well\n\n  var _getStyleComputedProp = getStyleComputedProperty(element),\n      overflow = _getStyleComputedProp.overflow,\n      overflowX = _getStyleComputedProp.overflowX,\n      overflowY = _getStyleComputedProp.overflowY;\n\n  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n    return element;\n  }\n\n  return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n  return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n  if (version === 11) {\n    return isIE11;\n  }\n  if (version === 10) {\n    return isIE10;\n  }\n  return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n  if (!element) {\n    return document.documentElement;\n  }\n\n  var noOffsetParent = isIE(10) ? document.body : null;\n\n  // NOTE: 1 DOM access here\n  var offsetParent = element.offsetParent || null;\n  // Skip hidden elements which don't have an offsetParent\n  while (offsetParent === noOffsetParent && element.nextElementSibling) {\n    offsetParent = (element = element.nextElementSibling).offsetParent;\n  }\n\n  var nodeName = offsetParent && offsetParent.nodeName;\n\n  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n    return element ? element.ownerDocument.documentElement : document.documentElement;\n  }\n\n  // .offsetParent will return the closest TH, TD or TABLE in case\n  // no offsetParent is present, I hate this job...\n  if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n    return getOffsetParent(offsetParent);\n  }\n\n  return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY') {\n    return false;\n  }\n  return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n  if (node.parentNode !== null) {\n    return getRoot(node.parentNode);\n  }\n\n  return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n    return document.documentElement;\n  }\n\n  // Here we make sure to give as \"start\" the element that comes first in the DOM\n  var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n  var start = order ? element1 : element2;\n  var end = order ? element2 : element1;\n\n  // Get common ancestor container\n  var range = document.createRange();\n  range.setStart(start, 0);\n  range.setEnd(end, 0);\n  var commonAncestorContainer = range.commonAncestorContainer;\n\n  // Both nodes are inside #document\n\n  if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n    if (isOffsetContainer(commonAncestorContainer)) {\n      return commonAncestorContainer;\n    }\n\n    return getOffsetParent(commonAncestorContainer);\n  }\n\n  // one of the nodes is inside shadowDOM, find which one\n  var element1root = getRoot(element1);\n  if (element1root.host) {\n    return findCommonOffsetParent(element1root.host, element2);\n  } else {\n    return findCommonOffsetParent(element1, getRoot(element2).host);\n  }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n  var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n  var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    var html = element.ownerDocument.documentElement;\n    var scrollingElement = element.ownerDocument.scrollingElement || html;\n    return scrollingElement[upperSide];\n  }\n\n  return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n  var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  var scrollTop = getScroll(element, 'top');\n  var scrollLeft = getScroll(element, 'left');\n  var modifier = subtract ? -1 : 1;\n  rect.top += scrollTop * modifier;\n  rect.bottom += scrollTop * modifier;\n  rect.left += scrollLeft * modifier;\n  rect.right += scrollLeft * modifier;\n  return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n  var sideA = axis === 'x' ? 'Left' : 'Top';\n  var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n  return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n  return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n  var body = document.body;\n  var html = document.documentElement;\n  var computedStyle = isIE(10) && getComputedStyle(html);\n\n  return {\n    height: getSize('Height', body, html, computedStyle),\n    width: getSize('Width', body, html, computedStyle)\n  };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n  return _extends({}, offsets, {\n    right: offsets.left + offsets.width,\n    bottom: offsets.top + offsets.height\n  });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n  var rect = {};\n\n  // IE10 10 FIX: Please, don't ask, the element isn't\n  // considered in DOM in some circumstances...\n  // This isn't reproducible in IE10 compatibility mode of IE11\n  try {\n    if (isIE(10)) {\n      rect = element.getBoundingClientRect();\n      var scrollTop = getScroll(element, 'top');\n      var scrollLeft = getScroll(element, 'left');\n      rect.top += scrollTop;\n      rect.left += scrollLeft;\n      rect.bottom += scrollTop;\n      rect.right += scrollLeft;\n    } else {\n      rect = element.getBoundingClientRect();\n    }\n  } catch (e) {}\n\n  var result = {\n    left: rect.left,\n    top: rect.top,\n    width: rect.right - rect.left,\n    height: rect.bottom - rect.top\n  };\n\n  // subtract scrollbar size from sizes\n  var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n  var width = sizes.width || element.clientWidth || result.width;\n  var height = sizes.height || element.clientHeight || result.height;\n\n  var horizScrollbar = element.offsetWidth - width;\n  var vertScrollbar = element.offsetHeight - height;\n\n  // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n  // we make this check conditional for performance reasons\n  if (horizScrollbar || vertScrollbar) {\n    var styles = getStyleComputedProperty(element);\n    horizScrollbar -= getBordersSize(styles, 'x');\n    vertScrollbar -= getBordersSize(styles, 'y');\n\n    result.width -= horizScrollbar;\n    result.height -= vertScrollbar;\n  }\n\n  return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n  var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  var isIE10 = isIE(10);\n  var isHTML = parent.nodeName === 'HTML';\n  var childrenRect = getBoundingClientRect(children);\n  var parentRect = getBoundingClientRect(parent);\n  var scrollParent = getScrollParent(children);\n\n  var styles = getStyleComputedProperty(parent);\n  var borderTopWidth = parseFloat(styles.borderTopWidth);\n  var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n  // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n  if (fixedPosition && isHTML) {\n    parentRect.top = Math.max(parentRect.top, 0);\n    parentRect.left = Math.max(parentRect.left, 0);\n  }\n  var offsets = getClientRect({\n    top: childrenRect.top - parentRect.top - borderTopWidth,\n    left: childrenRect.left - parentRect.left - borderLeftWidth,\n    width: childrenRect.width,\n    height: childrenRect.height\n  });\n  offsets.marginTop = 0;\n  offsets.marginLeft = 0;\n\n  // Subtract margins of documentElement in case it's being used as parent\n  // we do this only on HTML because it's the only element that behaves\n  // differently when margins are applied to it. The margins are included in\n  // the box of the documentElement, in the other cases not.\n  if (!isIE10 && isHTML) {\n    var marginTop = parseFloat(styles.marginTop);\n    var marginLeft = parseFloat(styles.marginLeft);\n\n    offsets.top -= borderTopWidth - marginTop;\n    offsets.bottom -= borderTopWidth - marginTop;\n    offsets.left -= borderLeftWidth - marginLeft;\n    offsets.right -= borderLeftWidth - marginLeft;\n\n    // Attach marginTop and marginLeft because in some circumstances we may need them\n    offsets.marginTop = marginTop;\n    offsets.marginLeft = marginLeft;\n  }\n\n  if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n    offsets = includeScroll(offsets, parent);\n  }\n\n  return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n  var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  var html = element.ownerDocument.documentElement;\n  var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n  var width = Math.max(html.clientWidth, window.innerWidth || 0);\n  var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n  var scrollTop = !excludeScroll ? getScroll(html) : 0;\n  var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n  var offset = {\n    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n    width: width,\n    height: height\n  };\n\n  return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n  var nodeName = element.nodeName;\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    return false;\n  }\n  if (getStyleComputedProperty(element, 'position') === 'fixed') {\n    return true;\n  }\n  var parentNode = getParentNode(element);\n  if (!parentNode) {\n    return false;\n  }\n  return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element || !element.parentElement || isIE()) {\n    return document.documentElement;\n  }\n  var el = element.parentElement;\n  while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n    el = el.parentElement;\n  }\n  return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n  var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n  // NOTE: 1 DOM access here\n\n  var boundaries = { top: 0, left: 0 };\n  var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n  // Handle viewport case\n  if (boundariesElement === 'viewport') {\n    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n  } else {\n    // Handle other cases based on DOM element used as boundaries\n    var boundariesNode = void 0;\n    if (boundariesElement === 'scrollParent') {\n      boundariesNode = getScrollParent(getParentNode(reference));\n      if (boundariesNode.nodeName === 'BODY') {\n        boundariesNode = popper.ownerDocument.documentElement;\n      }\n    } else if (boundariesElement === 'window') {\n      boundariesNode = popper.ownerDocument.documentElement;\n    } else {\n      boundariesNode = boundariesElement;\n    }\n\n    var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n    // In case of HTML, we need a different computation\n    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n      var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n          height = _getWindowSizes.height,\n          width = _getWindowSizes.width;\n\n      boundaries.top += offsets.top - offsets.marginTop;\n      boundaries.bottom = height + offsets.top;\n      boundaries.left += offsets.left - offsets.marginLeft;\n      boundaries.right = width + offsets.left;\n    } else {\n      // for all the other DOM elements, this one is good\n      boundaries = offsets;\n    }\n  }\n\n  // Add paddings\n  padding = padding || 0;\n  var isPaddingNumber = typeof padding === 'number';\n  boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n  boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n  boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n  boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n  return boundaries;\n}\n\nfunction getArea(_ref) {\n  var width = _ref.width,\n      height = _ref.height;\n\n  return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n  var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n  if (placement.indexOf('auto') === -1) {\n    return placement;\n  }\n\n  var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n  var rects = {\n    top: {\n      width: boundaries.width,\n      height: refRect.top - boundaries.top\n    },\n    right: {\n      width: boundaries.right - refRect.right,\n      height: boundaries.height\n    },\n    bottom: {\n      width: boundaries.width,\n      height: boundaries.bottom - refRect.bottom\n    },\n    left: {\n      width: refRect.left - boundaries.left,\n      height: boundaries.height\n    }\n  };\n\n  var sortedAreas = Object.keys(rects).map(function (key) {\n    return _extends({\n      key: key\n    }, rects[key], {\n      area: getArea(rects[key])\n    });\n  }).sort(function (a, b) {\n    return b.area - a.area;\n  });\n\n  var filteredAreas = sortedAreas.filter(function (_ref2) {\n    var width = _ref2.width,\n        height = _ref2.height;\n    return width >= popper.clientWidth && height >= popper.clientHeight;\n  });\n\n  var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n  var variation = placement.split('-')[1];\n\n  return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n  var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n  var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n  var window = element.ownerDocument.defaultView;\n  var styles = window.getComputedStyle(element);\n  var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n  var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n  var result = {\n    width: element.offsetWidth + y,\n    height: element.offsetHeight + x\n  };\n  return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n  var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n  placement = placement.split('-')[0];\n\n  // Get popper node sizes\n  var popperRect = getOuterSizes(popper);\n\n  // Add position, width and height to our offsets object\n  var popperOffsets = {\n    width: popperRect.width,\n    height: popperRect.height\n  };\n\n  // depending by the popper placement we have to compute its offsets slightly differently\n  var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n  var mainSide = isHoriz ? 'top' : 'left';\n  var secondarySide = isHoriz ? 'left' : 'top';\n  var measurement = isHoriz ? 'height' : 'width';\n  var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n  popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n  if (placement === secondarySide) {\n    popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n  } else {\n    popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n  }\n\n  return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n  // use native find if supported\n  if (Array.prototype.find) {\n    return arr.find(check);\n  }\n\n  // use `filter` to obtain the same behavior of `find`\n  return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n  // use native findIndex if supported\n  if (Array.prototype.findIndex) {\n    return arr.findIndex(function (cur) {\n      return cur[prop] === value;\n    });\n  }\n\n  // use `find` + `indexOf` if `findIndex` isn't supported\n  var match = find(arr, function (obj) {\n    return obj[prop] === value;\n  });\n  return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n  var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n  modifiersToRun.forEach(function (modifier) {\n    if (modifier['function']) {\n      // eslint-disable-line dot-notation\n      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n    }\n    var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n    if (modifier.enabled && isFunction(fn)) {\n      // Add properties to offsets to make them a complete clientRect object\n      // we do this before each modifier to make sure the previous one doesn't\n      // mess with these values\n      data.offsets.popper = getClientRect(data.offsets.popper);\n      data.offsets.reference = getClientRect(data.offsets.reference);\n\n      data = fn(data, modifier);\n    }\n  });\n\n  return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n  // if popper is destroyed, don't perform any further update\n  if (this.state.isDestroyed) {\n    return;\n  }\n\n  var data = {\n    instance: this,\n    styles: {},\n    arrowStyles: {},\n    attributes: {},\n    flipped: false,\n    offsets: {}\n  };\n\n  // compute reference element offsets\n  data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n  // store the computed placement inside `originalPlacement`\n  data.originalPlacement = data.placement;\n\n  data.positionFixed = this.options.positionFixed;\n\n  // compute the popper offsets\n  data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n  data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n  // run the modifiers\n  data = runModifiers(this.modifiers, data);\n\n  // the first `update` will call `onCreate` callback\n  // the other ones will call `onUpdate` callback\n  if (!this.state.isCreated) {\n    this.state.isCreated = true;\n    this.options.onCreate(data);\n  } else {\n    this.options.onUpdate(data);\n  }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n  return modifiers.some(function (_ref) {\n    var name = _ref.name,\n        enabled = _ref.enabled;\n    return enabled && name === modifierName;\n  });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n  var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n  var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n  for (var i = 0; i < prefixes.length; i++) {\n    var prefix = prefixes[i];\n    var toCheck = prefix ? '' + prefix + upperProp : property;\n    if (typeof document.body.style[toCheck] !== 'undefined') {\n      return toCheck;\n    }\n  }\n  return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n  this.state.isDestroyed = true;\n\n  // touch DOM only if `applyStyle` modifier is enabled\n  if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n    this.popper.removeAttribute('x-placement');\n    this.popper.style.position = '';\n    this.popper.style.top = '';\n    this.popper.style.left = '';\n    this.popper.style.right = '';\n    this.popper.style.bottom = '';\n    this.popper.style.willChange = '';\n    this.popper.style[getSupportedPropertyName('transform')] = '';\n  }\n\n  this.disableEventListeners();\n\n  // remove the popper if user explicitly asked for the deletion on destroy\n  // do not use `remove` because IE11 doesn't support it\n  if (this.options.removeOnDestroy) {\n    this.popper.parentNode.removeChild(this.popper);\n  }\n  return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n  var ownerDocument = element.ownerDocument;\n  return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n  var isBody = scrollParent.nodeName === 'BODY';\n  var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n  target.addEventListener(event, callback, { passive: true });\n\n  if (!isBody) {\n    attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n  }\n  scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n  // Resize event listener on window\n  state.updateBound = updateBound;\n  getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n  // Scroll event listener on scroll parents\n  var scrollElement = getScrollParent(reference);\n  attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n  state.scrollElement = scrollElement;\n  state.eventsEnabled = true;\n\n  return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n  if (!this.state.eventsEnabled) {\n    this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n  }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n  // Remove resize event listener on window\n  getWindow(reference).removeEventListener('resize', state.updateBound);\n\n  // Remove scroll event listener on scroll parents\n  state.scrollParents.forEach(function (target) {\n    target.removeEventListener('scroll', state.updateBound);\n  });\n\n  // Reset state\n  state.updateBound = null;\n  state.scrollParents = [];\n  state.scrollElement = null;\n  state.eventsEnabled = false;\n  return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n  if (this.state.eventsEnabled) {\n    cancelAnimationFrame(this.scheduleUpdate);\n    this.state = removeEventListeners(this.reference, this.state);\n  }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n  Object.keys(styles).forEach(function (prop) {\n    var unit = '';\n    // add unit if the value is numeric and is one of the following\n    if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n      unit = 'px';\n    }\n    element.style[prop] = styles[prop] + unit;\n  });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n  Object.keys(attributes).forEach(function (prop) {\n    var value = attributes[prop];\n    if (value !== false) {\n      element.setAttribute(prop, attributes[prop]);\n    } else {\n      element.removeAttribute(prop);\n    }\n  });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n  // any property present in `data.styles` will be applied to the popper,\n  // in this way we can make the 3rd party modifiers add custom styles to it\n  // Be aware, modifiers could override the properties defined in the previous\n  // lines of this modifier!\n  setStyles(data.instance.popper, data.styles);\n\n  // any property present in `data.attributes` will be applied to the popper,\n  // they will be set as HTML attributes of the element\n  setAttributes(data.instance.popper, data.attributes);\n\n  // if arrowElement is defined and arrowStyles has some properties\n  if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n    setStyles(data.arrowElement, data.arrowStyles);\n  }\n\n  return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n  // compute reference element offsets\n  var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n  popper.setAttribute('x-placement', placement);\n\n  // Apply `position` to popper before anything else because\n  // without the position applied we can't guarantee correct computations\n  setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n  return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var round = Math.round,\n      floor = Math.floor;\n\n  var noRound = function noRound(v) {\n    return v;\n  };\n\n  var referenceWidth = round(reference.width);\n  var popperWidth = round(popper.width);\n\n  var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n  var isVariation = data.placement.indexOf('-') !== -1;\n  var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n  var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n  var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n  var verticalToInteger = !shouldRound ? noRound : round;\n\n  return {\n    left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n    top: verticalToInteger(popper.top),\n    bottom: verticalToInteger(popper.bottom),\n    right: horizontalToInteger(popper.right)\n  };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n  var x = options.x,\n      y = options.y;\n  var popper = data.offsets.popper;\n\n  // Remove this legacy support in Popper.js v2\n\n  var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'applyStyle';\n  }).gpuAcceleration;\n  if (legacyGpuAccelerationOption !== undefined) {\n    console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n  }\n  var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n  var offsetParent = getOffsetParent(data.instance.popper);\n  var offsetParentRect = getBoundingClientRect(offsetParent);\n\n  // Styles\n  var styles = {\n    position: popper.position\n  };\n\n  var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n  var sideA = x === 'bottom' ? 'top' : 'bottom';\n  var sideB = y === 'right' ? 'left' : 'right';\n\n  // if gpuAcceleration is set to `true` and transform is supported,\n  //  we use `translate3d` to apply the position to the popper we\n  // automatically use the supported prefixed version if needed\n  var prefixedProperty = getSupportedPropertyName('transform');\n\n  // now, let's make a step back and look at this code closely (wtf?)\n  // If the content of the popper grows once it's been positioned, it\n  // may happen that the popper gets misplaced because of the new content\n  // overflowing its reference element\n  // To avoid this problem, we provide two options (x and y), which allow\n  // the consumer to define the offset origin.\n  // If we position a popper on top of a reference element, we can set\n  // `x` to `top` to make the popper grow towards its top instead of\n  // its bottom.\n  var left = void 0,\n      top = void 0;\n  if (sideA === 'bottom') {\n    // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n    // and not the bottom of the html element\n    if (offsetParent.nodeName === 'HTML') {\n      top = -offsetParent.clientHeight + offsets.bottom;\n    } else {\n      top = -offsetParentRect.height + offsets.bottom;\n    }\n  } else {\n    top = offsets.top;\n  }\n  if (sideB === 'right') {\n    if (offsetParent.nodeName === 'HTML') {\n      left = -offsetParent.clientWidth + offsets.right;\n    } else {\n      left = -offsetParentRect.width + offsets.right;\n    }\n  } else {\n    left = offsets.left;\n  }\n  if (gpuAcceleration && prefixedProperty) {\n    styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n    styles[sideA] = 0;\n    styles[sideB] = 0;\n    styles.willChange = 'transform';\n  } else {\n    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n    var invertTop = sideA === 'bottom' ? -1 : 1;\n    var invertLeft = sideB === 'right' ? -1 : 1;\n    styles[sideA] = top * invertTop;\n    styles[sideB] = left * invertLeft;\n    styles.willChange = sideA + ', ' + sideB;\n  }\n\n  // Attributes\n  var attributes = {\n    'x-placement': data.placement\n  };\n\n  // Update `data` attributes, styles and arrowStyles\n  data.attributes = _extends({}, attributes, data.attributes);\n  data.styles = _extends({}, styles, data.styles);\n  data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n  return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n  var requesting = find(modifiers, function (_ref) {\n    var name = _ref.name;\n    return name === requestingName;\n  });\n\n  var isRequired = !!requesting && modifiers.some(function (modifier) {\n    return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n  });\n\n  if (!isRequired) {\n    var _requesting = '`' + requestingName + '`';\n    var requested = '`' + requestedName + '`';\n    console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n  }\n  return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n  var _data$offsets$arrow;\n\n  // arrow depends on keepTogether in order to work\n  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n    return data;\n  }\n\n  var arrowElement = options.element;\n\n  // if arrowElement is a string, suppose it's a CSS selector\n  if (typeof arrowElement === 'string') {\n    arrowElement = data.instance.popper.querySelector(arrowElement);\n\n    // if arrowElement is not found, don't run the modifier\n    if (!arrowElement) {\n      return data;\n    }\n  } else {\n    // if the arrowElement isn't a query selector we must check that the\n    // provided DOM node is child of its popper node\n    if (!data.instance.popper.contains(arrowElement)) {\n      console.warn('WARNING: `arrow.element` must be child of its popper element!');\n      return data;\n    }\n  }\n\n  var placement = data.placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n  var len = isVertical ? 'height' : 'width';\n  var sideCapitalized = isVertical ? 'Top' : 'Left';\n  var side = sideCapitalized.toLowerCase();\n  var altSide = isVertical ? 'left' : 'top';\n  var opSide = isVertical ? 'bottom' : 'right';\n  var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n  //\n  // extends keepTogether behavior making sure the popper and its\n  // reference have enough pixels in conjunction\n  //\n\n  // top/left side\n  if (reference[opSide] - arrowElementSize < popper[side]) {\n    data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n  }\n  // bottom/right side\n  if (reference[side] + arrowElementSize > popper[opSide]) {\n    data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n  }\n  data.offsets.popper = getClientRect(data.offsets.popper);\n\n  // compute center of the popper\n  var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n  // Compute the sideValue using the updated popper offsets\n  // take popper margin in account because we don't have this info available\n  var css = getStyleComputedProperty(data.instance.popper);\n  var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n  var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n  var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n  // prevent arrowElement from being placed not contiguously to its popper\n  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n  data.arrowElement = arrowElement;\n  data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n  return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n  if (variation === 'end') {\n    return 'start';\n  } else if (variation === 'start') {\n    return 'end';\n  }\n  return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n  var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  var index = validPlacements.indexOf(placement);\n  var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n  return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n  FLIP: 'flip',\n  CLOCKWISE: 'clockwise',\n  COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n  // if `inner` modifier is enabled, we can't use the `flip` modifier\n  if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n    return data;\n  }\n\n  if (data.flipped && data.placement === data.originalPlacement) {\n    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n    return data;\n  }\n\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n  var placement = data.placement.split('-')[0];\n  var placementOpposite = getOppositePlacement(placement);\n  var variation = data.placement.split('-')[1] || '';\n\n  var flipOrder = [];\n\n  switch (options.behavior) {\n    case BEHAVIORS.FLIP:\n      flipOrder = [placement, placementOpposite];\n      break;\n    case BEHAVIORS.CLOCKWISE:\n      flipOrder = clockwise(placement);\n      break;\n    case BEHAVIORS.COUNTERCLOCKWISE:\n      flipOrder = clockwise(placement, true);\n      break;\n    default:\n      flipOrder = options.behavior;\n  }\n\n  flipOrder.forEach(function (step, index) {\n    if (placement !== step || flipOrder.length === index + 1) {\n      return data;\n    }\n\n    placement = data.placement.split('-')[0];\n    placementOpposite = getOppositePlacement(placement);\n\n    var popperOffsets = data.offsets.popper;\n    var refOffsets = data.offsets.reference;\n\n    // using floor because the reference offsets may contain decimals we are not going to consider here\n    var floor = Math.floor;\n    var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n    var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n    var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n    var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n    var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n    var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n    // flip the variation if required\n    var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n    // flips variation if reference element overflows boundaries\n    var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n    // flips variation if popper content overflows boundaries\n    var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n    var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n    if (overlapsRef || overflowsBoundaries || flippedVariation) {\n      // this boolean to detect any flip loop\n      data.flipped = true;\n\n      if (overlapsRef || overflowsBoundaries) {\n        placement = flipOrder[index + 1];\n      }\n\n      if (flippedVariation) {\n        variation = getOppositeVariation(variation);\n      }\n\n      data.placement = placement + (variation ? '-' + variation : '');\n\n      // this object contains `position`, we want to preserve it along with\n      // any additional property we may add in the future\n      data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n      data = runModifiers(data.instance.modifiers, data, 'flip');\n    }\n  });\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var placement = data.placement.split('-')[0];\n  var floor = Math.floor;\n  var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n  var side = isVertical ? 'right' : 'bottom';\n  var opSide = isVertical ? 'left' : 'top';\n  var measurement = isVertical ? 'width' : 'height';\n\n  if (popper[side] < floor(reference[opSide])) {\n    data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n  }\n  if (popper[opSide] > floor(reference[side])) {\n    data.offsets.popper[opSide] = floor(reference[side]);\n  }\n\n  return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n  // separate value from unit\n  var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n  var value = +split[1];\n  var unit = split[2];\n\n  // If it's not a number it's an operator, I guess\n  if (!value) {\n    return str;\n  }\n\n  if (unit.indexOf('%') === 0) {\n    var element = void 0;\n    switch (unit) {\n      case '%p':\n        element = popperOffsets;\n        break;\n      case '%':\n      case '%r':\n      default:\n        element = referenceOffsets;\n    }\n\n    var rect = getClientRect(element);\n    return rect[measurement] / 100 * value;\n  } else if (unit === 'vh' || unit === 'vw') {\n    // if is a vh or vw, we calculate the size based on the viewport\n    var size = void 0;\n    if (unit === 'vh') {\n      size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n    } else {\n      size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n    }\n    return size / 100 * value;\n  } else {\n    // if is an explicit pixel unit, we get rid of the unit and keep the value\n    // if is an implicit unit, it's px, and we return just the value\n    return value;\n  }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n  var offsets = [0, 0];\n\n  // Use height if placement is left or right and index is 0 otherwise use width\n  // in this way the first offset will use an axis and the second one\n  // will use the other one\n  var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n  // Split the offset string to obtain a list of values and operands\n  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n  var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n    return frag.trim();\n  });\n\n  // Detect if the offset string contains a pair of values or a single one\n  // they could be separated by comma or space\n  var divider = fragments.indexOf(find(fragments, function (frag) {\n    return frag.search(/,|\\s/) !== -1;\n  }));\n\n  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n    console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n  }\n\n  // If divider is found, we divide the list of values and operands to divide\n  // them by ofset X and Y.\n  var splitRegex = /\\s*,\\s*|\\s+/;\n  var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n  // Convert the values with units to absolute pixels to allow our computations\n  ops = ops.map(function (op, index) {\n    // Most of the units rely on the orientation of the popper\n    var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n    var mergeWithPrevious = false;\n    return op\n    // This aggregates any `+` or `-` sign that aren't considered operators\n    // e.g.: 10 + +5 => [10, +, +5]\n    .reduce(function (a, b) {\n      if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n        a[a.length - 1] = b;\n        mergeWithPrevious = true;\n        return a;\n      } else if (mergeWithPrevious) {\n        a[a.length - 1] += b;\n        mergeWithPrevious = false;\n        return a;\n      } else {\n        return a.concat(b);\n      }\n    }, [])\n    // Here we convert the string values into number values (in px)\n    .map(function (str) {\n      return toValue(str, measurement, popperOffsets, referenceOffsets);\n    });\n  });\n\n  // Loop trough the offsets arrays and execute the operations\n  ops.forEach(function (op, index) {\n    op.forEach(function (frag, index2) {\n      if (isNumeric(frag)) {\n        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n      }\n    });\n  });\n  return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n  var offset = _ref.offset;\n  var placement = data.placement,\n      _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var basePlacement = placement.split('-')[0];\n\n  var offsets = void 0;\n  if (isNumeric(+offset)) {\n    offsets = [+offset, 0];\n  } else {\n    offsets = parseOffset(offset, popper, reference, basePlacement);\n  }\n\n  if (basePlacement === 'left') {\n    popper.top += offsets[0];\n    popper.left -= offsets[1];\n  } else if (basePlacement === 'right') {\n    popper.top += offsets[0];\n    popper.left += offsets[1];\n  } else if (basePlacement === 'top') {\n    popper.left += offsets[0];\n    popper.top -= offsets[1];\n  } else if (basePlacement === 'bottom') {\n    popper.left += offsets[0];\n    popper.top += offsets[1];\n  }\n\n  data.popper = popper;\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n  var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n  // If offsetParent is the reference element, we really want to\n  // go one step up and use the next offsetParent as reference to\n  // avoid to make this modifier completely useless and look like broken\n  if (data.instance.reference === boundariesElement) {\n    boundariesElement = getOffsetParent(boundariesElement);\n  }\n\n  // NOTE: DOM access here\n  // resets the popper's position so that the document size can be calculated excluding\n  // the size of the popper element itself\n  var transformProp = getSupportedPropertyName('transform');\n  var popperStyles = data.instance.popper.style; // assignment to help minification\n  var top = popperStyles.top,\n      left = popperStyles.left,\n      transform = popperStyles[transformProp];\n\n  popperStyles.top = '';\n  popperStyles.left = '';\n  popperStyles[transformProp] = '';\n\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n  // NOTE: DOM access here\n  // restores the original style properties after the offsets have been computed\n  popperStyles.top = top;\n  popperStyles.left = left;\n  popperStyles[transformProp] = transform;\n\n  options.boundaries = boundaries;\n\n  var order = options.priority;\n  var popper = data.offsets.popper;\n\n  var check = {\n    primary: function primary(placement) {\n      var value = popper[placement];\n      if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n        value = Math.max(popper[placement], boundaries[placement]);\n      }\n      return defineProperty({}, placement, value);\n    },\n    secondary: function secondary(placement) {\n      var mainSide = placement === 'right' ? 'left' : 'top';\n      var value = popper[mainSide];\n      if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n        value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n      }\n      return defineProperty({}, mainSide, value);\n    }\n  };\n\n  order.forEach(function (placement) {\n    var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n    popper = _extends({}, popper, check[side](placement));\n  });\n\n  data.offsets.popper = popper;\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var shiftvariation = placement.split('-')[1];\n\n  // if shift shiftvariation is specified, run the modifier\n  if (shiftvariation) {\n    var _data$offsets = data.offsets,\n        reference = _data$offsets.reference,\n        popper = _data$offsets.popper;\n\n    var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n    var side = isVertical ? 'left' : 'top';\n    var measurement = isVertical ? 'width' : 'height';\n\n    var shiftOffsets = {\n      start: defineProperty({}, side, reference[side]),\n      end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n    };\n\n    data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n  }\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n    return data;\n  }\n\n  var refRect = data.offsets.reference;\n  var bound = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'preventOverflow';\n  }).boundaries;\n\n  if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === true) {\n      return data;\n    }\n\n    data.hide = true;\n    data.attributes['x-out-of-boundaries'] = '';\n  } else {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === false) {\n      return data;\n    }\n\n    data.hide = false;\n    data.attributes['x-out-of-boundaries'] = false;\n  }\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n  var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n  popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n  data.placement = getOppositePlacement(placement);\n  data.offsets.popper = getClientRect(popper);\n\n  return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n  /**\n   * Modifier used to shift the popper on the start or end of its reference\n   * element.<br />\n   * It will read the variation of the `placement` property.<br />\n   * It can be one either `-end` or `-start`.\n   * @memberof modifiers\n   * @inner\n   */\n  shift: {\n    /** @prop {number} order=100 - Index used to define the order of execution */\n    order: 100,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: shift\n  },\n\n  /**\n   * The `offset` modifier can shift your popper on both its axis.\n   *\n   * It accepts the following units:\n   * - `px` or unit-less, interpreted as pixels\n   * - `%` or `%r`, percentage relative to the length of the reference element\n   * - `%p`, percentage relative to the length of the popper element\n   * - `vw`, CSS viewport width unit\n   * - `vh`, CSS viewport height unit\n   *\n   * For length is intended the main axis relative to the placement of the popper.<br />\n   * This means that if the placement is `top` or `bottom`, the length will be the\n   * `width`. In case of `left` or `right`, it will be the `height`.\n   *\n   * You can provide a single value (as `Number` or `String`), or a pair of values\n   * as `String` divided by a comma or one (or more) white spaces.<br />\n   * The latter is a deprecated method because it leads to confusion and will be\n   * removed in v2.<br />\n   * Additionally, it accepts additions and subtractions between different units.\n   * Note that multiplications and divisions aren't supported.\n   *\n   * Valid examples are:\n   * ```\n   * 10\n   * '10%'\n   * '10, 10'\n   * '10%, 10'\n   * '10 + 10%'\n   * '10 - 5vh + 3%'\n   * '-10px + 5vh, 5px - 6%'\n   * ```\n   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n   * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  offset: {\n    /** @prop {number} order=200 - Index used to define the order of execution */\n    order: 200,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: offset,\n    /** @prop {Number|String} offset=0\n     * The offset value as described in the modifier description\n     */\n    offset: 0\n  },\n\n  /**\n   * Modifier used to prevent the popper from being positioned outside the boundary.\n   *\n   * A scenario exists where the reference itself is not within the boundaries.<br />\n   * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n   * In this case we need to decide whether the popper should either:\n   *\n   * - detach from the reference and remain \"trapped\" in the boundaries, or\n   * - if it should ignore the boundary and \"escape with its reference\"\n   *\n   * When `escapeWithReference` is set to`true` and reference is completely\n   * outside its boundaries, the popper will overflow (or completely leave)\n   * the boundaries in order to remain attached to the edge of the reference.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  preventOverflow: {\n    /** @prop {number} order=300 - Index used to define the order of execution */\n    order: 300,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: preventOverflow,\n    /**\n     * @prop {Array} [priority=['left','right','top','bottom']]\n     * Popper will try to prevent overflow following these priorities by default,\n     * then, it could overflow on the left and on top of the `boundariesElement`\n     */\n    priority: ['left', 'right', 'top', 'bottom'],\n    /**\n     * @prop {number} padding=5\n     * Amount of pixel used to define a minimum distance between the boundaries\n     * and the popper. This makes sure the popper always has a little padding\n     * between the edges of its container\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='scrollParent'\n     * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n     * `viewport` or any DOM element.\n     */\n    boundariesElement: 'scrollParent'\n  },\n\n  /**\n   * Modifier used to make sure the reference and its popper stay near each other\n   * without leaving any gap between the two. Especially useful when the arrow is\n   * enabled and you want to ensure that it points to its reference element.\n   * It cares only about the first axis. You can still have poppers with margin\n   * between the popper and its reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  keepTogether: {\n    /** @prop {number} order=400 - Index used to define the order of execution */\n    order: 400,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: keepTogether\n  },\n\n  /**\n   * This modifier is used to move the `arrowElement` of the popper to make\n   * sure it is positioned between the reference element and its popper element.\n   * It will read the outer size of the `arrowElement` node to detect how many\n   * pixels of conjunction are needed.\n   *\n   * It has no effect if no `arrowElement` is provided.\n   * @memberof modifiers\n   * @inner\n   */\n  arrow: {\n    /** @prop {number} order=500 - Index used to define the order of execution */\n    order: 500,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: arrow,\n    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n    element: '[x-arrow]'\n  },\n\n  /**\n   * Modifier used to flip the popper's placement when it starts to overlap its\n   * reference element.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   *\n   * **NOTE:** this modifier will interrupt the current update cycle and will\n   * restart it if it detects the need to flip the placement.\n   * @memberof modifiers\n   * @inner\n   */\n  flip: {\n    /** @prop {number} order=600 - Index used to define the order of execution */\n    order: 600,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: flip,\n    /**\n     * @prop {String|Array} behavior='flip'\n     * The behavior used to change the popper's placement. It can be one of\n     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n     * placements (with optional variations)\n     */\n    behavior: 'flip',\n    /**\n     * @prop {number} padding=5\n     * The popper will flip if it hits the edges of the `boundariesElement`\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='viewport'\n     * The element which will define the boundaries of the popper position.\n     * The popper will never be placed outside of the defined boundaries\n     * (except if `keepTogether` is enabled)\n     */\n    boundariesElement: 'viewport',\n    /**\n     * @prop {Boolean} flipVariations=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the reference element overlaps its boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariations: false,\n    /**\n     * @prop {Boolean} flipVariationsByContent=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the popper element overlaps its reference boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariationsByContent: false\n  },\n\n  /**\n   * Modifier used to make the popper flow toward the inner of the reference element.\n   * By default, when this modifier is disabled, the popper will be placed outside\n   * the reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  inner: {\n    /** @prop {number} order=700 - Index used to define the order of execution */\n    order: 700,\n    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n    enabled: false,\n    /** @prop {ModifierFn} */\n    fn: inner\n  },\n\n  /**\n   * Modifier used to hide the popper when its reference element is outside of the\n   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n   * be used to hide with a CSS selector the popper when its reference is\n   * out of boundaries.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   * @memberof modifiers\n   * @inner\n   */\n  hide: {\n    /** @prop {number} order=800 - Index used to define the order of execution */\n    order: 800,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: hide\n  },\n\n  /**\n   * Computes the style that will be applied to the popper element to gets\n   * properly positioned.\n   *\n   * Note that this modifier will not touch the DOM, it just prepares the styles\n   * so that `applyStyle` modifier can apply it. This separation is useful\n   * in case you need to replace `applyStyle` with a custom implementation.\n   *\n   * This modifier has `850` as `order` value to maintain backward compatibility\n   * with previous versions of Popper.js. Expect the modifiers ordering method\n   * to change in future major versions of the library.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  computeStyle: {\n    /** @prop {number} order=850 - Index used to define the order of execution */\n    order: 850,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: computeStyle,\n    /**\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: true,\n    /**\n     * @prop {string} [x='bottom']\n     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n     * Change this if your popper should grow in a direction different from `bottom`\n     */\n    x: 'bottom',\n    /**\n     * @prop {string} [x='left']\n     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n     * Change this if your popper should grow in a direction different from `right`\n     */\n    y: 'right'\n  },\n\n  /**\n   * Applies the computed styles to the popper element.\n   *\n   * All the DOM manipulations are limited to this modifier. This is useful in case\n   * you want to integrate Popper.js inside a framework or view library and you\n   * want to delegate all the DOM manipulations to it.\n   *\n   * Note that if you disable this modifier, you must make sure the popper element\n   * has its position set to `absolute` before Popper.js can do its work!\n   *\n   * Just disable this modifier and define your own to achieve the desired effect.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  applyStyle: {\n    /** @prop {number} order=900 - Index used to define the order of execution */\n    order: 900,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: applyStyle,\n    /** @prop {Function} */\n    onLoad: applyStyleOnLoad,\n    /**\n     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: undefined\n  }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n *   modifiers: {\n *     preventOverflow: { enabled: false }\n *   }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n  /**\n   * Popper's placement.\n   * @prop {Popper.placements} placement='bottom'\n   */\n  placement: 'bottom',\n\n  /**\n   * Set this to true if you want popper to position it self in 'fixed' mode\n   * @prop {Boolean} positionFixed=false\n   */\n  positionFixed: false,\n\n  /**\n   * Whether events (resize, scroll) are initially enabled.\n   * @prop {Boolean} eventsEnabled=true\n   */\n  eventsEnabled: true,\n\n  /**\n   * Set to true if you want to automatically remove the popper when\n   * you call the `destroy` method.\n   * @prop {Boolean} removeOnDestroy=false\n   */\n  removeOnDestroy: false,\n\n  /**\n   * Callback called when the popper is created.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onCreate}\n   */\n  onCreate: function onCreate() {},\n\n  /**\n   * Callback called when the popper is updated. This callback is not called\n   * on the initialization/creation of the popper, but only on subsequent\n   * updates.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onUpdate}\n   */\n  onUpdate: function onUpdate() {},\n\n  /**\n   * List of modifiers used to modify the offsets before they are applied to the popper.\n   * They provide most of the functionalities of Popper.js.\n   * @prop {modifiers}\n   */\n  modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n  /**\n   * Creates a new Popper.js instance.\n   * @class Popper\n   * @param {Element|referenceObject} reference - The reference element used to position the popper\n   * @param {Element} popper - The HTML / XML element used as the popper\n   * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n   * @return {Object} instance - The generated Popper.js instance\n   */\n  function Popper(reference, popper) {\n    var _this = this;\n\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    classCallCheck(this, Popper);\n\n    this.scheduleUpdate = function () {\n      return requestAnimationFrame(_this.update);\n    };\n\n    // make update() debounced, so that it only runs at most once-per-tick\n    this.update = debounce(this.update.bind(this));\n\n    // with {} we create a new object with the options inside it\n    this.options = _extends({}, Popper.Defaults, options);\n\n    // init state\n    this.state = {\n      isDestroyed: false,\n      isCreated: false,\n      scrollParents: []\n    };\n\n    // get reference and popper elements (allow jQuery wrappers)\n    this.reference = reference && reference.jquery ? reference[0] : reference;\n    this.popper = popper && popper.jquery ? popper[0] : popper;\n\n    // Deep merge modifiers options\n    this.options.modifiers = {};\n    Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n      _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n    });\n\n    // Refactoring modifiers' list (Object => Array)\n    this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n      return _extends({\n        name: name\n      }, _this.options.modifiers[name]);\n    })\n    // sort the modifiers by order\n    .sort(function (a, b) {\n      return a.order - b.order;\n    });\n\n    // modifiers have the ability to execute arbitrary code when Popper.js get inited\n    // such code is executed in the same order of its modifier\n    // they could add new properties to their options configuration\n    // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n    this.modifiers.forEach(function (modifierOptions) {\n      if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n        modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n      }\n    });\n\n    // fire the first update to position the popper in the right place\n    this.update();\n\n    var eventsEnabled = this.options.eventsEnabled;\n    if (eventsEnabled) {\n      // setup event listeners, they will take care of update the position in specific situations\n      this.enableEventListeners();\n    }\n\n    this.state.eventsEnabled = eventsEnabled;\n  }\n\n  // We can't use class properties because they don't get listed in the\n  // class prototype and break stuff like Sinon stubs\n\n\n  createClass(Popper, [{\n    key: 'update',\n    value: function update$$1() {\n      return update.call(this);\n    }\n  }, {\n    key: 'destroy',\n    value: function destroy$$1() {\n      return destroy.call(this);\n    }\n  }, {\n    key: 'enableEventListeners',\n    value: function enableEventListeners$$1() {\n      return enableEventListeners.call(this);\n    }\n  }, {\n    key: 'disableEventListeners',\n    value: function disableEventListeners$$1() {\n      return disableEventListeners.call(this);\n    }\n\n    /**\n     * Schedules an update. It will run on the next UI update available.\n     * @method scheduleUpdate\n     * @memberof Popper\n     */\n\n\n    /**\n     * Collection of utilities useful when writing custom modifiers.\n     * Starting from version 1.7, this method is available only if you\n     * include `popper-utils.js` before `popper.js`.\n     *\n     * **DEPRECATION**: This way to access PopperUtils is deprecated\n     * and will be removed in v2! Use the PopperUtils module directly instead.\n     * Due to the high instability of the methods contained in Utils, we can't\n     * guarantee them to follow semver. Use them at your own risk!\n     * @static\n     * @private\n     * @type {Object}\n     * @deprecated since version 1.8\n     * @member Utils\n     * @memberof Popper\n     */\n\n  }]);\n  return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","import axios from 'axios'; // ??kb\nimport 'lazysizes'; // 100kb\n// JS Cookie\nconst Cookies = require('./libraries/js.cookie'); // ??kb\nrequire('./translation');\n\n/**\n * We'll load jQuery and the Bootstrap jQuery plugin which provides support\n * for JavaScript based Bootstrap features such as modals and tabs. This\n * code may be modified to fit the specific needs of your application.\n */\n\ntry {\n    window.Popper = require('popper.js').default; // 200kb\n    window.$ = window.jQuery = require('jquery'); // in vendor\n\n    require('bootstrap'); // 400kb\n} catch (e) {}\n\n/**\n * We'll load the axios HTTP library which allows us to easily issue requests\n * to our Laravel back-end. This library automatically handles sending the\n * CSRF token as a header based on the value of the \"XSRF\" token cookie.\n */\n\nwindow.axios = axios;\n\nwindow.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n\nwindow.axios.defaults.withCredentials = true;\n\n// Global cancel token\nconst CancelToken = window.axios.CancelToken;\nwindow.axiosSource = CancelToken.source();\n\n// Cancel axios calls with cancel token on from submit\nconst forms = document.getElementsByTagName('form');\nfor (var i = 0; i < forms.length; i++) {             \n    forms[i].addEventListener(\"submit\", function(e) {\n        window.axiosSource.cancel('Operation canceled by the user.');\n    });\n}\n\n/**\n * Echo exposes an expressive API for subscribing to channels and listening\n * for events that are broadcast by Laravel. Echo and event broadcasting\n * allows your team to easily build robust real-time web applications.\n */\n\n// import Echo from 'laravel-echo';\n\n// window.Pusher = require('pusher-js');\n\n// window.Echo = new Echo({\n//     broadcaster: 'pusher',\n//     key: process.env.MIX_PUSHER_APP_KEY,\n//     cluster: process.env.MIX_PUSHER_APP_CLUSTER,\n//     forceTLS: true\n// });\n","import React from 'react';\n\nclass Image extends React.Component {\n    constructor(props) {\n        super(props);\n\n        // Defaults\n        this.width = this.props.width || 307.5;\n        this.height = this.props.height || 200;\n\n        // Set state\n        this.state = {\n            focalX: 0.5,\n            focalY: 0.5,\n            focalZ: 1,\n            sizes: {\n                small: {\n                    media: \"(max-width: 575px)\",\n                    width: 190,\n                    height: Math.round((190 / this.width) * this.height),\n                },\n                normal: {\n                    media: \"(min-width: 576px)\",\n                    width: this.width,\n                    height: this.height,\n                },\n            },\n            formats: ['webp', 'jpg'],\n        };\n    }\n\n    componentDidMount() {\n        // Get values from attributes\n        this.setState(() => ({\n            focalX: this.props.focalX || this.state.focalX,\n            focalY: this.props.focalY || this.state.focalY,\n            focalZ: this.props.focalZ || this.state.focalZ,\n            formats: this.props.formats || this.state.formats,\n        }));\n    }\n\n    render() {\n        const pattern = new RegExp('^https?:', 'i');\n        const isFullUrl = pattern.test(this.props.image);\n\n        const image = isFullUrl ? this.props.image : window.imgixUrl + this.props.image;\n        const stateData = this.state;\n\n        const imgixPattern = new RegExp(`^${window.imgixUrl.replace(/[-[/\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')}.*`, 'i');\n        const isImgix = imgixPattern.test(image);\n\n        if (!isImgix) {\n            const paddingBottom = Math.round(this.props.width < this.props.height ? (this.props.width * 100) / this.props.height : (this.props.height * 100) / this.props.width);\n\n            return (\n                <div className={this.props.className + ` legacy-wrapper`} style={{ paddingBottom: paddingBottom + '%', width: this.props.width }}>\n                    <div className=\"background-blur\" style={{ backgroundImage: `url('${image}')` }}></div>\n                    <img data-pin-nopin=\"true\" src={image} alt={this.props.alt} />\n                </div>\n            )\n        }\n\n        const imageUrl = new URL(image);\n        imageUrl.searchParams.set('fit', 'crop');\n        imageUrl.searchParams.set('crop', 'focalpoint');\n        imageUrl.searchParams.set('fp-x', stateData.focalX);\n        imageUrl.searchParams.set('fp-y', stateData.focalY);\n        imageUrl.searchParams.set('fp-z', stateData.focalZ);\n\n        const imageMain = new URL(imageUrl);\n        imageMain.searchParams.set('w', this.width);\n        imageMain.searchParams.set('h', this.height);\n\n        const imageLazy = new URL(imageMain);\n        imageLazy.searchParams.set('px', '28');\n        imageLazy.searchParams.set('q', '0');\n        imageLazy.searchParams.set('colorquant', '16');\n\n        // Prevent numbers to be last fix\n        imageMain.searchParams.set('auto', 'format');\n        imageLazy.searchParams.set('auto', 'format');\n\n        return (\n            <React.Fragment>\n                <picture className={this.props.className} data-pin-nopin=\"true\">\n                    {Object.keys(stateData.sizes).map(function (sizeName, index) {\n                        return <React.Fragment key={index}>\n                            {stateData.formats.map(function (format, index) {\n                                const src1x = new URL(image);\n                                src1x.searchParams.set('fit', 'crop');\n                                src1x.searchParams.set('crop', 'focalpoint');\n                                src1x.searchParams.set('fp-x', stateData.focalX);\n                                src1x.searchParams.set('fp-y', stateData.focalY);\n                                src1x.searchParams.set('fp-z', stateData.focalZ);\n                                src1x.searchParams.set('w', stateData.sizes[sizeName].width);\n                                src1x.searchParams.set('h', stateData.sizes[sizeName].height);\n                                src1x.searchParams.set('fm', format);\n\n                                const src2x = new URL(src1x);\n                                src2x.searchParams.set('dpr', '2');\n\n                                return <source key={index} media={stateData.sizes[sizeName].media}\n                                    type={`image/${format}`}\n                                    data-srcset={\n                                        `${src1x} 1x, ` +\n                                        `${src2x} 2x`} />\n                            })}\n                        </React.Fragment>\n                    })}\n                    <img src={`${imageLazy}`}\n                        data-src={`${imageMain}`}\n                        alt={this.props.alt}\n                        width={this.width}\n                        height={this.height}\n                        data-pin-nopin=\"true\"\n                        className=\"lazyload\" />\n                </picture>\n            </React.Fragment>\n        )\n    }\n}\n\nexport default Image;","import React from 'react';\n\nconst SmallPostDummy = (props) => (\n    <div className={`col-6 col-lg-${props.columnSize}`}>\n        <div className=\"post post--dummy d-flex flex-row justify-content-center\">\n            <div className=\"smallpost\">\n                <span className=\"smallpost_image\"></span>\n                <span className=\"smallpost_byline\"></span>\n                <span className=\"smallpost_byline\"></span>\n            </div>\n        </div>\n    </div>\n);\n\nexport default SmallPostDummy;","import React from 'react';\nimport DOMPurify from 'dompurify';\nimport Image from '../PostComponents/Image';\nimport SmallPostDummy from '../Dummies/SmallPostDummy';\nimport Ad from '../PostComponents/Ad';\n\nclass SmallPost extends React.Component {\n    constructor(props) {\n        super(props);\n\n        this.post = this.props.data;\n        this.rowCount = this.props.rowCount ?? 4;\n        this.postsBeforeAd = this.rowCount * 2;\n\n    }\n\n    render() {\n        const columnSize = 12 / this.rowCount;\n\n        if (typeof this.post == 'undefined') {\n            return <SmallPostDummy columnSize={columnSize} />\n        }\n\n        const shortContent = DOMPurify.sanitize(this.post.excerpt);\n\n\n        return (\n            <React.Fragment>\n                <div className={`col-6 col-lg-${columnSize} ${this.props.className}`} {...this.props.attributes}>\n                    <div className=\"post post--small d-flex flex-column\">\n                        {this.post.featured_image && \n                            <a href={this.post.url} className=\"d-block\">\n                                <Image className=\"post_image\" image={this.post.featured_image.url} alt={this.post.featured_image.title || this.post.title} width={307.5} height={200} />\n                            </a>\n                        }\n                        <a href={this.post.url} className=\"d-block post_title\">\n                            <h2>{this.post.title}</h2>\n                        </a>\n                        <div className=\"post_head\">\n                            {this.post.categories[0] && (\n                                <div className=\"post_category\">\n                                    <a href={`${this.post.categories[0].url}`}>{this.post.categories[0].name}</a>\n                                </div>\n                            )\n                            }\n                            <span className=\"post_date\">{this.post.date_text}</span>\n                        </div>\n                        <div className=\"post_content\" dangerouslySetInnerHTML={{__html: shortContent}}>\n                        </div>\n                    </div>\n                </div>\n                {(this.props.infinityIndex % this.postsBeforeAd == 0 \n                    && this.props.infinityIndex <= 8 * this.postsBeforeAd ) &&\n                    <div className=\"col-12\">\n                        <Ad nbr={this.props.infinityIndex / this.postsBeforeAd} type=\"small\" fitAdsToContent={this.props.fitAdsToContent} timestamp={this.props.timestamp}/>\n                    </div>\n                }\n            </React.Fragment>\n        )\n    }\n}\n\nexport default SmallPost;","\"use strict\";\n\n/*!\n * JavaScript Cookie v2.2.0\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;\n\nwindow.Cookie = {};\n(function (factory) {\n  var registeredInModuleLoader = false;\n\n  if (typeof define === 'function' && define.amd) {\n    define(factory);\n    registeredInModuleLoader = true;\n  }\n\n  if (typeof exports === 'object') {\n    module.exports = factory();\n    registeredInModuleLoader = true;\n  }\n\n  if (!registeredInModuleLoader) {\n    var OldCookies = window.Cookies;\n    var api = window.Cookies = factory();\n\n    api.noConflict = function () {\n      window.Cookies = OldCookies;\n      return api;\n    };\n  }\n})(function () {\n  function extend() {\n    var i = 0;\n    var result = {};\n\n    for (; i < arguments.length; i++) {\n      var attributes = arguments[i];\n\n      for (var key in attributes) {\n        result[key] = attributes[key];\n      }\n    }\n\n    return result;\n  }\n\n  function init(converter) {\n    function api(key, value, attributes) {\n      var result;\n\n      if (typeof document === 'undefined') {\n        return;\n      } // Write\n\n\n      if (arguments.length > 1) {\n        attributes = extend({\n          path: '/'\n        }, api.defaults, attributes);\n\n        if (typeof attributes.expires === 'number') {\n          var expires = new Date();\n          expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);\n          attributes.expires = expires;\n        } // We're using \"expires\" because \"max-age\" is not supported by IE\n\n\n        attributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n        try {\n          result = JSON.stringify(value);\n\n          if (/^[\\{\\[]/.test(result)) {\n            value = result;\n          }\n        } catch (e) {}\n\n        if (!converter.write) {\n          value = encodeURIComponent(String(value)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n        } else {\n          value = converter.write(value, key);\n        }\n\n        key = encodeURIComponent(String(key));\n        key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);\n        key = key.replace(/[\\(\\)]/g, escape);\n        var stringifiedAttributes = '';\n\n        for (var attributeName in attributes) {\n          if (!attributes[attributeName]) {\n            continue;\n          }\n\n          stringifiedAttributes += '; ' + attributeName;\n\n          if (attributes[attributeName] === true) {\n            continue;\n          }\n\n          stringifiedAttributes += '=' + attributes[attributeName];\n        }\n\n        return document.cookie = key + '=' + value + stringifiedAttributes;\n      } // Read\n\n\n      if (!key) {\n        result = {};\n      } // To prevent the for loop in the first place assign an empty array\n      // in case there are no cookies at all. Also prevents odd result when\n      // calling \"get()\"\n\n\n      var cookies = document.cookie ? document.cookie.split('; ') : [];\n      var rdecode = /(%[0-9A-Z]{2})+/g;\n      var i = 0;\n\n      for (; i < cookies.length; i++) {\n        var parts = cookies[i].split('=');\n        var cookie = parts.slice(1).join('=');\n\n        if (!this.json && cookie.charAt(0) === '\"') {\n          cookie = cookie.slice(1, -1);\n        }\n\n        try {\n          var name = parts[0].replace(rdecode, decodeURIComponent);\n          cookie = converter.read ? converter.read(cookie, name) : converter(cookie, name) || cookie.replace(rdecode, decodeURIComponent);\n\n          if (this.json) {\n            try {\n              cookie = JSON.parse(cookie);\n            } catch (e) {}\n          }\n\n          if (key === name) {\n            result = cookie;\n            break;\n          }\n\n          if (!key) {\n            result[name] = cookie;\n          }\n        } catch (e) {}\n      }\n\n      return result;\n    }\n\n    window.Cookie.set = api;\n\n    window.Cookie.get = function (key) {\n      return api.call(api, key);\n    };\n\n    window.Cookie.getJSON = function () {\n      return api.apply({\n        json: true\n      }, [].slice.call(arguments));\n    };\n\n    window.Cookie.defaults = {};\n\n    window.Cookie.remove = function (key, attributes) {\n      api(key, '', extend(attributes, {\n        expires: -1\n      }));\n    };\n\n    window.Cookie.withConverter = init;\n    return api;\n  }\n\n  return init(function () {});\n});","import React from 'react';\nclass Ad extends React.Component {\n    constructor(props) {\n        super(props);\n        this.adSlots = [\n            '',\n            'responsive_1',\n            'responsive_2',\n            'responsive_3',\n            'responsive_4',\n            'responsive_5',\n            'responsive_6',\n            'responsive_7',\n            'responsive_8'\n        ];\n    }\n\n    render() {\n        return (\n            <div className={`display-ad display_${this.props.nbr}`}>\n                <div className={`${this.props.fitAdsToContent ? 'adunit-wrapper-fit_to_content ' : ''}adunit-wrapper d-flex flex-column align-items-center full-width-breakout`}>\n                    <div id={`${this.adSlots[this.props.nbr]}-${this.props.timestamp}`}\n                        className=\"adunit\"\n                        count={this.props.nbr}\n                        data-aller-ad-placement={`responsive_${this.props.nbr}`}\n                        data-aduniqueid={this.props.timestamp}>\n                    </div>\n                </div>\n            </div>\n        );\n    }\n}\nexport default Ad;\n","/**\n * Translate the given key.\n */\nwindow.trans = function(key, replaces) {\n    let locale = document.documentElement.getAttribute('lang');\n    let translation = key;\n\n    // Check if present in DB\n    if (window.translations && window.translations[translation]) {\n        translation = window.translations[translation];\n        translation = transReplaces(translation, replaces);\n        return translation;\n    }\n\n    // If not, then check if english and skip if it is\n    if (locale == 'en') {\n        translation = transReplaces(translation, replaces);\n        return translation;\n    }\n\n    // Or try to fetch the translation from the language files\n    try {\n        const translations = require(`@lang/${locale}.json`);\n        translation = translations[key] ? translations[key] : key;\n\n        translation = transReplaces(translation, replaces);\n    } catch (error) {\n        if (process.env.NODE_ENV !== 'production') {\n            console.error(error);\n        }\n    }\n\n    return translation;\n}\n\n// Simple choice variant (single/plural only, no advanced count etc.)\nwindow.trans_choice = function(key, count = 1, replaces) {\n    let translation = trans(key, replaces);\n    const [single, plural] = translation.split('|');\n\n    return count > 1 ? plural : single;\n}\n\n// Replace keys in translation\nfunction transReplaces(text, replaces) {\n    for (var key in replaces) {\n        text = text.replace(':' + key, replaces[key])\n    }\n\n    return text;\n}","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","// Set locale\nwindow.locale = document.documentElement.getAttribute('lang');\n\n// Function for getting bootstrap current view size\nwindow.viewSize = function() {\n    let envs = ['xs', 'sm', 'md', 'lg', 'xl'];\n\n    let el = document.createElement('div');\n    document.body.appendChild(el);\n\n    let curEnv = envs.shift();\n\n    for (let env of envs.reverse()) {\n        el.classList.add(`d-${env}-none`);\n\n        if (window.getComputedStyle(el).display === 'none') {\n            curEnv = env;\n            break;\n        }\n    }\n\n    document.body.removeChild(el);\n    return curEnv;\n}","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport InfiniteScroll from '../InfiniteScroll';\nimport SmallPost from '../Models/SmallPost';\n\nclass CategoryPage extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state =  {\n      pagetype: '',\n      endpoint: `category/${window.category.id}`,\n      urlStructure: '%domain%/%categorySlug%/page/%id%/'\n    };\n  }\n\n\n  componentDidMount() {\n    this.getInitialState();\n  }\n\n  getInitialState() {\n    this.setState(() => ({  \n      pagetype: 'category',\n    }));\n  }\n\n  getSeoDataArray(post) {\n    let seoDataArray = [];\n\n    if (!post) {\n      return seoDataArray;\n    }\n    \n    const term = post.categories.find(({ id }) => id == window.category.id)\n    if (!term) {\n      return seoDataArray;\n    }\n\n    seoDataArray['aller_ga'] = term.seoData.aller_ga ?? {};\n    \n    return seoDataArray;\n  }\n\n  render() {\n    return (\n      <InfiniteScroll \n        pageId={this.props.pageId} \n        urlStructure={this.state.urlStructure} \n        perPage={12} \n        endpoint={this.state.endpoint} \n        pagetype={this.state.pagetype}\n        getSeoDataArray={this.getSeoDataArray}\n        >\n        <SmallPost rowCount={3} fitAdsToContent={true}/>\n      </InfiniteScroll>\n    )\n  } \n\n}\nlet categoryPageElement = document.getElementById('category');\nif (categoryPageElement) {\n  ReactDOM.render(<CategoryPage pageId={categoryPageElement.dataset.pageid}/>, categoryPageElement);\n}","import React, { Children } from 'react';\nimport ReactDOM from 'react-dom';\nimport TermFilter from './Partials/TermFilter';\n\nclass InfiniteScroll extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.state =  {\n      childType: Children.only(this.props.children).type.name.toLowerCase(),\n      children: [],\n      lastIndex: 0,\n      page: this.props.pageId ?? 1,\n      initialPage: this.props.pageId ? parseInt(this.props.pageId) : 1,\n      total: 0,\n      perpage: this.props.perPage ?? 1,\n      offset: 500,\n      progress: false,\n      completed: false,\n      skeleton: true,\n      id: this.props.id || 0,\n      date: this.props.date || false,\n      stateObjs: [],\n      metaObjs: [],\n      domain: `https://${window.location.host}`,\n      pathname: `${window.location.pathname}`,\n      categorySlug: window.location.pathname.split('/')[1] ?? false,\n      tagSlug: window.location.pathname.split('/')[2] ?? false,\n      childrenDivided: [],\n      tags: [],\n      categories: [],\n      orderDirection: 'DESC',\n      year: this.props.year || false,\n      month: this.props.month || false,\n      hideAds: false,\n      cursor: this.props.cursor || null\n    };\n\n    this.topAdDiv = document.querySelector('#top_ad-');\n    this.usedTimestamps = [];\n    this.keyToTimestamp = [];\n    this.infiniteScroll = this.infiniteScroll.bind(this);\n    this.handleScroll = this.handleScroll.bind(this);\n    this.onOrderingChange = this.onOrderingChange.bind(this);\n  }\n\n  generateUrl(data) {\n    let returner = this.props.urlStructure;\n    returner = returner.replace('%domain%', this.state.domain);\n    returner = returner.replace('%id%', data.current_page);\n    returner = returner.replace('%url%', Array.isArray(data.data) ? (data.data.length > 0 ? data.data[0].url : '') : '');\n    returner = returner.replace('%pathname%', this.state.pathname);\n    returner = returner.replace('%categorySlug%', this.state.categorySlug);\n    returner = returner.replace('%tagSlug%', this.state.tagSlug);\n    returner = returner.replace('%year%', this.state.year);\n    returner = returner.replace('%month%', this.state.month);\n    return returner;\n  }\n\n  updateBrowserHistory(index) {\n    // Do not update URL in cursor-mode.\n    if (this.state.cursor == null) {\n        index += this.state.initialPage;\n        history.pushState(this.state.stateObjs[index], '' , this.state.stateObjs[index].current_url);\n    }\n  }\n\n  updateMetaData(index, metaData) {\n      \n    if (index != null) {\n      index += this.state.initialPage;\n      metaData = this.state.metaObjs[index];\n    }\n\n    if (metaData && metaData['aller_ga'] && Object.keys(metaData['aller_ga']).length !== 0) {\n      const aller_ga = metaData['aller_ga'];\n      window.cts = window.cts || {};\n      window.cts.metadata = {\n        pageId: aller_ga.id,\n        publishedTime: aller_ga.postDate,\n        author: aller_ga.postAuthor,\n        loggedIn: aller_ga.loggedIn,\n        contentType: aller_ga.pageType,\n    };\n    \n    // seems dynamic update of schema and seo data isn't tracked by anyone so for now disabling\n    return;\n    }\n\n    const pageTypesToUpdate = [\n      'home',\n      'single'\n    ];\n\n    if(pageTypesToUpdate.indexOf(this.props.pagetype) == -1 ) {\n      return;\n    }\n\n    this.doUpdateMetaData(metaData);\n  }\n\n  doUpdateMetaData(metaData) {\n    const headElement = document.querySelector('head');\n    let metaElement;\n\n    for (var key in metaData) {\n      metaElement = headElement.querySelector(`meta[property=\"${key}\"]`) ?? false;\n      if(metaElement){\n        metaElement.content = metaData[key];\n      }\n    }\n  }\n\n  up(index) {\n    this.updateBrowserHistory(index);\n    this.updateMetaData(index);\n  }\n\n  down(index) {\n    this.updateBrowserHistory(index);\n    this.updateMetaData(index);\n  }\n\n  reset() {\n    this.updateBrowserHistory(0);\n  }\n\n  initiateAd() {\n    if (this.state.timestamp && \n      !this.state.hideAds\n    ) {\n      this.usedTimestamps.push(this.state.timestamp);\n      if(this.topAdDiv){\n          this.topAdDiv.id = `${this.topAdDiv.id}${this.state.timestamp}`;\n          this.topAdDiv = null;\n      }\n\n      // window.ama.init is running automatically on page load, so we run window.ama.init manually from the second time.   \n      if (this.usedTimestamps.length > 1) {\n\n        if (typeof window.ama?.init === 'function') {\n          window.ama.init(this.state.timestamp);\n        } else {\n          console.error('window.ama.init is not a function. Probably aller-ads script is not ready.');\n        }\n      } else {\n        window.ama = window.ama || {};\n        window.ama.adsUniqueId = `${this.state.timestamp}`;\n      }\n    }\n  }\n\n  shouldHideAds(metaData) {\n    let hideAdsEnabled = metaData._ana_hide_ads ?? false;\n    let hideAds = false;\n    let hideDuration = metaData._ana_hide_ads_duration_active ?? false;\n    let hideUntil = metaData._ana_hide_ads_duration ?? false;\n    if (hideAdsEnabled) {\n      hideAds = true;\n\n      if (hideDuration) {\n        hideAds = new Date(hideUntil) > new Date();\n      }\n    }\n\n    return hideAds;\n  }\n\n  hasNewTimestamp () {\n    return this.state.timestamp && this.usedTimestamps.indexOf(this.state.timestamp) == -1;\n  }\n\n  componentDidUpdate() {\n    if (this.hasNewTimestamp()) {\n      this.initiateAd();\n    }\n\n    if (typeof window.instgrm !== 'undefined') {\n      window.instgrm.Embeds.process();\n    }\n  }\n\n  componentDidMount() {\n    this.getInitialState();\n    window.addEventListener('scroll', this.handleScroll);\n  }\n\n  getInitialState() {\n    this.setState(() => ({\n      progress: true,\n      page: this.props.pageId ?? 1,\n      cursor: this.props.cursor || null,\n    }));\n\n    if (this.state.categorySlug && this.state.categorySlug !== 'etikett' && this.state.categorySlug !== 'search') {\n      axios.get(`/api/category`)\n      .then((response) => {\n        if (response.status == 200) {\n          this.setState(() => ({\n            categories: response.data,\n          }));\n        }\n      })\n      .catch((error) => {\n        console.log(error);\n      });\n    }\n    // (TODO:infinite) Create endpoint in archive class to remove year and month get variables\n    let endpoint = this.props.getEndpoint?.() ?? `/api/${this.props.endpoint}/?page=${this.state.page}&count=${this.state.perpage}&id=${this.state.id}&direction=${this.state.orderDirection}&year=${this.state.year}&month=${this.state.month}`;\n\n    if (this.state.cursor !== null) {\n        endpoint += `&cursor=${this.state.cursor}`;\n    }\n\n    axios.get(endpoint)\n    .then((response) => {\n      let metaObjs = [];\n      let stateObjs = [];\n      let data = Object.values(response.data.data);\n      let childrenDivided = [];\n      let newChildCollection = data;\n      const completed = response.data.current_page >= response.data.last_page;\n      \n      metaObjs[parseInt(this.state.page)] = this.props.getSeoDataArray?.(data[0]) ?? [];\n      stateObjs[parseInt(this.state.page)] = {'current_url':window.location.href, 'page_title':data.title};\n      childrenDivided[0] = newChildCollection;\n      const cursor = response.data.cursor || null;\n\n      this.setState((prevState) => ({\n        page: parseInt(this.state.page),\n        children: newChildCollection,\n        total: response.data.total,\n        progress: false,\n        completed: completed,\n        stateObjs: stateObjs,\n        metaObjs: metaObjs,\n        childrenDivided: childrenDivided,\n        hideAds: (data[0]?.meta_data) ? this.shouldHideAds(data[0].meta_data) : false,\n        timestamp: (Math.floor(Math.random() * 99) + 1).toString(),\n        cursor,\n      }));\n\n      if (window.innerHeight >= document.documentElement.scrollHeight && !completed) {\n        this.infiniteScroll(null, null, null, newChildCollection);\n      } else {\n        // Make sure window.cts.metadata is updated on initial page load.\n        this.updateMetaData(0);\n      }\n    })\n    .catch((error) => {\n      console.log(error);\n    });\n  }\n\n  onOrderingChange(event) {\n    const ordering = event.target.value;\n    this.setState(() => ({\n      page: 0,\n      children: [],\n      childrenDivided: [],\n      orderDirection: ordering,\n      initialPage: 1,\n      stateObjs: [],\n      metaObjs: [],\n      completed: false,\n    }));\n    this.infiniteScroll(true, 0, ordering);\n  }\n\n  handleScroll () {\n    if(this.props.preview){\n      return;\n    }\n    let contentWrapper;\n    try {\n      contentWrapper = ReactDOM.findDOMNode(this);\n    } catch (error) {\n      return;\n    }\n    if (!this.state.completed && \n      !this.state.progress && \n      (window.innerHeight + window.scrollY) >= (contentWrapper.offsetHeight)\n      ) {\n        this.infiniteScroll()\n      }\n\n      // (TODO:infinite) define benchmarks and optimize\n      // (TODO:infinite) same logic for archive pages\n      $('.infinityCollection').each((index, element) => {\n        let rect = element.getBoundingClientRect();\n        if(rect.top < 600 &&\n          rect.bottom > 600 &&\n          this.state.lastIndex != index){\n          if (index < this.state.lastIndex)\n          {\n            this.up(index);\n          } else {\n            this.down(index);\n          }\n          this.setState({\n            lastIndex: index\n          });\n          return;\n        }\n      });\n  }\n\n  infiniteScroll(reset, pageOverride, orderDirectionOverride, previousChildCollection) {\n    if(this.props.preview){\n      return;\n    }\n    this.setState(() => ({\n      progress: true,\n    }));\n\n    const page = pageOverride ?? this.state.page;\n    const direction = orderDirectionOverride ?? this.state.orderDirection;\n    let endpoint = this.props.getEndpoint?.( // (TODO:infinite) Create endpoint in archive class to remove year and month get variables\n      previousChildCollection || \n      this.state.childrenDivided[this.state.childrenDivided.length - 1]) ?? \n      `/api/${this.props.endpoint}/?page=${page + 1}&count=${this.state.perpage}&id=${this.state.id}&direction=${direction}&year=${this.state.year}&month=${this.state.month}`;\n\n    if (endpoint == false) {\n      this.setState((prevState) => ({\n        progress: false,\n        completed: true,\n      }));\n\n      return;\n    }\n\n    if (this.state.cursor !== null) {\n        endpoint += `&cursor=${this.state.cursor}`;\n    }\n\n    axios.get(endpoint)\n    .then((response) => {\n      let stateObjs = this.state.stateObjs;\n      let metaObjs = this.state.metaObjs;\n      let data = Object.values(response.data.data);\n      let childrenDivided = this.state.childrenDivided;\n\n      stateObjs[page + 1] = {'current_url':this.generateUrl(response.data), 'page_title':data.title};\n      metaObjs[page + 1] = this.props.getSeoDataArray?.(data[0]) ?? [];\n      childrenDivided[this.state.childrenDivided.length] = data;\n      const cursor = response.data.cursor || null;\n\n      this.initAds = true;\n      this.setState((prevState) => ({\n        page: page + 1,\n        children: this.state.children.concat(data),\n        total: response.data.total,\n        progress: false,\n        completed: response.data.current_page >= response.data.last_page,\n        stateObjs: stateObjs,\n        metaObjs: metaObjs,\n        childrenDivided: childrenDivided,\n        hideAds: (data[0]?.meta_data) ? this.shouldHideAds(data[0].meta_data) : false,\n        timestamp: (Math.floor(Math.random() * 99) + 1).toString(),\n        cursor\n      }));\n\n      // Reset history? (on ordering change etc)\n      if (reset) {\n        this.reset();\n      }\n\n      this.handleScroll();\n    })\n    .catch((error) => {\n      console.log(error);\n    });\n  }\n\n  constructChildren(childElement) {\n    let childElements = [];\n    let masterindex = 1;\n    let infinityIndex = 1;\n\n    this.state.childrenDivided.forEach(array => {\n      childElements.push((\n        <div className=\"infinityCollection row\" key={masterindex}>\n          {array.map((child, index) => {\n          const key = index * masterindex + (child.id.toString() ?? 'nuller');\n          if (!this.keyToTimestamp[key]) {\n            this.keyToTimestamp[key] = this.state.timestamp;\n          }\n          const props = { \n            timestamp: this.keyToTimestamp[key], \n            infinityIndex: infinityIndex, \n            data: child, \n            key: key, \n            preview: this.props.preview\n          };\n          infinityIndex++;\n          return React.cloneElement(childElement, props);\n        })}\n        </div>));\n        masterindex++;\n    });\n    let skeletonElements = [];\n    if (this.state.progress && !this.state.completed) {\n      for (let index = 0; index < this.props.perPage; index++) {\n        let props = {key: `${index}-${this.state.page}`};\n        skeletonElements.push(React.cloneElement(childElement, props));\n      }\n      childElements.push((\n        <div className=\"row\" key={masterindex}>\n          {skeletonElements}\n        </div>\n      ));\n    }\n\n    return childElements;\n  }\n\n  render() {\n    const childElement = Children.only(this.props.children);\n\n    if (!React.isValidElement(childElement)) {\n      return;\n    }\n    \n    const childElements = this.constructChildren(childElement);\n    const showFilter = ['category', 'archive'].indexOf(this.props.pagetype) !== -1;\n    const showLink = (this.props.pagetype == 'search' || this.props.pagetype == 'tag' || this.props.pagetype == 'category' || this.props.pagetype == 'archive')? true : false;\n    const homeUrl = `${document.location.protocol}//${document.location.host}/`;\n\n    return (\n      <React.Fragment>\n        <div className=\"row\">\n          { showFilter && \n            <TermFilter\n              pagetype={this.props.pagetype} \n              topCategories={this.state.topCategories} \n              tags={this.state.tags} \n              tagSlug={this.state.tagSlug} \n              categories={this.state.categories} \n              categorySlug={this.state.categorySlug} \n              ordering={this.state.ordering} \n              onOrderingChange={this.onOrderingChange} />\n          }\n          <div className={`infinity-scroll col-12 col-lg-${showFilter ? 9 : 12}`}>\n            { childElements }\n            {this.props.preview !== 1 && this.state.completed && showLink == false &&\n              <div className=\"text-center\">\n                <h5 className=\"text-bold\" >Det finns inga fler inlägg</h5>\n              </div>\n            }\n            {this.props.preview !== 1 && this.state.completed && showLink &&\n            <div className=\"text-center more-info\">\n              <h5 className=\"text-bold\" >Det finns inga fler inlägg</h5>\n              <a href={homeUrl}>Här hittar du fler inlägg</a>\n            </div>\n          }\n          </div>\n        </div>\n      </React.Fragment>\n    );\n  } \n\n}\n\nexport default InfiniteScroll;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/*!\n  * Bootstrap v4.6.0 (https://getbootstrap.com/)\n  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :\n  typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n}(this, (function (exports, $, Popper) { 'use strict';\n\n  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n  var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n  var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);\n\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    return Constructor;\n  }\n\n  function _extends() {\n    _extends = Object.assign || function (target) {\n      for (var i = 1; i < arguments.length; i++) {\n        var source = arguments[i];\n\n        for (var key in source) {\n          if (Object.prototype.hasOwnProperty.call(source, key)) {\n            target[key] = source[key];\n          }\n        }\n      }\n\n      return target;\n    };\n\n    return _extends.apply(this, arguments);\n  }\n\n  function _inheritsLoose(subClass, superClass) {\n    subClass.prototype = Object.create(superClass.prototype);\n    subClass.prototype.constructor = subClass;\n    subClass.__proto__ = superClass;\n  }\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.6.0): util.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Private TransitionEnd Helpers\n   * ------------------------------------------------------------------------\n   */\n\n  var TRANSITION_END = 'transitionend';\n  var MAX_UID = 1000000;\n  var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n  function toType(obj) {\n    if (obj === null || typeof obj === 'undefined') {\n      return \"\" + obj;\n    }\n\n    return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n  }\n\n  function getSpecialTransitionEndEvent() {\n    return {\n      bindType: TRANSITION_END,\n      delegateType: TRANSITION_END,\n      handle: function handle(event) {\n        if ($__default['default'](event.target).is(this)) {\n          return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n        }\n\n        return undefined;\n      }\n    };\n  }\n\n  function transitionEndEmulator(duration) {\n    var _this = this;\n\n    var called = false;\n    $__default['default'](this).one(Util.TRANSITION_END, function () {\n      called = true;\n    });\n    setTimeout(function () {\n      if (!called) {\n        Util.triggerTransitionEnd(_this);\n      }\n    }, duration);\n    return this;\n  }\n\n  function setTransitionEndSupport() {\n    $__default['default'].fn.emulateTransitionEnd = transitionEndEmulator;\n    $__default['default'].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n  }\n  /**\n   * --------------------------------------------------------------------------\n   * Public Util Api\n   * --------------------------------------------------------------------------\n   */\n\n\n  var Util = {\n    TRANSITION_END: 'bsTransitionEnd',\n    getUID: function getUID(prefix) {\n      do {\n        prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n      } while (document.getElementById(prefix));\n\n      return prefix;\n    },\n    getSelectorFromElement: function getSelectorFromElement(element) {\n      var selector = element.getAttribute('data-target');\n\n      if (!selector || selector === '#') {\n        var hrefAttr = element.getAttribute('href');\n        selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n      }\n\n      try {\n        return document.querySelector(selector) ? selector : null;\n      } catch (_) {\n        return null;\n      }\n    },\n    getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n      if (!element) {\n        return 0;\n      } // Get transition-duration of the element\n\n\n      var transitionDuration = $__default['default'](element).css('transition-duration');\n      var transitionDelay = $__default['default'](element).css('transition-delay');\n      var floatTransitionDuration = parseFloat(transitionDuration);\n      var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n      if (!floatTransitionDuration && !floatTransitionDelay) {\n        return 0;\n      } // If multiple durations are defined, take the first\n\n\n      transitionDuration = transitionDuration.split(',')[0];\n      transitionDelay = transitionDelay.split(',')[0];\n      return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n    },\n    reflow: function reflow(element) {\n      return element.offsetHeight;\n    },\n    triggerTransitionEnd: function triggerTransitionEnd(element) {\n      $__default['default'](element).trigger(TRANSITION_END);\n    },\n    supportsTransitionEnd: function supportsTransitionEnd() {\n      return Boolean(TRANSITION_END);\n    },\n    isElement: function isElement(obj) {\n      return (obj[0] || obj).nodeType;\n    },\n    typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n      for (var property in configTypes) {\n        if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n          var expectedTypes = configTypes[property];\n          var value = config[property];\n          var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n          if (!new RegExp(expectedTypes).test(valueType)) {\n            throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n          }\n        }\n      }\n    },\n    findShadowRoot: function findShadowRoot(element) {\n      if (!document.documentElement.attachShadow) {\n        return null;\n      } // Can find the shadow root otherwise it'll return the document\n\n\n      if (typeof element.getRootNode === 'function') {\n        var root = element.getRootNode();\n        return root instanceof ShadowRoot ? root : null;\n      }\n\n      if (element instanceof ShadowRoot) {\n        return element;\n      } // when we don't find a shadow root\n\n\n      if (!element.parentNode) {\n        return null;\n      }\n\n      return Util.findShadowRoot(element.parentNode);\n    },\n    jQueryDetection: function jQueryDetection() {\n      if (typeof $__default['default'] === 'undefined') {\n        throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n      }\n\n      var version = $__default['default'].fn.jquery.split(' ')[0].split('.');\n      var minMajor = 1;\n      var ltMajor = 2;\n      var minMinor = 9;\n      var minPatch = 1;\n      var maxMajor = 4;\n\n      if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n        throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n      }\n    }\n  };\n  Util.jQueryDetection();\n  setTransitionEndSupport();\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME = 'alert';\n  var VERSION = '4.6.0';\n  var DATA_KEY = 'bs.alert';\n  var EVENT_KEY = \".\" + DATA_KEY;\n  var DATA_API_KEY = '.data-api';\n  var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME];\n  var SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n  var EVENT_CLOSE = \"close\" + EVENT_KEY;\n  var EVENT_CLOSED = \"closed\" + EVENT_KEY;\n  var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n  var CLASS_NAME_ALERT = 'alert';\n  var CLASS_NAME_FADE = 'fade';\n  var CLASS_NAME_SHOW = 'show';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var Alert = /*#__PURE__*/function () {\n    function Alert(element) {\n      this._element = element;\n    } // Getters\n\n\n    var _proto = Alert.prototype;\n\n    // Public\n    _proto.close = function close(element) {\n      var rootElement = this._element;\n\n      if (element) {\n        rootElement = this._getRootElement(element);\n      }\n\n      var customEvent = this._triggerCloseEvent(rootElement);\n\n      if (customEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._removeElement(rootElement);\n    };\n\n    _proto.dispose = function dispose() {\n      $__default['default'].removeData(this._element, DATA_KEY);\n      this._element = null;\n    } // Private\n    ;\n\n    _proto._getRootElement = function _getRootElement(element) {\n      var selector = Util.getSelectorFromElement(element);\n      var parent = false;\n\n      if (selector) {\n        parent = document.querySelector(selector);\n      }\n\n      if (!parent) {\n        parent = $__default['default'](element).closest(\".\" + CLASS_NAME_ALERT)[0];\n      }\n\n      return parent;\n    };\n\n    _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n      var closeEvent = $__default['default'].Event(EVENT_CLOSE);\n      $__default['default'](element).trigger(closeEvent);\n      return closeEvent;\n    };\n\n    _proto._removeElement = function _removeElement(element) {\n      var _this = this;\n\n      $__default['default'](element).removeClass(CLASS_NAME_SHOW);\n\n      if (!$__default['default'](element).hasClass(CLASS_NAME_FADE)) {\n        this._destroyElement(element);\n\n        return;\n      }\n\n      var transitionDuration = Util.getTransitionDurationFromElement(element);\n      $__default['default'](element).one(Util.TRANSITION_END, function (event) {\n        return _this._destroyElement(element, event);\n      }).emulateTransitionEnd(transitionDuration);\n    };\n\n    _proto._destroyElement = function _destroyElement(element) {\n      $__default['default'](element).detach().trigger(EVENT_CLOSED).remove();\n    } // Static\n    ;\n\n    Alert._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default['default'](this);\n        var data = $element.data(DATA_KEY);\n\n        if (!data) {\n          data = new Alert(this);\n          $element.data(DATA_KEY, data);\n        }\n\n        if (config === 'close') {\n          data[config](this);\n        }\n      });\n    };\n\n    Alert._handleDismiss = function _handleDismiss(alertInstance) {\n      return function (event) {\n        if (event) {\n          event.preventDefault();\n        }\n\n        alertInstance.close(this);\n      };\n    };\n\n    _createClass(Alert, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION;\n      }\n    }]);\n\n    return Alert;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'](document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $__default['default'].fn[NAME] = Alert._jQueryInterface;\n  $__default['default'].fn[NAME].Constructor = Alert;\n\n  $__default['default'].fn[NAME].noConflict = function () {\n    $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;\n    return Alert._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$1 = 'button';\n  var VERSION$1 = '4.6.0';\n  var DATA_KEY$1 = 'bs.button';\n  var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n  var DATA_API_KEY$1 = '.data-api';\n  var JQUERY_NO_CONFLICT$1 = $__default['default'].fn[NAME$1];\n  var CLASS_NAME_ACTIVE = 'active';\n  var CLASS_NAME_BUTTON = 'btn';\n  var CLASS_NAME_FOCUS = 'focus';\n  var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]';\n  var SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]';\n  var SELECTOR_DATA_TOGGLE = '[data-toggle=\"button\"]';\n  var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn';\n  var SELECTOR_INPUT = 'input:not([type=\"hidden\"])';\n  var SELECTOR_ACTIVE = '.active';\n  var SELECTOR_BUTTON = '.btn';\n  var EVENT_CLICK_DATA_API$1 = \"click\" + EVENT_KEY$1 + DATA_API_KEY$1;\n  var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY$1 + DATA_API_KEY$1 + \" \" + (\"blur\" + EVENT_KEY$1 + DATA_API_KEY$1);\n  var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY$1 + DATA_API_KEY$1;\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var Button = /*#__PURE__*/function () {\n    function Button(element) {\n      this._element = element;\n      this.shouldAvoidTriggerChange = false;\n    } // Getters\n\n\n    var _proto = Button.prototype;\n\n    // Public\n    _proto.toggle = function toggle() {\n      var triggerChangeEvent = true;\n      var addAriaPressed = true;\n      var rootElement = $__default['default'](this._element).closest(SELECTOR_DATA_TOGGLES)[0];\n\n      if (rootElement) {\n        var input = this._element.querySelector(SELECTOR_INPUT);\n\n        if (input) {\n          if (input.type === 'radio') {\n            if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n              triggerChangeEvent = false;\n            } else {\n              var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);\n\n              if (activeElement) {\n                $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE);\n              }\n            }\n          }\n\n          if (triggerChangeEvent) {\n            // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n            if (input.type === 'checkbox' || input.type === 'radio') {\n              input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE);\n            }\n\n            if (!this.shouldAvoidTriggerChange) {\n              $__default['default'](input).trigger('change');\n            }\n          }\n\n          input.focus();\n          addAriaPressed = false;\n        }\n      }\n\n      if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n        if (addAriaPressed) {\n          this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE));\n        }\n\n        if (triggerChangeEvent) {\n          $__default['default'](this._element).toggleClass(CLASS_NAME_ACTIVE);\n        }\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      $__default['default'].removeData(this._element, DATA_KEY$1);\n      this._element = null;\n    } // Static\n    ;\n\n    Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {\n      return this.each(function () {\n        var $element = $__default['default'](this);\n        var data = $element.data(DATA_KEY$1);\n\n        if (!data) {\n          data = new Button(this);\n          $element.data(DATA_KEY$1, data);\n        }\n\n        data.shouldAvoidTriggerChange = avoidTriggerChange;\n\n        if (config === 'toggle') {\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Button, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$1;\n      }\n    }]);\n\n    return Button;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n    var button = event.target;\n    var initialButton = button;\n\n    if (!$__default['default'](button).hasClass(CLASS_NAME_BUTTON)) {\n      button = $__default['default'](button).closest(SELECTOR_BUTTON)[0];\n    }\n\n    if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n      event.preventDefault(); // work around Firefox bug #1540995\n    } else {\n      var inputBtn = button.querySelector(SELECTOR_INPUT);\n\n      if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n        event.preventDefault(); // work around Firefox bug #1540995\n\n        return;\n      }\n\n      if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n        Button._jQueryInterface.call($__default['default'](button), 'toggle', initialButton.tagName === 'INPUT');\n      }\n    }\n  }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n    var button = $__default['default'](event.target).closest(SELECTOR_BUTTON)[0];\n    $__default['default'](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n  });\n  $__default['default'](window).on(EVENT_LOAD_DATA_API, function () {\n    // ensure correct active class is set to match the controls' actual values/states\n    // find all checkboxes/readio buttons inside data-toggle groups\n    var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));\n\n    for (var i = 0, len = buttons.length; i < len; i++) {\n      var button = buttons[i];\n      var input = button.querySelector(SELECTOR_INPUT);\n\n      if (input.checked || input.hasAttribute('checked')) {\n        button.classList.add(CLASS_NAME_ACTIVE);\n      } else {\n        button.classList.remove(CLASS_NAME_ACTIVE);\n      }\n    } // find all button toggles\n\n\n    buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));\n\n    for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n      var _button = buttons[_i];\n\n      if (_button.getAttribute('aria-pressed') === 'true') {\n        _button.classList.add(CLASS_NAME_ACTIVE);\n      } else {\n        _button.classList.remove(CLASS_NAME_ACTIVE);\n      }\n    }\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $__default['default'].fn[NAME$1] = Button._jQueryInterface;\n  $__default['default'].fn[NAME$1].Constructor = Button;\n\n  $__default['default'].fn[NAME$1].noConflict = function () {\n    $__default['default'].fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n    return Button._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$2 = 'carousel';\n  var VERSION$2 = '4.6.0';\n  var DATA_KEY$2 = 'bs.carousel';\n  var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n  var DATA_API_KEY$2 = '.data-api';\n  var JQUERY_NO_CONFLICT$2 = $__default['default'].fn[NAME$2];\n  var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n  var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n  var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n  var SWIPE_THRESHOLD = 40;\n  var Default = {\n    interval: 5000,\n    keyboard: true,\n    slide: false,\n    pause: 'hover',\n    wrap: true,\n    touch: true\n  };\n  var DefaultType = {\n    interval: '(number|boolean)',\n    keyboard: 'boolean',\n    slide: '(boolean|string)',\n    pause: '(string|boolean)',\n    wrap: 'boolean',\n    touch: 'boolean'\n  };\n  var DIRECTION_NEXT = 'next';\n  var DIRECTION_PREV = 'prev';\n  var DIRECTION_LEFT = 'left';\n  var DIRECTION_RIGHT = 'right';\n  var EVENT_SLIDE = \"slide\" + EVENT_KEY$2;\n  var EVENT_SLID = \"slid\" + EVENT_KEY$2;\n  var EVENT_KEYDOWN = \"keydown\" + EVENT_KEY$2;\n  var EVENT_MOUSEENTER = \"mouseenter\" + EVENT_KEY$2;\n  var EVENT_MOUSELEAVE = \"mouseleave\" + EVENT_KEY$2;\n  var EVENT_TOUCHSTART = \"touchstart\" + EVENT_KEY$2;\n  var EVENT_TOUCHMOVE = \"touchmove\" + EVENT_KEY$2;\n  var EVENT_TOUCHEND = \"touchend\" + EVENT_KEY$2;\n  var EVENT_POINTERDOWN = \"pointerdown\" + EVENT_KEY$2;\n  var EVENT_POINTERUP = \"pointerup\" + EVENT_KEY$2;\n  var EVENT_DRAG_START = \"dragstart\" + EVENT_KEY$2;\n  var EVENT_LOAD_DATA_API$1 = \"load\" + EVENT_KEY$2 + DATA_API_KEY$2;\n  var EVENT_CLICK_DATA_API$2 = \"click\" + EVENT_KEY$2 + DATA_API_KEY$2;\n  var CLASS_NAME_CAROUSEL = 'carousel';\n  var CLASS_NAME_ACTIVE$1 = 'active';\n  var CLASS_NAME_SLIDE = 'slide';\n  var CLASS_NAME_RIGHT = 'carousel-item-right';\n  var CLASS_NAME_LEFT = 'carousel-item-left';\n  var CLASS_NAME_NEXT = 'carousel-item-next';\n  var CLASS_NAME_PREV = 'carousel-item-prev';\n  var CLASS_NAME_POINTER_EVENT = 'pointer-event';\n  var SELECTOR_ACTIVE$1 = '.active';\n  var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n  var SELECTOR_ITEM = '.carousel-item';\n  var SELECTOR_ITEM_IMG = '.carousel-item img';\n  var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n  var SELECTOR_INDICATORS = '.carousel-indicators';\n  var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';\n  var SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]';\n  var PointerType = {\n    TOUCH: 'touch',\n    PEN: 'pen'\n  };\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var Carousel = /*#__PURE__*/function () {\n    function Carousel(element, config) {\n      this._items = null;\n      this._interval = null;\n      this._activeElement = null;\n      this._isPaused = false;\n      this._isSliding = false;\n      this.touchTimeout = null;\n      this.touchStartX = 0;\n      this.touchDeltaX = 0;\n      this._config = this._getConfig(config);\n      this._element = element;\n      this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);\n      this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n      this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n      this._addEventListeners();\n    } // Getters\n\n\n    var _proto = Carousel.prototype;\n\n    // Public\n    _proto.next = function next() {\n      if (!this._isSliding) {\n        this._slide(DIRECTION_NEXT);\n      }\n    };\n\n    _proto.nextWhenVisible = function nextWhenVisible() {\n      var $element = $__default['default'](this._element); // Don't call next when the page isn't visible\n      // or the carousel or its parent isn't visible\n\n      if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') {\n        this.next();\n      }\n    };\n\n    _proto.prev = function prev() {\n      if (!this._isSliding) {\n        this._slide(DIRECTION_PREV);\n      }\n    };\n\n    _proto.pause = function pause(event) {\n      if (!event) {\n        this._isPaused = true;\n      }\n\n      if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n        Util.triggerTransitionEnd(this._element);\n        this.cycle(true);\n      }\n\n      clearInterval(this._interval);\n      this._interval = null;\n    };\n\n    _proto.cycle = function cycle(event) {\n      if (!event) {\n        this._isPaused = false;\n      }\n\n      if (this._interval) {\n        clearInterval(this._interval);\n        this._interval = null;\n      }\n\n      if (this._config.interval && !this._isPaused) {\n        this._updateInterval();\n\n        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n      }\n    };\n\n    _proto.to = function to(index) {\n      var _this = this;\n\n      this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n      var activeIndex = this._getItemIndex(this._activeElement);\n\n      if (index > this._items.length - 1 || index < 0) {\n        return;\n      }\n\n      if (this._isSliding) {\n        $__default['default'](this._element).one(EVENT_SLID, function () {\n          return _this.to(index);\n        });\n        return;\n      }\n\n      if (activeIndex === index) {\n        this.pause();\n        this.cycle();\n        return;\n      }\n\n      var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;\n\n      this._slide(direction, this._items[index]);\n    };\n\n    _proto.dispose = function dispose() {\n      $__default['default'](this._element).off(EVENT_KEY$2);\n      $__default['default'].removeData(this._element, DATA_KEY$2);\n      this._items = null;\n      this._config = null;\n      this._element = null;\n      this._interval = null;\n      this._isPaused = null;\n      this._isSliding = null;\n      this._activeElement = null;\n      this._indicatorsElement = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default, config);\n      Util.typeCheckConfig(NAME$2, config, DefaultType);\n      return config;\n    };\n\n    _proto._handleSwipe = function _handleSwipe() {\n      var absDeltax = Math.abs(this.touchDeltaX);\n\n      if (absDeltax <= SWIPE_THRESHOLD) {\n        return;\n      }\n\n      var direction = absDeltax / this.touchDeltaX;\n      this.touchDeltaX = 0; // swipe left\n\n      if (direction > 0) {\n        this.prev();\n      } // swipe right\n\n\n      if (direction < 0) {\n        this.next();\n      }\n    };\n\n    _proto._addEventListeners = function _addEventListeners() {\n      var _this2 = this;\n\n      if (this._config.keyboard) {\n        $__default['default'](this._element).on(EVENT_KEYDOWN, function (event) {\n          return _this2._keydown(event);\n        });\n      }\n\n      if (this._config.pause === 'hover') {\n        $__default['default'](this._element).on(EVENT_MOUSEENTER, function (event) {\n          return _this2.pause(event);\n        }).on(EVENT_MOUSELEAVE, function (event) {\n          return _this2.cycle(event);\n        });\n      }\n\n      if (this._config.touch) {\n        this._addTouchEventListeners();\n      }\n    };\n\n    _proto._addTouchEventListeners = function _addTouchEventListeners() {\n      var _this3 = this;\n\n      if (!this._touchSupported) {\n        return;\n      }\n\n      var start = function start(event) {\n        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n          _this3.touchStartX = event.originalEvent.clientX;\n        } else if (!_this3._pointerEvent) {\n          _this3.touchStartX = event.originalEvent.touches[0].clientX;\n        }\n      };\n\n      var move = function move(event) {\n        // ensure swiping with one touch and not pinching\n        if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n          _this3.touchDeltaX = 0;\n        } else {\n          _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;\n        }\n      };\n\n      var end = function end(event) {\n        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n          _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n        }\n\n        _this3._handleSwipe();\n\n        if (_this3._config.pause === 'hover') {\n          // If it's a touch-enabled device, mouseenter/leave are fired as\n          // part of the mouse compatibility events on first tap - the carousel\n          // would stop cycling until user tapped out of it;\n          // here, we listen for touchend, explicitly pause the carousel\n          // (as if it's the second time we tap on it, mouseenter compat event\n          // is NOT fired) and after a timeout (to allow for mouse compatibility\n          // events to fire) we explicitly restart cycling\n          _this3.pause();\n\n          if (_this3.touchTimeout) {\n            clearTimeout(_this3.touchTimeout);\n          }\n\n          _this3.touchTimeout = setTimeout(function (event) {\n            return _this3.cycle(event);\n          }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n        }\n      };\n\n      $__default['default'](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {\n        return e.preventDefault();\n      });\n\n      if (this._pointerEvent) {\n        $__default['default'](this._element).on(EVENT_POINTERDOWN, function (event) {\n          return start(event);\n        });\n        $__default['default'](this._element).on(EVENT_POINTERUP, function (event) {\n          return end(event);\n        });\n\n        this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n      } else {\n        $__default['default'](this._element).on(EVENT_TOUCHSTART, function (event) {\n          return start(event);\n        });\n        $__default['default'](this._element).on(EVENT_TOUCHMOVE, function (event) {\n          return move(event);\n        });\n        $__default['default'](this._element).on(EVENT_TOUCHEND, function (event) {\n          return end(event);\n        });\n      }\n    };\n\n    _proto._keydown = function _keydown(event) {\n      if (/input|textarea/i.test(event.target.tagName)) {\n        return;\n      }\n\n      switch (event.which) {\n        case ARROW_LEFT_KEYCODE:\n          event.preventDefault();\n          this.prev();\n          break;\n\n        case ARROW_RIGHT_KEYCODE:\n          event.preventDefault();\n          this.next();\n          break;\n      }\n    };\n\n    _proto._getItemIndex = function _getItemIndex(element) {\n      this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];\n      return this._items.indexOf(element);\n    };\n\n    _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n      var isNextDirection = direction === DIRECTION_NEXT;\n      var isPrevDirection = direction === DIRECTION_PREV;\n\n      var activeIndex = this._getItemIndex(activeElement);\n\n      var lastItemIndex = this._items.length - 1;\n      var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n      if (isGoingToWrap && !this._config.wrap) {\n        return activeElement;\n      }\n\n      var delta = direction === DIRECTION_PREV ? -1 : 1;\n      var itemIndex = (activeIndex + delta) % this._items.length;\n      return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n    };\n\n    _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n      var targetIndex = this._getItemIndex(relatedTarget);\n\n      var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));\n\n      var slideEvent = $__default['default'].Event(EVENT_SLIDE, {\n        relatedTarget: relatedTarget,\n        direction: eventDirectionName,\n        from: fromIndex,\n        to: targetIndex\n      });\n      $__default['default'](this._element).trigger(slideEvent);\n      return slideEvent;\n    };\n\n    _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n      if (this._indicatorsElement) {\n        var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));\n        $__default['default'](indicators).removeClass(CLASS_NAME_ACTIVE$1);\n\n        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n        if (nextIndicator) {\n          $__default['default'](nextIndicator).addClass(CLASS_NAME_ACTIVE$1);\n        }\n      }\n    };\n\n    _proto._updateInterval = function _updateInterval() {\n      var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n      if (!element) {\n        return;\n      }\n\n      var elementInterval = parseInt(element.getAttribute('data-interval'), 10);\n\n      if (elementInterval) {\n        this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n        this._config.interval = elementInterval;\n      } else {\n        this._config.interval = this._config.defaultInterval || this._config.interval;\n      }\n    };\n\n    _proto._slide = function _slide(direction, element) {\n      var _this4 = this;\n\n      var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n      var activeElementIndex = this._getItemIndex(activeElement);\n\n      var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n      var nextElementIndex = this._getItemIndex(nextElement);\n\n      var isCycling = Boolean(this._interval);\n      var directionalClassName;\n      var orderClassName;\n      var eventDirectionName;\n\n      if (direction === DIRECTION_NEXT) {\n        directionalClassName = CLASS_NAME_LEFT;\n        orderClassName = CLASS_NAME_NEXT;\n        eventDirectionName = DIRECTION_LEFT;\n      } else {\n        directionalClassName = CLASS_NAME_RIGHT;\n        orderClassName = CLASS_NAME_PREV;\n        eventDirectionName = DIRECTION_RIGHT;\n      }\n\n      if (nextElement && $__default['default'](nextElement).hasClass(CLASS_NAME_ACTIVE$1)) {\n        this._isSliding = false;\n        return;\n      }\n\n      var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n      if (slideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (!activeElement || !nextElement) {\n        // Some weirdness is happening, so we bail\n        return;\n      }\n\n      this._isSliding = true;\n\n      if (isCycling) {\n        this.pause();\n      }\n\n      this._setActiveIndicatorElement(nextElement);\n\n      this._activeElement = nextElement;\n      var slidEvent = $__default['default'].Event(EVENT_SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      });\n\n      if ($__default['default'](this._element).hasClass(CLASS_NAME_SLIDE)) {\n        $__default['default'](nextElement).addClass(orderClassName);\n        Util.reflow(nextElement);\n        $__default['default'](activeElement).addClass(directionalClassName);\n        $__default['default'](nextElement).addClass(directionalClassName);\n        var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n        $__default['default'](activeElement).one(Util.TRANSITION_END, function () {\n          $__default['default'](nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(CLASS_NAME_ACTIVE$1);\n          $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE$1 + \" \" + orderClassName + \" \" + directionalClassName);\n          _this4._isSliding = false;\n          setTimeout(function () {\n            return $__default['default'](_this4._element).trigger(slidEvent);\n          }, 0);\n        }).emulateTransitionEnd(transitionDuration);\n      } else {\n        $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE$1);\n        $__default['default'](nextElement).addClass(CLASS_NAME_ACTIVE$1);\n        this._isSliding = false;\n        $__default['default'](this._element).trigger(slidEvent);\n      }\n\n      if (isCycling) {\n        this.cycle();\n      }\n    } // Static\n    ;\n\n    Carousel._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default['default'](this).data(DATA_KEY$2);\n\n        var _config = _extends({}, Default, $__default['default'](this).data());\n\n        if (typeof config === 'object') {\n          _config = _extends({}, _config, config);\n        }\n\n        var action = typeof config === 'string' ? config : _config.slide;\n\n        if (!data) {\n          data = new Carousel(this, _config);\n          $__default['default'](this).data(DATA_KEY$2, data);\n        }\n\n        if (typeof config === 'number') {\n          data.to(config);\n        } else if (typeof action === 'string') {\n          if (typeof data[action] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n          }\n\n          data[action]();\n        } else if (_config.interval && _config.ride) {\n          data.pause();\n          data.cycle();\n        }\n      });\n    };\n\n    Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n      var selector = Util.getSelectorFromElement(this);\n\n      if (!selector) {\n        return;\n      }\n\n      var target = $__default['default'](selector)[0];\n\n      if (!target || !$__default['default'](target).hasClass(CLASS_NAME_CAROUSEL)) {\n        return;\n      }\n\n      var config = _extends({}, $__default['default'](target).data(), $__default['default'](this).data());\n\n      var slideIndex = this.getAttribute('data-slide-to');\n\n      if (slideIndex) {\n        config.interval = false;\n      }\n\n      Carousel._jQueryInterface.call($__default['default'](target), config);\n\n      if (slideIndex) {\n        $__default['default'](target).data(DATA_KEY$2).to(slideIndex);\n      }\n\n      event.preventDefault();\n    };\n\n    _createClass(Carousel, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$2;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default;\n      }\n    }]);\n\n    return Carousel;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'](document).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);\n  $__default['default'](window).on(EVENT_LOAD_DATA_API$1, function () {\n    var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));\n\n    for (var i = 0, len = carousels.length; i < len; i++) {\n      var $carousel = $__default['default'](carousels[i]);\n\n      Carousel._jQueryInterface.call($carousel, $carousel.data());\n    }\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $__default['default'].fn[NAME$2] = Carousel._jQueryInterface;\n  $__default['default'].fn[NAME$2].Constructor = Carousel;\n\n  $__default['default'].fn[NAME$2].noConflict = function () {\n    $__default['default'].fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n    return Carousel._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$3 = 'collapse';\n  var VERSION$3 = '4.6.0';\n  var DATA_KEY$3 = 'bs.collapse';\n  var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n  var DATA_API_KEY$3 = '.data-api';\n  var JQUERY_NO_CONFLICT$3 = $__default['default'].fn[NAME$3];\n  var Default$1 = {\n    toggle: true,\n    parent: ''\n  };\n  var DefaultType$1 = {\n    toggle: 'boolean',\n    parent: '(string|element)'\n  };\n  var EVENT_SHOW = \"show\" + EVENT_KEY$3;\n  var EVENT_SHOWN = \"shown\" + EVENT_KEY$3;\n  var EVENT_HIDE = \"hide\" + EVENT_KEY$3;\n  var EVENT_HIDDEN = \"hidden\" + EVENT_KEY$3;\n  var EVENT_CLICK_DATA_API$3 = \"click\" + EVENT_KEY$3 + DATA_API_KEY$3;\n  var CLASS_NAME_SHOW$1 = 'show';\n  var CLASS_NAME_COLLAPSE = 'collapse';\n  var CLASS_NAME_COLLAPSING = 'collapsing';\n  var CLASS_NAME_COLLAPSED = 'collapsed';\n  var DIMENSION_WIDTH = 'width';\n  var DIMENSION_HEIGHT = 'height';\n  var SELECTOR_ACTIVES = '.show, .collapsing';\n  var SELECTOR_DATA_TOGGLE$1 = '[data-toggle=\"collapse\"]';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var Collapse = /*#__PURE__*/function () {\n    function Collapse(element, config) {\n      this._isTransitioning = false;\n      this._element = element;\n      this._config = this._getConfig(config);\n      this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n      var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$1));\n\n      for (var i = 0, len = toggleList.length; i < len; i++) {\n        var elem = toggleList[i];\n        var selector = Util.getSelectorFromElement(elem);\n        var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n          return foundElem === element;\n        });\n\n        if (selector !== null && filterElement.length > 0) {\n          this._selector = selector;\n\n          this._triggerArray.push(elem);\n        }\n      }\n\n      this._parent = this._config.parent ? this._getParent() : null;\n\n      if (!this._config.parent) {\n        this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n      }\n\n      if (this._config.toggle) {\n        this.toggle();\n      }\n    } // Getters\n\n\n    var _proto = Collapse.prototype;\n\n    // Public\n    _proto.toggle = function toggle() {\n      if ($__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) {\n        this.hide();\n      } else {\n        this.show();\n      }\n    };\n\n    _proto.show = function show() {\n      var _this = this;\n\n      if (this._isTransitioning || $__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) {\n        return;\n      }\n\n      var actives;\n      var activesData;\n\n      if (this._parent) {\n        actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {\n          if (typeof _this._config.parent === 'string') {\n            return elem.getAttribute('data-parent') === _this._config.parent;\n          }\n\n          return elem.classList.contains(CLASS_NAME_COLLAPSE);\n        });\n\n        if (actives.length === 0) {\n          actives = null;\n        }\n      }\n\n      if (actives) {\n        activesData = $__default['default'](actives).not(this._selector).data(DATA_KEY$3);\n\n        if (activesData && activesData._isTransitioning) {\n          return;\n        }\n      }\n\n      var startEvent = $__default['default'].Event(EVENT_SHOW);\n      $__default['default'](this._element).trigger(startEvent);\n\n      if (startEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (actives) {\n        Collapse._jQueryInterface.call($__default['default'](actives).not(this._selector), 'hide');\n\n        if (!activesData) {\n          $__default['default'](actives).data(DATA_KEY$3, null);\n        }\n      }\n\n      var dimension = this._getDimension();\n\n      $__default['default'](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);\n      this._element.style[dimension] = 0;\n\n      if (this._triggerArray.length) {\n        $__default['default'](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);\n      }\n\n      this.setTransitioning(true);\n\n      var complete = function complete() {\n        $__default['default'](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$1);\n        _this._element.style[dimension] = '';\n\n        _this.setTransitioning(false);\n\n        $__default['default'](_this._element).trigger(EVENT_SHOWN);\n      };\n\n      var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n      var scrollSize = \"scroll\" + capitalizedDimension;\n      var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n      $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      this._element.style[dimension] = this._element[scrollSize] + \"px\";\n    };\n\n    _proto.hide = function hide() {\n      var _this2 = this;\n\n      if (this._isTransitioning || !$__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) {\n        return;\n      }\n\n      var startEvent = $__default['default'].Event(EVENT_HIDE);\n      $__default['default'](this._element).trigger(startEvent);\n\n      if (startEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      var dimension = this._getDimension();\n\n      this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n      Util.reflow(this._element);\n      $__default['default'](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$1);\n      var triggerArrayLength = this._triggerArray.length;\n\n      if (triggerArrayLength > 0) {\n        for (var i = 0; i < triggerArrayLength; i++) {\n          var trigger = this._triggerArray[i];\n          var selector = Util.getSelectorFromElement(trigger);\n\n          if (selector !== null) {\n            var $elem = $__default['default']([].slice.call(document.querySelectorAll(selector)));\n\n            if (!$elem.hasClass(CLASS_NAME_SHOW$1)) {\n              $__default['default'](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);\n            }\n          }\n        }\n      }\n\n      this.setTransitioning(true);\n\n      var complete = function complete() {\n        _this2.setTransitioning(false);\n\n        $__default['default'](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN);\n      };\n\n      this._element.style[dimension] = '';\n      var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n      $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n    };\n\n    _proto.setTransitioning = function setTransitioning(isTransitioning) {\n      this._isTransitioning = isTransitioning;\n    };\n\n    _proto.dispose = function dispose() {\n      $__default['default'].removeData(this._element, DATA_KEY$3);\n      this._config = null;\n      this._parent = null;\n      this._element = null;\n      this._triggerArray = null;\n      this._isTransitioning = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$1, config);\n      config.toggle = Boolean(config.toggle); // Coerce string values\n\n      Util.typeCheckConfig(NAME$3, config, DefaultType$1);\n      return config;\n    };\n\n    _proto._getDimension = function _getDimension() {\n      var hasWidth = $__default['default'](this._element).hasClass(DIMENSION_WIDTH);\n      return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;\n    };\n\n    _proto._getParent = function _getParent() {\n      var _this3 = this;\n\n      var parent;\n\n      if (Util.isElement(this._config.parent)) {\n        parent = this._config.parent; // It's a jQuery object\n\n        if (typeof this._config.parent.jquery !== 'undefined') {\n          parent = this._config.parent[0];\n        }\n      } else {\n        parent = document.querySelector(this._config.parent);\n      }\n\n      var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n      var children = [].slice.call(parent.querySelectorAll(selector));\n      $__default['default'](children).each(function (i, element) {\n        _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n      });\n      return parent;\n    };\n\n    _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n      var isOpen = $__default['default'](element).hasClass(CLASS_NAME_SHOW$1);\n\n      if (triggerArray.length) {\n        $__default['default'](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n      }\n    } // Static\n    ;\n\n    Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n      var selector = Util.getSelectorFromElement(element);\n      return selector ? document.querySelector(selector) : null;\n    };\n\n    Collapse._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default['default'](this);\n        var data = $element.data(DATA_KEY$3);\n\n        var _config = _extends({}, Default$1, $element.data(), typeof config === 'object' && config ? config : {});\n\n        if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n          _config.toggle = false;\n        }\n\n        if (!data) {\n          data = new Collapse(this, _config);\n          $element.data(DATA_KEY$3, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Collapse, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$3;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$1;\n      }\n    }]);\n\n    return Collapse;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) {\n    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n    if (event.currentTarget.tagName === 'A') {\n      event.preventDefault();\n    }\n\n    var $trigger = $__default['default'](this);\n    var selector = Util.getSelectorFromElement(this);\n    var selectors = [].slice.call(document.querySelectorAll(selector));\n    $__default['default'](selectors).each(function () {\n      var $target = $__default['default'](this);\n      var data = $target.data(DATA_KEY$3);\n      var config = data ? 'toggle' : $trigger.data();\n\n      Collapse._jQueryInterface.call($target, config);\n    });\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $__default['default'].fn[NAME$3] = Collapse._jQueryInterface;\n  $__default['default'].fn[NAME$3].Constructor = Collapse;\n\n  $__default['default'].fn[NAME$3].noConflict = function () {\n    $__default['default'].fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n    return Collapse._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$4 = 'dropdown';\n  var VERSION$4 = '4.6.0';\n  var DATA_KEY$4 = 'bs.dropdown';\n  var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n  var DATA_API_KEY$4 = '.data-api';\n  var JQUERY_NO_CONFLICT$4 = $__default['default'].fn[NAME$4];\n  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n  var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n  var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n  var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n  var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n  var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n  var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE);\n  var EVENT_HIDE$1 = \"hide\" + EVENT_KEY$4;\n  var EVENT_HIDDEN$1 = \"hidden\" + EVENT_KEY$4;\n  var EVENT_SHOW$1 = \"show\" + EVENT_KEY$4;\n  var EVENT_SHOWN$1 = \"shown\" + EVENT_KEY$4;\n  var EVENT_CLICK = \"click\" + EVENT_KEY$4;\n  var EVENT_CLICK_DATA_API$4 = \"click\" + EVENT_KEY$4 + DATA_API_KEY$4;\n  var EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY$4 + DATA_API_KEY$4;\n  var EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY$4 + DATA_API_KEY$4;\n  var CLASS_NAME_DISABLED = 'disabled';\n  var CLASS_NAME_SHOW$2 = 'show';\n  var CLASS_NAME_DROPUP = 'dropup';\n  var CLASS_NAME_DROPRIGHT = 'dropright';\n  var CLASS_NAME_DROPLEFT = 'dropleft';\n  var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';\n  var CLASS_NAME_POSITION_STATIC = 'position-static';\n  var SELECTOR_DATA_TOGGLE$2 = '[data-toggle=\"dropdown\"]';\n  var SELECTOR_FORM_CHILD = '.dropdown form';\n  var SELECTOR_MENU = '.dropdown-menu';\n  var SELECTOR_NAVBAR_NAV = '.navbar-nav';\n  var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n  var PLACEMENT_TOP = 'top-start';\n  var PLACEMENT_TOPEND = 'top-end';\n  var PLACEMENT_BOTTOM = 'bottom-start';\n  var PLACEMENT_BOTTOMEND = 'bottom-end';\n  var PLACEMENT_RIGHT = 'right-start';\n  var PLACEMENT_LEFT = 'left-start';\n  var Default$2 = {\n    offset: 0,\n    flip: true,\n    boundary: 'scrollParent',\n    reference: 'toggle',\n    display: 'dynamic',\n    popperConfig: null\n  };\n  var DefaultType$2 = {\n    offset: '(number|string|function)',\n    flip: 'boolean',\n    boundary: '(string|element)',\n    reference: '(string|element)',\n    display: 'string',\n    popperConfig: '(null|object)'\n  };\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var Dropdown = /*#__PURE__*/function () {\n    function Dropdown(element, config) {\n      this._element = element;\n      this._popper = null;\n      this._config = this._getConfig(config);\n      this._menu = this._getMenuElement();\n      this._inNavbar = this._detectNavbar();\n\n      this._addEventListeners();\n    } // Getters\n\n\n    var _proto = Dropdown.prototype;\n\n    // Public\n    _proto.toggle = function toggle() {\n      if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED)) {\n        return;\n      }\n\n      var isActive = $__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2);\n\n      Dropdown._clearMenus();\n\n      if (isActive) {\n        return;\n      }\n\n      this.show(true);\n    };\n\n    _proto.show = function show(usePopper) {\n      if (usePopper === void 0) {\n        usePopper = false;\n      }\n\n      if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED) || $__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2)) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var showEvent = $__default['default'].Event(EVENT_SHOW$1, relatedTarget);\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      $__default['default'](parent).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      } // Totally disable Popper for Dropdowns in Navbar\n\n\n      if (!this._inNavbar && usePopper) {\n        /**\n         * Check for Popper dependency\n         * Popper - https://popper.js.org\n         */\n        if (typeof Popper__default['default'] === 'undefined') {\n          throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n        }\n\n        var referenceElement = this._element;\n\n        if (this._config.reference === 'parent') {\n          referenceElement = parent;\n        } else if (Util.isElement(this._config.reference)) {\n          referenceElement = this._config.reference; // Check if it's jQuery element\n\n          if (typeof this._config.reference.jquery !== 'undefined') {\n            referenceElement = this._config.reference[0];\n          }\n        } // If boundary is not `scrollParent`, then set position to `static`\n        // to allow the menu to \"escape\" the scroll parent's boundaries\n        // https://github.com/twbs/bootstrap/issues/24251\n\n\n        if (this._config.boundary !== 'scrollParent') {\n          $__default['default'](parent).addClass(CLASS_NAME_POSITION_STATIC);\n        }\n\n        this._popper = new Popper__default['default'](referenceElement, this._menu, this._getPopperConfig());\n      } // If this is a touch-enabled device we add extra\n      // empty mouseover listeners to the body's immediate children;\n      // only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n      if ('ontouchstart' in document.documentElement && $__default['default'](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n        $__default['default'](document.body).children().on('mouseover', null, $__default['default'].noop);\n      }\n\n      this._element.focus();\n\n      this._element.setAttribute('aria-expanded', true);\n\n      $__default['default'](this._menu).toggleClass(CLASS_NAME_SHOW$2);\n      $__default['default'](parent).toggleClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_SHOWN$1, relatedTarget));\n    };\n\n    _proto.hide = function hide() {\n      if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED) || !$__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2)) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var hideEvent = $__default['default'].Event(EVENT_HIDE$1, relatedTarget);\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      $__default['default'](parent).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (this._popper) {\n        this._popper.destroy();\n      }\n\n      $__default['default'](this._menu).toggleClass(CLASS_NAME_SHOW$2);\n      $__default['default'](parent).toggleClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_HIDDEN$1, relatedTarget));\n    };\n\n    _proto.dispose = function dispose() {\n      $__default['default'].removeData(this._element, DATA_KEY$4);\n      $__default['default'](this._element).off(EVENT_KEY$4);\n      this._element = null;\n      this._menu = null;\n\n      if (this._popper !== null) {\n        this._popper.destroy();\n\n        this._popper = null;\n      }\n    };\n\n    _proto.update = function update() {\n      this._inNavbar = this._detectNavbar();\n\n      if (this._popper !== null) {\n        this._popper.scheduleUpdate();\n      }\n    } // Private\n    ;\n\n    _proto._addEventListeners = function _addEventListeners() {\n      var _this = this;\n\n      $__default['default'](this._element).on(EVENT_CLICK, function (event) {\n        event.preventDefault();\n        event.stopPropagation();\n\n        _this.toggle();\n      });\n    };\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, this.constructor.Default, $__default['default'](this._element).data(), config);\n      Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n      return config;\n    };\n\n    _proto._getMenuElement = function _getMenuElement() {\n      if (!this._menu) {\n        var parent = Dropdown._getParentFromElement(this._element);\n\n        if (parent) {\n          this._menu = parent.querySelector(SELECTOR_MENU);\n        }\n      }\n\n      return this._menu;\n    };\n\n    _proto._getPlacement = function _getPlacement() {\n      var $parentDropdown = $__default['default'](this._element.parentNode);\n      var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n      if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n        placement = $__default['default'](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n      } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n        placement = PLACEMENT_RIGHT;\n      } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n        placement = PLACEMENT_LEFT;\n      } else if ($__default['default'](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n        placement = PLACEMENT_BOTTOMEND;\n      }\n\n      return placement;\n    };\n\n    _proto._detectNavbar = function _detectNavbar() {\n      return $__default['default'](this._element).closest('.navbar').length > 0;\n    };\n\n    _proto._getOffset = function _getOffset() {\n      var _this2 = this;\n\n      var offset = {};\n\n      if (typeof this._config.offset === 'function') {\n        offset.fn = function (data) {\n          data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});\n          return data;\n        };\n      } else {\n        offset.offset = this._config.offset;\n      }\n\n      return offset;\n    };\n\n    _proto._getPopperConfig = function _getPopperConfig() {\n      var popperConfig = {\n        placement: this._getPlacement(),\n        modifiers: {\n          offset: this._getOffset(),\n          flip: {\n            enabled: this._config.flip\n          },\n          preventOverflow: {\n            boundariesElement: this._config.boundary\n          }\n        }\n      }; // Disable Popper if we have a static display\n\n      if (this._config.display === 'static') {\n        popperConfig.modifiers.applyStyle = {\n          enabled: false\n        };\n      }\n\n      return _extends({}, popperConfig, this._config.popperConfig);\n    } // Static\n    ;\n\n    Dropdown._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default['default'](this).data(DATA_KEY$4);\n\n        var _config = typeof config === 'object' ? config : null;\n\n        if (!data) {\n          data = new Dropdown(this, _config);\n          $__default['default'](this).data(DATA_KEY$4, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    Dropdown._clearMenus = function _clearMenus(event) {\n      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n        return;\n      }\n\n      var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));\n\n      for (var i = 0, len = toggles.length; i < len; i++) {\n        var parent = Dropdown._getParentFromElement(toggles[i]);\n\n        var context = $__default['default'](toggles[i]).data(DATA_KEY$4);\n        var relatedTarget = {\n          relatedTarget: toggles[i]\n        };\n\n        if (event && event.type === 'click') {\n          relatedTarget.clickEvent = event;\n        }\n\n        if (!context) {\n          continue;\n        }\n\n        var dropdownMenu = context._menu;\n\n        if (!$__default['default'](parent).hasClass(CLASS_NAME_SHOW$2)) {\n          continue;\n        }\n\n        if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default['default'].contains(parent, event.target)) {\n          continue;\n        }\n\n        var hideEvent = $__default['default'].Event(EVENT_HIDE$1, relatedTarget);\n        $__default['default'](parent).trigger(hideEvent);\n\n        if (hideEvent.isDefaultPrevented()) {\n          continue;\n        } // If this is a touch-enabled device we remove the extra\n        // empty mouseover listeners we added for iOS support\n\n\n        if ('ontouchstart' in document.documentElement) {\n          $__default['default'](document.body).children().off('mouseover', null, $__default['default'].noop);\n        }\n\n        toggles[i].setAttribute('aria-expanded', 'false');\n\n        if (context._popper) {\n          context._popper.destroy();\n        }\n\n        $__default['default'](dropdownMenu).removeClass(CLASS_NAME_SHOW$2);\n        $__default['default'](parent).removeClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_HIDDEN$1, relatedTarget));\n      }\n    };\n\n    Dropdown._getParentFromElement = function _getParentFromElement(element) {\n      var parent;\n      var selector = Util.getSelectorFromElement(element);\n\n      if (selector) {\n        parent = document.querySelector(selector);\n      }\n\n      return parent || element.parentNode;\n    } // eslint-disable-next-line complexity\n    ;\n\n    Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n      // If not input/textarea:\n      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n      // If input/textarea:\n      //  - If space key => not a dropdown command\n      //  - If key is other than escape\n      //    - If key is not up or down => not a dropdown command\n      //    - If trigger inside the menu => not a dropdown command\n      if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default['default'](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n        return;\n      }\n\n      if (this.disabled || $__default['default'](this).hasClass(CLASS_NAME_DISABLED)) {\n        return;\n      }\n\n      var parent = Dropdown._getParentFromElement(this);\n\n      var isActive = $__default['default'](parent).hasClass(CLASS_NAME_SHOW$2);\n\n      if (!isActive && event.which === ESCAPE_KEYCODE) {\n        return;\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n\n      if (!isActive || event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE) {\n        if (event.which === ESCAPE_KEYCODE) {\n          $__default['default'](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');\n        }\n\n        $__default['default'](this).trigger('click');\n        return;\n      }\n\n      var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {\n        return $__default['default'](item).is(':visible');\n      });\n\n      if (items.length === 0) {\n        return;\n      }\n\n      var index = items.indexOf(event.target);\n\n      if (event.which === ARROW_UP_KEYCODE && index > 0) {\n        // Up\n        index--;\n      }\n\n      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n        // Down\n        index++;\n      }\n\n      if (index < 0) {\n        index = 0;\n      }\n\n      items[index].focus();\n    };\n\n    _createClass(Dropdown, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$4;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$2;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$2;\n      }\n    }]);\n\n    return Dropdown;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$4 + \" \" + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) {\n    event.preventDefault();\n    event.stopPropagation();\n\n    Dropdown._jQueryInterface.call($__default['default'](this), 'toggle');\n  }).on(EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) {\n    e.stopPropagation();\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $__default['default'].fn[NAME$4] = Dropdown._jQueryInterface;\n  $__default['default'].fn[NAME$4].Constructor = Dropdown;\n\n  $__default['default'].fn[NAME$4].noConflict = function () {\n    $__default['default'].fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n    return Dropdown._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$5 = 'modal';\n  var VERSION$5 = '4.6.0';\n  var DATA_KEY$5 = 'bs.modal';\n  var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n  var DATA_API_KEY$5 = '.data-api';\n  var JQUERY_NO_CONFLICT$5 = $__default['default'].fn[NAME$5];\n  var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n  var Default$3 = {\n    backdrop: true,\n    keyboard: true,\n    focus: true,\n    show: true\n  };\n  var DefaultType$3 = {\n    backdrop: '(boolean|string)',\n    keyboard: 'boolean',\n    focus: 'boolean',\n    show: 'boolean'\n  };\n  var EVENT_HIDE$2 = \"hide\" + EVENT_KEY$5;\n  var EVENT_HIDE_PREVENTED = \"hidePrevented\" + EVENT_KEY$5;\n  var EVENT_HIDDEN$2 = \"hidden\" + EVENT_KEY$5;\n  var EVENT_SHOW$2 = \"show\" + EVENT_KEY$5;\n  var EVENT_SHOWN$2 = \"shown\" + EVENT_KEY$5;\n  var EVENT_FOCUSIN = \"focusin\" + EVENT_KEY$5;\n  var EVENT_RESIZE = \"resize\" + EVENT_KEY$5;\n  var EVENT_CLICK_DISMISS = \"click.dismiss\" + EVENT_KEY$5;\n  var EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\" + EVENT_KEY$5;\n  var EVENT_MOUSEUP_DISMISS = \"mouseup.dismiss\" + EVENT_KEY$5;\n  var EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\" + EVENT_KEY$5;\n  var EVENT_CLICK_DATA_API$5 = \"click\" + EVENT_KEY$5 + DATA_API_KEY$5;\n  var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';\n  var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';\n  var CLASS_NAME_BACKDROP = 'modal-backdrop';\n  var CLASS_NAME_OPEN = 'modal-open';\n  var CLASS_NAME_FADE$1 = 'fade';\n  var CLASS_NAME_SHOW$3 = 'show';\n  var CLASS_NAME_STATIC = 'modal-static';\n  var SELECTOR_DIALOG = '.modal-dialog';\n  var SELECTOR_MODAL_BODY = '.modal-body';\n  var SELECTOR_DATA_TOGGLE$3 = '[data-toggle=\"modal\"]';\n  var SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]';\n  var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n  var SELECTOR_STICKY_CONTENT = '.sticky-top';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var Modal = /*#__PURE__*/function () {\n    function Modal(element, config) {\n      this._config = this._getConfig(config);\n      this._element = element;\n      this._dialog = element.querySelector(SELECTOR_DIALOG);\n      this._backdrop = null;\n      this._isShown = false;\n      this._isBodyOverflowing = false;\n      this._ignoreBackdropClick = false;\n      this._isTransitioning = false;\n      this._scrollbarWidth = 0;\n    } // Getters\n\n\n    var _proto = Modal.prototype;\n\n    // Public\n    _proto.toggle = function toggle(relatedTarget) {\n      return this._isShown ? this.hide() : this.show(relatedTarget);\n    };\n\n    _proto.show = function show(relatedTarget) {\n      var _this = this;\n\n      if (this._isShown || this._isTransitioning) {\n        return;\n      }\n\n      if ($__default['default'](this._element).hasClass(CLASS_NAME_FADE$1)) {\n        this._isTransitioning = true;\n      }\n\n      var showEvent = $__default['default'].Event(EVENT_SHOW$2, {\n        relatedTarget: relatedTarget\n      });\n      $__default['default'](this._element).trigger(showEvent);\n\n      if (this._isShown || showEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._isShown = true;\n\n      this._checkScrollbar();\n\n      this._setScrollbar();\n\n      this._adjustDialog();\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      $__default['default'](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {\n        return _this.hide(event);\n      });\n      $__default['default'](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {\n        $__default['default'](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {\n          if ($__default['default'](event.target).is(_this._element)) {\n            _this._ignoreBackdropClick = true;\n          }\n        });\n      });\n\n      this._showBackdrop(function () {\n        return _this._showElement(relatedTarget);\n      });\n    };\n\n    _proto.hide = function hide(event) {\n      var _this2 = this;\n\n      if (event) {\n        event.preventDefault();\n      }\n\n      if (!this._isShown || this._isTransitioning) {\n        return;\n      }\n\n      var hideEvent = $__default['default'].Event(EVENT_HIDE$2);\n      $__default['default'](this._element).trigger(hideEvent);\n\n      if (!this._isShown || hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._isShown = false;\n      var transition = $__default['default'](this._element).hasClass(CLASS_NAME_FADE$1);\n\n      if (transition) {\n        this._isTransitioning = true;\n      }\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      $__default['default'](document).off(EVENT_FOCUSIN);\n      $__default['default'](this._element).removeClass(CLASS_NAME_SHOW$3);\n      $__default['default'](this._element).off(EVENT_CLICK_DISMISS);\n      $__default['default'](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);\n\n      if (transition) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $__default['default'](this._element).one(Util.TRANSITION_END, function (event) {\n          return _this2._hideModal(event);\n        }).emulateTransitionEnd(transitionDuration);\n      } else {\n        this._hideModal();\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      [window, this._element, this._dialog].forEach(function (htmlElement) {\n        return $__default['default'](htmlElement).off(EVENT_KEY$5);\n      });\n      /**\n       * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n       * Do not move `document` in `htmlElements` array\n       * It will remove `EVENT_CLICK_DATA_API` event that should remain\n       */\n\n      $__default['default'](document).off(EVENT_FOCUSIN);\n      $__default['default'].removeData(this._element, DATA_KEY$5);\n      this._config = null;\n      this._element = null;\n      this._dialog = null;\n      this._backdrop = null;\n      this._isShown = null;\n      this._isBodyOverflowing = null;\n      this._ignoreBackdropClick = null;\n      this._isTransitioning = null;\n      this._scrollbarWidth = null;\n    };\n\n    _proto.handleUpdate = function handleUpdate() {\n      this._adjustDialog();\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$3, config);\n      Util.typeCheckConfig(NAME$5, config, DefaultType$3);\n      return config;\n    };\n\n    _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n      var _this3 = this;\n\n      var hideEventPrevented = $__default['default'].Event(EVENT_HIDE_PREVENTED);\n      $__default['default'](this._element).trigger(hideEventPrevented);\n\n      if (hideEventPrevented.isDefaultPrevented()) {\n        return;\n      }\n\n      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n      if (!isModalOverflowing) {\n        this._element.style.overflowY = 'hidden';\n      }\n\n      this._element.classList.add(CLASS_NAME_STATIC);\n\n      var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n      $__default['default'](this._element).off(Util.TRANSITION_END);\n      $__default['default'](this._element).one(Util.TRANSITION_END, function () {\n        _this3._element.classList.remove(CLASS_NAME_STATIC);\n\n        if (!isModalOverflowing) {\n          $__default['default'](_this3._element).one(Util.TRANSITION_END, function () {\n            _this3._element.style.overflowY = '';\n          }).emulateTransitionEnd(_this3._element, modalTransitionDuration);\n        }\n      }).emulateTransitionEnd(modalTransitionDuration);\n\n      this._element.focus();\n    };\n\n    _proto._showElement = function _showElement(relatedTarget) {\n      var _this4 = this;\n\n      var transition = $__default['default'](this._element).hasClass(CLASS_NAME_FADE$1);\n      var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;\n\n      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n        // Don't move modal's DOM position\n        document.body.appendChild(this._element);\n      }\n\n      this._element.style.display = 'block';\n\n      this._element.removeAttribute('aria-hidden');\n\n      this._element.setAttribute('aria-modal', true);\n\n      this._element.setAttribute('role', 'dialog');\n\n      if ($__default['default'](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n        modalBody.scrollTop = 0;\n      } else {\n        this._element.scrollTop = 0;\n      }\n\n      if (transition) {\n        Util.reflow(this._element);\n      }\n\n      $__default['default'](this._element).addClass(CLASS_NAME_SHOW$3);\n\n      if (this._config.focus) {\n        this._enforceFocus();\n      }\n\n      var shownEvent = $__default['default'].Event(EVENT_SHOWN$2, {\n        relatedTarget: relatedTarget\n      });\n\n      var transitionComplete = function transitionComplete() {\n        if (_this4._config.focus) {\n          _this4._element.focus();\n        }\n\n        _this4._isTransitioning = false;\n        $__default['default'](_this4._element).trigger(shownEvent);\n      };\n\n      if (transition) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n        $__default['default'](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n      } else {\n        transitionComplete();\n      }\n    };\n\n    _proto._enforceFocus = function _enforceFocus() {\n      var _this5 = this;\n\n      $__default['default'](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop\n      .on(EVENT_FOCUSIN, function (event) {\n        if (document !== event.target && _this5._element !== event.target && $__default['default'](_this5._element).has(event.target).length === 0) {\n          _this5._element.focus();\n        }\n      });\n    };\n\n    _proto._setEscapeEvent = function _setEscapeEvent() {\n      var _this6 = this;\n\n      if (this._isShown) {\n        $__default['default'](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {\n          if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) {\n            event.preventDefault();\n\n            _this6.hide();\n          } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) {\n            _this6._triggerBackdropTransition();\n          }\n        });\n      } else if (!this._isShown) {\n        $__default['default'](this._element).off(EVENT_KEYDOWN_DISMISS);\n      }\n    };\n\n    _proto._setResizeEvent = function _setResizeEvent() {\n      var _this7 = this;\n\n      if (this._isShown) {\n        $__default['default'](window).on(EVENT_RESIZE, function (event) {\n          return _this7.handleUpdate(event);\n        });\n      } else {\n        $__default['default'](window).off(EVENT_RESIZE);\n      }\n    };\n\n    _proto._hideModal = function _hideModal() {\n      var _this8 = this;\n\n      this._element.style.display = 'none';\n\n      this._element.setAttribute('aria-hidden', true);\n\n      this._element.removeAttribute('aria-modal');\n\n      this._element.removeAttribute('role');\n\n      this._isTransitioning = false;\n\n      this._showBackdrop(function () {\n        $__default['default'](document.body).removeClass(CLASS_NAME_OPEN);\n\n        _this8._resetAdjustments();\n\n        _this8._resetScrollbar();\n\n        $__default['default'](_this8._element).trigger(EVENT_HIDDEN$2);\n      });\n    };\n\n    _proto._removeBackdrop = function _removeBackdrop() {\n      if (this._backdrop) {\n        $__default['default'](this._backdrop).remove();\n        this._backdrop = null;\n      }\n    };\n\n    _proto._showBackdrop = function _showBackdrop(callback) {\n      var _this9 = this;\n\n      var animate = $__default['default'](this._element).hasClass(CLASS_NAME_FADE$1) ? CLASS_NAME_FADE$1 : '';\n\n      if (this._isShown && this._config.backdrop) {\n        this._backdrop = document.createElement('div');\n        this._backdrop.className = CLASS_NAME_BACKDROP;\n\n        if (animate) {\n          this._backdrop.classList.add(animate);\n        }\n\n        $__default['default'](this._backdrop).appendTo(document.body);\n        $__default['default'](this._element).on(EVENT_CLICK_DISMISS, function (event) {\n          if (_this9._ignoreBackdropClick) {\n            _this9._ignoreBackdropClick = false;\n            return;\n          }\n\n          if (event.target !== event.currentTarget) {\n            return;\n          }\n\n          if (_this9._config.backdrop === 'static') {\n            _this9._triggerBackdropTransition();\n          } else {\n            _this9.hide();\n          }\n        });\n\n        if (animate) {\n          Util.reflow(this._backdrop);\n        }\n\n        $__default['default'](this._backdrop).addClass(CLASS_NAME_SHOW$3);\n\n        if (!callback) {\n          return;\n        }\n\n        if (!animate) {\n          callback();\n          return;\n        }\n\n        var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n        $__default['default'](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n      } else if (!this._isShown && this._backdrop) {\n        $__default['default'](this._backdrop).removeClass(CLASS_NAME_SHOW$3);\n\n        var callbackRemove = function callbackRemove() {\n          _this9._removeBackdrop();\n\n          if (callback) {\n            callback();\n          }\n        };\n\n        if ($__default['default'](this._element).hasClass(CLASS_NAME_FADE$1)) {\n          var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n          $__default['default'](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n        } else {\n          callbackRemove();\n        }\n      } else if (callback) {\n        callback();\n      }\n    } // ----------------------------------------------------------------------\n    // the following methods are used to handle overflowing modals\n    // todo (fat): these should probably be refactored out of modal.js\n    // ----------------------------------------------------------------------\n    ;\n\n    _proto._adjustDialog = function _adjustDialog() {\n      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n      if (!this._isBodyOverflowing && isModalOverflowing) {\n        this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n      }\n\n      if (this._isBodyOverflowing && !isModalOverflowing) {\n        this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n      }\n    };\n\n    _proto._resetAdjustments = function _resetAdjustments() {\n      this._element.style.paddingLeft = '';\n      this._element.style.paddingRight = '';\n    };\n\n    _proto._checkScrollbar = function _checkScrollbar() {\n      var rect = document.body.getBoundingClientRect();\n      this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;\n      this._scrollbarWidth = this._getScrollbarWidth();\n    };\n\n    _proto._setScrollbar = function _setScrollbar() {\n      var _this10 = this;\n\n      if (this._isBodyOverflowing) {\n        // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n        //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n        var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n        var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding\n\n        $__default['default'](fixedContent).each(function (index, element) {\n          var actualPadding = element.style.paddingRight;\n          var calculatedPadding = $__default['default'](element).css('padding-right');\n          $__default['default'](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\");\n        }); // Adjust sticky content margin\n\n        $__default['default'](stickyContent).each(function (index, element) {\n          var actualMargin = element.style.marginRight;\n          var calculatedMargin = $__default['default'](element).css('margin-right');\n          $__default['default'](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + \"px\");\n        }); // Adjust body padding\n\n        var actualPadding = document.body.style.paddingRight;\n        var calculatedPadding = $__default['default'](document.body).css('padding-right');\n        $__default['default'](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n      }\n\n      $__default['default'](document.body).addClass(CLASS_NAME_OPEN);\n    };\n\n    _proto._resetScrollbar = function _resetScrollbar() {\n      // Restore fixed content padding\n      var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n      $__default['default'](fixedContent).each(function (index, element) {\n        var padding = $__default['default'](element).data('padding-right');\n        $__default['default'](element).removeData('padding-right');\n        element.style.paddingRight = padding ? padding : '';\n      }); // Restore sticky content\n\n      var elements = [].slice.call(document.querySelectorAll(\"\" + SELECTOR_STICKY_CONTENT));\n      $__default['default'](elements).each(function (index, element) {\n        var margin = $__default['default'](element).data('margin-right');\n\n        if (typeof margin !== 'undefined') {\n          $__default['default'](element).css('margin-right', margin).removeData('margin-right');\n        }\n      }); // Restore body padding\n\n      var padding = $__default['default'](document.body).data('padding-right');\n      $__default['default'](document.body).removeData('padding-right');\n      document.body.style.paddingRight = padding ? padding : '';\n    };\n\n    _proto._getScrollbarWidth = function _getScrollbarWidth() {\n      // thx d.walsh\n      var scrollDiv = document.createElement('div');\n      scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;\n      document.body.appendChild(scrollDiv);\n      var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n      return scrollbarWidth;\n    } // Static\n    ;\n\n    Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n      return this.each(function () {\n        var data = $__default['default'](this).data(DATA_KEY$5);\n\n        var _config = _extends({}, Default$3, $__default['default'](this).data(), typeof config === 'object' && config ? config : {});\n\n        if (!data) {\n          data = new Modal(this, _config);\n          $__default['default'](this).data(DATA_KEY$5, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config](relatedTarget);\n        } else if (_config.show) {\n          data.show(relatedTarget);\n        }\n      });\n    };\n\n    _createClass(Modal, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$5;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$3;\n      }\n    }]);\n\n    return Modal;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function (event) {\n    var _this11 = this;\n\n    var target;\n    var selector = Util.getSelectorFromElement(this);\n\n    if (selector) {\n      target = document.querySelector(selector);\n    }\n\n    var config = $__default['default'](target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $__default['default'](target).data(), $__default['default'](this).data());\n\n    if (this.tagName === 'A' || this.tagName === 'AREA') {\n      event.preventDefault();\n    }\n\n    var $target = $__default['default'](target).one(EVENT_SHOW$2, function (showEvent) {\n      if (showEvent.isDefaultPrevented()) {\n        // Only register focus restorer if modal will actually get shown\n        return;\n      }\n\n      $target.one(EVENT_HIDDEN$2, function () {\n        if ($__default['default'](_this11).is(':visible')) {\n          _this11.focus();\n        }\n      });\n    });\n\n    Modal._jQueryInterface.call($__default['default'](target), config, this);\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $__default['default'].fn[NAME$5] = Modal._jQueryInterface;\n  $__default['default'].fn[NAME$5].Constructor = Modal;\n\n  $__default['default'].fn[NAME$5].noConflict = function () {\n    $__default['default'].fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n    return Modal._jQueryInterface;\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.6.0): tools/sanitizer.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n  var DefaultWhitelist = {\n    // Global attributes allowed on any supplied element below.\n    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n    a: ['target', 'href', 'title', 'rel'],\n    area: [],\n    b: [],\n    br: [],\n    col: [],\n    code: [],\n    div: [],\n    em: [],\n    hr: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    i: [],\n    img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n    li: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    small: [],\n    span: [],\n    sub: [],\n    sup: [],\n    strong: [],\n    u: [],\n    ul: []\n  };\n  /**\n   * A pattern that recognizes a commonly useful subset of URLs that are safe.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n\n  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi;\n  /**\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n\n  var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\n  function allowedAttribute(attr, allowedAttributeList) {\n    var attrName = attr.nodeName.toLowerCase();\n\n    if (allowedAttributeList.indexOf(attrName) !== -1) {\n      if (uriAttrs.indexOf(attrName) !== -1) {\n        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));\n      }\n\n      return true;\n    }\n\n    var regExp = allowedAttributeList.filter(function (attrRegex) {\n      return attrRegex instanceof RegExp;\n    }); // Check if a regular expression validates the attribute.\n\n    for (var i = 0, len = regExp.length; i < len; i++) {\n      if (attrName.match(regExp[i])) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n    if (unsafeHtml.length === 0) {\n      return unsafeHtml;\n    }\n\n    if (sanitizeFn && typeof sanitizeFn === 'function') {\n      return sanitizeFn(unsafeHtml);\n    }\n\n    var domParser = new window.DOMParser();\n    var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n    var whitelistKeys = Object.keys(whiteList);\n    var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n\n    var _loop = function _loop(i, len) {\n      var el = elements[i];\n      var elName = el.nodeName.toLowerCase();\n\n      if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n        el.parentNode.removeChild(el);\n        return \"continue\";\n      }\n\n      var attributeList = [].slice.call(el.attributes);\n      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n      attributeList.forEach(function (attr) {\n        if (!allowedAttribute(attr, whitelistedAttributes)) {\n          el.removeAttribute(attr.nodeName);\n        }\n      });\n    };\n\n    for (var i = 0, len = elements.length; i < len; i++) {\n      var _ret = _loop(i);\n\n      if (_ret === \"continue\") continue;\n    }\n\n    return createdDocument.body.innerHTML;\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$6 = 'tooltip';\n  var VERSION$6 = '4.6.0';\n  var DATA_KEY$6 = 'bs.tooltip';\n  var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n  var JQUERY_NO_CONFLICT$6 = $__default['default'].fn[NAME$6];\n  var CLASS_PREFIX = 'bs-tooltip';\n  var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n  var DefaultType$4 = {\n    animation: 'boolean',\n    template: 'string',\n    title: '(string|element|function)',\n    trigger: 'string',\n    delay: '(number|object)',\n    html: 'boolean',\n    selector: '(string|boolean)',\n    placement: '(string|function)',\n    offset: '(number|string|function)',\n    container: '(string|element|boolean)',\n    fallbackPlacement: '(string|array)',\n    boundary: '(string|element)',\n    customClass: '(string|function)',\n    sanitize: 'boolean',\n    sanitizeFn: '(null|function)',\n    whiteList: 'object',\n    popperConfig: '(null|object)'\n  };\n  var AttachmentMap = {\n    AUTO: 'auto',\n    TOP: 'top',\n    RIGHT: 'right',\n    BOTTOM: 'bottom',\n    LEFT: 'left'\n  };\n  var Default$4 = {\n    animation: true,\n    template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    selector: false,\n    placement: 'top',\n    offset: 0,\n    container: false,\n    fallbackPlacement: 'flip',\n    boundary: 'scrollParent',\n    customClass: '',\n    sanitize: true,\n    sanitizeFn: null,\n    whiteList: DefaultWhitelist,\n    popperConfig: null\n  };\n  var HOVER_STATE_SHOW = 'show';\n  var HOVER_STATE_OUT = 'out';\n  var Event = {\n    HIDE: \"hide\" + EVENT_KEY$6,\n    HIDDEN: \"hidden\" + EVENT_KEY$6,\n    SHOW: \"show\" + EVENT_KEY$6,\n    SHOWN: \"shown\" + EVENT_KEY$6,\n    INSERTED: \"inserted\" + EVENT_KEY$6,\n    CLICK: \"click\" + EVENT_KEY$6,\n    FOCUSIN: \"focusin\" + EVENT_KEY$6,\n    FOCUSOUT: \"focusout\" + EVENT_KEY$6,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$6,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$6\n  };\n  var CLASS_NAME_FADE$2 = 'fade';\n  var CLASS_NAME_SHOW$4 = 'show';\n  var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n  var SELECTOR_ARROW = '.arrow';\n  var TRIGGER_HOVER = 'hover';\n  var TRIGGER_FOCUS = 'focus';\n  var TRIGGER_CLICK = 'click';\n  var TRIGGER_MANUAL = 'manual';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var Tooltip = /*#__PURE__*/function () {\n    function Tooltip(element, config) {\n      if (typeof Popper__default['default'] === 'undefined') {\n        throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n      } // private\n\n\n      this._isEnabled = true;\n      this._timeout = 0;\n      this._hoverState = '';\n      this._activeTrigger = {};\n      this._popper = null; // Protected\n\n      this.element = element;\n      this.config = this._getConfig(config);\n      this.tip = null;\n\n      this._setListeners();\n    } // Getters\n\n\n    var _proto = Tooltip.prototype;\n\n    // Public\n    _proto.enable = function enable() {\n      this._isEnabled = true;\n    };\n\n    _proto.disable = function disable() {\n      this._isEnabled = false;\n    };\n\n    _proto.toggleEnabled = function toggleEnabled() {\n      this._isEnabled = !this._isEnabled;\n    };\n\n    _proto.toggle = function toggle(event) {\n      if (!this._isEnabled) {\n        return;\n      }\n\n      if (event) {\n        var dataKey = this.constructor.DATA_KEY;\n        var context = $__default['default'](event.currentTarget).data(dataKey);\n\n        if (!context) {\n          context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n          $__default['default'](event.currentTarget).data(dataKey, context);\n        }\n\n        context._activeTrigger.click = !context._activeTrigger.click;\n\n        if (context._isWithActiveTrigger()) {\n          context._enter(null, context);\n        } else {\n          context._leave(null, context);\n        }\n      } else {\n        if ($__default['default'](this.getTipElement()).hasClass(CLASS_NAME_SHOW$4)) {\n          this._leave(null, this);\n\n          return;\n        }\n\n        this._enter(null, this);\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      clearTimeout(this._timeout);\n      $__default['default'].removeData(this.element, this.constructor.DATA_KEY);\n      $__default['default'](this.element).off(this.constructor.EVENT_KEY);\n      $__default['default'](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);\n\n      if (this.tip) {\n        $__default['default'](this.tip).remove();\n      }\n\n      this._isEnabled = null;\n      this._timeout = null;\n      this._hoverState = null;\n      this._activeTrigger = null;\n\n      if (this._popper) {\n        this._popper.destroy();\n      }\n\n      this._popper = null;\n      this.element = null;\n      this.config = null;\n      this.tip = null;\n    };\n\n    _proto.show = function show() {\n      var _this = this;\n\n      if ($__default['default'](this.element).css('display') === 'none') {\n        throw new Error('Please use show on visible elements');\n      }\n\n      var showEvent = $__default['default'].Event(this.constructor.Event.SHOW);\n\n      if (this.isWithContent() && this._isEnabled) {\n        $__default['default'](this.element).trigger(showEvent);\n        var shadowRoot = Util.findShadowRoot(this.element);\n        var isInTheDom = $__default['default'].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n        if (showEvent.isDefaultPrevented() || !isInTheDom) {\n          return;\n        }\n\n        var tip = this.getTipElement();\n        var tipId = Util.getUID(this.constructor.NAME);\n        tip.setAttribute('id', tipId);\n        this.element.setAttribute('aria-describedby', tipId);\n        this.setContent();\n\n        if (this.config.animation) {\n          $__default['default'](tip).addClass(CLASS_NAME_FADE$2);\n        }\n\n        var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n        var attachment = this._getAttachment(placement);\n\n        this.addAttachmentClass(attachment);\n\n        var container = this._getContainer();\n\n        $__default['default'](tip).data(this.constructor.DATA_KEY, this);\n\n        if (!$__default['default'].contains(this.element.ownerDocument.documentElement, this.tip)) {\n          $__default['default'](tip).appendTo(container);\n        }\n\n        $__default['default'](this.element).trigger(this.constructor.Event.INSERTED);\n        this._popper = new Popper__default['default'](this.element, tip, this._getPopperConfig(attachment));\n        $__default['default'](tip).addClass(CLASS_NAME_SHOW$4);\n        $__default['default'](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra\n        // empty mouseover listeners to the body's immediate children;\n        // only needed because of broken event delegation on iOS\n        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n        if ('ontouchstart' in document.documentElement) {\n          $__default['default'](document.body).children().on('mouseover', null, $__default['default'].noop);\n        }\n\n        var complete = function complete() {\n          if (_this.config.animation) {\n            _this._fixTransition();\n          }\n\n          var prevHoverState = _this._hoverState;\n          _this._hoverState = null;\n          $__default['default'](_this.element).trigger(_this.constructor.Event.SHOWN);\n\n          if (prevHoverState === HOVER_STATE_OUT) {\n            _this._leave(null, _this);\n          }\n        };\n\n        if ($__default['default'](this.tip).hasClass(CLASS_NAME_FADE$2)) {\n          var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n          $__default['default'](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n        } else {\n          complete();\n        }\n      }\n    };\n\n    _proto.hide = function hide(callback) {\n      var _this2 = this;\n\n      var tip = this.getTipElement();\n      var hideEvent = $__default['default'].Event(this.constructor.Event.HIDE);\n\n      var complete = function complete() {\n        if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n          tip.parentNode.removeChild(tip);\n        }\n\n        _this2._cleanTipClass();\n\n        _this2.element.removeAttribute('aria-describedby');\n\n        $__default['default'](_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n        if (_this2._popper !== null) {\n          _this2._popper.destroy();\n        }\n\n        if (callback) {\n          callback();\n        }\n      };\n\n      $__default['default'](this.element).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      $__default['default'](tip).removeClass(CLASS_NAME_SHOW$4); // If this is a touch-enabled device we remove the extra\n      // empty mouseover listeners we added for iOS support\n\n      if ('ontouchstart' in document.documentElement) {\n        $__default['default'](document.body).children().off('mouseover', null, $__default['default'].noop);\n      }\n\n      this._activeTrigger[TRIGGER_CLICK] = false;\n      this._activeTrigger[TRIGGER_FOCUS] = false;\n      this._activeTrigger[TRIGGER_HOVER] = false;\n\n      if ($__default['default'](this.tip).hasClass(CLASS_NAME_FADE$2)) {\n        var transitionDuration = Util.getTransitionDurationFromElement(tip);\n        $__default['default'](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n\n      this._hoverState = '';\n    };\n\n    _proto.update = function update() {\n      if (this._popper !== null) {\n        this._popper.scheduleUpdate();\n      }\n    } // Protected\n    ;\n\n    _proto.isWithContent = function isWithContent() {\n      return Boolean(this.getTitle());\n    };\n\n    _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n      $__default['default'](this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n    };\n\n    _proto.getTipElement = function getTipElement() {\n      this.tip = this.tip || $__default['default'](this.config.template)[0];\n      return this.tip;\n    };\n\n    _proto.setContent = function setContent() {\n      var tip = this.getTipElement();\n      this.setElementContent($__default['default'](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());\n      $__default['default'](tip).removeClass(CLASS_NAME_FADE$2 + \" \" + CLASS_NAME_SHOW$4);\n    };\n\n    _proto.setElementContent = function setElementContent($element, content) {\n      if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n        // Content is a DOM node or a jQuery\n        if (this.config.html) {\n          if (!$__default['default'](content).parent().is($element)) {\n            $element.empty().append(content);\n          }\n        } else {\n          $element.text($__default['default'](content).text());\n        }\n\n        return;\n      }\n\n      if (this.config.html) {\n        if (this.config.sanitize) {\n          content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n        }\n\n        $element.html(content);\n      } else {\n        $element.text(content);\n      }\n    };\n\n    _proto.getTitle = function getTitle() {\n      var title = this.element.getAttribute('data-original-title');\n\n      if (!title) {\n        title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n      }\n\n      return title;\n    } // Private\n    ;\n\n    _proto._getPopperConfig = function _getPopperConfig(attachment) {\n      var _this3 = this;\n\n      var defaultBsConfig = {\n        placement: attachment,\n        modifiers: {\n          offset: this._getOffset(),\n          flip: {\n            behavior: this.config.fallbackPlacement\n          },\n          arrow: {\n            element: SELECTOR_ARROW\n          },\n          preventOverflow: {\n            boundariesElement: this.config.boundary\n          }\n        },\n        onCreate: function onCreate(data) {\n          if (data.originalPlacement !== data.placement) {\n            _this3._handlePopperPlacementChange(data);\n          }\n        },\n        onUpdate: function onUpdate(data) {\n          return _this3._handlePopperPlacementChange(data);\n        }\n      };\n      return _extends({}, defaultBsConfig, this.config.popperConfig);\n    };\n\n    _proto._getOffset = function _getOffset() {\n      var _this4 = this;\n\n      var offset = {};\n\n      if (typeof this.config.offset === 'function') {\n        offset.fn = function (data) {\n          data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element) || {});\n          return data;\n        };\n      } else {\n        offset.offset = this.config.offset;\n      }\n\n      return offset;\n    };\n\n    _proto._getContainer = function _getContainer() {\n      if (this.config.container === false) {\n        return document.body;\n      }\n\n      if (Util.isElement(this.config.container)) {\n        return $__default['default'](this.config.container);\n      }\n\n      return $__default['default'](document).find(this.config.container);\n    };\n\n    _proto._getAttachment = function _getAttachment(placement) {\n      return AttachmentMap[placement.toUpperCase()];\n    };\n\n    _proto._setListeners = function _setListeners() {\n      var _this5 = this;\n\n      var triggers = this.config.trigger.split(' ');\n      triggers.forEach(function (trigger) {\n        if (trigger === 'click') {\n          $__default['default'](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n            return _this5.toggle(event);\n          });\n        } else if (trigger !== TRIGGER_MANUAL) {\n          var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n          var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n          $__default['default'](_this5.element).on(eventIn, _this5.config.selector, function (event) {\n            return _this5._enter(event);\n          }).on(eventOut, _this5.config.selector, function (event) {\n            return _this5._leave(event);\n          });\n        }\n      });\n\n      this._hideModalHandler = function () {\n        if (_this5.element) {\n          _this5.hide();\n        }\n      };\n\n      $__default['default'](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);\n\n      if (this.config.selector) {\n        this.config = _extends({}, this.config, {\n          trigger: 'manual',\n          selector: ''\n        });\n      } else {\n        this._fixTitle();\n      }\n    };\n\n    _proto._fixTitle = function _fixTitle() {\n      var titleType = typeof this.element.getAttribute('data-original-title');\n\n      if (this.element.getAttribute('title') || titleType !== 'string') {\n        this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n        this.element.setAttribute('title', '');\n      }\n    };\n\n    _proto._enter = function _enter(event, context) {\n      var dataKey = this.constructor.DATA_KEY;\n      context = context || $__default['default'](event.currentTarget).data(dataKey);\n\n      if (!context) {\n        context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n        $__default['default'](event.currentTarget).data(dataKey, context);\n      }\n\n      if (event) {\n        context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n      }\n\n      if ($__default['default'](context.getTipElement()).hasClass(CLASS_NAME_SHOW$4) || context._hoverState === HOVER_STATE_SHOW) {\n        context._hoverState = HOVER_STATE_SHOW;\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HOVER_STATE_SHOW;\n\n      if (!context.config.delay || !context.config.delay.show) {\n        context.show();\n        return;\n      }\n\n      context._timeout = setTimeout(function () {\n        if (context._hoverState === HOVER_STATE_SHOW) {\n          context.show();\n        }\n      }, context.config.delay.show);\n    };\n\n    _proto._leave = function _leave(event, context) {\n      var dataKey = this.constructor.DATA_KEY;\n      context = context || $__default['default'](event.currentTarget).data(dataKey);\n\n      if (!context) {\n        context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n        $__default['default'](event.currentTarget).data(dataKey, context);\n      }\n\n      if (event) {\n        context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;\n      }\n\n      if (context._isWithActiveTrigger()) {\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HOVER_STATE_OUT;\n\n      if (!context.config.delay || !context.config.delay.hide) {\n        context.hide();\n        return;\n      }\n\n      context._timeout = setTimeout(function () {\n        if (context._hoverState === HOVER_STATE_OUT) {\n          context.hide();\n        }\n      }, context.config.delay.hide);\n    };\n\n    _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n      for (var trigger in this._activeTrigger) {\n        if (this._activeTrigger[trigger]) {\n          return true;\n        }\n      }\n\n      return false;\n    };\n\n    _proto._getConfig = function _getConfig(config) {\n      var dataAttributes = $__default['default'](this.element).data();\n      Object.keys(dataAttributes).forEach(function (dataAttr) {\n        if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n          delete dataAttributes[dataAttr];\n        }\n      });\n      config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});\n\n      if (typeof config.delay === 'number') {\n        config.delay = {\n          show: config.delay,\n          hide: config.delay\n        };\n      }\n\n      if (typeof config.title === 'number') {\n        config.title = config.title.toString();\n      }\n\n      if (typeof config.content === 'number') {\n        config.content = config.content.toString();\n      }\n\n      Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n\n      if (config.sanitize) {\n        config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n      }\n\n      return config;\n    };\n\n    _proto._getDelegateConfig = function _getDelegateConfig() {\n      var config = {};\n\n      if (this.config) {\n        for (var key in this.config) {\n          if (this.constructor.Default[key] !== this.config[key]) {\n            config[key] = this.config[key];\n          }\n        }\n      }\n\n      return config;\n    };\n\n    _proto._cleanTipClass = function _cleanTipClass() {\n      var $tip = $__default['default'](this.getTipElement());\n      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n      if (tabClass !== null && tabClass.length) {\n        $tip.removeClass(tabClass.join(''));\n      }\n    };\n\n    _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n      this.tip = popperData.instance.popper;\n\n      this._cleanTipClass();\n\n      this.addAttachmentClass(this._getAttachment(popperData.placement));\n    };\n\n    _proto._fixTransition = function _fixTransition() {\n      var tip = this.getTipElement();\n      var initConfigAnimation = this.config.animation;\n\n      if (tip.getAttribute('x-placement') !== null) {\n        return;\n      }\n\n      $__default['default'](tip).removeClass(CLASS_NAME_FADE$2);\n      this.config.animation = false;\n      this.hide();\n      this.show();\n      this.config.animation = initConfigAnimation;\n    } // Static\n    ;\n\n    Tooltip._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default['default'](this);\n        var data = $element.data(DATA_KEY$6);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data && /dispose|hide/.test(config)) {\n          return;\n        }\n\n        if (!data) {\n          data = new Tooltip(this, _config);\n          $element.data(DATA_KEY$6, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Tooltip, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$6;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$4;\n      }\n    }, {\n      key: \"NAME\",\n      get: function get() {\n        return NAME$6;\n      }\n    }, {\n      key: \"DATA_KEY\",\n      get: function get() {\n        return DATA_KEY$6;\n      }\n    }, {\n      key: \"Event\",\n      get: function get() {\n        return Event;\n      }\n    }, {\n      key: \"EVENT_KEY\",\n      get: function get() {\n        return EVENT_KEY$6;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$4;\n      }\n    }]);\n\n    return Tooltip;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'].fn[NAME$6] = Tooltip._jQueryInterface;\n  $__default['default'].fn[NAME$6].Constructor = Tooltip;\n\n  $__default['default'].fn[NAME$6].noConflict = function () {\n    $__default['default'].fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n    return Tooltip._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$7 = 'popover';\n  var VERSION$7 = '4.6.0';\n  var DATA_KEY$7 = 'bs.popover';\n  var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n  var JQUERY_NO_CONFLICT$7 = $__default['default'].fn[NAME$7];\n  var CLASS_PREFIX$1 = 'bs-popover';\n  var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n\n  var Default$5 = _extends({}, Tooltip.Default, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div></div>'\n  });\n\n  var DefaultType$5 = _extends({}, Tooltip.DefaultType, {\n    content: '(string|element|function)'\n  });\n\n  var CLASS_NAME_FADE$3 = 'fade';\n  var CLASS_NAME_SHOW$5 = 'show';\n  var SELECTOR_TITLE = '.popover-header';\n  var SELECTOR_CONTENT = '.popover-body';\n  var Event$1 = {\n    HIDE: \"hide\" + EVENT_KEY$7,\n    HIDDEN: \"hidden\" + EVENT_KEY$7,\n    SHOW: \"show\" + EVENT_KEY$7,\n    SHOWN: \"shown\" + EVENT_KEY$7,\n    INSERTED: \"inserted\" + EVENT_KEY$7,\n    CLICK: \"click\" + EVENT_KEY$7,\n    FOCUSIN: \"focusin\" + EVENT_KEY$7,\n    FOCUSOUT: \"focusout\" + EVENT_KEY$7,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$7,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$7\n  };\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var Popover = /*#__PURE__*/function (_Tooltip) {\n    _inheritsLoose(Popover, _Tooltip);\n\n    function Popover() {\n      return _Tooltip.apply(this, arguments) || this;\n    }\n\n    var _proto = Popover.prototype;\n\n    // Overrides\n    _proto.isWithContent = function isWithContent() {\n      return this.getTitle() || this._getContent();\n    };\n\n    _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n      $__default['default'](this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n    };\n\n    _proto.getTipElement = function getTipElement() {\n      this.tip = this.tip || $__default['default'](this.config.template)[0];\n      return this.tip;\n    };\n\n    _proto.setContent = function setContent() {\n      var $tip = $__default['default'](this.getTipElement()); // We use append for html objects to maintain js events\n\n      this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());\n\n      var content = this._getContent();\n\n      if (typeof content === 'function') {\n        content = content.call(this.element);\n      }\n\n      this.setElementContent($tip.find(SELECTOR_CONTENT), content);\n      $tip.removeClass(CLASS_NAME_FADE$3 + \" \" + CLASS_NAME_SHOW$5);\n    } // Private\n    ;\n\n    _proto._getContent = function _getContent() {\n      return this.element.getAttribute('data-content') || this.config.content;\n    };\n\n    _proto._cleanTipClass = function _cleanTipClass() {\n      var $tip = $__default['default'](this.getTipElement());\n      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n\n      if (tabClass !== null && tabClass.length > 0) {\n        $tip.removeClass(tabClass.join(''));\n      }\n    } // Static\n    ;\n\n    Popover._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default['default'](this).data(DATA_KEY$7);\n\n        var _config = typeof config === 'object' ? config : null;\n\n        if (!data && /dispose|hide/.test(config)) {\n          return;\n        }\n\n        if (!data) {\n          data = new Popover(this, _config);\n          $__default['default'](this).data(DATA_KEY$7, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Popover, null, [{\n      key: \"VERSION\",\n      // Getters\n      get: function get() {\n        return VERSION$7;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$5;\n      }\n    }, {\n      key: \"NAME\",\n      get: function get() {\n        return NAME$7;\n      }\n    }, {\n      key: \"DATA_KEY\",\n      get: function get() {\n        return DATA_KEY$7;\n      }\n    }, {\n      key: \"Event\",\n      get: function get() {\n        return Event$1;\n      }\n    }, {\n      key: \"EVENT_KEY\",\n      get: function get() {\n        return EVENT_KEY$7;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$5;\n      }\n    }]);\n\n    return Popover;\n  }(Tooltip);\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'].fn[NAME$7] = Popover._jQueryInterface;\n  $__default['default'].fn[NAME$7].Constructor = Popover;\n\n  $__default['default'].fn[NAME$7].noConflict = function () {\n    $__default['default'].fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n    return Popover._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$8 = 'scrollspy';\n  var VERSION$8 = '4.6.0';\n  var DATA_KEY$8 = 'bs.scrollspy';\n  var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n  var DATA_API_KEY$6 = '.data-api';\n  var JQUERY_NO_CONFLICT$8 = $__default['default'].fn[NAME$8];\n  var Default$6 = {\n    offset: 10,\n    method: 'auto',\n    target: ''\n  };\n  var DefaultType$6 = {\n    offset: 'number',\n    method: 'string',\n    target: '(string|element)'\n  };\n  var EVENT_ACTIVATE = \"activate\" + EVENT_KEY$8;\n  var EVENT_SCROLL = \"scroll\" + EVENT_KEY$8;\n  var EVENT_LOAD_DATA_API$2 = \"load\" + EVENT_KEY$8 + DATA_API_KEY$6;\n  var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n  var CLASS_NAME_ACTIVE$2 = 'active';\n  var SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]';\n  var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n  var SELECTOR_NAV_LINKS = '.nav-link';\n  var SELECTOR_NAV_ITEMS = '.nav-item';\n  var SELECTOR_LIST_ITEMS = '.list-group-item';\n  var SELECTOR_DROPDOWN = '.dropdown';\n  var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\n  var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n  var METHOD_OFFSET = 'offset';\n  var METHOD_POSITION = 'position';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var ScrollSpy = /*#__PURE__*/function () {\n    function ScrollSpy(element, config) {\n      var _this = this;\n\n      this._element = element;\n      this._scrollElement = element.tagName === 'BODY' ? window : element;\n      this._config = this._getConfig(config);\n      this._selector = this._config.target + \" \" + SELECTOR_NAV_LINKS + \",\" + (this._config.target + \" \" + SELECTOR_LIST_ITEMS + \",\") + (this._config.target + \" \" + SELECTOR_DROPDOWN_ITEMS);\n      this._offsets = [];\n      this._targets = [];\n      this._activeTarget = null;\n      this._scrollHeight = 0;\n      $__default['default'](this._scrollElement).on(EVENT_SCROLL, function (event) {\n        return _this._process(event);\n      });\n      this.refresh();\n\n      this._process();\n    } // Getters\n\n\n    var _proto = ScrollSpy.prototype;\n\n    // Public\n    _proto.refresh = function refresh() {\n      var _this2 = this;\n\n      var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n      var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n      var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n      this._offsets = [];\n      this._targets = [];\n      this._scrollHeight = this._getScrollHeight();\n      var targets = [].slice.call(document.querySelectorAll(this._selector));\n      targets.map(function (element) {\n        var target;\n        var targetSelector = Util.getSelectorFromElement(element);\n\n        if (targetSelector) {\n          target = document.querySelector(targetSelector);\n        }\n\n        if (target) {\n          var targetBCR = target.getBoundingClientRect();\n\n          if (targetBCR.width || targetBCR.height) {\n            // TODO (fat): remove sketch reliance on jQuery position/offset\n            return [$__default['default'](target)[offsetMethod]().top + offsetBase, targetSelector];\n          }\n        }\n\n        return null;\n      }).filter(function (item) {\n        return item;\n      }).sort(function (a, b) {\n        return a[0] - b[0];\n      }).forEach(function (item) {\n        _this2._offsets.push(item[0]);\n\n        _this2._targets.push(item[1]);\n      });\n    };\n\n    _proto.dispose = function dispose() {\n      $__default['default'].removeData(this._element, DATA_KEY$8);\n      $__default['default'](this._scrollElement).off(EVENT_KEY$8);\n      this._element = null;\n      this._scrollElement = null;\n      this._config = null;\n      this._selector = null;\n      this._offsets = null;\n      this._targets = null;\n      this._activeTarget = null;\n      this._scrollHeight = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$6, typeof config === 'object' && config ? config : {});\n\n      if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n        var id = $__default['default'](config.target).attr('id');\n\n        if (!id) {\n          id = Util.getUID(NAME$8);\n          $__default['default'](config.target).attr('id', id);\n        }\n\n        config.target = \"#\" + id;\n      }\n\n      Util.typeCheckConfig(NAME$8, config, DefaultType$6);\n      return config;\n    };\n\n    _proto._getScrollTop = function _getScrollTop() {\n      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n    };\n\n    _proto._getScrollHeight = function _getScrollHeight() {\n      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n    };\n\n    _proto._getOffsetHeight = function _getOffsetHeight() {\n      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n    };\n\n    _proto._process = function _process() {\n      var scrollTop = this._getScrollTop() + this._config.offset;\n\n      var scrollHeight = this._getScrollHeight();\n\n      var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n      if (this._scrollHeight !== scrollHeight) {\n        this.refresh();\n      }\n\n      if (scrollTop >= maxScroll) {\n        var target = this._targets[this._targets.length - 1];\n\n        if (this._activeTarget !== target) {\n          this._activate(target);\n        }\n\n        return;\n      }\n\n      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n        this._activeTarget = null;\n\n        this._clear();\n\n        return;\n      }\n\n      for (var i = this._offsets.length; i--;) {\n        var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n        if (isActiveTarget) {\n          this._activate(this._targets[i]);\n        }\n      }\n    };\n\n    _proto._activate = function _activate(target) {\n      this._activeTarget = target;\n\n      this._clear();\n\n      var queries = this._selector.split(',').map(function (selector) {\n        return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n      });\n\n      var $link = $__default['default']([].slice.call(document.querySelectorAll(queries.join(','))));\n\n      if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n        $link.closest(SELECTOR_DROPDOWN).find(SELECTOR_DROPDOWN_TOGGLE).addClass(CLASS_NAME_ACTIVE$2);\n        $link.addClass(CLASS_NAME_ACTIVE$2);\n      } else {\n        // Set triggered link as active\n        $link.addClass(CLASS_NAME_ACTIVE$2); // Set triggered links parents as active\n        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n        $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_LINKS + \", \" + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$2); // Handle special case when .nav-link is inside .nav-item\n\n        $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$2);\n      }\n\n      $__default['default'](this._scrollElement).trigger(EVENT_ACTIVATE, {\n        relatedTarget: target\n      });\n    };\n\n    _proto._clear = function _clear() {\n      [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {\n        return node.classList.contains(CLASS_NAME_ACTIVE$2);\n      }).forEach(function (node) {\n        return node.classList.remove(CLASS_NAME_ACTIVE$2);\n      });\n    } // Static\n    ;\n\n    ScrollSpy._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default['default'](this).data(DATA_KEY$8);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data) {\n          data = new ScrollSpy(this, _config);\n          $__default['default'](this).data(DATA_KEY$8, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(ScrollSpy, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$8;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$6;\n      }\n    }]);\n\n    return ScrollSpy;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'](window).on(EVENT_LOAD_DATA_API$2, function () {\n    var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));\n    var scrollSpysLength = scrollSpys.length;\n\n    for (var i = scrollSpysLength; i--;) {\n      var $spy = $__default['default'](scrollSpys[i]);\n\n      ScrollSpy._jQueryInterface.call($spy, $spy.data());\n    }\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $__default['default'].fn[NAME$8] = ScrollSpy._jQueryInterface;\n  $__default['default'].fn[NAME$8].Constructor = ScrollSpy;\n\n  $__default['default'].fn[NAME$8].noConflict = function () {\n    $__default['default'].fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n    return ScrollSpy._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$9 = 'tab';\n  var VERSION$9 = '4.6.0';\n  var DATA_KEY$9 = 'bs.tab';\n  var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n  var DATA_API_KEY$7 = '.data-api';\n  var JQUERY_NO_CONFLICT$9 = $__default['default'].fn[NAME$9];\n  var EVENT_HIDE$3 = \"hide\" + EVENT_KEY$9;\n  var EVENT_HIDDEN$3 = \"hidden\" + EVENT_KEY$9;\n  var EVENT_SHOW$3 = \"show\" + EVENT_KEY$9;\n  var EVENT_SHOWN$3 = \"shown\" + EVENT_KEY$9;\n  var EVENT_CLICK_DATA_API$6 = \"click\" + EVENT_KEY$9 + DATA_API_KEY$7;\n  var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n  var CLASS_NAME_ACTIVE$3 = 'active';\n  var CLASS_NAME_DISABLED$1 = 'disabled';\n  var CLASS_NAME_FADE$4 = 'fade';\n  var CLASS_NAME_SHOW$6 = 'show';\n  var SELECTOR_DROPDOWN$1 = '.dropdown';\n  var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';\n  var SELECTOR_ACTIVE$2 = '.active';\n  var SELECTOR_ACTIVE_UL = '> li > .active';\n  var SELECTOR_DATA_TOGGLE$4 = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]';\n  var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\n  var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var Tab = /*#__PURE__*/function () {\n    function Tab(element) {\n      this._element = element;\n    } // Getters\n\n\n    var _proto = Tab.prototype;\n\n    // Public\n    _proto.show = function show() {\n      var _this = this;\n\n      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default['default'](this._element).hasClass(CLASS_NAME_ACTIVE$3) || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED$1)) {\n        return;\n      }\n\n      var target;\n      var previous;\n      var listElement = $__default['default'](this._element).closest(SELECTOR_NAV_LIST_GROUP$1)[0];\n      var selector = Util.getSelectorFromElement(this._element);\n\n      if (listElement) {\n        var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE$2;\n        previous = $__default['default'].makeArray($__default['default'](listElement).find(itemSelector));\n        previous = previous[previous.length - 1];\n      }\n\n      var hideEvent = $__default['default'].Event(EVENT_HIDE$3, {\n        relatedTarget: this._element\n      });\n      var showEvent = $__default['default'].Event(EVENT_SHOW$3, {\n        relatedTarget: previous\n      });\n\n      if (previous) {\n        $__default['default'](previous).trigger(hideEvent);\n      }\n\n      $__default['default'](this._element).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (selector) {\n        target = document.querySelector(selector);\n      }\n\n      this._activate(this._element, listElement);\n\n      var complete = function complete() {\n        var hiddenEvent = $__default['default'].Event(EVENT_HIDDEN$3, {\n          relatedTarget: _this._element\n        });\n        var shownEvent = $__default['default'].Event(EVENT_SHOWN$3, {\n          relatedTarget: previous\n        });\n        $__default['default'](previous).trigger(hiddenEvent);\n        $__default['default'](_this._element).trigger(shownEvent);\n      };\n\n      if (target) {\n        this._activate(target, target.parentNode, complete);\n      } else {\n        complete();\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      $__default['default'].removeData(this._element, DATA_KEY$9);\n      this._element = null;\n    } // Private\n    ;\n\n    _proto._activate = function _activate(element, container, callback) {\n      var _this2 = this;\n\n      var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $__default['default'](container).find(SELECTOR_ACTIVE_UL) : $__default['default'](container).children(SELECTOR_ACTIVE$2);\n      var active = activeElements[0];\n      var isTransitioning = callback && active && $__default['default'](active).hasClass(CLASS_NAME_FADE$4);\n\n      var complete = function complete() {\n        return _this2._transitionComplete(element, active, callback);\n      };\n\n      if (active && isTransitioning) {\n        var transitionDuration = Util.getTransitionDurationFromElement(active);\n        $__default['default'](active).removeClass(CLASS_NAME_SHOW$6).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n      if (active) {\n        $__default['default'](active).removeClass(CLASS_NAME_ACTIVE$3);\n        var dropdownChild = $__default['default'](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];\n\n        if (dropdownChild) {\n          $__default['default'](dropdownChild).removeClass(CLASS_NAME_ACTIVE$3);\n        }\n\n        if (active.getAttribute('role') === 'tab') {\n          active.setAttribute('aria-selected', false);\n        }\n      }\n\n      $__default['default'](element).addClass(CLASS_NAME_ACTIVE$3);\n\n      if (element.getAttribute('role') === 'tab') {\n        element.setAttribute('aria-selected', true);\n      }\n\n      Util.reflow(element);\n\n      if (element.classList.contains(CLASS_NAME_FADE$4)) {\n        element.classList.add(CLASS_NAME_SHOW$6);\n      }\n\n      if (element.parentNode && $__default['default'](element.parentNode).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n        var dropdownElement = $__default['default'](element).closest(SELECTOR_DROPDOWN$1)[0];\n\n        if (dropdownElement) {\n          var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE$1));\n          $__default['default'](dropdownToggleList).addClass(CLASS_NAME_ACTIVE$3);\n        }\n\n        element.setAttribute('aria-expanded', true);\n      }\n\n      if (callback) {\n        callback();\n      }\n    } // Static\n    ;\n\n    Tab._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $this = $__default['default'](this);\n        var data = $this.data(DATA_KEY$9);\n\n        if (!data) {\n          data = new Tab(this);\n          $this.data(DATA_KEY$9, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Tab, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$9;\n      }\n    }]);\n\n    return Tab;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$4, function (event) {\n    event.preventDefault();\n\n    Tab._jQueryInterface.call($__default['default'](this), 'show');\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $__default['default'].fn[NAME$9] = Tab._jQueryInterface;\n  $__default['default'].fn[NAME$9].Constructor = Tab;\n\n  $__default['default'].fn[NAME$9].noConflict = function () {\n    $__default['default'].fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n    return Tab._jQueryInterface;\n  };\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME$a = 'toast';\n  var VERSION$a = '4.6.0';\n  var DATA_KEY$a = 'bs.toast';\n  var EVENT_KEY$a = \".\" + DATA_KEY$a;\n  var JQUERY_NO_CONFLICT$a = $__default['default'].fn[NAME$a];\n  var EVENT_CLICK_DISMISS$1 = \"click.dismiss\" + EVENT_KEY$a;\n  var EVENT_HIDE$4 = \"hide\" + EVENT_KEY$a;\n  var EVENT_HIDDEN$4 = \"hidden\" + EVENT_KEY$a;\n  var EVENT_SHOW$4 = \"show\" + EVENT_KEY$a;\n  var EVENT_SHOWN$4 = \"shown\" + EVENT_KEY$a;\n  var CLASS_NAME_FADE$5 = 'fade';\n  var CLASS_NAME_HIDE = 'hide';\n  var CLASS_NAME_SHOW$7 = 'show';\n  var CLASS_NAME_SHOWING = 'showing';\n  var DefaultType$7 = {\n    animation: 'boolean',\n    autohide: 'boolean',\n    delay: 'number'\n  };\n  var Default$7 = {\n    animation: true,\n    autohide: true,\n    delay: 500\n  };\n  var SELECTOR_DATA_DISMISS$1 = '[data-dismiss=\"toast\"]';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  var Toast = /*#__PURE__*/function () {\n    function Toast(element, config) {\n      this._element = element;\n      this._config = this._getConfig(config);\n      this._timeout = null;\n\n      this._setListeners();\n    } // Getters\n\n\n    var _proto = Toast.prototype;\n\n    // Public\n    _proto.show = function show() {\n      var _this = this;\n\n      var showEvent = $__default['default'].Event(EVENT_SHOW$4);\n      $__default['default'](this._element).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._clearTimeout();\n\n      if (this._config.animation) {\n        this._element.classList.add(CLASS_NAME_FADE$5);\n      }\n\n      var complete = function complete() {\n        _this._element.classList.remove(CLASS_NAME_SHOWING);\n\n        _this._element.classList.add(CLASS_NAME_SHOW$7);\n\n        $__default['default'](_this._element).trigger(EVENT_SHOWN$4);\n\n        if (_this._config.autohide) {\n          _this._timeout = setTimeout(function () {\n            _this.hide();\n          }, _this._config.delay);\n        }\n      };\n\n      this._element.classList.remove(CLASS_NAME_HIDE);\n\n      Util.reflow(this._element);\n\n      this._element.classList.add(CLASS_NAME_SHOWING);\n\n      if (this._config.animation) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto.hide = function hide() {\n      if (!this._element.classList.contains(CLASS_NAME_SHOW$7)) {\n        return;\n      }\n\n      var hideEvent = $__default['default'].Event(EVENT_HIDE$4);\n      $__default['default'](this._element).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._close();\n    };\n\n    _proto.dispose = function dispose() {\n      this._clearTimeout();\n\n      if (this._element.classList.contains(CLASS_NAME_SHOW$7)) {\n        this._element.classList.remove(CLASS_NAME_SHOW$7);\n      }\n\n      $__default['default'](this._element).off(EVENT_CLICK_DISMISS$1);\n      $__default['default'].removeData(this._element, DATA_KEY$a);\n      this._element = null;\n      this._config = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$7, $__default['default'](this._element).data(), typeof config === 'object' && config ? config : {});\n      Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);\n      return config;\n    };\n\n    _proto._setListeners = function _setListeners() {\n      var _this2 = this;\n\n      $__default['default'](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function () {\n        return _this2.hide();\n      });\n    };\n\n    _proto._close = function _close() {\n      var _this3 = this;\n\n      var complete = function complete() {\n        _this3._element.classList.add(CLASS_NAME_HIDE);\n\n        $__default['default'](_this3._element).trigger(EVENT_HIDDEN$4);\n      };\n\n      this._element.classList.remove(CLASS_NAME_SHOW$7);\n\n      if (this._config.animation) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto._clearTimeout = function _clearTimeout() {\n      clearTimeout(this._timeout);\n      this._timeout = null;\n    } // Static\n    ;\n\n    Toast._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default['default'](this);\n        var data = $element.data(DATA_KEY$a);\n\n        var _config = typeof config === 'object' && config;\n\n        if (!data) {\n          data = new Toast(this, _config);\n          $element.data(DATA_KEY$a, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config](this);\n        }\n      });\n    };\n\n    _createClass(Toast, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$a;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$7;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$7;\n      }\n    }]);\n\n    return Toast;\n  }();\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n\n  $__default['default'].fn[NAME$a] = Toast._jQueryInterface;\n  $__default['default'].fn[NAME$a].Constructor = Toast;\n\n  $__default['default'].fn[NAME$a].noConflict = function () {\n    $__default['default'].fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n    return Toast._jQueryInterface;\n  };\n\n  exports.Alert = Alert;\n  exports.Button = Button;\n  exports.Carousel = Carousel;\n  exports.Collapse = Collapse;\n  exports.Dropdown = Dropdown;\n  exports.Modal = Modal;\n  exports.Popover = Popover;\n  exports.Scrollspy = ScrollSpy;\n  exports.Tab = Tab;\n  exports.Toast = Toast;\n  exports.Tooltip = Tooltip;\n  exports.Util = Util;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=bootstrap.js.map\n","// Menu\n$(function() {\n    // Submenu hide/show on scroll\n    const body = document.body;\n    const scrollUp = \"scroll-up\";\n    const scrollDown = \"scroll-down\";\n    let lastScroll = 0;\n    const searchForm = document.querySelector('.blogmenu__submenu__search');\n    window.addEventListener('scroll', () => {\n        const currentScroll = window.pageYOffset;\n\n        if (currentScroll <= 0) {\n            body.classList.remove(scrollUp);\n            return;\n        }\n        \n        if (currentScroll > lastScroll && !body.classList.contains(scrollDown)) {\n            // Down\n            body.classList.remove(scrollUp);\n            body.classList.add(scrollDown);\n        } else if (currentScroll < lastScroll && body.classList.contains(scrollDown)) {\n            // Up\n            body.classList.remove(scrollDown);\n            body.classList.add(scrollUp);\n        }\n\n        lastScroll = currentScroll;\n    });\n\n    if (searchForm) {\n        searchForm.addEventListener('submit', (e) => {\n            e.preventDefault();\n            const input = searchForm.querySelector('input.blogmenu__submenu__search__input');\n            if (input.value.length > 0) {\n                window.location = `/search/${input.value}`;\n            }\n        });\n    }\n\n    // Menu toggle\n    function toggleMenu() {\n        const overlay = $(\"#menu_overlay\");\n        const burgerIcon = $(\".menu__burger__wrapper\");\n        const doc = $(\"body\");\n        const menu = $(\"#menu\");\n        const windowpos = $(window).scrollTop();\n        \n        if (overlay.attr('aria-expanded') == \"true\") {\n            doc.css(\"margin-top\", -{windowpos}).removeClass('scroll-lock');\n            burgerIcon.removeClass('menu__burger__wrapper--active');\n            overlay.attr('aria-expanded', false).removeClass('menu__overlay--active');\n            menu.removeClass('menu--open');\n        } else {\n            doc.css(\"margin-top\", \"\").addClass('scroll-lock');\n            burgerIcon.addClass('menu__burger__wrapper--active');\n            overlay.attr('aria-expanded', true).addClass('menu__overlay--active');\n            menu.addClass('menu--open');\n        }\n    }\n    $('.menu__burger__wrapper').on('click', function() {\n        toggleSubMenu(false);\n        toggleMenu();\n    });\n\n    // Submenu toggle\n    function toggleSubMenu(state = null) {\n        const overlay = $(\"#blogmenu_overlay\");\n        const burgerIcon = $(\".blogmenu__button\");\n        const doc = $(\"body\");\n        const windowpos = $(window).scrollTop();\n        const open = state != null ? !state : overlay.attr('aria-expanded') == \"true\";\n        \n        if (open) {\n            doc.css(\"margin-top\", -{windowpos}).removeClass('scroll-lock');\n            burgerIcon.removeClass('blogmenu__button--active');\n            overlay.attr('aria-expanded', false).removeClass('blogmenu__overlay--active');\n        } else {\n            doc.css(\"margin-top\", \"\").addClass('scroll-lock');\n            burgerIcon.addClass('blogmenu__button--active');\n            overlay.attr('aria-expanded', true).addClass('blogmenu__overlay--active');\n        }\n    }\n    $('.blogmenu__button').on('click', function(e) {\n        toggleSubMenu();\n    });\n    $('#blogmenu_overlay').on('click', function(e) {\n        if ($(e.target).is('#blogmenu_overlay')) {\n            toggleSubMenu();\n        }\n    });\n\n    function toggleMobileChildMenuCollapse(target) {\n        const toggleElement = target;\n        const childMenu = target.parentNode.getElementsByClassName('menu_submenu__subitems')[0];\n        \n        if (toggleElement.classList.contains('menu_submenu__item__toggle--active')) {\n            toggleElement.classList.remove('menu_submenu__item__toggle--active');\n            childMenu.classList.remove('menu_submenu__subitems--visible');\n        } else {\n            toggleElement.classList.add('menu_submenu__item__toggle--active');\n            childMenu.classList.add('menu_submenu__subitems--visible');\n        }\n    }\n    $('.menu_submenu__item__toggle').on('click', function(e) {\n        toggleMobileChildMenuCollapse(e.currentTarget);\n    });\n});","import React from 'react';\n\nclass TermFilter extends React.Component {\n    constructor(props) {\n        super(props);\n\n        this.state =  {\n            showAll: false,\n            filterOpen: false,\n        };\n\n        this.onTermChange = this.onTermChange.bind(this);\n        this.onShowToggle = this.onShowToggle.bind(this);\n        this.onMenuToggle = this.onMenuToggle.bind(this);\n        this.onFilterMenuToggle = this.onFilterMenuToggle.bind(this);\n    }\n\n    componentDidUpdate() {\n        if (this.props.pagetype == 'category') {\n            if (!this.categoryIsVisible() && !this.state.showAll && this.props.categorySlug != 'kategorier') {\n                this.setState(() => ({\n                    showAll: !this.categoryIsVisible(),\n                }));\n            }\n        }\n    }\n\n    categoryIsVisible() {\n        const firstCategories = this.props.categories.slice(0, 10);\n        return firstCategories.some(cat => cat.slug === this.props.categorySlug);\n    }\n\n    onTermChange(event) {\n        window.location = event.target.value;\n    }\n\n    onShowToggle() {\n        this.setState(() => ({\n            showAll: !this.state.showAll,\n        }));\n    }\n\n    onMenuToggle(event) {\n        const menuItem = event.currentTarget.parentElement;\n        menuItem.classList.toggle('open');\n    }\n\n    onFilterMenuToggle(e) {\n        e.preventDefault();\n\n        this.setState(() => ({\n            filterOpen: !this.state.filterOpen,\n        }));\n    }\n\n    render() {\n        const archiveIndex = window.archive?.index || [];\n\n        const currentCategory = this.props.categories.filter((c) => c.slug == this.props.categorySlug);\n        const filterTermText = currentCategory[0]?.name ?? 'Alla kategorier';\n\n        const monthNames = {\n            1: 'Januari',\n            2: 'Februari',\n            3: 'Mars',\n            4: 'April',\n            5: 'Maj',\n            6: 'Juni',\n            7: 'Juli',\n            8: 'Augusti',\n            9: 'September',\n            10: 'Oktober',\n            11: 'November',\n            12: 'December',\n        };\n\n        return (\n            <React.Fragment>\n                <div className=\"filter__ordering filter__ordering--desktop col-auto d-none d-lg-flex align-items-center pr-0\">\n                    <select className=\"form-control\" onChange={this.props.onOrderingChange} value={this.props.ordering}>\n                        <option value=\"DESC\">Nyast först</option>\n                        <option value=\"ASC\">Äldsta först</option>\n                    </select>\n                </div>\n                <div className=\"filter__mobile col-12 d-lg-none\">\n                    <div className=\"row\">\n                        <div className=\"filter__ordering col-auto d-flex pr-0\">\n                            <select className=\"form-control\" onChange={this.props.onOrderingChange} value={this.props.ordering}>\n                                <option value=\"DESC\">Nyast först</option>\n                                <option value=\"ASC\">Äldsta först</option>\n                            </select>\n                            <span className='select-arrow'></span>\n                        </div>\n                        { this.props.pagetype == 'category' && \n                            <div className=\"filter__terms col-auto d-flex d-lg-none pl-0\">\n                                <a href=\"#\" onClick={this.onFilterMenuToggle}>{filterTermText.charAt(0).toUpperCase() + filterTermText.slice(1)}</a>\n                            </div>\n                        }\n                        { this.props.pagetype == 'archive' && \n                            <div className=\"filter__terms col-auto d-flex d-lg-none pl-0\">\n                                <a href=\"#\" className={this.state.filterOpen ? 'open' : ''} onClick={this.onFilterMenuToggle}>{`${monthNames[parseInt(window.archive.month)]} ${window.archive.year}`}</a>\n                            </div>\n                        }\n                    </div>\n                </div>\n                <div className=\"filter__wrapper col-12 col-lg-3\">\n                    <div className={`filter ${this.state.filterOpen ? 'filter--open' : ''} d-none d-lg-block`}>\n                    <div className=\"filter__items\">\n                        { this.props.pagetype == 'category' && \n                            <React.Fragment>\n                                <ul>\n                                    <li key={-1}><a href={`/kategorier/`} className={this.props.categorySlug === 'kategorier' ? `active` : ''}>Alla</a></li>\n                                    {this.props.categories.map((child, index) => {\n                                        return <li key={index} style={!this.state.showAll && index > 9 ? {display: 'none'} : []}><a href={`/${child.slug}/`} className={this.props.categorySlug === child.slug ? `active` : ''}>{child.name.charAt(0).toUpperCase() + child.name.slice(1)}</a></li>;\n                                    })}\n                                </ul>\n                                {this.props.categories.length > 9 &&\n                                    <button className={`filter__button ${(this.state.showAll ? 'filter__button--less' : '')}`} onClick={this.onShowToggle}>\n                                        { this.state.showAll ? 'Färre kategorier' : 'Fler kategorier' }\n                                    </button>\n                                }\n                            </React.Fragment>\n                        }\n                        { this.props.pagetype == 'archive' && \n                            <React.Fragment>\n                                <ul className='filter__menu'>\n                                    {archiveIndex.map((year, index) => {\n                                        return (\n                                            <li key={index} className={year.year == window.archive.year ? 'open' : ''}>\n                                                <span onClick={this.onMenuToggle}>{year.year}</span>\n                                                <ul>\n                                                    {year.months.map((month, childindex) => {\n                                                        return <li key={childindex}><a href={`/${year.year}/${month.number}/`} className={year.year == window.archive.year && month.number == window.archive.month ? `active` : ''}>{month.name} <span>({month.total})</span></a></li>;\n                                                    })}\n                                                </ul>\n                                            </li>\n                                        );\n                                    })}\n                                </ul>\n                            </React.Fragment>\n                        }\n                    </div>\n                    </div>\n                </div>\n                <div className={`filter__overlay ${this.state.filterOpen ? 'filter__overlay--show' : ''}`} onClick={this.onFilterMenuToggle}></div>\n            </React.Fragment>\n        );\n    }\n}\n\nexport default TermFilter;","var map = {\n\t\"./sv.json\": \"XIKR\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"bsTh\";","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n      window : {}, \n/**\n * import(\"./types/global\")\n * @typedef { import(\"./types/lazysizes-config\").LazySizesConfigPartial } LazySizesConfigPartial\n */\nfunction l(window, document, Date) { // Pass in the window Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes,\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tlazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tfastLoadedClass: 'ls-is-cached',\n\t\t\tiframeLoadMode: 0,\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\t/**\n\t\t\t * @type { LazySizesConfigPartial }\n\t\t\t */\n\t\t\tcfg: lazySizesCfg,\n\t\t\t/**\n\t\t\t * @type { true }\n\t\t\t */\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\t/**\n\t * @param elem { Element }\n\t * @param name { string }\n\t * @param detail { any }\n\t * @param noBubbles { boolean }\n\t * @param noCancelable { boolean }\n\t * @returns { CustomEvent }\n\t */\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\t/**\n\t *\n\t * @param elem { Element }\n\t * @param parent { Element }\n\t * @param [width] {number}\n\t * @returns {number}\n\t */\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth =  parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning =  true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\tvar loadMode = elem.getAttribute('data-load-mode') || lazySizesCfg.iframeLoadMode;\n\n\t\t\t// loadMode can be also a string!\n\t\t\tif (loadMode == 0) {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} else if (loadMode == 1) {\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.fastLoadedClass);\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\t/**\n\t\t *\n\t\t * @param elem { Element }\n\t\t */\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\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\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\t/**\n\t\t *\n\t\t * @param elem {Element}\n\t\t * @param dataAttr\n\t\t * @param [width] { number }\n\t\t */\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","/*! @license DOMPurify 2.3.4 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.4/LICENSE */\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = global || self, global.DOMPurify = factory());\n}(this, function () { 'use strict';\n\n  function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n  var hasOwnProperty = Object.hasOwnProperty,\n      setPrototypeOf = Object.setPrototypeOf,\n      isFrozen = Object.isFrozen,\n      getPrototypeOf = Object.getPrototypeOf,\n      getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n  var freeze = Object.freeze,\n      seal = Object.seal,\n      create = Object.create; // eslint-disable-line import/no-mutable-exports\n\n  var _ref = typeof Reflect !== 'undefined' && Reflect,\n      apply = _ref.apply,\n      construct = _ref.construct;\n\n  if (!apply) {\n    apply = function apply(fun, thisValue, args) {\n      return fun.apply(thisValue, args);\n    };\n  }\n\n  if (!freeze) {\n    freeze = function freeze(x) {\n      return x;\n    };\n  }\n\n  if (!seal) {\n    seal = function seal(x) {\n      return x;\n    };\n  }\n\n  if (!construct) {\n    construct = function construct(Func, args) {\n      return new (Function.prototype.bind.apply(Func, [null].concat(_toConsumableArray(args))))();\n    };\n  }\n\n  var arrayForEach = unapply(Array.prototype.forEach);\n  var arrayPop = unapply(Array.prototype.pop);\n  var arrayPush = unapply(Array.prototype.push);\n\n  var stringToLowerCase = unapply(String.prototype.toLowerCase);\n  var stringMatch = unapply(String.prototype.match);\n  var stringReplace = unapply(String.prototype.replace);\n  var stringIndexOf = unapply(String.prototype.indexOf);\n  var stringTrim = unapply(String.prototype.trim);\n\n  var regExpTest = unapply(RegExp.prototype.test);\n\n  var typeErrorCreate = unconstruct(TypeError);\n\n  function unapply(func) {\n    return function (thisArg) {\n      for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      return apply(func, thisArg, args);\n    };\n  }\n\n  function unconstruct(func) {\n    return function () {\n      for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return construct(func, args);\n    };\n  }\n\n  /* Add properties to a lookup table */\n  function addToSet(set, array) {\n    if (setPrototypeOf) {\n      // Make 'in' and truthy checks like Boolean(set.constructor)\n      // independent of any properties defined on Object.prototype.\n      // Prevent prototype setters from intercepting set as a this value.\n      setPrototypeOf(set, null);\n    }\n\n    var l = array.length;\n    while (l--) {\n      var element = array[l];\n      if (typeof element === 'string') {\n        var lcElement = stringToLowerCase(element);\n        if (lcElement !== element) {\n          // Config presets (e.g. tags.js, attrs.js) are immutable.\n          if (!isFrozen(array)) {\n            array[l] = lcElement;\n          }\n\n          element = lcElement;\n        }\n      }\n\n      set[element] = true;\n    }\n\n    return set;\n  }\n\n  /* Shallow clone an object */\n  function clone(object) {\n    var newObject = create(null);\n\n    var property = void 0;\n    for (property in object) {\n      if (apply(hasOwnProperty, object, [property])) {\n        newObject[property] = object[property];\n      }\n    }\n\n    return newObject;\n  }\n\n  /* IE10 doesn't support __lookupGetter__ so lets'\n   * simulate it. It also automatically checks\n   * if the prop is function or getter and behaves\n   * accordingly. */\n  function lookupGetter(object, prop) {\n    while (object !== null) {\n      var desc = getOwnPropertyDescriptor(object, prop);\n      if (desc) {\n        if (desc.get) {\n          return unapply(desc.get);\n        }\n\n        if (typeof desc.value === 'function') {\n          return unapply(desc.value);\n        }\n      }\n\n      object = getPrototypeOf(object);\n    }\n\n    function fallbackValue(element) {\n      console.warn('fallback value for', element);\n      return null;\n    }\n\n    return fallbackValue;\n  }\n\n  var html = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n  // SVG\n  var svg = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n\n  var svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\n  // List of SVG elements that are disallowed by default.\n  // We still need to know them so that we can do namespace\n  // checks properly in case one wants to add them to\n  // allow-list.\n  var svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n\n  var mathMl = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']);\n\n  // Similarly to SVG, we want to know all MathML elements,\n  // even those that we disallow by default.\n  var mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n\n  var text = freeze(['#text']);\n\n  var html$1 = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n\n  var svg$1 = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n\n  var mathMl$1 = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n\n  var xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n  // eslint-disable-next-line unicorn/better-regex\n  var MUSTACHE_EXPR = seal(/\\{\\{[\\s\\S]*|[\\s\\S]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n  var ERB_EXPR = seal(/<%[\\s\\S]*|[\\s\\S]*%>/gm);\n  var DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n  var ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n  var IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n  );\n  var IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n  var ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n  );\n\n  var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n  function _toConsumableArray$1(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n  var getGlobal = function getGlobal() {\n    return typeof window === 'undefined' ? null : window;\n  };\n\n  /**\n   * Creates a no-op policy for internal use only.\n   * Don't export this function outside this module!\n   * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n   * @param {Document} document The document object (to determine policy name suffix)\n   * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n   * are not supported).\n   */\n  var _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n    if ((typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n      return null;\n    }\n\n    // Allow the callers to control the unique policy name\n    // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n    // Policy creation with duplicate names throws in Trusted Types.\n    var suffix = null;\n    var ATTR_NAME = 'data-tt-policy-suffix';\n    if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n      suffix = document.currentScript.getAttribute(ATTR_NAME);\n    }\n\n    var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n    try {\n      return trustedTypes.createPolicy(policyName, {\n        createHTML: function createHTML(html$$1) {\n          return html$$1;\n        }\n      });\n    } catch (_) {\n      // Policy creation failed (most likely another DOMPurify script has\n      // already run). Skip creating the policy, as this will only cause errors\n      // if TT are enforced.\n      console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n      return null;\n    }\n  };\n\n  function createDOMPurify() {\n    var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n    var DOMPurify = function DOMPurify(root) {\n      return createDOMPurify(root);\n    };\n\n    /**\n     * Version label, exposed for easier checks\n     * if DOMPurify is up to date or not\n     */\n    DOMPurify.version = '2.3.4';\n\n    /**\n     * Array of elements that DOMPurify removed during sanitation.\n     * Empty if nothing was removed.\n     */\n    DOMPurify.removed = [];\n\n    if (!window || !window.document || window.document.nodeType !== 9) {\n      // Not running in a browser, provide a factory function\n      // so that you can pass your own Window\n      DOMPurify.isSupported = false;\n\n      return DOMPurify;\n    }\n\n    var originalDocument = window.document;\n\n    var document = window.document;\n    var DocumentFragment = window.DocumentFragment,\n        HTMLTemplateElement = window.HTMLTemplateElement,\n        Node = window.Node,\n        Element = window.Element,\n        NodeFilter = window.NodeFilter,\n        _window$NamedNodeMap = window.NamedNodeMap,\n        NamedNodeMap = _window$NamedNodeMap === undefined ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n        HTMLFormElement = window.HTMLFormElement,\n        DOMParser = window.DOMParser,\n        trustedTypes = window.trustedTypes;\n\n\n    var ElementPrototype = Element.prototype;\n\n    var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n    var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n    var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n    var getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n    // As per issue #47, the web-components registry is inherited by a\n    // new document created via createHTMLDocument. As per the spec\n    // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n    // a new empty registry is used when creating a template contents owner\n    // document, so we use that as our parent document to ensure nothing\n    // is inherited.\n    if (typeof HTMLTemplateElement === 'function') {\n      var template = document.createElement('template');\n      if (template.content && template.content.ownerDocument) {\n        document = template.content.ownerDocument;\n      }\n    }\n\n    var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n    var emptyHTML = trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML('') : '';\n\n    var _document = document,\n        implementation = _document.implementation,\n        createNodeIterator = _document.createNodeIterator,\n        createDocumentFragment = _document.createDocumentFragment,\n        getElementsByTagName = _document.getElementsByTagName;\n    var importNode = originalDocument.importNode;\n\n\n    var documentMode = {};\n    try {\n      documentMode = clone(document).documentMode ? document.documentMode : {};\n    } catch (_) {}\n\n    var hooks = {};\n\n    /**\n     * Expose whether this browser supports running the full DOMPurify.\n     */\n    DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n\n    var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR,\n        ERB_EXPR$$1 = ERB_EXPR,\n        DATA_ATTR$$1 = DATA_ATTR,\n        ARIA_ATTR$$1 = ARIA_ATTR,\n        IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA,\n        ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;\n    var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;\n\n    /**\n     * We consider the elements and attributes below to be safe. Ideally\n     * don't add any new ones but feel free to remove unwanted ones.\n     */\n\n    /* allowed element names */\n\n    var ALLOWED_TAGS = null;\n    var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(html), _toConsumableArray$1(svg), _toConsumableArray$1(svgFilters), _toConsumableArray$1(mathMl), _toConsumableArray$1(text)));\n\n    /* Allowed attribute names */\n    var ALLOWED_ATTR = null;\n    var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray$1(html$1), _toConsumableArray$1(svg$1), _toConsumableArray$1(mathMl$1), _toConsumableArray$1(xml)));\n\n    /*\n     * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n     * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n     * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n     * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n     */\n    var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n      tagNameCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null\n      },\n      attributeNameCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null\n      },\n      allowCustomizedBuiltInElements: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: false\n      }\n    }));\n\n    /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n    var FORBID_TAGS = null;\n\n    /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n    var FORBID_ATTR = null;\n\n    /* Decide if ARIA attributes are okay */\n    var ALLOW_ARIA_ATTR = true;\n\n    /* Decide if custom data attributes are okay */\n    var ALLOW_DATA_ATTR = true;\n\n    /* Decide if unknown protocols are okay */\n    var ALLOW_UNKNOWN_PROTOCOLS = false;\n\n    /* Output should be safe for common template engines.\n     * This means, DOMPurify removes data attributes, mustaches and ERB\n     */\n    var SAFE_FOR_TEMPLATES = false;\n\n    /* Decide if document with <html>... should be returned */\n    var WHOLE_DOCUMENT = false;\n\n    /* Track whether config is already set on this instance of DOMPurify. */\n    var SET_CONFIG = false;\n\n    /* Decide if all elements (e.g. style, script) must be children of\n     * document.body. By default, browsers might move them to document.head */\n    var FORCE_BODY = false;\n\n    /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n     * string (or a TrustedHTML object if Trusted Types are supported).\n     * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n     */\n    var RETURN_DOM = false;\n\n    /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n     * string  (or a TrustedHTML object if Trusted Types are supported) */\n    var RETURN_DOM_FRAGMENT = false;\n\n    /* Try to return a Trusted Type object instead of a string, return a string in\n     * case Trusted Types are not supported  */\n    var RETURN_TRUSTED_TYPE = false;\n\n    /* Output should be free from DOM clobbering attacks? */\n    var SANITIZE_DOM = true;\n\n    /* Keep element content when removing element? */\n    var KEEP_CONTENT = true;\n\n    /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n     * of importing it into a new Document and returning a sanitized copy */\n    var IN_PLACE = false;\n\n    /* Allow usage of profiles like html, svg and mathMl */\n    var USE_PROFILES = {};\n\n    /* Tags to ignore content of when KEEP_CONTENT is true */\n    var FORBID_CONTENTS = null;\n    var DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n\n    /* Tags that are safe for data: URIs */\n    var DATA_URI_TAGS = null;\n    var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n\n    /* Attributes safe for values like \"javascript:\" */\n    var URI_SAFE_ATTRIBUTES = null;\n    var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n\n    var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n    var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n    var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n    /* Document namespace */\n    var NAMESPACE = HTML_NAMESPACE;\n    var IS_EMPTY_INPUT = false;\n\n    /* Parsing of strict XHTML documents */\n    var PARSER_MEDIA_TYPE = void 0;\n    var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n    var DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n    var transformCaseFunc = void 0;\n\n    /* Keep a reference to config to pass to hooks */\n    var CONFIG = null;\n\n    /* Ideally, do not touch anything below this line */\n    /* ______________________________________________ */\n\n    var formElement = document.createElement('form');\n\n    var isRegexOrFunction = function isRegexOrFunction(testValue) {\n      return testValue instanceof RegExp || testValue instanceof Function;\n    };\n\n    /**\n     * _parseConfig\n     *\n     * @param  {Object} cfg optional config literal\n     */\n    // eslint-disable-next-line complexity\n    var _parseConfig = function _parseConfig(cfg) {\n      if (CONFIG && CONFIG === cfg) {\n        return;\n      }\n\n      /* Shield configuration object from tampering */\n      if (!cfg || (typeof cfg === 'undefined' ? 'undefined' : _typeof(cfg)) !== 'object') {\n        cfg = {};\n      }\n\n      /* Shield configuration object from prototype pollution */\n      cfg = clone(cfg);\n\n      /* Set configuration parameters */\n      ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;\n      ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;\n      URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR) : DEFAULT_URI_SAFE_ATTRIBUTES;\n      DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS) : DEFAULT_DATA_URI_TAGS;\n      FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS) : DEFAULT_FORBID_CONTENTS;\n      FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};\n      FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};\n      USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n      ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n      ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n      ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n      SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n      WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n      RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n      RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n      RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n      FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n      SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n      KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n      IN_PLACE = cfg.IN_PLACE || false; // Default false\n      IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;\n      NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n      if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n        CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n      }\n\n      if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n        CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n      }\n\n      if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n        CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n      }\n\n      PARSER_MEDIA_TYPE =\n      // eslint-disable-next-line unicorn/prefer-includes\n      SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE;\n\n      // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n      transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? function (x) {\n        return x;\n      } : stringToLowerCase;\n\n      if (SAFE_FOR_TEMPLATES) {\n        ALLOW_DATA_ATTR = false;\n      }\n\n      if (RETURN_DOM_FRAGMENT) {\n        RETURN_DOM = true;\n      }\n\n      /* Parse profile info */\n      if (USE_PROFILES) {\n        ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(text)));\n        ALLOWED_ATTR = [];\n        if (USE_PROFILES.html === true) {\n          addToSet(ALLOWED_TAGS, html);\n          addToSet(ALLOWED_ATTR, html$1);\n        }\n\n        if (USE_PROFILES.svg === true) {\n          addToSet(ALLOWED_TAGS, svg);\n          addToSet(ALLOWED_ATTR, svg$1);\n          addToSet(ALLOWED_ATTR, xml);\n        }\n\n        if (USE_PROFILES.svgFilters === true) {\n          addToSet(ALLOWED_TAGS, svgFilters);\n          addToSet(ALLOWED_ATTR, svg$1);\n          addToSet(ALLOWED_ATTR, xml);\n        }\n\n        if (USE_PROFILES.mathMl === true) {\n          addToSet(ALLOWED_TAGS, mathMl);\n          addToSet(ALLOWED_ATTR, mathMl$1);\n          addToSet(ALLOWED_ATTR, xml);\n        }\n      }\n\n      /* Merge configuration parameters */\n      if (cfg.ADD_TAGS) {\n        if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n          ALLOWED_TAGS = clone(ALLOWED_TAGS);\n        }\n\n        addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);\n      }\n\n      if (cfg.ADD_ATTR) {\n        if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n          ALLOWED_ATTR = clone(ALLOWED_ATTR);\n        }\n\n        addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);\n      }\n\n      if (cfg.ADD_URI_SAFE_ATTR) {\n        addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);\n      }\n\n      if (cfg.FORBID_CONTENTS) {\n        if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n          FORBID_CONTENTS = clone(FORBID_CONTENTS);\n        }\n\n        addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS);\n      }\n\n      /* Add #text in case KEEP_CONTENT is set to true */\n      if (KEEP_CONTENT) {\n        ALLOWED_TAGS['#text'] = true;\n      }\n\n      /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n      if (WHOLE_DOCUMENT) {\n        addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n      }\n\n      /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n      if (ALLOWED_TAGS.table) {\n        addToSet(ALLOWED_TAGS, ['tbody']);\n        delete FORBID_TAGS.tbody;\n      }\n\n      // Prevent further manipulation of configuration.\n      // Not available in IE8, Safari 5, etc.\n      if (freeze) {\n        freeze(cfg);\n      }\n\n      CONFIG = cfg;\n    };\n\n    var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n\n    var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']);\n\n    /* Keep track of all possible SVG and MathML tags\n     * so that we can perform the namespace checks\n     * correctly. */\n    var ALL_SVG_TAGS = addToSet({}, svg);\n    addToSet(ALL_SVG_TAGS, svgFilters);\n    addToSet(ALL_SVG_TAGS, svgDisallowed);\n\n    var ALL_MATHML_TAGS = addToSet({}, mathMl);\n    addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n\n    /**\n     *\n     *\n     * @param  {Element} element a DOM element whose namespace is being checked\n     * @returns {boolean} Return false if the element has a\n     *  namespace that a spec-compliant parser would never\n     *  return. Return true otherwise.\n     */\n    var _checkValidNamespace = function _checkValidNamespace(element) {\n      var parent = getParentNode(element);\n\n      // In JSDOM, if we're inside shadow DOM, then parentNode\n      // can be null. We just simulate parent in this case.\n      if (!parent || !parent.tagName) {\n        parent = {\n          namespaceURI: HTML_NAMESPACE,\n          tagName: 'template'\n        };\n      }\n\n      var tagName = stringToLowerCase(element.tagName);\n      var parentTagName = stringToLowerCase(parent.tagName);\n\n      if (element.namespaceURI === SVG_NAMESPACE) {\n        // The only way to switch from HTML namespace to SVG\n        // is via <svg>. If it happens via any other tag, then\n        // it should be killed.\n        if (parent.namespaceURI === HTML_NAMESPACE) {\n          return tagName === 'svg';\n        }\n\n        // The only way to switch from MathML to SVG is via\n        // svg if parent is either <annotation-xml> or MathML\n        // text integration points.\n        if (parent.namespaceURI === MATHML_NAMESPACE) {\n          return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n        }\n\n        // We only allow elements that are defined in SVG\n        // spec. All others are disallowed in SVG namespace.\n        return Boolean(ALL_SVG_TAGS[tagName]);\n      }\n\n      if (element.namespaceURI === MATHML_NAMESPACE) {\n        // The only way to switch from HTML namespace to MathML\n        // is via <math>. If it happens via any other tag, then\n        // it should be killed.\n        if (parent.namespaceURI === HTML_NAMESPACE) {\n          return tagName === 'math';\n        }\n\n        // The only way to switch from SVG to MathML is via\n        // <math> and HTML integration points\n        if (parent.namespaceURI === SVG_NAMESPACE) {\n          return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n        }\n\n        // We only allow elements that are defined in MathML\n        // spec. All others are disallowed in MathML namespace.\n        return Boolean(ALL_MATHML_TAGS[tagName]);\n      }\n\n      if (element.namespaceURI === HTML_NAMESPACE) {\n        // The only way to switch from SVG to HTML is via\n        // HTML integration points, and from MathML to HTML\n        // is via MathML text integration points\n        if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n          return false;\n        }\n\n        if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n          return false;\n        }\n\n        // Certain elements are allowed in both SVG and HTML\n        // namespace. We need to specify them explicitly\n        // so that they don't get erronously deleted from\n        // HTML namespace.\n        var commonSvgAndHTMLElements = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n\n        // We disallow tags that are specific for MathML\n        // or SVG and should never appear in HTML namespace\n        return !ALL_MATHML_TAGS[tagName] && (commonSvgAndHTMLElements[tagName] || !ALL_SVG_TAGS[tagName]);\n      }\n\n      // The code should never reach this place (this means\n      // that the element somehow got namespace that is not\n      // HTML, SVG or MathML). Return false just in case.\n      return false;\n    };\n\n    /**\n     * _forceRemove\n     *\n     * @param  {Node} node a DOM node\n     */\n    var _forceRemove = function _forceRemove(node) {\n      arrayPush(DOMPurify.removed, { element: node });\n      try {\n        // eslint-disable-next-line unicorn/prefer-dom-node-remove\n        node.parentNode.removeChild(node);\n      } catch (_) {\n        try {\n          node.outerHTML = emptyHTML;\n        } catch (_) {\n          node.remove();\n        }\n      }\n    };\n\n    /**\n     * _removeAttribute\n     *\n     * @param  {String} name an Attribute name\n     * @param  {Node} node a DOM node\n     */\n    var _removeAttribute = function _removeAttribute(name, node) {\n      try {\n        arrayPush(DOMPurify.removed, {\n          attribute: node.getAttributeNode(name),\n          from: node\n        });\n      } catch (_) {\n        arrayPush(DOMPurify.removed, {\n          attribute: null,\n          from: node\n        });\n      }\n\n      node.removeAttribute(name);\n\n      // We void attribute values for unremovable \"is\"\" attributes\n      if (name === 'is' && !ALLOWED_ATTR[name]) {\n        if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n          try {\n            _forceRemove(node);\n          } catch (_) {}\n        } else {\n          try {\n            node.setAttribute(name, '');\n          } catch (_) {}\n        }\n      }\n    };\n\n    /**\n     * _initDocument\n     *\n     * @param  {String} dirty a string of dirty markup\n     * @return {Document} a DOM, filled with the dirty markup\n     */\n    var _initDocument = function _initDocument(dirty) {\n      /* Create a HTML document */\n      var doc = void 0;\n      var leadingWhitespace = void 0;\n\n      if (FORCE_BODY) {\n        dirty = '<remove></remove>' + dirty;\n      } else {\n        /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n        var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n        leadingWhitespace = matches && matches[0];\n      }\n\n      if (PARSER_MEDIA_TYPE === 'application/xhtml+xml') {\n        // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n        dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n      }\n\n      var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n      /*\n       * Use the DOMParser API by default, fallback later if needs be\n       * DOMParser not work for svg when has multiple root element.\n       */\n      if (NAMESPACE === HTML_NAMESPACE) {\n        try {\n          doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n        } catch (_) {}\n      }\n\n      /* Use createHTMLDocument in case DOMParser is not available */\n      if (!doc || !doc.documentElement) {\n        doc = implementation.createDocument(NAMESPACE, 'template', null);\n        try {\n          doc.documentElement.innerHTML = IS_EMPTY_INPUT ? '' : dirtyPayload;\n        } catch (_) {\n          // Syntax error if dirtyPayload is invalid xml\n        }\n      }\n\n      var body = doc.body || doc.documentElement;\n\n      if (dirty && leadingWhitespace) {\n        body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n      }\n\n      /* Work on whole document or just its body */\n      if (NAMESPACE === HTML_NAMESPACE) {\n        return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n      }\n\n      return WHOLE_DOCUMENT ? doc.documentElement : body;\n    };\n\n    /**\n     * _createIterator\n     *\n     * @param  {Document} root document/fragment to create iterator for\n     * @return {Iterator} iterator instance\n     */\n    var _createIterator = function _createIterator(root) {\n      return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n    };\n\n    /**\n     * _isClobbered\n     *\n     * @param  {Node} elm element to check for clobbering attacks\n     * @return {Boolean} true if clobbered, false if safe\n     */\n    var _isClobbered = function _isClobbered(elm) {\n      return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function');\n    };\n\n    /**\n     * _isNode\n     *\n     * @param  {Node} obj object to check whether it's a DOM node\n     * @return {Boolean} true is object is a DOM node\n     */\n    var _isNode = function _isNode(object) {\n      return (typeof Node === 'undefined' ? 'undefined' : _typeof(Node)) === 'object' ? object instanceof Node : object && (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n    };\n\n    /**\n     * _executeHook\n     * Execute user configurable hooks\n     *\n     * @param  {String} entryPoint  Name of the hook's entry point\n     * @param  {Node} currentNode node to work on with the hook\n     * @param  {Object} data additional hook parameters\n     */\n    var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n      if (!hooks[entryPoint]) {\n        return;\n      }\n\n      arrayForEach(hooks[entryPoint], function (hook) {\n        hook.call(DOMPurify, currentNode, data, CONFIG);\n      });\n    };\n\n    /**\n     * _sanitizeElements\n     *\n     * @protect nodeName\n     * @protect textContent\n     * @protect removeChild\n     *\n     * @param   {Node} currentNode to check for permission to exist\n     * @return  {Boolean} true if node was killed, false if left alive\n     */\n    var _sanitizeElements = function _sanitizeElements(currentNode) {\n      var content = void 0;\n\n      /* Execute a hook if present */\n      _executeHook('beforeSanitizeElements', currentNode, null);\n\n      /* Check if element is clobbered or can clobber */\n      if (_isClobbered(currentNode)) {\n        _forceRemove(currentNode);\n        return true;\n      }\n\n      /* Check if tagname contains Unicode */\n      if (stringMatch(currentNode.nodeName, /[\\u0080-\\uFFFF]/)) {\n        _forceRemove(currentNode);\n        return true;\n      }\n\n      /* Now let's check the element's type and name */\n      var tagName = transformCaseFunc(currentNode.nodeName);\n\n      /* Execute a hook if present */\n      _executeHook('uponSanitizeElement', currentNode, {\n        tagName: tagName,\n        allowedTags: ALLOWED_TAGS\n      });\n\n      /* Detect mXSS attempts abusing namespace confusion */\n      if (!_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n        _forceRemove(currentNode);\n        return true;\n      }\n\n      /* Mitigate a problem with templates inside select */\n      if (tagName === 'select' && regExpTest(/<template/i, currentNode.innerHTML)) {\n        _forceRemove(currentNode);\n        return true;\n      }\n\n      /* Remove element if anything forbids its presence */\n      if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n        /* Keep content except for bad-listed elements */\n        if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n          var parentNode = getParentNode(currentNode) || currentNode.parentNode;\n          var childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n          if (childNodes && parentNode) {\n            var childCount = childNodes.length;\n\n            for (var i = childCount - 1; i >= 0; --i) {\n              parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n            }\n          }\n        }\n\n        if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {\n          if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;\n          if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) return false;\n        }\n\n        _forceRemove(currentNode);\n        return true;\n      }\n\n      /* Check whether element has a valid namespace */\n      if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n        _forceRemove(currentNode);\n        return true;\n      }\n\n      if ((tagName === 'noscript' || tagName === 'noembed') && regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)) {\n        _forceRemove(currentNode);\n        return true;\n      }\n\n      /* Sanitize element content to be template-safe */\n      if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n        /* Get the element's text content */\n        content = currentNode.textContent;\n        content = stringReplace(content, MUSTACHE_EXPR$$1, ' ');\n        content = stringReplace(content, ERB_EXPR$$1, ' ');\n        if (currentNode.textContent !== content) {\n          arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n          currentNode.textContent = content;\n        }\n      }\n\n      /* Execute a hook if present */\n      _executeHook('afterSanitizeElements', currentNode, null);\n\n      return false;\n    };\n\n    /**\n     * _isValidAttribute\n     *\n     * @param  {string} lcTag Lowercase tag name of containing element.\n     * @param  {string} lcName Lowercase attribute name.\n     * @param  {string} value Attribute value.\n     * @return {Boolean} Returns true if `value` is valid, otherwise false.\n     */\n    // eslint-disable-next-line complexity\n    var _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n      /* Make sure attribute cannot clobber */\n      if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n        return false;\n      }\n\n      /* Allow valid data-* attributes: At least one character after \"-\"\n          (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n          XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n          We don't need to check the value; it's always URI safe. */\n      if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$$1, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$$1, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n        if (\n        // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n        // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n        // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n        _basicCustomElementTest(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||\n        // Alternative, second condition checks if it's an `is`-attribute, AND\n        // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n        lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n          return false;\n        }\n        /* Check value is safe. First, is attr inert? If so, is safe */\n      } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$$1, stringReplace(value, ATTR_WHITESPACE$$1, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$$1, stringReplace(value, ATTR_WHITESPACE$$1, ''))) ; else if (!value) ; else {\n        return false;\n      }\n\n      return true;\n    };\n\n    /**\n     * _basicCustomElementCheck\n     * checks if at least one dash is included in tagName, and it's not the first char\n     * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n     * @param {string} tagName name of the tag of the node to sanitize\n     */\n    var _basicCustomElementTest = function _basicCustomElementTest(tagName) {\n      return tagName.indexOf('-') > 0;\n    };\n\n    /**\n     * _sanitizeAttributes\n     *\n     * @protect attributes\n     * @protect nodeName\n     * @protect removeAttribute\n     * @protect setAttribute\n     *\n     * @param  {Node} currentNode to sanitize\n     */\n    var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n      var attr = void 0;\n      var value = void 0;\n      var lcName = void 0;\n      var l = void 0;\n      /* Execute a hook if present */\n      _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n      var attributes = currentNode.attributes;\n\n      /* Check if we have attributes; if not we might have a text node */\n\n      if (!attributes) {\n        return;\n      }\n\n      var hookEvent = {\n        attrName: '',\n        attrValue: '',\n        keepAttr: true,\n        allowedAttributes: ALLOWED_ATTR\n      };\n      l = attributes.length;\n\n      /* Go backwards over all attributes; safely remove bad ones */\n      while (l--) {\n        attr = attributes[l];\n        var _attr = attr,\n            name = _attr.name,\n            namespaceURI = _attr.namespaceURI;\n\n        value = stringTrim(attr.value);\n        lcName = transformCaseFunc(name);\n\n        /* Execute a hook if present */\n        hookEvent.attrName = lcName;\n        hookEvent.attrValue = value;\n        hookEvent.keepAttr = true;\n        hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n        _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n        value = hookEvent.attrValue;\n        /* Did the hooks approve of the attribute? */\n        if (hookEvent.forceKeepAttr) {\n          continue;\n        }\n\n        /* Remove attribute */\n        _removeAttribute(name, currentNode);\n\n        /* Did the hooks approve of the attribute? */\n        if (!hookEvent.keepAttr) {\n          continue;\n        }\n\n        /* Work around a security issue in jQuery 3.0 */\n        if (regExpTest(/\\/>/i, value)) {\n          _removeAttribute(name, currentNode);\n          continue;\n        }\n\n        /* Sanitize attribute content to be template-safe */\n        if (SAFE_FOR_TEMPLATES) {\n          value = stringReplace(value, MUSTACHE_EXPR$$1, ' ');\n          value = stringReplace(value, ERB_EXPR$$1, ' ');\n        }\n\n        /* Is `value` valid for this attribute? */\n        var lcTag = transformCaseFunc(currentNode.nodeName);\n        if (!_isValidAttribute(lcTag, lcName, value)) {\n          continue;\n        }\n\n        /* Handle invalid data-* attribute set by try-catching it */\n        try {\n          if (namespaceURI) {\n            currentNode.setAttributeNS(namespaceURI, name, value);\n          } else {\n            /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n            currentNode.setAttribute(name, value);\n          }\n\n          arrayPop(DOMPurify.removed);\n        } catch (_) {}\n      }\n\n      /* Execute a hook if present */\n      _executeHook('afterSanitizeAttributes', currentNode, null);\n    };\n\n    /**\n     * _sanitizeShadowDOM\n     *\n     * @param  {DocumentFragment} fragment to iterate over recursively\n     */\n    var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n      var shadowNode = void 0;\n      var shadowIterator = _createIterator(fragment);\n\n      /* Execute a hook if present */\n      _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n      while (shadowNode = shadowIterator.nextNode()) {\n        /* Execute a hook if present */\n        _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n        /* Sanitize tags and elements */\n        if (_sanitizeElements(shadowNode)) {\n          continue;\n        }\n\n        /* Deep shadow DOM detected */\n        if (shadowNode.content instanceof DocumentFragment) {\n          _sanitizeShadowDOM(shadowNode.content);\n        }\n\n        /* Check attributes, sanitize if necessary */\n        _sanitizeAttributes(shadowNode);\n      }\n\n      /* Execute a hook if present */\n      _executeHook('afterSanitizeShadowDOM', fragment, null);\n    };\n\n    /**\n     * Sanitize\n     * Public method providing core sanitation functionality\n     *\n     * @param {String|Node} dirty string or DOM node\n     * @param {Object} configuration object\n     */\n    // eslint-disable-next-line complexity\n    DOMPurify.sanitize = function (dirty, cfg) {\n      var body = void 0;\n      var importedNode = void 0;\n      var currentNode = void 0;\n      var oldNode = void 0;\n      var returnNode = void 0;\n      /* Make sure we have a string to sanitize.\n        DO NOT return early, as this will return the wrong type if\n        the user has requested a DOM object rather than a string */\n      IS_EMPTY_INPUT = !dirty;\n      if (IS_EMPTY_INPUT) {\n        dirty = '<!-->';\n      }\n\n      /* Stringify, in case dirty is an object */\n      if (typeof dirty !== 'string' && !_isNode(dirty)) {\n        // eslint-disable-next-line no-negated-condition\n        if (typeof dirty.toString !== 'function') {\n          throw typeErrorCreate('toString is not a function');\n        } else {\n          dirty = dirty.toString();\n          if (typeof dirty !== 'string') {\n            throw typeErrorCreate('dirty is not a string, aborting');\n          }\n        }\n      }\n\n      /* Check we can run. Otherwise fall back or ignore */\n      if (!DOMPurify.isSupported) {\n        if (_typeof(window.toStaticHTML) === 'object' || typeof window.toStaticHTML === 'function') {\n          if (typeof dirty === 'string') {\n            return window.toStaticHTML(dirty);\n          }\n\n          if (_isNode(dirty)) {\n            return window.toStaticHTML(dirty.outerHTML);\n          }\n        }\n\n        return dirty;\n      }\n\n      /* Assign config vars */\n      if (!SET_CONFIG) {\n        _parseConfig(cfg);\n      }\n\n      /* Clean up removed elements */\n      DOMPurify.removed = [];\n\n      /* Check if dirty is correctly typed for IN_PLACE */\n      if (typeof dirty === 'string') {\n        IN_PLACE = false;\n      }\n\n      if (IN_PLACE) ; else if (dirty instanceof Node) {\n        /* If dirty is a DOM element, append to an empty document to avoid\n           elements being stripped by the parser */\n        body = _initDocument('<!---->');\n        importedNode = body.ownerDocument.importNode(dirty, true);\n        if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n          /* Node is already a body, use as is */\n          body = importedNode;\n        } else if (importedNode.nodeName === 'HTML') {\n          body = importedNode;\n        } else {\n          // eslint-disable-next-line unicorn/prefer-dom-node-append\n          body.appendChild(importedNode);\n        }\n      } else {\n        /* Exit directly if we have nothing to do */\n        if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n        // eslint-disable-next-line unicorn/prefer-includes\n        dirty.indexOf('<') === -1) {\n          return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n        }\n\n        /* Initialize the document to work on */\n        body = _initDocument(dirty);\n\n        /* Check we have a DOM node from the data */\n        if (!body) {\n          return RETURN_DOM ? null : emptyHTML;\n        }\n      }\n\n      /* Remove first element node (ours) if FORCE_BODY is set */\n      if (body && FORCE_BODY) {\n        _forceRemove(body.firstChild);\n      }\n\n      /* Get node iterator */\n      var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n\n      /* Now start iterating over the created document */\n      while (currentNode = nodeIterator.nextNode()) {\n        /* Fix IE's strange behavior with manipulated textNodes #89 */\n        if (currentNode.nodeType === 3 && currentNode === oldNode) {\n          continue;\n        }\n\n        /* Sanitize tags and elements */\n        if (_sanitizeElements(currentNode)) {\n          continue;\n        }\n\n        /* Shadow DOM detected, sanitize it */\n        if (currentNode.content instanceof DocumentFragment) {\n          _sanitizeShadowDOM(currentNode.content);\n        }\n\n        /* Check attributes, sanitize if necessary */\n        _sanitizeAttributes(currentNode);\n\n        oldNode = currentNode;\n      }\n\n      oldNode = null;\n\n      /* If we sanitized `dirty` in-place, return it. */\n      if (IN_PLACE) {\n        return dirty;\n      }\n\n      /* Return sanitized string or DOM */\n      if (RETURN_DOM) {\n        if (RETURN_DOM_FRAGMENT) {\n          returnNode = createDocumentFragment.call(body.ownerDocument);\n\n          while (body.firstChild) {\n            // eslint-disable-next-line unicorn/prefer-dom-node-append\n            returnNode.appendChild(body.firstChild);\n          }\n        } else {\n          returnNode = body;\n        }\n\n        if (ALLOWED_ATTR.shadowroot) {\n          /*\n            AdoptNode() is not used because internal state is not reset\n            (e.g. the past names map of a HTMLFormElement), this is safe\n            in theory but we would rather not risk another attack vector.\n            The state that is cloned by importNode() is explicitly defined\n            by the specs.\n          */\n          returnNode = importNode.call(originalDocument, returnNode, true);\n        }\n\n        return returnNode;\n      }\n\n      var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n      /* Sanitize final string template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$$1, ' ');\n        serializedHTML = stringReplace(serializedHTML, ERB_EXPR$$1, ' ');\n      }\n\n      return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n    };\n\n    /**\n     * Public method to set the configuration once\n     * setConfig\n     *\n     * @param {Object} cfg configuration object\n     */\n    DOMPurify.setConfig = function (cfg) {\n      _parseConfig(cfg);\n      SET_CONFIG = true;\n    };\n\n    /**\n     * Public method to remove the configuration\n     * clearConfig\n     *\n     */\n    DOMPurify.clearConfig = function () {\n      CONFIG = null;\n      SET_CONFIG = false;\n    };\n\n    /**\n     * Public method to check if an attribute value is valid.\n     * Uses last set config, if any. Otherwise, uses config defaults.\n     * isValidAttribute\n     *\n     * @param  {string} tag Tag name of containing element.\n     * @param  {string} attr Attribute name.\n     * @param  {string} value Attribute value.\n     * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n     */\n    DOMPurify.isValidAttribute = function (tag, attr, value) {\n      /* Initialize shared config vars if necessary. */\n      if (!CONFIG) {\n        _parseConfig({});\n      }\n\n      var lcTag = transformCaseFunc(tag);\n      var lcName = transformCaseFunc(attr);\n      return _isValidAttribute(lcTag, lcName, value);\n    };\n\n    /**\n     * AddHook\n     * Public method to add DOMPurify hooks\n     *\n     * @param {String} entryPoint entry point for the hook to add\n     * @param {Function} hookFunction function to execute\n     */\n    DOMPurify.addHook = function (entryPoint, hookFunction) {\n      if (typeof hookFunction !== 'function') {\n        return;\n      }\n\n      hooks[entryPoint] = hooks[entryPoint] || [];\n      arrayPush(hooks[entryPoint], hookFunction);\n    };\n\n    /**\n     * RemoveHook\n     * Public method to remove a DOMPurify hook at a given entryPoint\n     * (pops it from the stack of hooks if more are present)\n     *\n     * @param {String} entryPoint entry point for the hook to remove\n     */\n    DOMPurify.removeHook = function (entryPoint) {\n      if (hooks[entryPoint]) {\n        arrayPop(hooks[entryPoint]);\n      }\n    };\n\n    /**\n     * RemoveHooks\n     * Public method to remove all DOMPurify hooks at a given entryPoint\n     *\n     * @param  {String} entryPoint entry point for the hooks to remove\n     */\n    DOMPurify.removeHooks = function (entryPoint) {\n      if (hooks[entryPoint]) {\n        hooks[entryPoint] = [];\n      }\n    };\n\n    /**\n     * RemoveAllHooks\n     * Public method to remove all DOMPurify hooks\n     *\n     */\n    DOMPurify.removeAllHooks = function () {\n      hooks = {};\n    };\n\n    return DOMPurify;\n  }\n\n  var purify = createDOMPurify();\n\n  return purify;\n\n}));\n//# sourceMappingURL=purify.js.map\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n"],"sourceRoot":""}