{"version":3,"sources":["webpack:///./node_modules/vue-meta/node_modules/deepmerge/dist/cjs.js","webpack:///./node_modules/vue-meta/dist/vue-meta.esm.js","webpack:///./node_modules/vue-simple-alert/lib/index.js","webpack:///./node_modules/vue-router/dist/vue-router.esm.js","webpack:///./node_modules/vue-slide-bar/lib/vue-slide-bar.min.js","webpack:///./node_modules/vue-read-more/components/ReadMoreComponent.vue?198f","webpack:///node_modules/vue-read-more/components/ReadMoreComponent.vue","webpack:///./node_modules/vue-read-more/components/ReadMoreComponent.vue?63bb","webpack:///./node_modules/vue-read-more/components/ReadMoreComponent.vue","webpack:///./node_modules/vue-read-more/directives/ReadMoreDirective.js","webpack:///./node_modules/vue-read-more/index.js"],"names":["isMergeableObject","value","isNonNullObject","isSpecial","stringValue","Object","prototype","toString","call","isReactElement","canUseSymbol","Symbol","for","REACT_ELEMENT_TYPE","$$typeof","emptyTarget","val","Array","isArray","cloneUnlessOtherwiseSpecified","options","clone","deepmerge","defaultArrayMerge","target","source","concat","map","element","getMergeFunction","key","customMerge","getEnumerableOwnPropertySymbols","getOwnPropertySymbols","filter","symbol","propertyIsEnumerable","getKeys","keys","propertyIsOnObject","object","property","_","propertyIsUnsafe","hasOwnProperty","mergeObject","destination","forEach","arrayMerge","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","all","array","Error","reduce","prev","next","deepmerge_1","module","exports","version","_typeof","obj","iterator","constructor","_defineProperty","defineProperty","enumerable","configurable","writable","ownKeys","enumerableOnly","symbols","sym","getOwnPropertyDescriptor","push","apply","_objectSpread2","i","arguments","length","getOwnPropertyDescriptors","defineProperties","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_arrayLikeToArray","iter","from","o","minLen","n","slice","name","test","len","arr2","TypeError","_createForOfIteratorHelper","allowArrayLike","it","F","s","done","e","f","err","normalCompletion","didErr","step","return","arg","isUndefined","isObject","isPureObject","isFunction","isString","hasGlobalWindowFn","window","hasGlobalWindow","_global","global","console","warn","str","showWarningNotSupported","defaultInfo","title","undefined","titleChunk","titleTemplate","htmlAttrs","bodyAttrs","headAttrs","base","link","meta","style","script","noscript","__dangerouslyDisableSanitizers","__dangerouslyDisableSanitizersByTagID","rootConfigKey","keyName","attribute","ssrAttribute","tagIDKeyName","metaTemplateKeyName","contentKeyName","ssrAppId","debounceWait","waitOnDestroyed","defaultOptions","defaultInfoKeys","disableOptionKeys","metaInfoOptionKeys","metaInfoAttributeKeys","tagsSupportingOnload","tagsWithoutEndTag","tagsWithInnerContent","tagAttributeAsInnerContent","tagProperties","commonDataAttributes","booleanHtmlAttributes","batchId","triggerUpdate","_ref","rootVm","hookName","initialized","initializing","pausing","batchUpdate","$meta","refresh","callback","timeout","clearTimeout","setTimeout","find","predicate","thisArg","idx","findIndex","toArray","includes","querySelector","el","document","querySelectorAll","getTag","tags","tag","getElementsByTagName","getElementsKey","body","pbody","queryElements","parentNode","_ref2","attributes","appId","type","queries","query","attributeValue","join","removeElementsByAppId","_ref3","remove","removeAttribute","attributeName","hasMetaInfo","vm","this","inMetaInfoBranch","pause","resume","addNavGuards","router","$router","navGuards","beforeEach","to","afterEach","$nextTick","_resume","metaInfo","afterNavigation","createMixin","Vue","updateOnLifecycleHook","wasServerRendered","beforeCreate","_this2","rootKey","$root","$options","devtoolsEnabled","config","devtools","get","deprecationWarningShown","$once","$el","nodeType","hasAttribute","htmlTag","child","$children","c","$vnode","fnOptions","parent","$parent","computed","$metaInfo","$isServer","$on","$watch","initializedSsr","_$root$$meta$refresh","refreshOnceOnNavigation","_this","_hasMetaInfo","offsetParent","interval","setInterval","clearInterval","lifecycleHook","setOptions","getOptions","optionsCopy","ensureIsArray","serverSequences","clientSequences","escape","info","escapeOptions","escapeKeys","_escapeOptions$doEsca","doEscape","v","escaped","disableKey","tagId","escapedKey","escapeMetaInfo","escapeSequences","seq","replace","index","applyTemplate","headObject","template","chunk","component","_arrayMerge","targetItem","targetIndex","sourceIndex","item","sourceItem","innerHTML","splice","targetTemplate","sourceTemplate","warningShown","merge","attrKey","t","getComponentMetaInfo","getComponentOption","result","_inactive","_options","data","childComponent","callbacks","isDOMComplete","d","readyState","addCallback","addCallbacks","autoAddListeners","hasAsyncCallback","addListeners","applyCallbacks","onreadystatechange","matchElement","args","selector","elements","matches","__vm_cb","onload","__vm_l","__vm_ev","addEventListener","appsMetaInfo","attributeMap","updateAttribute","attrs","vueMetaAttrString","getAttribute","JSON","parse","decodeURI","toUpdate","attr","_attr","attrData","_i","_toUpdate","_attr2","_attrData","attrValues","_appId","attrValue","some","Boolean","setAttribute","updateTitle","updateTag","head","dataAttributes","newElements","queryOptions","currentElements","found","x","k","stringify","res","skip","newElement","createElement","once","isBooleanAttribute","styleSheet","cssText","appendChild","createTextNode","json","indexToDelete","oldElements","hasEqualElement","existingTag","isEqualNode","_type","removeChild","insertBefore","firstChild","oldTags","newTags","updateClientMetaInfo","newInfo","addLoadListeners","tagsAdded","tagsRemoved","tagName","substr","_updateTag","addApp","set","setMetaInfo","removeMetaInfo","_step","_iterator","clearAppsMetaInfo","getAppsMetaInfo","force","getMetaInfo","metaItem","hasVmid","isFirstItemForVmid","metaObject","rawInfo","changed","addedTags","removedTags","additionalAppId","attributeGenerator","addSsrAttribute","attributeStr","encodeURI","titleGenerator","generatorOptions","ln","tagGenerator","_ref2$isSSR","isSSR","_ref2$body","_ref2$pbody","_ref2$ln","tagsStr","tagKeys","prefix","isBooleanAttr","content","hasEndTag","hasContent","generateServerInjector","globalInjectOptions","serverInjector","extraData","addInfo","callInjectors","opts","m","injectors","text","bodyPrepend","bodyAppend","_loop","injectOptions","attributeData","_data","_appId2","_data2","extraStr","inject","newOptions","refreshNavKey","debounceWaitKey","parseInt","isNaN","waitOnDestroyedKey","generate","install","__vuemeta_installed","mixin","__assign","assign","p","VueSimpleAlert","alert","message","Promise","resolve","mixedOptions","globalOptions","fire","then","catch","confirm","reject","showCancelButton","r","prompt","defaultText","inputValue","input","$alert","$confirm","$prompt","$fire","condition","extend","a","b","encodeReserveRE","encodeReserveReplacer","charCodeAt","commaRE","encode","encodeURIComponent","decode","decodeURIComponent","resolveQuery","extraQuery","_parseQuery","parsedQuery","parseQuery","castQueryParamValue","String","trim","split","param","parts","shift","stringifyQuery","val2","trailingSlashRE","createRoute","record","location","redirectedFrom","route","path","hash","params","fullPath","getFullPath","matched","formatMatch","freeze","START","unshift","ref","_stringifyQuery","isSameRoute","isObjectEqual","aKeys","bKeys","every","aVal","bVal","isIncludedRoute","current","indexOf","queryIncludes","handleRouteEntered","instances","instance","cbs","enteredCbs","i$1","_isBeingDestroyed","View","functional","props","default","render","children","routerView","h","$createElement","$route","cache","_routerViewCache","depth","inactive","_routerRoot","vnodeData","keepAlive","_directInactive","routerViewDepth","cachedData","cachedComponent","configProps","fillPropsinData","components","registerRouteInstance","hook","prepatch","vnode","componentInstance","init","propsToPass","resolveProps","resolvePath","relative","append","firstChar","charAt","stack","pop","segments","segment","parsePath","hashIndex","queryIndex","cleanPath","isarray","pathToRegexp_1","pathToRegexp","parse_1","compile_1","compile","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","RegExp","tokens","defaultDelimiter","delimiter","exec","offset","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","encodeURIComponentPretty","toUpperCase","encodeAsterisk","flags","pretty","token","j","attachKeys","re","sensitive","regexpToRegexp","groups","match","arrayToRegexp","regexp","stringToRegexp","strict","end","endsWithDelimiter","regexpCompileCache","create","fillParams","routeMsg","filler","pathMatch","normalizeLocation","raw","_normalized","params$1","rawPath","parsedPath","basePath","_Vue","toTypes","eventTypes","noop","Link","required","exact","activeClass","exactActiveClass","ariaCurrentValue","event","this$1","href","classes","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","handler","guardEvent","on","click","class","scopedSlot","$scopedSlots","$hasNormal","navigate","isActive","isExactActive","findAnchor","$slots","isStatic","aData","handler$1","event$1","aAttrs","metaKey","altKey","ctrlKey","shiftKey","defaultPrevented","button","currentTarget","preventDefault","installed","isDef","registerInstance","callVal","_parentVnode","_router","util","defineReactive","history","destroyed","_route","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","created","inBrowser","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","pathList","pathMap","nameMap","addRouteRecord","l","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","redirect","beforeEnter","childMatchAs","alias","aliases","aliasRoute","createMatcher","addRoutes","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","resolveRecordPath","resolvedPath","aliasedPath","aliasedMatch","aliasedRecord","Time","performance","now","Date","genStateKey","toFixed","_key","getStateKey","setStateKey","positionStore","setupScroll","scrollRestoration","protocolAndPath","protocol","host","absolutePath","stateCopy","state","replaceState","handlePopState","removeEventListener","handleScroll","isPop","app","behavior","scrollBehavior","position","getScrollPosition","shouldScroll","scrollToPosition","saveScrollPosition","pageXOffset","y","pageYOffset","getElementPosition","docEl","documentElement","docRect","getBoundingClientRect","elRect","left","top","isValidPosition","isNumber","normalizePosition","normalizeOffset","hashStartsWithNumberRE","getElementById","scrollTo","supportsPushState","ua","navigator","userAgent","pushState","url","runQueue","queue","fn","cb","NavigationFailureType","redirected","aborted","cancelled","duplicated","createNavigationRedirectedError","createRouterError","stringifyRoute","createNavigationDuplicatedError","error","createNavigationCancelledError","createNavigationAbortedError","_isRouter","propertiesToLog","isError","isNavigationFailure","errorType","resolveAsyncComponents","hasAsync","pending","flatMapComponents","def","cid","resolvedDef","isESModule","resolved","reason","msg","comp","flatten","hasSymbol","toStringTag","__esModule","called","History","normalizeBase","ready","readyCbs","readyErrorCbs","errorCbs","listeners","baseEl","resolveQueue","max","Math","updated","activated","deactivated","extractGuards","records","bind","reverse","guards","guard","extractGuard","extractLeaveGuards","bindGuard","extractUpdateHooks","extractEnterGuards","bindEnterGuard","listen","onReady","errorCb","onError","transitionTo","onComplete","onAbort","confirmTransition","updateRoute","ensureURL","afterHooks","abort","lastRouteIndex","lastCurrentIndex","beforeHooks","enterGuards","resolveHooks","setupListeners","teardown","cleanupListener","HTML5History","_startLocation","getLocation","__proto__","expectScroll","supportsScroll","handleRoutingEvent","go","fromRoute","getCurrentLocation","pathname","toLowerCase","search","HashHistory","fallback","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","VueRouter","apps","matcher","mode","prototypeAccessors","registerHook","list","createHref","handleInitialScroll","routeOrError","beforeResolve","back","forward","getMatchedComponents","normalizedTo","use","flag","size","currentValue","currentSlider","isComponentExists","lazy","realTime","dataLabelStyles","color","$props","labelStyles","id","range","speed","Number","lineHeight","iconWidth","min","showTooltip","isDisabled","draggable","paddingless","tooltipStyles","processStyle","slider","$refs","tooltip","currentIndex","minimum","spacing","indexRange","maximum","multiple","pow","total","floor","printError","gap","limit","valueLimit","calculateHeight","watch","setValue","limitValue","methods","bindEvents","moving","passive","moveEnd","unbindEvents","getPos","getStaticData","clientX","wrapClick","setValueOnPos","moveStart","$emit","targetTouches","isDiff","syncValue","setPosition","setTransform","round","setCurrentValue","setIndex","setTransitionTime","scrollWidth","transform","WebkitTransform","msTransform","process","width","transitionDuration","WebkitTransitionDuration","getValue","getIndex","elem","offsetWidth","mounted","beforeDestroy","__file","u","staticRenderFns","_compiled","_scopeId","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","shadowRoot","_self","_c","staticClass","height","mousedown","touchstart","_t","_v","_s","_e","_l","isHide","label","media","ids","Set","styles","has","sources","btoa","unescape","childNodes","_vm","_h","domProps","formattedString","directives","rawName","maxChars","expression","isReadMore","$event","triggerReadMore","moreStr","lessStr","twoWay","vn","val_container","elm","textContent","substring","read_more","read_less","update","newValue","ReadMoreComponent","directive","ReadMoreDirective"],"mappings":"wHAEA,IAAIA,EAAoB,SAA2BC,GAClD,OAAOC,EAAgBD,KAClBE,EAAUF,IAGhB,SAASC,EAAgBD,GACxB,QAASA,GAA0B,kBAAVA,EAG1B,SAASE,EAAUF,GAClB,IAAIG,EAAcC,OAAOC,UAAUC,SAASC,KAAKP,GAEjD,MAAuB,oBAAhBG,GACa,kBAAhBA,GACAK,EAAeR,GAIpB,IAAIS,EAAiC,oBAAXC,QAAyBA,OAAOC,IACtDC,EAAqBH,EAAeC,OAAOC,IAAI,iBAAmB,MAEtE,SAASH,EAAeR,GACvB,OAAOA,EAAMa,WAAaD,EAG3B,SAASE,EAAYC,GACpB,OAAOC,MAAMC,QAAQF,GAAO,GAAK,GAGlC,SAASG,EAA8BlB,EAAOmB,GAC7C,OAA0B,IAAlBA,EAAQC,OAAmBD,EAAQpB,kBAAkBC,GAC1DqB,EAAUP,EAAYd,GAAQA,EAAOmB,GACrCnB,EAGJ,SAASsB,EAAkBC,EAAQC,EAAQL,GAC1C,OAAOI,EAAOE,OAAOD,GAAQE,KAAI,SAASC,GACzC,OAAOT,EAA8BS,EAASR,MAIhD,SAASS,EAAiBC,EAAKV,GAC9B,IAAKA,EAAQW,YACZ,OAAOT,EAER,IAAIS,EAAcX,EAAQW,YAAYD,GACtC,MAA8B,oBAAhBC,EAA6BA,EAAcT,EAG1D,SAASU,EAAgCR,GACxC,OAAOnB,OAAO4B,sBACX5B,OAAO4B,sBAAsBT,GAAQU,QAAO,SAASC,GACtD,OAAOX,EAAOY,qBAAqBD,MAElC,GAGJ,SAASE,EAAQb,GAChB,OAAOnB,OAAOiC,KAAKd,GAAQE,OAAOM,EAAgCR,IAGnE,SAASe,EAAmBC,EAAQC,GACnC,IACC,OAAOA,KAAYD,EAClB,MAAME,GACP,OAAO,GAKT,SAASC,EAAiBnB,EAAQM,GACjC,OAAOS,EAAmBf,EAAQM,MAC5BzB,OAAOuC,eAAepC,KAAKgB,EAAQM,IACpCzB,OAAO+B,qBAAqB5B,KAAKgB,EAAQM,IAG/C,SAASe,EAAYrB,EAAQC,EAAQL,GACpC,IAAI0B,EAAc,GAiBlB,OAhBI1B,EAAQpB,kBAAkBwB,IAC7Ba,EAAQb,GAAQuB,SAAQ,SAASjB,GAChCgB,EAAYhB,GAAOX,EAA8BK,EAAOM,GAAMV,MAGhEiB,EAAQZ,GAAQsB,SAAQ,SAASjB,GAC5Ba,EAAiBnB,EAAQM,KAIzBS,EAAmBf,EAAQM,IAAQV,EAAQpB,kBAAkByB,EAAOK,IACvEgB,EAAYhB,GAAOD,EAAiBC,EAAKV,EAAtBS,CAA+BL,EAAOM,GAAML,EAAOK,GAAMV,GAE5E0B,EAAYhB,GAAOX,EAA8BM,EAAOK,GAAMV,OAGzD0B,EAGR,SAASxB,EAAUE,EAAQC,EAAQL,GAClCA,EAAUA,GAAW,GACrBA,EAAQ4B,WAAa5B,EAAQ4B,YAAczB,EAC3CH,EAAQpB,kBAAoBoB,EAAQpB,mBAAqBA,EAGzDoB,EAAQD,8BAAgCA,EAExC,IAAI8B,EAAgBhC,MAAMC,QAAQO,GAC9ByB,EAAgBjC,MAAMC,QAAQM,GAC9B2B,EAA4BF,IAAkBC,EAElD,OAAKC,EAEMF,EACH7B,EAAQ4B,WAAWxB,EAAQC,EAAQL,GAEnCyB,EAAYrB,EAAQC,EAAQL,GAJ5BD,EAA8BM,EAAQL,GAQ/CE,EAAU8B,IAAM,SAAsBC,EAAOjC,GAC5C,IAAKH,MAAMC,QAAQmC,GAClB,MAAM,IAAIC,MAAM,qCAGjB,OAAOD,EAAME,QAAO,SAASC,EAAMC,GAClC,OAAOnC,EAAUkC,EAAMC,EAAMrC,KAC3B,KAGJ,IAAIsC,EAAcpC,EAElBqC,EAAOC,QAAUF,G,qCCpIjB,qCAYIG,EAAU,QAEd,SAASC,EAAQC,GAaf,OATED,EADoB,oBAAXnD,QAAoD,kBAApBA,OAAOqD,SACtC,SAAUD,GAClB,cAAcA,GAGN,SAAUA,GAClB,OAAOA,GAAyB,oBAAXpD,QAAyBoD,EAAIE,cAAgBtD,QAAUoD,IAAQpD,OAAOL,UAAY,gBAAkByD,GAItHD,EAAQC,GAGjB,SAASG,EAAgBH,EAAKjC,EAAK7B,GAYjC,OAXI6B,KAAOiC,EACT1D,OAAO8D,eAAeJ,EAAKjC,EAAK,CAC9B7B,MAAOA,EACPmE,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZP,EAAIjC,GAAO7B,EAGN8D,EAGT,SAASQ,EAAQ/B,EAAQgC,GACvB,IAAIlC,EAAOjC,OAAOiC,KAAKE,GAEvB,GAAInC,OAAO4B,sBAAuB,CAChC,IAAIwC,EAAUpE,OAAO4B,sBAAsBO,GACvCgC,IAAgBC,EAAUA,EAAQvC,QAAO,SAAUwC,GACrD,OAAOrE,OAAOsE,yBAAyBnC,EAAQkC,GAAKN,eAEtD9B,EAAKsC,KAAKC,MAAMvC,EAAMmC,GAGxB,OAAOnC,EAGT,SAASwC,EAAetD,GACtB,IAAK,IAAIuD,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAItD,EAAyB,MAAhBuD,UAAUD,GAAaC,UAAUD,GAAK,GAE/CA,EAAI,EACNR,EAAQlE,OAAOoB,IAAS,GAAMsB,SAAQ,SAAUjB,GAC9CoC,EAAgB1C,EAAQM,EAAKL,EAAOK,OAE7BzB,OAAO6E,0BAChB7E,OAAO8E,iBAAiB3D,EAAQnB,OAAO6E,0BAA0BzD,IAEjE8C,EAAQlE,OAAOoB,IAASsB,SAAQ,SAAUjB,GACxCzB,OAAO8D,eAAe3C,EAAQM,EAAKzB,OAAOsE,yBAAyBlD,EAAQK,OAKjF,OAAON,EAGT,SAAS4D,EAAmBC,GAC1B,OAAOC,EAAmBD,IAAQE,EAAiBF,IAAQG,EAA4BH,IAAQI,IAGjG,SAASH,EAAmBD,GAC1B,GAAIpE,MAAMC,QAAQmE,GAAM,OAAOK,EAAkBL,GAGnD,SAASE,EAAiBI,GACxB,GAAsB,qBAAXhF,QAA0BA,OAAOqD,YAAY3D,OAAOsF,GAAO,OAAO1E,MAAM2E,KAAKD,GAG1F,SAASH,EAA4BK,EAAGC,GACtC,GAAKD,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAOH,EAAkBG,EAAGC,GACvD,IAAIC,EAAI1F,OAAOC,UAAUC,SAASC,KAAKqF,GAAGG,MAAM,GAAI,GAEpD,MADU,WAAND,GAAkBF,EAAE5B,cAAa8B,EAAIF,EAAE5B,YAAYgC,MAC7C,QAANF,GAAqB,QAANA,EAAoB9E,MAAM2E,KAAKC,GACxC,cAANE,GAAqB,2CAA2CG,KAAKH,GAAWL,EAAkBG,EAAGC,QAAzG,GAGF,SAASJ,EAAkBL,EAAKc,IACnB,MAAPA,GAAeA,EAAMd,EAAIJ,UAAQkB,EAAMd,EAAIJ,QAE/C,IAAK,IAAIF,EAAI,EAAGqB,EAAO,IAAInF,MAAMkF,GAAMpB,EAAIoB,EAAKpB,IAAKqB,EAAKrB,GAAKM,EAAIN,GAEnE,OAAOqB,EAGT,SAASX,IACP,MAAM,IAAIY,UAAU,wIAGtB,SAASC,EAA2BT,EAAGU,GACrC,IAAIC,EAEJ,GAAsB,qBAAX7F,QAAgD,MAAtBkF,EAAElF,OAAOqD,UAAmB,CAC/D,GAAI/C,MAAMC,QAAQ2E,KAAOW,EAAKhB,EAA4BK,KAAOU,GAAkBV,GAAyB,kBAAbA,EAAEZ,OAAqB,CAChHuB,IAAIX,EAAIW,GACZ,IAAIzB,EAAI,EAEJ0B,EAAI,aAER,MAAO,CACLC,EAAGD,EACHV,EAAG,WACD,OAAIhB,GAAKc,EAAEZ,OAAe,CACxB0B,MAAM,GAED,CACLA,MAAM,EACN1G,MAAO4F,EAAEd,OAGb6B,EAAG,SAAUA,GACX,MAAMA,GAERC,EAAGJ,GAIP,MAAM,IAAIJ,UAAU,yIAGtB,IAEIS,EAFAC,GAAmB,EACnBC,GAAS,EAEb,MAAO,CACLN,EAAG,WACDF,EAAKX,EAAElF,OAAOqD,aAEhB+B,EAAG,WACD,IAAIkB,EAAOT,EAAG/C,OAEd,OADAsD,EAAmBE,EAAKN,KACjBM,GAETL,EAAG,SAAUA,GACXI,GAAS,EACTF,EAAMF,GAERC,EAAG,WACD,IACOE,GAAiC,MAAbP,EAAGU,QAAgBV,EAAGU,SAC/C,QACA,GAAIF,EAAQ,MAAMF,KAW1B,SAAS5F,EAAQiG,GACf,OAAOlG,MAAMC,QAAQiG,GAEvB,SAASC,EAAYD,GACnB,MAAsB,qBAARA,EAEhB,SAASE,EAASF,GAChB,MAAwB,WAAjBrD,EAAQqD,GAEjB,SAASG,EAAaH,GACpB,MAAwB,WAAjBrD,EAAQqD,IAA6B,OAARA,EAEtC,SAASI,EAAWJ,GAClB,MAAsB,oBAARA,EAEhB,SAASK,EAASL,GAChB,MAAsB,kBAARA,EAGhB,SAASM,IACP,IACE,OAAQL,EAAYM,QACpB,MAAOd,GACP,OAAO,GAGX,IAAIe,EAAkBF,IAElBG,EAAUD,EAAkBD,OAASG,EAErCC,EAAUF,EAAQE,SAAW,GACjC,SAASC,EAAKC,GAEPF,GAAYA,EAAQC,MAIzBD,EAAQC,KAAKC,GAEf,IAAIC,EAA0B,WAC5B,OAAOF,EAAK,yDAOVG,EAAc,CAChBC,WAAOC,EACPC,WAAY,GACZC,cAAe,KACfC,UAAW,GACXC,UAAW,GACXC,UAAW,GACXC,KAAM,GACNC,KAAM,GACNC,KAAM,GACNC,MAAO,GACPC,OAAQ,GACRC,SAAU,GACVC,+BAAgC,GAChCC,sCAAuC,IAErCC,EAAgB,WAGhBC,EAAU,WAGVC,EAAY,gBAGZC,EAAe,gCAKfC,EAAe,OAEfC,EAAsB,WAEtBC,EAAiB,UAEjBC,EAAW,MAEXC,EAAe,GAEfC,GAAkB,EAClBC,EAAiB,CACnBT,QAASA,EACTC,UAAWA,EACXC,aAAcA,EACdC,aAAcA,EACdE,eAAgBA,EAChBD,oBAAqBA,EACrBI,gBAAiBA,EACjBD,aAAcA,EACdD,SAAUA,GAGRI,EAAkBxJ,OAAOiC,KAAK4F,GAE9B4B,EAAoB,CAACD,EAAgB,IAAKA,EAAgB,KAE1DE,EAAqB,CAACF,EAAgB,GAAIA,EAAgB,GAAI,WAAWnI,OAAOoI,GAEhFE,EAAwB,CAACH,EAAgB,GAAIA,EAAgB,GAAIA,EAAgB,IAEjFI,EAAuB,CAAC,OAAQ,QAAS,UAGzCC,EAAoB,CAAC,OAAQ,OAAQ,QAErCC,EAAuB,CAAC,WAAY,SAAU,SAE9CC,EAA6B,CAAC,YAAa,UAAW,QACtDC,EAAgB,CAAC,OAAQ,OAAQ,YAEjCC,EAAuB,CAAC,OAAQ,SAEhCC,EAAwB,CAAC,kBAAmB,MAAO,kBAAmB,QAAS,YAAa,WAAY,UAAW,UAAW,WAAY,UAAW,UAAW,iBAAkB,eAAgB,kBAAmB,QAAS,WAAY,UAAW,iBAAkB,SAAU,gBAAiB,QAAS,QAAS,YAAa,OAAQ,WAAY,QAAS,SAAU,WAAY,UAAW,aAAc,SAAU,OAAQ,cAAe,WAAY,WAAY,WAAY,SAAU,WAAY,WAAY,WAAY,YAAa,gBAAiB,WAE9hBC,EAAU,KACd,SAASC,EAAcC,EAAMC,EAAQC,GACnC,IAAIlB,EAAegB,EAAKhB,aAKnBiB,EAAOzB,GAAe2B,cAAgBF,EAAOzB,GAAe4B,cAA6B,YAAbF,IAC/ED,EAAOzB,GAAe2B,YAAc,MAGlCF,EAAOzB,GAAe2B,cAAgBF,EAAOzB,GAAe6B,SAG9DC,IAAY,WACEL,EAAOM,QAAQC,YAC1BxB,GAWP,SAASsB,GAAYG,EAAUC,GAG7B,GAFAA,OAAsBhD,IAAZgD,EAAwB,GAAKA,EAElCA,EASL,OAJAC,aAAab,GACbA,EAAUc,YAAW,WACnBH,MACCC,GACIZ,EARLW,IAmBJ,SAASI,GAAKlI,EAAOmI,EAAWC,GAC9B,GAAMxK,MAAMX,UAAUiL,KAWtB,OAAOlI,EAAMkI,KAAKC,EAAWC,GAT3B,IAAK,IAAIC,EAAM,EAAGA,EAAMrI,EAAM4B,OAAQyG,IACpC,GAAIF,EAAUhL,KAAKiL,EAASpI,EAAMqI,GAAMA,EAAKrI,GAC3C,OAAOA,EAAMqI,GASrB,SAASC,GAAUtI,EAAOmI,EAAWC,GACnC,IAAMxK,MAAMX,UAAUqL,UAAW,CAE/B,IAAK,IAAID,EAAM,EAAGA,EAAMrI,EAAM4B,OAAQyG,IACpC,GAAIF,EAAUhL,KAAKiL,EAASpI,EAAMqI,GAAMA,EAAKrI,GAC3C,OAAOqI,EAIX,OAAQ,EAGV,OAAOrI,EAAMsI,UAAUH,EAAWC,GAEpC,SAASG,GAAQzE,GACf,OAAMlG,MAAM2E,KAIL3E,MAAM2E,KAAKuB,GAHTlG,MAAMX,UAAU0F,MAAMxF,KAAK2G,GAKtC,SAAS0E,GAASxI,EAAOpD,GACvB,IAAMgB,MAAMX,UAAUuL,SAAU,CAC9B,IAAK,IAAIH,KAAOrI,EACd,GAAIA,EAAMqI,KAASzL,EACjB,OAAO,EAIX,OAAO,EAGT,OAAOoD,EAAMwI,SAAS5L,GAGxB,IAAI6L,GAAgB,SAAuB3E,EAAK4E,GAC9C,OAAQA,GAAMC,UAAUC,iBAAiB9E,IAE3C,SAAS+E,GAAOC,EAAMC,GAKpB,OAJKD,EAAKC,KACRD,EAAKC,GAAOJ,SAASK,qBAAqBD,GAAK,IAG1CD,EAAKC,GAEd,SAASE,GAAe5B,GACtB,IAAI6B,EAAO7B,EAAK6B,KACZC,EAAQ9B,EAAK8B,MACjB,OAAOD,EAAO,OAASC,EAAQ,QAAU,OAE3C,SAASC,GAAcC,EAAYC,EAAOC,GACxC,IAAIC,EAAQF,EAAME,MACdzD,EAAYuD,EAAMvD,UAClB0D,EAAOH,EAAMG,KACbxD,EAAeqD,EAAMrD,aACzBsD,EAAaA,GAAc,GAC3B,IAAIG,EAAU,CAAC,GAAGrL,OAAOoL,EAAM,KAAKpL,OAAO0H,EAAW,MAAO1H,OAAOmL,EAAO,MAAQ,GAAGnL,OAAOoL,EAAM,UAAUpL,OAAO4H,EAAc,MAAM3H,KAAI,SAAUqL,GACpJ,IAAK,IAAIlL,KAAO8K,EAAY,CAC1B,IAAI5L,EAAM4L,EAAW9K,GACjBmL,EAAiBjM,IAAe,IAARA,EAAe,KAAMU,OAAOV,EAAK,KAAQ,GACrEgM,GAAS,SAAStL,OAAOI,GAAKJ,OAAOuL,EAAgB,KAGvD,OAAOD,KAET,OAAOpB,GAAQE,GAAciB,EAAQG,KAAK,MAAOR,IAEnD,SAASS,GAAsBC,EAAOP,GACpC,IAAIzD,EAAYgE,EAAMhE,UACtBwC,GAAQE,GAAc,IAAIpK,OAAO0H,EAAW,MAAO1H,OAAOmL,EAAO,QAASlL,KAAI,SAAUoK,GACtF,OAAOA,EAAGsB,YAGd,SAASC,GAAgBvB,EAAIwB,GAC3BxB,EAAGuB,gBAAgBC,GAGrB,SAASC,GAAYC,GAEnB,OADAA,EAAKA,GAAMC,KACJD,KAA6B,IAAtBA,EAAGvE,IAA2B7B,EAASoG,EAAGvE,KAG1D,SAASyE,GAAiBF,GAExB,OADAA,EAAKA,GAAMC,KACJD,IAAOrG,EAAYqG,EAAGvE,IAG/B,SAAS0E,GAAMjD,EAAQO,GAErB,OADAP,EAAOzB,GAAe6B,SAAU,EACzB,WACL,OAAO8C,GAAOlD,EAAQO,IAG1B,SAAS2C,GAAOlD,EAAQO,GAGtB,GAFAP,EAAOzB,GAAe6B,SAAU,EAE5BG,QAAuB9C,IAAZ8C,EACb,OAAOP,EAAOM,QAAQC,UAI1B,SAAS4C,GAAanD,GACpB,IAAIoD,EAASpD,EAAOqD,SAEhBrD,EAAOzB,GAAe+E,WAAcF,IAKxCpD,EAAOzB,GAAe+E,WAAY,EAClCF,EAAOG,YAAW,SAAUC,EAAIvI,EAAMnC,GACpCmK,GAAMjD,GACNlH,OAEFsK,EAAOK,WAAU,WACfzD,EAAO0D,WAAU,WACf,IAAIC,EAAUT,GAAOlD,GACjB4D,EAAWD,EAAQC,SAEnBA,GAAYhH,EAAWgH,EAASC,kBAClCD,EAASC,gBAAgBD,UAMjC,IAAI1B,GAAQ,EACZ,SAAS4B,GAAYC,EAAKtN,GAExB,IAAIuN,EAAwB,CAAC,YAAa,cAAe,eACrDC,GAAoB,EAExB,MAAO,CACLC,aAAc,WACZ,IAAIC,EAASpB,KAETqB,EAAU,QACVC,EAAQtB,KAAKqB,GACbE,EAAWvB,KAAKuB,SAChBC,EAAkBR,EAAIS,OAAOC,SAgCjC,GA/BA/O,OAAO8D,eAAeuJ,KAAM,eAAgB,CAC1CrJ,cAAc,EACdgL,IAAK,WAOH,OALIH,IAAoBF,EAAM9F,GAAeoG,0BAC3CvH,EAAK,4IACLiH,EAAM9F,GAAeoG,yBAA0B,GAG1C9B,GAAYE,SAInBA,OAASsB,GACXA,EAAMO,MAAM,oBAAoB,WAO9B,GANAX,EAAoBlB,KAAK8B,KAA6B,IAAtB9B,KAAK8B,IAAIC,UAAkB/B,KAAK8B,IAAIE,aAAa,yBAM5Ed,GAAqBI,EAAM9F,IAAiD,IAA/B8F,EAAM9F,GAAe2D,MAAa,CAClF,IAAI8C,EAAUzD,GAAO,GAAI,QACzB0C,EAAoBe,GAAWA,EAAQD,aAAatO,EAAQiI,mBAQ9DjC,EAAY6H,EAAS7N,EAAQ+H,WAA2C,OAA9B8F,EAAS7N,EAAQ+H,SAA/D,CA2BA,GAvBK6F,EAAM9F,KACT8F,EAAM9F,GAAiB,CACrB2D,MAAOA,IAETA,KAEIqC,GAAmBF,EAAMC,SAAS7N,EAAQ+H,UAE5CuE,KAAKW,WAAU,WAEb,IAAIuB,EAAQrE,GAAKyD,EAAMa,WAAW,SAAUC,GAC1C,OAAOA,EAAEC,QAAUD,EAAEC,OAAOC,aAG1BJ,GAASA,EAAMG,OAAOC,UAAU5O,EAAQ+H,UAC1CpB,EAAK,6DAA6DrG,OAAON,EAAQ+H,QAAS,kKAQ7FuE,KAAKxE,GAAgB,CACxBwE,KAAKxE,IAAiB,EACtB,IAAI+G,EAASvC,KAAKwC,QAElB,MAAOD,GAAUA,IAAWjB,EACtB5H,EAAY6I,EAAO/G,MACrB+G,EAAO/G,IAAiB,GAG1B+G,EAASA,EAAOC,QAMhB3I,EAAW0H,EAAS7N,EAAQ+H,YAC9B8F,EAASkB,SAAWlB,EAASkB,UAAY,GACzClB,EAASkB,SAASC,UAAYnB,EAAS7N,EAAQ+H,SAE1CuE,KAAK2C,WAIR3C,KAAK4C,IAAI,gBAAgB,WACvB5C,KAAK6C,OAAO,aAAa,WACvB9F,EAAcrJ,EAASsM,KAAKqB,GAAU,kBAU1C3H,EAAY4H,EAAM9F,GAAe2B,eACnCmE,EAAM9F,GAAe2B,YAAc6C,KAAK2C,UAEnCrB,EAAM9F,GAAe2B,cACnBmE,EAAM9F,GAAesH,iBACxBxB,EAAM9F,GAAesH,gBAAiB,EACtC9C,KAAK4C,IAAI,oBAAoB,WAC3B,IAAItB,EAAQtB,KAAKqB,GAGbH,IACFI,EAAM9F,GAAe2D,MAAQzL,EAAQqI,cAM3CiE,KAAK4C,IAAI,gBAAgB,WACvB,IAAItB,EAAQtB,KAAKqB,GAEbC,EAAM9F,GAAe2B,cAMzBmE,EAAM9F,GAAe4B,cAAe,EAEpC4C,KAAKW,WAAU,WACb,IAAIoC,EAAuBzB,EAAM/D,QAAQC,UACrCiB,EAAOsE,EAAqBtE,KAC5BoC,EAAWkC,EAAqBlC,UAQvB,IAATpC,GAAuD,OAArC6C,EAAM9F,GAAe2B,aACzC6C,KAAKW,WAAU,WACb,OAAO5D,EAAcrJ,EAAS4N,EAAO,WAIzCA,EAAM9F,GAAe2B,aAAc,SAC5BmE,EAAM9F,GAAe4B,cAGvB1J,EAAQsP,yBAA2BnC,EAASC,iBAC/CV,GAAakB,UAKf5N,EAAQsP,yBACV5C,GAAakB,KAKnBtB,KAAK4C,IAAI,kBAAkB,WACzB,IAAIK,EAAQjD,KAMPA,KAAKwC,SAAY1C,GAAYE,eAI3BA,KAAKkD,aACZlD,KAAKW,WAAU,WACb,GAAKjN,EAAQuI,iBAAoBgH,EAAMnB,KAAQmB,EAAMnB,IAAIqB,aAMzD,IAAIC,EAAWC,aAAY,WACrBJ,EAAMnB,KAAkC,OAA3BmB,EAAMnB,IAAIqB,eAK3BG,cAAcF,GACdrG,EAAcrJ,EAASuP,EAAM3B,MAAO,gBACnC,SAbDvE,EAAcrJ,EAASuP,EAAM3B,MAAO,oBAiBtCtB,KAAK2C,WAMT1B,EAAsB5L,SAAQ,SAAUkO,GACtCnC,EAAOwB,IAAI,QAAQ5O,OAAOuP,IAAgB,WACxCxG,EAAcrJ,EAASsM,KAAKqB,GAAUkC,YAOhD,SAASC,GAAW9P,GASlB,OAPAA,EAAUiG,EAASjG,GAAWA,EAAU,GAOjC,CACL+H,QAAS/H,EAAQ,YAAcwI,EAAeT,QAC9CC,UAAWhI,EAAQ,cAAgBwI,EAAeR,UAClDC,aAAcjI,EAAQ,iBAAmBwI,EAAeP,aACxDC,aAAclI,EAAQ,iBAAmBwI,EAAeN,aACxDE,eAAgBpI,EAAQ,mBAAqBwI,EAAeJ,eAC5DD,oBAAqBnI,EAAQ,wBAA0BwI,EAAeL,oBACtEG,aAActC,EAAYhG,EAAQ,iBAAmBwI,EAAeF,aAAetI,EAAQ,gBAC3FuI,gBAAiBvC,EAAYhG,EAAQ,oBAAsBwI,EAAeD,gBAAkBvI,EAAQ,mBACpGqI,SAAUrI,EAAQ,aAAewI,EAAeH,SAChDiH,0BAA2BtP,EAAQ,4BAIvC,SAAS+P,GAAW/P,GAClB,IAAIgQ,EAAc,GAElB,IAAK,IAAItP,KAAOV,EACdgQ,EAAYtP,GAAOV,EAAQU,GAG7B,OAAOsP,EAGT,SAASC,GAAclK,EAAKrF,GAC1B,OAAKA,GAAQuF,EAASF,IAIjBjG,EAAQiG,EAAIrF,MACfqF,EAAIrF,GAAO,IAGNqF,GAPEjG,EAAQiG,GAAOA,EAAM,GAUhC,IAAImK,GAAkB,CAAC,CAAC,KAAM,SAAU,CAAC,KAAM,QAAS,CAAC,KAAM,QAAS,CAAC,KAAM,UAAW,CAAC,KAAM,WAC7FC,GAAkB,CAAC,CAAC,KAAM,KAAM,CAAC,KAAM,KAAM,CAAC,KAAM,KAAM,CAAC,KAAM,KAAO,CAAC,KAAM,MAEnF,SAASC,GAAOC,EAAMrQ,EAASsQ,EAAeC,GAC5C,IAAIrI,EAAelI,EAAQkI,aACvBsI,EAAwBF,EAAcG,SACtCA,OAAqC,IAA1BD,EAAmC,SAAUE,GAC1D,OAAOA,GACLF,EACAG,EAAU,GAEd,IAAK,IAAIjQ,KAAO2P,EAAM,CACpB,IAAIxR,EAAQwR,EAAK3P,GAEjB,GAAI+J,GAAS9B,EAAoBjI,GAC/BiQ,EAAQjQ,GAAO7B,MADjB,CAOA,IAAI+R,EAAalI,EAAkB,GAEnC,GAAI4H,EAAcM,IAAenG,GAAS6F,EAAcM,GAAalQ,GAEnEiQ,EAAQjQ,GAAO7B,MAFjB,CAMA,IAAIgS,EAAQR,EAAKnI,GAEjB,GAAI2I,IACFD,EAAalI,EAAkB,GAE3B4H,EAAcM,IAAeN,EAAcM,GAAYC,IAAUpG,GAAS6F,EAAcM,GAAYC,GAAQnQ,IAC9GiQ,EAAQjQ,GAAO7B,OAqBnB,GAhBIuH,EAASvH,GACX8R,EAAQjQ,GAAO+P,EAAS5R,GACfiB,EAAQjB,GACjB8R,EAAQjQ,GAAO7B,EAAM0B,KAAI,SAAUmQ,GACjC,OAAIxK,EAAawK,GACRN,GAAOM,EAAG1Q,EAASsQ,GAAe,GAGpCG,EAASC,MAETxK,EAAarH,GACtB8R,EAAQjQ,GAAO0P,GAAOvR,EAAOmB,EAASsQ,GAAe,GAErDK,EAAQjQ,GAAO7B,EAGb0R,EAAY,CACd,IAAIO,EAAaL,EAAS/P,GAEtBA,IAAQoQ,IACVH,EAAQG,GAAcH,EAAQjQ,UACvBiQ,EAAQjQ,OAKrB,OAAOiQ,EAET,SAASI,GAAe/Q,EAASqQ,EAAMW,GACrCA,EAAkBA,GAAmB,GAGrC,IAAIV,EAAgB,CAClBG,SAAU,SAAkB5R,GAC1B,OAAOmS,EAAgB7O,QAAO,SAAUvC,EAAKqR,GAC3C,OAAOrR,EAAIsR,QAAQD,EAAI,GAAIA,EAAI,MAC9BpS,KAeP,OAZA6J,EAAkB/G,SAAQ,SAAUiP,EAAYO,GAC9C,GAAc,IAAVA,EACFlB,GAAcI,EAAMO,QACf,GAAc,IAAVO,EACT,IAAK,IAAIzQ,KAAO2P,EAAKO,GACnBX,GAAcI,EAAKO,GAAalQ,GAIpC4P,EAAcM,GAAcP,EAAKO,MAG5BR,GAAOC,EAAMrQ,EAASsQ,GAG/B,SAASc,GAAc9H,EAAM+H,EAAYC,EAAUC,GACjD,IAAIC,EAAYlI,EAAKkI,UACjBrJ,EAAsBmB,EAAKnB,oBAC3BC,EAAiBkB,EAAKlB,eAE1B,OAAiB,IAAbkJ,IAAyD,IAApCD,EAAWlJ,KAKhCnC,EAAYsL,IAAaD,EAAWlJ,KACtCmJ,EAAWD,EAAWlJ,GACtBkJ,EAAWlJ,IAAuB,GAI/BmJ,GAMDtL,EAAYuL,KACdA,EAAQF,EAAWjJ,IAGrBiJ,EAAWjJ,GAAkBjC,EAAWmL,GAAYA,EAASlS,KAAKoS,EAAWD,GAASD,EAASJ,QAAQ,MAAOK,IACvG,WATEF,EAAWlJ,IACX,IAWX,SAASsJ,GAAYnI,EAAMlJ,EAAQC,GACjC,IAAImR,EAAYlI,EAAKkI,UACjBtJ,EAAeoB,EAAKpB,aACpBC,EAAsBmB,EAAKnB,oBAC3BC,EAAiBkB,EAAKlB,eAItB1G,EAAc,GAElB,OAAKtB,EAAOyD,QAAWxD,EAAOwD,QAI9BzD,EAAOuB,SAAQ,SAAU+P,EAAYC,GAEnC,GAAKD,EAAWxJ,GAAhB,CAKA,IAAI0J,EAAcrH,GAAUlK,GAAQ,SAAUwR,GAC5C,OAAOA,EAAK3J,KAAkBwJ,EAAWxJ,MAEvC4J,EAAazR,EAAOuR,GAExB,IAAqB,IAAjBA,EAAJ,CAQA,GAAIxJ,KAAkB0J,QAA6C9K,IAA/B8K,EAAW1J,IAAiC,cAAe0J,QAAuC9K,IAAzB8K,EAAWC,UAItH,OAHArQ,EAAY8B,KAAKkO,QAEjBrR,EAAO2R,OAAOJ,EAAa,GAM7B,GAAmC,OAA/BE,EAAW1J,IAAqD,OAAzB0J,EAAWC,UAAtD,CAOA,IAAIE,EAAiBP,EAAWvJ,GAEhC,GAAK8J,EAAL,CAIA,IAAIC,EAAiBJ,EAAW3J,GAEhC,IAAK+J,EASH,OAPAd,GAAc,CACZI,UAAWA,EACXrJ,oBAAqBA,EACrBC,eAAgBA,GACf0J,EAAYG,QAEfH,EAAWR,UAAW,GAInBQ,EAAW1J,IAEdgJ,GAAc,CACZI,UAAWA,EACXrJ,oBAAqBA,EACrBC,eAAgBA,GACf0J,OAAY9K,EAAW0K,EAAWtJ,UA/BrC/H,EAAO2R,OAAOJ,EAAa,QAlB3BlQ,EAAY8B,KAAKkO,QAVjBhQ,EAAY8B,KAAKkO,MA8DdhQ,EAAYpB,OAAOD,IApEjBqB,EAsEX,IAAIyQ,IAAe,EACnB,SAASC,GAAMhS,EAAQC,EAAQL,GAyB7B,OAxBAA,EAAUA,GAAW,QAIAgH,IAAjB3G,EAAO0G,cACF1G,EAAO0G,MAGhB6B,EAAsBjH,SAAQ,SAAU0Q,GACtC,GAAKhS,EAAOgS,GAIZ,IAAK,IAAI3R,KAAOL,EAAOgS,GACjB3R,KAAOL,EAAOgS,SAAqCrL,IAAzB3G,EAAOgS,GAAS3R,KACxC+J,GAAStB,EAAuBzI,KAASyR,KAC3CxL,EAAK,8IACLwL,IAAe,UAGV9R,EAAOgS,GAAS3R,OAItB,IAAUN,EAAQC,EAAQ,CAC/BuB,WAAY,SAAoB0Q,EAAGhN,GACjC,OAAOmM,GAAYzR,EAASsS,EAAGhN,MAKrC,SAASiN,GAAqBvS,EAASwR,GACrC,OAAOgB,GAAmBxS,GAAW,GAAIwR,EAAW1K,GAiBtD,SAAS0L,GAAmBxS,EAASwR,EAAWiB,GAG9C,GAFAA,EAASA,GAAU,GAEfjB,EAAUkB,UACZ,OAAOD,EAGTzS,EAAUA,GAAW,GACrB,IAAI2S,EAAW3S,EACX+H,EAAU4K,EAAS5K,QACnBiH,EAAYwC,EAAUxC,UACtBnB,EAAW2D,EAAU3D,SACrBY,EAAY+C,EAAU/C,UAE1B,GAAIZ,EAAS9F,GAAU,CAKrB,IAAI6K,EAAO5D,GAAanB,EAAS9F,GAI7B9B,EAAS2M,KACXH,EAASL,GAAMK,EAAQG,EAAM5S,IAiBjC,OAZIyO,EAAU5K,QACZ4K,EAAU9M,SAAQ,SAAUkR,GAGrBtG,GAAiBsG,KAItBJ,EAASD,GAAmBxS,EAAS6S,EAAgBJ,OAIlDA,EAGT,IAAIK,GAAY,GAChB,SAASC,GAAcC,GACrB,MAAsC,cAA9BA,GAAKpI,UAAUqI,WAEzB,SAASC,GAAYtH,EAAO7B,GACD,IAArBnG,UAAUC,SACZkG,EAAW6B,EACXA,EAAQ,IAGVkH,GAAUtP,KAAK,CAACoI,EAAO7B,IAEzB,SAASoJ,GAAa7J,EAAMoC,EAAMX,EAAMqI,GACtC,IAAIlL,EAAeoB,EAAKpB,aACpBmL,GAAmB,EAUvB,OATAtI,EAAKpJ,SAAQ,SAAUqJ,GAChBA,EAAI9C,IAAkB8C,EAAIjB,WAI/BsJ,GAAmB,EACnBH,GAAY,GAAG5S,OAAOoL,EAAM,UAAUpL,OAAO4H,EAAc,MAAO5H,OAAO0K,EAAI9C,GAAe,MAAQ8C,EAAIjB,cAGrGqJ,GAAqBC,EAInBC,KAHED,EAKX,SAASC,KACHP,KACFQ,KAOF3I,SAAS4I,mBAAqB,WAC5BD,MAGJ,SAASA,GAAeE,GACtBX,GAAUnR,SAAQ,SAAU+R,GAG1B,IAAI9H,EAAQ8H,EAAK,GACb3J,EAAW2J,EAAK,GAChBC,EAAW,GAAGrT,OAAOsL,EAAO,4BAC5BgI,EAAW,GAEVH,IACHG,EAAWpJ,GAAQE,GAAciJ,KAG/BF,GAAgBA,EAAaI,QAAQF,KACvCC,EAAW,CAACH,IAGdG,EAASjS,SAAQ,SAAUnB,GAKzB,IAAIA,EAAQsT,QAAZ,CAIA,IAAIC,EAAS,WAIXvT,EAAQsT,SAAU,EAMlB5H,GAAgB1L,EAAS,UACzBuJ,EAASvJ,IAWPA,EAAQwT,OACVD,IAIGvT,EAAQyT,UACXzT,EAAQyT,SAAU,EAClBzT,EAAQ0T,iBAAiB,OAAQH,WAQzC,IAgTII,GAhTAC,GAAe,GAQnB,SAASC,GAAgB5I,EAAOzL,EAAS0L,EAAM4I,EAAOtJ,GACpD,IAAI1B,EAAOtJ,GAAW,GAClBgI,EAAYsB,EAAKtB,UAEjBuM,EAAoBvJ,EAAIwJ,aAAaxM,GAErCuM,IACFH,GAAa1I,GAAQ+I,KAAKC,MAAMC,UAAUJ,IAC1CrI,GAAgBlB,EAAKhD,IAGvB,IAAI4K,EAAOwB,GAAa1I,IAAS,GAC7BkJ,EAAW,GAGf,IAAK,IAAIC,KAAQjC,OACI5L,IAAf4L,EAAKiC,IAAuBpJ,KAASmH,EAAKiC,KAC5CD,EAASpR,KAAKqR,GAETP,EAAMO,WACFjC,EAAKiC,GAAMpJ,IAKxB,IAAK,IAAIqJ,KAASR,EAAO,CACvB,IAAIS,EAAWnC,EAAKkC,GAEfC,GAAYA,EAAStJ,KAAW6I,EAAMQ,KACzCF,EAASpR,KAAKsR,QAEO9N,IAAjBsN,EAAMQ,KACRlC,EAAKkC,GAASlC,EAAKkC,IAAU,GAC7BlC,EAAKkC,GAAOrJ,GAAS6I,EAAMQ,KAKjC,IAAK,IAAIE,EAAK,EAAGC,EAAYL,EAAUI,EAAKC,EAAUpR,OAAQmR,IAAM,CAClE,IAAIE,EAASD,EAAUD,GACnBG,EAAYvC,EAAKsC,GACjBE,EAAa,GAEjB,IAAK,IAAIC,KAAUF,EACjBtV,MAAMX,UAAUsE,KAAKC,MAAM2R,EAAY,GAAG9U,OAAO6U,EAAUE,KAG7D,GAAID,EAAWvR,OAAQ,CACrB,IAAIyR,EAAY7K,GAAStB,EAAuB+L,IAAWE,EAAWG,KAAKC,SAAW,GAAKJ,EAAWtU,QAAO,SAAU4P,GACrH,YAAa1J,IAAN0J,KACN5E,KAAK,KACRd,EAAIyK,aAAaP,EAAQI,QAEzBpJ,GAAgBlB,EAAKkK,GAIzBd,GAAa1I,GAAQkH,EAQvB,SAAS8C,GAAY3O,IACdA,GAAmB,KAAVA,KAId6D,SAAS7D,MAAQA,GAYnB,SAAS4O,GAAUlK,EAAOzL,EAAS0L,EAAMX,EAAM6K,EAAMzK,GACnD,IAAI7B,EAAOtJ,GAAW,GAClBgI,EAAYsB,EAAKtB,UACjBE,EAAeoB,EAAKpB,aAEpB2N,EAAiB3M,EAAqBtE,QAC1CiR,EAAerS,KAAK0E,GACpB,IAAI4N,EAAc,GACdC,EAAe,CACjBtK,MAAOA,EACPzD,UAAWA,EACX0D,KAAMA,EACNxD,aAAcA,GAEZ8N,EAAkB,CACpBJ,KAAMvK,GAAcuK,EAAMG,GAC1B3K,MAAOC,GAAcF,EAAM4K,EAAc,CACvC3K,OAAO,IAETD,KAAME,GAAcF,EAAM4K,EAAc,CACtC5K,MAAM,KAIV,GAAIJ,EAAKlH,OAAS,EAAG,CAInB,IAAIoS,EAAQ,GACZlL,EAAOA,EAAKjK,QAAO,SAAUoV,GAC3B,IAAIC,EAAI1B,KAAK2B,UAAUF,GACnBG,GAAO5L,GAASwL,EAAOE,GAE3B,OADAF,EAAMzS,KAAK2S,GACJE,KAIXtL,EAAKpJ,SAAQ,SAAUqJ,GACrB,IAAIA,EAAIsL,KAAR,CAIA,IAAIC,EAAa3L,SAAS4L,cAAc9K,GAEnCV,EAAIyL,MACPF,EAAWd,aAAazN,EAAWyD,GAGrCxM,OAAOiC,KAAK8J,GAAKrJ,SAAQ,SAAUkT,GAEjC,IAAIpK,GAASxB,EAAe4L,GAI5B,GAAa,cAATA,EAKJ,GAAa,SAATA,EAKJ,GAAa,YAATA,EAWJ,GAAa,aAATA,EAAJ,CAQA,IAAIC,EAAQrK,GAASoL,EAAgBhB,GAAQ,QAAQvU,OAAOuU,GAAQA,EAEhE6B,EAAqBjM,GAAStB,EAAuB0L,GAEzD,IAAI6B,GAAuB1L,EAAI6J,GAA/B,CAIA,IAAIhW,EAAQ6X,EAAqB,GAAK1L,EAAI6J,GAC1C0B,EAAWd,aAAaX,EAAOjW,SAhB7B0X,EAAWxC,OAAS,WAClB,OAAO/I,EAAI6J,GAAM0B,SAZfA,EAAWI,WAEbJ,EAAWI,WAAWC,QAAU5L,EAAI4L,QAEpCL,EAAWM,YAAYjM,SAASkM,eAAe9L,EAAI4L,eATrDL,EAAWxE,UAAY0C,KAAK2B,UAAUpL,EAAI+L,WAL1CR,EAAWxE,UAAY/G,EAAI+G,aAuC/B,IAEIiF,EAFAC,EAAcjB,EAAgB9K,GAAeF,IAG7CkM,EAAkBD,EAAY1B,MAAK,SAAU4B,EAAahG,GAE5D,OADA6F,EAAgB7F,EACToF,EAAWa,YAAYD,MAG5BD,IAAoBF,GAAmC,IAAlBA,GACvCC,EAAYjF,OAAOgF,EAAe,GAElClB,EAAYtS,KAAK+S,OAGrB,IAAIU,EAAc,GAElB,IAAK,IAAII,KAASrB,EAChBnW,MAAMX,UAAUsE,KAAKC,MAAMwT,EAAajB,EAAgBqB,IAqB1D,OAjBAJ,EAAYtV,SAAQ,SAAUnB,GAC5BA,EAAQ8K,WAAWgM,YAAY9W,MAGjCsV,EAAYnU,SAAQ,SAAUnB,GACxBA,EAAQ8N,aAAa,aACvBnD,EAAK0L,YAAYrW,GAIfA,EAAQ8N,aAAa,cACvBnD,EAAKoM,aAAa/W,EAAS2K,EAAKqM,YAIlC5B,EAAKiB,YAAYrW,MAEZ,CACLiX,QAASR,EACTS,QAAS5B,GAUb,SAAS6B,GAAqBlM,EAAOzL,EAAS4X,GAC5C5X,EAAUA,GAAW,GACrB,IAAI2S,EAAW3S,EACXiI,EAAe0K,EAAS1K,aACxBI,EAAWsK,EAAStK,SAEpB0C,EAAO,GACPwD,EAAUzD,GAAOC,EAAM,QAE3B,GAAIU,IAAUpD,GAAYkG,EAAQD,aAAarG,GAAe,CAE5DiE,GAAgBqC,EAAStG,GAEzB,IAAI4P,GAAmB,EAWvB,OAVAhP,EAAqBlH,SAAQ,SAAU+J,GACjCkM,EAAQlM,IAASyH,GAAanT,EAAS0L,EAAMkM,EAAQlM,MACvDmM,GAAmB,MAInBA,GACFvE,MAGK,EAIT,IAAIwE,EAAY,GACZC,EAAc,GAElB,IAAK,IAAIrM,KAAQkM,EAEf,IAAInN,GAAS9B,EAAoB+C,GAIjC,GAAa,UAATA,GAMJ,GAAIjB,GAAS7B,EAAuB8C,GAApC,CACE,IAAIsM,EAAUtM,EAAKuM,OAAO,EAAG,GAC7B5D,GAAgB5I,EAAOzL,EAAS0L,EAAMkM,EAAQlM,GAAOZ,GAAOC,EAAMiN,SAKpE,GAAKlY,EAAQ8X,EAAQlM,IAArB,CAIA,IAAIwM,EAAavC,GAAUlK,EAAOzL,EAAS0L,EAAMkM,EAAQlM,GAAOZ,GAAOC,EAAM,QAASD,GAAOC,EAAM,SAC/F0M,EAAUS,EAAWT,QACrBC,EAAUQ,EAAWR,QAErBA,EAAQ7T,SACViU,EAAUpM,GAAQgM,EAClBK,EAAYrM,GAAQ+L,SArBpB/B,GAAYkC,EAAQ7Q,OAyBxB,MAAO,CACL+Q,UAAWA,EACXC,YAAaA,GAKjB,SAASI,GAAO5O,EAAQkC,EAAOzL,GAC7B,MAAO,CACLoY,IAAK,SAAajL,GAChB,OAAOkL,GAAY9O,EAAQkC,EAAOzL,EAASmN,IAE7ClB,OAAQ,WACN,OAAOqM,GAAe/O,EAAQkC,EAAOzL,KAI3C,SAASqY,GAAY9O,EAAQkC,EAAOzL,EAASmN,GAE3C,GAAI5D,GAAUA,EAAO6E,IACnB,OAAOuJ,GAAqBlM,EAAOzL,EAASmN,GAK9CgH,GAAeA,IAAgB,GAC/BA,GAAa1I,GAAS0B,EAExB,SAASmL,GAAe/O,EAAQkC,EAAOzL,GACrC,GAAIuJ,GAAUA,EAAO6E,IAAK,CACxB,IAGImK,EAHAxN,EAAO,GAEPyN,EAAYtT,EAA2B0D,GAG3C,IACE,IAAK4P,EAAUlT,MAAOiT,EAAQC,EAAU7T,KAAKY,MAAO,CAClD,IAAImG,EAAO6M,EAAM1Z,MACbmZ,EAAUtM,EAAKuM,OAAO,EAAG,GAC7B5D,GAAgB5I,EAAOzL,EAAS0L,EAAM,GAAIZ,GAAOC,EAAMiN,KAEzD,MAAOtS,GACP8S,EAAUhT,EAAEE,GACZ,QACA8S,EAAU/S,IAGZ,OAAOsG,GAAsB/L,EAASyL,GAGpC0I,GAAa1I,YACR0I,GAAa1I,GACpBgN,MAGJ,SAASC,KACP,OAAOvE,GAET,SAASsE,GAAkBE,IACrBA,GAAU1Z,OAAOiC,KAAKiT,IAActQ,SACtCsQ,QAAenN,GAYnB,SAAS4R,GAAY5Y,EAASqQ,EAAMW,EAAiBQ,GACnDxR,EAAUA,GAAW,GACrBgR,EAAkBA,GAAmB,GACrC,IAAI2B,EAAW3S,EACXkI,EAAeyK,EAASzK,aAyC5B,OAtCImI,EAAKtJ,QACPsJ,EAAKpJ,WAAaoJ,EAAKtJ,OAIrBsJ,EAAKnJ,eAAwC,OAAvBmJ,EAAKnJ,eAC7BkK,GAAc,CACZI,UAAWA,EACXpJ,eAAgB,SACfiI,EAAMA,EAAKnJ,cAAemJ,EAAKpJ,YAAc,IAK9CoJ,EAAK/I,OACP+I,EAAK/I,KAAOrI,OAAOiC,KAAKmP,EAAK/I,MAAMzD,OAAS,CAACwM,EAAK/I,MAAQ,IAGxD+I,EAAK7I,OAEP6I,EAAK7I,KAAO6I,EAAK7I,KAAK1G,QAAO,SAAU+X,EAAU1H,EAAOlN,GACtD,IAAI6U,IAAYD,EAAS3Q,GAEzB,IAAK4Q,EACH,OAAO,EAGT,IAAIC,EAAqB5H,IAAU5G,GAAUtG,GAAK,SAAU4N,GAC1D,OAAOA,EAAK3J,KAAkB2Q,EAAS3Q,MAEzC,OAAO6Q,KAGT1I,EAAK7I,KAAK7F,SAAQ,SAAUqX,GAC1B,OAAO5H,GAAcpR,EAASgZ,OAI3BjI,GAAe/Q,EAASqQ,EAAMW,GAcvC,SAASlH,GAAQP,EAAQvJ,GAGvB,GAFAA,EAAUA,GAAW,IAEhBuJ,EAAOzB,GAEV,OADAjB,IACO,GAIT,IAAIoS,EAAU1G,GAAqBvS,EAASuJ,GACxC4D,EAAWyL,GAAY5Y,EAASiZ,EAAS9I,GAAiB5G,GAC1DkC,EAAQlC,EAAOzB,GAAe2D,MAC9BV,EAAO4M,GAAqBlM,EAAOzL,EAASmN,GAE5CpC,GAAQ5E,EAAWgH,EAAS+L,WAC9B/L,EAAS+L,QAAQ/L,EAAUpC,EAAK+M,UAAW/M,EAAKgN,aAChDhN,EAAO,CACLoO,UAAWpO,EAAK+M,UAChBsB,YAAarO,EAAKgN,cAItB,IAAI5D,EAAeuE,KAEnB,GAAIvE,EAAc,CAChB,IAAK,IAAIkF,KAAmBlF,EAC1BwD,GAAqB0B,EAAiBrZ,EAASmU,EAAakF,WACrDlF,EAAakF,GAGtBZ,IAAkB,GAGpB,MAAO,CACLpM,GAAI9C,EACJ4D,SAAUA,EAEVpC,KAAMA,GAYV,SAASuO,GAAmBtZ,EAAS0L,EAAMkH,EAAMtJ,GAC/C,IAAIiQ,EAAkBjQ,EAAKiQ,gBAEvBhO,EAAQvL,GAAW,GACnBgI,EAAYuD,EAAMvD,UAClBC,EAAesD,EAAMtD,aAErBuR,EAAe,GAEnB,IAAK,IAAI3E,KAAQjC,EAAM,CACrB,IAAImC,EAAWnC,EAAKiC,GAChBO,EAAa,GAEjB,IAAK,IAAI3J,KAASsJ,EAChBK,EAAW5R,KAAKC,MAAM2R,EAAYpR,EAAmB,GAAG1D,OAAOyU,EAAStJ,MAGtE2J,EAAWvR,SACb2V,GAAgBrQ,EAAsBsB,SAASoK,IAASO,EAAWG,KAAKC,SAAW,GAAGlV,OAAOuU,GAAQ,GAAGvU,OAAOuU,EAAM,MAAOvU,OAAO8U,EAAWtJ,KAAK,KAAM,KACzJ0N,GAAgB,KAQpB,OAJIA,IACFA,GAAgB,GAAGlZ,OAAO0H,EAAW,MAAO1H,OAAOmZ,UAAUhF,KAAK2B,UAAUxD,IAAQ,MAGzE,cAATlH,GAAwB6N,EACnB,GAAGjZ,OAAO2H,GAAc3H,OAAOkZ,EAAe,IAAM,IAAIlZ,OAAOkZ,GAGjEA,EAUT,SAASE,GAAe1Z,EAAS0L,EAAMkH,EAAM+G,GAC3C,IAAIrQ,EAAOqQ,GAAoB,GAC3BC,EAAKtQ,EAAKsQ,GAEd,OAAKhH,EAIE,IAAItS,OAAOoL,EAAM,KAAKpL,OAAOsS,EAAM,MAAMtS,OAAOoL,EAAM,KAAKpL,OAAOsZ,EAAK,KAAO,IAH5E,GAcX,SAASC,GAAa7Z,EAAS0L,EAAMX,EAAM4O,GACzC,IAAIrQ,EAAOtJ,GAAW,GAClBqI,EAAWiB,EAAKjB,SAChBL,EAAYsB,EAAKtB,UACjBE,EAAeoB,EAAKpB,aAEpBqD,EAAQoO,GAAoB,GAC5BlO,EAAQF,EAAME,MACdqO,EAAcvO,EAAMwO,MACpBA,OAAwB,IAAhBD,GAAgCA,EACxCE,EAAazO,EAAMJ,KACnBA,OAAsB,IAAf6O,GAAgCA,EACvCC,EAAc1O,EAAMH,MACpBA,OAAwB,IAAhB6O,GAAiCA,EACzCC,EAAW3O,EAAMqO,GACjBA,OAAkB,IAAbM,GAA8BA,EAEnCrE,EAAiB,CAAC3N,GAAc5H,OAAO0D,EAAmBkF,IAE9D,OAAK6B,GAASA,EAAKlH,OAKZkH,EAAK5I,QAAO,SAAUgY,EAASnP,GACpC,GAAIA,EAAIsL,KACN,OAAO6D,EAGT,IAAIC,EAAUnb,OAAOiC,KAAK8J,GAE1B,GAAuB,IAAnBoP,EAAQvW,OACV,OAAOsW,EAGT,GAAI3E,QAAQxK,EAAIG,QAAUA,GAAQqK,QAAQxK,EAAII,SAAWA,EACvD,OAAO+O,EAGT,IAAI7F,EAAQtJ,EAAIyL,KAAO,GAAK,IAAInW,OAAO0H,EAAW,MAAO1H,OAAOmL,KAAoB,IAAVsO,EAAkB,IAAM1R,GAAW,KAE7G,IAAK,IAAIwM,KAAQ7J,EAEf,IAAIhC,EAA2ByB,SAASoK,KAAS5L,EAAcwB,SAASoK,GAIxE,GAAa,aAATA,EAAJ,CAMA,IAAIwF,EAAS,GAETxE,EAAepL,SAASoK,KAC1BwF,EAAS,SAGX,IAAIC,GAAiBD,GAAUlR,EAAsBsB,SAASoK,GAE1DyF,IAAkBtP,EAAI6J,KAI1BP,GAAS,IAAIhU,OAAO+Z,GAAQ/Z,OAAOuU,IAASyF,EAAgB,GAAK,KAAMha,OAAO0K,EAAI6J,GAAO,YAjBvFP,GAAS,0BAoBb,IAAIyC,EAAO,GAEP/L,EAAI+L,OACNA,EAAOtC,KAAK2B,UAAUpL,EAAI+L,OAI5B,IAAIwD,EAAUvP,EAAI+G,WAAa/G,EAAI4L,SAAWG,EAG1CyD,GAAa1R,EAAkB2B,SAASiB,GAExC+O,EAAaD,GAAazR,EAAqB0B,SAASiB,GAE5D,MAAO,GAAGpL,OAAO6Z,EAAS,KAAK7Z,OAAOoL,GAAMpL,OAAOgU,GAAOhU,QAAQma,GAAcD,EAAY,IAAM,GAAI,MAAQC,EAAa,GAAGna,OAAOia,EAAS,MAAMja,OAAOoL,EAAM,KAAO,KAAOkO,EAAK,KAAO,MAC1L,IA/DM,GA0EX,SAASc,GAAuB1a,EAASmN,EAAUwN,GACjD,IAAIC,EAAiB,CACnBhI,KAAMzF,EACN0N,eAAW7T,EACX8T,QAAS,SAAiBrP,EAAO0B,GAC/Bb,KAAKuO,UAAYvO,KAAKuO,WAAa,GACnCvO,KAAKuO,UAAUpP,GAAS0B,GAE1B4N,cAAe,SAAuBC,GACpC,IAAIC,EAAI3O,KAAK4O,UAEb,OAAQF,EAAK7P,MAAQ6P,EAAK5P,MAAQ,GAAK6P,EAAElU,MAAMoU,KAAKH,IAASC,EAAEzT,KAAK2T,KAAKH,GAAQC,EAAE3T,KAAK6T,KAAKH,GAAQC,EAAE1T,KAAK4T,KAAKH,GAAQC,EAAExT,MAAM0T,KAAKH,GAAQC,EAAEvT,OAAOyT,KAAKH,GAAQC,EAAEtT,SAASwT,KAAKH,IAEtLE,UAAW,CACTtF,KAAM,SAAcgE,GAClB,OAAOgB,EAAeG,cAAcrX,EAAeA,EAAe,GAAIiX,GAAsB,GAAI,CAC9Ff,GAAIA,MAGRwB,YAAa,SAAqBxB,GAChC,OAAOgB,EAAeG,cAAcrX,EAAeA,EAAe,GAAIiX,GAAsB,GAAI,CAC9Ff,GAAIA,EACJxO,OAAO,MAGXiQ,WAAY,SAAoBzB,GAC9B,OAAOgB,EAAeG,cAAcrX,EAAeA,EAAe,GAAIiX,GAAsB,GAAI,CAC9Ff,GAAIA,EACJzO,MAAM,QAMVmQ,EAAQ,SAAe5P,GACzB,GAAI/C,EAAmB8B,SAASiB,GAC9B,MAAO,WAGTkP,EAAeM,UAAUxP,GAAQ,CAC/ByP,KAAM,SAAcI,GAClB,IAAIhC,GAAoC,IAAlBgC,EAKtB,GAJAA,EAAgB7X,EAAeA,EAAe,CAC5C6V,gBAAiBA,GAChBoB,GAAsBY,GAEZ,UAAT7P,EACF,OAAOgO,GAAe1Z,EAAS0L,EAAMkP,EAAehI,KAAKlH,GAAO6P,GAGlE,GAAI3S,EAAsB6B,SAASiB,GAAO,CACxC,IAAI8P,EAAgB,GAChB5I,EAAOgI,EAAehI,KAAKlH,GAE/B,GAAIkH,EAAM,CACR,IAAInH,GAAgC,IAAxB8P,EAAcxB,MAAkB,IAAM/Z,EAAQqI,SAE1D,IAAK,IAAIwM,KAAQjC,EACf4I,EAAc3G,GAAQ/R,EAAgB,GAAI2I,EAAOmH,EAAKiC,IAI1D,GAAI+F,EAAeC,UACjB,IAAK,IAAIxF,KAAUuF,EAAeC,UAAW,CAC3C,IAAIY,EAAQb,EAAeC,UAAUxF,GAAQ3J,GAE7C,GAAI+P,EACF,IAAK,IAAI3G,KAAS2G,EAChBD,EAAc1G,GAASpR,EAAeA,EAAe,GAAI8X,EAAc1G,IAAS,GAAIhS,EAAgB,GAAIuS,EAAQoG,EAAM3G,KAM9H,OAAOwE,GAAmBtZ,EAAS0L,EAAM8P,EAAeD,GAG1D,IAAI3U,EAAMiT,GAAa7Z,EAAS0L,EAAMkP,EAAehI,KAAKlH,GAAO6P,GAEjE,GAAIX,EAAeC,UACjB,IAAK,IAAIa,KAAWd,EAAeC,UAAW,CAC5C,IAAIc,EAASf,EAAeC,UAAUa,GAAShQ,GAC3CkQ,EAAW/B,GAAa7Z,EAAS0L,EAAMiQ,EAAQjY,EAAe,CAChE+H,MAAOiQ,GACNH,IACH3U,EAAM,GAAGtG,OAAOsG,GAAKtG,OAAOsb,GAIhC,OAAOhV,KAKb,IAAK,IAAI8E,KAAQ5E,EACJwU,EAAM5P,GAKnB,OAAOkP,EAWT,SAASiB,GAAOtS,EAAQvJ,EAASub,GAE/B,IAAKhS,EAAOzB,GAEV,OADAjB,IACO,GAIT,IAAIoS,EAAU1G,GAAqBvS,EAASuJ,GACxC4D,EAAWyL,GAAY5Y,EAASiZ,EAAS/I,GAAiB3G,GAE1DqR,EAAiBF,GAAuB1a,EAASmN,EAAUoO,GAE3DpH,EAAeuE,KAEnB,GAAIvE,EAAc,CAChB,IAAK,IAAIkF,KAAmBlF,EAC1ByG,EAAeE,QAAQzB,EAAiBlF,EAAakF,WAC9ClF,EAAakF,GAGtBZ,IAAkB,GAGpB,OAAOmC,EAAeM,UAGxB,SAASrR,GAAM7J,GACbA,EAAUA,GAAW,GAOrB,IAAI4N,EAAQtB,KAAKsB,MACjB,MAAO,CACLmC,WAAY,WACV,OAAOA,GAAW/P,IAEpB8P,WAAY,SAAoBgM,GAC9B,IAAIC,EAAgB,0BAEhBD,GAAcA,EAAWC,KAC3B/b,EAAQsP,0BAA4BwM,EAAWC,GAC/CrP,GAAakB,IAGf,IAAIoO,EAAkB,eAEtB,GAAIF,GAAcE,KAAmBF,EAAY,CAC/C,IAAIxT,EAAe2T,SAASH,EAAWE,IAElCE,MAAM5T,KACTtI,EAAQsI,aAAeA,GAI3B,IAAI6T,EAAqB,kBAErBL,GAAcK,KAAsBL,IACtC9b,EAAQuI,kBAAoBuT,EAAWK,KAG3CrS,QAAS,WACP,OAAOA,GAAQ8D,EAAO5N,IAExB6b,OAAQ,SAAkBN,GACxB,OAAQM,GAAOjO,EAAO5N,EAASub,IAEjC/O,MAAO,WACL,OAAOA,GAAMoB,IAEfnB,OAAQ,WACN,OAAOA,GAAOmB,IAEhBuK,OAAQ,SAAkB1M,GACxB,OAAO0M,GAAOvK,EAAOnC,EAAOzL,KAKlC,SAASoc,GAASnD,EAASjZ,GACzBA,EAAU8P,GAAW9P,GACrB,IAAImN,EAAWyL,GAAY5Y,EAASiZ,EAAS/I,IACzC0K,EAAiBF,GAAuB1a,EAASmN,GACrD,OAAOyN,EAAeM,UAQxB,SAASmB,GAAQ/O,EAAKtN,GAChBsN,EAAIgP,sBAIRhP,EAAIgP,qBAAsB,EAC1Btc,EAAU8P,GAAW9P,GAErBsN,EAAIpO,UAAU2K,MAAQ,WACpB,OAAOA,GAAMzK,KAAKkN,KAAMtM,IAG1BsN,EAAIiP,MAAMlP,GAAYC,EAAKtN,KAG7B,IAAImR,GAAQ,CACV1O,QAASA,EACT4Z,QAASA,GACTD,SAAU,SAAoBjP,EAAUnN,GACtC,OAAQoc,GAASjP,EAAUnN,IAE7BoM,YAAaA,IAGA,Y,0DC59Df,yBAAIoQ,EAAsC,WAStC,OARAA,EAAWvd,OAAOwd,QAAU,SAASnK,GACjC,IAAK,IAAIhN,EAAG3B,EAAI,EAAGgB,EAAIf,UAAUC,OAAQF,EAAIgB,EAAGhB,IAE5C,IAAK,IAAI+Y,KADTpX,EAAI1B,UAAUD,GACA2B,EAAOrG,OAAOC,UAAUsC,eAAepC,KAAKkG,EAAGoX,KACzDpK,EAAEoK,GAAKpX,EAAEoX,IAEjB,OAAOpK,GAEJkK,EAAS/Y,MAAM6I,KAAM1I,YAG5B+Y,EAAkB,WAClB,SAASA,KA+ET,OA7EAA,EAAeC,MAAQ,SAAUC,EAAS9V,EAAO2E,EAAM1L,GACnD,OAAO,IAAI8c,SAAQ,SAAUC,GACzB,IAAIC,EAAeR,EAASA,EAAS,GAAIG,EAAeM,eAAgBjd,GACxEgd,EAAajW,MAAQA,GAASiW,EAAajW,MAC3CiW,EAAa7B,KAAO0B,GAAWG,EAAa7B,KAC5C6B,EAAatR,KAAOA,GAAQsR,EAAatR,KACzC,IAAKwR,KAAKF,GACLG,MAAK,WACNJ,GAAQ,MAEPK,OAAM,WACPL,GAAQ,UAIpBJ,EAAeU,QAAU,SAAUR,EAAS9V,EAAO2E,EAAM1L,GACrD,OAAO,IAAI8c,SAAQ,SAAUC,EAASO,GAClC,IAAIN,EAAeR,EAASA,EAAS,GAAIG,EAAeM,eAAgBjd,GACxEgd,EAAajW,MAAQA,GAASiW,EAAajW,MAC3CiW,EAAa7B,KAAO0B,GAAWG,EAAa7B,KAC5C6B,EAAatR,KAAOA,GAAQsR,EAAatR,KACzCsR,EAAaO,kBAAmB,EAChC,IAAKL,KAAKF,GACLG,MAAK,SAAUK,IACA,IAAZA,EAAE3e,MACFke,GAAQ,GAGRO,OAEHF,OAAM,WAAc,OAAOE,WAGxCX,EAAec,OAAS,SAAUZ,EAASa,EAAa3W,EAAO2E,EAAM1L,GACjE,OAAO,IAAI8c,SAAQ,SAAUC,EAASO,GAClC,IAAIN,EAAeR,EAASA,EAAS,GAAIG,EAAeM,eAAgBjd,GACxEgd,EAAajW,MAAQA,GAASiW,EAAajW,MAC3CiW,EAAaW,WAAaD,EAC1BV,EAAa7B,KAAO0B,GAAWG,EAAa7B,KAC5C6B,EAAatR,KAAOA,GAAQsR,EAAatR,KACzCsR,EAAaO,kBAAmB,EAChCP,EAAaY,MAAQZ,EAAaY,OAAS,OAC3C,IAAKV,KAAKF,GACLG,MAAK,SAAUK,GACZA,EAAE3e,MACFke,EAAQS,EAAE3e,OAGVye,OAEHF,OAAM,WACP,OAAOE,WAInBX,EAAeO,KAAO,SAAUld,GAC5B,OAAO,IAAKkd,KAAKld,IAErB2c,EAAeN,QAAU,SAAU/O,EAAKtN,GACpC2c,EAAeM,cAAgBjd,EAC/BsN,EAAIsP,MAAQD,EAAeC,MAC3BtP,EAAI+P,QAAUV,EAAeU,QAC7B/P,EAAImQ,OAASd,EAAec,OAC5BnQ,EAAI4P,KAAOP,EAAeO,KACrB5P,EAAIpO,UAAUsC,eAAe,YAC9B8L,EAAIpO,UAAU2e,OAASlB,EAAeC,OAErCtP,EAAIpO,UAAUsC,eAAe,cAC9B8L,EAAIpO,UAAU4e,SAAWnB,EAAeU,SAEvC/P,EAAIpO,UAAUsC,eAAe,aAC9B8L,EAAIpO,UAAU6e,QAAUpB,EAAec,QAEtCnQ,EAAIpO,UAAUsC,eAAe,WAC9B8L,EAAIpO,UAAU8e,MAAQrB,EAAeO,OAGtCP,EAhFU,GAmFN,U;;;;;IClFf,SAAShW,EAAMsX,EAAWpB,GACpB,EAKN,SAASqB,EAAQC,EAAGC,GAClB,IAAK,IAAI1d,KAAO0d,EACdD,EAAEzd,GAAO0d,EAAE1d,GAEb,OAAOyd,EAKT,IAAIE,EAAkB,WAClBC,EAAwB,SAAU5P,GAAK,MAAO,IAAMA,EAAE6P,WAAW,GAAGpf,SAAS,KAC7Eqf,EAAU,OAKVC,EAAS,SAAU7X,GAAO,OAAO8X,mBAAmB9X,GACnDsK,QAAQmN,EAAiBC,GACzBpN,QAAQsN,EAAS,MAEtB,SAASG,EAAQ/X,GACf,IACE,OAAOgY,mBAAmBhY,GAC1B,MAAOlB,GACH,EAIN,OAAOkB,EAGT,SAASiY,EACPjT,EACAkT,EACAC,QAEoB,IAAfD,IAAwBA,EAAa,IAE1C,IACIE,EADAtK,EAAQqK,GAAeE,EAE3B,IACED,EAActK,EAAM9I,GAAS,IAC7B,MAAOpG,GAEPwZ,EAAc,GAEhB,IAAK,IAAIte,KAAOoe,EAAY,CAC1B,IAAIjgB,EAAQigB,EAAWpe,GACvBse,EAAYte,GAAOb,MAAMC,QAAQjB,GAC7BA,EAAM0B,IAAI2e,GACVA,EAAoBrgB,GAE1B,OAAOmgB,EAGT,IAAIE,EAAsB,SAAUrgB,GAAS,OAAiB,MAATA,GAAkC,kBAAVA,EAAqBA,EAAQsgB,OAAOtgB,IAEjH,SAASogB,EAAYrT,GACnB,IAAIyK,EAAM,GAIV,OAFAzK,EAAQA,EAAMwT,OAAOlO,QAAQ,YAAa,IAErCtF,GAILA,EAAMyT,MAAM,KAAK1d,SAAQ,SAAU2d,GACjC,IAAIC,EAAQD,EAAMpO,QAAQ,MAAO,KAAKmO,MAAM,KACxC3e,EAAMie,EAAOY,EAAMC,SACnB5f,EAAM2f,EAAM1b,OAAS,EAAI8a,EAAOY,EAAMzT,KAAK,MAAQ,UAEtC9E,IAAbqP,EAAI3V,GACN2V,EAAI3V,GAAOd,EACFC,MAAMC,QAAQuW,EAAI3V,IAC3B2V,EAAI3V,GAAK8C,KAAK5D,GAEdyW,EAAI3V,GAAO,CAAC2V,EAAI3V,GAAMd,MAInByW,GAjBEA,EAoBX,SAASoJ,EAAgB9c,GACvB,IAAI0T,EAAM1T,EACN1D,OAAOiC,KAAKyB,GACXpC,KAAI,SAAUG,GACb,IAAId,EAAM+C,EAAIjC,GAEd,QAAYsG,IAARpH,EACF,MAAO,GAGT,GAAY,OAARA,EACF,OAAO6e,EAAO/d,GAGhB,GAAIb,MAAMC,QAAQF,GAAM,CACtB,IAAI6S,EAAS,GAWb,OAVA7S,EAAI+B,SAAQ,SAAU+d,QACP1Y,IAAT0Y,IAGS,OAATA,EACFjN,EAAOjP,KAAKib,EAAO/d,IAEnB+R,EAAOjP,KAAKib,EAAO/d,GAAO,IAAM+d,EAAOiB,QAGpCjN,EAAO3G,KAAK,KAGrB,OAAO2S,EAAO/d,GAAO,IAAM+d,EAAO7e,MAEnCkB,QAAO,SAAUoV,GAAK,OAAOA,EAAErS,OAAS,KACxCiI,KAAK,KACN,KACJ,OAAOuK,EAAO,IAAMA,EAAO,GAK7B,IAAIsJ,EAAkB,OAEtB,SAASC,EACPC,EACAC,EACAC,EACApT,GAEA,IAAI8S,EAAiB9S,GAAUA,EAAO3M,QAAQyf,eAE1C7T,EAAQkU,EAASlU,OAAS,GAC9B,IACEA,EAAQ3L,EAAM2L,GACd,MAAOpG,IAET,IAAIwa,EAAQ,CACVnb,KAAMib,EAASjb,MAASgb,GAAUA,EAAOhb,KACzC2C,KAAOqY,GAAUA,EAAOrY,MAAS,GACjCyY,KAAMH,EAASG,MAAQ,IACvBC,KAAMJ,EAASI,MAAQ,GACvBtU,MAAOA,EACPuU,OAAQL,EAASK,QAAU,GAC3BC,SAAUC,EAAYP,EAAUL,GAChCa,QAAST,EAASU,EAAYV,GAAU,IAK1C,OAHIE,IACFC,EAAMD,eAAiBM,EAAYN,EAAgBN,IAE9CxgB,OAAOuhB,OAAOR,GAGvB,SAAS/f,EAAOpB,GACd,GAAIgB,MAAMC,QAAQjB,GAChB,OAAOA,EAAM0B,IAAIN,GACZ,GAAIpB,GAA0B,kBAAVA,EAAoB,CAC7C,IAAIwX,EAAM,GACV,IAAK,IAAI3V,KAAO7B,EACdwX,EAAI3V,GAAOT,EAAMpB,EAAM6B,IAEzB,OAAO2V,EAEP,OAAOxX,EAKX,IAAI4hB,EAAQb,EAAY,KAAM,CAC5BK,KAAM,MAGR,SAASM,EAAaV,GACpB,IAAIxJ,EAAM,GACV,MAAOwJ,EACLxJ,EAAIqK,QAAQb,GACZA,EAASA,EAAOhR,OAElB,OAAOwH,EAGT,SAASgK,EACPM,EACAC,GAEA,IAAIX,EAAOU,EAAIV,KACXrU,EAAQ+U,EAAI/U,WAAsB,IAAVA,IAAmBA,EAAQ,IACvD,IAAIsU,EAAOS,EAAIT,UAAoB,IAATA,IAAkBA,EAAO,IAEnD,IAAI9J,EAAYwK,GAAmBnB,EACnC,OAAQQ,GAAQ,KAAO7J,EAAUxK,GAASsU,EAG5C,SAASW,EAAa1C,EAAGC,GACvB,OAAIA,IAAMqC,EACDtC,IAAMC,IACHA,IAEDD,EAAE8B,MAAQ7B,EAAE6B,KAEnB9B,EAAE8B,KAAK/O,QAAQyO,EAAiB,MAAQvB,EAAE6B,KAAK/O,QAAQyO,EAAiB,KACxExB,EAAE+B,OAAS9B,EAAE8B,MACbY,EAAc3C,EAAEvS,MAAOwS,EAAExS,UAElBuS,EAAEtZ,OAAQuZ,EAAEvZ,QAEnBsZ,EAAEtZ,OAASuZ,EAAEvZ,MACbsZ,EAAE+B,OAAS9B,EAAE8B,MACbY,EAAc3C,EAAEvS,MAAOwS,EAAExS,QACzBkV,EAAc3C,EAAEgC,OAAQ/B,EAAE+B,UAOhC,SAASW,EAAe3C,EAAGC,GAKzB,QAJW,IAAND,IAAeA,EAAI,SACb,IAANC,IAAeA,EAAI,KAGnBD,IAAMC,EAAK,OAAOD,IAAMC,EAC7B,IAAI2C,EAAQ9hB,OAAOiC,KAAKid,GACpB6C,EAAQ/hB,OAAOiC,KAAKkd,GACxB,OAAI2C,EAAMld,SAAWmd,EAAMnd,QAGpBkd,EAAME,OAAM,SAAUvgB,GAC3B,IAAIwgB,EAAO/C,EAAEzd,GACTygB,EAAO/C,EAAE1d,GAEb,OAAY,MAARwgB,GAAwB,MAARC,EAAuBD,IAASC,EAEhC,kBAATD,GAAqC,kBAATC,EAC9BL,EAAcI,EAAMC,GAEtBhC,OAAO+B,KAAU/B,OAAOgC,MAInC,SAASC,EAAiBC,EAASjhB,GACjC,OAGQ,IAFNihB,EAAQpB,KAAK/O,QAAQyO,EAAiB,KAAK2B,QACzClhB,EAAO6f,KAAK/O,QAAQyO,EAAiB,SAErCvf,EAAO8f,MAAQmB,EAAQnB,OAAS9f,EAAO8f,OACzCqB,EAAcF,EAAQzV,MAAOxL,EAAOwL,OAIxC,SAAS2V,EAAeF,EAASjhB,GAC/B,IAAK,IAAIM,KAAON,EACd,KAAMM,KAAO2gB,GACX,OAAO,EAGX,OAAO,EAGT,SAASG,EAAoBxB,GAC3B,IAAK,IAAIrc,EAAI,EAAGA,EAAIqc,EAAMM,QAAQzc,OAAQF,IAAK,CAC7C,IAAIkc,EAASG,EAAMM,QAAQ3c,GAC3B,IAAK,IAAIkB,KAAQgb,EAAO4B,UAAW,CACjC,IAAIC,EAAW7B,EAAO4B,UAAU5c,GAC5B8c,EAAM9B,EAAO+B,WAAW/c,GAC5B,GAAK6c,GAAaC,EAAlB,QACO9B,EAAO+B,WAAW/c,GACzB,IAAK,IAAIgd,EAAM,EAAGA,EAAMF,EAAI9d,OAAQge,IAC7BH,EAASI,mBAAqBH,EAAIE,GAAKH,MAMpD,IAAIK,EAAO,CACTld,KAAM,aACNmd,YAAY,EACZC,MAAO,CACLpd,KAAM,CACJ6G,KAAMyT,OACN+C,QAAS,YAGbC,OAAQ,SAAiB7gB,EAAGqf,GAC1B,IAAIsB,EAAQtB,EAAIsB,MACZG,EAAWzB,EAAIyB,SACfvT,EAAS8R,EAAI9R,OACb+D,EAAO+N,EAAI/N,KAGfA,EAAKyP,YAAa,EAIlB,IAAIC,EAAIzT,EAAO0T,eACX1d,EAAOod,EAAMpd,KACbmb,EAAQnR,EAAO2T,OACfC,EAAQ5T,EAAO6T,mBAAqB7T,EAAO6T,iBAAmB,IAI9DC,EAAQ,EACRC,GAAW,EACf,MAAO/T,GAAUA,EAAOgU,cAAgBhU,EAAQ,CAC9C,IAAIiU,EAAYjU,EAAOF,OAASE,EAAOF,OAAOiE,KAAO,GACjDkQ,EAAUT,YACZM,IAEEG,EAAUC,WAAalU,EAAOmU,iBAAmBnU,EAAO6D,YAC1DkQ,GAAW,GAEb/T,EAASA,EAAOC,QAKlB,GAHA8D,EAAKqQ,gBAAkBN,EAGnBC,EAAU,CACZ,IAAIM,EAAaT,EAAM5d,GACnBse,EAAkBD,GAAcA,EAAW1R,UAC/C,OAAI2R,GAGED,EAAWE,aACbC,EAAgBF,EAAiBvQ,EAAMsQ,EAAWlD,MAAOkD,EAAWE,aAE/Dd,EAAEa,EAAiBvQ,EAAMwP,IAGzBE,IAIX,IAAIhC,EAAUN,EAAMM,QAAQqC,GACxBnR,EAAY8O,GAAWA,EAAQgD,WAAWze,GAG9C,IAAKyb,IAAY9O,EAEf,OADAiR,EAAM5d,GAAQ,KACPyd,IAITG,EAAM5d,GAAQ,CAAE2M,UAAWA,GAI3BoB,EAAK2Q,sBAAwB,SAAUlX,EAAIzM,GAEzC,IAAIyhB,EAAUf,EAAQmB,UAAU5c,IAE7BjF,GAAOyhB,IAAYhV,IAClBzM,GAAOyhB,IAAYhV,KAErBiU,EAAQmB,UAAU5c,GAAQjF,KAM5BgT,EAAK4Q,OAAS5Q,EAAK4Q,KAAO,KAAKC,SAAW,SAAUniB,EAAGoiB,GACvDpD,EAAQmB,UAAU5c,GAAQ6e,EAAMC,mBAKlC/Q,EAAK4Q,KAAKI,KAAO,SAAUF,GACrBA,EAAM9Q,KAAKmQ,WACbW,EAAMC,mBACND,EAAMC,oBAAsBrD,EAAQmB,UAAU5c,KAE9Cyb,EAAQmB,UAAU5c,GAAQ6e,EAAMC,mBAMlCnC,EAAmBxB,IAGrB,IAAIoD,EAAc9C,EAAQ2B,OAAS3B,EAAQ2B,MAAMpd,GAUjD,OARIue,IACFlF,EAAOuE,EAAM5d,GAAO,CAClBmb,MAAOA,EACPoD,YAAaA,IAEfC,EAAgB7R,EAAWoB,EAAMoN,EAAOoD,IAGnCd,EAAE9Q,EAAWoB,EAAMwP,KAI9B,SAASiB,EAAiB7R,EAAWoB,EAAMoN,EAAOoD,GAEhD,IAAIS,EAAcjR,EAAKqP,MAAQ6B,EAAa9D,EAAOoD,GACnD,GAAIS,EAAa,CAEfA,EAAcjR,EAAKqP,MAAQ/D,EAAO,GAAI2F,GAEtC,IAAIvP,EAAQ1B,EAAK0B,MAAQ1B,EAAK0B,OAAS,GACvC,IAAK,IAAI5T,KAAOmjB,EACTrS,EAAUyQ,OAAWvhB,KAAO8Q,EAAUyQ,QACzC3N,EAAM5T,GAAOmjB,EAAYnjB,UAClBmjB,EAAYnjB,KAM3B,SAASojB,EAAc9D,EAAOjS,GAC5B,cAAeA,GACb,IAAK,YACH,OACF,IAAK,SACH,OAAOA,EACT,IAAK,WACH,OAAOA,EAAOiS,GAChB,IAAK,UACH,OAAOjS,EAASiS,EAAMG,YAASnZ,EACjC,QACM,GAYV,SAAS+c,EACPC,EACA1c,EACA2c,GAEA,IAAIC,EAAYF,EAASG,OAAO,GAChC,GAAkB,MAAdD,EACF,OAAOF,EAGT,GAAkB,MAAdE,GAAmC,MAAdA,EACvB,OAAO5c,EAAO0c,EAGhB,IAAII,EAAQ9c,EAAK+X,MAAM,KAKlB4E,GAAWG,EAAMA,EAAMvgB,OAAS,IACnCugB,EAAMC,MAKR,IADA,IAAIC,EAAWN,EAAS9S,QAAQ,MAAO,IAAImO,MAAM,KACxC1b,EAAI,EAAGA,EAAI2gB,EAASzgB,OAAQF,IAAK,CACxC,IAAI4gB,EAAUD,EAAS3gB,GACP,OAAZ4gB,EACFH,EAAMC,MACe,MAAZE,GACTH,EAAM5gB,KAAK+gB,GASf,MAJiB,KAAbH,EAAM,IACRA,EAAM1D,QAAQ,IAGT0D,EAAMtY,KAAK,KAGpB,SAAS0Y,EAAWvE,GAClB,IAAIC,EAAO,GACPtU,EAAQ,GAER6Y,EAAYxE,EAAKqB,QAAQ,KACzBmD,GAAa,IACfvE,EAAOD,EAAKrb,MAAM6f,GAClBxE,EAAOA,EAAKrb,MAAM,EAAG6f,IAGvB,IAAIC,EAAazE,EAAKqB,QAAQ,KAM9B,OALIoD,GAAc,IAChB9Y,EAAQqU,EAAKrb,MAAM8f,EAAa,GAChCzE,EAAOA,EAAKrb,MAAM,EAAG8f,IAGhB,CACLzE,KAAMA,EACNrU,MAAOA,EACPsU,KAAMA,GAIV,SAASyE,EAAW1E,GAClB,OAAOA,EAAK/O,QAAQ,QAAS,KAG/B,IAAI0T,EAAU/kB,MAAMC,SAAW,SAAUmE,GACvC,MAA8C,kBAAvChF,OAAOC,UAAUC,SAASC,KAAK6E,IAMpC4gB,EAAiBC,EACjBC,EAAUrQ,EACVsQ,EAAYC,EACZC,EAAqBC,EACrBC,EAAmBC,EAOnBC,EAAc,IAAIC,OAAO,CAG3B,UAOA,0GACAzZ,KAAK,KAAM,KASb,SAAS4I,EAAO9N,EAAK5G,GACnB,IAKIqW,EALAmP,EAAS,GACT9kB,EAAM,EACNyQ,EAAQ,EACR8O,EAAO,GACPwF,EAAmBzlB,GAAWA,EAAQ0lB,WAAa,IAGvD,MAAwC,OAAhCrP,EAAMiP,EAAYK,KAAK/e,IAAe,CAC5C,IAAIqU,EAAI5E,EAAI,GACR1F,EAAU0F,EAAI,GACduP,EAASvP,EAAIlF,MAKjB,GAJA8O,GAAQrZ,EAAIhC,MAAMuM,EAAOyU,GACzBzU,EAAQyU,EAAS3K,EAAEpX,OAGf8M,EACFsP,GAAQtP,EAAQ,OADlB,CAKA,IAAItO,EAAOuE,EAAIuK,GACXkJ,EAAShE,EAAI,GACbxR,EAAOwR,EAAI,GACXwP,EAAUxP,EAAI,GACdyP,EAAQzP,EAAI,GACZ0P,EAAW1P,EAAI,GACf2P,EAAW3P,EAAI,GAGf4J,IACFuF,EAAOhiB,KAAKyc,GACZA,EAAO,IAGT,IAAIgG,EAAoB,MAAV5L,GAA0B,MAARhY,GAAgBA,IAASgY,EACrD6L,EAAsB,MAAbH,GAAiC,MAAbA,EAC7BI,EAAwB,MAAbJ,GAAiC,MAAbA,EAC/BL,EAAYrP,EAAI,IAAMoP,EACtBW,EAAUP,GAAWC,EAEzBN,EAAOhiB,KAAK,CACVqB,KAAMA,GAAQnE,IACd2Z,OAAQA,GAAU,GAClBqL,UAAWA,EACXS,SAAUA,EACVD,OAAQA,EACRD,QAASA,EACTD,WAAYA,EACZI,QAASA,EAAUC,EAAYD,GAAYJ,EAAW,KAAO,KAAOM,EAAaZ,GAAa,SAclG,OATIvU,EAAQvK,EAAI/C,SACdoc,GAAQrZ,EAAIqR,OAAO9G,IAIjB8O,GACFuF,EAAOhiB,KAAKyc,GAGPuF,EAUT,SAASP,EAASre,EAAK5G,GACrB,OAAOmlB,EAAiBzQ,EAAM9N,EAAK5G,GAAUA,GAS/C,SAASumB,EAA0B3f,GACjC,OAAO6S,UAAU7S,GAAKsK,QAAQ,WAAW,SAAUxC,GACjD,MAAO,IAAMA,EAAE6P,WAAW,GAAGpf,SAAS,IAAIqnB,iBAU9C,SAASC,EAAgB7f,GACvB,OAAO6S,UAAU7S,GAAKsK,QAAQ,SAAS,SAAUxC,GAC/C,MAAO,IAAMA,EAAE6P,WAAW,GAAGpf,SAAS,IAAIqnB,iBAO9C,SAASrB,EAAkBK,EAAQxlB,GAKjC,IAHA,IAAI6T,EAAU,IAAIhU,MAAM2lB,EAAO3hB,QAGtBF,EAAI,EAAGA,EAAI6hB,EAAO3hB,OAAQF,IACR,kBAAd6hB,EAAO7hB,KAChBkQ,EAAQlQ,GAAK,IAAI4hB,OAAO,OAASC,EAAO7hB,GAAGyiB,QAAU,KAAMM,EAAM1mB,KAIrE,OAAO,SAAU2C,EAAKqY,GAMpB,IALA,IAAIiF,EAAO,GACPrN,EAAOjQ,GAAO,GACd3C,EAAUgb,GAAQ,GAClByD,EAASze,EAAQ2mB,OAASJ,EAA2B7H,mBAEhD/a,EAAI,EAAGA,EAAI6hB,EAAO3hB,OAAQF,IAAK,CACtC,IAAIijB,EAAQpB,EAAO7hB,GAEnB,GAAqB,kBAAVijB,EAAX,CAMA,IACIrC,EADA1lB,EAAQ+T,EAAKgU,EAAM/hB,MAGvB,GAAa,MAAThG,EAAe,CACjB,GAAI+nB,EAAMT,SAAU,CAEdS,EAAMX,UACRhG,GAAQ2G,EAAMvM,QAGhB,SAEA,MAAM,IAAIpV,UAAU,aAAe2hB,EAAM/hB,KAAO,mBAIpD,GAAI+f,EAAQ/lB,GAAZ,CACE,IAAK+nB,EAAMV,OACT,MAAM,IAAIjhB,UAAU,aAAe2hB,EAAM/hB,KAAO,kCAAoC4P,KAAK2B,UAAUvX,GAAS,KAG9G,GAAqB,IAAjBA,EAAMgF,OAAc,CACtB,GAAI+iB,EAAMT,SACR,SAEA,MAAM,IAAIlhB,UAAU,aAAe2hB,EAAM/hB,KAAO,qBAIpD,IAAK,IAAIgiB,EAAI,EAAGA,EAAIhoB,EAAMgF,OAAQgjB,IAAK,CAGrC,GAFAtC,EAAU9F,EAAO5f,EAAMgoB,KAElBhT,EAAQlQ,GAAGmB,KAAKyf,GACnB,MAAM,IAAItf,UAAU,iBAAmB2hB,EAAM/hB,KAAO,eAAiB+hB,EAAMR,QAAU,oBAAsB3R,KAAK2B,UAAUmO,GAAW,KAGvItE,IAAe,IAAN4G,EAAUD,EAAMvM,OAASuM,EAAMlB,WAAanB,OApBzD,CA4BA,GAFAA,EAAUqC,EAAMZ,SAAWS,EAAe5nB,GAAS4f,EAAO5f,IAErDgV,EAAQlQ,GAAGmB,KAAKyf,GACnB,MAAM,IAAItf,UAAU,aAAe2hB,EAAM/hB,KAAO,eAAiB+hB,EAAMR,QAAU,oBAAsB7B,EAAU,KAGnHtE,GAAQ2G,EAAMvM,OAASkK,QArDrBtE,GAAQ2G,EAwDZ,OAAO3G,GAUX,SAASqG,EAAc1f,GACrB,OAAOA,EAAIsK,QAAQ,6BAA8B,QASnD,SAASmV,EAAaP,GACpB,OAAOA,EAAM5U,QAAQ,gBAAiB,QAUxC,SAAS4V,EAAYC,EAAI7lB,GAEvB,OADA6lB,EAAG7lB,KAAOA,EACH6lB,EAST,SAASL,EAAO1mB,GACd,OAAOA,GAAWA,EAAQgnB,UAAY,GAAK,IAU7C,SAASC,EAAgBhH,EAAM/e,GAE7B,IAAIgmB,EAASjH,EAAK5f,OAAO8mB,MAAM,aAE/B,GAAID,EACF,IAAK,IAAIvjB,EAAI,EAAGA,EAAIujB,EAAOrjB,OAAQF,IACjCzC,EAAKsC,KAAK,CACRqB,KAAMlB,EACN0W,OAAQ,KACRqL,UAAW,KACXS,UAAU,EACVD,QAAQ,EACRD,SAAS,EACTD,UAAU,EACVI,QAAS,OAKf,OAAOU,EAAW7G,EAAM/e,GAW1B,SAASkmB,EAAenH,EAAM/e,EAAMlB,GAGlC,IAFA,IAAIuf,EAAQ,GAEH5b,EAAI,EAAGA,EAAIsc,EAAKpc,OAAQF,IAC/B4b,EAAM/b,KAAKshB,EAAa7E,EAAKtc,GAAIzC,EAAMlB,GAASK,QAGlD,IAAIgnB,EAAS,IAAI9B,OAAO,MAAQhG,EAAMzT,KAAK,KAAO,IAAK4a,EAAM1mB,IAE7D,OAAO8mB,EAAWO,EAAQnmB,GAW5B,SAASomB,EAAgBrH,EAAM/e,EAAMlB,GACnC,OAAOqlB,EAAe3Q,EAAMuL,EAAMjgB,GAAUkB,EAAMlB,GAWpD,SAASqlB,EAAgBG,EAAQtkB,EAAMlB,GAChC4kB,EAAQ1jB,KACXlB,EAAkCkB,GAAQlB,EAC1CkB,EAAO,IAGTlB,EAAUA,GAAW,GAOrB,IALA,IAAIunB,EAASvnB,EAAQunB,OACjBC,GAAsB,IAAhBxnB,EAAQwnB,IACdxH,EAAQ,GAGHrc,EAAI,EAAGA,EAAI6hB,EAAO3hB,OAAQF,IAAK,CACtC,IAAIijB,EAAQpB,EAAO7hB,GAEnB,GAAqB,kBAAVijB,EACT5G,GAASsG,EAAaM,OACjB,CACL,IAAIvM,EAASiM,EAAaM,EAAMvM,QAC5BwL,EAAU,MAAQe,EAAMR,QAAU,IAEtCllB,EAAKsC,KAAKojB,GAENA,EAAMV,SACRL,GAAW,MAAQxL,EAASwL,EAAU,MAOpCA,EAJAe,EAAMT,SACHS,EAAMX,QAGC5L,EAAS,IAAMwL,EAAU,KAFzB,MAAQxL,EAAS,IAAMwL,EAAU,MAKnCxL,EAAS,IAAMwL,EAAU,IAGrC7F,GAAS6F,GAIb,IAAIH,EAAYY,EAAatmB,EAAQ0lB,WAAa,KAC9C+B,EAAoBzH,EAAMpb,OAAO8gB,EAAU7hB,UAAY6hB,EAkB3D,OAZK6B,IACHvH,GAASyH,EAAoBzH,EAAMpb,MAAM,GAAI8gB,EAAU7hB,QAAUmc,GAAS,MAAQ0F,EAAY,WAI9F1F,GADEwH,EACO,IAIAD,GAAUE,EAAoB,GAAK,MAAQ/B,EAAY,MAG3DoB,EAAW,IAAIvB,OAAO,IAAMvF,EAAO0G,EAAM1mB,IAAWkB,GAe7D,SAAS4jB,EAAc7E,EAAM/e,EAAMlB,GAQjC,OAPK4kB,EAAQ1jB,KACXlB,EAAkCkB,GAAQlB,EAC1CkB,EAAO,IAGTlB,EAAUA,GAAW,GAEjBigB,aAAgBsF,OACX0B,EAAehH,EAA4B,GAGhD2E,EAAQ3E,GACHmH,EAAoC,EAA8B,EAAQpnB,GAG5EsnB,EAAqC,EAA8B,EAAQtnB,GAEpF6kB,EAAenQ,MAAQqQ,EACvBF,EAAeI,QAAUD,EACzBH,EAAeM,iBAAmBD,EAClCL,EAAeQ,eAAiBD,EAKhC,IAAIsC,EAAqBzoB,OAAO0oB,OAAO,MAEvC,SAASC,EACP3H,EACAE,EACA0H,GAEA1H,EAASA,GAAU,GACnB,IACE,IAAI2H,EACFJ,EAAmBzH,KAClByH,EAAmBzH,GAAQ4E,EAAeI,QAAQhF,IAMrD,MAFgC,kBAArBE,EAAO4H,YAA0B5H,EAAO,GAAKA,EAAO4H,WAExDD,EAAO3H,EAAQ,CAAEwG,QAAQ,IAChC,MAAOnhB,GAKP,MAAO,GACP,eAEO2a,EAAO,IAMlB,SAAS6H,GACPC,EACA5G,EACA4C,EACAtX,GAEA,IAAItK,EAAsB,kBAAR4lB,EAAmB,CAAEhI,KAAMgI,GAAQA,EAErD,GAAI5lB,EAAK6lB,YACP,OAAO7lB,EACF,GAAIA,EAAKwC,KAAM,CACpBxC,EAAO6b,EAAO,GAAI+J,GAClB,IAAI9H,EAAS9d,EAAK8d,OAIlB,OAHIA,GAA4B,kBAAXA,IACnB9d,EAAK8d,OAASjC,EAAO,GAAIiC,IAEpB9d,EAIT,IAAKA,EAAK4d,MAAQ5d,EAAK8d,QAAUkB,EAAS,CACxChf,EAAO6b,EAAO,GAAI7b,GAClBA,EAAK6lB,aAAc,EACnB,IAAIC,EAAWjK,EAAOA,EAAO,GAAImD,EAAQlB,QAAS9d,EAAK8d,QACvD,GAAIkB,EAAQxc,KACVxC,EAAKwC,KAAOwc,EAAQxc,KACpBxC,EAAK8d,OAASgI,OACT,GAAI9G,EAAQf,QAAQzc,OAAQ,CACjC,IAAIukB,EAAU/G,EAAQf,QAAQe,EAAQf,QAAQzc,OAAS,GAAGoc,KAC1D5d,EAAK4d,KAAO2H,EAAWQ,EAASD,EAAW,QAAW9G,EAAY,WACzD,EAGX,OAAOhf,EAGT,IAAIgmB,EAAa7D,EAAUniB,EAAK4d,MAAQ,IACpCqI,EAAYjH,GAAWA,EAAQpB,MAAS,IACxCA,EAAOoI,EAAWpI,KAClB8D,EAAYsE,EAAWpI,KAAMqI,EAAUrE,GAAU5hB,EAAK4hB,QACtDqE,EAEA1c,EAAQiT,EACVwJ,EAAWzc,MACXvJ,EAAKuJ,MACLe,GAAUA,EAAO3M,QAAQif,YAGvBiB,EAAO7d,EAAK6d,MAAQmI,EAAWnI,KAKnC,OAJIA,GAA2B,MAAnBA,EAAKiE,OAAO,KACtBjE,EAAO,IAAMA,GAGR,CACLgI,aAAa,EACbjI,KAAMA,EACNrU,MAAOA,EACPsU,KAAMA,GAOV,IAiMIqI,GAjMAC,GAAU,CAACrJ,OAAQlgB,QACnBwpB,GAAa,CAACtJ,OAAQtf,OAEtB6oB,GAAO,aAEPC,GAAO,CACT9jB,KAAM,aACNod,MAAO,CACLlV,GAAI,CACFrB,KAAM8c,GACNI,UAAU,GAEZ5d,IAAK,CACHU,KAAMyT,OACN+C,QAAS,KAEX2G,MAAOrT,QACPyO,OAAQzO,QACRtE,QAASsE,QACTsT,YAAa3J,OACb4J,iBAAkB5J,OAClB6J,iBAAkB,CAChBtd,KAAMyT,OACN+C,QAAS,QAEX+G,MAAO,CACLvd,KAAM+c,GACNvG,QAAS,UAGbC,OAAQ,SAAiBG,GACvB,IAAI4G,EAAS5c,KAETK,EAASL,KAAKM,QACdyU,EAAU/U,KAAKkW,OACf7B,EAAMhU,EAAOoQ,QACfzQ,KAAKS,GACLsU,EACA/U,KAAK2X,QAEHnE,EAAWa,EAAIb,SACfE,EAAQW,EAAIX,MACZmJ,EAAOxI,EAAIwI,KAEXC,EAAU,GACVC,EAAoB1c,EAAO3M,QAAQspB,gBACnCC,EAAyB5c,EAAO3M,QAAQwpB,qBAExCC,EACmB,MAArBJ,EAA4B,qBAAuBA,EACjDK,EACwB,MAA1BH,EACI,2BACAA,EACFT,EACkB,MAApBxc,KAAKwc,YAAsBW,EAAsBnd,KAAKwc,YACpDC,EACuB,MAAzBzc,KAAKyc,iBACDW,EACApd,KAAKyc,iBAEPY,EAAgB3J,EAAMD,eACtBH,EAAY,KAAMoI,GAAkBhI,EAAMD,gBAAiB,KAAMpT,GACjEqT,EAEJoJ,EAAQL,GAAoBlI,EAAYQ,EAASsI,GACjDP,EAAQN,GAAexc,KAAKuc,MACxBO,EAAQL,GACR3H,EAAgBC,EAASsI,GAE7B,IAAIX,EAAmBI,EAAQL,GAAoBzc,KAAK0c,iBAAmB,KAEvEY,EAAU,SAAUpkB,GAClBqkB,GAAWrkB,KACT0jB,EAAOhY,QACTvE,EAAOuE,QAAQ4O,EAAU4I,IAEzB/b,EAAOnJ,KAAKsc,EAAU4I,MAKxBoB,EAAK,CAAEC,MAAOF,IACdhqB,MAAMC,QAAQwM,KAAK2c,OACrB3c,KAAK2c,MAAMtnB,SAAQ,SAAU6D,GAC3BskB,EAAGtkB,GAAKokB,KAGVE,EAAGxd,KAAK2c,OAASW,EAGnB,IAAIhX,EAAO,CAAEoX,MAAOZ,GAEhBa,GACD3d,KAAK4d,aAAaC,YACnB7d,KAAK4d,aAAahI,SAClB5V,KAAK4d,aAAahI,QAAQ,CACxBiH,KAAMA,EACNnJ,MAAOA,EACPoK,SAAUR,EACVS,SAAUjB,EAAQN,GAClBwB,cAAelB,EAAQL,KAG3B,GAAIkB,EAAY,CACd,GAA0B,IAAtBA,EAAWpmB,OACb,OAAOomB,EAAW,GACb,GAAIA,EAAWpmB,OAAS,IAAMomB,EAAWpmB,OAO9C,OAA6B,IAAtBomB,EAAWpmB,OAAeye,IAAMA,EAAE,OAAQ,GAAI2H,GAIzD,GAAiB,MAAb3d,KAAKtB,IACP4H,EAAKkX,GAAKA,EACVlX,EAAK0B,MAAQ,CAAE6U,KAAMA,EAAM,eAAgBH,OACtC,CAEL,IAAI7K,EAAIoM,GAAWje,KAAKke,OAAOtI,SAC/B,GAAI/D,EAAG,CAELA,EAAEsM,UAAW,EACb,IAAIC,EAASvM,EAAEvL,KAAOsL,EAAO,GAAIC,EAAEvL,MAGnC,IAAK,IAAIqW,KAFTyB,EAAMZ,GAAKY,EAAMZ,IAAM,GAELY,EAAMZ,GAAI,CAC1B,IAAIa,EAAYD,EAAMZ,GAAGb,GACrBA,KAASa,IACXY,EAAMZ,GAAGb,GAASppB,MAAMC,QAAQ6qB,GAAaA,EAAY,CAACA,IAI9D,IAAK,IAAIC,KAAWd,EACdc,KAAWF,EAAMZ,GAEnBY,EAAMZ,GAAGc,GAASpnB,KAAKsmB,EAAGc,IAE1BF,EAAMZ,GAAGc,GAAWhB,EAIxB,IAAIiB,EAAU1M,EAAEvL,KAAK0B,MAAQ4J,EAAO,GAAIC,EAAEvL,KAAK0B,OAC/CuW,EAAO1B,KAAOA,EACd0B,EAAO,gBAAkB7B,OAGzBpW,EAAKkX,GAAKA,EAId,OAAOxH,EAAEhW,KAAKtB,IAAK4H,EAAMtG,KAAKke,OAAOtI,WAIzC,SAAS2H,GAAYrkB,GAEnB,KAAIA,EAAEslB,SAAWtlB,EAAEulB,QAAUvlB,EAAEwlB,SAAWxlB,EAAEylB,YAExCzlB,EAAE0lB,wBAEWlkB,IAAbxB,EAAE2lB,QAAqC,IAAb3lB,EAAE2lB,QAAhC,CAEA,GAAI3lB,EAAE4lB,eAAiB5lB,EAAE4lB,cAAc5W,aAAc,CACnD,IAAIpU,EAASoF,EAAE4lB,cAAc5W,aAAa,UAC1C,GAAI,cAAc1P,KAAK1E,GAAW,OAMpC,OAHIoF,EAAE6lB,gBACJ7lB,EAAE6lB,kBAEG,GAGT,SAASd,GAAYnI,GACnB,GAAIA,EAEF,IADA,IAAI5T,EACK7K,EAAI,EAAGA,EAAIye,EAASve,OAAQF,IAAK,CAExC,GADA6K,EAAQ4T,EAASze,GACC,MAAd6K,EAAMxD,IACR,OAAOwD,EAET,GAAIA,EAAM4T,WAAa5T,EAAQ+b,GAAW/b,EAAM4T,WAC9C,OAAO5T,GAQf,SAAS6N,GAAS/O,GAChB,IAAI+O,GAAQiP,WAAa/C,KAASjb,EAAlC,CACA+O,GAAQiP,WAAY,EAEpB/C,GAAOjb,EAEP,IAAIie,EAAQ,SAAU7a,GAAK,YAAa1J,IAAN0J,GAE9B8a,EAAmB,SAAUnf,EAAIof,GACnC,IAAI9nB,EAAI0I,EAAGwB,SAAS6d,aAChBH,EAAM5nB,IAAM4nB,EAAM5nB,EAAIA,EAAEiP,OAAS2Y,EAAM5nB,EAAIA,EAAE4f,wBAC/C5f,EAAE0I,EAAIof,IAIVne,EAAIiP,MAAM,CACR9O,aAAc,WACR8d,EAAMjf,KAAKuB,SAASlB,SACtBL,KAAKuW,YAAcvW,KACnBA,KAAKqf,QAAUrf,KAAKuB,SAASlB,OAC7BL,KAAKqf,QAAQ/H,KAAKtX,MAClBgB,EAAIse,KAAKC,eAAevf,KAAM,SAAUA,KAAKqf,QAAQG,QAAQzK,UAE7D/U,KAAKuW,YAAevW,KAAKwC,SAAWxC,KAAKwC,QAAQ+T,aAAgBvW,KAEnEkf,EAAiBlf,KAAMA,OAEzByf,UAAW,WACTP,EAAiBlf,SAIrBrN,OAAO8D,eAAeuK,EAAIpO,UAAW,UAAW,CAC9C+O,IAAK,WAAkB,OAAO3B,KAAKuW,YAAY8I,WAGjD1sB,OAAO8D,eAAeuK,EAAIpO,UAAW,SAAU,CAC7C+O,IAAK,WAAkB,OAAO3B,KAAKuW,YAAYmJ,UAGjD1e,EAAIkE,UAAU,aAAcuQ,GAC5BzU,EAAIkE,UAAU,aAAcmX,IAE5B,IAAIsD,EAAS3e,EAAIS,OAAOme,sBAExBD,EAAOE,iBAAmBF,EAAOG,iBAAmBH,EAAOI,kBAAoBJ,EAAOK,SAKxF,IAAIC,GAA8B,qBAAXjmB,OAIvB,SAASkmB,GACPC,EACAC,EACAC,EACAC,GAGA,IAAIC,EAAWH,GAAe,GAE1BI,EAAUH,GAAc1tB,OAAO0oB,OAAO,MAEtCoF,EAAUH,GAAc3tB,OAAO0oB,OAAO,MAE1C8E,EAAO9qB,SAAQ,SAAUqe,GACvBgN,GAAeH,EAAUC,EAASC,EAAS/M,MAI7C,IAAK,IAAIrc,EAAI,EAAGspB,EAAIJ,EAAShpB,OAAQF,EAAIspB,EAAGtpB,IACtB,MAAhBkpB,EAASlpB,KACXkpB,EAASrpB,KAAKqpB,EAAS7a,OAAOrO,EAAG,GAAG,IACpCspB,IACAtpB,KAgBJ,MAAO,CACLkpB,SAAUA,EACVC,QAASA,EACTC,QAASA,GAIb,SAASC,GACPH,EACAC,EACAC,EACA/M,EACAnR,EACAqe,GAEA,IAAIjN,EAAOD,EAAMC,KACbpb,EAAOmb,EAAMnb,KAWjB,IAAIsoB,EACFnN,EAAMmN,qBAAuB,GAC3BC,EAAiBC,GAAcpN,EAAMpR,EAAQse,EAAoB5F,QAElC,mBAAxBvH,EAAMsN,gBACfH,EAAoBnG,UAAYhH,EAAMsN,eAGxC,IAAIzN,EAAS,CACXI,KAAMmN,EACNG,MAAOC,GAAkBJ,EAAgBD,GACzC7J,WAAYtD,EAAMsD,YAAc,CAAEpB,QAASlC,EAAMxO,WACjDiQ,UAAW,GACXG,WAAY,GACZ/c,KAAMA,EACNgK,OAAQA,EACRqe,QAASA,EACTO,SAAUzN,EAAMyN,SAChBC,YAAa1N,EAAM0N,YACnBlmB,KAAMwY,EAAMxY,MAAQ,GACpBya,MACiB,MAAfjC,EAAMiC,MACF,GACAjC,EAAMsD,WACJtD,EAAMiC,MACN,CAAEC,QAASlC,EAAMiC,QAoC3B,GAjCIjC,EAAMoC,UAoBRpC,EAAMoC,SAASzgB,SAAQ,SAAU6M,GAC/B,IAAImf,EAAeT,EACfvI,EAAWuI,EAAU,IAAO1e,EAAU,WACtCxH,EACJgmB,GAAeH,EAAUC,EAASC,EAASve,EAAOqR,EAAQ8N,MAIzDb,EAAQjN,EAAOI,QAClB4M,EAASrpB,KAAKqc,EAAOI,MACrB6M,EAAQjN,EAAOI,MAAQJ,QAGL7Y,IAAhBgZ,EAAM4N,MAER,IADA,IAAIC,EAAUhuB,MAAMC,QAAQkgB,EAAM4N,OAAS5N,EAAM4N,MAAQ,CAAC5N,EAAM4N,OACvDjqB,EAAI,EAAGA,EAAIkqB,EAAQhqB,SAAUF,EAAG,CACvC,IAAIiqB,EAAQC,EAAQlqB,GAChB,EASJ,IAAImqB,EAAa,CACf7N,KAAM2N,EACNxL,SAAUpC,EAAMoC,UAElB4K,GACEH,EACAC,EACAC,EACAe,EACAjf,EACAgR,EAAOI,MAAQ,KAKjBpb,IACGkoB,EAAQloB,KACXkoB,EAAQloB,GAAQgb,IAWtB,SAAS2N,GACPvN,EACAkN,GAEA,IAAII,EAAQ1I,EAAe5E,EAAM,GAAIkN,GAWrC,OAAOI,EAGT,SAASF,GACPpN,EACApR,EACA0Y,GAGA,OADKA,IAAUtH,EAAOA,EAAK/O,QAAQ,MAAO,KAC1B,MAAZ+O,EAAK,IACK,MAAVpR,EAD0BoR,EAEvB0E,EAAY9V,EAAW,KAAI,IAAMoR,GAO1C,SAAS8N,GACPtB,EACA9f,GAEA,IAAIgU,EAAM6L,GAAeC,GACrBI,EAAWlM,EAAIkM,SACfC,EAAUnM,EAAImM,QACdC,EAAUpM,EAAIoM,QAElB,SAASiB,EAAWvB,GAClBD,GAAeC,EAAQI,EAAUC,EAASC,GAG5C,SAAS5F,EACPc,EACAgG,EACAlO,GAEA,IAAID,EAAWkI,GAAkBC,EAAKgG,GAAc,EAAOthB,GACvD9H,EAAOib,EAASjb,KAEpB,GAAIA,EAAM,CACR,IAAIgb,EAASkN,EAAQloB,GAIrB,IAAKgb,EAAU,OAAOqO,EAAa,KAAMpO,GACzC,IAAIqO,EAAatO,EAAO0N,MAAMrsB,KAC3BJ,QAAO,SAAUJ,GAAO,OAAQA,EAAIylB,YACpC5lB,KAAI,SAAUG,GAAO,OAAOA,EAAImE,QAMnC,GAJ+B,kBAApBib,EAASK,SAClBL,EAASK,OAAS,IAGhB8N,GAA+C,kBAAxBA,EAAa9N,OACtC,IAAK,IAAIzf,KAAOutB,EAAa9N,SACrBzf,KAAOof,EAASK,SAAWgO,EAAW7M,QAAQ5gB,IAAQ,IAC1Dof,EAASK,OAAOzf,GAAOutB,EAAa9N,OAAOzf,IAMjD,OADAof,EAASG,KAAO2H,EAAW/H,EAAOI,KAAMH,EAASK,OAAS,gBAAmBtb,EAAO,KAC7EqpB,EAAarO,EAAQC,EAAUC,GACjC,GAAID,EAASG,KAAM,CACxBH,EAASK,OAAS,GAClB,IAAK,IAAIxc,EAAI,EAAGA,EAAIkpB,EAAShpB,OAAQF,IAAK,CACxC,IAAIsc,EAAO4M,EAASlpB,GAChByqB,EAAWtB,EAAQ7M,GACvB,GAAIoO,GAAWD,EAASb,MAAOzN,EAASG,KAAMH,EAASK,QACrD,OAAO+N,EAAaE,EAAUtO,EAAUC,IAK9C,OAAOmO,EAAa,KAAMpO,GAG5B,SAAS2N,EACP5N,EACAC,GAEA,IAAIwO,EAAmBzO,EAAO4N,SAC1BA,EAAuC,oBAArBa,EAClBA,EAAiB1O,EAAYC,EAAQC,EAAU,KAAMnT,IACrD2hB,EAMJ,GAJwB,kBAAbb,IACTA,EAAW,CAAExN,KAAMwN,KAGhBA,GAAgC,kBAAbA,EAMtB,OAAOS,EAAa,KAAMpO,GAG5B,IAAIiH,EAAK0G,EACL5oB,EAAOkiB,EAAGliB,KACVob,EAAO8G,EAAG9G,KACVrU,EAAQkU,EAASlU,MACjBsU,EAAOJ,EAASI,KAChBC,EAASL,EAASK,OAKtB,GAJAvU,EAAQmb,EAAGvlB,eAAe,SAAWulB,EAAGnb,MAAQA,EAChDsU,EAAO6G,EAAGvlB,eAAe,QAAUulB,EAAG7G,KAAOA,EAC7CC,EAAS4G,EAAGvlB,eAAe,UAAYulB,EAAG5G,OAASA,EAE/Ctb,EAAM,CAEWkoB,EAAQloB,GAI3B,OAAOsiB,EAAM,CACXe,aAAa,EACbrjB,KAAMA,EACN+G,MAAOA,EACPsU,KAAMA,EACNC,OAAQA,QACPnZ,EAAW8Y,GACT,GAAIG,EAAM,CAEf,IAAImI,EAAUmG,GAAkBtO,EAAMJ,GAElC2O,EAAe5G,EAAWQ,EAASjI,EAAS,6BAAgCiI,EAAU,KAE1F,OAAOjB,EAAM,CACXe,aAAa,EACbjI,KAAMuO,EACN5iB,MAAOA,EACPsU,KAAMA,QACLlZ,EAAW8Y,GAKd,OAAOoO,EAAa,KAAMpO,GAI9B,SAAS8N,EACP/N,EACAC,EACAoN,GAEA,IAAIuB,EAAc7G,EAAWsF,EAASpN,EAASK,OAAS,4BAA+B+M,EAAU,KAC7FwB,EAAevH,EAAM,CACvBe,aAAa,EACbjI,KAAMwO,IAER,GAAIC,EAAc,CAChB,IAAIpO,EAAUoO,EAAapO,QACvBqO,EAAgBrO,EAAQA,EAAQzc,OAAS,GAE7C,OADAic,EAASK,OAASuO,EAAavO,OACxB+N,EAAaS,EAAe7O,GAErC,OAAOoO,EAAa,KAAMpO,GAG5B,SAASoO,EACPrO,EACAC,EACAC,GAEA,OAAIF,GAAUA,EAAO4N,SACZA,EAAS5N,EAAQE,GAAkBD,GAExCD,GAAUA,EAAOqN,QACZU,EAAM/N,EAAQC,EAAUD,EAAOqN,SAEjCtN,EAAYC,EAAQC,EAAUC,EAAgBpT,GAGvD,MAAO,CACLwa,MAAOA,EACP6G,UAAWA,GAIf,SAASK,GACPd,EACAtN,EACAE,GAEA,IAAIlF,EACJ,IACEA,EAAItG,UAAUsL,GAAMkH,MAAMoG,GAC1B,MAAO7nB,GACH,EAKN,IAAKuV,EACH,OAAO,EACF,IAAKkF,EACV,OAAO,EAGT,IAAK,IAAIxc,EAAI,EAAGoB,EAAMkW,EAAEpX,OAAQF,EAAIoB,IAAOpB,EAAG,CAC5C,IAAIjD,EAAM6sB,EAAMrsB,KAAKyC,EAAI,GACrBjD,IAEFyf,EAAOzf,EAAImE,MAAQ,aAAeoW,EAAEtX,IAIxC,OAAO,EAGT,SAAS4qB,GAAmBtO,EAAMJ,GAChC,OAAOkE,EAAY9D,EAAMJ,EAAOhR,OAASgR,EAAOhR,OAAOoR,KAAO,KAAK,GAMrE,IAAI2O,GACFrC,IAAajmB,OAAOuoB,aAAevoB,OAAOuoB,YAAYC,IAClDxoB,OAAOuoB,YACPE,KAEN,SAASC,KACP,OAAOJ,GAAKE,MAAMG,QAAQ,GAG5B,IAAIC,GAAOF,KAEX,SAASG,KACP,OAAOD,GAGT,SAASE,GAAa1uB,GACpB,OAAQwuB,GAAOxuB,EAKjB,IAAI2uB,GAAgBpwB,OAAO0oB,OAAO,MAElC,SAAS2H,KAEH,sBAAuBhpB,OAAOwlB,UAChCxlB,OAAOwlB,QAAQyD,kBAAoB,UAOrC,IAAIC,EAAkBlpB,OAAOwZ,SAAS2P,SAAW,KAAOnpB,OAAOwZ,SAAS4P,KACpEC,EAAerpB,OAAOwZ,SAASqJ,KAAKjY,QAAQse,EAAiB,IAE7DI,EAAY1R,EAAO,GAAI5X,OAAOwlB,QAAQ+D,OAI1C,OAHAD,EAAUlvB,IAAMyuB,KAChB7oB,OAAOwlB,QAAQgE,aAAaF,EAAW,GAAID,GAC3CrpB,OAAO4N,iBAAiB,WAAY6b,IAC7B,WACLzpB,OAAO0pB,oBAAoB,WAAYD,KAI3C,SAASE,GACPtjB,EACAI,EACAvI,EACA0rB,GAEA,GAAKvjB,EAAOwjB,IAAZ,CAIA,IAAIC,EAAWzjB,EAAO3M,QAAQqwB,eACzBD,GASLzjB,EAAOwjB,IAAIljB,WAAU,WACnB,IAAIqjB,EAAWC,KACXC,EAAeJ,EAAShxB,KAC1BuN,EACAI,EACAvI,EACA0rB,EAAQI,EAAW,MAGhBE,IAI4B,oBAAtBA,EAAarT,KACtBqT,EACGrT,MAAK,SAAUqT,GACdC,GAAiB,EAAgBH,MAElClT,OAAM,SAAU1X,GACX,KAKR+qB,GAAiBD,EAAcF,QAKrC,SAASI,KACP,IAAIhwB,EAAMyuB,KACNzuB,IACF2uB,GAAc3uB,GAAO,CACnBwV,EAAG5P,OAAOqqB,YACVC,EAAGtqB,OAAOuqB,cAKhB,SAASd,GAAgBvqB,GACvBkrB,KACIlrB,EAAEqqB,OAASrqB,EAAEqqB,MAAMnvB,KACrB0uB,GAAY5pB,EAAEqqB,MAAMnvB,KAIxB,SAAS6vB,KACP,IAAI7vB,EAAMyuB,KACV,GAAIzuB,EACF,OAAO2uB,GAAc3uB,GAIzB,SAASowB,GAAoBnmB,EAAIib,GAC/B,IAAImL,EAAQnmB,SAASomB,gBACjBC,EAAUF,EAAMG,wBAChBC,EAASxmB,EAAGumB,wBAChB,MAAO,CACLhb,EAAGib,EAAOC,KAAOH,EAAQG,KAAOxL,EAAO1P,EACvC0a,EAAGO,EAAOE,IAAMJ,EAAQI,IAAMzL,EAAOgL,GAIzC,SAASU,GAAiB3uB,GACxB,OAAO4uB,GAAS5uB,EAAIuT,IAAMqb,GAAS5uB,EAAIiuB,GAGzC,SAASY,GAAmB7uB,GAC1B,MAAO,CACLuT,EAAGqb,GAAS5uB,EAAIuT,GAAKvT,EAAIuT,EAAI5P,OAAOqqB,YACpCC,EAAGW,GAAS5uB,EAAIiuB,GAAKjuB,EAAIiuB,EAAItqB,OAAOuqB,aAIxC,SAASY,GAAiB9uB,GACxB,MAAO,CACLuT,EAAGqb,GAAS5uB,EAAIuT,GAAKvT,EAAIuT,EAAI,EAC7B0a,EAAGW,GAAS5uB,EAAIiuB,GAAKjuB,EAAIiuB,EAAI,GAIjC,SAASW,GAAU7gB,GACjB,MAAoB,kBAANA,EAGhB,IAAIghB,GAAyB,OAE7B,SAASjB,GAAkBD,EAAcF,GACvC,IAAIrqB,EAAmC,kBAAjBuqB,EACtB,GAAIvqB,GAA6C,kBAA1BuqB,EAAa7c,SAAuB,CAGzD,IAAIhJ,EAAK+mB,GAAuB5sB,KAAK0rB,EAAa7c,UAC9C/I,SAAS+mB,eAAenB,EAAa7c,SAAS/O,MAAM,IACpDgG,SAASF,cAAc8lB,EAAa7c,UAExC,GAAIhJ,EAAI,CACN,IAAIib,EACF4K,EAAa5K,QAAyC,kBAAxB4K,EAAa5K,OACvC4K,EAAa5K,OACb,GACNA,EAAS6L,GAAgB7L,GACzB0K,EAAWQ,GAAmBnmB,EAAIib,QACzB0L,GAAgBd,KACzBF,EAAWkB,GAAkBhB,SAEtBvqB,GAAYqrB,GAAgBd,KACrCF,EAAWkB,GAAkBhB,IAG3BF,GACFhqB,OAAOsrB,SAAStB,EAASpa,EAAGoa,EAASM,GAMzC,IAAIiB,GACFtF,IACA,WACE,IAAIuF,EAAKxrB,OAAOyrB,UAAUC,UAE1B,QACiC,IAA9BF,EAAGxQ,QAAQ,gBAAuD,IAA/BwQ,EAAGxQ,QAAQ,iBACd,IAAjCwQ,EAAGxQ,QAAQ,mBACe,IAA1BwQ,EAAGxQ,QAAQ,YACsB,IAAjCwQ,EAAGxQ,QAAQ,oBAKNhb,OAAOwlB,SAA+C,oBAA7BxlB,OAAOwlB,QAAQmG,WAZjD,GAeF,SAASA,GAAWC,EAAKhhB,GACvBwf,KAGA,IAAI5E,EAAUxlB,OAAOwlB,QACrB,IACE,GAAI5a,EAAS,CAEX,IAAI0e,EAAY1R,EAAO,GAAI4N,EAAQ+D,OACnCD,EAAUlvB,IAAMyuB,KAChBrD,EAAQgE,aAAaF,EAAW,GAAIsC,QAEpCpG,EAAQmG,UAAU,CAAEvxB,IAAK0uB,GAAYJ,OAAkB,GAAIkD,GAE7D,MAAO1sB,GACPc,OAAOwZ,SAAS5O,EAAU,UAAY,UAAUghB,IAIpD,SAASpC,GAAcoC,GACrBD,GAAUC,GAAK,GAKjB,SAASC,GAAUC,EAAOC,EAAIC,GAC5B,IAAIzsB,EAAO,SAAUsL,GACfA,GAASihB,EAAMvuB,OACjByuB,IAEIF,EAAMjhB,GACRkhB,EAAGD,EAAMjhB,IAAQ,WACftL,EAAKsL,EAAQ,MAGftL,EAAKsL,EAAQ,IAInBtL,EAAK,GAIP,IAAI0sB,GAAwB,CAC1BC,WAAY,EACZC,QAAS,EACTC,UAAW,EACXC,WAAY,IAGd,SAASC,GAAiCpuB,EAAMuI,GAC9C,OAAO8lB,GACLruB,EACAuI,EACAwlB,GAAsBC,WACrB,+BAAmChuB,EAAa,SAAI,SAAcsuB,GACjE/lB,GACG,6BAIT,SAASgmB,GAAiCvuB,EAAMuI,GAC9C,IAAIimB,EAAQH,GACVruB,EACAuI,EACAwlB,GAAsBI,WACrB,sDAA0DnuB,EAAa,SAAI,MAI9E,OADAwuB,EAAMnuB,KAAO,uBACNmuB,EAGT,SAASC,GAAgCzuB,EAAMuI,GAC7C,OAAO8lB,GACLruB,EACAuI,EACAwlB,GAAsBG,UACrB,8BAAkCluB,EAAa,SAAI,SAAcuI,EAAW,SAAI,4BAIrF,SAASmmB,GAA8B1uB,EAAMuI,GAC3C,OAAO8lB,GACLruB,EACAuI,EACAwlB,GAAsBE,QACrB,4BAAgCjuB,EAAa,SAAI,SAAcuI,EAAW,SAAI,6BAInF,SAAS8lB,GAAmBruB,EAAMuI,EAAIrB,EAAMmR,GAC1C,IAAImW,EAAQ,IAAI9wB,MAAM2a,GAMtB,OALAmW,EAAMG,WAAY,EAClBH,EAAMxuB,KAAOA,EACbwuB,EAAMjmB,GAAKA,EACXimB,EAAMtnB,KAAOA,EAENsnB,EAGT,IAAII,GAAkB,CAAC,SAAU,QAAS,QAE1C,SAASN,GAAgB/lB,GACvB,GAAkB,kBAAPA,EAAmB,OAAOA,EACrC,GAAI,SAAUA,EAAM,OAAOA,EAAGkT,KAC9B,IAAIH,EAAW,GAIf,OAHAsT,GAAgBzxB,SAAQ,SAAUjB,GAC5BA,KAAOqM,IAAM+S,EAASpf,GAAOqM,EAAGrM,OAE/B+T,KAAK2B,UAAU0J,EAAU,KAAM,GAGxC,SAASuT,GAAS3tB,GAChB,OAAOzG,OAAOC,UAAUC,SAASC,KAAKsG,GAAK4b,QAAQ,UAAY,EAGjE,SAASgS,GAAqB5tB,EAAK6tB,GACjC,OACEF,GAAQ3tB,IACRA,EAAIytB,YACU,MAAbI,GAAqB7tB,EAAIgG,OAAS6nB,GAMvC,SAASC,GAAwBlT,GAC/B,OAAO,SAAUvT,EAAIvI,EAAMnC,GACzB,IAAIoxB,GAAW,EACXC,EAAU,EACVV,EAAQ,KAEZW,GAAkBrT,GAAS,SAAUsT,EAAKtyB,EAAG6lB,EAAOzmB,GAMlD,GAAmB,oBAARkzB,QAAkC5sB,IAAZ4sB,EAAIC,IAAmB,CACtDJ,GAAW,EACXC,IAEA,IA0BIrd,EA1BA0G,EAAUtG,IAAK,SAAUqd,GACvBC,GAAWD,KACbA,EAAcA,EAAY5R,SAG5B0R,EAAII,SAAkC,oBAAhBF,EAClBA,EACAvL,GAAKrK,OAAO4V,GAChB3M,EAAM7D,WAAW5iB,GAAOozB,EACxBJ,IACIA,GAAW,GACbrxB,OAIAib,EAAS7G,IAAK,SAAUwd,GAC1B,IAAIC,EAAM,qCAAuCxzB,EAAM,KAAOuzB,EAEzDjB,IACHA,EAAQK,GAAQY,GACZA,EACA,IAAI/xB,MAAMgyB,GACd7xB,EAAK2wB,OAKT,IACE3c,EAAMud,EAAI7W,EAASO,GACnB,MAAO9X,GACP8X,EAAO9X,GAET,GAAI6Q,EACF,GAAwB,oBAAbA,EAAI8G,KACb9G,EAAI8G,KAAKJ,EAASO,OACb,CAEL,IAAI6W,EAAO9d,EAAI7E,UACX2iB,GAA6B,oBAAdA,EAAKhX,MACtBgX,EAAKhX,KAAKJ,EAASO,QAOxBmW,GAAYpxB,KAIrB,SAASsxB,GACPrT,EACA+R,GAEA,OAAO+B,GAAQ9T,EAAQ/f,KAAI,SAAU0a,GACnC,OAAOhc,OAAOiC,KAAK+Z,EAAEqI,YAAY/iB,KAAI,SAAUG,GAAO,OAAO2xB,EAC3DpX,EAAEqI,WAAW5iB,GACbua,EAAEwG,UAAU/gB,GACZua,EAAGva,UAKT,SAAS0zB,GAASnwB,GAChB,OAAOpE,MAAMX,UAAUoB,OAAOmD,MAAM,GAAIQ,GAG1C,IAAIowB,GACgB,oBAAX90B,QACuB,kBAAvBA,OAAO+0B,YAEhB,SAASP,GAAYpxB,GACnB,OAAOA,EAAI4xB,YAAeF,IAAyC,WAA5B1xB,EAAIpD,OAAO+0B,aAOpD,SAAS7d,GAAM4b,GACb,IAAImC,GAAS,EACb,OAAO,WACL,IAAI9gB,EAAO,GAAI3O,EAAMnB,UAAUC,OAC/B,MAAQkB,IAAQ2O,EAAM3O,GAAQnB,UAAWmB,GAEzC,IAAIyvB,EAEJ,OADAA,GAAS,EACFnC,EAAG5uB,MAAM6I,KAAMoH,IAM1B,IAAI+gB,GAAU,SAAkB9nB,EAAQrF,GACtCgF,KAAKK,OAASA,EACdL,KAAKhF,KAAOotB,GAAcptB,GAE1BgF,KAAK+U,QAAUZ,EACfnU,KAAKonB,QAAU,KACfpnB,KAAKqoB,OAAQ,EACbroB,KAAKsoB,SAAW,GAChBtoB,KAAKuoB,cAAgB,GACrBvoB,KAAKwoB,SAAW,GAChBxoB,KAAKyoB,UAAY,IAmNnB,SAASL,GAAeptB,GACtB,IAAKA,EACH,GAAIilB,GAAW,CAEb,IAAIyI,EAASpqB,SAASF,cAAc,QACpCpD,EAAQ0tB,GAAUA,EAAOxgB,aAAa,SAAY,IAElDlN,EAAOA,EAAK4J,QAAQ,qBAAsB,SAE1C5J,EAAO,IAQX,MAJuB,MAAnBA,EAAK6c,OAAO,KACd7c,EAAO,IAAMA,GAGRA,EAAK4J,QAAQ,MAAO,IAG7B,SAAS+jB,GACP5T,EACAhf,GAEA,IAAIsB,EACAuxB,EAAMC,KAAKD,IAAI7T,EAAQxd,OAAQxB,EAAKwB,QACxC,IAAKF,EAAI,EAAGA,EAAIuxB,EAAKvxB,IACnB,GAAI0d,EAAQ1d,KAAOtB,EAAKsB,GACtB,MAGJ,MAAO,CACLyxB,QAAS/yB,EAAKuC,MAAM,EAAGjB,GACvB0xB,UAAWhzB,EAAKuC,MAAMjB,GACtB2xB,YAAajU,EAAQzc,MAAMjB,IAI/B,SAAS4xB,GACPC,EACA3wB,EACA4wB,EACAC,GAEA,IAAIC,EAAShC,GAAkB6B,GAAS,SAAU5B,EAAKlS,EAAUyF,EAAOzmB,GACtE,IAAIk1B,EAAQC,GAAajC,EAAK/uB,GAC9B,GAAI+wB,EACF,OAAO/1B,MAAMC,QAAQ81B,GACjBA,EAAMr1B,KAAI,SAAUq1B,GAAS,OAAOH,EAAKG,EAAOlU,EAAUyF,EAAOzmB,MACjE+0B,EAAKG,EAAOlU,EAAUyF,EAAOzmB,MAGrC,OAAO0zB,GAAQsB,EAAUC,EAAOD,UAAYC,GAG9C,SAASE,GACPjC,EACAlzB,GAMA,MAJmB,oBAARkzB,IAETA,EAAMrL,GAAKrK,OAAO0V,IAEbA,EAAI5zB,QAAQU,GAGrB,SAASo1B,GAAoBR,GAC3B,OAAOC,GAAcD,EAAa,mBAAoBS,IAAW,GAGnE,SAASC,GAAoBZ,GAC3B,OAAOG,GAAcH,EAAS,oBAAqBW,IAGrD,SAASA,GAAWH,EAAOlU,GACzB,GAAIA,EACF,OAAO,WACL,OAAOkU,EAAMnyB,MAAMie,EAAU9d,YAKnC,SAASqyB,GACPZ,GAEA,OAAOE,GACLF,EACA,oBACA,SAAUO,EAAOt0B,EAAG6lB,EAAOzmB,GACzB,OAAOw1B,GAAeN,EAAOzO,EAAOzmB,MAK1C,SAASw1B,GACPN,EACAzO,EACAzmB,GAEA,OAAO,SAA0BqM,EAAIvI,EAAMnC,GACzC,OAAOuzB,EAAM7oB,EAAIvI,GAAM,SAAU8tB,GACb,oBAAPA,IACJnL,EAAMvF,WAAWlhB,KACpBymB,EAAMvF,WAAWlhB,GAAO,IAE1BymB,EAAMvF,WAAWlhB,GAAK8C,KAAK8uB,IAE7BjwB,EAAKiwB,OA3TXmC,GAAQv1B,UAAUi3B,OAAS,SAAiB7D,GAC1ChmB,KAAKgmB,GAAKA,GAGZmC,GAAQv1B,UAAUk3B,QAAU,SAAkB9D,EAAI+D,GAC5C/pB,KAAKqoB,MACPrC,KAEAhmB,KAAKsoB,SAASpxB,KAAK8uB,GACf+D,GACF/pB,KAAKuoB,cAAcrxB,KAAK6yB,KAK9B5B,GAAQv1B,UAAUo3B,QAAU,SAAkBD,GAC5C/pB,KAAKwoB,SAAStxB,KAAK6yB,IAGrB5B,GAAQv1B,UAAUq3B,aAAe,SAC/BzW,EACA0W,EACAC,GAEE,IAEEzW,EAFEkJ,EAAS5c,KAIf,IACE0T,EAAQ1T,KAAKK,OAAOwa,MAAMrH,EAAUxT,KAAK+U,SACzC,MAAO7b,GAKP,MAJA8G,KAAKwoB,SAASnzB,SAAQ,SAAU2wB,GAC9BA,EAAG9sB,MAGCA,EAER,IAAIpD,EAAOkK,KAAK+U,QAChB/U,KAAKoqB,kBACH1W,GACA,WACEkJ,EAAOyN,YAAY3W,GACnBwW,GAAcA,EAAWxW,GACzBkJ,EAAO0N,YACP1N,EAAOvc,OAAOkqB,WAAWl1B,SAAQ,SAAU6hB,GACzCA,GAAQA,EAAKxD,EAAO5d,MAIjB8mB,EAAOyL,QACVzL,EAAOyL,OAAQ,EACfzL,EAAO0L,SAASjzB,SAAQ,SAAU2wB,GAChCA,EAAGtS,UAIT,SAAUta,GACJ+wB,GACFA,EAAQ/wB,GAENA,IAAQwjB,EAAOyL,QAKZrB,GAAoB5tB,EAAK6sB,GAAsBC,aAAepwB,IAASqe,IAC1EyI,EAAOyL,OAAQ,EACfzL,EAAO2L,cAAclzB,SAAQ,SAAU2wB,GACrCA,EAAG5sB,YAQf+uB,GAAQv1B,UAAUw3B,kBAAoB,SAA4B1W,EAAOwW,EAAYC,GACjF,IAAIvN,EAAS5c,KAEX+U,EAAU/U,KAAK+U,QACnB/U,KAAKonB,QAAU1T,EACf,IAAI8W,EAAQ,SAAUpxB,IAIf4tB,GAAoB5tB,IAAQ2tB,GAAQ3tB,KACnCwjB,EAAO4L,SAASjxB,OAClBqlB,EAAO4L,SAASnzB,SAAQ,SAAU2wB,GAChCA,EAAG5sB,OAGLiB,GAAK,EAAO,2CACZD,QAAQssB,MAAMttB,KAGlB+wB,GAAWA,EAAQ/wB,IAEjBqxB,EAAiB/W,EAAMM,QAAQzc,OAAS,EACxCmzB,EAAmB3V,EAAQf,QAAQzc,OAAS,EAChD,GACEgd,EAAYb,EAAOqB,IAEnB0V,IAAmBC,GACnBhX,EAAMM,QAAQyW,KAAoB1V,EAAQf,QAAQ0W,GAGlD,OADA1qB,KAAKsqB,YACEE,EAAM/D,GAAgC1R,EAASrB,IAGxD,IAAIW,EAAMsU,GACR3oB,KAAK+U,QAAQf,QACbN,EAAMM,SAEF8U,EAAUzU,EAAIyU,QACdE,EAAc3U,EAAI2U,YAClBD,EAAY1U,EAAI0U,UAElBjD,EAAQ,GAAG9xB,OAEbw1B,GAAmBR,GAEnBhpB,KAAKK,OAAOsqB,YAEZjB,GAAmBZ,GAEnBC,EAAU90B,KAAI,SAAU0a,GAAK,OAAOA,EAAEyS,eAEtC8F,GAAuB6B,IAGrBzyB,EAAW,SAAU4gB,EAAMnhB,GAC7B,GAAI6mB,EAAOwK,UAAY1T,EACrB,OAAO8W,EAAM7D,GAA+B5R,EAASrB,IAEvD,IACEwD,EAAKxD,EAAOqB,GAAS,SAAUtU,IAClB,IAAPA,GAEFmc,EAAO0N,WAAU,GACjBE,EAAM5D,GAA6B7R,EAASrB,KACnCqT,GAAQtmB,IACjBmc,EAAO0N,WAAU,GACjBE,EAAM/pB,IAEQ,kBAAPA,GACQ,kBAAPA,IACc,kBAAZA,EAAGkT,MAAwC,kBAAZlT,EAAGlI,OAG5CiyB,EAAMlE,GAAgCvR,EAASrB,IAC7B,kBAAPjT,GAAmBA,EAAGmE,QAC/BgY,EAAOhY,QAAQnE,GAEfmc,EAAO1lB,KAAKuJ,IAId1K,EAAK0K,MAGT,MAAOvH,GACPsxB,EAAMtxB,KAIV2sB,GAASC,EAAOxvB,GAAU,WAGxB,IAAIs0B,EAAcjB,GAAmBZ,GACjCjD,EAAQ8E,EAAY52B,OAAO4oB,EAAOvc,OAAOwqB,cAC7ChF,GAASC,EAAOxvB,GAAU,WACxB,GAAIsmB,EAAOwK,UAAY1T,EACrB,OAAO8W,EAAM7D,GAA+B5R,EAASrB,IAEvDkJ,EAAOwK,QAAU,KACjB8C,EAAWxW,GACPkJ,EAAOvc,OAAOwjB,KAChBjH,EAAOvc,OAAOwjB,IAAIljB,WAAU,WAC1BuU,EAAmBxB,aAO7ByU,GAAQv1B,UAAUy3B,YAAc,SAAsB3W,GACpD1T,KAAK+U,QAAUrB,EACf1T,KAAKgmB,IAAMhmB,KAAKgmB,GAAGtS,IAGrByU,GAAQv1B,UAAUk4B,eAAiB,aAInC3C,GAAQv1B,UAAUm4B,SAAW,WAG3B/qB,KAAKyoB,UAAUpzB,SAAQ,SAAU21B,GAC/BA,OAEFhrB,KAAKyoB,UAAY,GAIjBzoB,KAAK+U,QAAUZ,EACfnU,KAAKonB,QAAU,MAqHjB,IAAI6D,GAA6B,SAAU9C,GACzC,SAAS8C,EAAc5qB,EAAQrF,GAC7BmtB,EAAQr1B,KAAKkN,KAAMK,EAAQrF,GAE3BgF,KAAKkrB,eAAiBC,GAAYnrB,KAAKhF,MAmFzC,OAhFKmtB,IAAU8C,EAAaG,UAAYjD,GACxC8C,EAAar4B,UAAYD,OAAO0oB,OAAQ8M,GAAWA,EAAQv1B,WAC3Dq4B,EAAar4B,UAAU2D,YAAc00B,EAErCA,EAAar4B,UAAUk4B,eAAiB,WACtC,IAAIlO,EAAS5c,KAEb,KAAIA,KAAKyoB,UAAUlxB,OAAS,GAA5B,CAIA,IAAI8I,EAASL,KAAKK,OACdgrB,EAAehrB,EAAO3M,QAAQqwB,eAC9BuH,EAAiB/F,IAAqB8F,EAEtCC,GACFtrB,KAAKyoB,UAAUvxB,KAAK8rB,MAGtB,IAAIuI,EAAqB,WACvB,IAAIxW,EAAU6H,EAAO7H,QAIjBvB,EAAW2X,GAAYvO,EAAO5hB,MAC9B4hB,EAAO7H,UAAYZ,GAASX,IAAaoJ,EAAOsO,gBAIpDtO,EAAOqN,aAAazW,GAAU,SAAUE,GAClC4X,GACF3H,GAAatjB,EAAQqT,EAAOqB,GAAS,OAI3C/a,OAAO4N,iBAAiB,WAAY2jB,GACpCvrB,KAAKyoB,UAAUvxB,MAAK,WAClB8C,OAAO0pB,oBAAoB,WAAY6H,QAI3CN,EAAar4B,UAAU44B,GAAK,SAAanzB,GACvC2B,OAAOwlB,QAAQgM,GAAGnzB,IAGpB4yB,EAAar4B,UAAUsE,KAAO,SAAesc,EAAU0W,EAAYC,GACjE,IAAIvN,EAAS5c,KAETqU,EAAMrU,KACNyrB,EAAYpX,EAAIU,QACpB/U,KAAKiqB,aAAazW,GAAU,SAAUE,GACpCiS,GAAUtN,EAAUuE,EAAO5hB,KAAO0Y,EAAMI,WACxC6P,GAAa/G,EAAOvc,OAAQqT,EAAO+X,GAAW,GAC9CvB,GAAcA,EAAWxW,KACxByW,IAGLc,EAAar4B,UAAUgS,QAAU,SAAkB4O,EAAU0W,EAAYC,GACvE,IAAIvN,EAAS5c,KAETqU,EAAMrU,KACNyrB,EAAYpX,EAAIU,QACpB/U,KAAKiqB,aAAazW,GAAU,SAAUE,GACpC8P,GAAanL,EAAUuE,EAAO5hB,KAAO0Y,EAAMI,WAC3C6P,GAAa/G,EAAOvc,OAAQqT,EAAO+X,GAAW,GAC9CvB,GAAcA,EAAWxW,KACxByW,IAGLc,EAAar4B,UAAU03B,UAAY,SAAoBpzB,GACrD,GAAIi0B,GAAYnrB,KAAKhF,QAAUgF,KAAK+U,QAAQjB,SAAU,CACpD,IAAIiB,EAAUsD,EAAUrY,KAAKhF,KAAOgF,KAAK+U,QAAQjB,UACjD5c,EAAOyuB,GAAU5Q,GAAWyO,GAAazO,KAI7CkW,EAAar4B,UAAU84B,mBAAqB,WAC1C,OAAOP,GAAYnrB,KAAKhF,OAGnBiwB,EAvFuB,CAwF9B9C,IAEF,SAASgD,GAAanwB,GACpB,IAAI2Y,EAAO3Z,OAAOwZ,SAASmY,SAI3B,OAHI3wB,GAA2D,IAAnD2Y,EAAKiY,cAAc5W,QAAQha,EAAK4wB,iBAC1CjY,EAAOA,EAAKrb,MAAM0C,EAAKzD,UAEjBoc,GAAQ,KAAO3Z,OAAOwZ,SAASqY,OAAS7xB,OAAOwZ,SAASI,KAKlE,IAAIkY,GAA4B,SAAU3D,GACxC,SAAS2D,EAAazrB,EAAQrF,EAAM+wB,GAClC5D,EAAQr1B,KAAKkN,KAAMK,EAAQrF,GAEvB+wB,GAAYC,GAAchsB,KAAKhF,OAGnCixB,KA+FF,OA5FK9D,IAAU2D,EAAYV,UAAYjD,GACvC2D,EAAYl5B,UAAYD,OAAO0oB,OAAQ8M,GAAWA,EAAQv1B,WAC1Dk5B,EAAYl5B,UAAU2D,YAAcu1B,EAIpCA,EAAYl5B,UAAUk4B,eAAiB,WACrC,IAAIlO,EAAS5c,KAEb,KAAIA,KAAKyoB,UAAUlxB,OAAS,GAA5B,CAIA,IAAI8I,EAASL,KAAKK,OACdgrB,EAAehrB,EAAO3M,QAAQqwB,eAC9BuH,EAAiB/F,IAAqB8F,EAEtCC,GACFtrB,KAAKyoB,UAAUvxB,KAAK8rB,MAGtB,IAAIuI,EAAqB,WACvB,IAAIxW,EAAU6H,EAAO7H,QAChBkX,MAGLrP,EAAOqN,aAAaiC,MAAW,SAAUxY,GACnC4X,GACF3H,GAAa/G,EAAOvc,OAAQqT,EAAOqB,GAAS,GAEzCwQ,IACH4G,GAAYzY,EAAMI,cAIpBsY,EAAY7G,GAAoB,WAAa,aACjDvrB,OAAO4N,iBACLwkB,EACAb,GAEFvrB,KAAKyoB,UAAUvxB,MAAK,WAClB8C,OAAO0pB,oBAAoB0I,EAAWb,QAI1CO,EAAYl5B,UAAUsE,KAAO,SAAesc,EAAU0W,EAAYC,GAChE,IAAIvN,EAAS5c,KAETqU,EAAMrU,KACNyrB,EAAYpX,EAAIU,QACpB/U,KAAKiqB,aACHzW,GACA,SAAUE,GACR2Y,GAAS3Y,EAAMI,UACf6P,GAAa/G,EAAOvc,OAAQqT,EAAO+X,GAAW,GAC9CvB,GAAcA,EAAWxW,KAE3ByW,IAIJ2B,EAAYl5B,UAAUgS,QAAU,SAAkB4O,EAAU0W,EAAYC,GACtE,IAAIvN,EAAS5c,KAETqU,EAAMrU,KACNyrB,EAAYpX,EAAIU,QACpB/U,KAAKiqB,aACHzW,GACA,SAAUE,GACRyY,GAAYzY,EAAMI,UAClB6P,GAAa/G,EAAOvc,OAAQqT,EAAO+X,GAAW,GAC9CvB,GAAcA,EAAWxW,KAE3ByW,IAIJ2B,EAAYl5B,UAAU44B,GAAK,SAAanzB,GACtC2B,OAAOwlB,QAAQgM,GAAGnzB,IAGpByzB,EAAYl5B,UAAU03B,UAAY,SAAoBpzB,GACpD,IAAI6d,EAAU/U,KAAK+U,QAAQjB,SACvBoY,OAAcnX,IAChB7d,EAAOm1B,GAAStX,GAAWoX,GAAYpX,KAI3C+W,EAAYl5B,UAAU84B,mBAAqB,WACzC,OAAOQ,MAGFJ,EAtGsB,CAuG7B3D,IAEF,SAAS6D,GAAehxB,GACtB,IAAIwY,EAAW2X,GAAYnwB,GAC3B,IAAK,OAAOxC,KAAKgb,GAEf,OADAxZ,OAAOwZ,SAAS5O,QAAQyT,EAAUrd,EAAO,KAAOwY,KACzC,EAIX,SAASyY,KACP,IAAItY,EAAOuY,KACX,MAAuB,MAAnBvY,EAAKkE,OAAO,KAGhBsU,GAAY,IAAMxY,IACX,GAGT,SAASuY,KAGP,IAAIrP,EAAO7iB,OAAOwZ,SAASqJ,KACvBhY,EAAQgY,EAAK7H,QAAQ,KAEzB,OAAInQ,EAAQ,EAAY,IAExBgY,EAAOA,EAAKvkB,MAAMuM,EAAQ,GAEnBgY,GAGT,SAASyP,GAAQ3Y,GACf,IAAIkJ,EAAO7iB,OAAOwZ,SAASqJ,KACvBxlB,EAAIwlB,EAAK7H,QAAQ,KACjBha,EAAO3D,GAAK,EAAIwlB,EAAKvkB,MAAM,EAAGjB,GAAKwlB,EACvC,OAAQ7hB,EAAO,IAAM2Y,EAGvB,SAAS0Y,GAAU1Y,GACb4R,GACFI,GAAU2G,GAAO3Y,IAEjB3Z,OAAOwZ,SAASI,KAAOD,EAI3B,SAASwY,GAAaxY,GAChB4R,GACF/B,GAAa8I,GAAO3Y,IAEpB3Z,OAAOwZ,SAAS5O,QAAQ0nB,GAAO3Y,IAMnC,IAAI4Y,GAAgC,SAAUpE,GAC5C,SAASoE,EAAiBlsB,EAAQrF,GAChCmtB,EAAQr1B,KAAKkN,KAAMK,EAAQrF,GAC3BgF,KAAK8X,MAAQ,GACb9X,KAAK6E,OAAS,EAqEhB,OAlEKsjB,IAAUoE,EAAgBnB,UAAYjD,GAC3CoE,EAAgB35B,UAAYD,OAAO0oB,OAAQ8M,GAAWA,EAAQv1B,WAC9D25B,EAAgB35B,UAAU2D,YAAcg2B,EAExCA,EAAgB35B,UAAUsE,KAAO,SAAesc,EAAU0W,EAAYC,GACpE,IAAIvN,EAAS5c,KAEbA,KAAKiqB,aACHzW,GACA,SAAUE,GACRkJ,EAAO9E,MAAQ8E,EAAO9E,MAAMxf,MAAM,EAAGskB,EAAO/X,MAAQ,GAAG7Q,OAAO0f,GAC9DkJ,EAAO/X,QACPqlB,GAAcA,EAAWxW,KAE3ByW,IAIJoC,EAAgB35B,UAAUgS,QAAU,SAAkB4O,EAAU0W,EAAYC,GAC1E,IAAIvN,EAAS5c,KAEbA,KAAKiqB,aACHzW,GACA,SAAUE,GACRkJ,EAAO9E,MAAQ8E,EAAO9E,MAAMxf,MAAM,EAAGskB,EAAO/X,OAAO7Q,OAAO0f,GAC1DwW,GAAcA,EAAWxW,KAE3ByW,IAIJoC,EAAgB35B,UAAU44B,GAAK,SAAanzB,GAC1C,IAAIukB,EAAS5c,KAETqF,EAAcrF,KAAK6E,MAAQxM,EAC/B,KAAIgN,EAAc,GAAKA,GAAerF,KAAK8X,MAAMvgB,QAAjD,CAGA,IAAImc,EAAQ1T,KAAK8X,MAAMzS,GACvBrF,KAAKoqB,kBACH1W,GACA,WACE,IAAI5d,EAAO8mB,EAAO7H,QAClB6H,EAAO/X,MAAQQ,EACfuX,EAAOyN,YAAY3W,GACnBkJ,EAAOvc,OAAOkqB,WAAWl1B,SAAQ,SAAU6hB,GACzCA,GAAQA,EAAKxD,EAAO5d,SAGxB,SAAUsD,GACJ4tB,GAAoB5tB,EAAK6sB,GAAsBI,cACjDzJ,EAAO/X,MAAQQ,QAMvBknB,EAAgB35B,UAAU84B,mBAAqB,WAC7C,IAAI3W,EAAU/U,KAAK8X,MAAM9X,KAAK8X,MAAMvgB,OAAS,GAC7C,OAAOwd,EAAUA,EAAQjB,SAAW,KAGtCyY,EAAgB35B,UAAU03B,UAAY,aAI/BiC,EAzE0B,CA0EjCpE,IAIEqE,GAAY,SAAoB94B,QACjB,IAAZA,IAAqBA,EAAU,IAEpCsM,KAAK6jB,IAAM,KACX7jB,KAAKysB,KAAO,GACZzsB,KAAKtM,QAAUA,EACfsM,KAAK2qB,YAAc,GACnB3qB,KAAK6qB,aAAe,GACpB7qB,KAAKuqB,WAAa,GAClBvqB,KAAK0sB,QAAUjL,GAAc/tB,EAAQysB,QAAU,GAAIngB,MAEnD,IAAI2sB,EAAOj5B,EAAQi5B,MAAQ,OAW3B,OAVA3sB,KAAK+rB,SACM,YAATY,IAAuBpH,KAA0C,IAArB7xB,EAAQq4B,SAClD/rB,KAAK+rB,WACPY,EAAO,QAEJ1M,KACH0M,EAAO,YAET3sB,KAAK2sB,KAAOA,EAEJA,GACN,IAAK,UACH3sB,KAAKwf,QAAU,IAAIyL,GAAajrB,KAAMtM,EAAQsH,MAC9C,MACF,IAAK,OACHgF,KAAKwf,QAAU,IAAIsM,GAAY9rB,KAAMtM,EAAQsH,KAAMgF,KAAK+rB,UACxD,MACF,IAAK,WACH/rB,KAAKwf,QAAU,IAAI+M,GAAgBvsB,KAAMtM,EAAQsH,MACjD,MACF,QACM,IAMN4xB,GAAqB,CAAEjL,aAAc,CAAEhrB,cAAc,IAoLzD,SAASk2B,GAAcC,EAAM/G,GAE3B,OADA+G,EAAK51B,KAAK6uB,GACH,WACL,IAAI1uB,EAAIy1B,EAAK9X,QAAQ+Q,GACjB1uB,GAAK,GAAKy1B,EAAKpnB,OAAOrO,EAAG,IAIjC,SAAS01B,GAAY/xB,EAAM8Y,EAAU6Y,GACnC,IAAIhZ,EAAgB,SAATgZ,EAAkB,IAAM7Y,EAAWA,EAC9C,OAAO9Y,EAAOqd,EAAUrd,EAAO,IAAM2Y,GAAQA,EA5L/C6Y,GAAU55B,UAAUioB,MAAQ,SAAgBc,EAAK5G,EAAStB,GACxD,OAAOzT,KAAK0sB,QAAQ7R,MAAMc,EAAK5G,EAAStB,IAG1CmZ,GAAmBjL,aAAahgB,IAAM,WACpC,OAAO3B,KAAKwf,SAAWxf,KAAKwf,QAAQzK,SAGtCyX,GAAU55B,UAAU0kB,KAAO,SAAeuM,GACtC,IAAIjH,EAAS5c,KA0Bf,GAjBAA,KAAKysB,KAAKv1B,KAAK2sB,GAIfA,EAAIhiB,MAAM,kBAAkB,WAE1B,IAAIgD,EAAQ+X,EAAO6P,KAAKzX,QAAQ6O,GAC5Bhf,GAAS,GAAK+X,EAAO6P,KAAK/mB,OAAOb,EAAO,GAGxC+X,EAAOiH,MAAQA,IAAOjH,EAAOiH,IAAMjH,EAAO6P,KAAK,IAAM,MAEpD7P,EAAOiH,KAAOjH,EAAO4C,QAAQuL,eAKhC/qB,KAAK6jB,IAAT,CAIA7jB,KAAK6jB,IAAMA,EAEX,IAAIrE,EAAUxf,KAAKwf,QAEnB,GAAIA,aAAmByL,IAAgBzL,aAAmBsM,GAAa,CACrE,IAAIkB,EAAsB,SAAUC,GAClC,IAAI/0B,EAAOsnB,EAAQzK,QACfsW,EAAezO,EAAOlpB,QAAQqwB,eAC9BuH,EAAiB/F,IAAqB8F,EAEtCC,GAAkB,aAAc2B,GAClCtJ,GAAa/G,EAAQqQ,EAAc/0B,GAAM,IAGzC4yB,EAAiB,SAAUmC,GAC7BzN,EAAQsL,iBACRkC,EAAoBC,IAEtBzN,EAAQyK,aACNzK,EAAQkM,qBACRZ,EACAA,GAIJtL,EAAQqK,QAAO,SAAUnW,GACvBkJ,EAAO6P,KAAKp3B,SAAQ,SAAUwuB,GAC5BA,EAAInE,OAAShM,UAKnB8Y,GAAU55B,UAAU4N,WAAa,SAAqBulB,GACpD,OAAO8G,GAAa7sB,KAAK2qB,YAAa5E,IAGxCyG,GAAU55B,UAAUs6B,cAAgB,SAAwBnH,GAC1D,OAAO8G,GAAa7sB,KAAK6qB,aAAc9E,IAGzCyG,GAAU55B,UAAU8N,UAAY,SAAoBqlB,GAClD,OAAO8G,GAAa7sB,KAAKuqB,WAAYxE,IAGvCyG,GAAU55B,UAAUk3B,QAAU,SAAkB9D,EAAI+D,GAClD/pB,KAAKwf,QAAQsK,QAAQ9D,EAAI+D,IAG3ByC,GAAU55B,UAAUo3B,QAAU,SAAkBD,GAC9C/pB,KAAKwf,QAAQwK,QAAQD,IAGvByC,GAAU55B,UAAUsE,KAAO,SAAesc,EAAU0W,EAAYC,GAC5D,IAAIvN,EAAS5c,KAGf,IAAKkqB,IAAeC,GAA8B,qBAAZ3Z,QACpC,OAAO,IAAIA,SAAQ,SAAUC,EAASO,GACpC4L,EAAO4C,QAAQtoB,KAAKsc,EAAU/C,EAASO,MAGzChR,KAAKwf,QAAQtoB,KAAKsc,EAAU0W,EAAYC,IAI5CqC,GAAU55B,UAAUgS,QAAU,SAAkB4O,EAAU0W,EAAYC,GAClE,IAAIvN,EAAS5c,KAGf,IAAKkqB,IAAeC,GAA8B,qBAAZ3Z,QACpC,OAAO,IAAIA,SAAQ,SAAUC,EAASO,GACpC4L,EAAO4C,QAAQ5a,QAAQ4O,EAAU/C,EAASO,MAG5ChR,KAAKwf,QAAQ5a,QAAQ4O,EAAU0W,EAAYC,IAI/CqC,GAAU55B,UAAU44B,GAAK,SAAanzB,GACpC2H,KAAKwf,QAAQgM,GAAGnzB,IAGlBm0B,GAAU55B,UAAUu6B,KAAO,WACzBntB,KAAKwrB,IAAI,IAGXgB,GAAU55B,UAAUw6B,QAAU,WAC5BptB,KAAKwrB,GAAG,IAGVgB,GAAU55B,UAAUy6B,qBAAuB,SAA+B5sB,GACxE,IAAIiT,EAAQjT,EACRA,EAAGuT,QACDvT,EACAT,KAAKyQ,QAAQhQ,GAAIiT,MACnB1T,KAAK2hB,aACT,OAAKjO,EAGE,GAAG1f,OAAOmD,MACf,GACAuc,EAAMM,QAAQ/f,KAAI,SAAU0a,GAC1B,OAAOhc,OAAOiC,KAAK+Z,EAAEqI,YAAY/iB,KAAI,SAAUG,GAC7C,OAAOua,EAAEqI,WAAW5iB,UANjB,IAYXo4B,GAAU55B,UAAU6d,QAAU,SAC5BhQ,EACAsU,EACA4C,GAEA5C,EAAUA,GAAW/U,KAAKwf,QAAQzK,QAClC,IAAIvB,EAAWkI,GAAkBjb,EAAIsU,EAAS4C,EAAQ3X,MAClD0T,EAAQ1T,KAAK6a,MAAMrH,EAAUuB,GAC7BjB,EAAWJ,EAAMD,gBAAkBC,EAAMI,SACzC9Y,EAAOgF,KAAKwf,QAAQxkB,KACpB6hB,EAAOkQ,GAAW/xB,EAAM8Y,EAAU9T,KAAK2sB,MAC3C,MAAO,CACLnZ,SAAUA,EACVE,MAAOA,EACPmJ,KAAMA,EAENyQ,aAAc9Z,EACdkU,SAAUhU,IAId8Y,GAAU55B,UAAU8uB,UAAY,SAAoBvB,GAClDngB,KAAK0sB,QAAQhL,UAAUvB,GACnBngB,KAAKwf,QAAQzK,UAAYZ,GAC3BnU,KAAKwf,QAAQyK,aAAajqB,KAAKwf,QAAQkM,uBAI3C/4B,OAAO8E,iBAAkB+0B,GAAU55B,UAAWg6B,IAe9CJ,GAAUzc,QAAUA,GACpByc,GAAUr2B,QAAU,QACpBq2B,GAAUxF,oBAAsBA,GAChCwF,GAAUvG,sBAAwBA,GAE9BhG,IAAajmB,OAAOgH,KACtBhH,OAAOgH,IAAIusB,IAAIf,IAGF,W;;;;;;CCv+Fd,SAASxmB,EAAE9M,GAAwDjD,EAAOC,QAAQgD,IAAlF,CAAyJ8G,GAAK,WAAW,aAAa,SAASgG,EAAEA,EAAE9M,EAAE7B,GAAG,OAAO6B,KAAK8M,EAAErT,OAAO8D,eAAeuP,EAAE9M,EAAE,CAAC3G,MAAM8E,EAAEX,YAAW,EAAGC,cAAa,EAAGC,UAAS,IAAKoP,EAAE9M,GAAG7B,EAAE2O,EAAE,SAAS9M,EAAEA,GAAG,IAAI,IAAI7B,EAAE,EAAEA,EAAEC,UAAUC,OAAOF,IAAI,CAAC,IAAIgB,EAAE,MAAMf,UAAUD,GAAGC,UAAUD,GAAG,GAAG2B,EAAErG,OAAOiC,KAAKyD,GAAG,mBAAmB1F,OAAO4B,wBAAwByE,EAAEA,EAAEhF,OAAOrB,OAAO4B,sBAAsB8D,GAAG7D,QAAO,SAASwR,GAAG,OAAOrT,OAAOsE,yBAAyBoB,EAAE2N,GAAGtP,gBAAesC,EAAE3D,SAAQ,SAASgC,GAAG2O,EAAE9M,EAAE7B,EAAEgB,EAAEhB,OAAM,OAAO6B,EAAE,IAAI7B,EAAE,CAACkB,KAAK,gBAAgB+N,KAAK,WAAW,MAAM,CAACknB,MAAK,EAAGC,KAAK,EAAEC,aAAa,EAAEC,cAAc,EAAEC,mBAAkB,EAAGxqB,SAAS,EAAEyqB,MAAK,EAAGC,UAAS,EAAGC,gBAAgB70B,EAAE,CAAC80B,MAAM,UAAU,cAAc,oBAAoB,YAAY,QAAQhuB,KAAKiuB,OAAOC,eAAevY,MAAM,CAACrP,KAAK,CAAClH,KAAK7L,MAAMqiB,QAAQ,MAAMuY,GAAG,CAAC/uB,KAAKyT,OAAO+C,QAAQ,QAAQwY,MAAM,CAAChvB,KAAK7L,MAAMqiB,QAAQ,MAAMyY,MAAM,CAACjvB,KAAKkvB,OAAO1Y,QAAQ,IAAI2Y,WAAW,CAACnvB,KAAKkvB,OAAO1Y,QAAQ,GAAG4Y,UAAU,CAACpvB,KAAKkvB,OAAO1Y,QAAQ,IAAIrjB,MAAM,CAAC6M,KAAK,CAACyT,OAAOyb,QAAQ1Y,QAAQ,GAAG6Y,IAAI,CAACrvB,KAAKkvB,OAAO1Y,QAAQ,GAAGgT,IAAI,CAACxpB,KAAKkvB,OAAO1Y,QAAQ,KAAK8Y,YAAY,CAACtvB,KAAK8J,QAAQ0M,SAAQ,GAAI+Y,WAAW,CAACvvB,KAAK8J,QAAQ0M,SAAQ,GAAIgZ,UAAU,CAACxvB,KAAK8J,QAAQ0M,SAAQ,GAAIiZ,YAAY,CAACzvB,KAAK8J,QAAQ0M,SAAQ,GAAIkZ,cAAcn8B,OAAOu7B,YAAYv7B,OAAOo8B,aAAap8B,QAAQ8P,SAAS,CAACusB,OAAO,WAAW,OAAOhvB,KAAKivB,MAAMC,SAAS57B,IAAI,CAACqO,IAAI,WAAW,OAAO3B,KAAKsG,KAAKtG,KAAKsG,KAAKtG,KAAK0tB,cAAc1tB,KAAK0tB,cAAc5hB,IAAI,SAAS9F,GAAG,GAAGhG,KAAKsG,KAAK,CAAC,IAAIpN,EAAE8G,KAAKsG,KAAK0O,QAAQhP,GAAG9M,GAAG,IAAI8G,KAAK0tB,aAAax0B,QAAQ8G,KAAK0tB,aAAa1nB,IAAImpB,aAAa,WAAW,OAAOnvB,KAAK0tB,aAAa1tB,KAAKovB,SAASpvB,KAAKqvB,SAASC,WAAW,WAAW,MAAM,CAAC,EAAEtvB,KAAKmvB,eAAeC,QAAQ,WAAW,OAAOpvB,KAAKsG,KAAK,EAAEtG,KAAKyuB,KAAKc,QAAQ,WAAW,OAAOvvB,KAAKsG,KAAKtG,KAAKsG,KAAK/O,OAAO,EAAEyI,KAAK4oB,KAAK4G,SAAS,WAAW,IAAIxpB,EAAE,GAAGhS,OAAOgM,KAAKoD,UAAU2P,MAAM,KAAK,GAAG,OAAO/M,EAAE6iB,KAAK4G,IAAI,GAAGzpB,EAAEzO,QAAQ,GAAG83B,QAAQ,WAAW,OAAOrvB,KAAKsG,KAAK,EAAEtG,KAAKoD,UAAUssB,MAAM,WAAW,OAAO1vB,KAAKsG,KAAKtG,KAAKsG,KAAK/O,OAAO,GAAGsxB,KAAK8G,OAAO3vB,KAAKuvB,QAAQvvB,KAAKovB,SAASpvB,KAAKwvB,WAAWxvB,KAAKoD,SAASpD,KAAKwvB,WAAW,GAAGxvB,KAAK4vB,WAAW,wGAAwG5vB,KAAKuvB,QAAQvvB,KAAKovB,SAASpvB,KAAKoD,WAAWysB,IAAI,WAAW,OAAO7vB,KAAKytB,KAAKztB,KAAK0vB,OAAO1L,SAAS,WAAW,OAAOhkB,KAAK0tB,aAAa1tB,KAAKovB,SAASpvB,KAAKqvB,QAAQrvB,KAAK6vB,KAAKC,MAAM,WAAW,MAAM,CAAC,EAAE9vB,KAAKytB,OAAOsC,WAAW,WAAW,MAAM,CAAC/vB,KAAKovB,QAAQpvB,KAAKuvB,UAAUS,gBAAgB,WAAW,OAAOhwB,KAAK6uB,YAAY,GAAG,CAAC,cAAc,OAAO,aAAa7uB,KAAKouB,MAAM,QAAQ,QAAQ6B,MAAM,CAAC19B,MAAM,SAASyT,GAAGhG,KAAKwtB,KAAKxtB,KAAKkwB,SAASlqB,GAAGhG,KAAKkwB,SAASlqB,EAAEhG,KAAKquB,QAAQzF,IAAI,SAAS5iB,GAAG,GAAGA,EAAEhG,KAAKyuB,IAAI,OAAOzuB,KAAK4vB,WAAW,kFAAkF,IAAI12B,EAAE8G,KAAKmwB,WAAWnwB,KAAK1M,KAAK0M,KAAKkwB,SAASh3B,GAAG8G,KAAKxC,WAAWixB,IAAI,SAASzoB,GAAG,GAAGA,EAAEhG,KAAK4oB,IAAI,OAAO5oB,KAAK4vB,WAAW,qFAAqF,IAAI12B,EAAE8G,KAAKmwB,WAAWnwB,KAAK1M,KAAK0M,KAAKkwB,SAASh3B,GAAG8G,KAAKxC,YAAY4yB,QAAQ,CAACC,WAAW,WAAW/xB,SAASsJ,iBAAiB,YAAY5H,KAAKswB,OAAO,CAACC,SAAQ,IAAKjyB,SAASsJ,iBAAiB,WAAW5H,KAAKwwB,QAAQ,CAACD,SAAQ,IAAKjyB,SAASsJ,iBAAiB,YAAY5H,KAAKswB,QAAQhyB,SAASsJ,iBAAiB,UAAU5H,KAAKwwB,SAASlyB,SAASsJ,iBAAiB,aAAa5H,KAAKwwB,SAASx2B,OAAO4N,iBAAiB,SAAS5H,KAAKxC,UAAUizB,aAAa,WAAWz2B,OAAO0pB,oBAAoB,SAAS1jB,KAAKxC,SAASc,SAASolB,oBAAoB,YAAY1jB,KAAKswB,QAAQhyB,SAASolB,oBAAoB,WAAW1jB,KAAKwwB,SAASlyB,SAASolB,oBAAoB,YAAY1jB,KAAKswB,QAAQhyB,SAASolB,oBAAoB,UAAU1jB,KAAKwwB,SAASlyB,SAASolB,oBAAoB,aAAa1jB,KAAKwwB,UAAUE,OAAO,SAAS1qB,GAAG,OAAOhG,KAAK8tB,UAAU9tB,KAAK2wB,gBAAgB3qB,EAAE4qB,QAAQ5wB,KAAKsZ,QAAQuX,UAAU,SAAS7qB,GAAG,GAAGhG,KAAK2uB,aAAa3uB,KAAK4uB,WAAW5oB,EAAElS,OAAOq6B,KAAKnuB,KAAKmuB,GAAG,OAAM,EAAG,IAAIj1B,EAAE8G,KAAK0wB,OAAO1qB,GAAGhG,KAAK8wB,cAAc53B,IAAI63B,UAAU,SAAS/qB,EAAE9M,GAAG,IAAI8G,KAAK4uB,UAAU,OAAM,EAAG5uB,KAAKwtB,MAAK,EAAGxtB,KAAKgxB,MAAM,YAAYhxB,OAAOswB,OAAO,SAAStqB,GAAG,IAAIhG,KAAKwtB,OAAOxtB,KAAK4uB,UAAU,OAAM,EAAG5oB,EAAE+Y,iBAAiB/Y,EAAEirB,eAAejrB,EAAEirB,cAAc,KAAKjrB,EAAEA,EAAEirB,cAAc,IAAIjxB,KAAK8wB,cAAc9wB,KAAK0wB,OAAO1qB,IAAG,IAAKwqB,QAAQ,SAASxqB,GAAG,IAAIhG,KAAKwtB,OAAOxtB,KAAK4uB,UAAU,OAAM,EAAG5uB,KAAKgxB,MAAM,UAAUhxB,MAAMA,KAAK6tB,MAAM7tB,KAAKkxB,OAAOlxB,KAAK1M,IAAI0M,KAAKzN,QAAQyN,KAAKmxB,YAAYnxB,KAAKwtB,MAAK,EAAGxtB,KAAKoxB,eAAeN,cAAc,SAAS9qB,EAAE9M,GAAG,IAAI7B,EAAE2I,KAAK8vB,MAAMz3B,EAAE2H,KAAK+vB,WAAW,GAAG/pB,GAAG3O,EAAE,IAAI2O,GAAG3O,EAAE,GAAG,CAAC2I,KAAKqxB,aAAarrB,GAAG,IAAIhN,GAAG6vB,KAAKyI,MAAMtrB,EAAEhG,KAAK6vB,MAAM7vB,KAAKqvB,QAAQrvB,KAAKwvB,UAAUxvB,KAAKovB,QAAQpvB,KAAKwvB,UAAUxvB,KAAKwvB,SAASxvB,KAAKuxB,gBAAgBv4B,EAAEE,QAAQ8M,EAAE3O,EAAE,IAAI2I,KAAKqxB,aAAah6B,EAAE,IAAI2I,KAAKuxB,gBAAgBl5B,EAAE,IAAI,IAAI2H,KAAK2tB,gBAAgB3tB,KAAK2tB,cAAc,KAAK3tB,KAAKqxB,aAAah6B,EAAE,IAAI2I,KAAKuxB,gBAAgBl5B,EAAE,IAAI,IAAI2H,KAAK2tB,gBAAgB3tB,KAAK2tB,cAAc,KAAKuD,OAAO,SAASlrB,EAAE9M,GAAG,OAAOvG,OAAOC,UAAUC,SAASC,KAAKkT,KAAKrT,OAAOC,UAAUC,SAASC,KAAKoG,KAAK3F,MAAMC,QAAQwS,IAAIA,EAAEzO,SAAS2B,EAAE3B,OAAOyO,EAAEiD,MAAK,SAASjD,EAAE3O,GAAG,OAAO2O,IAAI9M,EAAE7B,MAAK2O,IAAI9M,IAAIq4B,gBAAgB,SAASvrB,EAAE9M,GAAG,GAAG8M,EAAEhG,KAAKovB,SAASppB,EAAEhG,KAAKuvB,QAAQ,OAAM,EAAGvvB,KAAKkxB,OAAOlxB,KAAK0tB,aAAa1nB,KAAKhG,KAAK0tB,aAAa1nB,EAAEhG,KAAK6tB,MAAM7tB,KAAKwtB,MAAMxtB,KAAKmxB,aAAaj4B,GAAG8G,KAAKoxB,eAAeI,SAAS,SAASxrB,GAAGA,EAAEhG,KAAKqvB,QAAQrpB,EAAEhG,KAAKovB,QAAQpvB,KAAKuxB,gBAAgBvrB,IAAIkqB,SAAS,SAASlqB,EAAE9M,GAAG,IAAI7B,EAAE2I,KAAK,GAAGA,KAAKkxB,OAAOlxB,KAAK1M,IAAI0S,GAAG,CAAC,IAAI3N,EAAE2H,KAAKmwB,WAAWnqB,GAAGhG,KAAK1M,IAAI+E,EAAE2H,KAAKmxB,YAAYnxB,KAAKW,WAAU,WAAW,OAAOtJ,EAAE+5B,YAAYl4B,OAAMk4B,YAAY,SAASprB,GAAGhG,KAAKwtB,KAAKxtB,KAAKyxB,kBAAkB,GAAGzxB,KAAKyxB,uBAAkB,IAASzrB,EAAEhG,KAAKquB,MAAMroB,GAAGhG,KAAKqxB,aAAarxB,KAAKgkB,WAAWqN,aAAa,SAASrrB,GAAG,IAAI9M,EAAE8M,GAAGhG,KAAKivB,MAAMC,QAAQwC,YAAY,GAAG,EAAEr6B,EAAE,cAAcrD,OAAOkF,EAAE,OAAO8G,KAAKgvB,OAAO7zB,MAAMw2B,UAAUt6B,EAAE2I,KAAKgvB,OAAO7zB,MAAMy2B,gBAAgBv6B,EAAE2I,KAAKgvB,OAAO7zB,MAAM02B,YAAYx6B,EAAE2I,KAAKivB,MAAM6C,QAAQ32B,MAAM42B,MAAM,GAAG/9B,OAAOgS,EAAE,MAAMhG,KAAKivB,MAAM6C,QAAQ32B,MAAM2pB,KAAK,GAAG2M,kBAAkB,SAASzrB,GAAGhG,KAAKgvB,OAAO7zB,MAAM62B,mBAAmB,GAAGh+B,OAAOgS,EAAE,KAAKhG,KAAKgvB,OAAO7zB,MAAM82B,yBAAyB,GAAGj+B,OAAOgS,EAAE,KAAKhG,KAAKivB,MAAM6C,QAAQ32B,MAAM62B,mBAAmB,GAAGh+B,OAAOgS,EAAE,KAAKhG,KAAKivB,MAAM6C,QAAQ32B,MAAM82B,yBAAyB,GAAGj+B,OAAOgS,EAAE,MAAMmqB,WAAW,SAASnqB,GAAG,IAAqC3O,EAAjC6B,EAAE8G,KAAK,OAAGA,KAAKsG,KAAYN,GAAe3O,EAAE2O,GAAG9M,EAAEu1B,KAAKv1B,EAAE02B,WAAW,kDAAkD57B,OAAOgS,EAAE,2BAA2BhS,OAAOkF,EAAEu1B,IAAI,sEAAsEv1B,EAAEu1B,KAAKp3B,EAAE6B,EAAE0vB,KAAK1vB,EAAE02B,WAAW,kDAAkD57B,OAAOgS,EAAE,2BAA2BhS,OAAOkF,EAAE0vB,IAAI,yEAAyE1vB,EAAE0vB,KAAKvxB,GAAG85B,UAAU,WAAW,IAAInrB,EAAEhG,KAAK1M,IAAI0M,KAAKouB,OAAOpuB,KAAKgxB,MAAM,gBAAgBhxB,KAAKouB,MAAMpuB,KAAKmvB,eAAenvB,KAAKgxB,MAAM,QAAQhrB,IAAIksB,SAAS,WAAW,OAAOlyB,KAAK1M,KAAK6+B,SAAS,WAAW,OAAOnyB,KAAKmvB,cAAcwB,cAAc,WAAW3wB,KAAKivB,MAAMmD,OAAOpyB,KAAKytB,KAAKztB,KAAKivB,MAAMmD,KAAKC,YAAYryB,KAAKsZ,OAAOtZ,KAAKivB,MAAMmD,KAAKxN,wBAAwBE,OAAOtnB,QAAQ,WAAWwC,KAAKivB,MAAMmD,OAAOpyB,KAAK2wB,gBAAgB3wB,KAAKoxB,gBAAgBxB,WAAW,SAAS5pB,GAAG5L,QAAQssB,MAAM1gB,KAAKssB,QAAQ,WAAW,IAAItsB,EAAEhG,KAAK,GAAGA,KAAK4tB,mBAAkB,EAAG,oBAAoB5zB,QAAQ,oBAAoBsE,SAAS,OAAO0B,KAAK4vB,WAAW,oFAAoF5vB,KAAKW,WAAU,WAAWqF,EAAE4nB,oBAAoB5nB,EAAE2qB,gBAAgB3qB,EAAEkqB,SAASlqB,EAAEmqB,WAAWnqB,EAAEzT,OAAO,GAAGyT,EAAEqqB,kBAAiBkC,cAAc,WAAWvyB,KAAK4tB,mBAAkB,EAAG5tB,KAAKywB,iBAAiB,MAAMp4B,EAAE,oBAAoBotB,WAAW,gBAAgBjtB,KAAKitB,UAAUC,UAAUkG,eAAqB5yB,EAAEsF,SAASgL,MAAMhL,SAASK,qBAAqB,QAAQ,GAAGuS,EAAE,GAASW,EAAExa,EAAuB,OAArBA,EAAEm7B,OAAO,YAAmB,SAASxsB,EAAE9M,EAAE7B,EAAEgB,EAAEW,EAAEkY,EAAEW,EAAE1Z,EAAEwoB,EAAE8R,GAAG,mBAAmB5gB,IAAI8O,EAAExoB,EAAEA,EAAE0Z,EAAEA,GAAE,GAAI,MAAMnL,EAAE,mBAAmBrP,EAAEA,EAAE3D,QAAQ2D,EAAE,IAAI2e,EAAE,GAAGhQ,GAAGA,EAAE6P,SAASnP,EAAEmP,OAAO7P,EAAE6P,OAAOnP,EAAEgsB,gBAAgB1sB,EAAE0sB,gBAAgBhsB,EAAEisB,WAAU,EAAG35B,IAAI0N,EAAEgP,YAAW,IAAKrd,IAAIqO,EAAEksB,SAASv6B,GAAG6Y,GAAG8E,EAAE,SAAShQ,IAAIA,EAAEA,GAAGhG,KAAKqC,QAAQrC,KAAKqC,OAAOwwB,YAAY7yB,KAAKuC,QAAQvC,KAAKuC,OAAOF,QAAQrC,KAAKuC,OAAOF,OAAOwwB,aAAa,oBAAoBC,sBAAsB9sB,EAAE8sB,qBAAqB55B,GAAGA,EAAEpG,KAAKkN,KAAK2gB,EAAE3a,IAAIA,GAAGA,EAAE+sB,uBAAuB/sB,EAAE+sB,sBAAsBC,IAAI9hB,IAAIxK,EAAEusB,aAAajd,GAAG9c,IAAI8c,EAAEnE,EAAE,WAAW3Y,EAAEpG,KAAKkN,KAAKyyB,EAAEzyB,KAAKsB,MAAMC,SAAS2xB,cAAc,SAASltB,GAAG9M,EAAEpG,KAAKkN,KAAK7H,EAAE6N,MAAMgQ,EAAE,GAAGtP,EAAEgP,WAAW,CAAC,MAAM1P,EAAEU,EAAEmP,OAAOnP,EAAEmP,OAAO,SAAS3c,EAAE7B,GAAG,OAAO2e,EAAEljB,KAAKuE,GAAG2O,EAAE9M,EAAE7B,QAAQ,CAAC,MAAM2O,EAAEU,EAAEvF,aAAauF,EAAEvF,aAAa6E,EAAE,GAAGhS,OAAOgS,EAAEgQ,GAAG,CAACA,GAAG,OAAO3e,EAA/wB,CAAkxB,CAACwe,OAAO,WAAW,IAAI7P,EAAEhG,KAAK9G,EAAE8M,EAAEiQ,eAAe5e,EAAE2O,EAAEmtB,MAAMC,IAAIl6B,EAAE,OAAO7B,EAAE,MAAM,CAACgd,IAAI,OAAOgf,YAAY,mDAAmDl4B,MAAM6K,EAAEgqB,gBAAgBhoB,MAAM,CAACmmB,GAAGnoB,EAAEmoB,IAAI3Q,GAAG,CAACC,MAAMzX,EAAE6qB,YAAY,CAACx5B,EAAE,MAAM,CAACgd,IAAI,OAAOgf,YAAY,gBAAgBl4B,MAAM,CAACm4B,OAAOttB,EAAEuoB,WAAW,OAAO,CAAC,CAACl3B,EAAE,MAAM,CAACgd,IAAI,UAAUgf,YAAY,uDAAuDl4B,MAAM,CAAC42B,MAAM/rB,EAAEwoB,UAAU,MAAMhR,GAAG,CAAC+V,UAAUvtB,EAAE+qB,UAAUyC,WAAWxtB,EAAE+qB,YAAY,CAAC/qB,EAAE0oB,YAAYr3B,EAAE,OAAO,CAACg8B,YAAY,wDAAwD,CAACrtB,EAAEytB,GAAG,UAAU,CAACp8B,EAAE,OAAO,CAACg8B,YAAY,wBAAwBl4B,MAAM6K,EAAE8oB,eAAe,CAAC9oB,EAAE0tB,GAAG,mBAAmB1tB,EAAE2tB,GAAG3tB,EAAE1S,KAAK,uBAAuB,GAAG0S,EAAE4tB,QAAQ5tB,EAAE0tB,GAAG,KAAKr8B,EAAE,MAAM,CAACgd,IAAI,UAAUgf,YAAY,wBAAwBl4B,MAAM6K,EAAE+oB,gBAAgB,GAAG/oB,EAAE0tB,GAAG,KAAK1tB,EAAEooB,MAAM/2B,EAAE,MAAM,CAACg8B,YAAY,uBAAuBrtB,EAAE6tB,GAAG7tB,EAAEooB,OAAM,SAASl1B,EAAEb,GAAG,OAAOhB,EAAE,MAAM,CAACjD,IAAIiE,EAAEg7B,YAAY,yBAAyBl4B,MAAM6K,EAAE+nB,iBAAiB,CAAC70B,EAAE46B,OAAO9tB,EAAE4tB,KAAKv8B,EAAE,OAAO,CAACg8B,YAAY,+BAA+B,CAACrtB,EAAE0tB,GAAG,aAAa1tB,EAAE2tB,GAAGz6B,EAAE66B,OAAO,mBAAkB,GAAG/tB,EAAE4tB,QAAQlB,gBAAgB,KAAI,SAAS1sB,GAAGA,GAAGA,EAAE,oBAAoB,CAACjS,OAAO,unDAAunDE,SAAI,EAAO+/B,WAAM,MAAUniB,EAAE,mBAAkB,OAAG,GAAO,SAAS7L,GAAG,MAAM,CAACA,EAAE9M,IAAI,SAAU8M,EAAE9M,GAAG,MAAM7B,EAAEgB,EAAEa,EAAE86B,OAAO,UAAUhuB,EAAE6L,EAAEX,EAAE7Z,KAAK6Z,EAAE7Z,GAAG,CAAC48B,IAAI,IAAIC,IAAIC,OAAO,KAAK,IAAItiB,EAAEoiB,IAAIG,IAAIpuB,GAAG,CAAC6L,EAAEoiB,IAAIjB,IAAIhtB,GAAG,IAAI3O,EAAE6B,EAAEnF,OAAO,GAAGmF,EAAEjF,MAAMoD,GAAG,mBAAmB6B,EAAEjF,IAAIogC,QAAQ,GAAG,MAAMh9B,GAAG,uDAAuDi9B,KAAKC,SAASniB,mBAAmBjK,KAAK2B,UAAU5Q,EAAEjF,QAAQ,OAAO4d,EAAE3d,UAAU2d,EAAE3d,QAAQoK,SAAS4L,cAAc,SAAS2H,EAAE3d,QAAQkL,KAAK,WAAWlG,EAAE86B,OAAOniB,EAAE3d,QAAQiV,aAAa,QAAQjQ,EAAE86B,OAAOh7B,EAAEuR,YAAYsH,EAAE3d,UAAU,eAAe2d,EAAE3d,QAAQ2d,EAAEsiB,OAAOj9B,KAAKG,GAAGwa,EAAE3d,QAAQmW,WAAWC,QAAQuH,EAAEsiB,OAAO3/B,OAAO0U,SAAS1J,KAAK,UAAU,CAAC,MAAMwG,EAAE6L,EAAEoiB,IAAIxG,KAAK,EAAEv0B,EAAEoF,SAASkM,eAAenT,GAAGgB,EAAEwZ,EAAE3d,QAAQsgC,WAAWn8B,EAAE2N,IAAI6L,EAAE3d,QAAQ8W,YAAY3S,EAAE2N,IAAI3N,EAAEd,OAAOsa,EAAE3d,QAAQ+W,aAAa/R,EAAEb,EAAE2N,IAAI6L,EAAE3d,QAAQqW,YAAYrR,KAA1uB,CAAivB8M,EAAE9M,UAAI,O,kCCLxkY,IAAI2c,EAAS,WAAa,IAAI4e,EAAIz0B,KAAS00B,EAAGD,EAAIxe,eAAmBmd,EAAGqB,EAAItB,MAAMC,IAAIsB,EAAG,OAAOtB,EAAG,MAAM,CAACA,EAAG,IAAI,CAACuB,SAAS,CAAC,UAAYF,EAAId,GAAGc,EAAIG,oBAAoBxB,EAAG,OAAO,CAACyB,WAAW,CAAC,CAACt8B,KAAK,OAAOu8B,QAAQ,SAASviC,MAAOkiC,EAAI5lB,KAAKtX,OAASk9B,EAAIM,SAAUC,WAAW,4BAA4B,CAAC5B,EAAG,IAAI,CAACyB,WAAW,CAAC,CAACt8B,KAAK,OAAOu8B,QAAQ,SAASviC,OAAQkiC,EAAIQ,WAAYD,WAAW,gBAAgBhtB,MAAM,CAAC,KAAOysB,EAAIx5B,KAAK,GAAK,YAAYuiB,GAAG,CAAC,MAAQ,SAAS0X,GAAQ,OAAOT,EAAIU,gBAAgBD,GAAQ,MAAS,CAACT,EAAIf,GAAGe,EAAId,GAAGc,EAAIW,YAAYhC,EAAG,IAAI,CAACyB,WAAW,CAAC,CAACt8B,KAAK,OAAOu8B,QAAQ,SAASviC,MAAOkiC,EAAc,WAAEO,WAAW,eAAehtB,MAAM,CAAC,KAAOysB,EAAIx5B,KAAK,GAAK,YAAYuiB,GAAG,CAAC,MAAQ,SAAS0X,GAAQ,OAAOT,EAAIU,gBAAgBD,GAAQ,MAAU,CAACT,EAAIf,GAAGe,EAAId,GAAGc,EAAIY,iBACpwB3C,EAAkB,GCUtB,G,oBAAA,CACA,OACA,SACA,YACA,qBAEA,SACA,YACA,YAEA,MACA,YACA,aAEA,MACA,YACA,aAEA,UACA,YACA,cAIA,KAxBA,WAyBA,OACA,gBAIA,UACA,gBADA,WAEA,gBAMA,OAJA,kDACA,sCAGA,IAIA,SACA,gBADA,SACA,KACA,gBACA,mBAEA,yCACA,uBC3D0R,I,YCOtRxtB,EAAY,eACd,EACA2Q,EACA6c,GACA,EACA,KACA,KACA,MAIa,EAAAxtB,E,QClBA,GACdowB,QAAQ,EACRnM,KAAM,SAAS9qB,EAAI8qB,EAAMoM,GACxB,IAAIC,EAAgBrM,EAAK52B,MAEzB,GAAG42B,EAAK52B,MAAMgF,OAAS4xB,EAAK1vB,IAAI,CAE/B87B,EAAGE,IAAIC,YAAcvM,EAAK52B,MAAMojC,UAAU,EAAExM,EAAK1vB,KACjD,IAAIm8B,EAAYt3B,SAAS4L,cAAc,KACrC0rB,EAAU/Y,KAAO,IACjB+Y,EAAU/mB,KAAO,YAEjB,IAAIgnB,EAAYv3B,SAAS4L,cAAc,KACvC2rB,EAAUhZ,KAAO,IACjBgZ,EAAUhnB,KAAO,YAElB0mB,EAAGE,IAAI9d,OAAO,IAAKie,GAEpBA,EAAUhuB,iBAAiB,SAAS,WACnC2tB,EAAGE,IAAIC,YAAcF,EACrBD,EAAGE,IAAI9d,OAAO,IAAKke,MAGpBA,EAAUjuB,iBAAiB,SAAS,WACnC2tB,EAAGE,IAAIC,YAAcvM,EAAK52B,MAAMojC,UAAU,EAAExM,EAAK1vB,KACjD87B,EAAGE,IAAI9d,OAAO,IAAKie,WAIpBL,EAAGE,IAAIC,YAAcvM,EAAK52B,OAK5BujC,OAAQ,SAAUC,MC/BJ,QACbhmB,QAAS,SAAU/O,EAAKtN,GACtBsN,EAAIkE,UAAU,WAAY8wB,GAC1Bh1B,EAAIi1B,UAAU,WAAYC","file":"js/chunk-vendors~4a8239e8.79251523.js","sourcesContent":["'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/**\n * vue-meta v2.4.0\n * (c) 2020\n * - Declan de Wet\n * - Sébastien Chopin (@Atinux)\n * - Pim (@pimlie)\n * - All the amazing contributors\n * @license MIT\n */\n\nimport deepmerge from 'deepmerge';\n\nvar version = \"2.4.0\";\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(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\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function () {};\n\n return {\n s: F,\n n: function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function (e) {\n throw e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function () {\n it = o[Symbol.iterator]();\n },\n n: function () {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function (e) {\n didErr = true;\n err = e;\n },\n f: function () {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\n/**\n * checks if passed argument is an array\n * @param {any} arg - the object to check\n * @return {Boolean} - true if `arg` is an array\n */\nfunction isArray(arg) {\n return Array.isArray(arg);\n}\nfunction isUndefined(arg) {\n return typeof arg === 'undefined';\n}\nfunction isObject(arg) {\n return _typeof(arg) === 'object';\n}\nfunction isPureObject(arg) {\n return _typeof(arg) === 'object' && arg !== null;\n}\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nfunction isString(arg) {\n return typeof arg === 'string';\n}\n\nfunction hasGlobalWindowFn() {\n try {\n return !isUndefined(window);\n } catch (e) {\n return false;\n }\n}\nvar hasGlobalWindow = hasGlobalWindowFn();\n\nvar _global = hasGlobalWindow ? window : global;\n\nvar console = _global.console || {};\nfunction warn(str) {\n /* istanbul ignore next */\n if (!console || !console.warn) {\n return;\n }\n\n console.warn(str);\n}\nvar showWarningNotSupported = function showWarningNotSupported() {\n return warn('This vue app/component has no vue-meta configuration');\n};\n\n/**\n * These are constant variables used throughout the application.\n */\n// set some sane defaults\nvar defaultInfo = {\n title: undefined,\n titleChunk: '',\n titleTemplate: '%s',\n htmlAttrs: {},\n bodyAttrs: {},\n headAttrs: {},\n base: [],\n link: [],\n meta: [],\n style: [],\n script: [],\n noscript: [],\n __dangerouslyDisableSanitizers: [],\n __dangerouslyDisableSanitizersByTagID: {}\n};\nvar rootConfigKey = '_vueMeta'; // This is the name of the component option that contains all the information that\n// gets converted to the various meta tags & attributes for the page.\n\nvar keyName = 'metaInfo'; // This is the attribute vue-meta arguments on elements to know which it should\n// manage and which it should ignore.\n\nvar attribute = 'data-vue-meta'; // This is the attribute that goes on the `html` tag to inform `vue-meta`\n// that the server has already generated the meta tags for the initial render.\n\nvar ssrAttribute = 'data-vue-meta-server-rendered'; // This is the property that tells vue-meta to overwrite (instead of append)\n// an item in a tag list. For example, if you have two `meta` tag list items\n// that both have `vmid` of \"description\", then vue-meta will overwrite the\n// shallowest one with the deepest one.\n\nvar tagIDKeyName = 'vmid'; // This is the key name for possible meta templates\n\nvar metaTemplateKeyName = 'template'; // This is the key name for the content-holding property\n\nvar contentKeyName = 'content'; // The id used for the ssr app\n\nvar ssrAppId = 'ssr'; // How long meta update\n\nvar debounceWait = 10; // How long meta update\n\nvar waitOnDestroyed = true;\nvar defaultOptions = {\n keyName: keyName,\n attribute: attribute,\n ssrAttribute: ssrAttribute,\n tagIDKeyName: tagIDKeyName,\n contentKeyName: contentKeyName,\n metaTemplateKeyName: metaTemplateKeyName,\n waitOnDestroyed: waitOnDestroyed,\n debounceWait: debounceWait,\n ssrAppId: ssrAppId\n}; // might be a bit ugly, but minimizes the browser bundles a bit\n\nvar defaultInfoKeys = Object.keys(defaultInfo); // The metaInfo property keys which are used to disable escaping\n\nvar disableOptionKeys = [defaultInfoKeys[12], defaultInfoKeys[13]]; // List of metaInfo property keys which are configuration options (and dont generate html)\n\nvar metaInfoOptionKeys = [defaultInfoKeys[1], defaultInfoKeys[2], 'changed'].concat(disableOptionKeys); // List of metaInfo property keys which only generates attributes and no tags\n\nvar metaInfoAttributeKeys = [defaultInfoKeys[3], defaultInfoKeys[4], defaultInfoKeys[5]]; // HTML elements which support the onload event\n\nvar tagsSupportingOnload = ['link', 'style', 'script']; // HTML elements which dont have a head tag (shortened to our needs)\n// see: https://www.w3.org/TR/html52/document-metadata.html\n\nvar tagsWithoutEndTag = ['base', 'meta', 'link']; // HTML elements which can have inner content (shortened to our needs)\n\nvar tagsWithInnerContent = ['noscript', 'script', 'style']; // Attributes which are inserted as childNodes instead of HTMLAttribute\n\nvar tagAttributeAsInnerContent = ['innerHTML', 'cssText', 'json'];\nvar tagProperties = ['once', 'skip', 'template']; // Attributes which should be added with data- prefix\n\nvar commonDataAttributes = ['body', 'pbody']; // from: https://github.com/kangax/html-minifier/blob/gh-pages/src/htmlminifier.js#L202\n\nvar booleanHtmlAttributes = ['allowfullscreen', 'amp', 'amp-boilerplate', 'async', 'autofocus', 'autoplay', 'checked', 'compact', 'controls', 'declare', 'default', 'defaultchecked', 'defaultmuted', 'defaultselected', 'defer', 'disabled', 'enabled', 'formnovalidate', 'hidden', 'indeterminate', 'inert', 'ismap', 'itemscope', 'loop', 'multiple', 'muted', 'nohref', 'noresize', 'noshade', 'novalidate', 'nowrap', 'open', 'pauseonexit', 'readonly', 'required', 'reversed', 'scoped', 'seamless', 'selected', 'sortable', 'truespeed', 'typemustmatch', 'visible'];\n\nvar batchId = null;\nfunction triggerUpdate(_ref, rootVm, hookName) {\n var debounceWait = _ref.debounceWait;\n\n // if an update was triggered during initialization or when an update was triggered by the\n // metaInfo watcher, set initialized to null\n // then we keep falsy value but know we need to run a triggerUpdate after initialization\n if (!rootVm[rootConfigKey].initialized && (rootVm[rootConfigKey].initializing || hookName === 'watcher')) {\n rootVm[rootConfigKey].initialized = null;\n }\n\n if (rootVm[rootConfigKey].initialized && !rootVm[rootConfigKey].pausing) {\n // batch potential DOM updates to prevent extraneous re-rendering\n // eslint-disable-next-line no-void\n batchUpdate(function () {\n return void rootVm.$meta().refresh();\n }, debounceWait);\n }\n}\n/**\n * Performs a batched update.\n *\n * @param {(null|Number)} id - the ID of this update\n * @param {Function} callback - the update to perform\n * @return {Number} id - a new ID\n */\n\nfunction batchUpdate(callback, timeout) {\n timeout = timeout === undefined ? 10 : timeout;\n\n if (!timeout) {\n callback();\n return;\n }\n\n clearTimeout(batchId);\n batchId = setTimeout(function () {\n callback();\n }, timeout);\n return batchId;\n}\n\n/*\n * To reduce build size, this file provides simple polyfills without\n * overly excessive type checking and without modifying\n * the global Array.prototype\n * The polyfills are automatically removed in the commonjs build\n * Also, only files in client/ & shared/ should use these functions\n * files in server/ still use normal js function\n */\nfunction find(array, predicate, thisArg) {\n if ( !Array.prototype.find) {\n // idx needs to be a Number, for..in returns string\n for (var idx = 0; idx < array.length; idx++) {\n if (predicate.call(thisArg, array[idx], idx, array)) {\n return array[idx];\n }\n }\n\n return;\n }\n\n return array.find(predicate, thisArg);\n}\nfunction findIndex(array, predicate, thisArg) {\n if ( !Array.prototype.findIndex) {\n // idx needs to be a Number, for..in returns string\n for (var idx = 0; idx < array.length; idx++) {\n if (predicate.call(thisArg, array[idx], idx, array)) {\n return idx;\n }\n }\n\n return -1;\n }\n\n return array.findIndex(predicate, thisArg);\n}\nfunction toArray(arg) {\n if ( !Array.from) {\n return Array.prototype.slice.call(arg);\n }\n\n return Array.from(arg);\n}\nfunction includes(array, value) {\n if ( !Array.prototype.includes) {\n for (var idx in array) {\n if (array[idx] === value) {\n return true;\n }\n }\n\n return false;\n }\n\n return array.includes(value);\n}\n\nvar querySelector = function querySelector(arg, el) {\n return (el || document).querySelectorAll(arg);\n};\nfunction getTag(tags, tag) {\n if (!tags[tag]) {\n tags[tag] = document.getElementsByTagName(tag)[0];\n }\n\n return tags[tag];\n}\nfunction getElementsKey(_ref) {\n var body = _ref.body,\n pbody = _ref.pbody;\n return body ? 'body' : pbody ? 'pbody' : 'head';\n}\nfunction queryElements(parentNode, _ref2, attributes) {\n var appId = _ref2.appId,\n attribute = _ref2.attribute,\n type = _ref2.type,\n tagIDKeyName = _ref2.tagIDKeyName;\n attributes = attributes || {};\n var queries = [\"\".concat(type, \"[\").concat(attribute, \"=\\\"\").concat(appId, \"\\\"]\"), \"\".concat(type, \"[data-\").concat(tagIDKeyName, \"]\")].map(function (query) {\n for (var key in attributes) {\n var val = attributes[key];\n var attributeValue = val && val !== true ? \"=\\\"\".concat(val, \"\\\"\") : '';\n query += \"[data-\".concat(key).concat(attributeValue, \"]\");\n }\n\n return query;\n });\n return toArray(querySelector(queries.join(', '), parentNode));\n}\nfunction removeElementsByAppId(_ref3, appId) {\n var attribute = _ref3.attribute;\n toArray(querySelector(\"[\".concat(attribute, \"=\\\"\").concat(appId, \"\\\"]\"))).map(function (el) {\n return el.remove();\n });\n}\nfunction removeAttribute(el, attributeName) {\n el.removeAttribute(attributeName);\n}\n\nfunction hasMetaInfo(vm) {\n vm = vm || this;\n return vm && (vm[rootConfigKey] === true || isObject(vm[rootConfigKey]));\n} // a component is in a metaInfo branch when itself has meta info or one of its (grand-)children has\n\nfunction inMetaInfoBranch(vm) {\n vm = vm || this;\n return vm && !isUndefined(vm[rootConfigKey]);\n}\n\nfunction pause(rootVm, refresh) {\n rootVm[rootConfigKey].pausing = true;\n return function () {\n return resume(rootVm, refresh);\n };\n}\nfunction resume(rootVm, refresh) {\n rootVm[rootConfigKey].pausing = false;\n\n if (refresh || refresh === undefined) {\n return rootVm.$meta().refresh();\n }\n}\n\nfunction addNavGuards(rootVm) {\n var router = rootVm.$router; // return when nav guards already added or no router exists\n\n if (rootVm[rootConfigKey].navGuards || !router) {\n /* istanbul ignore next */\n return;\n }\n\n rootVm[rootConfigKey].navGuards = true;\n router.beforeEach(function (to, from, next) {\n pause(rootVm);\n next();\n });\n router.afterEach(function () {\n rootVm.$nextTick(function () {\n var _resume = resume(rootVm),\n metaInfo = _resume.metaInfo;\n\n if (metaInfo && isFunction(metaInfo.afterNavigation)) {\n metaInfo.afterNavigation(metaInfo);\n }\n });\n });\n}\n\nvar appId = 1;\nfunction createMixin(Vue, options) {\n // for which Vue lifecycle hooks should the metaInfo be refreshed\n var updateOnLifecycleHook = ['activated', 'deactivated', 'beforeMount'];\n var wasServerRendered = false; // watch for client side component updates\n\n return {\n beforeCreate: function beforeCreate() {\n var _this2 = this;\n\n var rootKey = '$root';\n var $root = this[rootKey];\n var $options = this.$options;\n var devtoolsEnabled = Vue.config.devtools;\n Object.defineProperty(this, '_hasMetaInfo', {\n configurable: true,\n get: function get() {\n // Show deprecation warning once when devtools enabled\n if (devtoolsEnabled && !$root[rootConfigKey].deprecationWarningShown) {\n warn('VueMeta DeprecationWarning: _hasMetaInfo has been deprecated and will be removed in a future version. Please use hasMetaInfo(vm) instead');\n $root[rootConfigKey].deprecationWarningShown = true;\n }\n\n return hasMetaInfo(this);\n }\n });\n\n if (this === $root) {\n $root.$once('hook:beforeMount', function () {\n wasServerRendered = this.$el && this.$el.nodeType === 1 && this.$el.hasAttribute('data-server-rendered'); // In most cases when you have a SSR app it will be the first app thats gonna be\n // initiated, if we cant detect the data-server-rendered attribute from Vue but we\n // do see our own ssrAttribute then _assume_ the Vue app with appId 1 is the ssr app\n // attempted fix for #404 & #562, but we rly need to refactor how we pass appIds from\n // ssr to the client\n\n if (!wasServerRendered && $root[rootConfigKey] && $root[rootConfigKey].appId === 1) {\n var htmlTag = getTag({}, 'html');\n wasServerRendered = htmlTag && htmlTag.hasAttribute(options.ssrAttribute);\n }\n });\n } // Add a marker to know if it uses metaInfo\n // _vnode is used to know that it's attached to a real component\n // useful if we use some mixin to add some meta tags (like nuxt-i18n)\n\n\n if (isUndefined($options[options.keyName]) || $options[options.keyName] === null) {\n return;\n }\n\n if (!$root[rootConfigKey]) {\n $root[rootConfigKey] = {\n appId: appId\n };\n appId++;\n\n if (devtoolsEnabled && $root.$options[options.keyName]) {\n // use nextTick so the children should be added to $root\n this.$nextTick(function () {\n // find the first child that lists fnOptions\n var child = find($root.$children, function (c) {\n return c.$vnode && c.$vnode.fnOptions;\n });\n\n if (child && child.$vnode.fnOptions[options.keyName]) {\n warn(\"VueMeta has detected a possible global mixin which adds a \".concat(options.keyName, \" property to all Vue components on the page. This could cause severe performance issues. If possible, use $meta().addApp to add meta information instead\"));\n }\n });\n }\n } // to speed up updates we keep track of branches which have a component with vue-meta info defined\n // if _vueMeta = true it has info, if _vueMeta = false a child has info\n\n\n if (!this[rootConfigKey]) {\n this[rootConfigKey] = true;\n var parent = this.$parent;\n\n while (parent && parent !== $root) {\n if (isUndefined(parent[rootConfigKey])) {\n parent[rootConfigKey] = false;\n }\n\n parent = parent.$parent;\n }\n } // coerce function-style metaInfo to a computed prop so we can observe\n // it on creation\n\n\n if (isFunction($options[options.keyName])) {\n $options.computed = $options.computed || {};\n $options.computed.$metaInfo = $options[options.keyName];\n\n if (!this.$isServer) {\n // if computed $metaInfo exists, watch it for updates & trigger a refresh\n // when it changes (i.e. automatically handle async actions that affect metaInfo)\n // credit for this suggestion goes to [Sébastien Chopin](https://github.com/Atinux)\n this.$on('hook:created', function () {\n this.$watch('$metaInfo', function () {\n triggerUpdate(options, this[rootKey], 'watcher');\n });\n });\n }\n } // force an initial refresh on page load and prevent other lifecycleHooks\n // to triggerUpdate until this initial refresh is finished\n // this is to make sure that when a page is opened in an inactive tab which\n // has throttled rAF/timers we still immediately set the page title\n\n\n if (isUndefined($root[rootConfigKey].initialized)) {\n $root[rootConfigKey].initialized = this.$isServer;\n\n if (!$root[rootConfigKey].initialized) {\n if (!$root[rootConfigKey].initializedSsr) {\n $root[rootConfigKey].initializedSsr = true;\n this.$on('hook:beforeMount', function () {\n var $root = this[rootKey]; // if this Vue-app was server rendered, set the appId to 'ssr'\n // only one SSR app per page is supported\n\n if (wasServerRendered) {\n $root[rootConfigKey].appId = options.ssrAppId;\n }\n });\n } // we use the mounted hook here as on page load\n\n\n this.$on('hook:mounted', function () {\n var $root = this[rootKey];\n\n if ($root[rootConfigKey].initialized) {\n return;\n } // used in triggerUpdate to check if a change was triggered\n // during initialization\n\n\n $root[rootConfigKey].initializing = true; // refresh meta in nextTick so all child components have loaded\n\n this.$nextTick(function () {\n var _$root$$meta$refresh = $root.$meta().refresh(),\n tags = _$root$$meta$refresh.tags,\n metaInfo = _$root$$meta$refresh.metaInfo; // After ssr hydration (identifier by tags === false) check\n // if initialized was set to null in triggerUpdate. That'd mean\n // that during initilazation changes where triggered which need\n // to be applied OR a metaInfo watcher was triggered before the\n // current hook was called\n // (during initialization all changes are blocked)\n\n\n if (tags === false && $root[rootConfigKey].initialized === null) {\n this.$nextTick(function () {\n return triggerUpdate(options, $root, 'init');\n });\n }\n\n $root[rootConfigKey].initialized = true;\n delete $root[rootConfigKey].initializing; // add the navigation guards if they havent been added yet\n // they are needed for the afterNavigation callback\n\n if (!options.refreshOnceOnNavigation && metaInfo.afterNavigation) {\n addNavGuards($root);\n }\n });\n }); // add the navigation guards if requested\n\n if (options.refreshOnceOnNavigation) {\n addNavGuards($root);\n }\n }\n }\n\n this.$on('hook:destroyed', function () {\n var _this = this;\n\n // do not trigger refresh:\n // - when user configured to not wait for transitions on destroyed\n // - when the component doesnt have a parent\n // - doesnt have metaInfo defined\n if (!this.$parent || !hasMetaInfo(this)) {\n return;\n }\n\n delete this._hasMetaInfo;\n this.$nextTick(function () {\n if (!options.waitOnDestroyed || !_this.$el || !_this.$el.offsetParent) {\n triggerUpdate(options, _this.$root, 'destroyed');\n return;\n } // Wait that element is hidden before refreshing meta tags (to support animations)\n\n\n var interval = setInterval(function () {\n if (_this.$el && _this.$el.offsetParent !== null) {\n /* istanbul ignore next line */\n return;\n }\n\n clearInterval(interval);\n triggerUpdate(options, _this.$root, 'destroyed');\n }, 50);\n });\n }); // do not trigger refresh on the server side\n\n if (this.$isServer) {\n /* istanbul ignore next */\n return;\n } // no need to add this hooks on server side\n\n\n updateOnLifecycleHook.forEach(function (lifecycleHook) {\n _this2.$on(\"hook:\".concat(lifecycleHook), function () {\n triggerUpdate(options, this[rootKey], lifecycleHook);\n });\n });\n }\n };\n}\n\nfunction setOptions(options) {\n // combine options\n options = isObject(options) ? options : {}; // The options are set like this so they can\n // be minified by terser while keeping the\n // user api intact\n // terser --mangle-properties keep_quoted=strict\n\n /* eslint-disable dot-notation */\n\n return {\n keyName: options['keyName'] || defaultOptions.keyName,\n attribute: options['attribute'] || defaultOptions.attribute,\n ssrAttribute: options['ssrAttribute'] || defaultOptions.ssrAttribute,\n tagIDKeyName: options['tagIDKeyName'] || defaultOptions.tagIDKeyName,\n contentKeyName: options['contentKeyName'] || defaultOptions.contentKeyName,\n metaTemplateKeyName: options['metaTemplateKeyName'] || defaultOptions.metaTemplateKeyName,\n debounceWait: isUndefined(options['debounceWait']) ? defaultOptions.debounceWait : options['debounceWait'],\n waitOnDestroyed: isUndefined(options['waitOnDestroyed']) ? defaultOptions.waitOnDestroyed : options['waitOnDestroyed'],\n ssrAppId: options['ssrAppId'] || defaultOptions.ssrAppId,\n refreshOnceOnNavigation: !!options['refreshOnceOnNavigation']\n };\n /* eslint-enable dot-notation */\n}\nfunction getOptions(options) {\n var optionsCopy = {};\n\n for (var key in options) {\n optionsCopy[key] = options[key];\n }\n\n return optionsCopy;\n}\n\nfunction ensureIsArray(arg, key) {\n if (!key || !isObject(arg)) {\n return isArray(arg) ? arg : [];\n }\n\n if (!isArray(arg[key])) {\n arg[key] = [];\n }\n\n return arg;\n}\n\nvar serverSequences = [[/&/g, '&'], [//g, '>'], [/\"/g, '"'], [/'/g, ''']];\nvar clientSequences = [[/&/g, \"&\"], [//g, \">\"], [/\"/g, \"\\\"\"], [/'/g, \"'\"]]; // sanitizes potentially dangerous characters\n\nfunction escape(info, options, escapeOptions, escapeKeys) {\n var tagIDKeyName = options.tagIDKeyName;\n var _escapeOptions$doEsca = escapeOptions.doEscape,\n doEscape = _escapeOptions$doEsca === void 0 ? function (v) {\n return v;\n } : _escapeOptions$doEsca;\n var escaped = {};\n\n for (var key in info) {\n var value = info[key]; // no need to escape configuration options\n\n if (includes(metaInfoOptionKeys, key)) {\n escaped[key] = value;\n continue;\n } // do not use destructuring for disableOptionKeys, it increases transpiled size\n // due to var checks while we are guaranteed the structure of the cb\n\n\n var disableKey = disableOptionKeys[0];\n\n if (escapeOptions[disableKey] && includes(escapeOptions[disableKey], key)) {\n // this info[key] doesnt need to escaped if the option is listed in __dangerouslyDisableSanitizers\n escaped[key] = value;\n continue;\n }\n\n var tagId = info[tagIDKeyName];\n\n if (tagId) {\n disableKey = disableOptionKeys[1]; // keys which are listed in __dangerouslyDisableSanitizersByTagID for the current vmid do not need to be escaped\n\n if (escapeOptions[disableKey] && escapeOptions[disableKey][tagId] && includes(escapeOptions[disableKey][tagId], key)) {\n escaped[key] = value;\n continue;\n }\n }\n\n if (isString(value)) {\n escaped[key] = doEscape(value);\n } else if (isArray(value)) {\n escaped[key] = value.map(function (v) {\n if (isPureObject(v)) {\n return escape(v, options, escapeOptions, true);\n }\n\n return doEscape(v);\n });\n } else if (isPureObject(value)) {\n escaped[key] = escape(value, options, escapeOptions, true);\n } else {\n escaped[key] = value;\n }\n\n if (escapeKeys) {\n var escapedKey = doEscape(key);\n\n if (key !== escapedKey) {\n escaped[escapedKey] = escaped[key];\n delete escaped[key];\n }\n }\n }\n\n return escaped;\n}\nfunction escapeMetaInfo(options, info, escapeSequences) {\n escapeSequences = escapeSequences || []; // do not use destructuring for seq, it increases transpiled size\n // due to var checks while we are guaranteed the structure of the cb\n\n var escapeOptions = {\n doEscape: function doEscape(value) {\n return escapeSequences.reduce(function (val, seq) {\n return val.replace(seq[0], seq[1]);\n }, value);\n }\n };\n disableOptionKeys.forEach(function (disableKey, index) {\n if (index === 0) {\n ensureIsArray(info, disableKey);\n } else if (index === 1) {\n for (var key in info[disableKey]) {\n ensureIsArray(info[disableKey], key);\n }\n }\n\n escapeOptions[disableKey] = info[disableKey];\n }); // begin sanitization\n\n return escape(info, options, escapeOptions);\n}\n\nfunction applyTemplate(_ref, headObject, template, chunk) {\n var component = _ref.component,\n metaTemplateKeyName = _ref.metaTemplateKeyName,\n contentKeyName = _ref.contentKeyName;\n\n if (template === true || headObject[metaTemplateKeyName] === true) {\n // abort, template was already applied\n return false;\n }\n\n if (isUndefined(template) && headObject[metaTemplateKeyName]) {\n template = headObject[metaTemplateKeyName];\n headObject[metaTemplateKeyName] = true;\n } // return early if no template defined\n\n\n if (!template) {\n // cleanup faulty template properties\n delete headObject[metaTemplateKeyName];\n return false;\n }\n\n if (isUndefined(chunk)) {\n chunk = headObject[contentKeyName];\n }\n\n headObject[contentKeyName] = isFunction(template) ? template.call(component, chunk) : template.replace(/%s/g, chunk);\n return true;\n}\n\nfunction _arrayMerge(_ref, target, source) {\n var component = _ref.component,\n tagIDKeyName = _ref.tagIDKeyName,\n metaTemplateKeyName = _ref.metaTemplateKeyName,\n contentKeyName = _ref.contentKeyName;\n // we concat the arrays without merging objects contained in,\n // but we check for a `vmid` property on each object in the array\n // using an O(1) lookup associative array exploit\n var destination = [];\n\n if (!target.length && !source.length) {\n return destination;\n }\n\n target.forEach(function (targetItem, targetIndex) {\n // no tagID so no need to check for duplicity\n if (!targetItem[tagIDKeyName]) {\n destination.push(targetItem);\n return;\n }\n\n var sourceIndex = findIndex(source, function (item) {\n return item[tagIDKeyName] === targetItem[tagIDKeyName];\n });\n var sourceItem = source[sourceIndex]; // source doesnt contain any duplicate vmid's, we can keep targetItem\n\n if (sourceIndex === -1) {\n destination.push(targetItem);\n return;\n } // when sourceItem explictly defines contentKeyName or innerHTML as undefined, its\n // an indication that we need to skip the default behaviour or child has preference over parent\n // which means we keep the targetItem and ignore/remove the sourceItem\n\n\n if (contentKeyName in sourceItem && sourceItem[contentKeyName] === undefined || 'innerHTML' in sourceItem && sourceItem.innerHTML === undefined) {\n destination.push(targetItem); // remove current index from source array so its not concatenated to destination below\n\n source.splice(sourceIndex, 1);\n return;\n } // we now know that targetItem is a duplicate and we should ignore it in favor of sourceItem\n // if source specifies null as content then ignore both the target as the source\n\n\n if (sourceItem[contentKeyName] === null || sourceItem.innerHTML === null) {\n // remove current index from source array so its not concatenated to destination below\n source.splice(sourceIndex, 1);\n return;\n } // now we only need to check if the target has a template to combine it with the source\n\n\n var targetTemplate = targetItem[metaTemplateKeyName];\n\n if (!targetTemplate) {\n return;\n }\n\n var sourceTemplate = sourceItem[metaTemplateKeyName];\n\n if (!sourceTemplate) {\n // use parent template and child content\n applyTemplate({\n component: component,\n metaTemplateKeyName: metaTemplateKeyName,\n contentKeyName: contentKeyName\n }, sourceItem, targetTemplate); // set template to true to indicate template was already applied\n\n sourceItem.template = true;\n return;\n }\n\n if (!sourceItem[contentKeyName]) {\n // use parent content and child template\n applyTemplate({\n component: component,\n metaTemplateKeyName: metaTemplateKeyName,\n contentKeyName: contentKeyName\n }, sourceItem, undefined, targetItem[contentKeyName]);\n }\n });\n return destination.concat(source);\n}\nvar warningShown = false;\nfunction merge(target, source, options) {\n options = options || {}; // remove properties explicitly set to false so child components can\n // optionally _not_ overwrite the parents content\n // (for array properties this is checked in arrayMerge)\n\n if (source.title === undefined) {\n delete source.title;\n }\n\n metaInfoAttributeKeys.forEach(function (attrKey) {\n if (!source[attrKey]) {\n return;\n }\n\n for (var key in source[attrKey]) {\n if (key in source[attrKey] && source[attrKey][key] === undefined) {\n if (includes(booleanHtmlAttributes, key) && !warningShown) {\n warn('VueMeta: Please note that since v2 the value undefined is not used to indicate boolean attributes anymore, see migration guide for details');\n warningShown = true;\n }\n\n delete source[attrKey][key];\n }\n }\n });\n return deepmerge(target, source, {\n arrayMerge: function arrayMerge(t, s) {\n return _arrayMerge(options, t, s);\n }\n });\n}\n\nfunction getComponentMetaInfo(options, component) {\n return getComponentOption(options || {}, component, defaultInfo);\n}\n/**\n * Returns the `opts.option` $option value of the given `opts.component`.\n * If methods are encountered, they will be bound to the component context.\n * If `opts.deep` is true, will recursively merge all child component\n * `opts.option` $option values into the returned result.\n *\n * @param {Object} opts - options\n * @param {Object} opts.component - Vue component to fetch option data from\n * @param {Boolean} opts.deep - look for data in child components as well?\n * @param {Function} opts.arrayMerge - how should arrays be merged?\n * @param {String} opts.keyName - the name of the option to look for\n * @param {Object} [result={}] - result so far\n * @return {Object} result - final aggregated result\n */\n\nfunction getComponentOption(options, component, result) {\n result = result || {};\n\n if (component._inactive) {\n return result;\n }\n\n options = options || {};\n var _options = options,\n keyName = _options.keyName;\n var $metaInfo = component.$metaInfo,\n $options = component.$options,\n $children = component.$children; // only collect option data if it exists\n\n if ($options[keyName]) {\n // if $metaInfo exists then [keyName] was defined as a function\n // and set to the computed prop $metaInfo in the mixin\n // using the computed prop should be a small performance increase\n // because Vue caches those internally\n var data = $metaInfo || $options[keyName]; // only merge data with result when its an object\n // eg it could be a function when metaInfo() returns undefined\n // dueo to the or statement above\n\n if (isObject(data)) {\n result = merge(result, data, options);\n }\n } // collect & aggregate child options if deep = true\n\n\n if ($children.length) {\n $children.forEach(function (childComponent) {\n // check if the childComponent is in a branch\n // return otherwise so we dont walk all component branches unnecessarily\n if (!inMetaInfoBranch(childComponent)) {\n return;\n }\n\n result = getComponentOption(options, childComponent, result);\n });\n }\n\n return result;\n}\n\nvar callbacks = [];\nfunction isDOMComplete(d) {\n return (d || document).readyState === 'complete';\n}\nfunction addCallback(query, callback) {\n if (arguments.length === 1) {\n callback = query;\n query = '';\n }\n\n callbacks.push([query, callback]);\n}\nfunction addCallbacks(_ref, type, tags, autoAddListeners) {\n var tagIDKeyName = _ref.tagIDKeyName;\n var hasAsyncCallback = false;\n tags.forEach(function (tag) {\n if (!tag[tagIDKeyName] || !tag.callback) {\n return;\n }\n\n hasAsyncCallback = true;\n addCallback(\"\".concat(type, \"[data-\").concat(tagIDKeyName, \"=\\\"\").concat(tag[tagIDKeyName], \"\\\"]\"), tag.callback);\n });\n\n if (!autoAddListeners || !hasAsyncCallback) {\n return hasAsyncCallback;\n }\n\n return addListeners();\n}\nfunction addListeners() {\n if (isDOMComplete()) {\n applyCallbacks();\n return;\n } // Instead of using a MutationObserver, we just apply\n\n /* istanbul ignore next */\n\n\n document.onreadystatechange = function () {\n applyCallbacks();\n };\n}\nfunction applyCallbacks(matchElement) {\n callbacks.forEach(function (args) {\n // do not use destructuring for args, it increases transpiled size\n // due to var checks while we are guaranteed the structure of the cb\n var query = args[0];\n var callback = args[1];\n var selector = \"\".concat(query, \"[onload=\\\"this.__vm_l=1\\\"]\");\n var elements = [];\n\n if (!matchElement) {\n elements = toArray(querySelector(selector));\n }\n\n if (matchElement && matchElement.matches(selector)) {\n elements = [matchElement];\n }\n\n elements.forEach(function (element) {\n /* __vm_cb: whether the load callback has been called\n * __vm_l: set by onload attribute, whether the element was loaded\n * __vm_ev: whether the event listener was added or not\n */\n if (element.__vm_cb) {\n return;\n }\n\n var onload = function onload() {\n /* Mark that the callback for this element has already been called,\n * this prevents the callback to run twice in some (rare) conditions\n */\n element.__vm_cb = true;\n /* onload needs to be removed because we only need the\n * attribute after ssr and if we dont remove it the node\n * will fail isEqualNode on the client\n */\n\n removeAttribute(element, 'onload');\n callback(element);\n };\n /* IE9 doesnt seem to load scripts synchronously,\n * causing a script sometimes/often already to be loaded\n * when we add the event listener below (thus adding an onload event\n * listener has no use because it will never be triggered).\n * Therefore we add the onload attribute during ssr, and\n * check here if it was already loaded or not\n */\n\n\n if (element.__vm_l) {\n onload();\n return;\n }\n\n if (!element.__vm_ev) {\n element.__vm_ev = true;\n element.addEventListener('load', onload);\n }\n });\n });\n}\n\n// instead of adding it to the html\n\nvar attributeMap = {};\n/**\n * Updates the document's html tag attributes\n *\n * @param {Object} attrs - the new document html attributes\n * @param {HTMLElement} tag - the HTMLElement tag to update with new attrs\n */\n\nfunction updateAttribute(appId, options, type, attrs, tag) {\n var _ref = options || {},\n attribute = _ref.attribute;\n\n var vueMetaAttrString = tag.getAttribute(attribute);\n\n if (vueMetaAttrString) {\n attributeMap[type] = JSON.parse(decodeURI(vueMetaAttrString));\n removeAttribute(tag, attribute);\n }\n\n var data = attributeMap[type] || {};\n var toUpdate = []; // remove attributes from the map\n // which have been removed for this appId\n\n for (var attr in data) {\n if (data[attr] !== undefined && appId in data[attr]) {\n toUpdate.push(attr);\n\n if (!attrs[attr]) {\n delete data[attr][appId];\n }\n }\n }\n\n for (var _attr in attrs) {\n var attrData = data[_attr];\n\n if (!attrData || attrData[appId] !== attrs[_attr]) {\n toUpdate.push(_attr);\n\n if (attrs[_attr] !== undefined) {\n data[_attr] = data[_attr] || {};\n data[_attr][appId] = attrs[_attr];\n }\n }\n }\n\n for (var _i = 0, _toUpdate = toUpdate; _i < _toUpdate.length; _i++) {\n var _attr2 = _toUpdate[_i];\n var _attrData = data[_attr2];\n var attrValues = [];\n\n for (var _appId in _attrData) {\n Array.prototype.push.apply(attrValues, [].concat(_attrData[_appId]));\n }\n\n if (attrValues.length) {\n var attrValue = includes(booleanHtmlAttributes, _attr2) && attrValues.some(Boolean) ? '' : attrValues.filter(function (v) {\n return v !== undefined;\n }).join(' ');\n tag.setAttribute(_attr2, attrValue);\n } else {\n removeAttribute(tag, _attr2);\n }\n }\n\n attributeMap[type] = data;\n}\n\n/**\n * Updates the document title\n *\n * @param {String} title - the new title of the document\n */\nfunction updateTitle(title) {\n if (!title && title !== '') {\n return;\n }\n\n document.title = title;\n}\n\n/**\n * Updates meta tags inside and on the client. Borrowed from `react-helmet`:\n * https://github.com/nfl/react-helmet/blob/004d448f8de5f823d10f838b02317521180f34da/src/Helmet.js#L195-L245\n *\n * @param {('meta'|'base'|'link'|'style'|'script'|'noscript')} type - the name of the tag\n * @param {(Array|Object)} tags - an array of tag objects or a single object in case of base\n * @return {Object} - a representation of what tags changed\n */\n\nfunction updateTag(appId, options, type, tags, head, body) {\n var _ref = options || {},\n attribute = _ref.attribute,\n tagIDKeyName = _ref.tagIDKeyName;\n\n var dataAttributes = commonDataAttributes.slice();\n dataAttributes.push(tagIDKeyName);\n var newElements = [];\n var queryOptions = {\n appId: appId,\n attribute: attribute,\n type: type,\n tagIDKeyName: tagIDKeyName\n };\n var currentElements = {\n head: queryElements(head, queryOptions),\n pbody: queryElements(body, queryOptions, {\n pbody: true\n }),\n body: queryElements(body, queryOptions, {\n body: true\n })\n };\n\n if (tags.length > 1) {\n // remove duplicates that could have been found by merging tags\n // which include a mixin with metaInfo and that mixin is used\n // by multiple components on the same page\n var found = [];\n tags = tags.filter(function (x) {\n var k = JSON.stringify(x);\n var res = !includes(found, k);\n found.push(k);\n return res;\n });\n }\n\n tags.forEach(function (tag) {\n if (tag.skip) {\n return;\n }\n\n var newElement = document.createElement(type);\n\n if (!tag.once) {\n newElement.setAttribute(attribute, appId);\n }\n\n Object.keys(tag).forEach(function (attr) {\n /* istanbul ignore next */\n if (includes(tagProperties, attr)) {\n return;\n }\n\n if (attr === 'innerHTML') {\n newElement.innerHTML = tag.innerHTML;\n return;\n }\n\n if (attr === 'json') {\n newElement.innerHTML = JSON.stringify(tag.json);\n return;\n }\n\n if (attr === 'cssText') {\n if (newElement.styleSheet) {\n /* istanbul ignore next */\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n\n return;\n }\n\n if (attr === 'callback') {\n newElement.onload = function () {\n return tag[attr](newElement);\n };\n\n return;\n }\n\n var _attr = includes(dataAttributes, attr) ? \"data-\".concat(attr) : attr;\n\n var isBooleanAttribute = includes(booleanHtmlAttributes, attr);\n\n if (isBooleanAttribute && !tag[attr]) {\n return;\n }\n\n var value = isBooleanAttribute ? '' : tag[attr];\n newElement.setAttribute(_attr, value);\n });\n var oldElements = currentElements[getElementsKey(tag)]; // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n\n var indexToDelete;\n var hasEqualElement = oldElements.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n });\n\n if (hasEqualElement && (indexToDelete || indexToDelete === 0)) {\n oldElements.splice(indexToDelete, 1);\n } else {\n newElements.push(newElement);\n }\n });\n var oldElements = [];\n\n for (var _type in currentElements) {\n Array.prototype.push.apply(oldElements, currentElements[_type]);\n } // remove old elements\n\n\n oldElements.forEach(function (element) {\n element.parentNode.removeChild(element);\n }); // insert new elements\n\n newElements.forEach(function (element) {\n if (element.hasAttribute('data-body')) {\n body.appendChild(element);\n return;\n }\n\n if (element.hasAttribute('data-pbody')) {\n body.insertBefore(element, body.firstChild);\n return;\n }\n\n head.appendChild(element);\n });\n return {\n oldTags: oldElements,\n newTags: newElements\n };\n}\n\n/**\n * Performs client-side updates when new meta info is received\n *\n * @param {Object} newInfo - the meta info to update to\n */\n\nfunction updateClientMetaInfo(appId, options, newInfo) {\n options = options || {};\n var _options = options,\n ssrAttribute = _options.ssrAttribute,\n ssrAppId = _options.ssrAppId; // only cache tags for current update\n\n var tags = {};\n var htmlTag = getTag(tags, 'html'); // if this is a server render, then dont update\n\n if (appId === ssrAppId && htmlTag.hasAttribute(ssrAttribute)) {\n // remove the server render attribute so we can update on (next) changes\n removeAttribute(htmlTag, ssrAttribute); // add load callbacks if the\n\n var addLoadListeners = false;\n tagsSupportingOnload.forEach(function (type) {\n if (newInfo[type] && addCallbacks(options, type, newInfo[type])) {\n addLoadListeners = true;\n }\n });\n\n if (addLoadListeners) {\n addListeners();\n }\n\n return false;\n } // initialize tracked changes\n\n\n var tagsAdded = {};\n var tagsRemoved = {};\n\n for (var type in newInfo) {\n // ignore these\n if (includes(metaInfoOptionKeys, type)) {\n continue;\n }\n\n if (type === 'title') {\n // update the title\n updateTitle(newInfo.title);\n continue;\n }\n\n if (includes(metaInfoAttributeKeys, type)) {\n var tagName = type.substr(0, 4);\n updateAttribute(appId, options, type, newInfo[type], getTag(tags, tagName));\n continue;\n } // tags should always be an array, ignore if it isnt\n\n\n if (!isArray(newInfo[type])) {\n continue;\n }\n\n var _updateTag = updateTag(appId, options, type, newInfo[type], getTag(tags, 'head'), getTag(tags, 'body')),\n oldTags = _updateTag.oldTags,\n newTags = _updateTag.newTags;\n\n if (newTags.length) {\n tagsAdded[type] = newTags;\n tagsRemoved[type] = oldTags;\n }\n }\n\n return {\n tagsAdded: tagsAdded,\n tagsRemoved: tagsRemoved\n };\n}\n\nvar appsMetaInfo;\nfunction addApp(rootVm, appId, options) {\n return {\n set: function set(metaInfo) {\n return setMetaInfo(rootVm, appId, options, metaInfo);\n },\n remove: function remove() {\n return removeMetaInfo(rootVm, appId, options);\n }\n };\n}\nfunction setMetaInfo(rootVm, appId, options, metaInfo) {\n // if a vm exists _and_ its mounted then immediately update\n if (rootVm && rootVm.$el) {\n return updateClientMetaInfo(appId, options, metaInfo);\n } // store for later, the info\n // will be set on the first refresh\n\n\n appsMetaInfo = appsMetaInfo || {};\n appsMetaInfo[appId] = metaInfo;\n}\nfunction removeMetaInfo(rootVm, appId, options) {\n if (rootVm && rootVm.$el) {\n var tags = {};\n\n var _iterator = _createForOfIteratorHelper(metaInfoAttributeKeys),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var type = _step.value;\n var tagName = type.substr(0, 4);\n updateAttribute(appId, options, type, {}, getTag(tags, tagName));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return removeElementsByAppId(options, appId);\n }\n\n if (appsMetaInfo[appId]) {\n delete appsMetaInfo[appId];\n clearAppsMetaInfo();\n }\n}\nfunction getAppsMetaInfo() {\n return appsMetaInfo;\n}\nfunction clearAppsMetaInfo(force) {\n if (force || !Object.keys(appsMetaInfo).length) {\n appsMetaInfo = undefined;\n }\n}\n\n/**\n * Returns the correct meta info for the given component\n * (child components will overwrite parent meta info)\n *\n * @param {Object} component - the Vue instance to get meta info from\n * @return {Object} - returned meta info\n */\n\nfunction getMetaInfo(options, info, escapeSequences, component) {\n options = options || {};\n escapeSequences = escapeSequences || [];\n var _options = options,\n tagIDKeyName = _options.tagIDKeyName; // Remove all \"template\" tags from meta\n // backup the title chunk in case user wants access to it\n\n if (info.title) {\n info.titleChunk = info.title;\n } // replace title with populated template\n\n\n if (info.titleTemplate && info.titleTemplate !== '%s') {\n applyTemplate({\n component: component,\n contentKeyName: 'title'\n }, info, info.titleTemplate, info.titleChunk || '');\n } // convert base tag to an array so it can be handled the same way\n // as the other tags\n\n\n if (info.base) {\n info.base = Object.keys(info.base).length ? [info.base] : [];\n }\n\n if (info.meta) {\n // remove meta items with duplicate vmid's\n info.meta = info.meta.filter(function (metaItem, index, arr) {\n var hasVmid = !!metaItem[tagIDKeyName];\n\n if (!hasVmid) {\n return true;\n }\n\n var isFirstItemForVmid = index === findIndex(arr, function (item) {\n return item[tagIDKeyName] === metaItem[tagIDKeyName];\n });\n return isFirstItemForVmid;\n }); // apply templates if needed\n\n info.meta.forEach(function (metaObject) {\n return applyTemplate(options, metaObject);\n });\n }\n\n return escapeMetaInfo(options, info, escapeSequences);\n}\n\n/**\n * When called, will update the current meta info with new meta info.\n * Useful when updating meta info as the result of an asynchronous\n * action that resolves after the initial render takes place.\n *\n * Credit to [Sébastien Chopin](https://github.com/Atinux) for the suggestion\n * to implement this method.\n *\n * @return {Object} - new meta info\n */\n\nfunction refresh(rootVm, options) {\n options = options || {}; // make sure vue-meta was initiated\n\n if (!rootVm[rootConfigKey]) {\n showWarningNotSupported();\n return {};\n } // collect & aggregate all metaInfo $options\n\n\n var rawInfo = getComponentMetaInfo(options, rootVm);\n var metaInfo = getMetaInfo(options, rawInfo, clientSequences, rootVm);\n var appId = rootVm[rootConfigKey].appId;\n var tags = updateClientMetaInfo(appId, options, metaInfo); // emit \"event\" with new info\n\n if (tags && isFunction(metaInfo.changed)) {\n metaInfo.changed(metaInfo, tags.tagsAdded, tags.tagsRemoved);\n tags = {\n addedTags: tags.tagsAdded,\n removedTags: tags.tagsRemoved\n };\n }\n\n var appsMetaInfo = getAppsMetaInfo();\n\n if (appsMetaInfo) {\n for (var additionalAppId in appsMetaInfo) {\n updateClientMetaInfo(additionalAppId, options, appsMetaInfo[additionalAppId]);\n delete appsMetaInfo[additionalAppId];\n }\n\n clearAppsMetaInfo(true);\n }\n\n return {\n vm: rootVm,\n metaInfo: metaInfo,\n // eslint-disable-line object-shorthand\n tags: tags\n };\n}\n\n/**\n * Generates tag attributes for use on the server.\n *\n * @param {('bodyAttrs'|'htmlAttrs'|'headAttrs')} type - the type of attributes to generate\n * @param {Object} data - the attributes to generate\n * @return {Object} - the attribute generator\n */\n\nfunction attributeGenerator(options, type, data, _ref) {\n var addSsrAttribute = _ref.addSsrAttribute;\n\n var _ref2 = options || {},\n attribute = _ref2.attribute,\n ssrAttribute = _ref2.ssrAttribute;\n\n var attributeStr = '';\n\n for (var attr in data) {\n var attrData = data[attr];\n var attrValues = [];\n\n for (var appId in attrData) {\n attrValues.push.apply(attrValues, _toConsumableArray([].concat(attrData[appId])));\n }\n\n if (attrValues.length) {\n attributeStr += booleanHtmlAttributes.includes(attr) && attrValues.some(Boolean) ? \"\".concat(attr) : \"\".concat(attr, \"=\\\"\").concat(attrValues.join(' '), \"\\\"\");\n attributeStr += ' ';\n }\n }\n\n if (attributeStr) {\n attributeStr += \"\".concat(attribute, \"=\\\"\").concat(encodeURI(JSON.stringify(data)), \"\\\"\");\n }\n\n if (type === 'htmlAttrs' && addSsrAttribute) {\n return \"\".concat(ssrAttribute).concat(attributeStr ? ' ' : '').concat(attributeStr);\n }\n\n return attributeStr;\n}\n\n/**\n * Generates title output for the server\n *\n * @param {'title'} type - the string \"title\"\n * @param {String} data - the title text\n * @return {Object} - the title generator\n */\nfunction titleGenerator(options, type, data, generatorOptions) {\n var _ref = generatorOptions || {},\n ln = _ref.ln;\n\n if (!data) {\n return '';\n }\n\n return \"<\".concat(type, \">\").concat(data, \"\").concat(ln ? '\\n' : '');\n}\n\n/**\n * Generates meta, base, link, style, script, noscript tags for use on the server\n *\n * @param {('meta'|'base'|'link'|'style'|'script'|'noscript')} the name of the tag\n * @param {(Array|Object)} tags - an array of tag objects or a single object in case of base\n * @return {Object} - the tag generator\n */\n\nfunction tagGenerator(options, type, tags, generatorOptions) {\n var _ref = options || {},\n ssrAppId = _ref.ssrAppId,\n attribute = _ref.attribute,\n tagIDKeyName = _ref.tagIDKeyName;\n\n var _ref2 = generatorOptions || {},\n appId = _ref2.appId,\n _ref2$isSSR = _ref2.isSSR,\n isSSR = _ref2$isSSR === void 0 ? true : _ref2$isSSR,\n _ref2$body = _ref2.body,\n body = _ref2$body === void 0 ? false : _ref2$body,\n _ref2$pbody = _ref2.pbody,\n pbody = _ref2$pbody === void 0 ? false : _ref2$pbody,\n _ref2$ln = _ref2.ln,\n ln = _ref2$ln === void 0 ? false : _ref2$ln;\n\n var dataAttributes = [tagIDKeyName].concat(_toConsumableArray(commonDataAttributes));\n\n if (!tags || !tags.length) {\n return '';\n } // build a string containing all tags of this type\n\n\n return tags.reduce(function (tagsStr, tag) {\n if (tag.skip) {\n return tagsStr;\n }\n\n var tagKeys = Object.keys(tag);\n\n if (tagKeys.length === 0) {\n return tagsStr; // Bail on empty tag object\n }\n\n if (Boolean(tag.body) !== body || Boolean(tag.pbody) !== pbody) {\n return tagsStr;\n }\n\n var attrs = tag.once ? '' : \" \".concat(attribute, \"=\\\"\").concat(appId || (isSSR === false ? '1' : ssrAppId), \"\\\"\"); // build a string containing all attributes of this tag\n\n for (var attr in tag) {\n // these attributes are treated as children on the tag\n if (tagAttributeAsInnerContent.includes(attr) || tagProperties.includes(attr)) {\n continue;\n }\n\n if (attr === 'callback') {\n attrs += ' onload=\"this.__vm_l=1\"';\n continue;\n } // these form the attribute list for this tag\n\n\n var prefix = '';\n\n if (dataAttributes.includes(attr)) {\n prefix = 'data-';\n }\n\n var isBooleanAttr = !prefix && booleanHtmlAttributes.includes(attr);\n\n if (isBooleanAttr && !tag[attr]) {\n continue;\n }\n\n attrs += \" \".concat(prefix).concat(attr) + (isBooleanAttr ? '' : \"=\\\"\".concat(tag[attr], \"\\\"\"));\n }\n\n var json = '';\n\n if (tag.json) {\n json = JSON.stringify(tag.json);\n } // grab child content from one of these attributes, if possible\n\n\n var content = tag.innerHTML || tag.cssText || json; // generate tag exactly without any other redundant attribute\n // these tags have no end tag\n\n var hasEndTag = !tagsWithoutEndTag.includes(type); // these tag types will have content inserted\n\n var hasContent = hasEndTag && tagsWithInnerContent.includes(type); // the final string for this specific tag\n\n return \"\".concat(tagsStr, \"<\").concat(type).concat(attrs).concat(!hasContent && hasEndTag ? '/' : '', \">\") + (hasContent ? \"\".concat(content, \"\") : '') + (ln ? '\\n' : '');\n }, '');\n}\n\n/**\n * Converts a meta info property to one that can be stringified on the server\n *\n * @param {String} type - the type of data to convert\n * @param {(String|Object|Array)} data - the data value\n * @return {Object} - the new injector\n */\n\nfunction generateServerInjector(options, metaInfo, globalInjectOptions) {\n var serverInjector = {\n data: metaInfo,\n extraData: undefined,\n addInfo: function addInfo(appId, metaInfo) {\n this.extraData = this.extraData || {};\n this.extraData[appId] = metaInfo;\n },\n callInjectors: function callInjectors(opts) {\n var m = this.injectors; // only call title for the head\n\n return (opts.body || opts.pbody ? '' : m.title.text(opts)) + m.meta.text(opts) + m.base.text(opts) + m.link.text(opts) + m.style.text(opts) + m.script.text(opts) + m.noscript.text(opts);\n },\n injectors: {\n head: function head(ln) {\n return serverInjector.callInjectors(_objectSpread2(_objectSpread2({}, globalInjectOptions), {}, {\n ln: ln\n }));\n },\n bodyPrepend: function bodyPrepend(ln) {\n return serverInjector.callInjectors(_objectSpread2(_objectSpread2({}, globalInjectOptions), {}, {\n ln: ln,\n pbody: true\n }));\n },\n bodyAppend: function bodyAppend(ln) {\n return serverInjector.callInjectors(_objectSpread2(_objectSpread2({}, globalInjectOptions), {}, {\n ln: ln,\n body: true\n }));\n }\n }\n };\n\n var _loop = function _loop(type) {\n if (metaInfoOptionKeys.includes(type)) {\n return \"continue\";\n }\n\n serverInjector.injectors[type] = {\n text: function text(injectOptions) {\n var addSsrAttribute = injectOptions === true;\n injectOptions = _objectSpread2(_objectSpread2({\n addSsrAttribute: addSsrAttribute\n }, globalInjectOptions), injectOptions);\n\n if (type === 'title') {\n return titleGenerator(options, type, serverInjector.data[type], injectOptions);\n }\n\n if (metaInfoAttributeKeys.includes(type)) {\n var attributeData = {};\n var data = serverInjector.data[type];\n\n if (data) {\n var appId = injectOptions.isSSR === false ? '1' : options.ssrAppId;\n\n for (var attr in data) {\n attributeData[attr] = _defineProperty({}, appId, data[attr]);\n }\n }\n\n if (serverInjector.extraData) {\n for (var _appId in serverInjector.extraData) {\n var _data = serverInjector.extraData[_appId][type];\n\n if (_data) {\n for (var _attr in _data) {\n attributeData[_attr] = _objectSpread2(_objectSpread2({}, attributeData[_attr]), {}, _defineProperty({}, _appId, _data[_attr]));\n }\n }\n }\n }\n\n return attributeGenerator(options, type, attributeData, injectOptions);\n }\n\n var str = tagGenerator(options, type, serverInjector.data[type], injectOptions);\n\n if (serverInjector.extraData) {\n for (var _appId2 in serverInjector.extraData) {\n var _data2 = serverInjector.extraData[_appId2][type];\n var extraStr = tagGenerator(options, type, _data2, _objectSpread2({\n appId: _appId2\n }, injectOptions));\n str = \"\".concat(str).concat(extraStr);\n }\n }\n\n return str;\n }\n };\n };\n\n for (var type in defaultInfo) {\n var _ret = _loop(type);\n\n if (_ret === \"continue\") continue;\n }\n\n return serverInjector;\n}\n\n/**\n * Converts the state of the meta info object such that each item\n * can be compiled to a tag string on the server\n *\n * @vm {Object} - Vue instance - ideally the root component\n * @return {Object} - server meta info with `toString` methods\n */\n\nfunction inject(rootVm, options, injectOptions) {\n // make sure vue-meta was initiated\n if (!rootVm[rootConfigKey]) {\n showWarningNotSupported();\n return {};\n } // collect & aggregate all metaInfo $options\n\n\n var rawInfo = getComponentMetaInfo(options, rootVm);\n var metaInfo = getMetaInfo(options, rawInfo, serverSequences, rootVm); // generate server injector\n\n var serverInjector = generateServerInjector(options, metaInfo, injectOptions); // add meta info from additional apps\n\n var appsMetaInfo = getAppsMetaInfo();\n\n if (appsMetaInfo) {\n for (var additionalAppId in appsMetaInfo) {\n serverInjector.addInfo(additionalAppId, appsMetaInfo[additionalAppId]);\n delete appsMetaInfo[additionalAppId];\n }\n\n clearAppsMetaInfo(true);\n }\n\n return serverInjector.injectors;\n}\n\nfunction $meta(options) {\n options = options || {};\n /**\n * Returns an injector for server-side rendering.\n * @this {Object} - the Vue instance (a root component)\n * @return {Object} - injector\n */\n\n var $root = this.$root;\n return {\n getOptions: function getOptions$1() {\n return getOptions(options);\n },\n setOptions: function setOptions(newOptions) {\n var refreshNavKey = 'refreshOnceOnNavigation';\n\n if (newOptions && newOptions[refreshNavKey]) {\n options.refreshOnceOnNavigation = !!newOptions[refreshNavKey];\n addNavGuards($root);\n }\n\n var debounceWaitKey = 'debounceWait';\n\n if (newOptions && debounceWaitKey in newOptions) {\n var debounceWait = parseInt(newOptions[debounceWaitKey]);\n\n if (!isNaN(debounceWait)) {\n options.debounceWait = debounceWait;\n }\n }\n\n var waitOnDestroyedKey = 'waitOnDestroyed';\n\n if (newOptions && waitOnDestroyedKey in newOptions) {\n options.waitOnDestroyed = !!newOptions[waitOnDestroyedKey];\n }\n },\n refresh: function refresh$1() {\n return refresh($root, options);\n },\n inject: function inject$1(injectOptions) {\n return inject($root, options, injectOptions) ;\n },\n pause: function pause$1() {\n return pause($root);\n },\n resume: function resume$1() {\n return resume($root);\n },\n addApp: function addApp$1(appId) {\n return addApp($root, appId, options);\n }\n };\n}\n\nfunction generate(rawInfo, options) {\n options = setOptions(options);\n var metaInfo = getMetaInfo(options, rawInfo, serverSequences);\n var serverInjector = generateServerInjector(options, metaInfo);\n return serverInjector.injectors;\n}\n\n/**\n * Plugin install function.\n * @param {Function} Vue - the Vue constructor.\n */\n\nfunction install(Vue, options) {\n if (Vue.__vuemeta_installed) {\n return;\n }\n\n Vue.__vuemeta_installed = true;\n options = setOptions(options);\n\n Vue.prototype.$meta = function () {\n return $meta.call(this, options);\n };\n\n Vue.mixin(createMixin(Vue, options));\n}\n\nvar index = {\n version: version,\n install: install,\n generate: function generate$1(metaInfo, options) {\n return generate(metaInfo, options) ;\n },\n hasMetaInfo: hasMetaInfo\n};\n\nexport default index;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport Swal from \"sweetalert2\";\nvar VueSimpleAlert = (function () {\n function VueSimpleAlert() {\n }\n VueSimpleAlert.alert = function (message, title, type, options) {\n return new Promise(function (resolve) {\n var mixedOptions = __assign(__assign({}, VueSimpleAlert.globalOptions), options);\n mixedOptions.title = title || mixedOptions.title;\n mixedOptions.text = message || mixedOptions.text;\n mixedOptions.type = type || mixedOptions.type;\n Swal.fire(mixedOptions)\n .then(function () {\n resolve(true);\n })\n .catch(function () {\n resolve(true);\n });\n });\n };\n VueSimpleAlert.confirm = function (message, title, type, options) {\n return new Promise(function (resolve, reject) {\n var mixedOptions = __assign(__assign({}, VueSimpleAlert.globalOptions), options);\n mixedOptions.title = title || mixedOptions.title;\n mixedOptions.text = message || mixedOptions.text;\n mixedOptions.type = type || mixedOptions.type;\n mixedOptions.showCancelButton = true;\n Swal.fire(mixedOptions)\n .then(function (r) {\n if (r.value === true) {\n resolve(true);\n }\n else\n reject();\n })\n .catch(function () { return reject(); });\n });\n };\n VueSimpleAlert.prompt = function (message, defaultText, title, type, options) {\n return new Promise(function (resolve, reject) {\n var mixedOptions = __assign(__assign({}, VueSimpleAlert.globalOptions), options);\n mixedOptions.title = title || mixedOptions.title;\n mixedOptions.inputValue = defaultText;\n mixedOptions.text = message || mixedOptions.text;\n mixedOptions.type = type || mixedOptions.type;\n mixedOptions.showCancelButton = true;\n mixedOptions.input = mixedOptions.input || \"text\";\n Swal.fire(mixedOptions)\n .then(function (r) {\n if (r.value) {\n resolve(r.value);\n }\n else\n reject();\n })\n .catch(function () {\n return reject();\n });\n });\n };\n VueSimpleAlert.fire = function (options) {\n return Swal.fire(options);\n };\n VueSimpleAlert.install = function (Vue, options) {\n VueSimpleAlert.globalOptions = options;\n Vue.alert = VueSimpleAlert.alert;\n Vue.confirm = VueSimpleAlert.confirm;\n Vue.prompt = VueSimpleAlert.prompt;\n Vue.fire = VueSimpleAlert.fire;\n if (!Vue.prototype.hasOwnProperty(\"$alert\")) {\n Vue.prototype.$alert = VueSimpleAlert.alert;\n }\n if (!Vue.prototype.hasOwnProperty(\"$confirm\")) {\n Vue.prototype.$confirm = VueSimpleAlert.confirm;\n }\n if (!Vue.prototype.hasOwnProperty(\"$prompt\")) {\n Vue.prototype.$prompt = VueSimpleAlert.prompt;\n }\n if (!Vue.prototype.hasOwnProperty(\"$fire\")) {\n Vue.prototype.$fire = VueSimpleAlert.fire;\n }\n };\n return VueSimpleAlert;\n}());\nexport { VueSimpleAlert };\nexport default VueSimpleAlert;\n//# sourceMappingURL=index.js.map","/*!\n * vue-router v3.4.6\n * (c) 2020 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (process.env.NODE_ENV !== 'production' && !condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return (\n a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') &&\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query)\n )\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params)\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key) {\n var aVal = a[key];\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/\\//g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n exact: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget);\n classes[activeClass] = this.exact\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\"RouterLink with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m;\n try {\n m = decodeURI(path).match(regex);\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + path + \"\\\". Leaving it intact.\"));\n }\n }\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n window.scrollTo(position.x, position.y);\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n this$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1.ready) {\n this$1.ready = true;\n this$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1.ready = true;\n this$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1.errorCbs.length) {\n this$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n warn(false, 'uncaught error during route navigation:');\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1.replace(to);\n } else {\n this$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1.pending = null;\n onComplete(route);\n if (this$1.router.app) {\n this$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1.base);\n if (this$1.current === START && location === this$1._startLocation) {\n return\n }\n\n this$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n if (base && path.toLowerCase().indexOf(base.toLowerCase()) === 0) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route);\n this$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1.current;\n this$1.index = targetIndex;\n this$1.updateRoute(route);\n this$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1.apps.indexOf(app);\n if (index > -1) { this$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1.app === app) { this$1.app = this$1.apps[0] || null; }\n\n if (!this$1.app) { this$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\nVueRouter.install = install;\nVueRouter.version = '3.4.6';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nexport default VueRouter;\n","/*!\n * vue-slide-bar v1.2.0\n * (c) 2018-present biig_pongsatorn \n * Released under the MIT License.\n */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.vueSlideBar=e()}(this,function(){\"use strict\";function t(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function e(e){for(var i=1;i-1&&(this.currentValue=e)}else this.currentValue=t}},currentIndex:function(){return(this.currentValue-this.minimum)/this.spacing},indexRange:function(){return[0,this.currentIndex]},minimum:function(){return this.data?0:this.min},maximum:function(){return this.data?this.data.length-1:this.max},multiple:function(){var t=\"\".concat(this.interval).split(\".\")[1];return t?Math.pow(10,t.length):1},spacing:function(){return this.data?1:this.interval},total:function(){return this.data?this.data.length-1:(Math.floor((this.maximum-this.minimum)*this.multiple)%(this.interval*this.multiple)!=0&&this.printError(\"[VueSlideBar error]: Prop[interval] is illegal, Please make sure that the interval can be divisible\"),(this.maximum-this.minimum)/this.interval)},gap:function(){return this.size/this.total},position:function(){return(this.currentValue-this.minimum)/this.spacing*this.gap},limit:function(){return[0,this.size]},valueLimit:function(){return[this.minimum,this.maximum]},calculateHeight:function(){return this.paddingless?{}:{\"padding-top\":\"40px\",\"min-height\":this.range?\"100px\":null}}},watch:{value:function(t){this.flag?this.setValue(t):this.setValue(t,this.speed)},max:function(t){if(tthis.max)return this.printError(\"[VueSlideBar error]: The minimum value can not be greater than the maximum value.\");var e=this.limitValue(this.val);this.setValue(e),this.refresh()}},methods:{bindEvents:function(){document.addEventListener(\"touchmove\",this.moving,{passive:!1}),document.addEventListener(\"touchend\",this.moveEnd,{passive:!1}),document.addEventListener(\"mousemove\",this.moving),document.addEventListener(\"mouseup\",this.moveEnd),document.addEventListener(\"mouseleave\",this.moveEnd),window.addEventListener(\"resize\",this.refresh)},unbindEvents:function(){window.removeEventListener(\"resize\",this.refresh),document.removeEventListener(\"touchmove\",this.moving),document.removeEventListener(\"touchend\",this.moveEnd),document.removeEventListener(\"mousemove\",this.moving),document.removeEventListener(\"mouseup\",this.moveEnd),document.removeEventListener(\"mouseleave\",this.moveEnd)},getPos:function(t){return this.realTime&&this.getStaticData(),t.clientX-this.offset},wrapClick:function(t){if(this.isDisabled||!this.draggable&&t.target.id===this.id)return!1;var e=this.getPos(t);this.setValueOnPos(e)},moveStart:function(t,e){if(!this.draggable)return!1;this.flag=!0,this.$emit(\"dragStart\",this)},moving:function(t){if(!this.flag||!this.draggable)return!1;t.preventDefault(),t.targetTouches&&t.targetTouches[0]&&(t=t.targetTouches[0]),this.setValueOnPos(this.getPos(t),!0)},moveEnd:function(t){if(!this.flag||!this.draggable)return!1;this.$emit(\"dragEnd\",this),this.lazy&&this.isDiff(this.val,this.value)&&this.syncValue(),this.flag=!1,this.setPosition()},setValueOnPos:function(t,e){var i=this.limit,n=this.valueLimit;if(t>=i[0]&&t<=i[1]){this.setTransform(t);var s=(Math.round(t/this.gap)*(this.spacing*this.multiple)+this.minimum*this.multiple)/this.multiple;this.setCurrentValue(s,e)}else tthis.maximum)return!1;this.isDiff(this.currentValue,t)&&(this.currentValue=t,this.lazy&&this.flag||this.syncValue()),e||this.setPosition()},setIndex:function(t){t=this.spacing*t+this.minimum,this.setCurrentValue(t)},setValue:function(t,e){var i=this;if(this.isDiff(this.val,t)){var n=this.limitValue(t);this.val=n,this.syncValue()}this.$nextTick(function(){return i.setPosition(e)})},setPosition:function(t){this.flag?this.setTransitionTime(0):this.setTransitionTime(void 0===t?this.speed:t),this.setTransform(this.position)},setTransform:function(t){var e=t-(this.$refs.tooltip.scrollWidth-2)/2,i=\"translateX(\".concat(e,\"px)\");this.slider.style.transform=i,this.slider.style.WebkitTransform=i,this.slider.style.msTransform=i,this.$refs.process.style.width=\"\".concat(t,\"px\"),this.$refs.process.style.left=0},setTransitionTime:function(t){this.slider.style.transitionDuration=\"\".concat(t,\"s\"),this.slider.style.WebkitTransitionDuration=\"\".concat(t,\"s\"),this.$refs.process.style.transitionDuration=\"\".concat(t,\"s\"),this.$refs.process.style.WebkitTransitionDuration=\"\".concat(t,\"s\")},limitValue:function(t){var e=this;if(this.data)return t;var i;return(i=t)e.max?(e.printError(\"[VueSlideBar warn]: The value of the slider is \".concat(t,\", the maximum value is \").concat(e.max,\", the value of this slider can not be greater than the maximum value\")),e.max):i},syncValue:function(){var t=this.val;this.range&&this.$emit(\"callbackRange\",this.range[this.currentIndex]),this.$emit(\"input\",t)},getValue:function(){return this.val},getIndex:function(){return this.currentIndex},getStaticData:function(){this.$refs.elem&&(this.size=this.$refs.elem.offsetWidth,this.offset=this.$refs.elem.getBoundingClientRect().left)},refresh:function(){this.$refs.elem&&(this.getStaticData(),this.setPosition())},printError:function(t){console.error(t)}},mounted:function(){var t=this;if(this.isComponentExists=!0,\"undefined\"==typeof window||\"undefined\"==typeof document)return this.printError(\"[VueSlideBar error]: window or document is undefined, can not be initialization.\");this.$nextTick(function(){t.isComponentExists&&(t.getStaticData(),t.setValue(t.limitValue(t.value),0),t.bindEvents())})},beforeDestroy:function(){this.isComponentExists=!1,this.unbindEvents()}};const n=\"undefined\"!=typeof navigator&&/msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());const s=document.head||document.getElementsByTagName(\"head\")[0],r={};const a=i;i.__file=\"index.vue\";return function(t,e,i,n,s,r,a,o,l,u){\"function\"==typeof a&&(l=o,o=a,a=!1);const d=\"function\"==typeof i?i.options:i;let h;if(t&&t.render&&(d.render=t.render,d.staticRenderFns=t.staticRenderFns,d._compiled=!0,s&&(d.functional=!0)),n&&(d._scopeId=n),r?(h=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),e&&e.call(this,l(t)),t&&t._registeredComponents&&t._registeredComponents.add(r)},d._ssrRegister=h):e&&(h=a?function(){e.call(this,u(this.$root.$options.shadowRoot))}:function(t){e.call(this,o(t))}),h)if(d.functional){const t=d.render;d.render=function(e,i){return h.call(i),t(e,i)}}else{const t=d.beforeCreate;d.beforeCreate=t?[].concat(t,h):[h]}return i}({render:function(){var t=this,e=t.$createElement,i=t._self._c||e;return i(\"div\",{ref:\"wrap\",staticClass:\"vue-slide-bar-component vue-slide-bar-horizontal\",style:t.calculateHeight,attrs:{id:t.id},on:{click:t.wrapClick}},[i(\"div\",{ref:\"elem\",staticClass:\"vue-slide-bar\",style:{height:t.lineHeight+\"px\"}},[[i(\"div\",{ref:\"tooltip\",staticClass:\"vue-slide-bar-always vue-slide-bar-tooltip-container\",style:{width:t.iconWidth+\"px\"},on:{mousedown:t.moveStart,touchstart:t.moveStart}},[t.showTooltip?i(\"span\",{staticClass:\"vue-slide-bar-tooltip-top vue-slide-bar-tooltip-wrap\"},[t._t(\"tooltip\",[i(\"span\",{staticClass:\"vue-slide-bar-tooltip\",style:t.tooltipStyles},[t._v(\"\\n \"+t._s(t.val)+\"\\n \")])])],2):t._e()])],t._v(\" \"),i(\"div\",{ref:\"process\",staticClass:\"vue-slide-bar-process\",style:t.processStyle})],2),t._v(\" \"),t.range?i(\"div\",{staticClass:\"vue-slide-bar-range\"},t._l(t.range,function(e,n){return i(\"div\",{key:n,staticClass:\"vue-slide-bar-separate\",style:t.dataLabelStyles},[e.isHide?t._e():i(\"span\",{staticClass:\"vue-slide-bar-separate-text\"},[t._v(\"\\n \"+t._s(e.label)+\"\\n \")])])}),0):t._e()])},staticRenderFns:[]},function(t){t&&t(\"data-v-d3e7b39a_0\",{source:\".vue-slide-bar-component[data-v-d3e7b39a]{position:relative;box-sizing:border-box;user-select:none}.vue-slide-bar[data-v-d3e7b39a]{position:relative;display:block;border-radius:15px;background-color:#d8d8d8;cursor:pointer}.vue-slide-bar[data-v-d3e7b39a]::after{content:'';position:absolute;left:0;top:0;width:100%;height:100%;z-index:2}.vue-slide-bar-process[data-v-d3e7b39a]{position:absolute;border-radius:15px;background-color:#1066fd;transition:all 0s;z-index:1;width:0;height:100%;top:0;left:0;will-change:width}.vue-slide-bar-tooltip-container[data-v-d3e7b39a]{position:absolute;transition:all 0s;will-change:transform;cursor:pointer;z-index:3;left:0;top:-16px}.vue-slide-bar-tooltip-wrap[data-v-d3e7b39a]{position:absolute;z-index:9;width:100%;height:100%;display:block!important}.vue-slide-bar-tooltip-top[data-v-d3e7b39a]{top:-12px;left:40%;transform:translate(-50%,-100%)}.vue-slide-bar-tooltip[data-v-d3e7b39a]{position:relative;font-size:14px;white-space:nowrap;padding:2px 5px;min-width:20px;text-align:center;color:#fff;border-radius:5px;border:1px solid #1066fd;background-color:#1066fd}.vue-slide-bar-tooltip[data-v-d3e7b39a]::before{content:'';position:absolute;bottom:-10px;left:50%;width:0;height:0;border:5px solid transparent;border-top-color:inherit;transform:translate(-50%,0)}.vue-slide-bar-range[data-v-d3e7b39a]{display:flex;padding:5px 0;justify-content:space-between}.vue-slide-bar-separate[data-v-d3e7b39a]{position:relative;width:2px;background-color:#9e9e9e;height:5px;cursor:pointer}.vue-slide-bar-separate-text[data-v-d3e7b39a]{text-align:center;position:absolute;white-space:nowrap;transform:translate(-50%,0);top:6px}\",map:void 0,media:void 0})},a,\"data-v-d3e7b39a\",!1,void 0,function(t){return(t,e)=>(function(t,e){const i=n?e.media||\"default\":t,a=r[i]||(r[i]={ids:new Set,styles:[]});if(!a.ids.has(t)){a.ids.add(t);let i=e.source;if(e.map&&(i+=\"\\n/*# sourceURL=\"+e.map.sources[0]+\" */\",i+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(e.map))))+\" */\"),a.element||(a.element=document.createElement(\"style\"),a.element.type=\"text/css\",e.media&&a.element.setAttribute(\"media\",e.media),s.appendChild(a.element)),\"styleSheet\"in a.element)a.styles.push(i),a.element.styleSheet.cssText=a.styles.filter(Boolean).join(\"\\n\");else{const t=a.ids.size-1,e=document.createTextNode(i),n=a.element.childNodes;n[t]&&a.element.removeChild(n[t]),n.length?a.element.insertBefore(e,n[t]):a.element.appendChild(e)}}})(t,e)},void 0)});\n//# sourceMappingURL=vue-slide-bar.min.js.map\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.formattedString)}}),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.text.length > _vm.maxChars),expression:\"text.length > maxChars\"}]},[_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isReadMore),expression:\"!isReadMore\"}],attrs:{\"href\":_vm.link,\"id\":\"readmore\"},on:{\"click\":function($event){return _vm.triggerReadMore($event, true)}}},[_vm._v(_vm._s(_vm.moreStr))]),_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isReadMore),expression:\"isReadMore\"}],attrs:{\"href\":_vm.link,\"id\":\"readmore\"},on:{\"click\":function($event){return _vm.triggerReadMore($event, false)}}},[_vm._v(_vm._s(_vm.lessStr))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./ReadMoreComponent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./ReadMoreComponent.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ReadMoreComponent.vue?vue&type=template&id=3ca2a6d4&\"\nimport script from \"./ReadMoreComponent.vue?vue&type=script&lang=js&\"\nexport * from \"./ReadMoreComponent.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export default {\r\n\ttwoWay: true,\r\n\tbind: function(el, bind, vn) {\r\n\t\tvar val_container = bind.value;\r\n\t\t\r\n\t\tif(bind.value.length > bind.arg){\r\n\r\n\t\t\tvn.elm.textContent = bind.value.substring(0,bind.arg)\r\n\t\t\tvar read_more = document.createElement('a');\r\n\t read_more.href = '#';\r\n\t read_more.text = 'read more';\r\n\r\n\t var read_less = document.createElement('a');\r\n\t read_less.href = '#';\r\n\t read_less.text = 'read less';\r\n\r\n\t\t vn.elm.append(' ', read_more);\r\n\r\n\t\t\tread_more.addEventListener(\"click\", function(){ \r\n\t\t\t\tvn.elm.textContent = val_container;\r\n\t\t\t\tvn.elm.append(' ', read_less);\r\n\t\t\t});\r\n\r\n\t\t\tread_less.addEventListener(\"click\", function(){ \r\n\t\t\t\tvn.elm.textContent = bind.value.substring(0,bind.arg)\r\n\t\t\t\tvn.elm.append(' ', read_more);\r\n\t\t\t});\r\n\r\n\t\t}else{\r\n\t\t\tvn.elm.textContent = bind.value\r\n\t\t}\r\n\r\n\r\n\t},\r\n\tupdate: function (newValue) {\r\n // console.log('eyyow');\r\n },\r\n}","import ReadMoreComponent from './components/ReadMoreComponent'\r\nimport ReadMoreDirective from './directives/ReadMoreDirective.js'\r\n\r\nexport default {\r\n install: function (Vue, options) {\r\n Vue.component('readMore', ReadMoreComponent)\r\n Vue.directive('readMore', ReadMoreDirective)\r\n }\r\n}\r\n"],"sourceRoot":""}