{"version":3,"mappings":"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GACX,QAASG,GACT,MAAOY,GACP,MAAOG,GACP,kBAAmBH,GACnB,KAAMM,GACN,WAAYQ,GACZ,SAAUY,GACV,WAAYvB,GACZ,QAASuB,GACT,eAAgBxB,GAChB,OAAQS,GACR,QAAS2E,GACT,KAAMC,GACN,MAAOe,GACP,YAAa/E,GACb,MAAOmD,GACP,KAAM/B,GACN,OAAQ8B,GACR,MAAOrE,EACT,EACI+H,GAAuBD,GCzwB3B,MAAeE,GAAA,CAEb,OAAQ,CACN,SAAU,gBACV,KAAM,+CACN,MACE,sKACF,MACE,wHACF,MAAO,iCACP,OAAQ,2BACR,WAAY,0DACZ,QAAS,8BACT,SAAU,0BACV,MAAO,mCACP,WACE,qNACF,WACE,6GACH,EAGD,aAAc,CACZ,UACE,4MACF,cACE,yFACF,KAAM,cACN,MAAO,sEACP,MAAO,gDACP,MAAO,6BACP,QAAS,wBACV,EACD,gBAAiB,CACf,MACE,ohBACF,QAAS,OACT,WAAY,sCACZ,WAAY,+BACb,EACD,kBAAmB,CACjB,gBAAiB,8DACjB,kBACE,4GACF,MACE,gPACF,MAAO,mBACP,QAAS,6CACT,cAAe,gDACf,SACE,6NACF,WAAY,UACZ,cACE,yJACF,OAAQ,aACR,cAAe,uBACf,YAAa,sBACb,SAAU,+EACV,UAAW,cACX,aAAc,qDACd,WACE,uFACH,EACD,cAAe,CACb,MACE,kMACF,MACE,iHACH,EACD,cAAe,CACb,MACE,oKACF,MAAO,qEACR,EAGD,SAAU,CACR,UACE,yIACF,cAAe,+BACf,WAAY,wDACb,EACD,MAAO,CACL,MACE,mHACF,MACE,sKACF,WAAY,gCACb,EACD,KAAM,CACJ,SAAU,iDACV,aAAc,oBACd,SAAU,8EACV,SAAU,+BACV,WACE,kXACF,eAAgB,qCAChB,MAAO,wEACP,MAAO,yFACP,QAAS,mDACT,YAAa,UACd,EACD,MAAO,CACL,UACE,iPACF,cACE,wGACF,OAAQ,QACR,QAAS,eACT,WAAY,8CACb,EACD,MAAO,CACL,MAAO,oCACP,MAAO,0CACP,WACE,2GACF,WACE,0GACH,EACD,OAAQ,CACN,MACE,4K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AAA;AAAA,MAIZ,aACE,yHACH,EACD,SAAU,CACR,YAAa,4BACb,KAAM,gDACN,IAAK,2FACL,SAAU,OACV,kBAAmB,6CACnB,WAAY,kCACZ,eAAgB,mCAChB,gBACE,kHACF,gBAAiB,iCAClB,EACD,OAAQ,CACN,MAAO,qEACP,aAAc,SACd,QAAS,kBACT,cAAe,oEACf,SAAU,gBACV,eAAgB,mEACjB,EACD,SAAU,CACR,QAAS,sCACT,aAAc,yCACd,SAAU,4DACV,YAAa,sEACb,SAAU,YACV,KAAM,cACN,KAAM,kDACN,aAAc,iBACd,WAAY,iBACZ,cAAe,sEACf,WAAY,iBACZ,UAAW,qEACZ,EACD,OAAQ,CACN,MAAO,WACP,KAAM,YACN,YACE,kWACF,MAAO,4CACP,aAAc,oCACd,WAAY,4BACZ,KAAM,2DACN,MAAO,6DACP,KAAM,4HACN,UACE,wFACF,QAAS,oBACT,OACE,oQACF,QACE,6dACF,aAAc,mCACd,SACE,sSACF,SAAU,iCACV,MAAO,4EACP,SACE,wFACH,EACD,QAAS,CACP,MAAO,wBACP,gBAAiB,iDACjB,IAAK,8DACL,WACE,qGACF,SAAU,YACV,KAAM,gDACP,EACD,OAAQ,CACN,SAAU,sCACV,MAAO,2BACP,MAAO,8CACP,WACE,2FACF,MAAO,4EACP,MACE,mTACF,WAAY,oBACZ,QAAS,kCACV,EACD,aAAc,CACZ,MAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASP,SAAU,mBACV,QAAS,4EACT,KAAM,OACN,aACE,qHACF,mBAAoB,6DACpB,4BAA6B,kBAC7B,sBACE,4EACF,qBACE,sXACF,mBAAoB,UACpB,iBACE,iFACF,mBACE,4WACF,mBACE,8EACF,gBAAiB,sCACjB,mBACE,8EACF,kBAAmB,+CACnB,qBAAsB,8BACtB,mBAAoB,mCACpB,wBAAyB,6DACzB,aAAc,SACd,aAAc,kCACd,gBACE,sHACF,cACE,sHACF,aACE,sHACF,WACE,qHACH,CACH,ECnpBMrsC,GAA+B,CACnC,QAAS,CAAE,GAAAitB,EAAG,EACd,OAAQ,KAKR,MAAO,CA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","names":["makeMap","str","expectsLowerCase","set","val","EMPTY_OBJ","EMPTY_ARR","NOOP","NO","isOn","key","isModelListener","extend","remove","arr","el","i","hasOwnProperty","hasOwn","isArray","isMap","toTypeString","isSet","isDate","isFunction","isString","isSymbol","isObject","isPromise","objectToString","value","toRawType","isPlainObject","isIntegerKey","isReservedProp","cacheStringFunction","fn","cache","camelizeRE","camelize","_","c","hyphenateRE","hyphenate","capitalize","toHandlerKey","hasChanged","oldValue","invokeArrayFns","fns","arg","def","obj","looseToNumber","n","toNumber","_globalThis","getGlobalThis","normalizeStyle","res","item","normalized","parseStringStyle","listDelimiterRE","propertyDelimiterRE","styleCommentRE","cssText","ret","tmp","normalizeClass","name","normalizeProps","props","klass","style","specialBooleanAttrs","isSpecialBooleanAttr","includeBooleanAttr","looseCompareArrays","a","b","equal","looseEqual","aValidType","bValidType","aKeysCount","bKeysCount","aHasKey","bHasKey","looseIndexOf","toDisplayString","replacer","_key","entries","val2","stringifySymbol","v","_a","activeEffectScope","EffectScope","detached","currentEffectScope","fromParent","l","last","effectScope","recordEffectScope","effect","scope","getCurrentScope","onScopeDispose","activeEffect","ReactiveEffect","trigger","scheduler","pauseTracking","dep","triggerComputed","resetTracking","lastShouldTrack","shouldTrack","lastEffect","preCleanupEffect","postCleanupEffect","computed","effect2","cleanupDepEffect","trackId","pauseScheduleStack","trackStack","pauseScheduling","resetScheduling","queueEffectSchedulers","trackEffect","debuggerEventExtraInfo","oldDep","triggerEffects","dirtyLevel","tracking","createDep","cleanup","targetMap","ITERATE_KEY","MAP_KEY_ITERATE_KEY","track","target","type","depsMap","newValue","oldTarget","deps","newLength","key2","getDepFromReactive","object","isNonTrackableKeys","builtInSymbols","arrayInstrumentations","createArrayInstrumentations","instrumentations","args","toRaw","BaseReactiveHandler","_isReadonly","_isShallow","receiver","isReadonly2","isShallow2","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","targetIsArray","isRef","readonly","reactive","MutableReactiveHandler","isOldValueReadonly","isReadonly","isShallow","hadKey","result","ReadonlyReactiveHandler","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","toShallow","getProto","get","rawTarget","rawKey","has2","wrap","toReadonly","toReactive","has","size","add","get2","deleteEntry","clear","hadItems","createForEach","callback","thisArg","observed","createIterableMethod","method","targetIsMap","isPair","isKeyOnly","innerIterator","done","createReadonlyMethod","createInstrumentations","mutableInstrumentations2","shallowInstrumentations2","readonlyInstrumentations2","shallowReadonlyInstrumentations2","mutableInstrumentations","readonlyInstrumentations","shallowInstrumentations","shallowReadonlyInstrumentations","createInstrumentationGetter","shallow","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","targetTypeMap","rawType","getTargetType","createReactiveObject","shallowReactive","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","proxy","isReactive","isProxy","raw","markRaw","ComputedRefImpl","getter","_setter","isSSR","triggerRefValue","self","trackRefValue","getterOrOptions","debugOptions","setter","onlyGetter","ref2","newVal","r","ref","createRef","shallowRef","rawValue","RefImpl","__v_isShallow","useDirectValue","triggerRef","unref","toValue","source","shallowUnwrapHandlers","proxyRefs","objectWithRefs","CustomRefImpl","factory","customRef","toRefs","propertyToRef","ObjectRefImpl","_object","_defaultValue","GetterRefImpl","_getter","toRef","defaultValue","callWithErrorHandling","instance","err","handleError","callWithAsyncErrorHandling","values","throwInDev","contextVNode","cur","exposedInstance","errorInfo","errorCapturedHooks","appErrorHandler","logError","isFlushing","isFlushPending","queue","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","nextTick","p","findInsertionIndex","id","start","end","middle","middleJob","middleJobId","getId","queueJob","job","queueFlush","flushJobs","invalidateJob","queuePostFlushCb","cb","flushPreFlushCbs","seen","flushPostFlushCbs","deduped","comparator","diff","emit","event","rawArgs","modelArg","modifiersKey","number","trim","handlerName","handler","onceHandler","normalizeEmitsOptions","comp","appContext","asMixin","cached","hasExtends","extendEmits","raw2","normalizedFromExtend","isEmitListener","options","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","prev","pushScopeId","popScopeId","withScopeId","_id","withCtx","ctx","isNonScopedSlot","renderFnWithContext","setBlockTracking","prevInstance","renderComponentRoot","Component","vnode","withProxy","propsOptions","slots","attrs","render","renderCache","data","setupState","inheritAttrs","fallthroughAttrs","proxyToUse","thisProxy","normalizeVNode","render2","getFunctionalFallthrough","blockStack","createVNode","Comment","root","keys","shapeFlag","filterModelListeners","cloneVNode","shouldUpdateComponent","prevVNode","nextVNode","optimized","prevProps","prevChildren","component","nextProps","nextChildren","patchFlag","emits","hasPropsChanged","dynamicProps","emitsOptions","nextKeys","updateHOCHostEl","parent","COMPONENTS","DIRECTIVES","resolveComponent","maybeSelfReference","resolveAsset","NULL_DYNAMIC_COMPONENT","resolveDynamicComponent","resolveDirective","warnMissing","currentInstance","selfName","getComponentName","resolve","registry","isSuspense","queueEffectWithSuspense","suspense","ssrContextKey","useSSRContext","inject","watchEffect","doWatch","INITIAL_WATCHER_VALUE","watch","immediate","deep","flush","once","onTrack","onTrigger","_cb","unwatch","reactiveGetter","source2","traverse","forceTrigger","isMultiSource","s","onCleanup","baseGetter","ssrCleanup","isInSSRComponentSetup","queuePostRenderEffect","instanceWatch","publicThis","createPathGetter","reset","setCurrentInstance","path","segments","depth","currentDepth","withDirectives","directives","getExposeProxy","bindings","dir","modifiers","invokeDirectiveHook","oldBindings","binding","hook","leaveCbKey","enterCbKey","useTransitionState","state","onMounted","onBeforeUnmount","TransitionHookValidator","BaseTransitionPropsValidators","BaseTransitionImpl","getCurrentInstance","children","getTransitionRawChildren","child","rawProps","mode","emptyPlaceholder","innerChild","getKeepAliveChild","enterHooks","resolveTransitionHooks","setTransitionHooks","oldChild","oldInnerChild","isSameVNodeType","leavingHooks","earlyRemove","delayedLeave","leavingVNodesCache","getLeavingNodesForType","BaseTransition","leavingVNodes","appear","persisted","onBeforeEnter","onEnter","onAfterEnter","onEnterCancelled","onBeforeLeave","onLeave","onAfterLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAfterAppear","onAppearCancelled","callHook","callAsyncHook","hook2","hooks","leavingVNode","afterHook","cancelHook","called","cancelled","vnode2","isKeepAlive","keepComment","parentKey","keyedFragmentCount","Fragment","defineComponent","extraOptions","isAsyncWrapper","defineAsyncComponent","loader","loadingComponent","errorComponent","delay","timeout","suspensible","userOnError","pendingRequest","resolvedComp","retries","retry","load","thisRequest","reject","createInnerComp","onError","loaded","error","delayed","ce","onActivated","registerKeepAliveHook","onDeactivated","wrappedHook","current","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","prepend","createHook","lifecycle","onBeforeMount","onBeforeUpdate","onUpdated","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","renderList","renderItem","index","createSlots","dynamicSlots","slot","j","renderSlot","fallback","noSlotted","openBlock","validSlotContent","ensureValidVNode","rendered","createBlock","vnodes","isVNode","toHandlers","preserveCaseIfNecessary","getPublicInstance","isStatefulComponent","publicPropertiesMap","resolveMergedOptions","hasSetupBinding","PublicInstanceProxyHandlers","accessCache","normalizedProps","shouldCacheAccess","publicGetter","cssModule","globalProperties","descriptor","useAttrs","getContext","createSetupContext","normalizePropsOrEmits","applyOptions","dataOptions","computedOptions","methods","watchOptions","provideOptions","injectOptions","created","beforeMount","mounted","beforeUpdate","updated","activated","deactivated","beforeDestroy","beforeUnmount","destroyed","unmounted","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","components","filters","resolveInjections","methodHandler","opt","createWatcher","provides","provide","registerLifecycleHook","register","_hook","exposed","checkDuplicateProperties","normalizeInject","h","base","mixins","extendsOptions","globalMixins","optionMergeStrategies","resolved","m","mergeOptions","to","from","strats","strat","internalOptionMergeStrats","mergeDataFn","mergeEmitsOrPropsOptions","mergeObjectOptions","mergeAsArray","mergeWatchOptions","mergeInject","merged","createAppContext","uid$1","createAppAPI","hydrate","rootComponent","rootProps","context","installedPlugins","isMounted","app","version","plugin","mixin","directive","rootContainer","isHydrate","namespace","lastApp","currentApp","parentProvides","treatDefaultAsFactory","hasInjectionContext","initProps","isStateful","InternalObjectKey","setFullProps","updateProps","rawPrevProps","rawCurrentProps","hasAttrsChanged","propsToUpdate","camelizedKey","resolvePropValue","kebabKey","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","propsDefaults","normalizePropsOptions","extendProps","normalizedKey","validatePropName","prop","booleanIndex","getTypeIndex","stringIndex","getType","ctor","isSameType","expectedTypes","t","isInternalKey","normalizeSlotValue","normalizeSlot","rawSlot","normalizeObjectSlots","rawSlots","normalizeVNodeSlots","initSlots","updateSlots","needDeletionCheck","deletionComparisonTarget","setRef","rawRef","oldRawRef","parentSuspense","isUnmount","refValue","owner","oldRef","refs","_isString","_isRef","doSet","existing","hasMismatch","isSVGContainer","container","isMathMLContainer","getContainerType","isComment","node","createHydrationFunctions","rendererInternals","mountComponent","patch","patchProp","createText","nextSibling","parentNode","insert","createComment","hydrateNode","parentComponent","slotScopeIds","isFragmentStart","onMismatch","handleMismatch","domType","nextNode","Text","isTemplateNode","replaceNode","Static","needToAdoptContent","hydrateFragment","hydrateElement","locateClosingAnchor","subTree","createTextVNode","hydrateChildren","dirs","transition","forcePatch","needCallTransitionHooks","needTransition","content","next","vnodeHooks","invokeVNodeHook","parentVNode","fragmentSlotScopeIds","isFragment","next2","open","close","match","newNode","oldNode","parentNode2","createRenderer","baseCreateRenderer","createHydrationRenderer","createHydrationFns","hostInsert","hostRemove","hostPatchProp","hostCreateElement","hostCreateText","hostCreateComment","hostSetText","hostSetElementText","hostParentNode","hostNextSibling","hostSetScopeId","hostInsertStaticContent","n1","n2","anchor","getNextHostNode","unmount","processText","processCommentNode","mountStaticNode","processFragment","processElement","processComponent","internals","moveStaticNode","removeStaticNode","mountElement","patchElement","vnodeHook","mountChildren","resolveChildrenNamespace","setScopeId","unmountChildren","scopeId","cloneIfMounted","dynamicChildren","oldProps","newProps","toggleRecurse","patchBlockChildren","patchChildren","patchProps","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","traverseStaticChildren","updateComponent","initialVNode","createComponentInstance","setupComponent","setupRenderEffect","placeholder","updateComponentPreRender","componentUpdateFn","bu","u","nonHydratedAsyncRoot","locateNonHydratedAsyncRoot","originNext","nextTree","prevTree","bm","isAsyncWrapperVNode","hydrateSubTree","scopedInitialVNode","update","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","oldLength","commonLength","nextChild","parentAnchor","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","getSequence","nextIndex","move","moveType","leave","delayLeave","afterLeave","remove2","performLeave","doRemove","shouldInvokeDirs","shouldInvokeVnodeHook","unmountComponent","removeFragment","performRemove","bum","um","currentNamespace","allowed","ch1","ch2","len","arrI","subComponent","isTeleport","isTeleportDisabled","isTargetSVG","isTargetMathML","resolveTarget","select","targetSelector","TeleportImpl","querySelector","disabled","mainAnchor","targetAnchor","mount","container2","anchor2","wasDisabled","currentContainer","currentAnchor","moveTeleport","nextTarget","updateCssVars","shouldRemove","hydrateTeleport","isReorder","targetNode","Teleport","currentBlock","disableTracking","closeBlock","isBlockTreeEnabled","setupBlock","createElementBlock","createBaseVNode","normalizeKey","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","normalizeChildren","_createVNode","cloned","isClassComponent","guardReactiveProps","extraProps","mergeRef","mergedProps","mergeProps","text","flag","createStaticVNode","numberOfNodes","createCommentVNode","asBlock","slotFlag","toMerge","incoming","emptyAppContext","uid","internalSetCurrentInstance","setInSSRSetupState","g","registerGlobalSetter","setters","unsetCurrentInstance","setupResult","setupStatefulComponent","setup","setupContext","resolvedResult","handleSetupResult","e","finishComponentSetup","compile","skipOptions","template","isCustomElement","compilerOptions","delimiters","componentCompilerOptions","finalCompilerOptions","getAttrsProxy","includeInferred","computed$1","propsOrChildren","svgNS","mathmlNS","doc","templateContainer","nodeOps","tag","is","selector","before","wrapper","TRANSITION","ANIMATION","vtcKey","Transition","resolveTransitionProps","DOMTransitionPropsValidators","TransitionPropsValidators","h2","hasExplicitCallback","baseProps","duration","enterFromClass","enterActiveClass","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","durations","normalizeDuration","enterDuration","leaveDuration","finishEnter","isAppear","removeTransitionClass","finishLeave","makeEnterHook","nextFrame","addTransitionClass","whenTransitionEnds","forceReflow","NumberOf","cls","_vtc","endId","expectedType","explicitTimeout","resolveIfNotStale","propCount","getTransitionInfo","endEvent","ended","onEnd","styles","getStyleProperties","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","d","toMs","patchClass","isSVG","transitionClasses","vShowOriginalDisplay","vShowHidden","vShow","setDisplay","CSS_VAR_TEXT","displayRE","patchStyle","isCssString","hasControlledDisplay","prevStyle","setStyle","cssVarText","importantRE","prefixed","autoPrefix","prefixes","prefixCache","rawName","xlinkNS","patchAttr","isBoolean","patchDOMProp","needRemove","addEventListener","removeEventListener","veiKey","patchEvent","prevValue","nextValue","invokers","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","cachedNow","getNow","initialValue","patchStopImmediatePropagation","originalStop","isNativeOn","shouldSetAsProp","positionMap","newPositionMap","moveCbKey","TransitionGroupImpl","moveClass","hasCSSTransform","callPendingCbs","recordPosition","movedChildren","applyTranslation","cssTransitionProps","removeMode","TransitionGroup","oldPos","newPos","dx","dy","clone","getModelAssigner","onCompositionStart","onCompositionEnd","assignKey","vModelText","lazy","castToNumber","domValue","elValue","vModelRadio","getValue","vModelSelect","isSetModel","selectedVal","o","setSelected","_binding","isMultiple","isArrayValue","option","optionValue","optionType","systemModifiers","modifierGuards","withModifiers","cacheKey","guard","keyNames","withKeys","eventKey","k","rendererOptions","renderer","enabledHydration","ensureRenderer","ensureHydrationRenderer","createApp","containerOrSelector","normalizeContainer","resolveRootNamespace","createSSRApp","isVue2","tryOnScopeDispose","makeDestructurable","isClient","toString","noop","isIOS","getIsIOS","createFilterWrapper","filter","bypassFilter","invoke","debounceFilter","ms","timer","maxTimer","lastRejector","_clearTimeout","timer2","maxDuration","pausableFilter","extendFilter","isActive","pause","resume","eventFilter","toRef$1","useDebounceFn","refDebounced","debounced","updater","watchWithFilter","watchPausable","tryOnMounted","sync","tryOnUnmounted","REGEX_PARSE","REGEX_FORMAT","defaultMeridiem","hours","minutes","isLowercase","hasPeriod","acc","curr","formatOrdinal","num","suffixes","formatDate","date","formatStr","years","month","days","seconds","milliseconds","day","meridiem","matches","$1","_a2","_b","normalizeDate","useDateFormat","computedAsync","evaluationCallback","initialState","optionsOrRef","evaluating","started","counter","onInvalidate","counterAtBeginning","hasFinished","cancelCallback","createReusableTemplate","define","reuse","keysToCamelKebabCase","newObj","unrefElement","elRef","plain","defaultWindow","useEventListener","events","listeners","cleanups","listener","options2","stopWatch","optionsClone","stop","_iOSWorkaround","onClickOutside","window","ignore","capture","detectIframe","shouldListen","shouldIgnore","target2","useMounted","useSupported","useMediaQuery","query","isSupported","mediaQuery","_global","globalKey","handlers","getHandlers","getSSRHandler","guessSerializerType","rawInit","StorageSerializers","customStorageEventName","useStorage","defaults","storage","listenToStorageChanges","writeDefaults","mergeDefaults","initOnMounted","serializer","pauseWatch","resumeWatch","pausableWatch","write","updateFromCustomEvent","serialized","read","usePreferredDark","useColorMode","attribute","storageKey","storageRef","emitAuto","disableTransition","modes","preferredDark","system","store","updateHTMLAttrs","selector2","attribute2","defaultOnChanged","onChanged","auto","useDropZone","isOverDropZone","files","isDataTypeIncluded","_options","getFiles","list","useEventListener$1","dataTypes","DEFAULT_UNITS","DEFAULT_MESSAGES","past","DEFAULT_FORMATTER","formatTimeAgo","now","max","messages","fullDateFormatter","units","showSecond","rounding","roundFn","absDiff","diff2","unit","format","applyFormat","isPast","formatter","unitMax","idx","getLifeCycleTarget","defaultDocument","candidateSelectors","candidateSelector","NoElement","getRootNode","element","_element$getRootNode","isInert","lookUp","_node$getAttribute","inertAtt","inert","isContentEditable","_node$getAttribute2","attValue","getCandidates","includeContainer","candidates","getCandidatesIteratively","elements","elementsToCheck","assigned","nestedCandidates","validCandidate","shadowRoot","validShadowRoot","_nestedCandidates","hasTabIndex","getTabIndex","getSortOrderTabIndex","isScope","tabIndex","sortOrderedTabbables","isInput","isHiddenInput","isDetailsWithSummary","getCheckedRadio","nodes","form","isTabbableRadio","radioScope","queryRadios","radioSet","checked","isRadio","isNonTabbableRadio","isNodeAttached","_nodeRoot","nodeRoot","nodeRootHost","attached","_nodeRootHost","_nodeRootHost$ownerDo","_node$ownerDocument","_nodeRoot2","_nodeRootHost2","_nodeRootHost2$ownerD","isZeroArea","_node$getBoundingClie","width","height","isHidden","_ref","displayCheck","getShadowRoot","isDirectSummary","nodeUnderDetails","originalNode","parentElement","rootNode","isDisabledFromFieldset","isNodeMatchingSelectorFocusable","isNodeMatchingSelectorTabbable","isValidShadowRootTabbable","shadowHostNode","sortByOrder","regularTabbables","orderedTabbables","candidateTabindex","sortable","tabbable","focusable","isTabbable","focusableCandidateSelector","isFocusable","ownKeys","_objectSpread2","_defineProperty","_toPropertyKey","_toPrimitive","input","hint","prim","activeFocusTraps","trapStack","trap","activeTrap","trapIndex","isSelectableInput","isEscapeEvent","isTabEvent","isKeyForward","isKeyBackward","findIndex","valueOrHandler","_len","params","getActualTarget","internalTrapStack","createFocusTrap","userOptions","config","getOption","configOverrideOptions","optionName","configOptionName","findContainerIndex","composedPath","tabbableNodes","getNodeForOption","_len2","_key2","getInitialFocusNode","firstTabbableGroup","firstTabbableNode","updateTabbableNodes","focusableNodes","lastTabbableNode","firstDomTabbableNode","lastDomTabbableNode","posTabIndexesFound","forward","nodeIdx","group","getActiveElement","activeElement","tryFocus","getReturnFocusNode","previousActiveElement","findNextNavNode","_ref2","_ref2$isBackward","isBackward","destinationNode","containerIndex","containerGroup","startOfGroupIndex","_ref3","destinationGroupIndex","destinationGroup","lastOfGroupIndex","_ref4","_destinationGroupIndex","_destinationGroup","checkPointerDown","checkFocusIn","targetContained","navAcrossContainers","mruContainerIdx","mruTabIdx","checkKeyNav","checkKey","checkClick","addListeners","removeListeners","checkDomRemoval","mutations","isFocusedNodeRemoved","mutation","removedNodes","mutationObserver","updateObservedNodes","activateOptions","onActivate","onPostActivate","checkCanFocusTrap","finishActivation","deactivateOptions","onDeactivate","onPostDeactivate","checkCanReturnFocus","returnFocus","finishDeactivation","pauseOptions","onPause","onPostPause","unpauseOptions","onUnpause","onPostUnpause","containerElements","elementsAsArray","useFocusTrap","focusTrapOptions","hasFocus","isPaused","activate","opts","deactivate","unpause","uo","q","oe","we","fe","$","Fe","co","Oe","C","fo","M","S","V","O","E","I","w","z","D","vo","po","yo","ao","be","He","le","ne","je","W","X","ho","mo","wo","bo","Ne","se","To","So","Mo","go","Co","ko","Vo","he","Eo","ve","G","De","Bo","Oo","pe","R","F","P","Pe","Do","L","J","Q","Ye","H","Lo","Po","Ao","Ae","Qe","zo","te","Z","Io","me","Ro","Ie","K","We","Xe","xe","ze","Ge","Te","$e","Ue","Se","Me","ie","Ze","y","A","T","Ke","ae","ge","qe","Je","B","U","_e","ue","N","x","eo","Ce","Y","ke","Ve","ye","oo","no","Ee","Re","lo","ee","Le","re","Go","io","jo","Wo","so","Be","de","ro","install","createVfm","explicitKeys","token","dedupe","arr1","arr2","original","property","eq","valA","valB","explicit","eqRegExp","empty","_i","escapeExp","string","regexForFormat","escaped","formats","tokens","regex","format2","isRecord","isPojo","prot","additional","extendArrays","ignoreUndefined","isQuotedString","quoteType","rmEscapes","clean","lastChar","char","nodeProps","sets","valid","modelValue","plugins","validProps","parseArgs","quote","except","toRemove","exps","keysToRemove","exp","only","include","camel","_s","kebab","trail","cap","shallowClone","returnObject","applyExplicit","cloneAny","getAt","addr","segment","undefine","init","slugify","oncePerTick","boolGetter","createDispatcher","middleware","currentIndex","use2","dispatchable","dispatch","payload","explicitPayload","createEmitter","receipts2","buffer","emitter","eventName","pos","receipt","eventListeners","node2","bubble2","meta","bubble","_context","isNode","on","_node","off","errorHandler","error2","warningHandler","warning","warn","code","createMessage","conf","storeTraps","applyMessages","setMessage","removeMessage","filterMessages","reduceMessages","releaseBuffer","touchMessages","createStore","_buffer","_m","_r","_target","_t","releaseMissed","messageStore","message","previous","buffered","_store","reducer","accumulator","_messageStore","applied","address","missed","createMessages","errors","sourceKey","make","errorSet","errors2","misses","createLedger","ledger","createCounter","merge","counterName","condition","increment","parseCondition","sum","count","initial","post","delta","originalParent","reflected","emit2","receipts","deregister","getNode","watchRegistry","configChange","usingFallback","createConfig","submitForm","formElement","clearState","resetTo","resetValue2","defaultConfig","useIndex","valueRemoved","valueMoved","valueInserted","isList","invalidSetter","traps","addChild","addProps","getAddress","getNode2","clearErrors","calm","disturb","destroy","getIndex","setIndex","eachChild","find","setParent","removeChild","getRoot","resetValue","resetConfig","setErrors","submit","use","getName","walkTree","createTraps","curryGetter","createHooks","nameCount","idCount","createName","createValue","async","validateInput","commit","calm2","hydrate2","partial","_value","syncListNodes","childValue","unused","placeholderValues","indexes","emptyIndexes","createPlaceholder","isPlaceholder","definition","clonedDef","feature","propNames","defaults2","attr","camelName","toPropsObj","props2","extend$1","parentContext","listIndex","existingNode","_property","childIndex","preserve","stopIfFalse","skipSubtreeOnFalse","createConfig2","run","library","setIndex2","oldIndex","locator","first","pointer","action","argStr","searchTerm","searcher","bfs","tree","searchValue","searchGoal","search","stack","localValue","parentVal","rootValue","didSet","fragment","localErrors","childErrors","clearChildErrors","createProps","isEmitting","propDefs","_c","_d","originalValue","trap2","findDefinition","createContext","nodeInit","hasInitialId","createNode","ops","isDOM","isComponent","isConditional","isSugar","sugar","iterator","bind","expr","provideTokens","requirements","operand","operatorRegistry","operatorSymbols","operatorChars","getOp","symbols","expression","symbol","getStep","direction","reversed","char2","operators","getTail","tail","length","parseLogicals","step","op","left","operation","parenthetical","parenQuote","startP","addTo","depth2","hasTail","lStep","rStep","evaluate","fnToken","userFuncReturn","tailCall","userFunc","subTokens","rootTokens","tokenSet","token3","cleaned","compiled","reqs","createClasses","propertyKey","sectionClassList","generateClassList","combinedClassList","finalClassList","currentClassList","handleNegativeClasses","$reset","classList","removalToken","hasNegativeClassValue","applicableClasses","className","negativeClass","targetClass","setErrors2","clearErrors2","clearChildren","FORMKIT_VERSION","revokedObservers","createObserver","dependencies","addDependency","observeProps","observeLedger","observe","revoke","block","after","old","newDeps","subArgs","subValue","applyListeners","toAdd","depNode","events2","nodeReceipts","doAfterObservation","res2","diffDeps","oldDeps","eventsToAdd","previousEvents","eventsToRemove","newEvents","isKilled","accepted","accepted_default","date_after","compare","timestamp","fieldValue","date_after_default","alpha","selectedSet","alpha_default","alpha_spaces","alpha_spaces_default","alphanumeric","alphanumeric_default","date_before","date_before_default","between","between_default","hasConfirm","confirm","comparison","foreignValue","confirm_default","contains_alpha","contains_alpha_default","contains_alpha_spaces","contains_alpha_spaces_default","contains_alphanumeric","contains_alphanumeric_default","contains_lowercase","contains_lowercase_default","contains_numeric","contains_numeric_default","contains_symbol","contains_symbol_default","contains_uppercase","contains_uppercase_default","date_between","dateA","dateB","compareTo","date_between_default","date_format","date_format_default","email","email_default","ends_with","ends_with_default","is_default","second","min3","max3","length3","length_default","lowercase","lowercase_default","pattern","matches_default","maximum","max_default","min","minimum","min_default","not","not_default","number2","number_default","require_one","inputNames","require_one_default","required","required_default","starts_with","starts_with_default","symbol_default","uppercase","uppercase_default","url","protocols","url3","url_default","validatingMessage","createValidationPlugin","baseRules","propRules","availableRules","observedNode","validation","reboot","newValidation","newRules","validation2","parseRules","validate","validations","removeImmediately","complete","currentRun","createFailedMessage","runRule","createI18nArgs","i18nArgs","customMessage","createCustomMessage","createMessageName","hintPattern","rulePattern","ruleExtractor","hintExtractor","debounceExtractor","hasDebounce","defaultHints","rules","extractRules","rule","hints","ruleName","parsedHints","parseHints","fnHints","parsedRule","parseRule","trimmed","map","hintGroups","hints2","existingHints","sentence","items","conjunction","oxford","date2","dateTime","order","ui10","validation10","postfix","labels","name2","dependentNode","en","i18nNodes","createI18nPlugin","localeKey","parseLocale","locale","lang","availableLocales","locale2","createLibraryPlugin","libraries","lib","runtimeProps","isGroupOption","option2","normalizeOptions","undefinedIfNotFound","found","shouldSelect","valueA","valueB","createSection","section","fragment2","extendable","extensions","extendSchema","createRoot","rootSection","isSchemaObject","schema","extension","actions","box","boxHelp","boxInner","boxLabel","boxOption","boxOptions","boxWrapper","buttonInput","buttonLabel","decorator","fieldset","fileInput","fileItem","fileList","fileName","fileRemove","formInput","help","icon","sectionKey","rawIconProp","inner","label","legend","noFiles","optGroup","optionSlot","outer","prefix","selectInput","submitInput","suffix","textInput","textareaInput","normalizeBoxes","toggleChecked","existingValue","isChecked","checkboxes","defaultIcon","defaultIcon2","disables","localize","isBrowser","removeHover","preventStrayDrop","files2","file2","loading","handleSubmit","submitEvent","submitNonce","setSubmitted","setIncompleteMessage","retVal","autoDisable","casts","strict","numericValue","toggleChecked2","isChecked2","radios","radioInstance","renamesRadios","renamesRadiosPlugin","isSelected","optionValue2","optionA","containsValue","deferChange","selectInput2","applyPlaceholder","firstValue","hasMatchingValue","isSlotCondition","$if","then","otherwise","conditionalNode","$extend","extendWith","button","checkbox","file","form2","hidden","radio","select2","textarea","inputs","generateClasses","classes","classesBySectionKey","classesObject","sectionKey2","addClassesBySection","_sectionKey","classesByType","family","listParts","documentStyles","documentThemeLinkTag","themeDidLoad","themeHasLoaded","themeWasRequested","themeLoaded","iconRegistry","iconRequests","createThemePlugin","theme","icons","iconLoaderUrl","iconLoader","loadTheme","themePlugin","createIconHandler","loadIconPropIcons","clickHandlerProp","handlerFunction","themeUrl","link","iconName","isDefault","iconWasAlreadyLoaded","loadedIcon","getIconFromStylesheet","iconValue","getRemoteIcon","finalIcon","loadStylesheetIcon","cssVarIcon","formkitVersion","fetchUrl","iconHandler","iconRegex","loadPropIcon","reloadIcon","svg","operator","warnings","inputType","decodeErrors","registered","decodeWarnings","__defProp","__getOwnPropNames","__esm","__export","all","vueBindings","bindings_default","init_bindings","isValid","hasErrors","hasTicked","availableMessages","message3","validationVisibility","hasShownErrors","isRequired","checkForRequired","parsedRules","validationVisible","isComplete","hasValidation","messages3","visibleMessages","ui","messages4","cachedClasses","classes2","rootClasses","globalConfigClasses","classesPropClasses","sectionPropClasses","describedBy","describers","value2","doCompare","isDirty","isSettled","iconPattern","matchingProps","definedAs","definition3","updateState","defaultConfig_exports","init_defaultConfig","locales","inputs$1","nodeOptions","defaultRules","i18n","isServer","ssrCompleteRegistry","onSSRComplete","isServer2","memo","memoKeys","instanceKey","instanceScopes","isClassProp","getRef","nodeRefs","subset","foundValue","currentValue","parseSchema","memoKey","library2","provider","createElements","alternate","parseConditionAttr","_default","parseAttrs","unparsedAttrs","bindExp","explicitAttrs","boundAttrs","bound","getValue2","isStr","parseNode","childCondition","iterationData","produceChildren","slotData2","currentKey","allSlots","slotName","slotFn","createElement","createNodes","repeatedNode","getValues","valueName","keyName","_v","instanceScope","previousIterationData","scopedData","schema2","els","element2","providers","compiledFns","createInstance","providerCallback","toMemoKey","compiledProviders","compiledProvider","useScope","scopedValue","slotData","data2","prevKey","createRenderFn","instanceCreator","instanceKey2","hasSlot","FormKitSchema","FormKit_default","newSchema","oldSchema","oldKey","cleanUp","FormKitSchema_default","isServer3","parentSymbol","componentSymbol","FormKit","useInput","generateSchema","schemaDefinition","definitionLibrary","formkitComponent","didMount","rootSymbol","createPlugin","optionsSymbol","configSymbol","rootConfig","pseudoProps","boolProps","classesToNodeProps","onlyListeners","__root","__cmpCallback","isVModeled","createInitialProps","initialProps2","propValues","propName","classesProps","initialProps","lateBoundProps","lateProps","newProp","pseudoPropNames","names","passThrough","attributeWatchers","possibleProps","watchAttributes","attrProps","error3","inputErrors","clonedValueBeforeVmodel","summary","summaryInner","messages2","message2","summaryHeader","messageLink","icons_single_exports","Add_default","Amex_default","Android_default","Apple_default","ArrowDown_default","ArrowLeft_default","ArrowRight_default","ArrowUp_default","AvatarMan_default","AvatarWoman_default","Bitcoin_default","Bnb_default","Bookmark_default","Button_default","Cardano_default","CaretDown_default","CaretLeft_default","CaretRight_default","CaretUp_default","Check_default","Checkbox_default","Circle_default","Close_default","Color_default","Compress_default","Date_default","Datetime_default","Discover_default","Dogecoin_default","Dollar_default","Down_default","Download_default","DownloadCloud_default","DragHandle_default","Email_default","Ethereum_default","Euro_default","Expand_default","Export_default","Eye_default","EyeClosed_default","Facebook_default","FastForward_default","File_default","FileAudio_default","FileDoc_default","FileImage_default","FilePdf_default","FileVideo_default","Flag_default","Folder_default","Franc_default","Github_default","Google_default","Group_default","Happy_default","Heart_default","Help_default","Hidden_default","Info_default","Instagram_default","Krona_default","Left_default","Link_default","LinkExternal_default","Linkedin_default","Lira_default","List_default","Mastercard_default","Medium_default","Megaphone_default","Minimize_default","Month_default","MultiCurrency_default","Number_default","Open_default","Password_default","Pause_default","Paypal_default","People_default","Peso_default","Pinterest_default","Play_default","PlayCircle_default","Pound_default","Radio_default","Range_default","Reddit_default","Refresh_default","Reorder_default","Repeater_default","Reply_default","Rewind_default","Right_default","Ruble_default","Rupee_default","Sad_default","Search_default","Select_default","Settings_default","Share_default","Shekel_default","Skype_default","Snapchat_default","Solana_default","Spinner_default","Star_default","Start_default","StepBack_default","StepForward_default","Stop_default","Stripe_default","Submit_default","Tag_default","Telephone_default","Tether_default","Text_default","Textarea_default","Tiktok_default","Time_default","Tools_default","Trash_default","Twitter_default","Up_default","Upload_default","UploadCloud_default","URL_default","Usdc_default","Vimeo_default","Visa_default","VolumeDown_default","VolumeUp_default","Warning_default","Week_default","Whatsapp_default","Won_default","Wordpress_default","Yen_default","Youtube_default","Yuan_default","Zip_default","application_exports","brand_exports","crypto_exports","currency_exports","directional_exports","file_exports","input_exports","payment_exports","genesisIcons","genesisIcons_default","formkitTailwindTheme","Edited","Filter by title, tag, or description","Filter by title or description","Preview","Files","No ","Create a new "," to get started.","noun"," match your search query","Project","Projects","Favorites","Examples","Something went wrong. Please try again.","Help","Privacy Policy","Legal","Settings","Dashboard","Profile","What's New","Documentation","Create a copy of this project","Sign in to copy this project","Grid view","List view","Sort options","Dark Mode","Read only.","Versions are not editable.","Clone this project to edit.","+ Add a tag","Add to Collection","Remove from Collection","Creating","Delete","Download","Duplicate","Edit","Clone Project","Clone","Cloning...","Get Started","Hide Files","Hide Preview","New File","New Folder","New Project","Report Abuse","Rename","Run","Save","Share","Show Files","Show Preview","Sign In","Sign Out","Sign Up","Support","Upload File","Upload Folder","Versions","View Code","View Site","View Versions","About PyScript.com","At PyCon US 2022, Anaconda CEO Peter Wang announced the launch of ","PyScript and PyScript.com come from ","Visit ","Collections","It looks like this user doesn't have any Projects yet.","It looks like this user doesn't have any Collections yet.","My Projects","Add some Favorites by clicking the star icon on Projects to get started","Create","Cancel","Edit Projects","Add Projects","Private Collection","New Collection","Edit Collection","Edit Projects in “","Filter projects by name","It looks like there are no Projects in this Collection.","Filter Collections by name","Add to a new Collection","You have no Projects to add to this Collection.","Details","Stats","API Proxies","Permissions","Channels","Allowed API Proxies","Select the API Proxies to allow in this project.","Changes saved","Allowed Channels","Select the Channels to allow in this project.","Actions","Create Version","Created","Default","Cannot delete latest.","Cannot delete this version as it is the default for the project.","Cannot delete this version as it is currently being viewed.","Last Edited","Published","Designates the default version users will see when visiting the project's site.","For example, if a user were to visit","the user will see the version set as the default.","Version","Account Settings","Create Secret","Save Changes","Editor Settings","Font Size","Change the editor font size in pixels.","Theme","inBrowser","makeSymbol","shareable","generateFormatCacheKey","friendlyJSONstringify","json","isNumber","isRegExp","isEmptyObject","assign","escapeHtml","rawText","proto","join","separator","incrementer","msg","isNotObjectOrIsArray","deepCopy","src","des","RE_ARGS","identifier","CompileErrorCodes","errorMessages","createCompileError","loc","domain","initFeatureFlags","pathStateMachine","literalValueRE","isLiteral","stripQuotes","getPathCharType","ch","formatSubPath","parse","subPathDepth","newChar","typeMap","maybeUnescapeQuote","nextChar","resolveWithKeyValue","resolveValue","hit","DEFAULT_MODIFIER","DEFAULT_MESSAGE","DEFAULT_MESSAGE_DATA_TYPE","DEFAULT_NORMALIZE","DEFAULT_INTERPOLATE","pluralDefault","choice","choicesLength","getPluralIndex","normalizeNamed","pluralIndex","createMessageContext","pluralRule","orgPluralRule","plural","_list","_named","named","_modifier","normalize","interpolate","arg1","arg2","modifier","devtools","setDevToolsHook","initI18nDevTools","translateDevTools","createDevToolsHook","payloads","CoreWarnCodes","inc","CoreErrorCodes","createCoreError","getLocale","resolveLocale","_resolveLocale","fallbackWithSimple","fallbackWithLocaleChain","startLocale","DEFAULT_LOCALE","chain","appendBlockToChain","blocks","follow","appendLocaleToChain","appendItemToChain","VERSION","NOT_REOSLVED","MISSING_RESOLVE_VALUE","getDefaultLinkedModifiers","_compiler","_resolver","registerMessageResolver","resolver","_fallbacker","registerLocaleFallbacker","fallbacker","_additionalMeta","setAdditionalMeta","getAdditionalMeta","_fallbackContext","setFallbackContext","getFallbackContext","_cid","createCoreContext","onWarn","_locale","fallbackLocale","datetimeFormats","numberFormats","pluralRules","missing","missingWarn","fallbackWarn","fallbackFormat","unresolving","postTranslation","processor","warnHtmlMessage","escapeParameter","messageCompiler","messageResolver","localeFallbacker","fallbackContext","internalOptions","__datetimeFormatters","__numberFormatters","__meta","handleMissing","updateFallbackLocale","isMessageAST","NOOP_MESSAGE_FUNCTION","isMessageFunction","translate","parseTranslateArgs","resolvedMessage","defaultMsgOrKey","enableDefaultMsg","escapeParams","formatScope","targetLocale","resolveMessageFormat","cacheBaseKey","occurred","compileMessageFormat","ctxOptions","getMessageContextOptions","msgContext","messaged","evaluateMessage","missingRet","getCompileContext","msgCtx","arg3","datetime","overrides","parseDateTimeArgs","part","datetimeFormat","DATETIME_FORMAT_OPTIONS_KEYS","arg4","clearDateTimeFormat","parseNumberArgs","numberFormat","NUMBER_FORMAT_OPTIONS_KEYS","clearNumberFormat","code$1","inc$1","I18nErrorCodes","createI18nError","TranslateVNodeSymbol","DatetimePartsSymbol","NumberPartsSymbol","SetPluralRulesSymbol","InejctWithOptionSymbol","DisposeSymbol","handleFlatJson","subKeys","lastIndex","currentObj","hasStringValue","getLocaleMessages","__i18n","flatJson","custom","resource","getComponentOptions","adjustI18nResources","gl","componentOptions","createTextNode","DEVTOOLS_META","NOOP_RETURN_ARRAY","NOOP_RETURN_FALSE","composerID","defineCoreMissingHandler","getMetaInfo","createComposer","VueI18nLegacy","__injectWithOption","_isGlobal","translateExistCompatible","_inheritLocale","_fallbackLocale","_messages","_datetimeFormats","_numberFormats","_missingWarn","_fallbackWarn","_fallbackRoot","_fallbackFormat","_missing","_runtimeMissing","_postTranslation","_warnHtmlMessage","_escapeParameter","_modifiers","_pluralRules","trackReactivityValues","getPostTranslationHandler","setPostTranslationHandler","getMissingHandler","setMissingHandler","wrapWithDeps","argumentParser","warnType","fallbackSuccess","fallbackFail","successCondition","rt","translateVNode","numberParts","datetimeParts","setPluralRules","getLocaleMessage","resolveMessages","targetLocaleMessages","messageValue","tm","setLocaleMessage","_message","mergeLocaleMessage","getDateTimeFormat","setDateTimeFormat","mergeDateTimeFormat","getNumberFormat","setNumberFormat","mergeNumberFormat","composer","baseFormatProps","getInterpolateArg","getFragmentableTag","TranslationImpl","useI18n","assignedAttrs","Translation","renderFormatter","slotKeys","partFormatter","parts","NumberFormatImpl","NumberFormat","DatetimeFormatImpl","DatetimeFormat","getComposer$2","i18nInternal","vueI18n","vTDirective","_process","parsedValue","parseValue","makeParams","textContent","apply","pluginOptions","useI18nComponentName","I18nInjectionKey","createI18n","__globalInjection","__allowComposition","__instances","globalScope","__global","createGlobal","__getInstance","__setInstance","__deleteInstance","globalReleaseHandler","injectGlobalFields","unmountApp","getI18nInstance","getGlobalComposer","getScope","getComposer","composerOptions","setupLifeCycle","legacyMode","useComponent","getParentComponentInstance","_composer","dispose","globalExportProps","globalExportMethods","desc","__vite_glob_0_0","yaml","activePinia","setActivePinia","pinia","piniaSymbol","MutationType","createPinia","_p","toBeInstalled","addSubscription","subscriptions","removeSubscription","triggerSubscriptions","fallbackRunWithContext","mergeReactiveObjects","patchToApply","subPatch","targetValue","skipHydrateSymbol","shouldHydrate","isComputed","createOptionsStore","hot","getters","localState","computedGetters","createSetupStore","$id","isOptionsStore","optionsForPlugin","$subscribeOptions","isListening","isSyncListening","actionSubscriptions","debuggerEvents","activeListener","$patch","partialStateOrMutator","subscriptionMutation","myListenerId","newState","$state","$dispose","wrapAction","afterCallbackList","onErrorCallbackList","partialStore","stopWatcher","setupStore","actionValue","extender","defineStore","idOrOptions","setupOptions","isSetupStore","useStore","hasContext","sides","alignments","placements","side","oppositeSideMap","oppositeAlignmentMap","clamp","param","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","getSideList","isStart","lr","rl","tb","bt","getOppositeAxisPlacements","flipAlignment","expandPaddingObject","padding","getPaddingObject","rectToClientRect","rect","computeCoordsFromPlacement","reference","floating","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","computePosition","strategy","platform","validMiddleware","statefulPlacement","middlewareData","resetCount","nextX","nextY","detectOverflow","_await$platform$isEle","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","offset","shouldAddOffset","alignmentOffset","getPlacementList","autoAlignment","allowedPlacements","autoPlacement","_middlewareData$autoP","_middlewareData$autoP2","_placementsThatFitOnE","crossAxis","detectOverflowOptions","placements$1","overflow","currentPlacement","alignmentSides","currentOverflows","allOverflows","nextPlacement","placementsSortedByMostSpace","resetPlacement","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","isBasePlacement","fallbackPlacements","overflows","overflowsData","_middlewareData$flip2","_overflowsData$filter","_overflowsData$map$so","convertValueToCoords","mainAxisMulti","crossAxisMulti","mainAxis","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","minSide","maxSide","limitedCoords","heightSide","widthSide","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","maximumClippingWidth","maximumClippingHeight","xMin","xMax","yMin","yMax","nextDimensions","f","tt","et","ot","it","st","nt","pt","at","dt","lt","ht","ut","ft","ct","mt","gt","wt","$t","vt","yt","Tt","Pt","St","Ct","Gt","FloatingVue","isESModule","applyToParams","newParams","HASH_RE","AMPERSAND_RE","SLASH_RE","EQUAL_RE","IM_RE","PLUS_RE","ENC_BRACKET_OPEN_RE","ENC_BRACKET_CLOSE_RE","ENC_CARET_RE","ENC_BACKTICK_RE","ENC_CURLY_OPEN_RE","ENC_PIPE_RE","ENC_CURLY_CLOSE_RE","ENC_SPACE_RE","commonEncode","encodeHash","encodeQueryValue","encodeQueryKey","encodePath","encodeParam","decode","TRAILING_SLASH_RE","removeTrailingSlash","parseURL","parseQuery","location","currentLocation","searchString","hash","hashPos","searchPos","resolveRelativePath","stringifyURL","stringifyQuery","stripBase","pathname","isSameRouteLocation","aLastIndex","bLastIndex","isSameRouteRecord","isSameRouteLocationParams","isSameRouteLocationParamsValue","isEquivalentArray","fromSegments","toSegments","lastToSegment","position","toPosition","NavigationType","NavigationDirection","START","normalizeBase","baseEl","BEFORE_HASH_RE","createHref","getElementPosition","docRect","elRect","computeScrollPosition","scrollToPosition","scrollToOptions","positionEl","isIdSelector","getScrollKey","scrollPositions","saveScrollPosition","scrollPosition","getSavedScrollPosition","scroll","createBaseLocation","createCurrentLocation","slicePos","pathFromHash","useHistoryListeners","historyState","replace","teardowns","pauseState","popStateHandler","fromState","pauseListeners","listen","teardown","beforeUnloadListener","history","buildState","back","replaced","computeScroll","useHistoryStateNavigation","changeLocation","hashIndex","push","currentState","createWebHistory","historyNavigation","historyListeners","triggerListeners","routerHistory","createMemoryHistory","setLocation","info","shouldTrigger","isRouteLocation","route","isRouteName","START_LOCATION_NORMALIZED","NavigationFailureSymbol","NavigationFailureType","createRouterError","isNavigationFailure","BASE_PARAM_PATTERN","BASE_PATH_PARSER_OPTIONS","REGEX_CHARS_RE","tokensToParser","score","segmentScores","tokenIndex","subSegmentScore","repeatable","optional","regexp","subPattern","stringify","avoidDuplicatedSlash","compareScoreArray","comparePathParserScore","aScore","bScore","isLastScoreNegative","ROOT_TOKEN","VALID_PARAM_RE","tokenizePath","crash","previousState","finalizeSegment","customRe","consumeBuffer","addCharToBuffer","createRouteRecordMatcher","record","parser","matcher","createRouterMatcher","routes","globalOptions","matchers","matcherMap","getRecordMatcher","addRoute","originalRecord","isRootAdd","mainNormalizedRecord","normalizeRouteRecord","normalizedRecords","aliases","alias","originalMatcher","normalizedRecord","parentPath","connectingSlash","isAliasRecord","removeRoute","insertMatcher","matcherRef","getRoutes","isRecordChildOf","paramsFromLocation","matched","parentMatcher","mergeMetaFields","normalizeRecordProps","propsObject","partialOptions","searchParams","searchParam","eqPos","normalizeQuery","normalizedQuery","matchedRouteKey","viewDepthKey","routerKey","routeLocationKey","routerViewLocationKey","useCallbacks","registerGuard","removeFromList","onBeforeRouteLeave","leaveGuard","activeRecord","onBeforeRouteUpdate","updateGuard","guardToPromiseFn","runWithContext","enterCallbackArray","guardReturn","guardCall","extractComponentsGuards","guardType","guards","rawComponent","isRouteComponent","componentPromise","resolvedComponent","useLink","router","currentRoute","activeRecordIndex","routeMatched","currentMatched","parentRecordPath","getOriginalPath","includesParams","isExactActive","navigate","guardEvent","RouterLinkImpl","elClass","getLinkClass","RouterLink","innerValue","outerValue","propClass","globalClass","defaultClass","RouterViewImpl","injectedRoute","routeToDisplay","injectedDepth","initialDepth","matchedRoute","matchedRouteRef","viewRef","oldInstance","oldName","currentName","ViewComponent","routePropsOption","routeProps","slotContent","RouterView","createRouter","parseQuery$1","stringifyQuery$1","beforeGuards","beforeResolveGuards","afterGuards","pendingLocation","normalizeParams","paramValue","encodeParams","decodeParams","parentOrRoute","recordMatcher","routeMatcher","hasRoute","rawLocation","locationNormalized","href","matcherLocation","targetParams","fullPath","locationAsObject","checkCanceledNavigation","pushWithRedirect","handleRedirectRecord","lastMatched","redirect","newTargetLocation","redirectedFrom","targetLocation","force","shouldRedirect","toLocation","failure","handleScroll","markAsReady","triggerError","finalizeNavigation","triggerAfterEach","checkCanceledNavigationAndReject","installedApps","leavingRecords","updatingRecords","enteringRecords","extractChangingRecords","canceledNavigationCheck","runGuardQueue","beforeEnter","isPush","isFirstNavigation","removeHistoryListener","setupListeners","_from","readyHandlers","errorListeners","ready","isReady","scrollBehavior","reactiveRoute","promise","recordFrom","recordTo","useRouter","useRoute","flatHooks","configHooks","parentName","subHook","defaultTask","function_","_createTask","createTask","serialTaskCaller","task","hookFunction","parallelTaskCaller","callEachWith","callbacks","arg0","Hookable","originalName","_unreg","_function","arguments_","deprecated","_hooks","deprecatedHooks","removeFns","unreg","caller","asArray$1","TagsWithInnerContent","HasElementTags","ValidHeadTags","UniqueTags","TagConfigKeys","IsBrowser","hashCode","hashTag","tagDedupeKey","tagName","resolveTitleTemplate","title","normaliseTag","normaliseProps","normaliseClassProp","virtual","isDataKey","TagEntityBits","normaliseEntryTags","tagPromises","TAG_WEIGHTS","TAG_ALIASES","tagWeight","weight","priority","SortModifiers","NetworkEvents","sepSub","processTemplateParams","sep","sub","decoded","elementToTag","$el","renderDOMHead","head","dom","beforeRenderCtx","tags","trackCtx","isAttrTag","ck","pending","frag","shouldRender","debouncedRenderDOMHead","fn2","DomPlugin","initialPayload","head2","UsesMergeStrategy","DedupePlugin","deduping","dedupeKey","dupedTag","newTags","dupes","PayloadPlugin","ValidEventTags","stripEventHandlers","eventHandlers","EventHandlersPlugin","$eventListenerTarget","sdeKey","eventDedupeKey","observer","DupeableTags","HashKeyedPlugin","SortPlugin","tagPositionForKey","tag2","SupportedAttrs","TemplateParamsPlugin","TitleTemplatePlugin","titleTemplateIdx","titleIdx","newTitle","XSSPlugin","activeHead","createHead","createHeadCore","filterMode","ssr","entryCount","p2","entryOptions","entry","input2","resolveCtx","tagCtx","getActiveHead","Vue3","resolveUnref","resolveUnrefHeadInput","lastKey","VueReactivityPlugin","headSymbol","vueInstall","createHead$1","injectHead","useHead","clientUseHead","resolvedInput","deserializeState","documentReady","_passThrough","ClientOnly","ViteSSG","App","routerOptions","transformState","registerComponents","createApp$1","client","routePath","appRenderCallbacks","entryRoutePath","isFirstRoute","layouts","__vitePreload","setupLayouts","deepSetupLayout","top","_f","TransformationType","MetadataStorage","metadata","propertyName","transformationType","excludeMap","exclude","exposeMap","metadatas","metadataFromTargetMap","metadataFromTarget","metadataFromAncestors","ancestor","ancestorMetadataMap","metadataFromAncestor","ancestorResult","metadataFromAncestorsTarget","ancestors","baseClass","defaultMetadataStorage","getGlobal","__spreadArray","pack","ar","instantiateArrayType","arrayType","array","TransformOperationExecutor","level","_this","newValue_1","subSource","realTargetType","subType","newType","value_1","_loop_1","valueKey","newValueKey","this_1","exposeMetadata","isSubValueMap","metadata_1","reflectedType","arrayType_1","transformKey","finalValue","keys_1","exposedProperties","excludedProperties","excludedProperties_1","since","until","decision","groups","optionGroup","defaultOptions","__assign","ClassTransformer","executor","plainObject","clsObject","fromObject","jsonObject","Expose","Type","typeFunction","classTransformer","plainToInstance","Reflect","global","sloppyModeThis","exporter","makeExporter","functionThis","indirectEvalThis","supportsSymbol","toPrimitiveSymbol","iteratorSymbol","supportsCreate","supportsProto","downLevel","HashMap","MakeDictionary","functionPrototype","_Map","CreateMapPolyfill","_Set","CreateSetPolyfill","_WeakMap","CreateWeakMapPolyfill","registrySymbol","metadataRegistry","GetOrCreateMetadataRegistry","metadataProvider","CreateMetadataProvider","decorate","decorators","attributes","IsUndefined","IsArray","IsConstructor","DecorateConstructor","IsObject","IsNull","ToPropertyKey","DecorateProperty","metadataKey","metadataValue","IsPropertyKey","OrdinaryDefineOwnMetadata","defineMetadata","hasMetadata","OrdinaryHasMetadata","hasOwnMetadata","OrdinaryHasOwnMetadata","getMetadata","OrdinaryGetMetadata","getOwnMetadata","OrdinaryGetOwnMetadata","getMetadataKeys","OrdinaryMetadataKeys","getOwnMetadataKeys","OrdinaryOwnMetadataKeys","deleteMetadata","GetMetadataProvider","decorated","MetadataKey","OrdinaryGetPrototypeOf","ToBoolean","MetadataValue","parentKeys","ownKeys_1","hasKey","parentKeys_1","IsSymbol","ToPrimitive","PreferredType","exoticToPrim","GetMethod","OrdinaryToPrimitive","toString_1","IsCallable","valueOf","toString_2","argument","ToString","SameValueZero","func","GetIterator","IteratorValue","iterResult","IteratorStep","IteratorClose","prototype","prototypeProto","constructor","CreateMetadataRegistry","CreateFallbackProvider","rest","targetProviderMap","registerProvider","getProvider","setProvider","getProviderNoCache","providerMap","hasProvider","existingProvider","targetMetadata","OrdinaryDeleteMetadata","GetOrCreateMetadataMap","createdTargetMetadata","metadataMap","keysObj","reflect","metadataOwner","metadataPropertySet","registeredProvider","cacheSentinel","arraySentinel","MapIterator","Map","getKey","getEntry","Set","UUID_SIZE","rootKey","CreateUniqueKey","WeakMap","table","GetOrCreateWeakMapTable","CreateUUID","create","FillRandomBytes","GenRandomBytes","byte","startsWithDot","isValidURL","toURL","filename","lastDotIndex","pathSegments","__publicField","__decorateClass","FileMetadata","setPsdcRedirect","currentPath","objectToQueryParams","toSnakeCase","letter","toSnakeCaseKeys","API_HOST","API_ACCOUNTS","API_ASSIST","API_AUTH","API_PAYMENTS","API_SYSTEM","responseHandler","resp","whoami","endpoint","deleteProject","projectId","response","getProject","getProjectBySlug","usernameOrUserId","projectSlug","getProjectStats","listProjects","abortSignal","queryParams","listVersions","createProject","body","getVersion","updateVersion","createVersion","deleteVersion","versionIdOrTag","forkProject","getFileContent","filePath","uploadFile","overwrite","updateFile","createFolder","folderPath","deleteFolder","deleteFile","listFiles","renameFileOrFolder","oldPath","newPath","updateProject","uploadProjectIcon","checkout","product_names","checkoutFoundersPlan","purchases","listUserBadges","user","getProfile","updateProfile","uploadProfilePicture","userStats","deleteAccount","logout","assistantPrompt","shareProject","via","createApiKey","expiry","listApiKeys","deleteApiKey","createSecret","listSecrets","deleteSecret","getSecret","updateSecret","createApiProxy","listApiProxies","deleteApiProxy","getApiProxy","updateApiProxy","listFavorites","addFavorite","removeFavorite","listCollections","createCollection","description","privacy","updateCollection","collectionId","deleteCollection","listProjectsInCollection","addProjectsToCollection","projectIds","removeProjectsFromCollection","exportProject","listChannels","createChannel","deleteChannel","getChannel","updateChannel","getSystemStatus","pyscriptApi","useUserStore","project","MEGABYTE","MAX_FILE_SIZE","MAX_FILE_SIZE_TEXT","FILE_IGNORE_LIST","MARKDOWN_WRAPPER_CLASS","STORAGE_KEY_PROJECTS_SORT","STORAGE_KEY_PROJECTS_VIEW","STORAGE_KEY_EDITOR_PREFERENCES","STORAGE_KEY_ITEMS_PER_PAGE","STORAGE_KEY_WHATS_NEW_NOTIFICATION_BADGE","STORAGE_KEY_BANNER","sortOptions","useSortPreference","defaultSort","savedSort","sort","useCollectionsStore","userStore","collection","projectIdsToAdd","projectIdsToRemove","isCreateCollectionFlow","s$4","__props","__emit","onInput","getTag","INFINITY","baseToString","isObjectLike","isDefined","isBlank","INCORRECT_INDEX_TYPE","LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY","PATTERN_LENGTH_TOO_LARGE","MISSING_KEY_PROPERTY","INVALID_KEY_WEIGHT_VALUE","KeyStore","totalWeight","createKey","keyId","getFn","createKeyPath","createKeyId","deepGet","MatchOptions","BasicOptions","FuzzyOptions","AdvancedOptions","Config","SPACE","norm","mantissa","numTokens","FuseIndex","fieldNormWeight","docs","records","docIndex","keyIndex","subRecords","nestedArrIndex","subRecord","createIndex","myIndex","parseIndex","computeScore$1","expectedLocation","distance","ignoreLocation","accuracy","proximity","convertMaskToIndices","matchmask","minMatchCharLength","indices","MAX_BITS","patternAlphabet","threshold","findAllMatches","includeMatches","patternLen","textLen","currentThreshold","bestLocation","computeMatches","matchMask","lastBitArr","finalScore","binMax","mask","binMin","binMid","finish","bitArr","charMatch","createPatternAlphabet","BitapSearch","isCaseSensitive","addChunk","startIndex","remainder","allIndices","totalScore","hasMatches","alphabet","isMatch","BaseMatch","getMatch","ExactMatch","InverseExactMatch","PrefixExactMatch","InversePrefixExactMatch","SuffixExactMatch","InverseSuffixExactMatch","FuzzyMatch","IncludeMatch","searchers","searchersLen","SPACE_RE","OR_TOKEN","results","queryItem","MultiMatchSet","ExtendedSearch","numMatches","qLen","pLen","registeredSearchers","createSearcher","searcherClass","LogicalOperator","KeyType","isExpression","isPath","isLeaf","convertToExplicit","isQueryPath","computeScore","ignoreFieldNorm","transformMatches","transformScore","includeScore","transformers","transformer","Fuse","predicate","limit","shouldSort","sortFn","resultMap","expResults","fuzzySearch","searchQuery","objectsToSearch","collectionsStore","collectionsList","shouldOpenCreateCollectionModal","closeModal","onSearch","updateProjectsInCollection","onCreateNewCollection","formState","isEditingCollection","onCancel","submitHandler","hasDarkPreference","useBadgesStore","sortByDate","useFavoritesStore","favorite","unsortedFavorites","userId","useSystemStore","useWhatsNewNotification","hasViewedWhatsNew","markWhatsNewAsViewed","conditionalHash","prodRoutes","AboutView","PurchaseFoundersPackageView","DocsView","PrivateProjects","ProjectsReadme","savedPosition","__vite_glob_0_1","__vite_glob_0_2","__vite_glob_0_3","__vite_glob_0_4","__vite_glob_0_5","__vite_glob_0_6","__vite_glob_0_7","systemStore","badgesStore","favoritesStore","_hoisted_1","_hoisted_2","_createElementVNode","_hoisted_3","_hoisted_4","_cache","copyToClipboard","show404Page","checkBreakpoint","_extends","txt"],"sources":["../../../ui/node_modules/@vue/shared/dist/shared.esm-bundler.js","../../../ui/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","../../../ui/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","../../../ui/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","../../../ui/node_modules/vue-demi/lib/index.mjs","../../../ui/node_modules/@vueuse/shared/index.mjs","../../../ui/node_modules/@vueuse/core/index.mjs","../../../ui/node_modules/@vueuse/integrations/node_modules/@vueuse/shared/index.mjs","../../../ui/node_modules/@vueuse/integrations/node_modules/@vueuse/core/index.mjs","../../../ui/node_modules/tabbable/dist/index.esm.js","../../../ui/node_modules/focus-trap/dist/focus-trap.esm.js","../../../ui/node_modules/@vueuse/integrations/useFocusTrap.mjs","../../../ui/node_modules/vue-final-modal/dist/index.es.mjs","../../../ui/src/modules/final-modal.ts","../../../ui/node_modules/@formkit/utils/dist/index.mjs","../../../ui/node_modules/@formkit/core/dist/index.mjs","../../../ui/node_modules/@formkit/observer/dist/index.mjs","../../../ui/node_modules/@formkit/rules/dist/index.mjs","../../../ui/node_modules/@formkit/validation/dist/index.mjs","../../../ui/node_modules/@formkit/i18n/dist/index.mjs","../../../ui/node_modules/@formkit/inputs/dist/index.mjs","../../../ui/node_modules/@formkit/themes/dist/index.mjs","../../../ui/node_modules/@formkit/dev/dist/index.mjs","../../../ui/node_modules/@formkit/vue/dist/index.mjs","../../../ui/node_modules/@formkit/icons/dist/index.mjs","../../../ui/formkit-tailwind-theme.js","../../../ui/formkit.config.ts","../../../ui/src/modules/formkit.ts","../../../ui/src/modules/heap.ts","../../../ui/locales/en.yml","../../../ui/node_modules/@intlify/shared/dist/shared.mjs","../../../ui/node_modules/@intlify/message-compiler/dist/message-compiler.esm-browser.js","../../../ui/node_modules/@intlify/core-base/dist/core-base.mjs","../../../ui/node_modules/vue-i18n/dist/vue-i18n.runtime.mjs","../../../ui/src/modules/i18n.ts","../../../ui/node_modules/pinia/dist/pinia.mjs","../../../ui/src/modules/pinia.ts","../../../ui/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../../ui/node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../../ui/node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.min.mjs","../../../ui/node_modules/floating-vue/dist/floating-vue.mjs","../../../ui/src/modules/tooltip.ts","../../../ui/node_modules/vue-router/dist/vue-router.mjs","../../../ui/node_modules/hookable/dist/index.mjs","../../../ui/node_modules/@unhead/shared/dist/index.mjs","../../../ui/node_modules/@unhead/dom/dist/index.mjs","../../../ui/node_modules/unhead/dist/index.mjs","../../../ui/node_modules/@unhead/vue/dist/shared/vue.cf295fb1.mjs","../../../ui/node_modules/@unhead/vue/dist/shared/vue.f36acd1f.mjs","../../../ui/node_modules/vite-ssg/dist/shared/vite-ssg.a009fbf1.mjs","../../../ui/node_modules/vite-ssg/dist/shared/vite-ssg.5912142e.mjs","../../../ui/node_modules/vite-ssg/dist/index.mjs","../../../../../../../../../../@vite-plugin-vue-layouts/generated-layouts","../../../ui/node_modules/class-transformer/esm5/enums/transformation-type.enum.js","../../../ui/node_modules/class-transformer/esm5/MetadataStorage.js","../../../ui/node_modules/class-transformer/esm5/storage.js","../../../ui/node_modules/class-transformer/esm5/utils/get-global.util.js","../../../ui/node_modules/class-transformer/esm5/utils/is-promise.util.js","../../../ui/node_modules/class-transformer/esm5/TransformOperationExecutor.js","../../../ui/node_modules/class-transformer/esm5/constants/default-options.constant.js","../../../ui/node_modules/class-transformer/esm5/ClassTransformer.js","../../../ui/node_modules/class-transformer/esm5/decorators/expose.decorator.js","../../../ui/node_modules/class-transformer/esm5/decorators/type.decorator.js","../../../ui/node_modules/class-transformer/esm5/index.js","../../../ui/node_modules/reflect-metadata/Reflect.js","../../../ui/src/utilities/path.ts","../../../ui/src/utilities/pyscript-api-models.ts","../../../ui/src/utilities/psdc-redirect.ts","../../../ui/src/utilities/object-to-query-params.ts","../../../ui/src/utilities/snake-case.ts","../../../ui/src/utilities/pyscript-api.ts","../../../ui/src/stores/user-store.ts","../../../ui/src/utilities/constants.ts","../../../ui/src/composables/sort-preference.ts","../../../ui/src/stores/collections-store.ts","../../../ui/node_modules/@headlessui/vue/dist/hooks/use-id.js","../../../ui/node_modules/@headlessui/vue/dist/utils/dom.js","../../../ui/node_modules/@headlessui/vue/dist/utils/match.js","../../../ui/node_modules/@headlessui/vue/dist/utils/env.js","../../../ui/node_modules/@headlessui/vue/dist/utils/owner.js","../../../ui/node_modules/@headlessui/vue/dist/utils/focus-management.js","../../../ui/node_modules/@headlessui/vue/dist/utils/platform.js","../../../ui/node_modules/@headlessui/vue/dist/hooks/use-document-event.js","../../../ui/node_modules/@headlessui/vue/dist/hooks/use-window-event.js","../../../ui/node_modules/@headlessui/vue/dist/hooks/use-outside-click.js","../../../ui/node_modules/@headlessui/vue/dist/utils/render.js","../../../ui/node_modules/@headlessui/vue/dist/internal/hidden.js","../../../ui/node_modules/@headlessui/vue/dist/internal/open-closed.js","../../../ui/node_modules/@headlessui/vue/dist/keyboard.js","../../../ui/node_modules/@headlessui/vue/dist/utils/document-ready.js","../../../ui/node_modules/@headlessui/vue/dist/utils/active-element-history.js","../../../ui/node_modules/@headlessui/vue/dist/utils/micro-task.js","../../../ui/node_modules/@headlessui/vue/dist/utils/disposables.js","../../../ui/node_modules/@headlessui/vue/dist/hooks/use-event-listener.js","../../../ui/node_modules/@headlessui/vue/dist/hooks/use-tab-direction.js","../../../ui/node_modules/@headlessui/vue/dist/components/focus-trap/focus-trap.js","../../../ui/node_modules/@headlessui/vue/dist/hooks/use-store.js","../../../ui/node_modules/@headlessui/vue/dist/utils/store.js","../../../ui/node_modules/@headlessui/vue/dist/hooks/document-overflow/adjust-scrollbar-padding.js","../../../ui/node_modules/@headlessui/vue/dist/hooks/document-overflow/handle-ios-locking.js","../../../ui/node_modules/@headlessui/vue/dist/hooks/document-overflow/prevent-scroll.js","../../../ui/node_modules/@headlessui/vue/dist/hooks/document-overflow/overflow-store.js","../../../ui/node_modules/@headlessui/vue/dist/hooks/document-overflow/use-document-overflow.js","../../../ui/node_modules/@headlessui/vue/dist/hooks/use-inert.js","../../../ui/node_modules/@headlessui/vue/dist/hooks/use-root-containers.js","../../../ui/node_modules/@headlessui/vue/dist/internal/portal-force-root.js","../../../ui/node_modules/@headlessui/vue/dist/internal/stack-context.js","../../../ui/node_modules/@headlessui/vue/dist/components/description/description.js","../../../ui/node_modules/@headlessui/vue/dist/components/portal/portal.js","../../../ui/node_modules/@headlessui/vue/dist/components/dialog/dialog.js","../../../ui/node_modules/@headlessui/vue/dist/utils/once.js","../../../ui/node_modules/@headlessui/vue/dist/components/transitions/utils/transition.js","../../../ui/node_modules/@headlessui/vue/dist/components/transitions/transition.js","../../../ui/src/components/SearchProjects.vue","../../../ui/node_modules/fuse.js/dist/fuse.mjs","../../../ui/src/utilities/fuzzy-search.ts","../../../ui/src/components/collections/AddProjectToCollectionModal.vue","../../../ui/src/components/collections/CollectionFormModal.vue","../../../ui/src/App.vue","../../../ui/src/stores/badges-store.ts","../../../ui/src/utilities/sort-items.ts","../../../ui/src/stores/favorites-store.ts","../../../ui/src/stores/system-store.ts","../../../ui/src/composables/whats-new-notification.ts","../../../ui/src/router.ts","../../../ui/src/main.ts","../../../ui/src/components/Spinner.vue","../../../ui/src/utilities/copy-to-clipboard.ts","../../../ui/src/views/AboutView.vue","../../../ui/src/views/PurchaseFoundersPackageView.vue","../../../ui/src/utilities/show-404-page.ts","../../../ui/src/utilities/breakpoint.ts","../../../ui/node_modules/@babel/runtime/helpers/esm/extends.js","../../../ui/src/utilities/codemirror/languages/txt.ts"],"sourcesContent":["/**\n* @vue/shared v3.4.21\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nfunction makeMap(str, expectsLowerCase) {\n  const set = new Set(str.split(\",\"));\n  return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val);\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n  const i = arr.indexOf(el);\n  if (i > -1) {\n    arr.splice(i, 1);\n  }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n  return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n  return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n  // the leading comma is intentional so empty string \"\" is also included\n  \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n  \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (str) => {\n    const hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n  return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n  (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction((str) => {\n  const s = str ? `on${capitalize(str)}` : ``;\n  return s;\n});\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n  for (let i = 0; i < fns.length; i++) {\n    fns[i](arg);\n  }\n};\nconst def = (obj, key, value) => {\n  Object.defineProperty(obj, key, {\n    configurable: true,\n    enumerable: false,\n    value\n  });\n};\nconst looseToNumber = (val) => {\n  const n = parseFloat(val);\n  return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n  const n = isString(val) ? Number(val) : NaN;\n  return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n  return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n  return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\n\nconst PatchFlags = {\n  \"TEXT\": 1,\n  \"1\": \"TEXT\",\n  \"CLASS\": 2,\n  \"2\": \"CLASS\",\n  \"STYLE\": 4,\n  \"4\": \"STYLE\",\n  \"PROPS\": 8,\n  \"8\": \"PROPS\",\n  \"FULL_PROPS\": 16,\n  \"16\": \"FULL_PROPS\",\n  \"NEED_HYDRATION\": 32,\n  \"32\": \"NEED_HYDRATION\",\n  \"STABLE_FRAGMENT\": 64,\n  \"64\": \"STABLE_FRAGMENT\",\n  \"KEYED_FRAGMENT\": 128,\n  \"128\": \"KEYED_FRAGMENT\",\n  \"UNKEYED_FRAGMENT\": 256,\n  \"256\": \"UNKEYED_FRAGMENT\",\n  \"NEED_PATCH\": 512,\n  \"512\": \"NEED_PATCH\",\n  \"DYNAMIC_SLOTS\": 1024,\n  \"1024\": \"DYNAMIC_SLOTS\",\n  \"DEV_ROOT_FRAGMENT\": 2048,\n  \"2048\": \"DEV_ROOT_FRAGMENT\",\n  \"HOISTED\": -1,\n  \"-1\": \"HOISTED\",\n  \"BAIL\": -2,\n  \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n  [1]: `TEXT`,\n  [2]: `CLASS`,\n  [4]: `STYLE`,\n  [8]: `PROPS`,\n  [16]: `FULL_PROPS`,\n  [32]: `NEED_HYDRATION`,\n  [64]: `STABLE_FRAGMENT`,\n  [128]: `KEYED_FRAGMENT`,\n  [256]: `UNKEYED_FRAGMENT`,\n  [512]: `NEED_PATCH`,\n  [1024]: `DYNAMIC_SLOTS`,\n  [2048]: `DEV_ROOT_FRAGMENT`,\n  [-1]: `HOISTED`,\n  [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n  \"ELEMENT\": 1,\n  \"1\": \"ELEMENT\",\n  \"FUNCTIONAL_COMPONENT\": 2,\n  \"2\": \"FUNCTIONAL_COMPONENT\",\n  \"STATEFUL_COMPONENT\": 4,\n  \"4\": \"STATEFUL_COMPONENT\",\n  \"TEXT_CHILDREN\": 8,\n  \"8\": \"TEXT_CHILDREN\",\n  \"ARRAY_CHILDREN\": 16,\n  \"16\": \"ARRAY_CHILDREN\",\n  \"SLOTS_CHILDREN\": 32,\n  \"32\": \"SLOTS_CHILDREN\",\n  \"TELEPORT\": 64,\n  \"64\": \"TELEPORT\",\n  \"SUSPENSE\": 128,\n  \"128\": \"SUSPENSE\",\n  \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n  \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n  \"COMPONENT_KEPT_ALIVE\": 512,\n  \"512\": \"COMPONENT_KEPT_ALIVE\",\n  \"COMPONENT\": 6,\n  \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n  \"STABLE\": 1,\n  \"1\": \"STABLE\",\n  \"DYNAMIC\": 2,\n  \"2\": \"DYNAMIC\",\n  \"FORWARDED\": 3,\n  \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n  [1]: \"STABLE\",\n  [2]: \"DYNAMIC\",\n  [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n  let lines = source.split(/(\\r?\\n)/);\n  const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n  lines = lines.filter((_, idx) => idx % 2 === 0);\n  let count = 0;\n  const res = [];\n  for (let i = 0; i < lines.length; i++) {\n    count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n    if (count >= start) {\n      for (let j = i - range; j <= i + range || end > count; j++) {\n        if (j < 0 || j >= lines.length)\n          continue;\n        const line = j + 1;\n        res.push(\n          `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}|  ${lines[j]}`\n        );\n        const lineLength = lines[j].length;\n        const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n        if (j === i) {\n          const pad = start - (count - (lineLength + newLineSeqLength));\n          const length = Math.max(\n            1,\n            end > count ? lineLength - pad : end - start\n          );\n          res.push(`   |  ` + \" \".repeat(pad) + \"^\".repeat(length));\n        } else if (j > i) {\n          if (end > count) {\n            const length = Math.max(Math.min(end - count, lineLength), 1);\n            res.push(`   |  ` + \"^\".repeat(length));\n          }\n          count += lineLength + newLineSeqLength;\n        }\n      }\n      break;\n    }\n  }\n  return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n  if (isArray(value)) {\n    const res = {};\n    for (let i = 0; i < value.length; i++) {\n      const item = value[i];\n      const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n      if (normalized) {\n        for (const key in normalized) {\n          res[key] = normalized[key];\n        }\n      }\n    }\n    return res;\n  } else if (isString(value) || isObject(value)) {\n    return value;\n  }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n  const ret = {};\n  cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n    if (item) {\n      const tmp = item.split(propertyDelimiterRE);\n      tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n    }\n  });\n  return ret;\n}\nfunction stringifyStyle(styles) {\n  let ret = \"\";\n  if (!styles || isString(styles)) {\n    return ret;\n  }\n  for (const key in styles) {\n    const value = styles[key];\n    const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n    if (isString(value) || typeof value === \"number\") {\n      ret += `${normalizedKey}:${value};`;\n    }\n  }\n  return ret;\n}\nfunction normalizeClass(value) {\n  let res = \"\";\n  if (isString(value)) {\n    res = value;\n  } else if (isArray(value)) {\n    for (let i = 0; i < value.length; i++) {\n      const normalized = normalizeClass(value[i]);\n      if (normalized) {\n        res += normalized + \" \";\n      }\n    }\n  } else if (isObject(value)) {\n    for (const name in value) {\n      if (value[name]) {\n        res += name + \" \";\n      }\n    }\n  }\n  return res.trim();\n}\nfunction normalizeProps(props) {\n  if (!props)\n    return null;\n  let { class: klass, style } = props;\n  if (klass && !isString(klass)) {\n    props.class = normalizeClass(klass);\n  }\n  if (style) {\n    props.style = normalizeStyle(style);\n  }\n  return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n  specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n  return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n  if (attrValidationCache.hasOwnProperty(name)) {\n    return attrValidationCache[name];\n  }\n  const isUnsafe = unsafeAttrCharRE.test(name);\n  if (isUnsafe) {\n    console.error(`unsafe attribute name: ${name}`);\n  }\n  return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n  acceptCharset: \"accept-charset\",\n  className: \"class\",\n  htmlFor: \"for\",\n  httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n  `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n  `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nfunction isRenderableAttrValue(value) {\n  if (value == null) {\n    return false;\n  }\n  const type = typeof value;\n  return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n  const str = \"\" + string;\n  const match = escapeRE.exec(str);\n  if (!match) {\n    return str;\n  }\n  let html = \"\";\n  let escaped;\n  let index;\n  let lastIndex = 0;\n  for (index = match.index; index < str.length; index++) {\n    switch (str.charCodeAt(index)) {\n      case 34:\n        escaped = \"&quot;\";\n        break;\n      case 38:\n        escaped = \"&amp;\";\n        break;\n      case 39:\n        escaped = \"&#39;\";\n        break;\n      case 60:\n        escaped = \"&lt;\";\n        break;\n      case 62:\n        escaped = \"&gt;\";\n        break;\n      default:\n        continue;\n    }\n    if (lastIndex !== index) {\n      html += str.slice(lastIndex, index);\n    }\n    lastIndex = index + 1;\n    html += escaped;\n  }\n  return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;\nfunction escapeHtmlComment(src) {\n  return src.replace(commentStripRE, \"\");\n}\n\nfunction looseCompareArrays(a, b) {\n  if (a.length !== b.length)\n    return false;\n  let equal = true;\n  for (let i = 0; equal && i < a.length; i++) {\n    equal = looseEqual(a[i], b[i]);\n  }\n  return equal;\n}\nfunction looseEqual(a, b) {\n  if (a === b)\n    return true;\n  let aValidType = isDate(a);\n  let bValidType = isDate(b);\n  if (aValidType || bValidType) {\n    return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n  }\n  aValidType = isSymbol(a);\n  bValidType = isSymbol(b);\n  if (aValidType || bValidType) {\n    return a === b;\n  }\n  aValidType = isArray(a);\n  bValidType = isArray(b);\n  if (aValidType || bValidType) {\n    return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n  }\n  aValidType = isObject(a);\n  bValidType = isObject(b);\n  if (aValidType || bValidType) {\n    if (!aValidType || !bValidType) {\n      return false;\n    }\n    const aKeysCount = Object.keys(a).length;\n    const bKeysCount = Object.keys(b).length;\n    if (aKeysCount !== bKeysCount) {\n      return false;\n    }\n    for (const key in a) {\n      const aHasKey = a.hasOwnProperty(key);\n      const bHasKey = b.hasOwnProperty(key);\n      if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n  }\n  return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n  return arr.findIndex((item) => looseEqual(item, val));\n}\n\nconst toDisplayString = (val) => {\n  return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n  if (val && val.__v_isRef) {\n    return replacer(_key, val.value);\n  } else if (isMap(val)) {\n    return {\n      [`Map(${val.size})`]: [...val.entries()].reduce(\n        (entries, [key, val2], i) => {\n          entries[stringifySymbol(key, i) + \" =>\"] = val2;\n          return entries;\n        },\n        {}\n      )\n    };\n  } else if (isSet(val)) {\n    return {\n      [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n    };\n  } else if (isSymbol(val)) {\n    return stringifySymbol(val);\n  } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n    return String(val);\n  }\n  return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n  var _a;\n  return isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v;\n};\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","/**\n* @vue/reactivity v3.4.21\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { NOOP, extend, isArray, isSymbol, isMap, isIntegerKey, hasOwn, hasChanged, isObject, makeMap, capitalize, toRawType, def, isFunction } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n  console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n  constructor(detached = false) {\n    this.detached = detached;\n    /**\n     * @internal\n     */\n    this._active = true;\n    /**\n     * @internal\n     */\n    this.effects = [];\n    /**\n     * @internal\n     */\n    this.cleanups = [];\n    this.parent = activeEffectScope;\n    if (!detached && activeEffectScope) {\n      this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n        this\n      ) - 1;\n    }\n  }\n  get active() {\n    return this._active;\n  }\n  run(fn) {\n    if (this._active) {\n      const currentEffectScope = activeEffectScope;\n      try {\n        activeEffectScope = this;\n        return fn();\n      } finally {\n        activeEffectScope = currentEffectScope;\n      }\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn(`cannot run an inactive effect scope.`);\n    }\n  }\n  /**\n   * This should only be called on non-detached scopes\n   * @internal\n   */\n  on() {\n    activeEffectScope = this;\n  }\n  /**\n   * This should only be called on non-detached scopes\n   * @internal\n   */\n  off() {\n    activeEffectScope = this.parent;\n  }\n  stop(fromParent) {\n    if (this._active) {\n      let i, l;\n      for (i = 0, l = this.effects.length; i < l; i++) {\n        this.effects[i].stop();\n      }\n      for (i = 0, l = this.cleanups.length; i < l; i++) {\n        this.cleanups[i]();\n      }\n      if (this.scopes) {\n        for (i = 0, l = this.scopes.length; i < l; i++) {\n          this.scopes[i].stop(true);\n        }\n      }\n      if (!this.detached && this.parent && !fromParent) {\n        const last = this.parent.scopes.pop();\n        if (last && last !== this) {\n          this.parent.scopes[this.index] = last;\n          last.index = this.index;\n        }\n      }\n      this.parent = void 0;\n      this._active = false;\n    }\n  }\n}\nfunction effectScope(detached) {\n  return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n  if (scope && scope.active) {\n    scope.effects.push(effect);\n  }\n}\nfunction getCurrentScope() {\n  return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n  if (activeEffectScope) {\n    activeEffectScope.cleanups.push(fn);\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn(\n      `onScopeDispose() is called when there is no active effect scope to be associated with.`\n    );\n  }\n}\n\nlet activeEffect;\nclass ReactiveEffect {\n  constructor(fn, trigger, scheduler, scope) {\n    this.fn = fn;\n    this.trigger = trigger;\n    this.scheduler = scheduler;\n    this.active = true;\n    this.deps = [];\n    /**\n     * @internal\n     */\n    this._dirtyLevel = 4;\n    /**\n     * @internal\n     */\n    this._trackId = 0;\n    /**\n     * @internal\n     */\n    this._runnings = 0;\n    /**\n     * @internal\n     */\n    this._shouldSchedule = false;\n    /**\n     * @internal\n     */\n    this._depsLength = 0;\n    recordEffectScope(this, scope);\n  }\n  get dirty() {\n    if (this._dirtyLevel === 2 || this._dirtyLevel === 3) {\n      this._dirtyLevel = 1;\n      pauseTracking();\n      for (let i = 0; i < this._depsLength; i++) {\n        const dep = this.deps[i];\n        if (dep.computed) {\n          triggerComputed(dep.computed);\n          if (this._dirtyLevel >= 4) {\n            break;\n          }\n        }\n      }\n      if (this._dirtyLevel === 1) {\n        this._dirtyLevel = 0;\n      }\n      resetTracking();\n    }\n    return this._dirtyLevel >= 4;\n  }\n  set dirty(v) {\n    this._dirtyLevel = v ? 4 : 0;\n  }\n  run() {\n    this._dirtyLevel = 0;\n    if (!this.active) {\n      return this.fn();\n    }\n    let lastShouldTrack = shouldTrack;\n    let lastEffect = activeEffect;\n    try {\n      shouldTrack = true;\n      activeEffect = this;\n      this._runnings++;\n      preCleanupEffect(this);\n      return this.fn();\n    } finally {\n      postCleanupEffect(this);\n      this._runnings--;\n      activeEffect = lastEffect;\n      shouldTrack = lastShouldTrack;\n    }\n  }\n  stop() {\n    var _a;\n    if (this.active) {\n      preCleanupEffect(this);\n      postCleanupEffect(this);\n      (_a = this.onStop) == null ? void 0 : _a.call(this);\n      this.active = false;\n    }\n  }\n}\nfunction triggerComputed(computed) {\n  return computed.value;\n}\nfunction preCleanupEffect(effect2) {\n  effect2._trackId++;\n  effect2._depsLength = 0;\n}\nfunction postCleanupEffect(effect2) {\n  if (effect2.deps.length > effect2._depsLength) {\n    for (let i = effect2._depsLength; i < effect2.deps.length; i++) {\n      cleanupDepEffect(effect2.deps[i], effect2);\n    }\n    effect2.deps.length = effect2._depsLength;\n  }\n}\nfunction cleanupDepEffect(dep, effect2) {\n  const trackId = dep.get(effect2);\n  if (trackId !== void 0 && effect2._trackId !== trackId) {\n    dep.delete(effect2);\n    if (dep.size === 0) {\n      dep.cleanup();\n    }\n  }\n}\nfunction effect(fn, options) {\n  if (fn.effect instanceof ReactiveEffect) {\n    fn = fn.effect.fn;\n  }\n  const _effect = new ReactiveEffect(fn, NOOP, () => {\n    if (_effect.dirty) {\n      _effect.run();\n    }\n  });\n  if (options) {\n    extend(_effect, options);\n    if (options.scope)\n      recordEffectScope(_effect, options.scope);\n  }\n  if (!options || !options.lazy) {\n    _effect.run();\n  }\n  const runner = _effect.run.bind(_effect);\n  runner.effect = _effect;\n  return runner;\n}\nfunction stop(runner) {\n  runner.effect.stop();\n}\nlet shouldTrack = true;\nlet pauseScheduleStack = 0;\nconst trackStack = [];\nfunction pauseTracking() {\n  trackStack.push(shouldTrack);\n  shouldTrack = false;\n}\nfunction enableTracking() {\n  trackStack.push(shouldTrack);\n  shouldTrack = true;\n}\nfunction resetTracking() {\n  const last = trackStack.pop();\n  shouldTrack = last === void 0 ? true : last;\n}\nfunction pauseScheduling() {\n  pauseScheduleStack++;\n}\nfunction resetScheduling() {\n  pauseScheduleStack--;\n  while (!pauseScheduleStack && queueEffectSchedulers.length) {\n    queueEffectSchedulers.shift()();\n  }\n}\nfunction trackEffect(effect2, dep, debuggerEventExtraInfo) {\n  var _a;\n  if (dep.get(effect2) !== effect2._trackId) {\n    dep.set(effect2, effect2._trackId);\n    const oldDep = effect2.deps[effect2._depsLength];\n    if (oldDep !== dep) {\n      if (oldDep) {\n        cleanupDepEffect(oldDep, effect2);\n      }\n      effect2.deps[effect2._depsLength++] = dep;\n    } else {\n      effect2._depsLength++;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n    }\n  }\n}\nconst queueEffectSchedulers = [];\nfunction triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {\n  var _a;\n  pauseScheduling();\n  for (const effect2 of dep.keys()) {\n    let tracking;\n    if (effect2._dirtyLevel < dirtyLevel && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n      effect2._shouldSchedule || (effect2._shouldSchedule = effect2._dirtyLevel === 0);\n      effect2._dirtyLevel = dirtyLevel;\n    }\n    if (effect2._shouldSchedule && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n      }\n      effect2.trigger();\n      if ((!effect2._runnings || effect2.allowRecurse) && effect2._dirtyLevel !== 2) {\n        effect2._shouldSchedule = false;\n        if (effect2.scheduler) {\n          queueEffectSchedulers.push(effect2.scheduler);\n        }\n      }\n    }\n  }\n  resetScheduling();\n}\n\nconst createDep = (cleanup, computed) => {\n  const dep = /* @__PURE__ */ new Map();\n  dep.cleanup = cleanup;\n  dep.computed = computed;\n  return dep;\n};\n\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"iterate\" : \"\");\nconst MAP_KEY_ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"Map key iterate\" : \"\");\nfunction track(target, type, key) {\n  if (shouldTrack && activeEffect) {\n    let depsMap = targetMap.get(target);\n    if (!depsMap) {\n      targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n    }\n    let dep = depsMap.get(key);\n    if (!dep) {\n      depsMap.set(key, dep = createDep(() => depsMap.delete(key)));\n    }\n    trackEffect(\n      activeEffect,\n      dep,\n      !!(process.env.NODE_ENV !== \"production\") ? {\n        target,\n        type,\n        key\n      } : void 0\n    );\n  }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n  const depsMap = targetMap.get(target);\n  if (!depsMap) {\n    return;\n  }\n  let deps = [];\n  if (type === \"clear\") {\n    deps = [...depsMap.values()];\n  } else if (key === \"length\" && isArray(target)) {\n    const newLength = Number(newValue);\n    depsMap.forEach((dep, key2) => {\n      if (key2 === \"length\" || !isSymbol(key2) && key2 >= newLength) {\n        deps.push(dep);\n      }\n    });\n  } else {\n    if (key !== void 0) {\n      deps.push(depsMap.get(key));\n    }\n    switch (type) {\n      case \"add\":\n        if (!isArray(target)) {\n          deps.push(depsMap.get(ITERATE_KEY));\n          if (isMap(target)) {\n            deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n          }\n        } else if (isIntegerKey(key)) {\n          deps.push(depsMap.get(\"length\"));\n        }\n        break;\n      case \"delete\":\n        if (!isArray(target)) {\n          deps.push(depsMap.get(ITERATE_KEY));\n          if (isMap(target)) {\n            deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n          }\n        }\n        break;\n      case \"set\":\n        if (isMap(target)) {\n          deps.push(depsMap.get(ITERATE_KEY));\n        }\n        break;\n    }\n  }\n  pauseScheduling();\n  for (const dep of deps) {\n    if (dep) {\n      triggerEffects(\n        dep,\n        4,\n        !!(process.env.NODE_ENV !== \"production\") ? {\n          target,\n          type,\n          key,\n          newValue,\n          oldValue,\n          oldTarget\n        } : void 0\n      );\n    }\n  }\n  resetScheduling();\n}\nfunction getDepFromReactive(object, key) {\n  var _a;\n  return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key);\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n  /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nconst arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n  const instrumentations = {};\n  [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n    instrumentations[key] = function(...args) {\n      const arr = toRaw(this);\n      for (let i = 0, l = this.length; i < l; i++) {\n        track(arr, \"get\", i + \"\");\n      }\n      const res = arr[key](...args);\n      if (res === -1 || res === false) {\n        return arr[key](...args.map(toRaw));\n      } else {\n        return res;\n      }\n    };\n  });\n  [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n    instrumentations[key] = function(...args) {\n      pauseTracking();\n      pauseScheduling();\n      const res = toRaw(this)[key].apply(this, args);\n      resetScheduling();\n      resetTracking();\n      return res;\n    };\n  });\n  return instrumentations;\n}\nfunction hasOwnProperty(key) {\n  const obj = toRaw(this);\n  track(obj, \"has\", key);\n  return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n  constructor(_isReadonly = false, _isShallow = false) {\n    this._isReadonly = _isReadonly;\n    this._isShallow = _isShallow;\n  }\n  get(target, key, receiver) {\n    const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n    if (key === \"__v_isReactive\") {\n      return !isReadonly2;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly2;\n    } else if (key === \"__v_isShallow\") {\n      return isShallow2;\n    } else if (key === \"__v_raw\") {\n      if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n      // this means the reciever is a user proxy of the reactive proxy\n      Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n        return target;\n      }\n      return;\n    }\n    const targetIsArray = isArray(target);\n    if (!isReadonly2) {\n      if (targetIsArray && hasOwn(arrayInstrumentations, key)) {\n        return Reflect.get(arrayInstrumentations, key, receiver);\n      }\n      if (key === \"hasOwnProperty\") {\n        return hasOwnProperty;\n      }\n    }\n    const res = Reflect.get(target, key, receiver);\n    if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n      return res;\n    }\n    if (!isReadonly2) {\n      track(target, \"get\", key);\n    }\n    if (isShallow2) {\n      return res;\n    }\n    if (isRef(res)) {\n      return targetIsArray && isIntegerKey(key) ? res : res.value;\n    }\n    if (isObject(res)) {\n      return isReadonly2 ? readonly(res) : reactive(res);\n    }\n    return res;\n  }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n  constructor(isShallow2 = false) {\n    super(false, isShallow2);\n  }\n  set(target, key, value, receiver) {\n    let oldValue = target[key];\n    if (!this._isShallow) {\n      const isOldValueReadonly = isReadonly(oldValue);\n      if (!isShallow(value) && !isReadonly(value)) {\n        oldValue = toRaw(oldValue);\n        value = toRaw(value);\n      }\n      if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n        if (isOldValueReadonly) {\n          return false;\n        } else {\n          oldValue.value = value;\n          return true;\n        }\n      }\n    }\n    const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n    const result = Reflect.set(target, key, value, receiver);\n    if (target === toRaw(receiver)) {\n      if (!hadKey) {\n        trigger(target, \"add\", key, value);\n      } else if (hasChanged(value, oldValue)) {\n        trigger(target, \"set\", key, value, oldValue);\n      }\n    }\n    return result;\n  }\n  deleteProperty(target, key) {\n    const hadKey = hasOwn(target, key);\n    const oldValue = target[key];\n    const result = Reflect.deleteProperty(target, key);\n    if (result && hadKey) {\n      trigger(target, \"delete\", key, void 0, oldValue);\n    }\n    return result;\n  }\n  has(target, key) {\n    const result = Reflect.has(target, key);\n    if (!isSymbol(key) || !builtInSymbols.has(key)) {\n      track(target, \"has\", key);\n    }\n    return result;\n  }\n  ownKeys(target) {\n    track(\n      target,\n      \"iterate\",\n      isArray(target) ? \"length\" : ITERATE_KEY\n    );\n    return Reflect.ownKeys(target);\n  }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n  constructor(isShallow2 = false) {\n    super(true, isShallow2);\n  }\n  set(target, key) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn(\n        `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n        target\n      );\n    }\n    return true;\n  }\n  deleteProperty(target, key) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn(\n        `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n        target\n      );\n    }\n    return true;\n  }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(\n  true\n);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get(target, key, isReadonly = false, isShallow = false) {\n  target = target[\"__v_raw\"];\n  const rawTarget = toRaw(target);\n  const rawKey = toRaw(key);\n  if (!isReadonly) {\n    if (hasChanged(key, rawKey)) {\n      track(rawTarget, \"get\", key);\n    }\n    track(rawTarget, \"get\", rawKey);\n  }\n  const { has: has2 } = getProto(rawTarget);\n  const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n  if (has2.call(rawTarget, key)) {\n    return wrap(target.get(key));\n  } else if (has2.call(rawTarget, rawKey)) {\n    return wrap(target.get(rawKey));\n  } else if (target !== rawTarget) {\n    target.get(key);\n  }\n}\nfunction has(key, isReadonly = false) {\n  const target = this[\"__v_raw\"];\n  const rawTarget = toRaw(target);\n  const rawKey = toRaw(key);\n  if (!isReadonly) {\n    if (hasChanged(key, rawKey)) {\n      track(rawTarget, \"has\", key);\n    }\n    track(rawTarget, \"has\", rawKey);\n  }\n  return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n  target = target[\"__v_raw\"];\n  !isReadonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n  return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n  value = toRaw(value);\n  const target = toRaw(this);\n  const proto = getProto(target);\n  const hadKey = proto.has.call(target, value);\n  if (!hadKey) {\n    target.add(value);\n    trigger(target, \"add\", value, value);\n  }\n  return this;\n}\nfunction set(key, value) {\n  value = toRaw(value);\n  const target = toRaw(this);\n  const { has: has2, get: get2 } = getProto(target);\n  let hadKey = has2.call(target, key);\n  if (!hadKey) {\n    key = toRaw(key);\n    hadKey = has2.call(target, key);\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    checkIdentityKeys(target, has2, key);\n  }\n  const oldValue = get2.call(target, key);\n  target.set(key, value);\n  if (!hadKey) {\n    trigger(target, \"add\", key, value);\n  } else if (hasChanged(value, oldValue)) {\n    trigger(target, \"set\", key, value, oldValue);\n  }\n  return this;\n}\nfunction deleteEntry(key) {\n  const target = toRaw(this);\n  const { has: has2, get: get2 } = getProto(target);\n  let hadKey = has2.call(target, key);\n  if (!hadKey) {\n    key = toRaw(key);\n    hadKey = has2.call(target, key);\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    checkIdentityKeys(target, has2, key);\n  }\n  const oldValue = get2 ? get2.call(target, key) : void 0;\n  const result = target.delete(key);\n  if (hadKey) {\n    trigger(target, \"delete\", key, void 0, oldValue);\n  }\n  return result;\n}\nfunction clear() {\n  const target = toRaw(this);\n  const hadItems = target.size !== 0;\n  const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n  const result = target.clear();\n  if (hadItems) {\n    trigger(target, \"clear\", void 0, void 0, oldTarget);\n  }\n  return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n  return function forEach(callback, thisArg) {\n    const observed = this;\n    const target = observed[\"__v_raw\"];\n    const rawTarget = toRaw(target);\n    const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n    !isReadonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n    return target.forEach((value, key) => {\n      return callback.call(thisArg, wrap(value), wrap(key), observed);\n    });\n  };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n  return function(...args) {\n    const target = this[\"__v_raw\"];\n    const rawTarget = toRaw(target);\n    const targetIsMap = isMap(rawTarget);\n    const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n    const isKeyOnly = method === \"keys\" && targetIsMap;\n    const innerIterator = target[method](...args);\n    const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n    !isReadonly && track(\n      rawTarget,\n      \"iterate\",\n      isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n    );\n    return {\n      // iterator protocol\n      next() {\n        const { value, done } = innerIterator.next();\n        return done ? { value, done } : {\n          value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n          done\n        };\n      },\n      // iterable protocol\n      [Symbol.iterator]() {\n        return this;\n      }\n    };\n  };\n}\nfunction createReadonlyMethod(type) {\n  return function(...args) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n      warn(\n        `${capitalize(type)} operation ${key}failed: target is readonly.`,\n        toRaw(this)\n      );\n    }\n    return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n  };\n}\nfunction createInstrumentations() {\n  const mutableInstrumentations2 = {\n    get(key) {\n      return get(this, key);\n    },\n    get size() {\n      return size(this);\n    },\n    has,\n    add,\n    set,\n    delete: deleteEntry,\n    clear,\n    forEach: createForEach(false, false)\n  };\n  const shallowInstrumentations2 = {\n    get(key) {\n      return get(this, key, false, true);\n    },\n    get size() {\n      return size(this);\n    },\n    has,\n    add,\n    set,\n    delete: deleteEntry,\n    clear,\n    forEach: createForEach(false, true)\n  };\n  const readonlyInstrumentations2 = {\n    get(key) {\n      return get(this, key, true);\n    },\n    get size() {\n      return size(this, true);\n    },\n    has(key) {\n      return has.call(this, key, true);\n    },\n    add: createReadonlyMethod(\"add\"),\n    set: createReadonlyMethod(\"set\"),\n    delete: createReadonlyMethod(\"delete\"),\n    clear: createReadonlyMethod(\"clear\"),\n    forEach: createForEach(true, false)\n  };\n  const shallowReadonlyInstrumentations2 = {\n    get(key) {\n      return get(this, key, true, true);\n    },\n    get size() {\n      return size(this, true);\n    },\n    has(key) {\n      return has.call(this, key, true);\n    },\n    add: createReadonlyMethod(\"add\"),\n    set: createReadonlyMethod(\"set\"),\n    delete: createReadonlyMethod(\"delete\"),\n    clear: createReadonlyMethod(\"clear\"),\n    forEach: createForEach(true, true)\n  };\n  const iteratorMethods = [\"keys\", \"values\", \"entries\", Symbol.iterator];\n  iteratorMethods.forEach((method) => {\n    mutableInstrumentations2[method] = createIterableMethod(\n      method,\n      false,\n      false\n    );\n    readonlyInstrumentations2[method] = createIterableMethod(\n      method,\n      true,\n      false\n    );\n    shallowInstrumentations2[method] = createIterableMethod(\n      method,\n      false,\n      true\n    );\n    shallowReadonlyInstrumentations2[method] = createIterableMethod(\n      method,\n      true,\n      true\n    );\n  });\n  return [\n    mutableInstrumentations2,\n    readonlyInstrumentations2,\n    shallowInstrumentations2,\n    shallowReadonlyInstrumentations2\n  ];\n}\nconst [\n  mutableInstrumentations,\n  readonlyInstrumentations,\n  shallowInstrumentations,\n  shallowReadonlyInstrumentations\n] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n  const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;\n  return (target, key, receiver) => {\n    if (key === \"__v_isReactive\") {\n      return !isReadonly;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly;\n    } else if (key === \"__v_raw\") {\n      return target;\n    }\n    return Reflect.get(\n      hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n      key,\n      receiver\n    );\n  };\n}\nconst mutableCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has2, key) {\n  const rawKey = toRaw(key);\n  if (rawKey !== key && has2.call(target, rawKey)) {\n    const type = toRawType(target);\n    warn(\n      `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n    );\n  }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n  switch (rawType) {\n    case \"Object\":\n    case \"Array\":\n      return 1 /* COMMON */;\n    case \"Map\":\n    case \"Set\":\n    case \"WeakMap\":\n    case \"WeakSet\":\n      return 2 /* COLLECTION */;\n    default:\n      return 0 /* INVALID */;\n  }\n}\nfunction getTargetType(value) {\n  return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n  if (isReadonly(target)) {\n    return target;\n  }\n  return createReactiveObject(\n    target,\n    false,\n    mutableHandlers,\n    mutableCollectionHandlers,\n    reactiveMap\n  );\n}\nfunction shallowReactive(target) {\n  return createReactiveObject(\n    target,\n    false,\n    shallowReactiveHandlers,\n    shallowCollectionHandlers,\n    shallowReactiveMap\n  );\n}\nfunction readonly(target) {\n  return createReactiveObject(\n    target,\n    true,\n    readonlyHandlers,\n    readonlyCollectionHandlers,\n    readonlyMap\n  );\n}\nfunction shallowReadonly(target) {\n  return createReactiveObject(\n    target,\n    true,\n    shallowReadonlyHandlers,\n    shallowReadonlyCollectionHandlers,\n    shallowReadonlyMap\n  );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n  if (!isObject(target)) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn(`value cannot be made reactive: ${String(target)}`);\n    }\n    return target;\n  }\n  if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n    return target;\n  }\n  const existingProxy = proxyMap.get(target);\n  if (existingProxy) {\n    return existingProxy;\n  }\n  const targetType = getTargetType(target);\n  if (targetType === 0 /* INVALID */) {\n    return target;\n  }\n  const proxy = new Proxy(\n    target,\n    targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n  );\n  proxyMap.set(target, proxy);\n  return proxy;\n}\nfunction isReactive(value) {\n  if (isReadonly(value)) {\n    return isReactive(value[\"__v_raw\"]);\n  }\n  return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n  return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n  return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n  return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n  const raw = observed && observed[\"__v_raw\"];\n  return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n  if (Object.isExtensible(value)) {\n    def(value, \"__v_skip\", true);\n  }\n  return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nconst COMPUTED_SIDE_EFFECT_WARN = `Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided.  Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free`;\nclass ComputedRefImpl {\n  constructor(getter, _setter, isReadonly, isSSR) {\n    this.getter = getter;\n    this._setter = _setter;\n    this.dep = void 0;\n    this.__v_isRef = true;\n    this[\"__v_isReadonly\"] = false;\n    this.effect = new ReactiveEffect(\n      () => getter(this._value),\n      () => triggerRefValue(\n        this,\n        this.effect._dirtyLevel === 2 ? 2 : 3\n      )\n    );\n    this.effect.computed = this;\n    this.effect.active = this._cacheable = !isSSR;\n    this[\"__v_isReadonly\"] = isReadonly;\n  }\n  get value() {\n    const self = toRaw(this);\n    if ((!self._cacheable || self.effect.dirty) && hasChanged(self._value, self._value = self.effect.run())) {\n      triggerRefValue(self, 4);\n    }\n    trackRefValue(self);\n    if (self.effect._dirtyLevel >= 2) {\n      if (!!(process.env.NODE_ENV !== \"production\") && this._warnRecursive) {\n        warn(COMPUTED_SIDE_EFFECT_WARN, `\n\ngetter: `, this.getter);\n      }\n      triggerRefValue(self, 2);\n    }\n    return self._value;\n  }\n  set value(newValue) {\n    this._setter(newValue);\n  }\n  // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x\n  get _dirty() {\n    return this.effect.dirty;\n  }\n  set _dirty(v) {\n    this.effect.dirty = v;\n  }\n  // #endregion\n}\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n  let getter;\n  let setter;\n  const onlyGetter = isFunction(getterOrOptions);\n  if (onlyGetter) {\n    getter = getterOrOptions;\n    setter = !!(process.env.NODE_ENV !== \"production\") ? () => {\n      warn(\"Write operation failed: computed value is readonly\");\n    } : NOOP;\n  } else {\n    getter = getterOrOptions.get;\n    setter = getterOrOptions.set;\n  }\n  const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n  if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n    cRef.effect.onTrack = debugOptions.onTrack;\n    cRef.effect.onTrigger = debugOptions.onTrigger;\n  }\n  return cRef;\n}\n\nfunction trackRefValue(ref2) {\n  var _a;\n  if (shouldTrack && activeEffect) {\n    ref2 = toRaw(ref2);\n    trackEffect(\n      activeEffect,\n      (_a = ref2.dep) != null ? _a : ref2.dep = createDep(\n        () => ref2.dep = void 0,\n        ref2 instanceof ComputedRefImpl ? ref2 : void 0\n      ),\n      !!(process.env.NODE_ENV !== \"production\") ? {\n        target: ref2,\n        type: \"get\",\n        key: \"value\"\n      } : void 0\n    );\n  }\n}\nfunction triggerRefValue(ref2, dirtyLevel = 4, newVal) {\n  ref2 = toRaw(ref2);\n  const dep = ref2.dep;\n  if (dep) {\n    triggerEffects(\n      dep,\n      dirtyLevel,\n      !!(process.env.NODE_ENV !== \"production\") ? {\n        target: ref2,\n        type: \"set\",\n        key: \"value\",\n        newValue: newVal\n      } : void 0\n    );\n  }\n}\nfunction isRef(r) {\n  return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n  return createRef(value, false);\n}\nfunction shallowRef(value) {\n  return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n  if (isRef(rawValue)) {\n    return rawValue;\n  }\n  return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n  constructor(value, __v_isShallow) {\n    this.__v_isShallow = __v_isShallow;\n    this.dep = void 0;\n    this.__v_isRef = true;\n    this._rawValue = __v_isShallow ? value : toRaw(value);\n    this._value = __v_isShallow ? value : toReactive(value);\n  }\n  get value() {\n    trackRefValue(this);\n    return this._value;\n  }\n  set value(newVal) {\n    const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n    newVal = useDirectValue ? newVal : toRaw(newVal);\n    if (hasChanged(newVal, this._rawValue)) {\n      this._rawValue = newVal;\n      this._value = useDirectValue ? newVal : toReactive(newVal);\n      triggerRefValue(this, 4, newVal);\n    }\n  }\n}\nfunction triggerRef(ref2) {\n  triggerRefValue(ref2, 4, !!(process.env.NODE_ENV !== \"production\") ? ref2.value : void 0);\n}\nfunction unref(ref2) {\n  return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n  return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n  get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n  set: (target, key, value, receiver) => {\n    const oldValue = target[key];\n    if (isRef(oldValue) && !isRef(value)) {\n      oldValue.value = value;\n      return true;\n    } else {\n      return Reflect.set(target, key, value, receiver);\n    }\n  }\n};\nfunction proxyRefs(objectWithRefs) {\n  return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n  constructor(factory) {\n    this.dep = void 0;\n    this.__v_isRef = true;\n    const { get, set } = factory(\n      () => trackRefValue(this),\n      () => triggerRefValue(this)\n    );\n    this._get = get;\n    this._set = set;\n  }\n  get value() {\n    return this._get();\n  }\n  set value(newVal) {\n    this._set(newVal);\n  }\n}\nfunction customRef(factory) {\n  return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n  if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n    warn(`toRefs() expects a reactive object but received a plain one.`);\n  }\n  const ret = isArray(object) ? new Array(object.length) : {};\n  for (const key in object) {\n    ret[key] = propertyToRef(object, key);\n  }\n  return ret;\n}\nclass ObjectRefImpl {\n  constructor(_object, _key, _defaultValue) {\n    this._object = _object;\n    this._key = _key;\n    this._defaultValue = _defaultValue;\n    this.__v_isRef = true;\n  }\n  get value() {\n    const val = this._object[this._key];\n    return val === void 0 ? this._defaultValue : val;\n  }\n  set value(newVal) {\n    this._object[this._key] = newVal;\n  }\n  get dep() {\n    return getDepFromReactive(toRaw(this._object), this._key);\n  }\n}\nclass GetterRefImpl {\n  constructor(_getter) {\n    this._getter = _getter;\n    this.__v_isRef = true;\n    this.__v_isReadonly = true;\n  }\n  get value() {\n    return this._getter();\n  }\n}\nfunction toRef(source, key, defaultValue) {\n  if (isRef(source)) {\n    return source;\n  } else if (isFunction(source)) {\n    return new GetterRefImpl(source);\n  } else if (isObject(source) && arguments.length > 1) {\n    return propertyToRef(source, key, defaultValue);\n  } else {\n    return ref(source);\n  }\n}\nfunction propertyToRef(source, key, defaultValue) {\n  const val = source[key];\n  return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nconst deferredComputed = computed;\n\nconst TrackOpTypes = {\n  \"GET\": \"get\",\n  \"HAS\": \"has\",\n  \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n  \"SET\": \"set\",\n  \"ADD\": \"add\",\n  \"DELETE\": \"delete\",\n  \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n  \"SKIP\": \"__v_skip\",\n  \"IS_REACTIVE\": \"__v_isReactive\",\n  \"IS_READONLY\": \"__v_isReadonly\",\n  \"IS_SHALLOW\": \"__v_isShallow\",\n  \"RAW\": \"__v_raw\"\n};\n\nexport { EffectScope, ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, computed, customRef, deferredComputed, effect, effectScope, enableTracking, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, pauseScheduling, pauseTracking, proxyRefs, reactive, readonly, ref, resetScheduling, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, track, trigger, triggerRef, unref };\n","/**\n* @vue/runtime-core v3.4.21\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { pauseTracking, resetTracking, isRef, toRaw, isShallow, isReactive, ReactiveEffect, getCurrentScope, ref, shallowReadonly, track, reactive, shallowReactive, trigger, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1, customRef, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, NOOP, getGlobalThis, extend, EMPTY_OBJ, toHandlerKey, looseToNumber, hyphenate, camelize, isObject, isOn, hasOwn, isModelListener, capitalize, toNumber, hasChanged, remove, isSet, isMap, isPlainObject, isBuiltInDirective, invokeArrayFns, isRegExp, isGloballyAllowed, NO, def, isReservedProp, EMPTY_ARR, toRawType, makeMap, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n  stack.push(vnode);\n}\nfunction popWarningContext() {\n  stack.pop();\n}\nfunction warn$1(msg, ...args) {\n  pauseTracking();\n  const instance = stack.length ? stack[stack.length - 1].component : null;\n  const appWarnHandler = instance && instance.appContext.config.warnHandler;\n  const trace = getComponentTrace();\n  if (appWarnHandler) {\n    callWithErrorHandling(\n      appWarnHandler,\n      instance,\n      11,\n      [\n        msg + args.map((a) => {\n          var _a, _b;\n          return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n        }).join(\"\"),\n        instance && instance.proxy,\n        trace.map(\n          ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n        ).join(\"\\n\"),\n        trace\n      ]\n    );\n  } else {\n    const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n    if (trace.length && // avoid spamming console during tests\n    true) {\n      warnArgs.push(`\n`, ...formatTrace(trace));\n    }\n    console.warn(...warnArgs);\n  }\n  resetTracking();\n}\nfunction getComponentTrace() {\n  let currentVNode = stack[stack.length - 1];\n  if (!currentVNode) {\n    return [];\n  }\n  const normalizedStack = [];\n  while (currentVNode) {\n    const last = normalizedStack[0];\n    if (last && last.vnode === currentVNode) {\n      last.recurseCount++;\n    } else {\n      normalizedStack.push({\n        vnode: currentVNode,\n        recurseCount: 0\n      });\n    }\n    const parentInstance = currentVNode.component && currentVNode.component.parent;\n    currentVNode = parentInstance && parentInstance.vnode;\n  }\n  return normalizedStack;\n}\nfunction formatTrace(trace) {\n  const logs = [];\n  trace.forEach((entry, i) => {\n    logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n  });\n  return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n  const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n  const isRoot = vnode.component ? vnode.component.parent == null : false;\n  const open = ` at <${formatComponentName(\n    vnode.component,\n    vnode.type,\n    isRoot\n  )}`;\n  const close = `>` + postfix;\n  return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n  const res = [];\n  const keys = Object.keys(props);\n  keys.slice(0, 3).forEach((key) => {\n    res.push(...formatProp(key, props[key]));\n  });\n  if (keys.length > 3) {\n    res.push(` ...`);\n  }\n  return res;\n}\nfunction formatProp(key, value, raw) {\n  if (isString(value)) {\n    value = JSON.stringify(value);\n    return raw ? value : [`${key}=${value}`];\n  } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n    return raw ? value : [`${key}=${value}`];\n  } else if (isRef(value)) {\n    value = formatProp(key, toRaw(value.value), true);\n    return raw ? value : [`${key}=Ref<`, value, `>`];\n  } else if (isFunction(value)) {\n    return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n  } else {\n    value = toRaw(value);\n    return raw ? value : [`${key}=`, value];\n  }\n}\nfunction assertNumber(val, type) {\n  if (!!!(process.env.NODE_ENV !== \"production\"))\n    return;\n  if (val === void 0) {\n    return;\n  } else if (typeof val !== \"number\") {\n    warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n  } else if (isNaN(val)) {\n    warn$1(`${type} is NaN - the duration expression might be incorrect.`);\n  }\n}\n\nconst ErrorCodes = {\n  \"SETUP_FUNCTION\": 0,\n  \"0\": \"SETUP_FUNCTION\",\n  \"RENDER_FUNCTION\": 1,\n  \"1\": \"RENDER_FUNCTION\",\n  \"WATCH_GETTER\": 2,\n  \"2\": \"WATCH_GETTER\",\n  \"WATCH_CALLBACK\": 3,\n  \"3\": \"WATCH_CALLBACK\",\n  \"WATCH_CLEANUP\": 4,\n  \"4\": \"WATCH_CLEANUP\",\n  \"NATIVE_EVENT_HANDLER\": 5,\n  \"5\": \"NATIVE_EVENT_HANDLER\",\n  \"COMPONENT_EVENT_HANDLER\": 6,\n  \"6\": \"COMPONENT_EVENT_HANDLER\",\n  \"VNODE_HOOK\": 7,\n  \"7\": \"VNODE_HOOK\",\n  \"DIRECTIVE_HOOK\": 8,\n  \"8\": \"DIRECTIVE_HOOK\",\n  \"TRANSITION_HOOK\": 9,\n  \"9\": \"TRANSITION_HOOK\",\n  \"APP_ERROR_HANDLER\": 10,\n  \"10\": \"APP_ERROR_HANDLER\",\n  \"APP_WARN_HANDLER\": 11,\n  \"11\": \"APP_WARN_HANDLER\",\n  \"FUNCTION_REF\": 12,\n  \"12\": \"FUNCTION_REF\",\n  \"ASYNC_COMPONENT_LOADER\": 13,\n  \"13\": \"ASYNC_COMPONENT_LOADER\",\n  \"SCHEDULER\": 14,\n  \"14\": \"SCHEDULER\"\n};\nconst ErrorTypeStrings$1 = {\n  [\"sp\"]: \"serverPrefetch hook\",\n  [\"bc\"]: \"beforeCreate hook\",\n  [\"c\"]: \"created hook\",\n  [\"bm\"]: \"beforeMount hook\",\n  [\"m\"]: \"mounted hook\",\n  [\"bu\"]: \"beforeUpdate hook\",\n  [\"u\"]: \"updated\",\n  [\"bum\"]: \"beforeUnmount hook\",\n  [\"um\"]: \"unmounted hook\",\n  [\"a\"]: \"activated hook\",\n  [\"da\"]: \"deactivated hook\",\n  [\"ec\"]: \"errorCaptured hook\",\n  [\"rtc\"]: \"renderTracked hook\",\n  [\"rtg\"]: \"renderTriggered hook\",\n  [0]: \"setup function\",\n  [1]: \"render function\",\n  [2]: \"watcher getter\",\n  [3]: \"watcher callback\",\n  [4]: \"watcher cleanup function\",\n  [5]: \"native event handler\",\n  [6]: \"component event handler\",\n  [7]: \"vnode hook\",\n  [8]: \"directive hook\",\n  [9]: \"transition hook\",\n  [10]: \"app errorHandler\",\n  [11]: \"app warnHandler\",\n  [12]: \"ref function\",\n  [13]: \"async component loader\",\n  [14]: \"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core .\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n  try {\n    return args ? fn(...args) : fn();\n  } catch (err) {\n    handleError(err, instance, type);\n  }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n  if (isFunction(fn)) {\n    const res = callWithErrorHandling(fn, instance, type, args);\n    if (res && isPromise(res)) {\n      res.catch((err) => {\n        handleError(err, instance, type);\n      });\n    }\n    return res;\n  }\n  const values = [];\n  for (let i = 0; i < fn.length; i++) {\n    values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n  }\n  return values;\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n  const contextVNode = instance ? instance.vnode : null;\n  if (instance) {\n    let cur = instance.parent;\n    const exposedInstance = instance.proxy;\n    const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`;\n    while (cur) {\n      const errorCapturedHooks = cur.ec;\n      if (errorCapturedHooks) {\n        for (let i = 0; i < errorCapturedHooks.length; i++) {\n          if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n            return;\n          }\n        }\n      }\n      cur = cur.parent;\n    }\n    const appErrorHandler = instance.appContext.config.errorHandler;\n    if (appErrorHandler) {\n      callWithErrorHandling(\n        appErrorHandler,\n        null,\n        10,\n        [err, exposedInstance, errorInfo]\n      );\n      return;\n    }\n  }\n  logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const info = ErrorTypeStrings$1[type];\n    if (contextVNode) {\n      pushWarningContext(contextVNode);\n    }\n    warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n    if (contextVNode) {\n      popWarningContext();\n    }\n    if (throwInDev) {\n      throw err;\n    } else {\n      console.error(err);\n    }\n  } else {\n    console.error(err);\n  }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n  const p = currentFlushPromise || resolvedPromise;\n  return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n  let start = flushIndex + 1;\n  let end = queue.length;\n  while (start < end) {\n    const middle = start + end >>> 1;\n    const middleJob = queue[middle];\n    const middleJobId = getId(middleJob);\n    if (middleJobId < id || middleJobId === id && middleJob.pre) {\n      start = middle + 1;\n    } else {\n      end = middle;\n    }\n  }\n  return start;\n}\nfunction queueJob(job) {\n  if (!queue.length || !queue.includes(\n    job,\n    isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex\n  )) {\n    if (job.id == null) {\n      queue.push(job);\n    } else {\n      queue.splice(findInsertionIndex(job.id), 0, job);\n    }\n    queueFlush();\n  }\n}\nfunction queueFlush() {\n  if (!isFlushing && !isFlushPending) {\n    isFlushPending = true;\n    currentFlushPromise = resolvedPromise.then(flushJobs);\n  }\n}\nfunction invalidateJob(job) {\n  const i = queue.indexOf(job);\n  if (i > flushIndex) {\n    queue.splice(i, 1);\n  }\n}\nfunction queuePostFlushCb(cb) {\n  if (!isArray(cb)) {\n    if (!activePostFlushCbs || !activePostFlushCbs.includes(\n      cb,\n      cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex\n    )) {\n      pendingPostFlushCbs.push(cb);\n    }\n  } else {\n    pendingPostFlushCbs.push(...cb);\n  }\n  queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    seen = seen || /* @__PURE__ */ new Map();\n  }\n  for (; i < queue.length; i++) {\n    const cb = queue[i];\n    if (cb && cb.pre) {\n      if (instance && cb.id !== instance.uid) {\n        continue;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n        continue;\n      }\n      queue.splice(i, 1);\n      i--;\n      cb();\n    }\n  }\n}\nfunction flushPostFlushCbs(seen) {\n  if (pendingPostFlushCbs.length) {\n    const deduped = [...new Set(pendingPostFlushCbs)].sort(\n      (a, b) => getId(a) - getId(b)\n    );\n    pendingPostFlushCbs.length = 0;\n    if (activePostFlushCbs) {\n      activePostFlushCbs.push(...deduped);\n      return;\n    }\n    activePostFlushCbs = deduped;\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      seen = seen || /* @__PURE__ */ new Map();\n    }\n    for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n      if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n        continue;\n      }\n      activePostFlushCbs[postFlushIndex]();\n    }\n    activePostFlushCbs = null;\n    postFlushIndex = 0;\n  }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n  const diff = getId(a) - getId(b);\n  if (diff === 0) {\n    if (a.pre && !b.pre)\n      return -1;\n    if (b.pre && !a.pre)\n      return 1;\n  }\n  return diff;\n};\nfunction flushJobs(seen) {\n  isFlushPending = false;\n  isFlushing = true;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    seen = seen || /* @__PURE__ */ new Map();\n  }\n  queue.sort(comparator);\n  const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n  try {\n    for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n      const job = queue[flushIndex];\n      if (job && job.active !== false) {\n        if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n          continue;\n        }\n        callWithErrorHandling(job, null, 14);\n      }\n    }\n  } finally {\n    flushIndex = 0;\n    queue.length = 0;\n    flushPostFlushCbs(seen);\n    isFlushing = false;\n    currentFlushPromise = null;\n    if (queue.length || pendingPostFlushCbs.length) {\n      flushJobs(seen);\n    }\n  }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n  if (!seen.has(fn)) {\n    seen.set(fn, 1);\n  } else {\n    const count = seen.get(fn);\n    if (count > RECURSION_LIMIT) {\n      const instance = fn.ownerInstance;\n      const componentName = instance && getComponentName(instance.type);\n      handleError(\n        `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n        null,\n        10\n      );\n      return true;\n    } else {\n      seen.set(fn, count + 1);\n    }\n  }\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Set();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n  getGlobalThis().__VUE_HMR_RUNTIME__ = {\n    createRecord: tryWrap(createRecord),\n    rerender: tryWrap(rerender),\n    reload: tryWrap(reload)\n  };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n  const id = instance.type.__hmrId;\n  let record = map.get(id);\n  if (!record) {\n    createRecord(id, instance.type);\n    record = map.get(id);\n  }\n  record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n  map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n  if (map.has(id)) {\n    return false;\n  }\n  map.set(id, {\n    initialDef: normalizeClassComponent(initialDef),\n    instances: /* @__PURE__ */ new Set()\n  });\n  return true;\n}\nfunction normalizeClassComponent(component) {\n  return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n  const record = map.get(id);\n  if (!record) {\n    return;\n  }\n  record.initialDef.render = newRender;\n  [...record.instances].forEach((instance) => {\n    if (newRender) {\n      instance.render = newRender;\n      normalizeClassComponent(instance.type).render = newRender;\n    }\n    instance.renderCache = [];\n    isHmrUpdating = true;\n    instance.effect.dirty = true;\n    instance.update();\n    isHmrUpdating = false;\n  });\n}\nfunction reload(id, newComp) {\n  const record = map.get(id);\n  if (!record)\n    return;\n  newComp = normalizeClassComponent(newComp);\n  updateComponentDef(record.initialDef, newComp);\n  const instances = [...record.instances];\n  for (const instance of instances) {\n    const oldComp = normalizeClassComponent(instance.type);\n    if (!hmrDirtyComponents.has(oldComp)) {\n      if (oldComp !== record.initialDef) {\n        updateComponentDef(oldComp, newComp);\n      }\n      hmrDirtyComponents.add(oldComp);\n    }\n    instance.appContext.propsCache.delete(instance.type);\n    instance.appContext.emitsCache.delete(instance.type);\n    instance.appContext.optionsCache.delete(instance.type);\n    if (instance.ceReload) {\n      hmrDirtyComponents.add(oldComp);\n      instance.ceReload(newComp.styles);\n      hmrDirtyComponents.delete(oldComp);\n    } else if (instance.parent) {\n      instance.parent.effect.dirty = true;\n      queueJob(instance.parent.update);\n    } else if (instance.appContext.reload) {\n      instance.appContext.reload();\n    } else if (typeof window !== \"undefined\") {\n      window.location.reload();\n    } else {\n      console.warn(\n        \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n      );\n    }\n  }\n  queuePostFlushCb(() => {\n    for (const instance of instances) {\n      hmrDirtyComponents.delete(\n        normalizeClassComponent(instance.type)\n      );\n    }\n  });\n}\nfunction updateComponentDef(oldComp, newComp) {\n  extend(oldComp, newComp);\n  for (const key in oldComp) {\n    if (key !== \"__file\" && !(key in newComp)) {\n      delete oldComp[key];\n    }\n  }\n}\nfunction tryWrap(fn) {\n  return (id, arg) => {\n    try {\n      return fn(id, arg);\n    } catch (e) {\n      console.error(e);\n      console.warn(\n        `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n      );\n    }\n  };\n}\n\nlet devtools$1;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n  if (devtools$1) {\n    devtools$1.emit(event, ...args);\n  } else if (!devtoolsNotInstalled) {\n    buffer.push({ event, args });\n  }\n}\nfunction setDevtoolsHook$1(hook, target) {\n  var _a, _b;\n  devtools$1 = hook;\n  if (devtools$1) {\n    devtools$1.enabled = true;\n    buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));\n    buffer = [];\n  } else if (\n    // handle late devtools injection - only do this if we are in an actual\n    // browser environment to avoid the timer handle stalling test runner exit\n    // (#4815)\n    typeof window !== \"undefined\" && // some envs mock window but not fully\n    window.HTMLElement && // also exclude jsdom\n    !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n  ) {\n    const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n    replay.push((newHook) => {\n      setDevtoolsHook$1(newHook, target);\n    });\n    setTimeout(() => {\n      if (!devtools$1) {\n        target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n        devtoolsNotInstalled = true;\n        buffer = [];\n      }\n    }, 3e3);\n  } else {\n    devtoolsNotInstalled = true;\n    buffer = [];\n  }\n}\nfunction devtoolsInitApp(app, version) {\n  emit$1(\"app:init\" /* APP_INIT */, app, version, {\n    Fragment,\n    Text,\n    Comment,\n    Static\n  });\n}\nfunction devtoolsUnmountApp(app) {\n  emit$1(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\n  \"component:added\" /* COMPONENT_ADDED */\n);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n  \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n  if (devtools$1 && typeof devtools$1.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n  !devtools$1.cleanupBuffer(component)) {\n    _devtoolsComponentRemoved(component);\n  }\n};\nfunction createDevtoolsComponentHook(hook) {\n  return (component) => {\n    emit$1(\n      hook,\n      component.appContext.app,\n      component.uid,\n      component.parent ? component.parent.uid : void 0,\n      component\n    );\n  };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\n  \"perf:start\" /* PERFORMANCE_START */\n);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\n  \"perf:end\" /* PERFORMANCE_END */\n);\nfunction createDevtoolsPerformanceHook(hook) {\n  return (component, type, time) => {\n    emit$1(hook, component.appContext.app, component.uid, component, type, time);\n  };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n  emit$1(\n    \"component:emit\" /* COMPONENT_EMIT */,\n    component.appContext.app,\n    component,\n    event,\n    params\n  );\n}\n\nfunction emit(instance, event, ...rawArgs) {\n  if (instance.isUnmounted)\n    return;\n  const props = instance.vnode.props || EMPTY_OBJ;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const {\n      emitsOptions,\n      propsOptions: [propsOptions]\n    } = instance;\n    if (emitsOptions) {\n      if (!(event in emitsOptions) && true) {\n        if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n          warn$1(\n            `Component emitted event \"${event}\" but it is neither declared in the emits option nor as an \"${toHandlerKey(event)}\" prop.`\n          );\n        }\n      } else {\n        const validator = emitsOptions[event];\n        if (isFunction(validator)) {\n          const isValid = validator(...rawArgs);\n          if (!isValid) {\n            warn$1(\n              `Invalid event arguments: event validation failed for event \"${event}\".`\n            );\n          }\n        }\n      }\n    }\n  }\n  let args = rawArgs;\n  const isModelListener = event.startsWith(\"update:\");\n  const modelArg = isModelListener && event.slice(7);\n  if (modelArg && modelArg in props) {\n    const modifiersKey = `${modelArg === \"modelValue\" ? \"model\" : modelArg}Modifiers`;\n    const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n    if (trim) {\n      args = rawArgs.map((a) => isString(a) ? a.trim() : a);\n    }\n    if (number) {\n      args = rawArgs.map(looseToNumber);\n    }\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    devtoolsComponentEmit(instance, event, args);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const lowerCaseEvent = event.toLowerCase();\n    if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n      warn$1(\n        `Event \"${lowerCaseEvent}\" is emitted in component ${formatComponentName(\n          instance,\n          instance.type\n        )} but the handler is registered for \"${event}\". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use \"${hyphenate(\n          event\n        )}\" instead of \"${event}\".`\n      );\n    }\n  }\n  let handlerName;\n  let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)\n  props[handlerName = toHandlerKey(camelize(event))];\n  if (!handler && isModelListener) {\n    handler = props[handlerName = toHandlerKey(hyphenate(event))];\n  }\n  if (handler) {\n    callWithAsyncErrorHandling(\n      handler,\n      instance,\n      6,\n      args\n    );\n  }\n  const onceHandler = props[handlerName + `Once`];\n  if (onceHandler) {\n    if (!instance.emitted) {\n      instance.emitted = {};\n    } else if (instance.emitted[handlerName]) {\n      return;\n    }\n    instance.emitted[handlerName] = true;\n    callWithAsyncErrorHandling(\n      onceHandler,\n      instance,\n      6,\n      args\n    );\n  }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n  const cache = appContext.emitsCache;\n  const cached = cache.get(comp);\n  if (cached !== void 0) {\n    return cached;\n  }\n  const raw = comp.emits;\n  let normalized = {};\n  let hasExtends = false;\n  if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n    const extendEmits = (raw2) => {\n      const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n      if (normalizedFromExtend) {\n        hasExtends = true;\n        extend(normalized, normalizedFromExtend);\n      }\n    };\n    if (!asMixin && appContext.mixins.length) {\n      appContext.mixins.forEach(extendEmits);\n    }\n    if (comp.extends) {\n      extendEmits(comp.extends);\n    }\n    if (comp.mixins) {\n      comp.mixins.forEach(extendEmits);\n    }\n  }\n  if (!raw && !hasExtends) {\n    if (isObject(comp)) {\n      cache.set(comp, null);\n    }\n    return null;\n  }\n  if (isArray(raw)) {\n    raw.forEach((key) => normalized[key] = null);\n  } else {\n    extend(normalized, raw);\n  }\n  if (isObject(comp)) {\n    cache.set(comp, normalized);\n  }\n  return normalized;\n}\nfunction isEmitListener(options, key) {\n  if (!options || !isOn(key)) {\n    return false;\n  }\n  key = key.slice(2).replace(/Once$/, \"\");\n  return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n  const prev = currentRenderingInstance;\n  currentRenderingInstance = instance;\n  currentScopeId = instance && instance.type.__scopeId || null;\n  return prev;\n}\nfunction pushScopeId(id) {\n  currentScopeId = id;\n}\nfunction popScopeId() {\n  currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n  if (!ctx)\n    return fn;\n  if (fn._n) {\n    return fn;\n  }\n  const renderFnWithContext = (...args) => {\n    if (renderFnWithContext._d) {\n      setBlockTracking(-1);\n    }\n    const prevInstance = setCurrentRenderingInstance(ctx);\n    let res;\n    try {\n      res = fn(...args);\n    } finally {\n      setCurrentRenderingInstance(prevInstance);\n      if (renderFnWithContext._d) {\n        setBlockTracking(1);\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      devtoolsComponentUpdated(ctx);\n    }\n    return res;\n  };\n  renderFnWithContext._n = true;\n  renderFnWithContext._c = true;\n  renderFnWithContext._d = true;\n  return renderFnWithContext;\n}\n\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n  accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n  const {\n    type: Component,\n    vnode,\n    proxy,\n    withProxy,\n    props,\n    propsOptions: [propsOptions],\n    slots,\n    attrs,\n    emit,\n    render,\n    renderCache,\n    data,\n    setupState,\n    ctx,\n    inheritAttrs\n  } = instance;\n  let result;\n  let fallthroughAttrs;\n  const prev = setCurrentRenderingInstance(instance);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    accessedAttrs = false;\n  }\n  try {\n    if (vnode.shapeFlag & 4) {\n      const proxyToUse = withProxy || proxy;\n      const thisProxy = !!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup ? new Proxy(proxyToUse, {\n        get(target, key, receiver) {\n          warn$1(\n            `Property '${String(\n              key\n            )}' was accessed via 'this'. Avoid using 'this' in templates.`\n          );\n          return Reflect.get(target, key, receiver);\n        }\n      }) : proxyToUse;\n      result = normalizeVNode(\n        render.call(\n          thisProxy,\n          proxyToUse,\n          renderCache,\n          props,\n          setupState,\n          data,\n          ctx\n        )\n      );\n      fallthroughAttrs = attrs;\n    } else {\n      const render2 = Component;\n      if (!!(process.env.NODE_ENV !== \"production\") && attrs === props) {\n        markAttrsAccessed();\n      }\n      result = normalizeVNode(\n        render2.length > 1 ? render2(\n          props,\n          !!(process.env.NODE_ENV !== \"production\") ? {\n            get attrs() {\n              markAttrsAccessed();\n              return attrs;\n            },\n            slots,\n            emit\n          } : { attrs, slots, emit }\n        ) : render2(\n          props,\n          null\n          /* we know it doesn't need it */\n        )\n      );\n      fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n    }\n  } catch (err) {\n    blockStack.length = 0;\n    handleError(err, instance, 1);\n    result = createVNode(Comment);\n  }\n  let root = result;\n  let setRoot = void 0;\n  if (!!(process.env.NODE_ENV !== \"production\") && result.patchFlag > 0 && result.patchFlag & 2048) {\n    [root, setRoot] = getChildRoot(result);\n  }\n  if (fallthroughAttrs && inheritAttrs !== false) {\n    const keys = Object.keys(fallthroughAttrs);\n    const { shapeFlag } = root;\n    if (keys.length) {\n      if (shapeFlag & (1 | 6)) {\n        if (propsOptions && keys.some(isModelListener)) {\n          fallthroughAttrs = filterModelListeners(\n            fallthroughAttrs,\n            propsOptions\n          );\n        }\n        root = cloneVNode(root, fallthroughAttrs);\n      } else if (!!(process.env.NODE_ENV !== \"production\") && !accessedAttrs && root.type !== Comment) {\n        const allAttrs = Object.keys(attrs);\n        const eventAttrs = [];\n        const extraAttrs = [];\n        for (let i = 0, l = allAttrs.length; i < l; i++) {\n          const key = allAttrs[i];\n          if (isOn(key)) {\n            if (!isModelListener(key)) {\n              eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n            }\n          } else {\n            extraAttrs.push(key);\n          }\n        }\n        if (extraAttrs.length) {\n          warn$1(\n            `Extraneous non-props attributes (${extraAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`\n          );\n        }\n        if (eventAttrs.length) {\n          warn$1(\n            `Extraneous non-emits event listeners (${eventAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the \"emits\" option.`\n          );\n        }\n      }\n    }\n  }\n  if (vnode.dirs) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n      warn$1(\n        `Runtime directive used on component with non-element root node. The directives will not function as intended.`\n      );\n    }\n    root = cloneVNode(root);\n    root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n  }\n  if (vnode.transition) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n      warn$1(\n        `Component inside <Transition> renders non-element root node that cannot be animated.`\n      );\n    }\n    root.transition = vnode.transition;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && setRoot) {\n    setRoot(root);\n  } else {\n    result = root;\n  }\n  setCurrentRenderingInstance(prev);\n  return result;\n}\nconst getChildRoot = (vnode) => {\n  const rawChildren = vnode.children;\n  const dynamicChildren = vnode.dynamicChildren;\n  const childRoot = filterSingleRoot(rawChildren, false);\n  if (!childRoot) {\n    return [vnode, void 0];\n  } else if (!!(process.env.NODE_ENV !== \"production\") && childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) {\n    return getChildRoot(childRoot);\n  }\n  const index = rawChildren.indexOf(childRoot);\n  const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n  const setRoot = (updatedRoot) => {\n    rawChildren[index] = updatedRoot;\n    if (dynamicChildren) {\n      if (dynamicIndex > -1) {\n        dynamicChildren[dynamicIndex] = updatedRoot;\n      } else if (updatedRoot.patchFlag > 0) {\n        vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n      }\n    }\n  };\n  return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children, recurse = true) {\n  let singleRoot;\n  for (let i = 0; i < children.length; i++) {\n    const child = children[i];\n    if (isVNode(child)) {\n      if (child.type !== Comment || child.children === \"v-if\") {\n        if (singleRoot) {\n          return;\n        } else {\n          singleRoot = child;\n          if (!!(process.env.NODE_ENV !== \"production\") && recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) {\n            return filterSingleRoot(singleRoot.children);\n          }\n        }\n      }\n    } else {\n      return;\n    }\n  }\n  return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n  let res;\n  for (const key in attrs) {\n    if (key === \"class\" || key === \"style\" || isOn(key)) {\n      (res || (res = {}))[key] = attrs[key];\n    }\n  }\n  return res;\n};\nconst filterModelListeners = (attrs, props) => {\n  const res = {};\n  for (const key in attrs) {\n    if (!isModelListener(key) || !(key.slice(9) in props)) {\n      res[key] = attrs[key];\n    }\n  }\n  return res;\n};\nconst isElementRoot = (vnode) => {\n  return vnode.shapeFlag & (6 | 1) || vnode.type === Comment;\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n  const { props: prevProps, children: prevChildren, component } = prevVNode;\n  const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n  const emits = component.emitsOptions;\n  if (!!(process.env.NODE_ENV !== \"production\") && (prevChildren || nextChildren) && isHmrUpdating) {\n    return true;\n  }\n  if (nextVNode.dirs || nextVNode.transition) {\n    return true;\n  }\n  if (optimized && patchFlag >= 0) {\n    if (patchFlag & 1024) {\n      return true;\n    }\n    if (patchFlag & 16) {\n      if (!prevProps) {\n        return !!nextProps;\n      }\n      return hasPropsChanged(prevProps, nextProps, emits);\n    } else if (patchFlag & 8) {\n      const dynamicProps = nextVNode.dynamicProps;\n      for (let i = 0; i < dynamicProps.length; i++) {\n        const key = dynamicProps[i];\n        if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {\n          return true;\n        }\n      }\n    }\n  } else {\n    if (prevChildren || nextChildren) {\n      if (!nextChildren || !nextChildren.$stable) {\n        return true;\n      }\n    }\n    if (prevProps === nextProps) {\n      return false;\n    }\n    if (!prevProps) {\n      return !!nextProps;\n    }\n    if (!nextProps) {\n      return true;\n    }\n    return hasPropsChanged(prevProps, nextProps, emits);\n  }\n  return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n  const nextKeys = Object.keys(nextProps);\n  if (nextKeys.length !== Object.keys(prevProps).length) {\n    return true;\n  }\n  for (let i = 0; i < nextKeys.length; i++) {\n    const key = nextKeys[i];\n    if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el) {\n  while (parent) {\n    const root = parent.subTree;\n    if (root.suspense && root.suspense.activeBranch === vnode) {\n      root.el = vnode.el;\n    }\n    if (root === vnode) {\n      (vnode = parent.vnode).el = el;\n      parent = parent.parent;\n    } else {\n      break;\n    }\n  }\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n  return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n  if (isString(component)) {\n    return resolveAsset(COMPONENTS, component, false) || component;\n  } else {\n    return component || NULL_DYNAMIC_COMPONENT;\n  }\n}\nfunction resolveDirective(name) {\n  return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n  const instance = currentRenderingInstance || currentInstance;\n  if (instance) {\n    const Component = instance.type;\n    if (type === COMPONENTS) {\n      const selfName = getComponentName(\n        Component,\n        false\n      );\n      if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n        return Component;\n      }\n    }\n    const res = (\n      // local registration\n      // check instance[type] first which is resolved for options API\n      resolve(instance[type] || Component[type], name) || // global registration\n      resolve(instance.appContext[type], name)\n    );\n    if (!res && maybeSelfReference) {\n      return Component;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n      const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n      warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n    }\n    return res;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(\n      `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n    );\n  }\n}\nfunction resolve(registry, name) {\n  return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nconst isSuspense = (type) => type.__isSuspense;\nlet suspenseId = 0;\nconst SuspenseImpl = {\n  name: \"Suspense\",\n  // In order to make Suspense tree-shakable, we need to avoid importing it\n  // directly in the renderer. The renderer checks for the __isSuspense flag\n  // on a vnode's type and calls the `process` method, passing in renderer\n  // internals.\n  __isSuspense: true,\n  process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n    if (n1 == null) {\n      mountSuspense(\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized,\n        rendererInternals\n      );\n    } else {\n      if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) {\n        n2.suspense = n1.suspense;\n        n2.suspense.vnode = n2;\n        n2.el = n1.el;\n        return;\n      }\n      patchSuspense(\n        n1,\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        namespace,\n        slotScopeIds,\n        optimized,\n        rendererInternals\n      );\n    }\n  },\n  hydrate: hydrateSuspense,\n  create: createSuspenseBoundary,\n  normalize: normalizeSuspenseChildren\n};\nconst Suspense = SuspenseImpl ;\nfunction triggerEvent(vnode, name) {\n  const eventListener = vnode.props && vnode.props[name];\n  if (isFunction(eventListener)) {\n    eventListener();\n  }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n  const {\n    p: patch,\n    o: { createElement }\n  } = rendererInternals;\n  const hiddenContainer = createElement(\"div\");\n  const suspense = vnode.suspense = createSuspenseBoundary(\n    vnode,\n    parentSuspense,\n    parentComponent,\n    container,\n    hiddenContainer,\n    anchor,\n    namespace,\n    slotScopeIds,\n    optimized,\n    rendererInternals\n  );\n  patch(\n    null,\n    suspense.pendingBranch = vnode.ssContent,\n    hiddenContainer,\n    null,\n    parentComponent,\n    suspense,\n    namespace,\n    slotScopeIds\n  );\n  if (suspense.deps > 0) {\n    triggerEvent(vnode, \"onPending\");\n    triggerEvent(vnode, \"onFallback\");\n    patch(\n      null,\n      vnode.ssFallback,\n      container,\n      anchor,\n      parentComponent,\n      null,\n      // fallback tree will not have suspense context\n      namespace,\n      slotScopeIds\n    );\n    setActiveBranch(suspense, vnode.ssFallback);\n  } else {\n    suspense.resolve(false, true);\n  }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n  const suspense = n2.suspense = n1.suspense;\n  suspense.vnode = n2;\n  n2.el = n1.el;\n  const newBranch = n2.ssContent;\n  const newFallback = n2.ssFallback;\n  const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n  if (pendingBranch) {\n    suspense.pendingBranch = newBranch;\n    if (isSameVNodeType(newBranch, pendingBranch)) {\n      patch(\n        pendingBranch,\n        newBranch,\n        suspense.hiddenContainer,\n        null,\n        parentComponent,\n        suspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n      if (suspense.deps <= 0) {\n        suspense.resolve();\n      } else if (isInFallback) {\n        if (!isHydrating) {\n          patch(\n            activeBranch,\n            newFallback,\n            container,\n            anchor,\n            parentComponent,\n            null,\n            // fallback tree will not have suspense context\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          setActiveBranch(suspense, newFallback);\n        }\n      }\n    } else {\n      suspense.pendingId = suspenseId++;\n      if (isHydrating) {\n        suspense.isHydrating = false;\n        suspense.activeBranch = pendingBranch;\n      } else {\n        unmount(pendingBranch, parentComponent, suspense);\n      }\n      suspense.deps = 0;\n      suspense.effects.length = 0;\n      suspense.hiddenContainer = createElement(\"div\");\n      if (isInFallback) {\n        patch(\n          null,\n          newBranch,\n          suspense.hiddenContainer,\n          null,\n          parentComponent,\n          suspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        if (suspense.deps <= 0) {\n          suspense.resolve();\n        } else {\n          patch(\n            activeBranch,\n            newFallback,\n            container,\n            anchor,\n            parentComponent,\n            null,\n            // fallback tree will not have suspense context\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          setActiveBranch(suspense, newFallback);\n        }\n      } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n        patch(\n          activeBranch,\n          newBranch,\n          container,\n          anchor,\n          parentComponent,\n          suspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        suspense.resolve(true);\n      } else {\n        patch(\n          null,\n          newBranch,\n          suspense.hiddenContainer,\n          null,\n          parentComponent,\n          suspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        if (suspense.deps <= 0) {\n          suspense.resolve();\n        }\n      }\n    }\n  } else {\n    if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n      patch(\n        activeBranch,\n        newBranch,\n        container,\n        anchor,\n        parentComponent,\n        suspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n      setActiveBranch(suspense, newBranch);\n    } else {\n      triggerEvent(n2, \"onPending\");\n      suspense.pendingBranch = newBranch;\n      if (newBranch.shapeFlag & 512) {\n        suspense.pendingId = newBranch.component.suspenseId;\n      } else {\n        suspense.pendingId = suspenseId++;\n      }\n      patch(\n        null,\n        newBranch,\n        suspense.hiddenContainer,\n        null,\n        parentComponent,\n        suspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n      if (suspense.deps <= 0) {\n        suspense.resolve();\n      } else {\n        const { timeout, pendingId } = suspense;\n        if (timeout > 0) {\n          setTimeout(() => {\n            if (suspense.pendingId === pendingId) {\n              suspense.fallback(newFallback);\n            }\n          }, timeout);\n        } else if (timeout === 0) {\n          suspense.fallback(newFallback);\n        }\n      }\n    }\n  }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n  if (!!(process.env.NODE_ENV !== \"production\") && true && !hasWarned) {\n    hasWarned = true;\n    console[console.info ? \"info\" : \"log\"](\n      `<Suspense> is an experimental feature and its API will likely change.`\n    );\n  }\n  const {\n    p: patch,\n    m: move,\n    um: unmount,\n    n: next,\n    o: { parentNode, remove }\n  } = rendererInternals;\n  let parentSuspenseId;\n  const isSuspensible = isVNodeSuspensible(vnode);\n  if (isSuspensible) {\n    if (parentSuspense == null ? void 0 : parentSuspense.pendingBranch) {\n      parentSuspenseId = parentSuspense.pendingId;\n      parentSuspense.deps++;\n    }\n  }\n  const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    assertNumber(timeout, `Suspense timeout`);\n  }\n  const initialAnchor = anchor;\n  const suspense = {\n    vnode,\n    parent: parentSuspense,\n    parentComponent,\n    namespace,\n    container,\n    hiddenContainer,\n    deps: 0,\n    pendingId: suspenseId++,\n    timeout: typeof timeout === \"number\" ? timeout : -1,\n    activeBranch: null,\n    pendingBranch: null,\n    isInFallback: !isHydrating,\n    isHydrating,\n    isUnmounted: false,\n    effects: [],\n    resolve(resume = false, sync = false) {\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        if (!resume && !suspense.pendingBranch) {\n          throw new Error(\n            `suspense.resolve() is called without a pending branch.`\n          );\n        }\n        if (suspense.isUnmounted) {\n          throw new Error(\n            `suspense.resolve() is called on an already unmounted suspense boundary.`\n          );\n        }\n      }\n      const {\n        vnode: vnode2,\n        activeBranch,\n        pendingBranch,\n        pendingId,\n        effects,\n        parentComponent: parentComponent2,\n        container: container2\n      } = suspense;\n      let delayEnter = false;\n      if (suspense.isHydrating) {\n        suspense.isHydrating = false;\n      } else if (!resume) {\n        delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === \"out-in\";\n        if (delayEnter) {\n          activeBranch.transition.afterLeave = () => {\n            if (pendingId === suspense.pendingId) {\n              move(\n                pendingBranch,\n                container2,\n                anchor === initialAnchor ? next(activeBranch) : anchor,\n                0\n              );\n              queuePostFlushCb(effects);\n            }\n          };\n        }\n        if (activeBranch) {\n          if (parentNode(activeBranch.el) !== suspense.hiddenContainer) {\n            anchor = next(activeBranch);\n          }\n          unmount(activeBranch, parentComponent2, suspense, true);\n        }\n        if (!delayEnter) {\n          move(pendingBranch, container2, anchor, 0);\n        }\n      }\n      setActiveBranch(suspense, pendingBranch);\n      suspense.pendingBranch = null;\n      suspense.isInFallback = false;\n      let parent = suspense.parent;\n      let hasUnresolvedAncestor = false;\n      while (parent) {\n        if (parent.pendingBranch) {\n          parent.effects.push(...effects);\n          hasUnresolvedAncestor = true;\n          break;\n        }\n        parent = parent.parent;\n      }\n      if (!hasUnresolvedAncestor && !delayEnter) {\n        queuePostFlushCb(effects);\n      }\n      suspense.effects = [];\n      if (isSuspensible) {\n        if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {\n          parentSuspense.deps--;\n          if (parentSuspense.deps === 0 && !sync) {\n            parentSuspense.resolve();\n          }\n        }\n      }\n      triggerEvent(vnode2, \"onResolve\");\n    },\n    fallback(fallbackVNode) {\n      if (!suspense.pendingBranch) {\n        return;\n      }\n      const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense;\n      triggerEvent(vnode2, \"onFallback\");\n      const anchor2 = next(activeBranch);\n      const mountFallback = () => {\n        if (!suspense.isInFallback) {\n          return;\n        }\n        patch(\n          null,\n          fallbackVNode,\n          container2,\n          anchor2,\n          parentComponent2,\n          null,\n          // fallback tree will not have suspense context\n          namespace2,\n          slotScopeIds,\n          optimized\n        );\n        setActiveBranch(suspense, fallbackVNode);\n      };\n      const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === \"out-in\";\n      if (delayEnter) {\n        activeBranch.transition.afterLeave = mountFallback;\n      }\n      suspense.isInFallback = true;\n      unmount(\n        activeBranch,\n        parentComponent2,\n        null,\n        // no suspense so unmount hooks fire now\n        true\n        // shouldRemove\n      );\n      if (!delayEnter) {\n        mountFallback();\n      }\n    },\n    move(container2, anchor2, type) {\n      suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type);\n      suspense.container = container2;\n    },\n    next() {\n      return suspense.activeBranch && next(suspense.activeBranch);\n    },\n    registerDep(instance, setupRenderEffect) {\n      const isInPendingSuspense = !!suspense.pendingBranch;\n      if (isInPendingSuspense) {\n        suspense.deps++;\n      }\n      const hydratedEl = instance.vnode.el;\n      instance.asyncDep.catch((err) => {\n        handleError(err, instance, 0);\n      }).then((asyncSetupResult) => {\n        if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {\n          return;\n        }\n        instance.asyncResolved = true;\n        const { vnode: vnode2 } = instance;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          pushWarningContext(vnode2);\n        }\n        handleSetupResult(instance, asyncSetupResult, false);\n        if (hydratedEl) {\n          vnode2.el = hydratedEl;\n        }\n        const placeholder = !hydratedEl && instance.subTree.el;\n        setupRenderEffect(\n          instance,\n          vnode2,\n          // component may have been moved before resolve.\n          // if this is not a hydration, instance.subTree will be the comment\n          // placeholder.\n          parentNode(hydratedEl || instance.subTree.el),\n          // anchor will not be used if this is hydration, so only need to\n          // consider the comment placeholder case.\n          hydratedEl ? null : next(instance.subTree),\n          suspense,\n          namespace,\n          optimized\n        );\n        if (placeholder) {\n          remove(placeholder);\n        }\n        updateHOCHostEl(instance, vnode2.el);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          popWarningContext();\n        }\n        if (isInPendingSuspense && --suspense.deps === 0) {\n          suspense.resolve();\n        }\n      });\n    },\n    unmount(parentSuspense2, doRemove) {\n      suspense.isUnmounted = true;\n      if (suspense.activeBranch) {\n        unmount(\n          suspense.activeBranch,\n          parentComponent,\n          parentSuspense2,\n          doRemove\n        );\n      }\n      if (suspense.pendingBranch) {\n        unmount(\n          suspense.pendingBranch,\n          parentComponent,\n          parentSuspense2,\n          doRemove\n        );\n      }\n    }\n  };\n  return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n  const suspense = vnode.suspense = createSuspenseBoundary(\n    vnode,\n    parentSuspense,\n    parentComponent,\n    node.parentNode,\n    // eslint-disable-next-line no-restricted-globals\n    document.createElement(\"div\"),\n    null,\n    namespace,\n    slotScopeIds,\n    optimized,\n    rendererInternals,\n    true\n  );\n  const result = hydrateNode(\n    node,\n    suspense.pendingBranch = vnode.ssContent,\n    parentComponent,\n    suspense,\n    slotScopeIds,\n    optimized\n  );\n  if (suspense.deps === 0) {\n    suspense.resolve(false, true);\n  }\n  return result;\n}\nfunction normalizeSuspenseChildren(vnode) {\n  const { shapeFlag, children } = vnode;\n  const isSlotChildren = shapeFlag & 32;\n  vnode.ssContent = normalizeSuspenseSlot(\n    isSlotChildren ? children.default : children\n  );\n  vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n  let block;\n  if (isFunction(s)) {\n    const trackBlock = isBlockTreeEnabled && s._c;\n    if (trackBlock) {\n      s._d = false;\n      openBlock();\n    }\n    s = s();\n    if (trackBlock) {\n      s._d = true;\n      block = currentBlock;\n      closeBlock();\n    }\n  }\n  if (isArray(s)) {\n    const singleChild = filterSingleRoot(s);\n    if (!!(process.env.NODE_ENV !== \"production\") && !singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) {\n      warn$1(`<Suspense> slots expect a single root node.`);\n    }\n    s = singleChild;\n  }\n  s = normalizeVNode(s);\n  if (block && !s.dynamicChildren) {\n    s.dynamicChildren = block.filter((c) => c !== s);\n  }\n  return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n  if (suspense && suspense.pendingBranch) {\n    if (isArray(fn)) {\n      suspense.effects.push(...fn);\n    } else {\n      suspense.effects.push(fn);\n    }\n  } else {\n    queuePostFlushCb(fn);\n  }\n}\nfunction setActiveBranch(suspense, branch) {\n  suspense.activeBranch = branch;\n  const { vnode, parentComponent } = suspense;\n  let el = branch.el;\n  while (!el && branch.component) {\n    branch = branch.component.subTree;\n    el = branch.el;\n  }\n  vnode.el = el;\n  if (parentComponent && parentComponent.subTree === vnode) {\n    parentComponent.vnode.el = el;\n    updateHOCHostEl(parentComponent, el);\n  }\n}\nfunction isVNodeSuspensible(vnode) {\n  var _a;\n  return ((_a = vnode.props) == null ? void 0 : _a.suspensible) != null && vnode.props.suspensible !== false;\n}\n\nconst ssrContextKey = Symbol.for(\"v-scx\");\nconst useSSRContext = () => {\n  {\n    const ctx = inject(ssrContextKey);\n    if (!ctx) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(\n        `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`\n      );\n    }\n    return ctx;\n  }\n};\n\nfunction watchEffect(effect, options) {\n  return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n  return doWatch(\n    effect,\n    null,\n    !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"post\" }) : { flush: \"post\" }\n  );\n}\nfunction watchSyncEffect(effect, options) {\n  return doWatch(\n    effect,\n    null,\n    !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"sync\" }) : { flush: \"sync\" }\n  );\n}\nconst INITIAL_WATCHER_VALUE = {};\nfunction watch(source, cb, options) {\n  if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(cb)) {\n    warn$1(\n      `\\`watch(fn, options?)\\` signature has been moved to a separate API. Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only supports \\`watch(source, cb, options?) signature.`\n    );\n  }\n  return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, {\n  immediate,\n  deep,\n  flush,\n  once,\n  onTrack,\n  onTrigger\n} = EMPTY_OBJ) {\n  if (cb && once) {\n    const _cb = cb;\n    cb = (...args) => {\n      _cb(...args);\n      unwatch();\n    };\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && deep !== void 0 && typeof deep === \"number\") {\n    warn$1(\n      `watch() \"deep\" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.`\n    );\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && !cb) {\n    if (immediate !== void 0) {\n      warn$1(\n        `watch() \"immediate\" option is only respected when using the watch(source, callback, options?) signature.`\n      );\n    }\n    if (deep !== void 0) {\n      warn$1(\n        `watch() \"deep\" option is only respected when using the watch(source, callback, options?) signature.`\n      );\n    }\n    if (once !== void 0) {\n      warn$1(\n        `watch() \"once\" option is only respected when using the watch(source, callback, options?) signature.`\n      );\n    }\n  }\n  const warnInvalidSource = (s) => {\n    warn$1(\n      `Invalid watch source: `,\n      s,\n      `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n    );\n  };\n  const instance = currentInstance;\n  const reactiveGetter = (source2) => deep === true ? source2 : (\n    // for deep: false, only traverse root-level properties\n    traverse(source2, deep === false ? 1 : void 0)\n  );\n  let getter;\n  let forceTrigger = false;\n  let isMultiSource = false;\n  if (isRef(source)) {\n    getter = () => source.value;\n    forceTrigger = isShallow(source);\n  } else if (isReactive(source)) {\n    getter = () => reactiveGetter(source);\n    forceTrigger = true;\n  } else if (isArray(source)) {\n    isMultiSource = true;\n    forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n    getter = () => source.map((s) => {\n      if (isRef(s)) {\n        return s.value;\n      } else if (isReactive(s)) {\n        return reactiveGetter(s);\n      } else if (isFunction(s)) {\n        return callWithErrorHandling(s, instance, 2);\n      } else {\n        !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n      }\n    });\n  } else if (isFunction(source)) {\n    if (cb) {\n      getter = () => callWithErrorHandling(source, instance, 2);\n    } else {\n      getter = () => {\n        if (cleanup) {\n          cleanup();\n        }\n        return callWithAsyncErrorHandling(\n          source,\n          instance,\n          3,\n          [onCleanup]\n        );\n      };\n    }\n  } else {\n    getter = NOOP;\n    !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n  }\n  if (cb && deep) {\n    const baseGetter = getter;\n    getter = () => traverse(baseGetter());\n  }\n  let cleanup;\n  let onCleanup = (fn) => {\n    cleanup = effect.onStop = () => {\n      callWithErrorHandling(fn, instance, 4);\n      cleanup = effect.onStop = void 0;\n    };\n  };\n  let ssrCleanup;\n  if (isInSSRComponentSetup) {\n    onCleanup = NOOP;\n    if (!cb) {\n      getter();\n    } else if (immediate) {\n      callWithAsyncErrorHandling(cb, instance, 3, [\n        getter(),\n        isMultiSource ? [] : void 0,\n        onCleanup\n      ]);\n    }\n    if (flush === \"sync\") {\n      const ctx = useSSRContext();\n      ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n    } else {\n      return NOOP;\n    }\n  }\n  let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n  const job = () => {\n    if (!effect.active || !effect.dirty) {\n      return;\n    }\n    if (cb) {\n      const newValue = effect.run();\n      if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || false) {\n        if (cleanup) {\n          cleanup();\n        }\n        callWithAsyncErrorHandling(cb, instance, 3, [\n          newValue,\n          // pass undefined as the old value when it's changed for the first time\n          oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n          onCleanup\n        ]);\n        oldValue = newValue;\n      }\n    } else {\n      effect.run();\n    }\n  };\n  job.allowRecurse = !!cb;\n  let scheduler;\n  if (flush === \"sync\") {\n    scheduler = job;\n  } else if (flush === \"post\") {\n    scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\n  } else {\n    job.pre = true;\n    if (instance)\n      job.id = instance.uid;\n    scheduler = () => queueJob(job);\n  }\n  const effect = new ReactiveEffect(getter, NOOP, scheduler);\n  const scope = getCurrentScope();\n  const unwatch = () => {\n    effect.stop();\n    if (scope) {\n      remove(scope.effects, effect);\n    }\n  };\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    effect.onTrack = onTrack;\n    effect.onTrigger = onTrigger;\n  }\n  if (cb) {\n    if (immediate) {\n      job();\n    } else {\n      oldValue = effect.run();\n    }\n  } else if (flush === \"post\") {\n    queuePostRenderEffect(\n      effect.run.bind(effect),\n      instance && instance.suspense\n    );\n  } else {\n    effect.run();\n  }\n  if (ssrCleanup)\n    ssrCleanup.push(unwatch);\n  return unwatch;\n}\nfunction instanceWatch(source, value, options) {\n  const publicThis = this.proxy;\n  const getter = isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n  let cb;\n  if (isFunction(value)) {\n    cb = value;\n  } else {\n    cb = value.handler;\n    options = value;\n  }\n  const reset = setCurrentInstance(this);\n  const res = doWatch(getter, cb.bind(publicThis), options);\n  reset();\n  return res;\n}\nfunction createPathGetter(ctx, path) {\n  const segments = path.split(\".\");\n  return () => {\n    let cur = ctx;\n    for (let i = 0; i < segments.length && cur; i++) {\n      cur = cur[segments[i]];\n    }\n    return cur;\n  };\n}\nfunction traverse(value, depth, currentDepth = 0, seen) {\n  if (!isObject(value) || value[\"__v_skip\"]) {\n    return value;\n  }\n  if (depth && depth > 0) {\n    if (currentDepth >= depth) {\n      return value;\n    }\n    currentDepth++;\n  }\n  seen = seen || /* @__PURE__ */ new Set();\n  if (seen.has(value)) {\n    return value;\n  }\n  seen.add(value);\n  if (isRef(value)) {\n    traverse(value.value, depth, currentDepth, seen);\n  } else if (isArray(value)) {\n    for (let i = 0; i < value.length; i++) {\n      traverse(value[i], depth, currentDepth, seen);\n    }\n  } else if (isSet(value) || isMap(value)) {\n    value.forEach((v) => {\n      traverse(v, depth, currentDepth, seen);\n    });\n  } else if (isPlainObject(value)) {\n    for (const key in value) {\n      traverse(value[key], depth, currentDepth, seen);\n    }\n  }\n  return value;\n}\n\nfunction validateDirectiveName(name) {\n  if (isBuiltInDirective(name)) {\n    warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n  }\n}\nfunction withDirectives(vnode, directives) {\n  if (currentRenderingInstance === null) {\n    !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n    return vnode;\n  }\n  const instance = getExposeProxy(currentRenderingInstance) || currentRenderingInstance.proxy;\n  const bindings = vnode.dirs || (vnode.dirs = []);\n  for (let i = 0; i < directives.length; i++) {\n    let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n    if (dir) {\n      if (isFunction(dir)) {\n        dir = {\n          mounted: dir,\n          updated: dir\n        };\n      }\n      if (dir.deep) {\n        traverse(value);\n      }\n      bindings.push({\n        dir,\n        instance,\n        value,\n        oldValue: void 0,\n        arg,\n        modifiers\n      });\n    }\n  }\n  return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n  const bindings = vnode.dirs;\n  const oldBindings = prevVNode && prevVNode.dirs;\n  for (let i = 0; i < bindings.length; i++) {\n    const binding = bindings[i];\n    if (oldBindings) {\n      binding.oldValue = oldBindings[i].value;\n    }\n    let hook = binding.dir[name];\n    if (hook) {\n      pauseTracking();\n      callWithAsyncErrorHandling(hook, instance, 8, [\n        vnode.el,\n        binding,\n        vnode,\n        prevVNode\n      ]);\n      resetTracking();\n    }\n  }\n}\n\nconst leaveCbKey = Symbol(\"_leaveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nfunction useTransitionState() {\n  const state = {\n    isMounted: false,\n    isLeaving: false,\n    isUnmounting: false,\n    leavingVNodes: /* @__PURE__ */ new Map()\n  };\n  onMounted(() => {\n    state.isMounted = true;\n  });\n  onBeforeUnmount(() => {\n    state.isUnmounting = true;\n  });\n  return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n  mode: String,\n  appear: Boolean,\n  persisted: Boolean,\n  // enter\n  onBeforeEnter: TransitionHookValidator,\n  onEnter: TransitionHookValidator,\n  onAfterEnter: TransitionHookValidator,\n  onEnterCancelled: TransitionHookValidator,\n  // leave\n  onBeforeLeave: TransitionHookValidator,\n  onLeave: TransitionHookValidator,\n  onAfterLeave: TransitionHookValidator,\n  onLeaveCancelled: TransitionHookValidator,\n  // appear\n  onBeforeAppear: TransitionHookValidator,\n  onAppear: TransitionHookValidator,\n  onAfterAppear: TransitionHookValidator,\n  onAppearCancelled: TransitionHookValidator\n};\nconst BaseTransitionImpl = {\n  name: `BaseTransition`,\n  props: BaseTransitionPropsValidators,\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const state = useTransitionState();\n    return () => {\n      const children = slots.default && getTransitionRawChildren(slots.default(), true);\n      if (!children || !children.length) {\n        return;\n      }\n      let child = children[0];\n      if (children.length > 1) {\n        let hasFound = false;\n        for (const c of children) {\n          if (c.type !== Comment) {\n            if (!!(process.env.NODE_ENV !== \"production\") && hasFound) {\n              warn$1(\n                \"<transition> can only be used on a single element or component. Use <transition-group> for lists.\"\n              );\n              break;\n            }\n            child = c;\n            hasFound = true;\n            if (!!!(process.env.NODE_ENV !== \"production\"))\n              break;\n          }\n        }\n      }\n      const rawProps = toRaw(props);\n      const { mode } = rawProps;\n      if (!!(process.env.NODE_ENV !== \"production\") && mode && mode !== \"in-out\" && mode !== \"out-in\" && mode !== \"default\") {\n        warn$1(`invalid <transition> mode: ${mode}`);\n      }\n      if (state.isLeaving) {\n        return emptyPlaceholder(child);\n      }\n      const innerChild = getKeepAliveChild(child);\n      if (!innerChild) {\n        return emptyPlaceholder(child);\n      }\n      const enterHooks = resolveTransitionHooks(\n        innerChild,\n        rawProps,\n        state,\n        instance\n      );\n      setTransitionHooks(innerChild, enterHooks);\n      const oldChild = instance.subTree;\n      const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n      if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild)) {\n        const leavingHooks = resolveTransitionHooks(\n          oldInnerChild,\n          rawProps,\n          state,\n          instance\n        );\n        setTransitionHooks(oldInnerChild, leavingHooks);\n        if (mode === \"out-in\") {\n          state.isLeaving = true;\n          leavingHooks.afterLeave = () => {\n            state.isLeaving = false;\n            if (instance.update.active !== false) {\n              instance.effect.dirty = true;\n              instance.update();\n            }\n          };\n          return emptyPlaceholder(child);\n        } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n          leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n            const leavingVNodesCache = getLeavingNodesForType(\n              state,\n              oldInnerChild\n            );\n            leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n            el[leaveCbKey] = () => {\n              earlyRemove();\n              el[leaveCbKey] = void 0;\n              delete enterHooks.delayedLeave;\n            };\n            enterHooks.delayedLeave = delayedLeave;\n          };\n        }\n      }\n      return child;\n    };\n  }\n};\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n  const { leavingVNodes } = state;\n  let leavingVNodesCache = leavingVNodes.get(vnode.type);\n  if (!leavingVNodesCache) {\n    leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n    leavingVNodes.set(vnode.type, leavingVNodesCache);\n  }\n  return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance) {\n  const {\n    appear,\n    mode,\n    persisted = false,\n    onBeforeEnter,\n    onEnter,\n    onAfterEnter,\n    onEnterCancelled,\n    onBeforeLeave,\n    onLeave,\n    onAfterLeave,\n    onLeaveCancelled,\n    onBeforeAppear,\n    onAppear,\n    onAfterAppear,\n    onAppearCancelled\n  } = props;\n  const key = String(vnode.key);\n  const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n  const callHook = (hook, args) => {\n    hook && callWithAsyncErrorHandling(\n      hook,\n      instance,\n      9,\n      args\n    );\n  };\n  const callAsyncHook = (hook, args) => {\n    const done = args[1];\n    callHook(hook, args);\n    if (isArray(hook)) {\n      if (hook.every((hook2) => hook2.length <= 1))\n        done();\n    } else if (hook.length <= 1) {\n      done();\n    }\n  };\n  const hooks = {\n    mode,\n    persisted,\n    beforeEnter(el) {\n      let hook = onBeforeEnter;\n      if (!state.isMounted) {\n        if (appear) {\n          hook = onBeforeAppear || onBeforeEnter;\n        } else {\n          return;\n        }\n      }\n      if (el[leaveCbKey]) {\n        el[leaveCbKey](\n          true\n          /* cancelled */\n        );\n      }\n      const leavingVNode = leavingVNodesCache[key];\n      if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {\n        leavingVNode.el[leaveCbKey]();\n      }\n      callHook(hook, [el]);\n    },\n    enter(el) {\n      let hook = onEnter;\n      let afterHook = onAfterEnter;\n      let cancelHook = onEnterCancelled;\n      if (!state.isMounted) {\n        if (appear) {\n          hook = onAppear || onEnter;\n          afterHook = onAfterAppear || onAfterEnter;\n          cancelHook = onAppearCancelled || onEnterCancelled;\n        } else {\n          return;\n        }\n      }\n      let called = false;\n      const done = el[enterCbKey] = (cancelled) => {\n        if (called)\n          return;\n        called = true;\n        if (cancelled) {\n          callHook(cancelHook, [el]);\n        } else {\n          callHook(afterHook, [el]);\n        }\n        if (hooks.delayedLeave) {\n          hooks.delayedLeave();\n        }\n        el[enterCbKey] = void 0;\n      };\n      if (hook) {\n        callAsyncHook(hook, [el, done]);\n      } else {\n        done();\n      }\n    },\n    leave(el, remove) {\n      const key2 = String(vnode.key);\n      if (el[enterCbKey]) {\n        el[enterCbKey](\n          true\n          /* cancelled */\n        );\n      }\n      if (state.isUnmounting) {\n        return remove();\n      }\n      callHook(onBeforeLeave, [el]);\n      let called = false;\n      const done = el[leaveCbKey] = (cancelled) => {\n        if (called)\n          return;\n        called = true;\n        remove();\n        if (cancelled) {\n          callHook(onLeaveCancelled, [el]);\n        } else {\n          callHook(onAfterLeave, [el]);\n        }\n        el[leaveCbKey] = void 0;\n        if (leavingVNodesCache[key2] === vnode) {\n          delete leavingVNodesCache[key2];\n        }\n      };\n      leavingVNodesCache[key2] = vnode;\n      if (onLeave) {\n        callAsyncHook(onLeave, [el, done]);\n      } else {\n        done();\n      }\n    },\n    clone(vnode2) {\n      return resolveTransitionHooks(vnode2, props, state, instance);\n    }\n  };\n  return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n  if (isKeepAlive(vnode)) {\n    vnode = cloneVNode(vnode);\n    vnode.children = null;\n    return vnode;\n  }\n}\nfunction getKeepAliveChild(vnode) {\n  return isKeepAlive(vnode) ? (\n    // #7121 ensure get the child component subtree in case\n    // it's been replaced during HMR\n    !!(process.env.NODE_ENV !== \"production\") && vnode.component ? vnode.component.subTree : vnode.children ? vnode.children[0] : void 0\n  ) : vnode;\n}\nfunction setTransitionHooks(vnode, hooks) {\n  if (vnode.shapeFlag & 6 && vnode.component) {\n    setTransitionHooks(vnode.component.subTree, hooks);\n  } else if (vnode.shapeFlag & 128) {\n    vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n    vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n  } else {\n    vnode.transition = hooks;\n  }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n  let ret = [];\n  let keyedFragmentCount = 0;\n  for (let i = 0; i < children.length; i++) {\n    let child = children[i];\n    const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n    if (child.type === Fragment) {\n      if (child.patchFlag & 128)\n        keyedFragmentCount++;\n      ret = ret.concat(\n        getTransitionRawChildren(child.children, keepComment, key)\n      );\n    } else if (keepComment || child.type !== Comment) {\n      ret.push(key != null ? cloneVNode(child, { key }) : child);\n    }\n  }\n  if (keyedFragmentCount > 1) {\n    for (let i = 0; i < ret.length; i++) {\n      ret[i].patchFlag = -2;\n    }\n  }\n  return ret;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n  return isFunction(options) ? (\n    // #8326: extend call and options.name access are considered side-effects\n    // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n    /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n  ) : options;\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n  if (isFunction(source)) {\n    source = { loader: source };\n  }\n  const {\n    loader,\n    loadingComponent,\n    errorComponent,\n    delay = 200,\n    timeout,\n    // undefined = never times out\n    suspensible = true,\n    onError: userOnError\n  } = source;\n  let pendingRequest = null;\n  let resolvedComp;\n  let retries = 0;\n  const retry = () => {\n    retries++;\n    pendingRequest = null;\n    return load();\n  };\n  const load = () => {\n    let thisRequest;\n    return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n      err = err instanceof Error ? err : new Error(String(err));\n      if (userOnError) {\n        return new Promise((resolve, reject) => {\n          const userRetry = () => resolve(retry());\n          const userFail = () => reject(err);\n          userOnError(err, userRetry, userFail, retries + 1);\n        });\n      } else {\n        throw err;\n      }\n    }).then((comp) => {\n      if (thisRequest !== pendingRequest && pendingRequest) {\n        return pendingRequest;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n        warn$1(\n          `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n        );\n      }\n      if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n        comp = comp.default;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n        throw new Error(`Invalid async component load result: ${comp}`);\n      }\n      resolvedComp = comp;\n      return comp;\n    }));\n  };\n  return defineComponent({\n    name: \"AsyncComponentWrapper\",\n    __asyncLoader: load,\n    get __asyncResolved() {\n      return resolvedComp;\n    },\n    setup() {\n      const instance = currentInstance;\n      if (resolvedComp) {\n        return () => createInnerComp(resolvedComp, instance);\n      }\n      const onError = (err) => {\n        pendingRequest = null;\n        handleError(\n          err,\n          instance,\n          13,\n          !errorComponent\n        );\n      };\n      if (suspensible && instance.suspense || isInSSRComponentSetup) {\n        return load().then((comp) => {\n          return () => createInnerComp(comp, instance);\n        }).catch((err) => {\n          onError(err);\n          return () => errorComponent ? createVNode(errorComponent, {\n            error: err\n          }) : null;\n        });\n      }\n      const loaded = ref(false);\n      const error = ref();\n      const delayed = ref(!!delay);\n      if (delay) {\n        setTimeout(() => {\n          delayed.value = false;\n        }, delay);\n      }\n      if (timeout != null) {\n        setTimeout(() => {\n          if (!loaded.value && !error.value) {\n            const err = new Error(\n              `Async component timed out after ${timeout}ms.`\n            );\n            onError(err);\n            error.value = err;\n          }\n        }, timeout);\n      }\n      load().then(() => {\n        loaded.value = true;\n        if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n          instance.parent.effect.dirty = true;\n          queueJob(instance.parent.update);\n        }\n      }).catch((err) => {\n        onError(err);\n        error.value = err;\n      });\n      return () => {\n        if (loaded.value && resolvedComp) {\n          return createInnerComp(resolvedComp, instance);\n        } else if (error.value && errorComponent) {\n          return createVNode(errorComponent, {\n            error: error.value\n          });\n        } else if (loadingComponent && !delayed.value) {\n          return createVNode(loadingComponent);\n        }\n      };\n    }\n  });\n}\nfunction createInnerComp(comp, parent) {\n  const { ref: ref2, props, children, ce } = parent.vnode;\n  const vnode = createVNode(comp, props, children);\n  vnode.ref = ref2;\n  vnode.ce = ce;\n  delete parent.vnode.ce;\n  return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n  name: `KeepAlive`,\n  // Marker for special handling inside the renderer. We are not using a ===\n  // check directly on KeepAlive in the renderer, because importing it directly\n  // would prevent it from being tree-shaken.\n  __isKeepAlive: true,\n  props: {\n    include: [String, RegExp, Array],\n    exclude: [String, RegExp, Array],\n    max: [String, Number]\n  },\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const sharedContext = instance.ctx;\n    if (!sharedContext.renderer) {\n      return () => {\n        const children = slots.default && slots.default();\n        return children && children.length === 1 ? children[0] : children;\n      };\n    }\n    const cache = /* @__PURE__ */ new Map();\n    const keys = /* @__PURE__ */ new Set();\n    let current = null;\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      instance.__v_cache = cache;\n    }\n    const parentSuspense = instance.suspense;\n    const {\n      renderer: {\n        p: patch,\n        m: move,\n        um: _unmount,\n        o: { createElement }\n      }\n    } = sharedContext;\n    const storageContainer = createElement(\"div\");\n    sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {\n      const instance2 = vnode.component;\n      move(vnode, container, anchor, 0, parentSuspense);\n      patch(\n        instance2.vnode,\n        vnode,\n        container,\n        anchor,\n        instance2,\n        parentSuspense,\n        namespace,\n        vnode.slotScopeIds,\n        optimized\n      );\n      queuePostRenderEffect(() => {\n        instance2.isDeactivated = false;\n        if (instance2.a) {\n          invokeArrayFns(instance2.a);\n        }\n        const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n        if (vnodeHook) {\n          invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n        }\n      }, parentSuspense);\n      if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n        devtoolsComponentAdded(instance2);\n      }\n    };\n    sharedContext.deactivate = (vnode) => {\n      const instance2 = vnode.component;\n      move(vnode, storageContainer, null, 1, parentSuspense);\n      queuePostRenderEffect(() => {\n        if (instance2.da) {\n          invokeArrayFns(instance2.da);\n        }\n        const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n        if (vnodeHook) {\n          invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n        }\n        instance2.isDeactivated = true;\n      }, parentSuspense);\n      if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n        devtoolsComponentAdded(instance2);\n      }\n    };\n    function unmount(vnode) {\n      resetShapeFlag(vnode);\n      _unmount(vnode, instance, parentSuspense, true);\n    }\n    function pruneCache(filter) {\n      cache.forEach((vnode, key) => {\n        const name = getComponentName(vnode.type);\n        if (name && (!filter || !filter(name))) {\n          pruneCacheEntry(key);\n        }\n      });\n    }\n    function pruneCacheEntry(key) {\n      const cached = cache.get(key);\n      if (!current || !isSameVNodeType(cached, current)) {\n        unmount(cached);\n      } else if (current) {\n        resetShapeFlag(current);\n      }\n      cache.delete(key);\n      keys.delete(key);\n    }\n    watch(\n      () => [props.include, props.exclude],\n      ([include, exclude]) => {\n        include && pruneCache((name) => matches(include, name));\n        exclude && pruneCache((name) => !matches(exclude, name));\n      },\n      // prune post-render after `current` has been updated\n      { flush: \"post\", deep: true }\n    );\n    let pendingCacheKey = null;\n    const cacheSubtree = () => {\n      if (pendingCacheKey != null) {\n        cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n      }\n    };\n    onMounted(cacheSubtree);\n    onUpdated(cacheSubtree);\n    onBeforeUnmount(() => {\n      cache.forEach((cached) => {\n        const { subTree, suspense } = instance;\n        const vnode = getInnerChild(subTree);\n        if (cached.type === vnode.type && cached.key === vnode.key) {\n          resetShapeFlag(vnode);\n          const da = vnode.component.da;\n          da && queuePostRenderEffect(da, suspense);\n          return;\n        }\n        unmount(cached);\n      });\n    });\n    return () => {\n      pendingCacheKey = null;\n      if (!slots.default) {\n        return null;\n      }\n      const children = slots.default();\n      const rawVNode = children[0];\n      if (children.length > 1) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(`KeepAlive should contain exactly one component child.`);\n        }\n        current = null;\n        return children;\n      } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n        current = null;\n        return rawVNode;\n      }\n      let vnode = getInnerChild(rawVNode);\n      const comp = vnode.type;\n      const name = getComponentName(\n        isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n      );\n      const { include, exclude, max } = props;\n      if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n        current = vnode;\n        return rawVNode;\n      }\n      const key = vnode.key == null ? comp : vnode.key;\n      const cachedVNode = cache.get(key);\n      if (vnode.el) {\n        vnode = cloneVNode(vnode);\n        if (rawVNode.shapeFlag & 128) {\n          rawVNode.ssContent = vnode;\n        }\n      }\n      pendingCacheKey = key;\n      if (cachedVNode) {\n        vnode.el = cachedVNode.el;\n        vnode.component = cachedVNode.component;\n        if (vnode.transition) {\n          setTransitionHooks(vnode, vnode.transition);\n        }\n        vnode.shapeFlag |= 512;\n        keys.delete(key);\n        keys.add(key);\n      } else {\n        keys.add(key);\n        if (max && keys.size > parseInt(max, 10)) {\n          pruneCacheEntry(keys.values().next().value);\n        }\n      }\n      vnode.shapeFlag |= 256;\n      current = vnode;\n      return isSuspense(rawVNode.type) ? rawVNode : vnode;\n    };\n  }\n};\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n  if (isArray(pattern)) {\n    return pattern.some((p) => matches(p, name));\n  } else if (isString(pattern)) {\n    return pattern.split(\",\").includes(name);\n  } else if (isRegExp(pattern)) {\n    return pattern.test(name);\n  }\n  return false;\n}\nfunction onActivated(hook, target) {\n  registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n  registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n  const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n    let current = target;\n    while (current) {\n      if (current.isDeactivated) {\n        return;\n      }\n      current = current.parent;\n    }\n    return hook();\n  });\n  injectHook(type, wrappedHook, target);\n  if (target) {\n    let current = target.parent;\n    while (current && current.parent) {\n      if (isKeepAlive(current.parent.vnode)) {\n        injectToKeepAliveRoot(wrappedHook, type, target, current);\n      }\n      current = current.parent;\n    }\n  }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n  const injected = injectHook(\n    type,\n    hook,\n    keepAliveRoot,\n    true\n    /* prepend */\n  );\n  onUnmounted(() => {\n    remove(keepAliveRoot[type], injected);\n  }, target);\n}\nfunction resetShapeFlag(vnode) {\n  vnode.shapeFlag &= ~256;\n  vnode.shapeFlag &= ~512;\n}\nfunction getInnerChild(vnode) {\n  return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n  if (target) {\n    const hooks = target[type] || (target[type] = []);\n    const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n      if (target.isUnmounted) {\n        return;\n      }\n      pauseTracking();\n      const reset = setCurrentInstance(target);\n      const res = callWithAsyncErrorHandling(hook, target, type, args);\n      reset();\n      resetTracking();\n      return res;\n    });\n    if (prepend) {\n      hooks.unshift(wrappedHook);\n    } else {\n      hooks.push(wrappedHook);\n    }\n    return wrappedHook;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, \"\"));\n    warn$1(\n      `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n    );\n  }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => (\n  // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\n  (!isInSSRComponentSetup || lifecycle === \"sp\") && injectHook(lifecycle, (...args) => hook(...args), target)\n);\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\"bu\");\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\"bum\");\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\"sp\");\nconst onRenderTriggered = createHook(\n  \"rtg\"\n);\nconst onRenderTracked = createHook(\n  \"rtc\"\n);\nfunction onErrorCaptured(hook, target = currentInstance) {\n  injectHook(\"ec\", hook, target);\n}\n\nfunction renderList(source, renderItem, cache, index) {\n  let ret;\n  const cached = cache && cache[index];\n  if (isArray(source) || isString(source)) {\n    ret = new Array(source.length);\n    for (let i = 0, l = source.length; i < l; i++) {\n      ret[i] = renderItem(source[i], i, void 0, cached && cached[i]);\n    }\n  } else if (typeof source === \"number\") {\n    if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n      warn$1(`The v-for range expect an integer value but got ${source}.`);\n    }\n    ret = new Array(source);\n    for (let i = 0; i < source; i++) {\n      ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n    }\n  } else if (isObject(source)) {\n    if (source[Symbol.iterator]) {\n      ret = Array.from(\n        source,\n        (item, i) => renderItem(item, i, void 0, cached && cached[i])\n      );\n    } else {\n      const keys = Object.keys(source);\n      ret = new Array(keys.length);\n      for (let i = 0, l = keys.length; i < l; i++) {\n        const key = keys[i];\n        ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n      }\n    }\n  } else {\n    ret = [];\n  }\n  if (cache) {\n    cache[index] = ret;\n  }\n  return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n  for (let i = 0; i < dynamicSlots.length; i++) {\n    const slot = dynamicSlots[i];\n    if (isArray(slot)) {\n      for (let j = 0; j < slot.length; j++) {\n        slots[slot[j].name] = slot[j].fn;\n      }\n    } else if (slot) {\n      slots[slot.name] = slot.key ? (...args) => {\n        const res = slot.fn(...args);\n        if (res)\n          res.key = slot.key;\n        return res;\n      } : slot.fn;\n    }\n  }\n  return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n  if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) {\n    if (name !== \"default\")\n      props.name = name;\n    return createVNode(\"slot\", props, fallback && fallback());\n  }\n  let slot = slots[name];\n  if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n    warn$1(\n      `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n    );\n    slot = () => [];\n  }\n  if (slot && slot._c) {\n    slot._d = false;\n  }\n  openBlock();\n  const validSlotContent = slot && ensureValidVNode(slot(props));\n  const rendered = createBlock(\n    Fragment,\n    {\n      key: props.key || // slot content array of a dynamic conditional slot may have a branch\n      // key attached in the `createSlots` helper, respect that\n      validSlotContent && validSlotContent.key || `_${name}`\n    },\n    validSlotContent || (fallback ? fallback() : []),\n    validSlotContent && slots._ === 1 ? 64 : -2\n  );\n  if (!noSlotted && rendered.scopeId) {\n    rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n  }\n  if (slot && slot._c) {\n    slot._d = true;\n  }\n  return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n  return vnodes.some((child) => {\n    if (!isVNode(child))\n      return true;\n    if (child.type === Comment)\n      return false;\n    if (child.type === Fragment && !ensureValidVNode(child.children))\n      return false;\n    return true;\n  }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n  const ret = {};\n  if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n    warn$1(`v-on with no argument expects an object value.`);\n    return ret;\n  }\n  for (const key in obj) {\n    ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n  }\n  return ret;\n}\n\nconst getPublicInstance = (i) => {\n  if (!i)\n    return null;\n  if (isStatefulComponent(i))\n    return getExposeProxy(i) || i.proxy;\n  return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n  // Move PURE marker to new line to workaround compiler discarding it\n  // due to type annotation\n  /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n    $: (i) => i,\n    $el: (i) => i.vnode.el,\n    $data: (i) => i.data,\n    $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n    $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n    $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n    $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n    $parent: (i) => getPublicInstance(i.parent),\n    $root: (i) => getPublicInstance(i.root),\n    $emit: (i) => i.emit,\n    $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n    $forceUpdate: (i) => i.f || (i.f = () => {\n      i.effect.dirty = true;\n      queueJob(i.update);\n    }),\n    $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n    $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n  })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n  get({ _: instance }, key) {\n    const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n    if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n      return true;\n    }\n    let normalizedProps;\n    if (key[0] !== \"$\") {\n      const n = accessCache[key];\n      if (n !== void 0) {\n        switch (n) {\n          case 1 /* SETUP */:\n            return setupState[key];\n          case 2 /* DATA */:\n            return data[key];\n          case 4 /* CONTEXT */:\n            return ctx[key];\n          case 3 /* PROPS */:\n            return props[key];\n        }\n      } else if (hasSetupBinding(setupState, key)) {\n        accessCache[key] = 1 /* SETUP */;\n        return setupState[key];\n      } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n        accessCache[key] = 2 /* DATA */;\n        return data[key];\n      } else if (\n        // only cache other properties when instance has declared (thus stable)\n        // props\n        (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n      ) {\n        accessCache[key] = 3 /* PROPS */;\n        return props[key];\n      } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n        accessCache[key] = 4 /* CONTEXT */;\n        return ctx[key];\n      } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n        accessCache[key] = 0 /* OTHER */;\n      }\n    }\n    const publicGetter = publicPropertiesMap[key];\n    let cssModule, globalProperties;\n    if (publicGetter) {\n      if (key === \"$attrs\") {\n        track(instance, \"get\", key);\n        !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n      } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n        track(instance, \"get\", key);\n      }\n      return publicGetter(instance);\n    } else if (\n      // css module (injected by vue-loader)\n      (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n    ) {\n      return cssModule;\n    } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n      accessCache[key] = 4 /* CONTEXT */;\n      return ctx[key];\n    } else if (\n      // global properties\n      globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n    ) {\n      {\n        return globalProperties[key];\n      }\n    } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n    // to infinite warning loop\n    key.indexOf(\"__v\") !== 0)) {\n      if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n        warn$1(\n          `Property ${JSON.stringify(\n            key\n          )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n        );\n      } else if (instance === currentRenderingInstance) {\n        warn$1(\n          `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n        );\n      }\n    }\n  },\n  set({ _: instance }, key, value) {\n    const { data, setupState, ctx } = instance;\n    if (hasSetupBinding(setupState, key)) {\n      setupState[key] = value;\n      return true;\n    } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n      warn$1(`Cannot mutate <script setup> binding \"${key}\" from Options API.`);\n      return false;\n    } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n      data[key] = value;\n      return true;\n    } else if (hasOwn(instance.props, key)) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(`Attempting to mutate prop \"${key}\". Props are readonly.`);\n      return false;\n    }\n    if (key[0] === \"$\" && key.slice(1) in instance) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(\n        `Attempting to mutate public property \"${key}\". Properties starting with $ are reserved and readonly.`\n      );\n      return false;\n    } else {\n      if (!!(process.env.NODE_ENV !== \"production\") && key in instance.appContext.config.globalProperties) {\n        Object.defineProperty(ctx, key, {\n          enumerable: true,\n          configurable: true,\n          value\n        });\n      } else {\n        ctx[key] = value;\n      }\n    }\n    return true;\n  },\n  has({\n    _: { data, setupState, accessCache, ctx, appContext, propsOptions }\n  }, key) {\n    let normalizedProps;\n    return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key);\n  },\n  defineProperty(target, key, descriptor) {\n    if (descriptor.get != null) {\n      target._.accessCache[key] = 0;\n    } else if (hasOwn(descriptor, \"value\")) {\n      this.set(target, key, descriptor.value, null);\n    }\n    return Reflect.defineProperty(target, key, descriptor);\n  }\n};\nif (!!(process.env.NODE_ENV !== \"production\") && true) {\n  PublicInstanceProxyHandlers.ownKeys = (target) => {\n    warn$1(\n      `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.`\n    );\n    return Reflect.ownKeys(target);\n  };\n}\nconst RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ extend(\n  {},\n  PublicInstanceProxyHandlers,\n  {\n    get(target, key) {\n      if (key === Symbol.unscopables) {\n        return;\n      }\n      return PublicInstanceProxyHandlers.get(target, key, target);\n    },\n    has(_, key) {\n      const has = key[0] !== \"_\" && !isGloballyAllowed(key);\n      if (!!(process.env.NODE_ENV !== \"production\") && !has && PublicInstanceProxyHandlers.has(_, key)) {\n        warn$1(\n          `Property ${JSON.stringify(\n            key\n          )} should not start with _ which is a reserved prefix for Vue internals.`\n        );\n      }\n      return has;\n    }\n  }\n);\nfunction createDevRenderContext(instance) {\n  const target = {};\n  Object.defineProperty(target, `_`, {\n    configurable: true,\n    enumerable: false,\n    get: () => instance\n  });\n  Object.keys(publicPropertiesMap).forEach((key) => {\n    Object.defineProperty(target, key, {\n      configurable: true,\n      enumerable: false,\n      get: () => publicPropertiesMap[key](instance),\n      // intercepted by the proxy so no need for implementation,\n      // but needed to prevent set errors\n      set: NOOP\n    });\n  });\n  return target;\n}\nfunction exposePropsOnRenderContext(instance) {\n  const {\n    ctx,\n    propsOptions: [propsOptions]\n  } = instance;\n  if (propsOptions) {\n    Object.keys(propsOptions).forEach((key) => {\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => instance.props[key],\n        set: NOOP\n      });\n    });\n  }\n}\nfunction exposeSetupStateOnRenderContext(instance) {\n  const { ctx, setupState } = instance;\n  Object.keys(toRaw(setupState)).forEach((key) => {\n    if (!setupState.__isScriptSetup) {\n      if (isReservedPrefix(key[0])) {\n        warn$1(\n          `setup() return property ${JSON.stringify(\n            key\n          )} should not start with \"$\" or \"_\" which are reserved prefixes for Vue internals.`\n        );\n        return;\n      }\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => setupState[key],\n        set: NOOP\n      });\n    }\n  });\n}\n\nconst warnRuntimeUsage = (method) => warn$1(\n  `${method}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.`\n);\nfunction defineProps() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineProps`);\n  }\n  return null;\n}\nfunction defineEmits() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineEmits`);\n  }\n  return null;\n}\nfunction defineExpose(exposed) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineExpose`);\n  }\n}\nfunction defineOptions(options) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineOptions`);\n  }\n}\nfunction defineSlots() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`defineSlots`);\n  }\n  return null;\n}\nfunction defineModel() {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(\"defineModel\");\n  }\n}\nfunction withDefaults(props, defaults) {\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    warnRuntimeUsage(`withDefaults`);\n  }\n  return null;\n}\nfunction useSlots() {\n  return getContext().slots;\n}\nfunction useAttrs() {\n  return getContext().attrs;\n}\nfunction getContext() {\n  const i = getCurrentInstance();\n  if (!!(process.env.NODE_ENV !== \"production\") && !i) {\n    warn$1(`useContext() called without active instance.`);\n  }\n  return i.setupContext || (i.setupContext = createSetupContext(i));\n}\nfunction normalizePropsOrEmits(props) {\n  return isArray(props) ? props.reduce(\n    (normalized, p) => (normalized[p] = null, normalized),\n    {}\n  ) : props;\n}\nfunction mergeDefaults(raw, defaults) {\n  const props = normalizePropsOrEmits(raw);\n  for (const key in defaults) {\n    if (key.startsWith(\"__skip\"))\n      continue;\n    let opt = props[key];\n    if (opt) {\n      if (isArray(opt) || isFunction(opt)) {\n        opt = props[key] = { type: opt, default: defaults[key] };\n      } else {\n        opt.default = defaults[key];\n      }\n    } else if (opt === null) {\n      opt = props[key] = { default: defaults[key] };\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`props default key \"${key}\" has no corresponding declaration.`);\n    }\n    if (opt && defaults[`__skip_${key}`]) {\n      opt.skipFactory = true;\n    }\n  }\n  return props;\n}\nfunction mergeModels(a, b) {\n  if (!a || !b)\n    return a || b;\n  if (isArray(a) && isArray(b))\n    return a.concat(b);\n  return extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b));\n}\nfunction createPropsRestProxy(props, excludedKeys) {\n  const ret = {};\n  for (const key in props) {\n    if (!excludedKeys.includes(key)) {\n      Object.defineProperty(ret, key, {\n        enumerable: true,\n        get: () => props[key]\n      });\n    }\n  }\n  return ret;\n}\nfunction withAsyncContext(getAwaitable) {\n  const ctx = getCurrentInstance();\n  if (!!(process.env.NODE_ENV !== \"production\") && !ctx) {\n    warn$1(\n      `withAsyncContext called without active current instance. This is likely a bug.`\n    );\n  }\n  let awaitable = getAwaitable();\n  unsetCurrentInstance();\n  if (isPromise(awaitable)) {\n    awaitable = awaitable.catch((e) => {\n      setCurrentInstance(ctx);\n      throw e;\n    });\n  }\n  return [awaitable, () => setCurrentInstance(ctx)];\n}\n\nfunction createDuplicateChecker() {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (type, key) => {\n    if (cache[key]) {\n      warn$1(`${type} property \"${key}\" is already defined in ${cache[key]}.`);\n    } else {\n      cache[key] = type;\n    }\n  };\n}\nlet shouldCacheAccess = true;\nfunction applyOptions(instance) {\n  const options = resolveMergedOptions(instance);\n  const publicThis = instance.proxy;\n  const ctx = instance.ctx;\n  shouldCacheAccess = false;\n  if (options.beforeCreate) {\n    callHook(options.beforeCreate, instance, \"bc\");\n  }\n  const {\n    // state\n    data: dataOptions,\n    computed: computedOptions,\n    methods,\n    watch: watchOptions,\n    provide: provideOptions,\n    inject: injectOptions,\n    // lifecycle\n    created,\n    beforeMount,\n    mounted,\n    beforeUpdate,\n    updated,\n    activated,\n    deactivated,\n    beforeDestroy,\n    beforeUnmount,\n    destroyed,\n    unmounted,\n    render,\n    renderTracked,\n    renderTriggered,\n    errorCaptured,\n    serverPrefetch,\n    // public API\n    expose,\n    inheritAttrs,\n    // assets\n    components,\n    directives,\n    filters\n  } = options;\n  const checkDuplicateProperties = !!(process.env.NODE_ENV !== \"production\") ? createDuplicateChecker() : null;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const [propsOptions] = instance.propsOptions;\n    if (propsOptions) {\n      for (const key in propsOptions) {\n        checkDuplicateProperties(\"Props\" /* PROPS */, key);\n      }\n    }\n  }\n  if (injectOptions) {\n    resolveInjections(injectOptions, ctx, checkDuplicateProperties);\n  }\n  if (methods) {\n    for (const key in methods) {\n      const methodHandler = methods[key];\n      if (isFunction(methodHandler)) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          Object.defineProperty(ctx, key, {\n            value: methodHandler.bind(publicThis),\n            configurable: true,\n            enumerable: true,\n            writable: true\n          });\n        } else {\n          ctx[key] = methodHandler.bind(publicThis);\n        }\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          checkDuplicateProperties(\"Methods\" /* METHODS */, key);\n        }\n      } else if (!!(process.env.NODE_ENV !== \"production\")) {\n        warn$1(\n          `Method \"${key}\" has type \"${typeof methodHandler}\" in the component definition. Did you reference the function correctly?`\n        );\n      }\n    }\n  }\n  if (dataOptions) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(dataOptions)) {\n      warn$1(\n        `The data option must be a function. Plain object usage is no longer supported.`\n      );\n    }\n    const data = dataOptions.call(publicThis, publicThis);\n    if (!!(process.env.NODE_ENV !== \"production\") && isPromise(data)) {\n      warn$1(\n        `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.`\n      );\n    }\n    if (!isObject(data)) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(`data() should return an object.`);\n    } else {\n      instance.data = reactive(data);\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        for (const key in data) {\n          checkDuplicateProperties(\"Data\" /* DATA */, key);\n          if (!isReservedPrefix(key[0])) {\n            Object.defineProperty(ctx, key, {\n              configurable: true,\n              enumerable: true,\n              get: () => data[key],\n              set: NOOP\n            });\n          }\n        }\n      }\n    }\n  }\n  shouldCacheAccess = true;\n  if (computedOptions) {\n    for (const key in computedOptions) {\n      const opt = computedOptions[key];\n      const get = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;\n      if (!!(process.env.NODE_ENV !== \"production\") && get === NOOP) {\n        warn$1(`Computed property \"${key}\" has no getter.`);\n      }\n      const set = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : !!(process.env.NODE_ENV !== \"production\") ? () => {\n        warn$1(\n          `Write operation failed: computed property \"${key}\" is readonly.`\n        );\n      } : NOOP;\n      const c = computed({\n        get,\n        set\n      });\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => c.value,\n        set: (v) => c.value = v\n      });\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        checkDuplicateProperties(\"Computed\" /* COMPUTED */, key);\n      }\n    }\n  }\n  if (watchOptions) {\n    for (const key in watchOptions) {\n      createWatcher(watchOptions[key], ctx, publicThis, key);\n    }\n  }\n  if (provideOptions) {\n    const provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions;\n    Reflect.ownKeys(provides).forEach((key) => {\n      provide(key, provides[key]);\n    });\n  }\n  if (created) {\n    callHook(created, instance, \"c\");\n  }\n  function registerLifecycleHook(register, hook) {\n    if (isArray(hook)) {\n      hook.forEach((_hook) => register(_hook.bind(publicThis)));\n    } else if (hook) {\n      register(hook.bind(publicThis));\n    }\n  }\n  registerLifecycleHook(onBeforeMount, beforeMount);\n  registerLifecycleHook(onMounted, mounted);\n  registerLifecycleHook(onBeforeUpdate, beforeUpdate);\n  registerLifecycleHook(onUpdated, updated);\n  registerLifecycleHook(onActivated, activated);\n  registerLifecycleHook(onDeactivated, deactivated);\n  registerLifecycleHook(onErrorCaptured, errorCaptured);\n  registerLifecycleHook(onRenderTracked, renderTracked);\n  registerLifecycleHook(onRenderTriggered, renderTriggered);\n  registerLifecycleHook(onBeforeUnmount, beforeUnmount);\n  registerLifecycleHook(onUnmounted, unmounted);\n  registerLifecycleHook(onServerPrefetch, serverPrefetch);\n  if (isArray(expose)) {\n    if (expose.length) {\n      const exposed = instance.exposed || (instance.exposed = {});\n      expose.forEach((key) => {\n        Object.defineProperty(exposed, key, {\n          get: () => publicThis[key],\n          set: (val) => publicThis[key] = val\n        });\n      });\n    } else if (!instance.exposed) {\n      instance.exposed = {};\n    }\n  }\n  if (render && instance.render === NOOP) {\n    instance.render = render;\n  }\n  if (inheritAttrs != null) {\n    instance.inheritAttrs = inheritAttrs;\n  }\n  if (components)\n    instance.components = components;\n  if (directives)\n    instance.directives = directives;\n}\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) {\n  if (isArray(injectOptions)) {\n    injectOptions = normalizeInject(injectOptions);\n  }\n  for (const key in injectOptions) {\n    const opt = injectOptions[key];\n    let injected;\n    if (isObject(opt)) {\n      if (\"default\" in opt) {\n        injected = inject(\n          opt.from || key,\n          opt.default,\n          true\n        );\n      } else {\n        injected = inject(opt.from || key);\n      }\n    } else {\n      injected = inject(opt);\n    }\n    if (isRef(injected)) {\n      Object.defineProperty(ctx, key, {\n        enumerable: true,\n        configurable: true,\n        get: () => injected.value,\n        set: (v) => injected.value = v\n      });\n    } else {\n      ctx[key] = injected;\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      checkDuplicateProperties(\"Inject\" /* INJECT */, key);\n    }\n  }\n}\nfunction callHook(hook, instance, type) {\n  callWithAsyncErrorHandling(\n    isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy),\n    instance,\n    type\n  );\n}\nfunction createWatcher(raw, ctx, publicThis, key) {\n  const getter = key.includes(\".\") ? createPathGetter(publicThis, key) : () => publicThis[key];\n  if (isString(raw)) {\n    const handler = ctx[raw];\n    if (isFunction(handler)) {\n      watch(getter, handler);\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`Invalid watch handler specified by key \"${raw}\"`, handler);\n    }\n  } else if (isFunction(raw)) {\n    watch(getter, raw.bind(publicThis));\n  } else if (isObject(raw)) {\n    if (isArray(raw)) {\n      raw.forEach((r) => createWatcher(r, ctx, publicThis, key));\n    } else {\n      const handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];\n      if (isFunction(handler)) {\n        watch(getter, handler, raw);\n      } else if (!!(process.env.NODE_ENV !== \"production\")) {\n        warn$1(`Invalid watch handler specified by key \"${raw.handler}\"`, handler);\n      }\n    }\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(`Invalid watch option: \"${key}\"`, raw);\n  }\n}\nfunction resolveMergedOptions(instance) {\n  const base = instance.type;\n  const { mixins, extends: extendsOptions } = base;\n  const {\n    mixins: globalMixins,\n    optionsCache: cache,\n    config: { optionMergeStrategies }\n  } = instance.appContext;\n  const cached = cache.get(base);\n  let resolved;\n  if (cached) {\n    resolved = cached;\n  } else if (!globalMixins.length && !mixins && !extendsOptions) {\n    {\n      resolved = base;\n    }\n  } else {\n    resolved = {};\n    if (globalMixins.length) {\n      globalMixins.forEach(\n        (m) => mergeOptions(resolved, m, optionMergeStrategies, true)\n      );\n    }\n    mergeOptions(resolved, base, optionMergeStrategies);\n  }\n  if (isObject(base)) {\n    cache.set(base, resolved);\n  }\n  return resolved;\n}\nfunction mergeOptions(to, from, strats, asMixin = false) {\n  const { mixins, extends: extendsOptions } = from;\n  if (extendsOptions) {\n    mergeOptions(to, extendsOptions, strats, true);\n  }\n  if (mixins) {\n    mixins.forEach(\n      (m) => mergeOptions(to, m, strats, true)\n    );\n  }\n  for (const key in from) {\n    if (asMixin && key === \"expose\") {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(\n        `\"expose\" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.`\n      );\n    } else {\n      const strat = internalOptionMergeStrats[key] || strats && strats[key];\n      to[key] = strat ? strat(to[key], from[key]) : from[key];\n    }\n  }\n  return to;\n}\nconst internalOptionMergeStrats = {\n  data: mergeDataFn,\n  props: mergeEmitsOrPropsOptions,\n  emits: mergeEmitsOrPropsOptions,\n  // objects\n  methods: mergeObjectOptions,\n  computed: mergeObjectOptions,\n  // lifecycle\n  beforeCreate: mergeAsArray,\n  created: mergeAsArray,\n  beforeMount: mergeAsArray,\n  mounted: mergeAsArray,\n  beforeUpdate: mergeAsArray,\n  updated: mergeAsArray,\n  beforeDestroy: mergeAsArray,\n  beforeUnmount: mergeAsArray,\n  destroyed: mergeAsArray,\n  unmounted: mergeAsArray,\n  activated: mergeAsArray,\n  deactivated: mergeAsArray,\n  errorCaptured: mergeAsArray,\n  serverPrefetch: mergeAsArray,\n  // assets\n  components: mergeObjectOptions,\n  directives: mergeObjectOptions,\n  // watch\n  watch: mergeWatchOptions,\n  // provide / inject\n  provide: mergeDataFn,\n  inject: mergeInject\n};\nfunction mergeDataFn(to, from) {\n  if (!from) {\n    return to;\n  }\n  if (!to) {\n    return from;\n  }\n  return function mergedDataFn() {\n    return (extend)(\n      isFunction(to) ? to.call(this, this) : to,\n      isFunction(from) ? from.call(this, this) : from\n    );\n  };\n}\nfunction mergeInject(to, from) {\n  return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\n}\nfunction normalizeInject(raw) {\n  if (isArray(raw)) {\n    const res = {};\n    for (let i = 0; i < raw.length; i++) {\n      res[raw[i]] = raw[i];\n    }\n    return res;\n  }\n  return raw;\n}\nfunction mergeAsArray(to, from) {\n  return to ? [...new Set([].concat(to, from))] : from;\n}\nfunction mergeObjectOptions(to, from) {\n  return to ? extend(/* @__PURE__ */ Object.create(null), to, from) : from;\n}\nfunction mergeEmitsOrPropsOptions(to, from) {\n  if (to) {\n    if (isArray(to) && isArray(from)) {\n      return [.../* @__PURE__ */ new Set([...to, ...from])];\n    }\n    return extend(\n      /* @__PURE__ */ Object.create(null),\n      normalizePropsOrEmits(to),\n      normalizePropsOrEmits(from != null ? from : {})\n    );\n  } else {\n    return from;\n  }\n}\nfunction mergeWatchOptions(to, from) {\n  if (!to)\n    return from;\n  if (!from)\n    return to;\n  const merged = extend(/* @__PURE__ */ Object.create(null), to);\n  for (const key in from) {\n    merged[key] = mergeAsArray(to[key], from[key]);\n  }\n  return merged;\n}\n\nfunction createAppContext() {\n  return {\n    app: null,\n    config: {\n      isNativeTag: NO,\n      performance: false,\n      globalProperties: {},\n      optionMergeStrategies: {},\n      errorHandler: void 0,\n      warnHandler: void 0,\n      compilerOptions: {}\n    },\n    mixins: [],\n    components: {},\n    directives: {},\n    provides: /* @__PURE__ */ Object.create(null),\n    optionsCache: /* @__PURE__ */ new WeakMap(),\n    propsCache: /* @__PURE__ */ new WeakMap(),\n    emitsCache: /* @__PURE__ */ new WeakMap()\n  };\n}\nlet uid$1 = 0;\nfunction createAppAPI(render, hydrate) {\n  return function createApp(rootComponent, rootProps = null) {\n    if (!isFunction(rootComponent)) {\n      rootComponent = extend({}, rootComponent);\n    }\n    if (rootProps != null && !isObject(rootProps)) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(`root props passed to app.mount() must be an object.`);\n      rootProps = null;\n    }\n    const context = createAppContext();\n    const installedPlugins = /* @__PURE__ */ new WeakSet();\n    let isMounted = false;\n    const app = context.app = {\n      _uid: uid$1++,\n      _component: rootComponent,\n      _props: rootProps,\n      _container: null,\n      _context: context,\n      _instance: null,\n      version,\n      get config() {\n        return context.config;\n      },\n      set config(v) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\n            `app.config cannot be replaced. Modify individual options instead.`\n          );\n        }\n      },\n      use(plugin, ...options) {\n        if (installedPlugins.has(plugin)) {\n          !!(process.env.NODE_ENV !== \"production\") && warn$1(`Plugin has already been applied to target app.`);\n        } else if (plugin && isFunction(plugin.install)) {\n          installedPlugins.add(plugin);\n          plugin.install(app, ...options);\n        } else if (isFunction(plugin)) {\n          installedPlugins.add(plugin);\n          plugin(app, ...options);\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\n            `A plugin must either be a function or an object with an \"install\" function.`\n          );\n        }\n        return app;\n      },\n      mixin(mixin) {\n        if (__VUE_OPTIONS_API__) {\n          if (!context.mixins.includes(mixin)) {\n            context.mixins.push(mixin);\n          } else if (!!(process.env.NODE_ENV !== \"production\")) {\n            warn$1(\n              \"Mixin has already been applied to target app\" + (mixin.name ? `: ${mixin.name}` : \"\")\n            );\n          }\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\"Mixins are only available in builds supporting Options API\");\n        }\n        return app;\n      },\n      component(name, component) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          validateComponentName(name, context.config);\n        }\n        if (!component) {\n          return context.components[name];\n        }\n        if (!!(process.env.NODE_ENV !== \"production\") && context.components[name]) {\n          warn$1(`Component \"${name}\" has already been registered in target app.`);\n        }\n        context.components[name] = component;\n        return app;\n      },\n      directive(name, directive) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          validateDirectiveName(name);\n        }\n        if (!directive) {\n          return context.directives[name];\n        }\n        if (!!(process.env.NODE_ENV !== \"production\") && context.directives[name]) {\n          warn$1(`Directive \"${name}\" has already been registered in target app.`);\n        }\n        context.directives[name] = directive;\n        return app;\n      },\n      mount(rootContainer, isHydrate, namespace) {\n        if (!isMounted) {\n          if (!!(process.env.NODE_ENV !== \"production\") && rootContainer.__vue_app__) {\n            warn$1(\n              `There is already an app instance mounted on the host container.\n If you want to mount another app on the same host container, you need to unmount the previous app by calling \\`app.unmount()\\` first.`\n            );\n          }\n          const vnode = createVNode(rootComponent, rootProps);\n          vnode.appContext = context;\n          if (namespace === true) {\n            namespace = \"svg\";\n          } else if (namespace === false) {\n            namespace = void 0;\n          }\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            context.reload = () => {\n              render(\n                cloneVNode(vnode),\n                rootContainer,\n                namespace\n              );\n            };\n          }\n          if (isHydrate && hydrate) {\n            hydrate(vnode, rootContainer);\n          } else {\n            render(vnode, rootContainer, namespace);\n          }\n          isMounted = true;\n          app._container = rootContainer;\n          rootContainer.__vue_app__ = app;\n          if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n            app._instance = vnode.component;\n            devtoolsInitApp(app, version);\n          }\n          return getExposeProxy(vnode.component) || vnode.component.proxy;\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\n            `App has already been mounted.\nIf you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. \\`const createMyApp = () => createApp(App)\\``\n          );\n        }\n      },\n      unmount() {\n        if (isMounted) {\n          render(null, app._container);\n          if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n            app._instance = null;\n            devtoolsUnmountApp(app);\n          }\n          delete app._container.__vue_app__;\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(`Cannot unmount an app that is not mounted.`);\n        }\n      },\n      provide(key, value) {\n        if (!!(process.env.NODE_ENV !== \"production\") && key in context.provides) {\n          warn$1(\n            `App already provides property with key \"${String(key)}\". It will be overwritten with the new value.`\n          );\n        }\n        context.provides[key] = value;\n        return app;\n      },\n      runWithContext(fn) {\n        const lastApp = currentApp;\n        currentApp = app;\n        try {\n          return fn();\n        } finally {\n          currentApp = lastApp;\n        }\n      }\n    };\n    return app;\n  };\n}\nlet currentApp = null;\n\nfunction provide(key, value) {\n  if (!currentInstance) {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`provide() can only be used inside setup().`);\n    }\n  } else {\n    let provides = currentInstance.provides;\n    const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n    if (parentProvides === provides) {\n      provides = currentInstance.provides = Object.create(parentProvides);\n    }\n    provides[key] = value;\n  }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n  const instance = currentInstance || currentRenderingInstance;\n  if (instance || currentApp) {\n    const provides = instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : currentApp._context.provides;\n    if (provides && key in provides) {\n      return provides[key];\n    } else if (arguments.length > 1) {\n      return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(`injection \"${String(key)}\" not found.`);\n    }\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(`inject() can only be used inside setup() or functional components.`);\n  }\n}\nfunction hasInjectionContext() {\n  return !!(currentInstance || currentRenderingInstance || currentApp);\n}\n\nfunction initProps(instance, rawProps, isStateful, isSSR = false) {\n  const props = {};\n  const attrs = {};\n  def(attrs, InternalObjectKey, 1);\n  instance.propsDefaults = /* @__PURE__ */ Object.create(null);\n  setFullProps(instance, rawProps, props, attrs);\n  for (const key in instance.propsOptions[0]) {\n    if (!(key in props)) {\n      props[key] = void 0;\n    }\n  }\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    validateProps(rawProps || {}, props, instance);\n  }\n  if (isStateful) {\n    instance.props = isSSR ? props : shallowReactive(props);\n  } else {\n    if (!instance.type.props) {\n      instance.props = attrs;\n    } else {\n      instance.props = props;\n    }\n  }\n  instance.attrs = attrs;\n}\nfunction isInHmrContext(instance) {\n  while (instance) {\n    if (instance.type.__hmrId)\n      return true;\n    instance = instance.parent;\n  }\n}\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\n  const {\n    props,\n    attrs,\n    vnode: { patchFlag }\n  } = instance;\n  const rawCurrentProps = toRaw(props);\n  const [options] = instance.propsOptions;\n  let hasAttrsChanged = false;\n  if (\n    // always force full diff in dev\n    // - #1942 if hmr is enabled with sfc component\n    // - vite#872 non-sfc component used by sfc component\n    !(!!(process.env.NODE_ENV !== \"production\") && isInHmrContext(instance)) && (optimized || patchFlag > 0) && !(patchFlag & 16)\n  ) {\n    if (patchFlag & 8) {\n      const propsToUpdate = instance.vnode.dynamicProps;\n      for (let i = 0; i < propsToUpdate.length; i++) {\n        let key = propsToUpdate[i];\n        if (isEmitListener(instance.emitsOptions, key)) {\n          continue;\n        }\n        const value = rawProps[key];\n        if (options) {\n          if (hasOwn(attrs, key)) {\n            if (value !== attrs[key]) {\n              attrs[key] = value;\n              hasAttrsChanged = true;\n            }\n          } else {\n            const camelizedKey = camelize(key);\n            props[camelizedKey] = resolvePropValue(\n              options,\n              rawCurrentProps,\n              camelizedKey,\n              value,\n              instance,\n              false\n            );\n          }\n        } else {\n          if (value !== attrs[key]) {\n            attrs[key] = value;\n            hasAttrsChanged = true;\n          }\n        }\n      }\n    }\n  } else {\n    if (setFullProps(instance, rawProps, props, attrs)) {\n      hasAttrsChanged = true;\n    }\n    let kebabKey;\n    for (const key in rawCurrentProps) {\n      if (!rawProps || // for camelCase\n      !hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case\n      // and converted to camelCase (#955)\n      ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) {\n        if (options) {\n          if (rawPrevProps && // for camelCase\n          (rawPrevProps[key] !== void 0 || // for kebab-case\n          rawPrevProps[kebabKey] !== void 0)) {\n            props[key] = resolvePropValue(\n              options,\n              rawCurrentProps,\n              key,\n              void 0,\n              instance,\n              true\n            );\n          }\n        } else {\n          delete props[key];\n        }\n      }\n    }\n    if (attrs !== rawCurrentProps) {\n      for (const key in attrs) {\n        if (!rawProps || !hasOwn(rawProps, key) && true) {\n          delete attrs[key];\n          hasAttrsChanged = true;\n        }\n      }\n    }\n  }\n  if (hasAttrsChanged) {\n    trigger(instance, \"set\", \"$attrs\");\n  }\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    validateProps(rawProps || {}, props, instance);\n  }\n}\nfunction setFullProps(instance, rawProps, props, attrs) {\n  const [options, needCastKeys] = instance.propsOptions;\n  let hasAttrsChanged = false;\n  let rawCastValues;\n  if (rawProps) {\n    for (let key in rawProps) {\n      if (isReservedProp(key)) {\n        continue;\n      }\n      const value = rawProps[key];\n      let camelKey;\n      if (options && hasOwn(options, camelKey = camelize(key))) {\n        if (!needCastKeys || !needCastKeys.includes(camelKey)) {\n          props[camelKey] = value;\n        } else {\n          (rawCastValues || (rawCastValues = {}))[camelKey] = value;\n        }\n      } else if (!isEmitListener(instance.emitsOptions, key)) {\n        if (!(key in attrs) || value !== attrs[key]) {\n          attrs[key] = value;\n          hasAttrsChanged = true;\n        }\n      }\n    }\n  }\n  if (needCastKeys) {\n    const rawCurrentProps = toRaw(props);\n    const castValues = rawCastValues || EMPTY_OBJ;\n    for (let i = 0; i < needCastKeys.length; i++) {\n      const key = needCastKeys[i];\n      props[key] = resolvePropValue(\n        options,\n        rawCurrentProps,\n        key,\n        castValues[key],\n        instance,\n        !hasOwn(castValues, key)\n      );\n    }\n  }\n  return hasAttrsChanged;\n}\nfunction resolvePropValue(options, props, key, value, instance, isAbsent) {\n  const opt = options[key];\n  if (opt != null) {\n    const hasDefault = hasOwn(opt, \"default\");\n    if (hasDefault && value === void 0) {\n      const defaultValue = opt.default;\n      if (opt.type !== Function && !opt.skipFactory && isFunction(defaultValue)) {\n        const { propsDefaults } = instance;\n        if (key in propsDefaults) {\n          value = propsDefaults[key];\n        } else {\n          const reset = setCurrentInstance(instance);\n          value = propsDefaults[key] = defaultValue.call(\n            null,\n            props\n          );\n          reset();\n        }\n      } else {\n        value = defaultValue;\n      }\n    }\n    if (opt[0 /* shouldCast */]) {\n      if (isAbsent && !hasDefault) {\n        value = false;\n      } else if (opt[1 /* shouldCastTrue */] && (value === \"\" || value === hyphenate(key))) {\n        value = true;\n      }\n    }\n  }\n  return value;\n}\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\n  const cache = appContext.propsCache;\n  const cached = cache.get(comp);\n  if (cached) {\n    return cached;\n  }\n  const raw = comp.props;\n  const normalized = {};\n  const needCastKeys = [];\n  let hasExtends = false;\n  if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n    const extendProps = (raw2) => {\n      hasExtends = true;\n      const [props, keys] = normalizePropsOptions(raw2, appContext, true);\n      extend(normalized, props);\n      if (keys)\n        needCastKeys.push(...keys);\n    };\n    if (!asMixin && appContext.mixins.length) {\n      appContext.mixins.forEach(extendProps);\n    }\n    if (comp.extends) {\n      extendProps(comp.extends);\n    }\n    if (comp.mixins) {\n      comp.mixins.forEach(extendProps);\n    }\n  }\n  if (!raw && !hasExtends) {\n    if (isObject(comp)) {\n      cache.set(comp, EMPTY_ARR);\n    }\n    return EMPTY_ARR;\n  }\n  if (isArray(raw)) {\n    for (let i = 0; i < raw.length; i++) {\n      if (!!(process.env.NODE_ENV !== \"production\") && !isString(raw[i])) {\n        warn$1(`props must be strings when using array syntax.`, raw[i]);\n      }\n      const normalizedKey = camelize(raw[i]);\n      if (validatePropName(normalizedKey)) {\n        normalized[normalizedKey] = EMPTY_OBJ;\n      }\n    }\n  } else if (raw) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !isObject(raw)) {\n      warn$1(`invalid props options`, raw);\n    }\n    for (const key in raw) {\n      const normalizedKey = camelize(key);\n      if (validatePropName(normalizedKey)) {\n        const opt = raw[key];\n        const prop = normalized[normalizedKey] = isArray(opt) || isFunction(opt) ? { type: opt } : extend({}, opt);\n        if (prop) {\n          const booleanIndex = getTypeIndex(Boolean, prop.type);\n          const stringIndex = getTypeIndex(String, prop.type);\n          prop[0 /* shouldCast */] = booleanIndex > -1;\n          prop[1 /* shouldCastTrue */] = stringIndex < 0 || booleanIndex < stringIndex;\n          if (booleanIndex > -1 || hasOwn(prop, \"default\")) {\n            needCastKeys.push(normalizedKey);\n          }\n        }\n      }\n    }\n  }\n  const res = [normalized, needCastKeys];\n  if (isObject(comp)) {\n    cache.set(comp, res);\n  }\n  return res;\n}\nfunction validatePropName(key) {\n  if (key[0] !== \"$\" && !isReservedProp(key)) {\n    return true;\n  } else if (!!(process.env.NODE_ENV !== \"production\")) {\n    warn$1(`Invalid prop name: \"${key}\" is a reserved property.`);\n  }\n  return false;\n}\nfunction getType(ctor) {\n  if (ctor === null) {\n    return \"null\";\n  }\n  if (typeof ctor === \"function\") {\n    return ctor.name || \"\";\n  } else if (typeof ctor === \"object\") {\n    const name = ctor.constructor && ctor.constructor.name;\n    return name || \"\";\n  }\n  return \"\";\n}\nfunction isSameType(a, b) {\n  return getType(a) === getType(b);\n}\nfunction getTypeIndex(type, expectedTypes) {\n  if (isArray(expectedTypes)) {\n    return expectedTypes.findIndex((t) => isSameType(t, type));\n  } else if (isFunction(expectedTypes)) {\n    return isSameType(expectedTypes, type) ? 0 : -1;\n  }\n  return -1;\n}\nfunction validateProps(rawProps, props, instance) {\n  const resolvedValues = toRaw(props);\n  const options = instance.propsOptions[0];\n  for (const key in options) {\n    let opt = options[key];\n    if (opt == null)\n      continue;\n    validateProp(\n      key,\n      resolvedValues[key],\n      opt,\n      !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(resolvedValues) : resolvedValues,\n      !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key))\n    );\n  }\n}\nfunction validateProp(name, value, prop, props, isAbsent) {\n  const { type, required, validator, skipCheck } = prop;\n  if (required && isAbsent) {\n    warn$1('Missing required prop: \"' + name + '\"');\n    return;\n  }\n  if (value == null && !required) {\n    return;\n  }\n  if (type != null && type !== true && !skipCheck) {\n    let isValid = false;\n    const types = isArray(type) ? type : [type];\n    const expectedTypes = [];\n    for (let i = 0; i < types.length && !isValid; i++) {\n      const { valid, expectedType } = assertType(value, types[i]);\n      expectedTypes.push(expectedType || \"\");\n      isValid = valid;\n    }\n    if (!isValid) {\n      warn$1(getInvalidTypeMessage(name, value, expectedTypes));\n      return;\n    }\n  }\n  if (validator && !validator(value, props)) {\n    warn$1('Invalid prop: custom validator check failed for prop \"' + name + '\".');\n  }\n}\nconst isSimpleType = /* @__PURE__ */ makeMap(\n  \"String,Number,Boolean,Function,Symbol,BigInt\"\n);\nfunction assertType(value, type) {\n  let valid;\n  const expectedType = getType(type);\n  if (isSimpleType(expectedType)) {\n    const t = typeof value;\n    valid = t === expectedType.toLowerCase();\n    if (!valid && t === \"object\") {\n      valid = value instanceof type;\n    }\n  } else if (expectedType === \"Object\") {\n    valid = isObject(value);\n  } else if (expectedType === \"Array\") {\n    valid = isArray(value);\n  } else if (expectedType === \"null\") {\n    valid = value === null;\n  } else {\n    valid = value instanceof type;\n  }\n  return {\n    valid,\n    expectedType\n  };\n}\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n  if (expectedTypes.length === 0) {\n    return `Prop type [] for prop \"${name}\" won't match anything. Did you mean to use type Array instead?`;\n  }\n  let message = `Invalid prop: type check failed for prop \"${name}\". Expected ${expectedTypes.map(capitalize).join(\" | \")}`;\n  const expectedType = expectedTypes[0];\n  const receivedType = toRawType(value);\n  const expectedValue = styleValue(value, expectedType);\n  const receivedValue = styleValue(value, receivedType);\n  if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) {\n    message += ` with value ${expectedValue}`;\n  }\n  message += `, got ${receivedType} `;\n  if (isExplicable(receivedType)) {\n    message += `with value ${receivedValue}.`;\n  }\n  return message;\n}\nfunction styleValue(value, type) {\n  if (type === \"String\") {\n    return `\"${value}\"`;\n  } else if (type === \"Number\") {\n    return `${Number(value)}`;\n  } else {\n    return `${value}`;\n  }\n}\nfunction isExplicable(type) {\n  const explicitTypes = [\"string\", \"number\", \"boolean\"];\n  return explicitTypes.some((elem) => type.toLowerCase() === elem);\n}\nfunction isBoolean(...args) {\n  return args.some((elem) => elem.toLowerCase() === \"boolean\");\n}\n\nconst isInternalKey = (key) => key[0] === \"_\" || key === \"$stable\";\nconst normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];\nconst normalizeSlot = (key, rawSlot, ctx) => {\n  if (rawSlot._n) {\n    return rawSlot;\n  }\n  const normalized = withCtx((...args) => {\n    if (!!(process.env.NODE_ENV !== \"production\") && currentInstance && (!ctx || ctx.root === currentInstance.root)) {\n      warn$1(\n        `Slot \"${key}\" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.`\n      );\n    }\n    return normalizeSlotValue(rawSlot(...args));\n  }, ctx);\n  normalized._c = false;\n  return normalized;\n};\nconst normalizeObjectSlots = (rawSlots, slots, instance) => {\n  const ctx = rawSlots._ctx;\n  for (const key in rawSlots) {\n    if (isInternalKey(key))\n      continue;\n    const value = rawSlots[key];\n    if (isFunction(value)) {\n      slots[key] = normalizeSlot(key, value, ctx);\n    } else if (value != null) {\n      if (!!(process.env.NODE_ENV !== \"production\") && true) {\n        warn$1(\n          `Non-function value encountered for slot \"${key}\". Prefer function slots for better performance.`\n        );\n      }\n      const normalized = normalizeSlotValue(value);\n      slots[key] = () => normalized;\n    }\n  }\n};\nconst normalizeVNodeSlots = (instance, children) => {\n  if (!!(process.env.NODE_ENV !== \"production\") && !isKeepAlive(instance.vnode) && true) {\n    warn$1(\n      `Non-function value encountered for default slot. Prefer function slots for better performance.`\n    );\n  }\n  const normalized = normalizeSlotValue(children);\n  instance.slots.default = () => normalized;\n};\nconst initSlots = (instance, children) => {\n  if (instance.vnode.shapeFlag & 32) {\n    const type = children._;\n    if (type) {\n      instance.slots = toRaw(children);\n      def(children, \"_\", type);\n    } else {\n      normalizeObjectSlots(\n        children,\n        instance.slots = {});\n    }\n  } else {\n    instance.slots = {};\n    if (children) {\n      normalizeVNodeSlots(instance, children);\n    }\n  }\n  def(instance.slots, InternalObjectKey, 1);\n};\nconst updateSlots = (instance, children, optimized) => {\n  const { vnode, slots } = instance;\n  let needDeletionCheck = true;\n  let deletionComparisonTarget = EMPTY_OBJ;\n  if (vnode.shapeFlag & 32) {\n    const type = children._;\n    if (type) {\n      if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n        extend(slots, children);\n        trigger(instance, \"set\", \"$slots\");\n      } else if (optimized && type === 1) {\n        needDeletionCheck = false;\n      } else {\n        extend(slots, children);\n        if (!optimized && type === 1) {\n          delete slots._;\n        }\n      }\n    } else {\n      needDeletionCheck = !children.$stable;\n      normalizeObjectSlots(children, slots);\n    }\n    deletionComparisonTarget = children;\n  } else if (children) {\n    normalizeVNodeSlots(instance, children);\n    deletionComparisonTarget = { default: 1 };\n  }\n  if (needDeletionCheck) {\n    for (const key in slots) {\n      if (!isInternalKey(key) && deletionComparisonTarget[key] == null) {\n        delete slots[key];\n      }\n    }\n  }\n};\n\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n  if (isArray(rawRef)) {\n    rawRef.forEach(\n      (r, i) => setRef(\n        r,\n        oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef),\n        parentSuspense,\n        vnode,\n        isUnmount\n      )\n    );\n    return;\n  }\n  if (isAsyncWrapper(vnode) && !isUnmount) {\n    return;\n  }\n  const refValue = vnode.shapeFlag & 4 ? getExposeProxy(vnode.component) || vnode.component.proxy : vnode.el;\n  const value = isUnmount ? null : refValue;\n  const { i: owner, r: ref } = rawRef;\n  if (!!(process.env.NODE_ENV !== \"production\") && !owner) {\n    warn$1(\n      `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.`\n    );\n    return;\n  }\n  const oldRef = oldRawRef && oldRawRef.r;\n  const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;\n  const setupState = owner.setupState;\n  if (oldRef != null && oldRef !== ref) {\n    if (isString(oldRef)) {\n      refs[oldRef] = null;\n      if (hasOwn(setupState, oldRef)) {\n        setupState[oldRef] = null;\n      }\n    } else if (isRef(oldRef)) {\n      oldRef.value = null;\n    }\n  }\n  if (isFunction(ref)) {\n    callWithErrorHandling(ref, owner, 12, [value, refs]);\n  } else {\n    const _isString = isString(ref);\n    const _isRef = isRef(ref);\n    if (_isString || _isRef) {\n      const doSet = () => {\n        if (rawRef.f) {\n          const existing = _isString ? hasOwn(setupState, ref) ? setupState[ref] : refs[ref] : ref.value;\n          if (isUnmount) {\n            isArray(existing) && remove(existing, refValue);\n          } else {\n            if (!isArray(existing)) {\n              if (_isString) {\n                refs[ref] = [refValue];\n                if (hasOwn(setupState, ref)) {\n                  setupState[ref] = refs[ref];\n                }\n              } else {\n                ref.value = [refValue];\n                if (rawRef.k)\n                  refs[rawRef.k] = ref.value;\n              }\n            } else if (!existing.includes(refValue)) {\n              existing.push(refValue);\n            }\n          }\n        } else if (_isString) {\n          refs[ref] = value;\n          if (hasOwn(setupState, ref)) {\n            setupState[ref] = value;\n          }\n        } else if (_isRef) {\n          ref.value = value;\n          if (rawRef.k)\n            refs[rawRef.k] = value;\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n        }\n      };\n      if (value) {\n        doSet.id = -1;\n        queuePostRenderEffect(doSet, parentSuspense);\n      } else {\n        doSet();\n      }\n    } else if (!!(process.env.NODE_ENV !== \"production\")) {\n      warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n    }\n  }\n}\n\nlet hasMismatch = false;\nconst isSVGContainer = (container) => container.namespaceURI.includes(\"svg\") && container.tagName !== \"foreignObject\";\nconst isMathMLContainer = (container) => container.namespaceURI.includes(\"MathML\");\nconst getContainerType = (container) => {\n  if (isSVGContainer(container))\n    return \"svg\";\n  if (isMathMLContainer(container))\n    return \"mathml\";\n  return void 0;\n};\nconst isComment = (node) => node.nodeType === 8 /* COMMENT */;\nfunction createHydrationFunctions(rendererInternals) {\n  const {\n    mt: mountComponent,\n    p: patch,\n    o: {\n      patchProp,\n      createText,\n      nextSibling,\n      parentNode,\n      remove,\n      insert,\n      createComment\n    }\n  } = rendererInternals;\n  const hydrate = (vnode, container) => {\n    if (!container.hasChildNodes()) {\n      (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n        `Attempting to hydrate existing markup but container is empty. Performing full mount instead.`\n      );\n      patch(null, vnode, container);\n      flushPostFlushCbs();\n      container._vnode = vnode;\n      return;\n    }\n    hasMismatch = false;\n    hydrateNode(container.firstChild, vnode, null, null, null);\n    flushPostFlushCbs();\n    container._vnode = vnode;\n    if (hasMismatch && true) {\n      console.error(`Hydration completed but contains mismatches.`);\n    }\n  };\n  const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n    const isFragmentStart = isComment(node) && node.data === \"[\";\n    const onMismatch = () => handleMismatch(\n      node,\n      vnode,\n      parentComponent,\n      parentSuspense,\n      slotScopeIds,\n      isFragmentStart\n    );\n    const { type, ref, shapeFlag, patchFlag } = vnode;\n    let domType = node.nodeType;\n    vnode.el = node;\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      if (!(\"__vnode\" in node)) {\n        Object.defineProperty(node, \"__vnode\", {\n          value: vnode,\n          enumerable: false\n        });\n      }\n      if (!(\"__vueParentComponent\" in node)) {\n        Object.defineProperty(node, \"__vueParentComponent\", {\n          value: parentComponent,\n          enumerable: false\n        });\n      }\n    }\n    if (patchFlag === -2) {\n      optimized = false;\n      vnode.dynamicChildren = null;\n    }\n    let nextNode = null;\n    switch (type) {\n      case Text:\n        if (domType !== 3 /* TEXT */) {\n          if (vnode.children === \"\") {\n            insert(vnode.el = createText(\"\"), parentNode(node), node);\n            nextNode = node;\n          } else {\n            nextNode = onMismatch();\n          }\n        } else {\n          if (node.data !== vnode.children) {\n            hasMismatch = true;\n            (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n              `Hydration text mismatch in`,\n              node.parentNode,\n              `\n  - rendered on server: ${JSON.stringify(\n                node.data\n              )}\n  - expected on client: ${JSON.stringify(vnode.children)}`\n            );\n            node.data = vnode.children;\n          }\n          nextNode = nextSibling(node);\n        }\n        break;\n      case Comment:\n        if (isTemplateNode(node)) {\n          nextNode = nextSibling(node);\n          replaceNode(\n            vnode.el = node.content.firstChild,\n            node,\n            parentComponent\n          );\n        } else if (domType !== 8 /* COMMENT */ || isFragmentStart) {\n          nextNode = onMismatch();\n        } else {\n          nextNode = nextSibling(node);\n        }\n        break;\n      case Static:\n        if (isFragmentStart) {\n          node = nextSibling(node);\n          domType = node.nodeType;\n        }\n        if (domType === 1 /* ELEMENT */ || domType === 3 /* TEXT */) {\n          nextNode = node;\n          const needToAdoptContent = !vnode.children.length;\n          for (let i = 0; i < vnode.staticCount; i++) {\n            if (needToAdoptContent)\n              vnode.children += nextNode.nodeType === 1 /* ELEMENT */ ? nextNode.outerHTML : nextNode.data;\n            if (i === vnode.staticCount - 1) {\n              vnode.anchor = nextNode;\n            }\n            nextNode = nextSibling(nextNode);\n          }\n          return isFragmentStart ? nextSibling(nextNode) : nextNode;\n        } else {\n          onMismatch();\n        }\n        break;\n      case Fragment:\n        if (!isFragmentStart) {\n          nextNode = onMismatch();\n        } else {\n          nextNode = hydrateFragment(\n            node,\n            vnode,\n            parentComponent,\n            parentSuspense,\n            slotScopeIds,\n            optimized\n          );\n        }\n        break;\n      default:\n        if (shapeFlag & 1) {\n          if ((domType !== 1 /* ELEMENT */ || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) {\n            nextNode = onMismatch();\n          } else {\n            nextNode = hydrateElement(\n              node,\n              vnode,\n              parentComponent,\n              parentSuspense,\n              slotScopeIds,\n              optimized\n            );\n          }\n        } else if (shapeFlag & 6) {\n          vnode.slotScopeIds = slotScopeIds;\n          const container = parentNode(node);\n          if (isFragmentStart) {\n            nextNode = locateClosingAnchor(node);\n          } else if (isComment(node) && node.data === \"teleport start\") {\n            nextNode = locateClosingAnchor(node, node.data, \"teleport end\");\n          } else {\n            nextNode = nextSibling(node);\n          }\n          mountComponent(\n            vnode,\n            container,\n            null,\n            parentComponent,\n            parentSuspense,\n            getContainerType(container),\n            optimized\n          );\n          if (isAsyncWrapper(vnode)) {\n            let subTree;\n            if (isFragmentStart) {\n              subTree = createVNode(Fragment);\n              subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;\n            } else {\n              subTree = node.nodeType === 3 ? createTextVNode(\"\") : createVNode(\"div\");\n            }\n            subTree.el = node;\n            vnode.component.subTree = subTree;\n          }\n        } else if (shapeFlag & 64) {\n          if (domType !== 8 /* COMMENT */) {\n            nextNode = onMismatch();\n          } else {\n            nextNode = vnode.type.hydrate(\n              node,\n              vnode,\n              parentComponent,\n              parentSuspense,\n              slotScopeIds,\n              optimized,\n              rendererInternals,\n              hydrateChildren\n            );\n          }\n        } else if (shapeFlag & 128) {\n          nextNode = vnode.type.hydrate(\n            node,\n            vnode,\n            parentComponent,\n            parentSuspense,\n            getContainerType(parentNode(node)),\n            slotScopeIds,\n            optimized,\n            rendererInternals,\n            hydrateNode\n          );\n        } else if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) {\n          warn$1(\"Invalid HostVNode type:\", type, `(${typeof type})`);\n        }\n    }\n    if (ref != null) {\n      setRef(ref, null, parentSuspense, vnode);\n    }\n    return nextNode;\n  };\n  const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    optimized = optimized || !!vnode.dynamicChildren;\n    const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode;\n    const forcePatch = type === \"input\" || type === \"option\";\n    if (!!(process.env.NODE_ENV !== \"production\") || forcePatch || patchFlag !== -1) {\n      if (dirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n      }\n      let needCallTransitionHooks = false;\n      if (isTemplateNode(el)) {\n        needCallTransitionHooks = needTransition(parentSuspense, transition) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;\n        const content = el.content.firstChild;\n        if (needCallTransitionHooks) {\n          transition.beforeEnter(content);\n        }\n        replaceNode(content, el, parentComponent);\n        vnode.el = el = content;\n      }\n      if (shapeFlag & 16 && // skip if element has innerHTML / textContent\n      !(props && (props.innerHTML || props.textContent))) {\n        let next = hydrateChildren(\n          el.firstChild,\n          vnode,\n          el,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n        let hasWarned = false;\n        while (next) {\n          hasMismatch = true;\n          if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n            warn$1(\n              `Hydration children mismatch on`,\n              el,\n              `\nServer rendered element contains more child nodes than client vdom.`\n            );\n            hasWarned = true;\n          }\n          const cur = next;\n          next = next.nextSibling;\n          remove(cur);\n        }\n      } else if (shapeFlag & 8) {\n        if (el.textContent !== vnode.children) {\n          hasMismatch = true;\n          (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n            `Hydration text content mismatch on`,\n            el,\n            `\n  - rendered on server: ${el.textContent}\n  - expected on client: ${vnode.children}`\n          );\n          el.textContent = vnode.children;\n        }\n      }\n      if (props) {\n        if (!!(process.env.NODE_ENV !== \"production\") || forcePatch || !optimized || patchFlag & (16 | 32)) {\n          for (const key in props) {\n            if (!!(process.env.NODE_ENV !== \"production\") && propHasMismatch(el, key, props[key], vnode, parentComponent)) {\n              hasMismatch = true;\n            }\n            if (forcePatch && (key.endsWith(\"value\") || key === \"indeterminate\") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers\n            key[0] === \".\") {\n              patchProp(\n                el,\n                key,\n                null,\n                props[key],\n                void 0,\n                void 0,\n                parentComponent\n              );\n            }\n          }\n        } else if (props.onClick) {\n          patchProp(\n            el,\n            \"onClick\",\n            null,\n            props.onClick,\n            void 0,\n            void 0,\n            parentComponent\n          );\n        }\n      }\n      let vnodeHooks;\n      if (vnodeHooks = props && props.onVnodeBeforeMount) {\n        invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n      }\n      if (dirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n      }\n      if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) {\n        queueEffectWithSuspense(() => {\n          vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n          needCallTransitionHooks && transition.enter(el);\n          dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n        }, parentSuspense);\n      }\n    }\n    return el.nextSibling;\n  };\n  const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    optimized = optimized || !!parentVNode.dynamicChildren;\n    const children = parentVNode.children;\n    const l = children.length;\n    let hasWarned = false;\n    for (let i = 0; i < l; i++) {\n      const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]);\n      if (node) {\n        node = hydrateNode(\n          node,\n          vnode,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n      } else if (vnode.type === Text && !vnode.children) {\n        continue;\n      } else {\n        hasMismatch = true;\n        if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n          warn$1(\n            `Hydration children mismatch on`,\n            container,\n            `\nServer rendered element contains fewer child nodes than client vdom.`\n          );\n          hasWarned = true;\n        }\n        patch(\n          null,\n          vnode,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          getContainerType(container),\n          slotScopeIds\n        );\n      }\n    }\n    return node;\n  };\n  const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n    const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n    if (fragmentSlotScopeIds) {\n      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n    }\n    const container = parentNode(node);\n    const next = hydrateChildren(\n      nextSibling(node),\n      vnode,\n      container,\n      parentComponent,\n      parentSuspense,\n      slotScopeIds,\n      optimized\n    );\n    if (next && isComment(next) && next.data === \"]\") {\n      return nextSibling(vnode.anchor = next);\n    } else {\n      hasMismatch = true;\n      insert(vnode.anchor = createComment(`]`), container, next);\n      return next;\n    }\n  };\n  const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n    hasMismatch = true;\n    (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n      `Hydration node mismatch:\n- rendered on server:`,\n      node,\n      node.nodeType === 3 /* TEXT */ ? `(text)` : isComment(node) && node.data === \"[\" ? `(start of fragment)` : ``,\n      `\n- expected on client:`,\n      vnode.type\n    );\n    vnode.el = null;\n    if (isFragment) {\n      const end = locateClosingAnchor(node);\n      while (true) {\n        const next2 = nextSibling(node);\n        if (next2 && next2 !== end) {\n          remove(next2);\n        } else {\n          break;\n        }\n      }\n    }\n    const next = nextSibling(node);\n    const container = parentNode(node);\n    remove(node);\n    patch(\n      null,\n      vnode,\n      container,\n      next,\n      parentComponent,\n      parentSuspense,\n      getContainerType(container),\n      slotScopeIds\n    );\n    return next;\n  };\n  const locateClosingAnchor = (node, open = \"[\", close = \"]\") => {\n    let match = 0;\n    while (node) {\n      node = nextSibling(node);\n      if (node && isComment(node)) {\n        if (node.data === open)\n          match++;\n        if (node.data === close) {\n          if (match === 0) {\n            return nextSibling(node);\n          } else {\n            match--;\n          }\n        }\n      }\n    }\n    return node;\n  };\n  const replaceNode = (newNode, oldNode, parentComponent) => {\n    const parentNode2 = oldNode.parentNode;\n    if (parentNode2) {\n      parentNode2.replaceChild(newNode, oldNode);\n    }\n    let parent = parentComponent;\n    while (parent) {\n      if (parent.vnode.el === oldNode) {\n        parent.vnode.el = parent.subTree.el = newNode;\n      }\n      parent = parent.parent;\n    }\n  };\n  const isTemplateNode = (node) => {\n    return node.nodeType === 1 /* ELEMENT */ && node.tagName.toLowerCase() === \"template\";\n  };\n  return [hydrate, hydrateNode];\n}\nfunction propHasMismatch(el, key, clientValue, vnode, instance) {\n  var _a;\n  let mismatchType;\n  let mismatchKey;\n  let actual;\n  let expected;\n  if (key === \"class\") {\n    actual = el.getAttribute(\"class\");\n    expected = normalizeClass(clientValue);\n    if (!isSetEqual(toClassSet(actual || \"\"), toClassSet(expected))) {\n      mismatchType = mismatchKey = `class`;\n    }\n  } else if (key === \"style\") {\n    actual = el.getAttribute(\"style\");\n    expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue));\n    const actualMap = toStyleMap(actual);\n    const expectedMap = toStyleMap(expected);\n    if (vnode.dirs) {\n      for (const { dir, value } of vnode.dirs) {\n        if (dir.name === \"show\" && !value) {\n          expectedMap.set(\"display\", \"none\");\n        }\n      }\n    }\n    const root = instance == null ? void 0 : instance.subTree;\n    if (vnode === root || (root == null ? void 0 : root.type) === Fragment && root.children.includes(vnode)) {\n      const cssVars = (_a = instance == null ? void 0 : instance.getCssVars) == null ? void 0 : _a.call(instance);\n      for (const key2 in cssVars) {\n        expectedMap.set(`--${key2}`, String(cssVars[key2]));\n      }\n    }\n    if (!isMapEqual(actualMap, expectedMap)) {\n      mismatchType = mismatchKey = \"style\";\n    }\n  } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) {\n    if (isBooleanAttr(key)) {\n      actual = el.hasAttribute(key);\n      expected = includeBooleanAttr(clientValue);\n    } else if (clientValue == null) {\n      actual = el.hasAttribute(key);\n      expected = false;\n    } else {\n      if (el.hasAttribute(key)) {\n        actual = el.getAttribute(key);\n      } else if (key === \"value\" && el.tagName === \"TEXTAREA\") {\n        actual = el.value;\n      } else {\n        actual = false;\n      }\n      expected = isRenderableAttrValue(clientValue) ? String(clientValue) : false;\n    }\n    if (actual !== expected) {\n      mismatchType = `attribute`;\n      mismatchKey = key;\n    }\n  }\n  if (mismatchType) {\n    const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}=\"${v}\"`;\n    const preSegment = `Hydration ${mismatchType} mismatch on`;\n    const postSegment = `\n  - rendered on server: ${format(actual)}\n  - expected on client: ${format(expected)}\n  Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead.\n  You should fix the source of the mismatch.`;\n    {\n      warn$1(preSegment, el, postSegment);\n    }\n    return true;\n  }\n  return false;\n}\nfunction toClassSet(str) {\n  return new Set(str.trim().split(/\\s+/));\n}\nfunction isSetEqual(a, b) {\n  if (a.size !== b.size) {\n    return false;\n  }\n  for (const s of a) {\n    if (!b.has(s)) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction toStyleMap(str) {\n  const styleMap = /* @__PURE__ */ new Map();\n  for (const item of str.split(\";\")) {\n    let [key, value] = item.split(\":\");\n    key = key == null ? void 0 : key.trim();\n    value = value == null ? void 0 : value.trim();\n    if (key && value) {\n      styleMap.set(key, value);\n    }\n  }\n  return styleMap;\n}\nfunction isMapEqual(a, b) {\n  if (a.size !== b.size) {\n    return false;\n  }\n  for (const [key, value] of a) {\n    if (value !== b.get(key)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nlet supported;\nlet perf;\nfunction startMeasure(instance, type) {\n  if (instance.appContext.config.performance && isSupported()) {\n    perf.mark(`vue-${type}-${instance.uid}`);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());\n  }\n}\nfunction endMeasure(instance, type) {\n  if (instance.appContext.config.performance && isSupported()) {\n    const startTag = `vue-${type}-${instance.uid}`;\n    const endTag = startTag + `:end`;\n    perf.mark(endTag);\n    perf.measure(\n      `<${formatComponentName(instance, instance.type)}> ${type}`,\n      startTag,\n      endTag\n    );\n    perf.clearMarks(startTag);\n    perf.clearMarks(endTag);\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());\n  }\n}\nfunction isSupported() {\n  if (supported !== void 0) {\n    return supported;\n  }\n  if (typeof window !== \"undefined\" && window.performance) {\n    supported = true;\n    perf = window.performance;\n  } else {\n    supported = false;\n  }\n  return supported;\n}\n\nfunction initFeatureFlags() {\n  const needWarn = [];\n  if (typeof __VUE_OPTIONS_API__ !== \"boolean\") {\n    !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_OPTIONS_API__`);\n    getGlobalThis().__VUE_OPTIONS_API__ = true;\n  }\n  if (typeof __VUE_PROD_DEVTOOLS__ !== \"boolean\") {\n    !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_PROD_DEVTOOLS__`);\n    getGlobalThis().__VUE_PROD_DEVTOOLS__ = false;\n  }\n  if (typeof __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ !== \"boolean\") {\n    !!(process.env.NODE_ENV !== \"production\") && needWarn.push(`__VUE_PROD_HYDRATION_MISMATCH_DETAILS__`);\n    getGlobalThis().__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ = false;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && needWarn.length) {\n    const multi = needWarn.length > 1;\n    console.warn(\n      `Feature flag${multi ? `s` : ``} ${needWarn.join(\", \")} ${multi ? `are` : `is`} not explicitly defined. You are running the esm-bundler build of Vue, which expects these compile-time feature flags to be globally injected via the bundler config in order to get better tree-shaking in the production bundle.\n\nFor more details, see https://link.vuejs.org/feature-flags.`\n    );\n  }\n}\n\nconst queuePostRenderEffect = queueEffectWithSuspense ;\nfunction createRenderer(options) {\n  return baseCreateRenderer(options);\n}\nfunction createHydrationRenderer(options) {\n  return baseCreateRenderer(options, createHydrationFunctions);\n}\nfunction baseCreateRenderer(options, createHydrationFns) {\n  {\n    initFeatureFlags();\n  }\n  const target = getGlobalThis();\n  target.__VUE__ = true;\n  if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n    setDevtoolsHook$1(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);\n  }\n  const {\n    insert: hostInsert,\n    remove: hostRemove,\n    patchProp: hostPatchProp,\n    createElement: hostCreateElement,\n    createText: hostCreateText,\n    createComment: hostCreateComment,\n    setText: hostSetText,\n    setElementText: hostSetElementText,\n    parentNode: hostParentNode,\n    nextSibling: hostNextSibling,\n    setScopeId: hostSetScopeId = NOOP,\n    insertStaticContent: hostInsertStaticContent\n  } = options;\n  const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = !!(process.env.NODE_ENV !== \"production\") && isHmrUpdating ? false : !!n2.dynamicChildren) => {\n    if (n1 === n2) {\n      return;\n    }\n    if (n1 && !isSameVNodeType(n1, n2)) {\n      anchor = getNextHostNode(n1);\n      unmount(n1, parentComponent, parentSuspense, true);\n      n1 = null;\n    }\n    if (n2.patchFlag === -2) {\n      optimized = false;\n      n2.dynamicChildren = null;\n    }\n    const { type, ref, shapeFlag } = n2;\n    switch (type) {\n      case Text:\n        processText(n1, n2, container, anchor);\n        break;\n      case Comment:\n        processCommentNode(n1, n2, container, anchor);\n        break;\n      case Static:\n        if (n1 == null) {\n          mountStaticNode(n2, container, anchor, namespace);\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          patchStaticNode(n1, n2, container, namespace);\n        }\n        break;\n      case Fragment:\n        processFragment(\n          n1,\n          n2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        break;\n      default:\n        if (shapeFlag & 1) {\n          processElement(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else if (shapeFlag & 6) {\n          processComponent(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else if (shapeFlag & 64) {\n          type.process(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized,\n            internals\n          );\n        } else if (shapeFlag & 128) {\n          type.process(\n            n1,\n            n2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized,\n            internals\n          );\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn$1(\"Invalid VNode type:\", type, `(${typeof type})`);\n        }\n    }\n    if (ref != null && parentComponent) {\n      setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);\n    }\n  };\n  const processText = (n1, n2, container, anchor) => {\n    if (n1 == null) {\n      hostInsert(\n        n2.el = hostCreateText(n2.children),\n        container,\n        anchor\n      );\n    } else {\n      const el = n2.el = n1.el;\n      if (n2.children !== n1.children) {\n        hostSetText(el, n2.children);\n      }\n    }\n  };\n  const processCommentNode = (n1, n2, container, anchor) => {\n    if (n1 == null) {\n      hostInsert(\n        n2.el = hostCreateComment(n2.children || \"\"),\n        container,\n        anchor\n      );\n    } else {\n      n2.el = n1.el;\n    }\n  };\n  const mountStaticNode = (n2, container, anchor, namespace) => {\n    [n2.el, n2.anchor] = hostInsertStaticContent(\n      n2.children,\n      container,\n      anchor,\n      namespace,\n      n2.el,\n      n2.anchor\n    );\n  };\n  const patchStaticNode = (n1, n2, container, namespace) => {\n    if (n2.children !== n1.children) {\n      const anchor = hostNextSibling(n1.anchor);\n      removeStaticNode(n1);\n      [n2.el, n2.anchor] = hostInsertStaticContent(\n        n2.children,\n        container,\n        anchor,\n        namespace\n      );\n    } else {\n      n2.el = n1.el;\n      n2.anchor = n1.anchor;\n    }\n  };\n  const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\n    let next;\n    while (el && el !== anchor) {\n      next = hostNextSibling(el);\n      hostInsert(el, container, nextSibling);\n      el = next;\n    }\n    hostInsert(anchor, container, nextSibling);\n  };\n  const removeStaticNode = ({ el, anchor }) => {\n    let next;\n    while (el && el !== anchor) {\n      next = hostNextSibling(el);\n      hostRemove(el);\n      el = next;\n    }\n    hostRemove(anchor);\n  };\n  const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    if (n2.type === \"svg\") {\n      namespace = \"svg\";\n    } else if (n2.type === \"math\") {\n      namespace = \"mathml\";\n    }\n    if (n1 == null) {\n      mountElement(\n        n2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    } else {\n      patchElement(\n        n1,\n        n2,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    }\n  };\n  const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    let el;\n    let vnodeHook;\n    const { props, shapeFlag, transition, dirs } = vnode;\n    el = vnode.el = hostCreateElement(\n      vnode.type,\n      namespace,\n      props && props.is,\n      props\n    );\n    if (shapeFlag & 8) {\n      hostSetElementText(el, vnode.children);\n    } else if (shapeFlag & 16) {\n      mountChildren(\n        vnode.children,\n        el,\n        null,\n        parentComponent,\n        parentSuspense,\n        resolveChildrenNamespace(vnode, namespace),\n        slotScopeIds,\n        optimized\n      );\n    }\n    if (dirs) {\n      invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n    }\n    setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);\n    if (props) {\n      for (const key in props) {\n        if (key !== \"value\" && !isReservedProp(key)) {\n          hostPatchProp(\n            el,\n            key,\n            null,\n            props[key],\n            namespace,\n            vnode.children,\n            parentComponent,\n            parentSuspense,\n            unmountChildren\n          );\n        }\n      }\n      if (\"value\" in props) {\n        hostPatchProp(el, \"value\", null, props.value, namespace);\n      }\n      if (vnodeHook = props.onVnodeBeforeMount) {\n        invokeVNodeHook(vnodeHook, parentComponent, vnode);\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      Object.defineProperty(el, \"__vnode\", {\n        value: vnode,\n        enumerable: false\n      });\n      Object.defineProperty(el, \"__vueParentComponent\", {\n        value: parentComponent,\n        enumerable: false\n      });\n    }\n    if (dirs) {\n      invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n    }\n    const needCallTransitionHooks = needTransition(parentSuspense, transition);\n    if (needCallTransitionHooks) {\n      transition.beforeEnter(el);\n    }\n    hostInsert(el, container, anchor);\n    if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n        needCallTransitionHooks && transition.enter(el);\n        dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n      }, parentSuspense);\n    }\n  };\n  const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {\n    if (scopeId) {\n      hostSetScopeId(el, scopeId);\n    }\n    if (slotScopeIds) {\n      for (let i = 0; i < slotScopeIds.length; i++) {\n        hostSetScopeId(el, slotScopeIds[i]);\n      }\n    }\n    if (parentComponent) {\n      let subTree = parentComponent.subTree;\n      if (!!(process.env.NODE_ENV !== \"production\") && subTree.patchFlag > 0 && subTree.patchFlag & 2048) {\n        subTree = filterSingleRoot(subTree.children) || subTree;\n      }\n      if (vnode === subTree) {\n        const parentVNode = parentComponent.vnode;\n        setScopeId(\n          el,\n          parentVNode,\n          parentVNode.scopeId,\n          parentVNode.slotScopeIds,\n          parentComponent.parent\n        );\n      }\n    }\n  };\n  const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => {\n    for (let i = start; i < children.length; i++) {\n      const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]);\n      patch(\n        null,\n        child,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    }\n  };\n  const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    const el = n2.el = n1.el;\n    let { patchFlag, dynamicChildren, dirs } = n2;\n    patchFlag |= n1.patchFlag & 16;\n    const oldProps = n1.props || EMPTY_OBJ;\n    const newProps = n2.props || EMPTY_OBJ;\n    let vnodeHook;\n    parentComponent && toggleRecurse(parentComponent, false);\n    if (vnodeHook = newProps.onVnodeBeforeUpdate) {\n      invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n    }\n    if (dirs) {\n      invokeDirectiveHook(n2, n1, parentComponent, \"beforeUpdate\");\n    }\n    parentComponent && toggleRecurse(parentComponent, true);\n    if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n      patchFlag = 0;\n      optimized = false;\n      dynamicChildren = null;\n    }\n    if (dynamicChildren) {\n      patchBlockChildren(\n        n1.dynamicChildren,\n        dynamicChildren,\n        el,\n        parentComponent,\n        parentSuspense,\n        resolveChildrenNamespace(n2, namespace),\n        slotScopeIds\n      );\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        traverseStaticChildren(n1, n2);\n      }\n    } else if (!optimized) {\n      patchChildren(\n        n1,\n        n2,\n        el,\n        null,\n        parentComponent,\n        parentSuspense,\n        resolveChildrenNamespace(n2, namespace),\n        slotScopeIds,\n        false\n      );\n    }\n    if (patchFlag > 0) {\n      if (patchFlag & 16) {\n        patchProps(\n          el,\n          n2,\n          oldProps,\n          newProps,\n          parentComponent,\n          parentSuspense,\n          namespace\n        );\n      } else {\n        if (patchFlag & 2) {\n          if (oldProps.class !== newProps.class) {\n            hostPatchProp(el, \"class\", null, newProps.class, namespace);\n          }\n        }\n        if (patchFlag & 4) {\n          hostPatchProp(el, \"style\", oldProps.style, newProps.style, namespace);\n        }\n        if (patchFlag & 8) {\n          const propsToUpdate = n2.dynamicProps;\n          for (let i = 0; i < propsToUpdate.length; i++) {\n            const key = propsToUpdate[i];\n            const prev = oldProps[key];\n            const next = newProps[key];\n            if (next !== prev || key === \"value\") {\n              hostPatchProp(\n                el,\n                key,\n                prev,\n                next,\n                namespace,\n                n1.children,\n                parentComponent,\n                parentSuspense,\n                unmountChildren\n              );\n            }\n          }\n        }\n      }\n      if (patchFlag & 1) {\n        if (n1.children !== n2.children) {\n          hostSetElementText(el, n2.children);\n        }\n      }\n    } else if (!optimized && dynamicChildren == null) {\n      patchProps(\n        el,\n        n2,\n        oldProps,\n        newProps,\n        parentComponent,\n        parentSuspense,\n        namespace\n      );\n    }\n    if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n        dirs && invokeDirectiveHook(n2, n1, parentComponent, \"updated\");\n      }, parentSuspense);\n    }\n  };\n  const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => {\n    for (let i = 0; i < newChildren.length; i++) {\n      const oldVNode = oldChildren[i];\n      const newVNode = newChildren[i];\n      const container = (\n        // oldVNode may be an errored async setup() component inside Suspense\n        // which will not have a mounted element\n        oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent\n        // of the Fragment itself so it can move its children.\n        (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement\n        // which also requires the correct parent container\n        !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.\n        oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : (\n          // In other cases, the parent container is not actually used so we\n          // just pass the block element here to avoid a DOM parentNode call.\n          fallbackContainer\n        )\n      );\n      patch(\n        oldVNode,\n        newVNode,\n        container,\n        null,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        true\n      );\n    }\n  };\n  const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, namespace) => {\n    if (oldProps !== newProps) {\n      if (oldProps !== EMPTY_OBJ) {\n        for (const key in oldProps) {\n          if (!isReservedProp(key) && !(key in newProps)) {\n            hostPatchProp(\n              el,\n              key,\n              oldProps[key],\n              null,\n              namespace,\n              vnode.children,\n              parentComponent,\n              parentSuspense,\n              unmountChildren\n            );\n          }\n        }\n      }\n      for (const key in newProps) {\n        if (isReservedProp(key))\n          continue;\n        const next = newProps[key];\n        const prev = oldProps[key];\n        if (next !== prev && key !== \"value\") {\n          hostPatchProp(\n            el,\n            key,\n            prev,\n            next,\n            namespace,\n            vnode.children,\n            parentComponent,\n            parentSuspense,\n            unmountChildren\n          );\n        }\n      }\n      if (\"value\" in newProps) {\n        hostPatchProp(el, \"value\", oldProps.value, newProps.value, namespace);\n      }\n    }\n  };\n  const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(\"\");\n    const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(\"\");\n    let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;\n    if (!!(process.env.NODE_ENV !== \"production\") && // #5523 dev root fragment may inherit directives\n    (isHmrUpdating || patchFlag & 2048)) {\n      patchFlag = 0;\n      optimized = false;\n      dynamicChildren = null;\n    }\n    if (fragmentSlotScopeIds) {\n      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n    }\n    if (n1 == null) {\n      hostInsert(fragmentStartAnchor, container, anchor);\n      hostInsert(fragmentEndAnchor, container, anchor);\n      mountChildren(\n        // #10007\n        // such fragment like `<></>` will be compiled into\n        // a fragment which doesn't have a children.\n        // In this case fallback to an empty array\n        n2.children || [],\n        container,\n        fragmentEndAnchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    } else {\n      if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result\n      // of renderSlot() with no valid children\n      n1.dynamicChildren) {\n        patchBlockChildren(\n          n1.dynamicChildren,\n          dynamicChildren,\n          container,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds\n        );\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          traverseStaticChildren(n1, n2);\n        } else if (\n          // #2080 if the stable fragment has a key, it's a <template v-for> that may\n          //  get moved around. Make sure all root level vnodes inherit el.\n          // #2134 or if it's a component root, it may also get moved around\n          // as the component is being moved.\n          n2.key != null || parentComponent && n2 === parentComponent.subTree\n        ) {\n          traverseStaticChildren(\n            n1,\n            n2,\n            true\n            /* shallow */\n          );\n        }\n      } else {\n        patchChildren(\n          n1,\n          n2,\n          container,\n          fragmentEndAnchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n      }\n    }\n  };\n  const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    n2.slotScopeIds = slotScopeIds;\n    if (n1 == null) {\n      if (n2.shapeFlag & 512) {\n        parentComponent.ctx.activate(\n          n2,\n          container,\n          anchor,\n          namespace,\n          optimized\n        );\n      } else {\n        mountComponent(\n          n2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          optimized\n        );\n      }\n    } else {\n      updateComponent(n1, n2, optimized);\n    }\n  };\n  const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => {\n    const instance = (initialVNode.component = createComponentInstance(\n      initialVNode,\n      parentComponent,\n      parentSuspense\n    ));\n    if (!!(process.env.NODE_ENV !== \"production\") && instance.type.__hmrId) {\n      registerHMR(instance);\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      pushWarningContext(initialVNode);\n      startMeasure(instance, `mount`);\n    }\n    if (isKeepAlive(initialVNode)) {\n      instance.ctx.renderer = internals;\n    }\n    {\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        startMeasure(instance, `init`);\n      }\n      setupComponent(instance);\n      if (!!(process.env.NODE_ENV !== \"production\")) {\n        endMeasure(instance, `init`);\n      }\n    }\n    if (instance.asyncDep) {\n      parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect);\n      if (!initialVNode.el) {\n        const placeholder = instance.subTree = createVNode(Comment);\n        processCommentNode(null, placeholder, container, anchor);\n      }\n    } else {\n      setupRenderEffect(\n        instance,\n        initialVNode,\n        container,\n        anchor,\n        parentSuspense,\n        namespace,\n        optimized\n      );\n    }\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      popWarningContext();\n      endMeasure(instance, `mount`);\n    }\n  };\n  const updateComponent = (n1, n2, optimized) => {\n    const instance = n2.component = n1.component;\n    if (shouldUpdateComponent(n1, n2, optimized)) {\n      if (instance.asyncDep && !instance.asyncResolved) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          pushWarningContext(n2);\n        }\n        updateComponentPreRender(instance, n2, optimized);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          popWarningContext();\n        }\n        return;\n      } else {\n        instance.next = n2;\n        invalidateJob(instance.update);\n        instance.effect.dirty = true;\n        instance.update();\n      }\n    } else {\n      n2.el = n1.el;\n      instance.vnode = n2;\n    }\n  };\n  const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => {\n    const componentUpdateFn = () => {\n      if (!instance.isMounted) {\n        let vnodeHook;\n        const { el, props } = initialVNode;\n        const { bm, m, parent } = instance;\n        const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);\n        toggleRecurse(instance, false);\n        if (bm) {\n          invokeArrayFns(bm);\n        }\n        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) {\n          invokeVNodeHook(vnodeHook, parent, initialVNode);\n        }\n        toggleRecurse(instance, true);\n        if (el && hydrateNode) {\n          const hydrateSubTree = () => {\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              startMeasure(instance, `render`);\n            }\n            instance.subTree = renderComponentRoot(instance);\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              endMeasure(instance, `render`);\n            }\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              startMeasure(instance, `hydrate`);\n            }\n            hydrateNode(\n              el,\n              instance.subTree,\n              instance,\n              parentSuspense,\n              null\n            );\n            if (!!(process.env.NODE_ENV !== \"production\")) {\n              endMeasure(instance, `hydrate`);\n            }\n          };\n          if (isAsyncWrapperVNode) {\n            initialVNode.type.__asyncLoader().then(\n              // note: we are moving the render call into an async callback,\n              // which means it won't track dependencies - but it's ok because\n              // a server-rendered async wrapper is already in resolved state\n              // and it will never need to change.\n              () => !instance.isUnmounted && hydrateSubTree()\n            );\n          } else {\n            hydrateSubTree();\n          }\n        } else {\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            startMeasure(instance, `render`);\n          }\n          const subTree = instance.subTree = renderComponentRoot(instance);\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            endMeasure(instance, `render`);\n          }\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            startMeasure(instance, `patch`);\n          }\n          patch(\n            null,\n            subTree,\n            container,\n            anchor,\n            instance,\n            parentSuspense,\n            namespace\n          );\n          if (!!(process.env.NODE_ENV !== \"production\")) {\n            endMeasure(instance, `patch`);\n          }\n          initialVNode.el = subTree.el;\n        }\n        if (m) {\n          queuePostRenderEffect(m, parentSuspense);\n        }\n        if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) {\n          const scopedInitialVNode = initialVNode;\n          queuePostRenderEffect(\n            () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode),\n            parentSuspense\n          );\n        }\n        if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) {\n          instance.a && queuePostRenderEffect(instance.a, parentSuspense);\n        }\n        instance.isMounted = true;\n        if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n          devtoolsComponentAdded(instance);\n        }\n        initialVNode = container = anchor = null;\n      } else {\n        let { next, bu, u, parent, vnode } = instance;\n        {\n          const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance);\n          if (nonHydratedAsyncRoot) {\n            if (next) {\n              next.el = vnode.el;\n              updateComponentPreRender(instance, next, optimized);\n            }\n            nonHydratedAsyncRoot.asyncDep.then(() => {\n              if (!instance.isUnmounted) {\n                componentUpdateFn();\n              }\n            });\n            return;\n          }\n        }\n        let originNext = next;\n        let vnodeHook;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          pushWarningContext(next || instance.vnode);\n        }\n        toggleRecurse(instance, false);\n        if (next) {\n          next.el = vnode.el;\n          updateComponentPreRender(instance, next, optimized);\n        } else {\n          next = vnode;\n        }\n        if (bu) {\n          invokeArrayFns(bu);\n        }\n        if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) {\n          invokeVNodeHook(vnodeHook, parent, next, vnode);\n        }\n        toggleRecurse(instance, true);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          startMeasure(instance, `render`);\n        }\n        const nextTree = renderComponentRoot(instance);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          endMeasure(instance, `render`);\n        }\n        const prevTree = instance.subTree;\n        instance.subTree = nextTree;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          startMeasure(instance, `patch`);\n        }\n        patch(\n          prevTree,\n          nextTree,\n          // parent may have changed if it's in a teleport\n          hostParentNode(prevTree.el),\n          // anchor may have changed if it's in a fragment\n          getNextHostNode(prevTree),\n          instance,\n          parentSuspense,\n          namespace\n        );\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          endMeasure(instance, `patch`);\n        }\n        next.el = nextTree.el;\n        if (originNext === null) {\n          updateHOCHostEl(instance, nextTree.el);\n        }\n        if (u) {\n          queuePostRenderEffect(u, parentSuspense);\n        }\n        if (vnodeHook = next.props && next.props.onVnodeUpdated) {\n          queuePostRenderEffect(\n            () => invokeVNodeHook(vnodeHook, parent, next, vnode),\n            parentSuspense\n          );\n        }\n        if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n          devtoolsComponentUpdated(instance);\n        }\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          popWarningContext();\n        }\n      }\n    };\n    const effect = instance.effect = new ReactiveEffect(\n      componentUpdateFn,\n      NOOP,\n      () => queueJob(update),\n      instance.scope\n      // track it in component's effect scope\n    );\n    const update = instance.update = () => {\n      if (effect.dirty) {\n        effect.run();\n      }\n    };\n    update.id = instance.uid;\n    toggleRecurse(instance, true);\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      effect.onTrack = instance.rtc ? (e) => invokeArrayFns(instance.rtc, e) : void 0;\n      effect.onTrigger = instance.rtg ? (e) => invokeArrayFns(instance.rtg, e) : void 0;\n      update.ownerInstance = instance;\n    }\n    update();\n  };\n  const updateComponentPreRender = (instance, nextVNode, optimized) => {\n    nextVNode.component = instance;\n    const prevProps = instance.vnode.props;\n    instance.vnode = nextVNode;\n    instance.next = null;\n    updateProps(instance, nextVNode.props, prevProps, optimized);\n    updateSlots(instance, nextVNode.children, optimized);\n    pauseTracking();\n    flushPreFlushCbs(instance);\n    resetTracking();\n  };\n  const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => {\n    const c1 = n1 && n1.children;\n    const prevShapeFlag = n1 ? n1.shapeFlag : 0;\n    const c2 = n2.children;\n    const { patchFlag, shapeFlag } = n2;\n    if (patchFlag > 0) {\n      if (patchFlag & 128) {\n        patchKeyedChildren(\n          c1,\n          c2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        return;\n      } else if (patchFlag & 256) {\n        patchUnkeyedChildren(\n          c1,\n          c2,\n          container,\n          anchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n        return;\n      }\n    }\n    if (shapeFlag & 8) {\n      if (prevShapeFlag & 16) {\n        unmountChildren(c1, parentComponent, parentSuspense);\n      }\n      if (c2 !== c1) {\n        hostSetElementText(container, c2);\n      }\n    } else {\n      if (prevShapeFlag & 16) {\n        if (shapeFlag & 16) {\n          patchKeyedChildren(\n            c1,\n            c2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else {\n          unmountChildren(c1, parentComponent, parentSuspense, true);\n        }\n      } else {\n        if (prevShapeFlag & 8) {\n          hostSetElementText(container, \"\");\n        }\n        if (shapeFlag & 16) {\n          mountChildren(\n            c2,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        }\n      }\n    }\n  };\n  const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    c1 = c1 || EMPTY_ARR;\n    c2 = c2 || EMPTY_ARR;\n    const oldLength = c1.length;\n    const newLength = c2.length;\n    const commonLength = Math.min(oldLength, newLength);\n    let i;\n    for (i = 0; i < commonLength; i++) {\n      const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n      patch(\n        c1[i],\n        nextChild,\n        container,\n        null,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized\n      );\n    }\n    if (oldLength > newLength) {\n      unmountChildren(\n        c1,\n        parentComponent,\n        parentSuspense,\n        true,\n        false,\n        commonLength\n      );\n    } else {\n      mountChildren(\n        c2,\n        container,\n        anchor,\n        parentComponent,\n        parentSuspense,\n        namespace,\n        slotScopeIds,\n        optimized,\n        commonLength\n      );\n    }\n  };\n  const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {\n    let i = 0;\n    const l2 = c2.length;\n    let e1 = c1.length - 1;\n    let e2 = l2 - 1;\n    while (i <= e1 && i <= e2) {\n      const n1 = c1[i];\n      const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n      if (isSameVNodeType(n1, n2)) {\n        patch(\n          n1,\n          n2,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n      } else {\n        break;\n      }\n      i++;\n    }\n    while (i <= e1 && i <= e2) {\n      const n1 = c1[e1];\n      const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]);\n      if (isSameVNodeType(n1, n2)) {\n        patch(\n          n1,\n          n2,\n          container,\n          null,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          optimized\n        );\n      } else {\n        break;\n      }\n      e1--;\n      e2--;\n    }\n    if (i > e1) {\n      if (i <= e2) {\n        const nextPos = e2 + 1;\n        const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;\n        while (i <= e2) {\n          patch(\n            null,\n            c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]),\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          i++;\n        }\n      }\n    } else if (i > e2) {\n      while (i <= e1) {\n        unmount(c1[i], parentComponent, parentSuspense, true);\n        i++;\n      }\n    } else {\n      const s1 = i;\n      const s2 = i;\n      const keyToNewIndexMap = /* @__PURE__ */ new Map();\n      for (i = s2; i <= e2; i++) {\n        const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);\n        if (nextChild.key != null) {\n          if (!!(process.env.NODE_ENV !== \"production\") && keyToNewIndexMap.has(nextChild.key)) {\n            warn$1(\n              `Duplicate keys found during update:`,\n              JSON.stringify(nextChild.key),\n              `Make sure keys are unique.`\n            );\n          }\n          keyToNewIndexMap.set(nextChild.key, i);\n        }\n      }\n      let j;\n      let patched = 0;\n      const toBePatched = e2 - s2 + 1;\n      let moved = false;\n      let maxNewIndexSoFar = 0;\n      const newIndexToOldIndexMap = new Array(toBePatched);\n      for (i = 0; i < toBePatched; i++)\n        newIndexToOldIndexMap[i] = 0;\n      for (i = s1; i <= e1; i++) {\n        const prevChild = c1[i];\n        if (patched >= toBePatched) {\n          unmount(prevChild, parentComponent, parentSuspense, true);\n          continue;\n        }\n        let newIndex;\n        if (prevChild.key != null) {\n          newIndex = keyToNewIndexMap.get(prevChild.key);\n        } else {\n          for (j = s2; j <= e2; j++) {\n            if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) {\n              newIndex = j;\n              break;\n            }\n          }\n        }\n        if (newIndex === void 0) {\n          unmount(prevChild, parentComponent, parentSuspense, true);\n        } else {\n          newIndexToOldIndexMap[newIndex - s2] = i + 1;\n          if (newIndex >= maxNewIndexSoFar) {\n            maxNewIndexSoFar = newIndex;\n          } else {\n            moved = true;\n          }\n          patch(\n            prevChild,\n            c2[newIndex],\n            container,\n            null,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n          patched++;\n        }\n      }\n      const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR;\n      j = increasingNewIndexSequence.length - 1;\n      for (i = toBePatched - 1; i >= 0; i--) {\n        const nextIndex = s2 + i;\n        const nextChild = c2[nextIndex];\n        const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;\n        if (newIndexToOldIndexMap[i] === 0) {\n          patch(\n            null,\n            nextChild,\n            container,\n            anchor,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        } else if (moved) {\n          if (j < 0 || i !== increasingNewIndexSequence[j]) {\n            move(nextChild, container, anchor, 2);\n          } else {\n            j--;\n          }\n        }\n      }\n    }\n  };\n  const move = (vnode, container, anchor, moveType, parentSuspense = null) => {\n    const { el, type, transition, children, shapeFlag } = vnode;\n    if (shapeFlag & 6) {\n      move(vnode.component.subTree, container, anchor, moveType);\n      return;\n    }\n    if (shapeFlag & 128) {\n      vnode.suspense.move(container, anchor, moveType);\n      return;\n    }\n    if (shapeFlag & 64) {\n      type.move(vnode, container, anchor, internals);\n      return;\n    }\n    if (type === Fragment) {\n      hostInsert(el, container, anchor);\n      for (let i = 0; i < children.length; i++) {\n        move(children[i], container, anchor, moveType);\n      }\n      hostInsert(vnode.anchor, container, anchor);\n      return;\n    }\n    if (type === Static) {\n      moveStaticNode(vnode, container, anchor);\n      return;\n    }\n    const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition;\n    if (needTransition2) {\n      if (moveType === 0) {\n        transition.beforeEnter(el);\n        hostInsert(el, container, anchor);\n        queuePostRenderEffect(() => transition.enter(el), parentSuspense);\n      } else {\n        const { leave, delayLeave, afterLeave } = transition;\n        const remove2 = () => hostInsert(el, container, anchor);\n        const performLeave = () => {\n          leave(el, () => {\n            remove2();\n            afterLeave && afterLeave();\n          });\n        };\n        if (delayLeave) {\n          delayLeave(el, remove2, performLeave);\n        } else {\n          performLeave();\n        }\n      }\n    } else {\n      hostInsert(el, container, anchor);\n    }\n  };\n  const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {\n    const {\n      type,\n      props,\n      ref,\n      children,\n      dynamicChildren,\n      shapeFlag,\n      patchFlag,\n      dirs\n    } = vnode;\n    if (ref != null) {\n      setRef(ref, null, parentSuspense, vnode, true);\n    }\n    if (shapeFlag & 256) {\n      parentComponent.ctx.deactivate(vnode);\n      return;\n    }\n    const shouldInvokeDirs = shapeFlag & 1 && dirs;\n    const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);\n    let vnodeHook;\n    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) {\n      invokeVNodeHook(vnodeHook, parentComponent, vnode);\n    }\n    if (shapeFlag & 6) {\n      unmountComponent(vnode.component, parentSuspense, doRemove);\n    } else {\n      if (shapeFlag & 128) {\n        vnode.suspense.unmount(parentSuspense, doRemove);\n        return;\n      }\n      if (shouldInvokeDirs) {\n        invokeDirectiveHook(vnode, null, parentComponent, \"beforeUnmount\");\n      }\n      if (shapeFlag & 64) {\n        vnode.type.remove(\n          vnode,\n          parentComponent,\n          parentSuspense,\n          optimized,\n          internals,\n          doRemove\n        );\n      } else if (dynamicChildren && // #1153: fast path should not be taken for non-stable (v-for) fragments\n      (type !== Fragment || patchFlag > 0 && patchFlag & 64)) {\n        unmountChildren(\n          dynamicChildren,\n          parentComponent,\n          parentSuspense,\n          false,\n          true\n        );\n      } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {\n        unmountChildren(children, parentComponent, parentSuspense);\n      }\n      if (doRemove) {\n        remove(vnode);\n      }\n    }\n    if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) {\n      queuePostRenderEffect(() => {\n        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n        shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, \"unmounted\");\n      }, parentSuspense);\n    }\n  };\n  const remove = (vnode) => {\n    const { type, el, anchor, transition } = vnode;\n    if (type === Fragment) {\n      if (!!(process.env.NODE_ENV !== \"production\") && vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) {\n        vnode.children.forEach((child) => {\n          if (child.type === Comment) {\n            hostRemove(child.el);\n          } else {\n            remove(child);\n          }\n        });\n      } else {\n        removeFragment(el, anchor);\n      }\n      return;\n    }\n    if (type === Static) {\n      removeStaticNode(vnode);\n      return;\n    }\n    const performRemove = () => {\n      hostRemove(el);\n      if (transition && !transition.persisted && transition.afterLeave) {\n        transition.afterLeave();\n      }\n    };\n    if (vnode.shapeFlag & 1 && transition && !transition.persisted) {\n      const { leave, delayLeave } = transition;\n      const performLeave = () => leave(el, performRemove);\n      if (delayLeave) {\n        delayLeave(vnode.el, performRemove, performLeave);\n      } else {\n        performLeave();\n      }\n    } else {\n      performRemove();\n    }\n  };\n  const removeFragment = (cur, end) => {\n    let next;\n    while (cur !== end) {\n      next = hostNextSibling(cur);\n      hostRemove(cur);\n      cur = next;\n    }\n    hostRemove(end);\n  };\n  const unmountComponent = (instance, parentSuspense, doRemove) => {\n    if (!!(process.env.NODE_ENV !== \"production\") && instance.type.__hmrId) {\n      unregisterHMR(instance);\n    }\n    const { bum, scope, update, subTree, um } = instance;\n    if (bum) {\n      invokeArrayFns(bum);\n    }\n    scope.stop();\n    if (update) {\n      update.active = false;\n      unmount(subTree, instance, parentSuspense, doRemove);\n    }\n    if (um) {\n      queuePostRenderEffect(um, parentSuspense);\n    }\n    queuePostRenderEffect(() => {\n      instance.isUnmounted = true;\n    }, parentSuspense);\n    if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) {\n      parentSuspense.deps--;\n      if (parentSuspense.deps === 0) {\n        parentSuspense.resolve();\n      }\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      devtoolsComponentRemoved(instance);\n    }\n  };\n  const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {\n    for (let i = start; i < children.length; i++) {\n      unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);\n    }\n  };\n  const getNextHostNode = (vnode) => {\n    if (vnode.shapeFlag & 6) {\n      return getNextHostNode(vnode.component.subTree);\n    }\n    if (vnode.shapeFlag & 128) {\n      return vnode.suspense.next();\n    }\n    return hostNextSibling(vnode.anchor || vnode.el);\n  };\n  let isFlushing = false;\n  const render = (vnode, container, namespace) => {\n    if (vnode == null) {\n      if (container._vnode) {\n        unmount(container._vnode, null, null, true);\n      }\n    } else {\n      patch(\n        container._vnode || null,\n        vnode,\n        container,\n        null,\n        null,\n        null,\n        namespace\n      );\n    }\n    if (!isFlushing) {\n      isFlushing = true;\n      flushPreFlushCbs();\n      flushPostFlushCbs();\n      isFlushing = false;\n    }\n    container._vnode = vnode;\n  };\n  const internals = {\n    p: patch,\n    um: unmount,\n    m: move,\n    r: remove,\n    mt: mountComponent,\n    mc: mountChildren,\n    pc: patchChildren,\n    pbc: patchBlockChildren,\n    n: getNextHostNode,\n    o: options\n  };\n  let hydrate;\n  let hydrateNode;\n  if (createHydrationFns) {\n    [hydrate, hydrateNode] = createHydrationFns(\n      internals\n    );\n  }\n  return {\n    render,\n    hydrate,\n    createApp: createAppAPI(render, hydrate)\n  };\n}\nfunction resolveChildrenNamespace({ type, props }, currentNamespace) {\n  return currentNamespace === \"svg\" && type === \"foreignObject\" || currentNamespace === \"mathml\" && type === \"annotation-xml\" && props && props.encoding && props.encoding.includes(\"html\") ? void 0 : currentNamespace;\n}\nfunction toggleRecurse({ effect, update }, allowed) {\n  effect.allowRecurse = update.allowRecurse = allowed;\n}\nfunction needTransition(parentSuspense, transition) {\n  return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;\n}\nfunction traverseStaticChildren(n1, n2, shallow = false) {\n  const ch1 = n1.children;\n  const ch2 = n2.children;\n  if (isArray(ch1) && isArray(ch2)) {\n    for (let i = 0; i < ch1.length; i++) {\n      const c1 = ch1[i];\n      let c2 = ch2[i];\n      if (c2.shapeFlag & 1 && !c2.dynamicChildren) {\n        if (c2.patchFlag <= 0 || c2.patchFlag === 32) {\n          c2 = ch2[i] = cloneIfMounted(ch2[i]);\n          c2.el = c1.el;\n        }\n        if (!shallow)\n          traverseStaticChildren(c1, c2);\n      }\n      if (c2.type === Text) {\n        c2.el = c1.el;\n      }\n      if (!!(process.env.NODE_ENV !== \"production\") && c2.type === Comment && !c2.el) {\n        c2.el = c1.el;\n      }\n    }\n  }\n}\nfunction getSequence(arr) {\n  const p = arr.slice();\n  const result = [0];\n  let i, j, u, v, c;\n  const len = arr.length;\n  for (i = 0; i < len; i++) {\n    const arrI = arr[i];\n    if (arrI !== 0) {\n      j = result[result.length - 1];\n      if (arr[j] < arrI) {\n        p[i] = j;\n        result.push(i);\n        continue;\n      }\n      u = 0;\n      v = result.length - 1;\n      while (u < v) {\n        c = u + v >> 1;\n        if (arr[result[c]] < arrI) {\n          u = c + 1;\n        } else {\n          v = c;\n        }\n      }\n      if (arrI < arr[result[u]]) {\n        if (u > 0) {\n          p[i] = result[u - 1];\n        }\n        result[u] = i;\n      }\n    }\n  }\n  u = result.length;\n  v = result[u - 1];\n  while (u-- > 0) {\n    result[u] = v;\n    v = p[v];\n  }\n  return result;\n}\nfunction locateNonHydratedAsyncRoot(instance) {\n  const subComponent = instance.subTree.component;\n  if (subComponent) {\n    if (subComponent.asyncDep && !subComponent.asyncResolved) {\n      return subComponent;\n    } else {\n      return locateNonHydratedAsyncRoot(subComponent);\n    }\n  }\n}\n\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === \"\");\nconst isTargetSVG = (target) => typeof SVGElement !== \"undefined\" && target instanceof SVGElement;\nconst isTargetMathML = (target) => typeof MathMLElement === \"function\" && target instanceof MathMLElement;\nconst resolveTarget = (props, select) => {\n  const targetSelector = props && props.to;\n  if (isString(targetSelector)) {\n    if (!select) {\n      !!(process.env.NODE_ENV !== \"production\") && warn$1(\n        `Current renderer does not support string target for Teleports. (missing querySelector renderer option)`\n      );\n      return null;\n    } else {\n      const target = select(targetSelector);\n      if (!target) {\n        !!(process.env.NODE_ENV !== \"production\") && warn$1(\n          `Failed to locate Teleport target with selector \"${targetSelector}\". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`\n        );\n      }\n      return target;\n    }\n  } else {\n    if (!!(process.env.NODE_ENV !== \"production\") && !targetSelector && !isTeleportDisabled(props)) {\n      warn$1(`Invalid Teleport target: ${targetSelector}`);\n    }\n    return targetSelector;\n  }\n};\nconst TeleportImpl = {\n  name: \"Teleport\",\n  __isTeleport: true,\n  process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) {\n    const {\n      mc: mountChildren,\n      pc: patchChildren,\n      pbc: patchBlockChildren,\n      o: { insert, querySelector, createText, createComment }\n    } = internals;\n    const disabled = isTeleportDisabled(n2.props);\n    let { shapeFlag, children, dynamicChildren } = n2;\n    if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n      optimized = false;\n      dynamicChildren = null;\n    }\n    if (n1 == null) {\n      const placeholder = n2.el = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport start\") : createText(\"\");\n      const mainAnchor = n2.anchor = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport end\") : createText(\"\");\n      insert(placeholder, container, anchor);\n      insert(mainAnchor, container, anchor);\n      const target = n2.target = resolveTarget(n2.props, querySelector);\n      const targetAnchor = n2.targetAnchor = createText(\"\");\n      if (target) {\n        insert(targetAnchor, target);\n        if (namespace === \"svg\" || isTargetSVG(target)) {\n          namespace = \"svg\";\n        } else if (namespace === \"mathml\" || isTargetMathML(target)) {\n          namespace = \"mathml\";\n        }\n      } else if (!!(process.env.NODE_ENV !== \"production\") && !disabled) {\n        warn$1(\"Invalid Teleport target on mount:\", target, `(${typeof target})`);\n      }\n      const mount = (container2, anchor2) => {\n        if (shapeFlag & 16) {\n          mountChildren(\n            children,\n            container2,\n            anchor2,\n            parentComponent,\n            parentSuspense,\n            namespace,\n            slotScopeIds,\n            optimized\n          );\n        }\n      };\n      if (disabled) {\n        mount(container, mainAnchor);\n      } else if (target) {\n        mount(target, targetAnchor);\n      }\n    } else {\n      n2.el = n1.el;\n      const mainAnchor = n2.anchor = n1.anchor;\n      const target = n2.target = n1.target;\n      const targetAnchor = n2.targetAnchor = n1.targetAnchor;\n      const wasDisabled = isTeleportDisabled(n1.props);\n      const currentContainer = wasDisabled ? container : target;\n      const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n      if (namespace === \"svg\" || isTargetSVG(target)) {\n        namespace = \"svg\";\n      } else if (namespace === \"mathml\" || isTargetMathML(target)) {\n        namespace = \"mathml\";\n      }\n      if (dynamicChildren) {\n        patchBlockChildren(\n          n1.dynamicChildren,\n          dynamicChildren,\n          currentContainer,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds\n        );\n        traverseStaticChildren(n1, n2, true);\n      } else if (!optimized) {\n        patchChildren(\n          n1,\n          n2,\n          currentContainer,\n          currentAnchor,\n          parentComponent,\n          parentSuspense,\n          namespace,\n          slotScopeIds,\n          false\n        );\n      }\n      if (disabled) {\n        if (!wasDisabled) {\n          moveTeleport(\n            n2,\n            container,\n            mainAnchor,\n            internals,\n            1\n          );\n        } else {\n          if (n2.props && n1.props && n2.props.to !== n1.props.to) {\n            n2.props.to = n1.props.to;\n          }\n        }\n      } else {\n        if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n          const nextTarget = n2.target = resolveTarget(\n            n2.props,\n            querySelector\n          );\n          if (nextTarget) {\n            moveTeleport(\n              n2,\n              nextTarget,\n              null,\n              internals,\n              0\n            );\n          } else if (!!(process.env.NODE_ENV !== \"production\")) {\n            warn$1(\n              \"Invalid Teleport target on update:\",\n              target,\n              `(${typeof target})`\n            );\n          }\n        } else if (wasDisabled) {\n          moveTeleport(\n            n2,\n            target,\n            targetAnchor,\n            internals,\n            1\n          );\n        }\n      }\n    }\n    updateCssVars(n2);\n  },\n  remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n    const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode;\n    if (target) {\n      hostRemove(targetAnchor);\n    }\n    doRemove && hostRemove(anchor);\n    if (shapeFlag & 16) {\n      const shouldRemove = doRemove || !isTeleportDisabled(props);\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        unmount(\n          child,\n          parentComponent,\n          parentSuspense,\n          shouldRemove,\n          !!child.dynamicChildren\n        );\n      }\n    }\n  },\n  move: moveTeleport,\n  hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {\n  if (moveType === 0) {\n    insert(vnode.targetAnchor, container, parentAnchor);\n  }\n  const { el, anchor, shapeFlag, children, props } = vnode;\n  const isReorder = moveType === 2;\n  if (isReorder) {\n    insert(el, container, parentAnchor);\n  }\n  if (!isReorder || isTeleportDisabled(props)) {\n    if (shapeFlag & 16) {\n      for (let i = 0; i < children.length; i++) {\n        move(\n          children[i],\n          container,\n          parentAnchor,\n          2\n        );\n      }\n    }\n  }\n  if (isReorder) {\n    insert(anchor, container, parentAnchor);\n  }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {\n  o: { nextSibling, parentNode, querySelector }\n}, hydrateChildren) {\n  const target = vnode.target = resolveTarget(\n    vnode.props,\n    querySelector\n  );\n  if (target) {\n    const targetNode = target._lpa || target.firstChild;\n    if (vnode.shapeFlag & 16) {\n      if (isTeleportDisabled(vnode.props)) {\n        vnode.anchor = hydrateChildren(\n          nextSibling(node),\n          vnode,\n          parentNode(node),\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n        vnode.targetAnchor = targetNode;\n      } else {\n        vnode.anchor = nextSibling(node);\n        let targetAnchor = targetNode;\n        while (targetAnchor) {\n          targetAnchor = nextSibling(targetAnchor);\n          if (targetAnchor && targetAnchor.nodeType === 8 && targetAnchor.data === \"teleport anchor\") {\n            vnode.targetAnchor = targetAnchor;\n            target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n            break;\n          }\n        }\n        hydrateChildren(\n          targetNode,\n          vnode,\n          target,\n          parentComponent,\n          parentSuspense,\n          slotScopeIds,\n          optimized\n        );\n      }\n    }\n    updateCssVars(vnode);\n  }\n  return vnode.anchor && nextSibling(vnode.anchor);\n}\nconst Teleport = TeleportImpl;\nfunction updateCssVars(vnode) {\n  const ctx = vnode.ctx;\n  if (ctx && ctx.ut) {\n    let node = vnode.children[0].el;\n    while (node && node !== vnode.targetAnchor) {\n      if (node.nodeType === 1)\n        node.setAttribute(\"data-v-owner\", ctx.uid);\n      node = node.nextSibling;\n    }\n    ctx.ut();\n  }\n}\n\nconst Fragment = Symbol.for(\"v-fgt\");\nconst Text = Symbol.for(\"v-txt\");\nconst Comment = Symbol.for(\"v-cmt\");\nconst Static = Symbol.for(\"v-stc\");\nconst blockStack = [];\nlet currentBlock = null;\nfunction openBlock(disableTracking = false) {\n  blockStack.push(currentBlock = disableTracking ? null : []);\n}\nfunction closeBlock() {\n  blockStack.pop();\n  currentBlock = blockStack[blockStack.length - 1] || null;\n}\nlet isBlockTreeEnabled = 1;\nfunction setBlockTracking(value) {\n  isBlockTreeEnabled += value;\n}\nfunction setupBlock(vnode) {\n  vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;\n  closeBlock();\n  if (isBlockTreeEnabled > 0 && currentBlock) {\n    currentBlock.push(vnode);\n  }\n  return vnode;\n}\nfunction createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {\n  return setupBlock(\n    createBaseVNode(\n      type,\n      props,\n      children,\n      patchFlag,\n      dynamicProps,\n      shapeFlag,\n      true\n    )\n  );\n}\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\n  return setupBlock(\n    createVNode(\n      type,\n      props,\n      children,\n      patchFlag,\n      dynamicProps,\n      true\n    )\n  );\n}\nfunction isVNode(value) {\n  return value ? value.__v_isVNode === true : false;\n}\nfunction isSameVNodeType(n1, n2) {\n  if (!!(process.env.NODE_ENV !== \"production\") && n2.shapeFlag & 6 && hmrDirtyComponents.has(n2.type)) {\n    n1.shapeFlag &= ~256;\n    n2.shapeFlag &= ~512;\n    return false;\n  }\n  return n1.type === n2.type && n1.key === n2.key;\n}\nlet vnodeArgsTransformer;\nfunction transformVNodeArgs(transformer) {\n  vnodeArgsTransformer = transformer;\n}\nconst createVNodeWithArgsTransform = (...args) => {\n  return _createVNode(\n    ...vnodeArgsTransformer ? vnodeArgsTransformer(args, currentRenderingInstance) : args\n  );\n};\nconst InternalObjectKey = `__vInternal`;\nconst normalizeKey = ({ key }) => key != null ? key : null;\nconst normalizeRef = ({\n  ref,\n  ref_key,\n  ref_for\n}) => {\n  if (typeof ref === \"number\") {\n    ref = \"\" + ref;\n  }\n  return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null;\n};\nfunction createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {\n  const vnode = {\n    __v_isVNode: true,\n    __v_skip: true,\n    type,\n    props,\n    key: props && normalizeKey(props),\n    ref: props && normalizeRef(props),\n    scopeId: currentScopeId,\n    slotScopeIds: null,\n    children,\n    component: null,\n    suspense: null,\n    ssContent: null,\n    ssFallback: null,\n    dirs: null,\n    transition: null,\n    el: null,\n    anchor: null,\n    target: null,\n    targetAnchor: null,\n    staticCount: 0,\n    shapeFlag,\n    patchFlag,\n    dynamicProps,\n    dynamicChildren: null,\n    appContext: null,\n    ctx: currentRenderingInstance\n  };\n  if (needFullChildrenNormalization) {\n    normalizeChildren(vnode, children);\n    if (shapeFlag & 128) {\n      type.normalize(vnode);\n    }\n  } else if (children) {\n    vnode.shapeFlag |= isString(children) ? 8 : 16;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && vnode.key !== vnode.key) {\n    warn$1(`VNode created with invalid key (NaN). VNode type:`, vnode.type);\n  }\n  if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself\n  !isBlockNode && // has current parent block\n  currentBlock && // presence of a patch flag indicates this node needs patching on updates.\n  // component nodes also should always be patched, because even if the\n  // component doesn't need to update, it needs to persist the instance on to\n  // the next vnode so that it can be properly unmounted later.\n  (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the\n  // vnode should not be considered dynamic due to handler caching.\n  vnode.patchFlag !== 32) {\n    currentBlock.push(vnode);\n  }\n  return vnode;\n}\nconst createVNode = !!(process.env.NODE_ENV !== \"production\") ? createVNodeWithArgsTransform : _createVNode;\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\n  if (!type || type === NULL_DYNAMIC_COMPONENT) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !type) {\n      warn$1(`Invalid vnode type when creating vnode: ${type}.`);\n    }\n    type = Comment;\n  }\n  if (isVNode(type)) {\n    const cloned = cloneVNode(\n      type,\n      props,\n      true\n      /* mergeRef: true */\n    );\n    if (children) {\n      normalizeChildren(cloned, children);\n    }\n    if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {\n      if (cloned.shapeFlag & 6) {\n        currentBlock[currentBlock.indexOf(type)] = cloned;\n      } else {\n        currentBlock.push(cloned);\n      }\n    }\n    cloned.patchFlag |= -2;\n    return cloned;\n  }\n  if (isClassComponent(type)) {\n    type = type.__vccOpts;\n  }\n  if (props) {\n    props = guardReactiveProps(props);\n    let { class: klass, style } = props;\n    if (klass && !isString(klass)) {\n      props.class = normalizeClass(klass);\n    }\n    if (isObject(style)) {\n      if (isProxy(style) && !isArray(style)) {\n        style = extend({}, style);\n      }\n      props.style = normalizeStyle(style);\n    }\n  }\n  const shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject(type) ? 4 : isFunction(type) ? 2 : 0;\n  if (!!(process.env.NODE_ENV !== \"production\") && shapeFlag & 4 && isProxy(type)) {\n    type = toRaw(type);\n    warn$1(\n      `Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with \\`markRaw\\` or using \\`shallowRef\\` instead of \\`ref\\`.`,\n      `\nComponent that was made reactive: `,\n      type\n    );\n  }\n  return createBaseVNode(\n    type,\n    props,\n    children,\n    patchFlag,\n    dynamicProps,\n    shapeFlag,\n    isBlockNode,\n    true\n  );\n}\nfunction guardReactiveProps(props) {\n  if (!props)\n    return null;\n  return isProxy(props) || InternalObjectKey in props ? extend({}, props) : props;\n}\nfunction cloneVNode(vnode, extraProps, mergeRef = false) {\n  const { props, ref, patchFlag, children } = vnode;\n  const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\n  const cloned = {\n    __v_isVNode: true,\n    __v_skip: true,\n    type: vnode.type,\n    props: mergedProps,\n    key: mergedProps && normalizeKey(mergedProps),\n    ref: extraProps && extraProps.ref ? (\n      // #2078 in the case of <component :is=\"vnode\" ref=\"extra\"/>\n      // if the vnode itself already has a ref, cloneVNode will need to merge\n      // the refs so the single vnode can be set on multiple refs\n      mergeRef && ref ? isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps)\n    ) : ref,\n    scopeId: vnode.scopeId,\n    slotScopeIds: vnode.slotScopeIds,\n    children: !!(process.env.NODE_ENV !== \"production\") && patchFlag === -1 && isArray(children) ? children.map(deepCloneVNode) : children,\n    target: vnode.target,\n    targetAnchor: vnode.targetAnchor,\n    staticCount: vnode.staticCount,\n    shapeFlag: vnode.shapeFlag,\n    // if the vnode is cloned with extra props, we can no longer assume its\n    // existing patch flag to be reliable and need to add the FULL_PROPS flag.\n    // note: preserve flag for fragments since they use the flag for children\n    // fast paths only.\n    patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag,\n    dynamicProps: vnode.dynamicProps,\n    dynamicChildren: vnode.dynamicChildren,\n    appContext: vnode.appContext,\n    dirs: vnode.dirs,\n    transition: vnode.transition,\n    // These should technically only be non-null on mounted VNodes. However,\n    // they *should* be copied for kept-alive vnodes. So we just always copy\n    // them since them being non-null during a mount doesn't affect the logic as\n    // they will simply be overwritten.\n    component: vnode.component,\n    suspense: vnode.suspense,\n    ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\n    ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\n    el: vnode.el,\n    anchor: vnode.anchor,\n    ctx: vnode.ctx,\n    ce: vnode.ce\n  };\n  return cloned;\n}\nfunction deepCloneVNode(vnode) {\n  const cloned = cloneVNode(vnode);\n  if (isArray(vnode.children)) {\n    cloned.children = vnode.children.map(deepCloneVNode);\n  }\n  return cloned;\n}\nfunction createTextVNode(text = \" \", flag = 0) {\n  return createVNode(Text, null, text, flag);\n}\nfunction createStaticVNode(content, numberOfNodes) {\n  const vnode = createVNode(Static, null, content);\n  vnode.staticCount = numberOfNodes;\n  return vnode;\n}\nfunction createCommentVNode(text = \"\", asBlock = false) {\n  return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text);\n}\nfunction normalizeVNode(child) {\n  if (child == null || typeof child === \"boolean\") {\n    return createVNode(Comment);\n  } else if (isArray(child)) {\n    return createVNode(\n      Fragment,\n      null,\n      // #3666, avoid reference pollution when reusing vnode\n      child.slice()\n    );\n  } else if (typeof child === \"object\") {\n    return cloneIfMounted(child);\n  } else {\n    return createVNode(Text, null, String(child));\n  }\n}\nfunction cloneIfMounted(child) {\n  return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child);\n}\nfunction normalizeChildren(vnode, children) {\n  let type = 0;\n  const { shapeFlag } = vnode;\n  if (children == null) {\n    children = null;\n  } else if (isArray(children)) {\n    type = 16;\n  } else if (typeof children === \"object\") {\n    if (shapeFlag & (1 | 64)) {\n      const slot = children.default;\n      if (slot) {\n        slot._c && (slot._d = false);\n        normalizeChildren(vnode, slot());\n        slot._c && (slot._d = true);\n      }\n      return;\n    } else {\n      type = 32;\n      const slotFlag = children._;\n      if (!slotFlag && !(InternalObjectKey in children)) {\n        children._ctx = currentRenderingInstance;\n      } else if (slotFlag === 3 && currentRenderingInstance) {\n        if (currentRenderingInstance.slots._ === 1) {\n          children._ = 1;\n        } else {\n          children._ = 2;\n          vnode.patchFlag |= 1024;\n        }\n      }\n    }\n  } else if (isFunction(children)) {\n    children = { default: children, _ctx: currentRenderingInstance };\n    type = 32;\n  } else {\n    children = String(children);\n    if (shapeFlag & 64) {\n      type = 16;\n      children = [createTextVNode(children)];\n    } else {\n      type = 8;\n    }\n  }\n  vnode.children = children;\n  vnode.shapeFlag |= type;\n}\nfunction mergeProps(...args) {\n  const ret = {};\n  for (let i = 0; i < args.length; i++) {\n    const toMerge = args[i];\n    for (const key in toMerge) {\n      if (key === \"class\") {\n        if (ret.class !== toMerge.class) {\n          ret.class = normalizeClass([ret.class, toMerge.class]);\n        }\n      } else if (key === \"style\") {\n        ret.style = normalizeStyle([ret.style, toMerge.style]);\n      } else if (isOn(key)) {\n        const existing = ret[key];\n        const incoming = toMerge[key];\n        if (incoming && existing !== incoming && !(isArray(existing) && existing.includes(incoming))) {\n          ret[key] = existing ? [].concat(existing, incoming) : incoming;\n        }\n      } else if (key !== \"\") {\n        ret[key] = toMerge[key];\n      }\n    }\n  }\n  return ret;\n}\nfunction invokeVNodeHook(hook, instance, vnode, prevVNode = null) {\n  callWithAsyncErrorHandling(hook, instance, 7, [\n    vnode,\n    prevVNode\n  ]);\n}\n\nconst emptyAppContext = createAppContext();\nlet uid = 0;\nfunction createComponentInstance(vnode, parent, suspense) {\n  const type = vnode.type;\n  const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\n  const instance = {\n    uid: uid++,\n    vnode,\n    type,\n    parent,\n    appContext,\n    root: null,\n    // to be immediately set\n    next: null,\n    subTree: null,\n    // will be set synchronously right after creation\n    effect: null,\n    update: null,\n    // will be set synchronously right after creation\n    scope: new EffectScope(\n      true\n      /* detached */\n    ),\n    render: null,\n    proxy: null,\n    exposed: null,\n    exposeProxy: null,\n    withProxy: null,\n    provides: parent ? parent.provides : Object.create(appContext.provides),\n    accessCache: null,\n    renderCache: [],\n    // local resolved assets\n    components: null,\n    directives: null,\n    // resolved props and emits options\n    propsOptions: normalizePropsOptions(type, appContext),\n    emitsOptions: normalizeEmitsOptions(type, appContext),\n    // emit\n    emit: null,\n    // to be set immediately\n    emitted: null,\n    // props default value\n    propsDefaults: EMPTY_OBJ,\n    // inheritAttrs\n    inheritAttrs: type.inheritAttrs,\n    // state\n    ctx: EMPTY_OBJ,\n    data: EMPTY_OBJ,\n    props: EMPTY_OBJ,\n    attrs: EMPTY_OBJ,\n    slots: EMPTY_OBJ,\n    refs: EMPTY_OBJ,\n    setupState: EMPTY_OBJ,\n    setupContext: null,\n    attrsProxy: null,\n    slotsProxy: null,\n    // suspense related\n    suspense,\n    suspenseId: suspense ? suspense.pendingId : 0,\n    asyncDep: null,\n    asyncResolved: false,\n    // lifecycle hooks\n    // not using enums here because it results in computed properties\n    isMounted: false,\n    isUnmounted: false,\n    isDeactivated: false,\n    bc: null,\n    c: null,\n    bm: null,\n    m: null,\n    bu: null,\n    u: null,\n    um: null,\n    bum: null,\n    da: null,\n    a: null,\n    rtg: null,\n    rtc: null,\n    ec: null,\n    sp: null\n  };\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    instance.ctx = createDevRenderContext(instance);\n  } else {\n    instance.ctx = { _: instance };\n  }\n  instance.root = parent ? parent.root : instance;\n  instance.emit = emit.bind(null, instance);\n  if (vnode.ce) {\n    vnode.ce(instance);\n  }\n  return instance;\n}\nlet currentInstance = null;\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\nlet internalSetCurrentInstance;\nlet setInSSRSetupState;\n{\n  const g = getGlobalThis();\n  const registerGlobalSetter = (key, setter) => {\n    let setters;\n    if (!(setters = g[key]))\n      setters = g[key] = [];\n    setters.push(setter);\n    return (v) => {\n      if (setters.length > 1)\n        setters.forEach((set) => set(v));\n      else\n        setters[0](v);\n    };\n  };\n  internalSetCurrentInstance = registerGlobalSetter(\n    `__VUE_INSTANCE_SETTERS__`,\n    (v) => currentInstance = v\n  );\n  setInSSRSetupState = registerGlobalSetter(\n    `__VUE_SSR_SETTERS__`,\n    (v) => isInSSRComponentSetup = v\n  );\n}\nconst setCurrentInstance = (instance) => {\n  const prev = currentInstance;\n  internalSetCurrentInstance(instance);\n  instance.scope.on();\n  return () => {\n    instance.scope.off();\n    internalSetCurrentInstance(prev);\n  };\n};\nconst unsetCurrentInstance = () => {\n  currentInstance && currentInstance.scope.off();\n  internalSetCurrentInstance(null);\n};\nconst isBuiltInTag = /* @__PURE__ */ makeMap(\"slot,component\");\nfunction validateComponentName(name, { isNativeTag }) {\n  if (isBuiltInTag(name) || isNativeTag(name)) {\n    warn$1(\n      \"Do not use built-in or reserved HTML elements as component id: \" + name\n    );\n  }\n}\nfunction isStatefulComponent(instance) {\n  return instance.vnode.shapeFlag & 4;\n}\nlet isInSSRComponentSetup = false;\nfunction setupComponent(instance, isSSR = false) {\n  isSSR && setInSSRSetupState(isSSR);\n  const { props, children } = instance.vnode;\n  const isStateful = isStatefulComponent(instance);\n  initProps(instance, props, isStateful, isSSR);\n  initSlots(instance, children);\n  const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;\n  isSSR && setInSSRSetupState(false);\n  return setupResult;\n}\nfunction setupStatefulComponent(instance, isSSR) {\n  var _a;\n  const Component = instance.type;\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    if (Component.name) {\n      validateComponentName(Component.name, instance.appContext.config);\n    }\n    if (Component.components) {\n      const names = Object.keys(Component.components);\n      for (let i = 0; i < names.length; i++) {\n        validateComponentName(names[i], instance.appContext.config);\n      }\n    }\n    if (Component.directives) {\n      const names = Object.keys(Component.directives);\n      for (let i = 0; i < names.length; i++) {\n        validateDirectiveName(names[i]);\n      }\n    }\n    if (Component.compilerOptions && isRuntimeOnly()) {\n      warn$1(\n        `\"compilerOptions\" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.`\n      );\n    }\n  }\n  instance.accessCache = /* @__PURE__ */ Object.create(null);\n  instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers));\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    exposePropsOnRenderContext(instance);\n  }\n  const { setup } = Component;\n  if (setup) {\n    const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null;\n    const reset = setCurrentInstance(instance);\n    pauseTracking();\n    const setupResult = callWithErrorHandling(\n      setup,\n      instance,\n      0,\n      [\n        !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(instance.props) : instance.props,\n        setupContext\n      ]\n    );\n    resetTracking();\n    reset();\n    if (isPromise(setupResult)) {\n      setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\n      if (isSSR) {\n        return setupResult.then((resolvedResult) => {\n          handleSetupResult(instance, resolvedResult, isSSR);\n        }).catch((e) => {\n          handleError(e, instance, 0);\n        });\n      } else {\n        instance.asyncDep = setupResult;\n        if (!!(process.env.NODE_ENV !== \"production\") && !instance.suspense) {\n          const name = (_a = Component.name) != null ? _a : \"Anonymous\";\n          warn$1(\n            `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.`\n          );\n        }\n      }\n    } else {\n      handleSetupResult(instance, setupResult, isSSR);\n    }\n  } else {\n    finishComponentSetup(instance, isSSR);\n  }\n}\nfunction handleSetupResult(instance, setupResult, isSSR) {\n  if (isFunction(setupResult)) {\n    if (instance.type.__ssrInlineRender) {\n      instance.ssrRender = setupResult;\n    } else {\n      instance.render = setupResult;\n    }\n  } else if (isObject(setupResult)) {\n    if (!!(process.env.NODE_ENV !== \"production\") && isVNode(setupResult)) {\n      warn$1(\n        `setup() should not return VNodes directly - return a render function instead.`\n      );\n    }\n    if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n      instance.devtoolsRawSetupState = setupResult;\n    }\n    instance.setupState = proxyRefs(setupResult);\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      exposeSetupStateOnRenderContext(instance);\n    }\n  } else if (!!(process.env.NODE_ENV !== \"production\") && setupResult !== void 0) {\n    warn$1(\n      `setup() should return an object. Received: ${setupResult === null ? \"null\" : typeof setupResult}`\n    );\n  }\n  finishComponentSetup(instance, isSSR);\n}\nlet compile;\nlet installWithProxy;\nfunction registerRuntimeCompiler(_compile) {\n  compile = _compile;\n  installWithProxy = (i) => {\n    if (i.render._rc) {\n      i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);\n    }\n  };\n}\nconst isRuntimeOnly = () => !compile;\nfunction finishComponentSetup(instance, isSSR, skipOptions) {\n  const Component = instance.type;\n  if (!instance.render) {\n    if (!isSSR && compile && !Component.render) {\n      const template = Component.template || resolveMergedOptions(instance).template;\n      if (template) {\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          startMeasure(instance, `compile`);\n        }\n        const { isCustomElement, compilerOptions } = instance.appContext.config;\n        const { delimiters, compilerOptions: componentCompilerOptions } = Component;\n        const finalCompilerOptions = extend(\n          extend(\n            {\n              isCustomElement,\n              delimiters\n            },\n            compilerOptions\n          ),\n          componentCompilerOptions\n        );\n        Component.render = compile(template, finalCompilerOptions);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          endMeasure(instance, `compile`);\n        }\n      }\n    }\n    instance.render = Component.render || NOOP;\n    if (installWithProxy) {\n      installWithProxy(instance);\n    }\n  }\n  if (__VUE_OPTIONS_API__ && true) {\n    const reset = setCurrentInstance(instance);\n    pauseTracking();\n    try {\n      applyOptions(instance);\n    } finally {\n      resetTracking();\n      reset();\n    }\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && !Component.render && instance.render === NOOP && !isSSR) {\n    if (!compile && Component.template) {\n      warn$1(\n        `Component provided template option but runtime compilation is not supported in this build of Vue.` + (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".` )\n      );\n    } else {\n      warn$1(`Component is missing template or render function.`);\n    }\n  }\n}\nfunction getAttrsProxy(instance) {\n  return instance.attrsProxy || (instance.attrsProxy = new Proxy(\n    instance.attrs,\n    !!(process.env.NODE_ENV !== \"production\") ? {\n      get(target, key) {\n        markAttrsAccessed();\n        track(instance, \"get\", \"$attrs\");\n        return target[key];\n      },\n      set() {\n        warn$1(`setupContext.attrs is readonly.`);\n        return false;\n      },\n      deleteProperty() {\n        warn$1(`setupContext.attrs is readonly.`);\n        return false;\n      }\n    } : {\n      get(target, key) {\n        track(instance, \"get\", \"$attrs\");\n        return target[key];\n      }\n    }\n  ));\n}\nfunction getSlotsProxy(instance) {\n  return instance.slotsProxy || (instance.slotsProxy = new Proxy(instance.slots, {\n    get(target, key) {\n      track(instance, \"get\", \"$slots\");\n      return target[key];\n    }\n  }));\n}\nfunction createSetupContext(instance) {\n  const expose = (exposed) => {\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      if (instance.exposed) {\n        warn$1(`expose() should be called only once per setup().`);\n      }\n      if (exposed != null) {\n        let exposedType = typeof exposed;\n        if (exposedType === \"object\") {\n          if (isArray(exposed)) {\n            exposedType = \"array\";\n          } else if (isRef(exposed)) {\n            exposedType = \"ref\";\n          }\n        }\n        if (exposedType !== \"object\") {\n          warn$1(\n            `expose() should be passed a plain object, received ${exposedType}.`\n          );\n        }\n      }\n    }\n    instance.exposed = exposed || {};\n  };\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    return Object.freeze({\n      get attrs() {\n        return getAttrsProxy(instance);\n      },\n      get slots() {\n        return getSlotsProxy(instance);\n      },\n      get emit() {\n        return (event, ...args) => instance.emit(event, ...args);\n      },\n      expose\n    });\n  } else {\n    return {\n      get attrs() {\n        return getAttrsProxy(instance);\n      },\n      slots: instance.slots,\n      emit: instance.emit,\n      expose\n    };\n  }\n}\nfunction getExposeProxy(instance) {\n  if (instance.exposed) {\n    return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {\n      get(target, key) {\n        if (key in target) {\n          return target[key];\n        } else if (key in publicPropertiesMap) {\n          return publicPropertiesMap[key](instance);\n        }\n      },\n      has(target, key) {\n        return key in target || key in publicPropertiesMap;\n      }\n    }));\n  }\n}\nconst classifyRE = /(?:^|[-_])(\\w)/g;\nconst classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, \"\");\nfunction getComponentName(Component, includeInferred = true) {\n  return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;\n}\nfunction formatComponentName(instance, Component, isRoot = false) {\n  let name = getComponentName(Component);\n  if (!name && Component.__file) {\n    const match = Component.__file.match(/([^/\\\\]+)\\.\\w+$/);\n    if (match) {\n      name = match[1];\n    }\n  }\n  if (!name && instance && instance.parent) {\n    const inferFromRegistry = (registry) => {\n      for (const key in registry) {\n        if (registry[key] === Component) {\n          return key;\n        }\n      }\n    };\n    name = inferFromRegistry(\n      instance.components || instance.parent.type.components\n    ) || inferFromRegistry(instance.appContext.components);\n  }\n  return name ? classify(name) : isRoot ? `App` : `Anonymous`;\n}\nfunction isClassComponent(value) {\n  return isFunction(value) && \"__vccOpts\" in value;\n}\n\nconst computed = (getterOrOptions, debugOptions) => {\n  const c = computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    const i = getCurrentInstance();\n    if (i && i.appContext.config.warnRecursiveComputed) {\n      c._warnRecursive = true;\n    }\n  }\n  return c;\n};\n\nfunction useModel(props, name, options = EMPTY_OBJ) {\n  const i = getCurrentInstance();\n  if (!!(process.env.NODE_ENV !== \"production\") && !i) {\n    warn$1(`useModel() called without active instance.`);\n    return ref();\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && !i.propsOptions[0][name]) {\n    warn$1(`useModel() called with prop \"${name}\" which is not declared.`);\n    return ref();\n  }\n  const camelizedName = camelize(name);\n  const hyphenatedName = hyphenate(name);\n  const res = customRef((track, trigger) => {\n    let localValue;\n    watchSyncEffect(() => {\n      const propValue = props[name];\n      if (hasChanged(localValue, propValue)) {\n        localValue = propValue;\n        trigger();\n      }\n    });\n    return {\n      get() {\n        track();\n        return options.get ? options.get(localValue) : localValue;\n      },\n      set(value) {\n        const rawProps = i.vnode.props;\n        if (!(rawProps && // check if parent has passed v-model\n        (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps)) && hasChanged(value, localValue)) {\n          localValue = value;\n          trigger();\n        }\n        i.emit(`update:${name}`, options.set ? options.set(value) : value);\n      }\n    };\n  });\n  const modifierKey = name === \"modelValue\" ? \"modelModifiers\" : `${name}Modifiers`;\n  res[Symbol.iterator] = () => {\n    let i2 = 0;\n    return {\n      next() {\n        if (i2 < 2) {\n          return { value: i2++ ? props[modifierKey] || {} : res, done: false };\n        } else {\n          return { done: true };\n        }\n      }\n    };\n  };\n  return res;\n}\n\nfunction h(type, propsOrChildren, children) {\n  const l = arguments.length;\n  if (l === 2) {\n    if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {\n      if (isVNode(propsOrChildren)) {\n        return createVNode(type, null, [propsOrChildren]);\n      }\n      return createVNode(type, propsOrChildren);\n    } else {\n      return createVNode(type, null, propsOrChildren);\n    }\n  } else {\n    if (l > 3) {\n      children = Array.prototype.slice.call(arguments, 2);\n    } else if (l === 3 && isVNode(children)) {\n      children = [children];\n    }\n    return createVNode(type, propsOrChildren, children);\n  }\n}\n\nfunction initCustomFormatter() {\n  if (!!!(process.env.NODE_ENV !== \"production\") || typeof window === \"undefined\") {\n    return;\n  }\n  const vueStyle = { style: \"color:#3ba776\" };\n  const numberStyle = { style: \"color:#1677ff\" };\n  const stringStyle = { style: \"color:#f5222d\" };\n  const keywordStyle = { style: \"color:#eb2f96\" };\n  const formatter = {\n    header(obj) {\n      if (!isObject(obj)) {\n        return null;\n      }\n      if (obj.__isVue) {\n        return [\"div\", vueStyle, `VueInstance`];\n      } else if (isRef(obj)) {\n        return [\n          \"div\",\n          {},\n          [\"span\", vueStyle, genRefFlag(obj)],\n          \"<\",\n          formatValue(obj.value),\n          `>`\n        ];\n      } else if (isReactive(obj)) {\n        return [\n          \"div\",\n          {},\n          [\"span\", vueStyle, isShallow(obj) ? \"ShallowReactive\" : \"Reactive\"],\n          \"<\",\n          formatValue(obj),\n          `>${isReadonly(obj) ? ` (readonly)` : ``}`\n        ];\n      } else if (isReadonly(obj)) {\n        return [\n          \"div\",\n          {},\n          [\"span\", vueStyle, isShallow(obj) ? \"ShallowReadonly\" : \"Readonly\"],\n          \"<\",\n          formatValue(obj),\n          \">\"\n        ];\n      }\n      return null;\n    },\n    hasBody(obj) {\n      return obj && obj.__isVue;\n    },\n    body(obj) {\n      if (obj && obj.__isVue) {\n        return [\n          \"div\",\n          {},\n          ...formatInstance(obj.$)\n        ];\n      }\n    }\n  };\n  function formatInstance(instance) {\n    const blocks = [];\n    if (instance.type.props && instance.props) {\n      blocks.push(createInstanceBlock(\"props\", toRaw(instance.props)));\n    }\n    if (instance.setupState !== EMPTY_OBJ) {\n      blocks.push(createInstanceBlock(\"setup\", instance.setupState));\n    }\n    if (instance.data !== EMPTY_OBJ) {\n      blocks.push(createInstanceBlock(\"data\", toRaw(instance.data)));\n    }\n    const computed = extractKeys(instance, \"computed\");\n    if (computed) {\n      blocks.push(createInstanceBlock(\"computed\", computed));\n    }\n    const injected = extractKeys(instance, \"inject\");\n    if (injected) {\n      blocks.push(createInstanceBlock(\"injected\", injected));\n    }\n    blocks.push([\n      \"div\",\n      {},\n      [\n        \"span\",\n        {\n          style: keywordStyle.style + \";opacity:0.66\"\n        },\n        \"$ (internal): \"\n      ],\n      [\"object\", { object: instance }]\n    ]);\n    return blocks;\n  }\n  function createInstanceBlock(type, target) {\n    target = extend({}, target);\n    if (!Object.keys(target).length) {\n      return [\"span\", {}];\n    }\n    return [\n      \"div\",\n      { style: \"line-height:1.25em;margin-bottom:0.6em\" },\n      [\n        \"div\",\n        {\n          style: \"color:#476582\"\n        },\n        type\n      ],\n      [\n        \"div\",\n        {\n          style: \"padding-left:1.25em\"\n        },\n        ...Object.keys(target).map((key) => {\n          return [\n            \"div\",\n            {},\n            [\"span\", keywordStyle, key + \": \"],\n            formatValue(target[key], false)\n          ];\n        })\n      ]\n    ];\n  }\n  function formatValue(v, asRaw = true) {\n    if (typeof v === \"number\") {\n      return [\"span\", numberStyle, v];\n    } else if (typeof v === \"string\") {\n      return [\"span\", stringStyle, JSON.stringify(v)];\n    } else if (typeof v === \"boolean\") {\n      return [\"span\", keywordStyle, v];\n    } else if (isObject(v)) {\n      return [\"object\", { object: asRaw ? toRaw(v) : v }];\n    } else {\n      return [\"span\", stringStyle, String(v)];\n    }\n  }\n  function extractKeys(instance, type) {\n    const Comp = instance.type;\n    if (isFunction(Comp)) {\n      return;\n    }\n    const extracted = {};\n    for (const key in instance.ctx) {\n      if (isKeyOfType(Comp, key, type)) {\n        extracted[key] = instance.ctx[key];\n      }\n    }\n    return extracted;\n  }\n  function isKeyOfType(Comp, key, type) {\n    const opts = Comp[type];\n    if (isArray(opts) && opts.includes(key) || isObject(opts) && key in opts) {\n      return true;\n    }\n    if (Comp.extends && isKeyOfType(Comp.extends, key, type)) {\n      return true;\n    }\n    if (Comp.mixins && Comp.mixins.some((m) => isKeyOfType(m, key, type))) {\n      return true;\n    }\n  }\n  function genRefFlag(v) {\n    if (isShallow(v)) {\n      return `ShallowRef`;\n    }\n    if (v.effect) {\n      return `ComputedRef`;\n    }\n    return `Ref`;\n  }\n  if (window.devtoolsFormatters) {\n    window.devtoolsFormatters.push(formatter);\n  } else {\n    window.devtoolsFormatters = [formatter];\n  }\n}\n\nfunction withMemo(memo, render, cache, index) {\n  const cached = cache[index];\n  if (cached && isMemoSame(cached, memo)) {\n    return cached;\n  }\n  const ret = render();\n  ret.memo = memo.slice();\n  return cache[index] = ret;\n}\nfunction isMemoSame(cached, memo) {\n  const prev = cached.memo;\n  if (prev.length != memo.length) {\n    return false;\n  }\n  for (let i = 0; i < prev.length; i++) {\n    if (hasChanged(prev[i], memo[i])) {\n      return false;\n    }\n  }\n  if (isBlockTreeEnabled > 0 && currentBlock) {\n    currentBlock.push(cached);\n  }\n  return true;\n}\n\nconst version = \"3.4.21\";\nconst warn = !!(process.env.NODE_ENV !== \"production\") ? warn$1 : NOOP;\nconst ErrorTypeStrings = ErrorTypeStrings$1 ;\nconst devtools = !!(process.env.NODE_ENV !== \"production\") || true ? devtools$1 : void 0;\nconst setDevtoolsHook = !!(process.env.NODE_ENV !== \"production\") || true ? setDevtoolsHook$1 : NOOP;\nconst _ssrUtils = {\n  createComponentInstance,\n  setupComponent,\n  renderComponentRoot,\n  setCurrentRenderingInstance,\n  isVNode: isVNode,\n  normalizeVNode\n};\nconst ssrUtils = _ssrUtils ;\nconst resolveFilter = null;\nconst compatUtils = null;\nconst DeprecationTypes = null;\n\nexport { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, Static, Suspense, Teleport, Text, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, cloneVNode, compatUtils, computed, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSlots, devtools, getCurrentInstance, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, initCustomFormatter, inject, isMemoSame, isRuntimeOnly, isVNode, mergeDefaults, mergeModels, mergeProps, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, pushScopeId, queuePostFlushCb, registerRuntimeCompiler, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, ssrContextKey, ssrUtils, toHandlers, transformVNodeArgs, useAttrs, useModel, useSSRContext, useSlots, useTransitionState, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withMemo, withScopeId };\n","/**\n* @vue/runtime-dom v3.4.21\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { h, BaseTransition, BaseTransitionPropsValidators, assertNumber, getCurrentInstance, warn, watchPostEffect, onMounted, onUnmounted, Fragment, Static, camelize, callWithAsyncErrorHandling, defineComponent, nextTick, createVNode, useTransitionState, onUpdated, toRaw, getTransitionRawChildren, setTransitionHooks, resolveTransitionHooks, isRuntimeOnly, createRenderer, createHydrationRenderer } from '@vue/runtime-core';\nexport * from '@vue/runtime-core';\nimport { extend, isObject, toNumber, isArray, isString, hyphenate, capitalize, isSpecialBooleanAttr, includeBooleanAttr, isOn, isModelListener, isFunction, camelize as camelize$1, EMPTY_OBJ, looseToNumber, looseIndexOf, isSet, looseEqual, invokeArrayFns, isHTMLTag, isSVGTag, isMathMLTag } from '@vue/shared';\n\nconst svgNS = \"http://www.w3.org/2000/svg\";\nconst mathmlNS = \"http://www.w3.org/1998/Math/MathML\";\nconst doc = typeof document !== \"undefined\" ? document : null;\nconst templateContainer = doc && /* @__PURE__ */ doc.createElement(\"template\");\nconst nodeOps = {\n  insert: (child, parent, anchor) => {\n    parent.insertBefore(child, anchor || null);\n  },\n  remove: (child) => {\n    const parent = child.parentNode;\n    if (parent) {\n      parent.removeChild(child);\n    }\n  },\n  createElement: (tag, namespace, is, props) => {\n    const el = namespace === \"svg\" ? doc.createElementNS(svgNS, tag) : namespace === \"mathml\" ? doc.createElementNS(mathmlNS, tag) : doc.createElement(tag, is ? { is } : void 0);\n    if (tag === \"select\" && props && props.multiple != null) {\n      el.setAttribute(\"multiple\", props.multiple);\n    }\n    return el;\n  },\n  createText: (text) => doc.createTextNode(text),\n  createComment: (text) => doc.createComment(text),\n  setText: (node, text) => {\n    node.nodeValue = text;\n  },\n  setElementText: (el, text) => {\n    el.textContent = text;\n  },\n  parentNode: (node) => node.parentNode,\n  nextSibling: (node) => node.nextSibling,\n  querySelector: (selector) => doc.querySelector(selector),\n  setScopeId(el, id) {\n    el.setAttribute(id, \"\");\n  },\n  // __UNSAFE__\n  // Reason: innerHTML.\n  // Static content here can only come from compiled templates.\n  // As long as the user only uses trusted templates, this is safe.\n  insertStaticContent(content, parent, anchor, namespace, start, end) {\n    const before = anchor ? anchor.previousSibling : parent.lastChild;\n    if (start && (start === end || start.nextSibling)) {\n      while (true) {\n        parent.insertBefore(start.cloneNode(true), anchor);\n        if (start === end || !(start = start.nextSibling))\n          break;\n      }\n    } else {\n      templateContainer.innerHTML = namespace === \"svg\" ? `<svg>${content}</svg>` : namespace === \"mathml\" ? `<math>${content}</math>` : content;\n      const template = templateContainer.content;\n      if (namespace === \"svg\" || namespace === \"mathml\") {\n        const wrapper = template.firstChild;\n        while (wrapper.firstChild) {\n          template.appendChild(wrapper.firstChild);\n        }\n        template.removeChild(wrapper);\n      }\n      parent.insertBefore(template, anchor);\n    }\n    return [\n      // first\n      before ? before.nextSibling : parent.firstChild,\n      // last\n      anchor ? anchor.previousSibling : parent.lastChild\n    ];\n  }\n};\n\nconst TRANSITION = \"transition\";\nconst ANIMATION = \"animation\";\nconst vtcKey = Symbol(\"_vtc\");\nconst Transition = (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots);\nTransition.displayName = \"Transition\";\nconst DOMTransitionPropsValidators = {\n  name: String,\n  type: String,\n  css: {\n    type: Boolean,\n    default: true\n  },\n  duration: [String, Number, Object],\n  enterFromClass: String,\n  enterActiveClass: String,\n  enterToClass: String,\n  appearFromClass: String,\n  appearActiveClass: String,\n  appearToClass: String,\n  leaveFromClass: String,\n  leaveActiveClass: String,\n  leaveToClass: String\n};\nconst TransitionPropsValidators = Transition.props = /* @__PURE__ */ extend(\n  {},\n  BaseTransitionPropsValidators,\n  DOMTransitionPropsValidators\n);\nconst callHook = (hook, args = []) => {\n  if (isArray(hook)) {\n    hook.forEach((h2) => h2(...args));\n  } else if (hook) {\n    hook(...args);\n  }\n};\nconst hasExplicitCallback = (hook) => {\n  return hook ? isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false;\n};\nfunction resolveTransitionProps(rawProps) {\n  const baseProps = {};\n  for (const key in rawProps) {\n    if (!(key in DOMTransitionPropsValidators)) {\n      baseProps[key] = rawProps[key];\n    }\n  }\n  if (rawProps.css === false) {\n    return baseProps;\n  }\n  const {\n    name = \"v\",\n    type,\n    duration,\n    enterFromClass = `${name}-enter-from`,\n    enterActiveClass = `${name}-enter-active`,\n    enterToClass = `${name}-enter-to`,\n    appearFromClass = enterFromClass,\n    appearActiveClass = enterActiveClass,\n    appearToClass = enterToClass,\n    leaveFromClass = `${name}-leave-from`,\n    leaveActiveClass = `${name}-leave-active`,\n    leaveToClass = `${name}-leave-to`\n  } = rawProps;\n  const durations = normalizeDuration(duration);\n  const enterDuration = durations && durations[0];\n  const leaveDuration = durations && durations[1];\n  const {\n    onBeforeEnter,\n    onEnter,\n    onEnterCancelled,\n    onLeave,\n    onLeaveCancelled,\n    onBeforeAppear = onBeforeEnter,\n    onAppear = onEnter,\n    onAppearCancelled = onEnterCancelled\n  } = baseProps;\n  const finishEnter = (el, isAppear, done) => {\n    removeTransitionClass(el, isAppear ? appearToClass : enterToClass);\n    removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);\n    done && done();\n  };\n  const finishLeave = (el, done) => {\n    el._isLeaving = false;\n    removeTransitionClass(el, leaveFromClass);\n    removeTransitionClass(el, leaveToClass);\n    removeTransitionClass(el, leaveActiveClass);\n    done && done();\n  };\n  const makeEnterHook = (isAppear) => {\n    return (el, done) => {\n      const hook = isAppear ? onAppear : onEnter;\n      const resolve = () => finishEnter(el, isAppear, done);\n      callHook(hook, [el, resolve]);\n      nextFrame(() => {\n        removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);\n        addTransitionClass(el, isAppear ? appearToClass : enterToClass);\n        if (!hasExplicitCallback(hook)) {\n          whenTransitionEnds(el, type, enterDuration, resolve);\n        }\n      });\n    };\n  };\n  return extend(baseProps, {\n    onBeforeEnter(el) {\n      callHook(onBeforeEnter, [el]);\n      addTransitionClass(el, enterFromClass);\n      addTransitionClass(el, enterActiveClass);\n    },\n    onBeforeAppear(el) {\n      callHook(onBeforeAppear, [el]);\n      addTransitionClass(el, appearFromClass);\n      addTransitionClass(el, appearActiveClass);\n    },\n    onEnter: makeEnterHook(false),\n    onAppear: makeEnterHook(true),\n    onLeave(el, done) {\n      el._isLeaving = true;\n      const resolve = () => finishLeave(el, done);\n      addTransitionClass(el, leaveFromClass);\n      forceReflow();\n      addTransitionClass(el, leaveActiveClass);\n      nextFrame(() => {\n        if (!el._isLeaving) {\n          return;\n        }\n        removeTransitionClass(el, leaveFromClass);\n        addTransitionClass(el, leaveToClass);\n        if (!hasExplicitCallback(onLeave)) {\n          whenTransitionEnds(el, type, leaveDuration, resolve);\n        }\n      });\n      callHook(onLeave, [el, resolve]);\n    },\n    onEnterCancelled(el) {\n      finishEnter(el, false);\n      callHook(onEnterCancelled, [el]);\n    },\n    onAppearCancelled(el) {\n      finishEnter(el, true);\n      callHook(onAppearCancelled, [el]);\n    },\n    onLeaveCancelled(el) {\n      finishLeave(el);\n      callHook(onLeaveCancelled, [el]);\n    }\n  });\n}\nfunction normalizeDuration(duration) {\n  if (duration == null) {\n    return null;\n  } else if (isObject(duration)) {\n    return [NumberOf(duration.enter), NumberOf(duration.leave)];\n  } else {\n    const n = NumberOf(duration);\n    return [n, n];\n  }\n}\nfunction NumberOf(val) {\n  const res = toNumber(val);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    assertNumber(res, \"<transition> explicit duration\");\n  }\n  return res;\n}\nfunction addTransitionClass(el, cls) {\n  cls.split(/\\s+/).forEach((c) => c && el.classList.add(c));\n  (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls);\n}\nfunction removeTransitionClass(el, cls) {\n  cls.split(/\\s+/).forEach((c) => c && el.classList.remove(c));\n  const _vtc = el[vtcKey];\n  if (_vtc) {\n    _vtc.delete(cls);\n    if (!_vtc.size) {\n      el[vtcKey] = void 0;\n    }\n  }\n}\nfunction nextFrame(cb) {\n  requestAnimationFrame(() => {\n    requestAnimationFrame(cb);\n  });\n}\nlet endId = 0;\nfunction whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {\n  const id = el._endId = ++endId;\n  const resolveIfNotStale = () => {\n    if (id === el._endId) {\n      resolve();\n    }\n  };\n  if (explicitTimeout) {\n    return setTimeout(resolveIfNotStale, explicitTimeout);\n  }\n  const { type, timeout, propCount } = getTransitionInfo(el, expectedType);\n  if (!type) {\n    return resolve();\n  }\n  const endEvent = type + \"end\";\n  let ended = 0;\n  const end = () => {\n    el.removeEventListener(endEvent, onEnd);\n    resolveIfNotStale();\n  };\n  const onEnd = (e) => {\n    if (e.target === el && ++ended >= propCount) {\n      end();\n    }\n  };\n  setTimeout(() => {\n    if (ended < propCount) {\n      end();\n    }\n  }, timeout + 1);\n  el.addEventListener(endEvent, onEnd);\n}\nfunction getTransitionInfo(el, expectedType) {\n  const styles = window.getComputedStyle(el);\n  const getStyleProperties = (key) => (styles[key] || \"\").split(\", \");\n  const transitionDelays = getStyleProperties(`${TRANSITION}Delay`);\n  const transitionDurations = getStyleProperties(`${TRANSITION}Duration`);\n  const transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n  const animationDelays = getStyleProperties(`${ANIMATION}Delay`);\n  const animationDurations = getStyleProperties(`${ANIMATION}Duration`);\n  const animationTimeout = getTimeout(animationDelays, animationDurations);\n  let type = null;\n  let timeout = 0;\n  let propCount = 0;\n  if (expectedType === TRANSITION) {\n    if (transitionTimeout > 0) {\n      type = TRANSITION;\n      timeout = transitionTimeout;\n      propCount = transitionDurations.length;\n    }\n  } else if (expectedType === ANIMATION) {\n    if (animationTimeout > 0) {\n      type = ANIMATION;\n      timeout = animationTimeout;\n      propCount = animationDurations.length;\n    }\n  } else {\n    timeout = Math.max(transitionTimeout, animationTimeout);\n    type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null;\n    propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0;\n  }\n  const hasTransform = type === TRANSITION && /\\b(transform|all)(,|$)/.test(\n    getStyleProperties(`${TRANSITION}Property`).toString()\n  );\n  return {\n    type,\n    timeout,\n    propCount,\n    hasTransform\n  };\n}\nfunction getTimeout(delays, durations) {\n  while (delays.length < durations.length) {\n    delays = delays.concat(delays);\n  }\n  return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));\n}\nfunction toMs(s) {\n  if (s === \"auto\")\n    return 0;\n  return Number(s.slice(0, -1).replace(\",\", \".\")) * 1e3;\n}\nfunction forceReflow() {\n  return document.body.offsetHeight;\n}\n\nfunction patchClass(el, value, isSVG) {\n  const transitionClasses = el[vtcKey];\n  if (transitionClasses) {\n    value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(\" \");\n  }\n  if (value == null) {\n    el.removeAttribute(\"class\");\n  } else if (isSVG) {\n    el.setAttribute(\"class\", value);\n  } else {\n    el.className = value;\n  }\n}\n\nconst vShowOriginalDisplay = Symbol(\"_vod\");\nconst vShowHidden = Symbol(\"_vsh\");\nconst vShow = {\n  beforeMount(el, { value }, { transition }) {\n    el[vShowOriginalDisplay] = el.style.display === \"none\" ? \"\" : el.style.display;\n    if (transition && value) {\n      transition.beforeEnter(el);\n    } else {\n      setDisplay(el, value);\n    }\n  },\n  mounted(el, { value }, { transition }) {\n    if (transition && value) {\n      transition.enter(el);\n    }\n  },\n  updated(el, { value, oldValue }, { transition }) {\n    if (!value === !oldValue)\n      return;\n    if (transition) {\n      if (value) {\n        transition.beforeEnter(el);\n        setDisplay(el, true);\n        transition.enter(el);\n      } else {\n        transition.leave(el, () => {\n          setDisplay(el, false);\n        });\n      }\n    } else {\n      setDisplay(el, value);\n    }\n  },\n  beforeUnmount(el, { value }) {\n    setDisplay(el, value);\n  }\n};\nif (!!(process.env.NODE_ENV !== \"production\")) {\n  vShow.name = \"show\";\n}\nfunction setDisplay(el, value) {\n  el.style.display = value ? el[vShowOriginalDisplay] : \"none\";\n  el[vShowHidden] = !value;\n}\nfunction initVShowForSSR() {\n  vShow.getSSRProps = ({ value }) => {\n    if (!value) {\n      return { style: { display: \"none\" } };\n    }\n  };\n}\n\nconst CSS_VAR_TEXT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"CSS_VAR_TEXT\" : \"\");\nfunction useCssVars(getter) {\n  const instance = getCurrentInstance();\n  if (!instance) {\n    !!(process.env.NODE_ENV !== \"production\") && warn(`useCssVars is called without current active component instance.`);\n    return;\n  }\n  const updateTeleports = instance.ut = (vars = getter(instance.proxy)) => {\n    Array.from(\n      document.querySelectorAll(`[data-v-owner=\"${instance.uid}\"]`)\n    ).forEach((node) => setVarsOnNode(node, vars));\n  };\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    instance.getCssVars = () => getter(instance.proxy);\n  }\n  const setVars = () => {\n    const vars = getter(instance.proxy);\n    setVarsOnVNode(instance.subTree, vars);\n    updateTeleports(vars);\n  };\n  watchPostEffect(setVars);\n  onMounted(() => {\n    const ob = new MutationObserver(setVars);\n    ob.observe(instance.subTree.el.parentNode, { childList: true });\n    onUnmounted(() => ob.disconnect());\n  });\n}\nfunction setVarsOnVNode(vnode, vars) {\n  if (vnode.shapeFlag & 128) {\n    const suspense = vnode.suspense;\n    vnode = suspense.activeBranch;\n    if (suspense.pendingBranch && !suspense.isHydrating) {\n      suspense.effects.push(() => {\n        setVarsOnVNode(suspense.activeBranch, vars);\n      });\n    }\n  }\n  while (vnode.component) {\n    vnode = vnode.component.subTree;\n  }\n  if (vnode.shapeFlag & 1 && vnode.el) {\n    setVarsOnNode(vnode.el, vars);\n  } else if (vnode.type === Fragment) {\n    vnode.children.forEach((c) => setVarsOnVNode(c, vars));\n  } else if (vnode.type === Static) {\n    let { el, anchor } = vnode;\n    while (el) {\n      setVarsOnNode(el, vars);\n      if (el === anchor)\n        break;\n      el = el.nextSibling;\n    }\n  }\n}\nfunction setVarsOnNode(el, vars) {\n  if (el.nodeType === 1) {\n    const style = el.style;\n    let cssText = \"\";\n    for (const key in vars) {\n      style.setProperty(`--${key}`, vars[key]);\n      cssText += `--${key}: ${vars[key]};`;\n    }\n    style[CSS_VAR_TEXT] = cssText;\n  }\n}\n\nconst displayRE = /(^|;)\\s*display\\s*:/;\nfunction patchStyle(el, prev, next) {\n  const style = el.style;\n  const isCssString = isString(next);\n  let hasControlledDisplay = false;\n  if (next && !isCssString) {\n    if (prev) {\n      if (!isString(prev)) {\n        for (const key in prev) {\n          if (next[key] == null) {\n            setStyle(style, key, \"\");\n          }\n        }\n      } else {\n        for (const prevStyle of prev.split(\";\")) {\n          const key = prevStyle.slice(0, prevStyle.indexOf(\":\")).trim();\n          if (next[key] == null) {\n            setStyle(style, key, \"\");\n          }\n        }\n      }\n    }\n    for (const key in next) {\n      if (key === \"display\") {\n        hasControlledDisplay = true;\n      }\n      setStyle(style, key, next[key]);\n    }\n  } else {\n    if (isCssString) {\n      if (prev !== next) {\n        const cssVarText = style[CSS_VAR_TEXT];\n        if (cssVarText) {\n          next += \";\" + cssVarText;\n        }\n        style.cssText = next;\n        hasControlledDisplay = displayRE.test(next);\n      }\n    } else if (prev) {\n      el.removeAttribute(\"style\");\n    }\n  }\n  if (vShowOriginalDisplay in el) {\n    el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : \"\";\n    if (el[vShowHidden]) {\n      style.display = \"none\";\n    }\n  }\n}\nconst semicolonRE = /[^\\\\];\\s*$/;\nconst importantRE = /\\s*!important$/;\nfunction setStyle(style, name, val) {\n  if (isArray(val)) {\n    val.forEach((v) => setStyle(style, name, v));\n  } else {\n    if (val == null)\n      val = \"\";\n    if (!!(process.env.NODE_ENV !== \"production\")) {\n      if (semicolonRE.test(val)) {\n        warn(\n          `Unexpected semicolon at the end of '${name}' style value: '${val}'`\n        );\n      }\n    }\n    if (name.startsWith(\"--\")) {\n      style.setProperty(name, val);\n    } else {\n      const prefixed = autoPrefix(style, name);\n      if (importantRE.test(val)) {\n        style.setProperty(\n          hyphenate(prefixed),\n          val.replace(importantRE, \"\"),\n          \"important\"\n        );\n      } else {\n        style[prefixed] = val;\n      }\n    }\n  }\n}\nconst prefixes = [\"Webkit\", \"Moz\", \"ms\"];\nconst prefixCache = {};\nfunction autoPrefix(style, rawName) {\n  const cached = prefixCache[rawName];\n  if (cached) {\n    return cached;\n  }\n  let name = camelize(rawName);\n  if (name !== \"filter\" && name in style) {\n    return prefixCache[rawName] = name;\n  }\n  name = capitalize(name);\n  for (let i = 0; i < prefixes.length; i++) {\n    const prefixed = prefixes[i] + name;\n    if (prefixed in style) {\n      return prefixCache[rawName] = prefixed;\n    }\n  }\n  return rawName;\n}\n\nconst xlinkNS = \"http://www.w3.org/1999/xlink\";\nfunction patchAttr(el, key, value, isSVG, instance) {\n  if (isSVG && key.startsWith(\"xlink:\")) {\n    if (value == null) {\n      el.removeAttributeNS(xlinkNS, key.slice(6, key.length));\n    } else {\n      el.setAttributeNS(xlinkNS, key, value);\n    }\n  } else {\n    const isBoolean = isSpecialBooleanAttr(key);\n    if (value == null || isBoolean && !includeBooleanAttr(value)) {\n      el.removeAttribute(key);\n    } else {\n      el.setAttribute(key, isBoolean ? \"\" : value);\n    }\n  }\n}\n\nfunction patchDOMProp(el, key, value, prevChildren, parentComponent, parentSuspense, unmountChildren) {\n  if (key === \"innerHTML\" || key === \"textContent\") {\n    if (prevChildren) {\n      unmountChildren(prevChildren, parentComponent, parentSuspense);\n    }\n    el[key] = value == null ? \"\" : value;\n    return;\n  }\n  const tag = el.tagName;\n  if (key === \"value\" && tag !== \"PROGRESS\" && // custom elements may use _value internally\n  !tag.includes(\"-\")) {\n    const oldValue = tag === \"OPTION\" ? el.getAttribute(\"value\") || \"\" : el.value;\n    const newValue = value == null ? \"\" : value;\n    if (oldValue !== newValue || !(\"_value\" in el)) {\n      el.value = newValue;\n    }\n    if (value == null) {\n      el.removeAttribute(key);\n    }\n    el._value = value;\n    return;\n  }\n  let needRemove = false;\n  if (value === \"\" || value == null) {\n    const type = typeof el[key];\n    if (type === \"boolean\") {\n      value = includeBooleanAttr(value);\n    } else if (value == null && type === \"string\") {\n      value = \"\";\n      needRemove = true;\n    } else if (type === \"number\") {\n      value = 0;\n      needRemove = true;\n    }\n  }\n  try {\n    el[key] = value;\n  } catch (e) {\n    if (!!(process.env.NODE_ENV !== \"production\") && !needRemove) {\n      warn(\n        `Failed setting prop \"${key}\" on <${tag.toLowerCase()}>: value ${value} is invalid.`,\n        e\n      );\n    }\n  }\n  needRemove && el.removeAttribute(key);\n}\n\nfunction addEventListener(el, event, handler, options) {\n  el.addEventListener(event, handler, options);\n}\nfunction removeEventListener(el, event, handler, options) {\n  el.removeEventListener(event, handler, options);\n}\nconst veiKey = Symbol(\"_vei\");\nfunction patchEvent(el, rawName, prevValue, nextValue, instance = null) {\n  const invokers = el[veiKey] || (el[veiKey] = {});\n  const existingInvoker = invokers[rawName];\n  if (nextValue && existingInvoker) {\n    existingInvoker.value = nextValue;\n  } else {\n    const [name, options] = parseName(rawName);\n    if (nextValue) {\n      const invoker = invokers[rawName] = createInvoker(nextValue, instance);\n      addEventListener(el, name, invoker, options);\n    } else if (existingInvoker) {\n      removeEventListener(el, name, existingInvoker, options);\n      invokers[rawName] = void 0;\n    }\n  }\n}\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\nfunction parseName(name) {\n  let options;\n  if (optionsModifierRE.test(name)) {\n    options = {};\n    let m;\n    while (m = name.match(optionsModifierRE)) {\n      name = name.slice(0, name.length - m[0].length);\n      options[m[0].toLowerCase()] = true;\n    }\n  }\n  const event = name[2] === \":\" ? name.slice(3) : hyphenate(name.slice(2));\n  return [event, options];\n}\nlet cachedNow = 0;\nconst p = /* @__PURE__ */ Promise.resolve();\nconst getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now());\nfunction createInvoker(initialValue, instance) {\n  const invoker = (e) => {\n    if (!e._vts) {\n      e._vts = Date.now();\n    } else if (e._vts <= invoker.attached) {\n      return;\n    }\n    callWithAsyncErrorHandling(\n      patchStopImmediatePropagation(e, invoker.value),\n      instance,\n      5,\n      [e]\n    );\n  };\n  invoker.value = initialValue;\n  invoker.attached = getNow();\n  return invoker;\n}\nfunction patchStopImmediatePropagation(e, value) {\n  if (isArray(value)) {\n    const originalStop = e.stopImmediatePropagation;\n    e.stopImmediatePropagation = () => {\n      originalStop.call(e);\n      e._stopped = true;\n    };\n    return value.map((fn) => (e2) => !e2._stopped && fn && fn(e2));\n  } else {\n    return value;\n  }\n}\n\nconst isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter\nkey.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;\nconst patchProp = (el, key, prevValue, nextValue, namespace, prevChildren, parentComponent, parentSuspense, unmountChildren) => {\n  const isSVG = namespace === \"svg\";\n  if (key === \"class\") {\n    patchClass(el, nextValue, isSVG);\n  } else if (key === \"style\") {\n    patchStyle(el, prevValue, nextValue);\n  } else if (isOn(key)) {\n    if (!isModelListener(key)) {\n      patchEvent(el, key, prevValue, nextValue, parentComponent);\n    }\n  } else if (key[0] === \".\" ? (key = key.slice(1), true) : key[0] === \"^\" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) {\n    patchDOMProp(\n      el,\n      key,\n      nextValue,\n      prevChildren,\n      parentComponent,\n      parentSuspense,\n      unmountChildren\n    );\n  } else {\n    if (key === \"true-value\") {\n      el._trueValue = nextValue;\n    } else if (key === \"false-value\") {\n      el._falseValue = nextValue;\n    }\n    patchAttr(el, key, nextValue, isSVG);\n  }\n};\nfunction shouldSetAsProp(el, key, value, isSVG) {\n  if (isSVG) {\n    if (key === \"innerHTML\" || key === \"textContent\") {\n      return true;\n    }\n    if (key in el && isNativeOn(key) && isFunction(value)) {\n      return true;\n    }\n    return false;\n  }\n  if (key === \"spellcheck\" || key === \"draggable\" || key === \"translate\") {\n    return false;\n  }\n  if (key === \"form\") {\n    return false;\n  }\n  if (key === \"list\" && el.tagName === \"INPUT\") {\n    return false;\n  }\n  if (key === \"type\" && el.tagName === \"TEXTAREA\") {\n    return false;\n  }\n  if (key === \"width\" || key === \"height\") {\n    const tag = el.tagName;\n    if (tag === \"IMG\" || tag === \"VIDEO\" || tag === \"CANVAS\" || tag === \"SOURCE\") {\n      return false;\n    }\n  }\n  if (isNativeOn(key) && isString(value)) {\n    return false;\n  }\n  return key in el;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineCustomElement(options, hydrate2) {\n  const Comp = defineComponent(options);\n  class VueCustomElement extends VueElement {\n    constructor(initialProps) {\n      super(Comp, initialProps, hydrate2);\n    }\n  }\n  VueCustomElement.def = Comp;\n  return VueCustomElement;\n}\n/*! #__NO_SIDE_EFFECTS__ */\nconst defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options) => {\n  return /* @__PURE__ */ defineCustomElement(options, hydrate);\n};\nconst BaseClass = typeof HTMLElement !== \"undefined\" ? HTMLElement : class {\n};\nclass VueElement extends BaseClass {\n  constructor(_def, _props = {}, hydrate2) {\n    super();\n    this._def = _def;\n    this._props = _props;\n    /**\n     * @internal\n     */\n    this._instance = null;\n    this._connected = false;\n    this._resolved = false;\n    this._numberProps = null;\n    this._ob = null;\n    if (this.shadowRoot && hydrate2) {\n      hydrate2(this._createVNode(), this.shadowRoot);\n    } else {\n      if (!!(process.env.NODE_ENV !== \"production\") && this.shadowRoot) {\n        warn(\n          `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \\`defineSSRCustomElement\\`.`\n        );\n      }\n      this.attachShadow({ mode: \"open\" });\n      if (!this._def.__asyncLoader) {\n        this._resolveProps(this._def);\n      }\n    }\n  }\n  connectedCallback() {\n    this._connected = true;\n    if (!this._instance) {\n      if (this._resolved) {\n        this._update();\n      } else {\n        this._resolveDef();\n      }\n    }\n  }\n  disconnectedCallback() {\n    this._connected = false;\n    if (this._ob) {\n      this._ob.disconnect();\n      this._ob = null;\n    }\n    nextTick(() => {\n      if (!this._connected) {\n        render(null, this.shadowRoot);\n        this._instance = null;\n      }\n    });\n  }\n  /**\n   * resolve inner component definition (handle possible async component)\n   */\n  _resolveDef() {\n    this._resolved = true;\n    for (let i = 0; i < this.attributes.length; i++) {\n      this._setAttr(this.attributes[i].name);\n    }\n    this._ob = new MutationObserver((mutations) => {\n      for (const m of mutations) {\n        this._setAttr(m.attributeName);\n      }\n    });\n    this._ob.observe(this, { attributes: true });\n    const resolve = (def, isAsync = false) => {\n      const { props, styles } = def;\n      let numberProps;\n      if (props && !isArray(props)) {\n        for (const key in props) {\n          const opt = props[key];\n          if (opt === Number || opt && opt.type === Number) {\n            if (key in this._props) {\n              this._props[key] = toNumber(this._props[key]);\n            }\n            (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[camelize$1(key)] = true;\n          }\n        }\n      }\n      this._numberProps = numberProps;\n      if (isAsync) {\n        this._resolveProps(def);\n      }\n      this._applyStyles(styles);\n      this._update();\n    };\n    const asyncDef = this._def.__asyncLoader;\n    if (asyncDef) {\n      asyncDef().then((def) => resolve(def, true));\n    } else {\n      resolve(this._def);\n    }\n  }\n  _resolveProps(def) {\n    const { props } = def;\n    const declaredPropKeys = isArray(props) ? props : Object.keys(props || {});\n    for (const key of Object.keys(this)) {\n      if (key[0] !== \"_\" && declaredPropKeys.includes(key)) {\n        this._setProp(key, this[key], true, false);\n      }\n    }\n    for (const key of declaredPropKeys.map(camelize$1)) {\n      Object.defineProperty(this, key, {\n        get() {\n          return this._getProp(key);\n        },\n        set(val) {\n          this._setProp(key, val);\n        }\n      });\n    }\n  }\n  _setAttr(key) {\n    let value = this.getAttribute(key);\n    const camelKey = camelize$1(key);\n    if (this._numberProps && this._numberProps[camelKey]) {\n      value = toNumber(value);\n    }\n    this._setProp(camelKey, value, false);\n  }\n  /**\n   * @internal\n   */\n  _getProp(key) {\n    return this._props[key];\n  }\n  /**\n   * @internal\n   */\n  _setProp(key, val, shouldReflect = true, shouldUpdate = true) {\n    if (val !== this._props[key]) {\n      this._props[key] = val;\n      if (shouldUpdate && this._instance) {\n        this._update();\n      }\n      if (shouldReflect) {\n        if (val === true) {\n          this.setAttribute(hyphenate(key), \"\");\n        } else if (typeof val === \"string\" || typeof val === \"number\") {\n          this.setAttribute(hyphenate(key), val + \"\");\n        } else if (!val) {\n          this.removeAttribute(hyphenate(key));\n        }\n      }\n    }\n  }\n  _update() {\n    render(this._createVNode(), this.shadowRoot);\n  }\n  _createVNode() {\n    const vnode = createVNode(this._def, extend({}, this._props));\n    if (!this._instance) {\n      vnode.ce = (instance) => {\n        this._instance = instance;\n        instance.isCE = true;\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          instance.ceReload = (newStyles) => {\n            if (this._styles) {\n              this._styles.forEach((s) => this.shadowRoot.removeChild(s));\n              this._styles.length = 0;\n            }\n            this._applyStyles(newStyles);\n            this._instance = null;\n            this._update();\n          };\n        }\n        const dispatch = (event, args) => {\n          this.dispatchEvent(\n            new CustomEvent(event, {\n              detail: args\n            })\n          );\n        };\n        instance.emit = (event, ...args) => {\n          dispatch(event, args);\n          if (hyphenate(event) !== event) {\n            dispatch(hyphenate(event), args);\n          }\n        };\n        let parent = this;\n        while (parent = parent && (parent.parentNode || parent.host)) {\n          if (parent instanceof VueElement) {\n            instance.parent = parent._instance;\n            instance.provides = parent._instance.provides;\n            break;\n          }\n        }\n      };\n    }\n    return vnode;\n  }\n  _applyStyles(styles) {\n    if (styles) {\n      styles.forEach((css) => {\n        const s = document.createElement(\"style\");\n        s.textContent = css;\n        this.shadowRoot.appendChild(s);\n        if (!!(process.env.NODE_ENV !== \"production\")) {\n          (this._styles || (this._styles = [])).push(s);\n        }\n      });\n    }\n  }\n}\n\nfunction useCssModule(name = \"$style\") {\n  {\n    const instance = getCurrentInstance();\n    if (!instance) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(`useCssModule must be called inside setup()`);\n      return EMPTY_OBJ;\n    }\n    const modules = instance.type.__cssModules;\n    if (!modules) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(`Current instance does not have CSS modules injected.`);\n      return EMPTY_OBJ;\n    }\n    const mod = modules[name];\n    if (!mod) {\n      !!(process.env.NODE_ENV !== \"production\") && warn(`Current instance does not have CSS module named \"${name}\".`);\n      return EMPTY_OBJ;\n    }\n    return mod;\n  }\n}\n\nconst positionMap = /* @__PURE__ */ new WeakMap();\nconst newPositionMap = /* @__PURE__ */ new WeakMap();\nconst moveCbKey = Symbol(\"_moveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nconst TransitionGroupImpl = {\n  name: \"TransitionGroup\",\n  props: /* @__PURE__ */ extend({}, TransitionPropsValidators, {\n    tag: String,\n    moveClass: String\n  }),\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const state = useTransitionState();\n    let prevChildren;\n    let children;\n    onUpdated(() => {\n      if (!prevChildren.length) {\n        return;\n      }\n      const moveClass = props.moveClass || `${props.name || \"v\"}-move`;\n      if (!hasCSSTransform(\n        prevChildren[0].el,\n        instance.vnode.el,\n        moveClass\n      )) {\n        return;\n      }\n      prevChildren.forEach(callPendingCbs);\n      prevChildren.forEach(recordPosition);\n      const movedChildren = prevChildren.filter(applyTranslation);\n      forceReflow();\n      movedChildren.forEach((c) => {\n        const el = c.el;\n        const style = el.style;\n        addTransitionClass(el, moveClass);\n        style.transform = style.webkitTransform = style.transitionDuration = \"\";\n        const cb = el[moveCbKey] = (e) => {\n          if (e && e.target !== el) {\n            return;\n          }\n          if (!e || /transform$/.test(e.propertyName)) {\n            el.removeEventListener(\"transitionend\", cb);\n            el[moveCbKey] = null;\n            removeTransitionClass(el, moveClass);\n          }\n        };\n        el.addEventListener(\"transitionend\", cb);\n      });\n    });\n    return () => {\n      const rawProps = toRaw(props);\n      const cssTransitionProps = resolveTransitionProps(rawProps);\n      let tag = rawProps.tag || Fragment;\n      prevChildren = children;\n      children = slots.default ? getTransitionRawChildren(slots.default()) : [];\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i];\n        if (child.key != null) {\n          setTransitionHooks(\n            child,\n            resolveTransitionHooks(child, cssTransitionProps, state, instance)\n          );\n        } else if (!!(process.env.NODE_ENV !== \"production\")) {\n          warn(`<TransitionGroup> children must be keyed.`);\n        }\n      }\n      if (prevChildren) {\n        for (let i = 0; i < prevChildren.length; i++) {\n          const child = prevChildren[i];\n          setTransitionHooks(\n            child,\n            resolveTransitionHooks(child, cssTransitionProps, state, instance)\n          );\n          positionMap.set(child, child.el.getBoundingClientRect());\n        }\n      }\n      return createVNode(tag, null, children);\n    };\n  }\n};\nconst removeMode = (props) => delete props.mode;\n/* @__PURE__ */ removeMode(TransitionGroupImpl.props);\nconst TransitionGroup = TransitionGroupImpl;\nfunction callPendingCbs(c) {\n  const el = c.el;\n  if (el[moveCbKey]) {\n    el[moveCbKey]();\n  }\n  if (el[enterCbKey]) {\n    el[enterCbKey]();\n  }\n}\nfunction recordPosition(c) {\n  newPositionMap.set(c, c.el.getBoundingClientRect());\n}\nfunction applyTranslation(c) {\n  const oldPos = positionMap.get(c);\n  const newPos = newPositionMap.get(c);\n  const dx = oldPos.left - newPos.left;\n  const dy = oldPos.top - newPos.top;\n  if (dx || dy) {\n    const s = c.el.style;\n    s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;\n    s.transitionDuration = \"0s\";\n    return c;\n  }\n}\nfunction hasCSSTransform(el, root, moveClass) {\n  const clone = el.cloneNode();\n  const _vtc = el[vtcKey];\n  if (_vtc) {\n    _vtc.forEach((cls) => {\n      cls.split(/\\s+/).forEach((c) => c && clone.classList.remove(c));\n    });\n  }\n  moveClass.split(/\\s+/).forEach((c) => c && clone.classList.add(c));\n  clone.style.display = \"none\";\n  const container = root.nodeType === 1 ? root : root.parentNode;\n  container.appendChild(clone);\n  const { hasTransform } = getTransitionInfo(clone);\n  container.removeChild(clone);\n  return hasTransform;\n}\n\nconst getModelAssigner = (vnode) => {\n  const fn = vnode.props[\"onUpdate:modelValue\"] || false;\n  return isArray(fn) ? (value) => invokeArrayFns(fn, value) : fn;\n};\nfunction onCompositionStart(e) {\n  e.target.composing = true;\n}\nfunction onCompositionEnd(e) {\n  const target = e.target;\n  if (target.composing) {\n    target.composing = false;\n    target.dispatchEvent(new Event(\"input\"));\n  }\n}\nconst assignKey = Symbol(\"_assign\");\nconst vModelText = {\n  created(el, { modifiers: { lazy, trim, number } }, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    const castToNumber = number || vnode.props && vnode.props.type === \"number\";\n    addEventListener(el, lazy ? \"change\" : \"input\", (e) => {\n      if (e.target.composing)\n        return;\n      let domValue = el.value;\n      if (trim) {\n        domValue = domValue.trim();\n      }\n      if (castToNumber) {\n        domValue = looseToNumber(domValue);\n      }\n      el[assignKey](domValue);\n    });\n    if (trim) {\n      addEventListener(el, \"change\", () => {\n        el.value = el.value.trim();\n      });\n    }\n    if (!lazy) {\n      addEventListener(el, \"compositionstart\", onCompositionStart);\n      addEventListener(el, \"compositionend\", onCompositionEnd);\n      addEventListener(el, \"change\", onCompositionEnd);\n    }\n  },\n  // set value on mounted so it's after min/max for type=\"range\"\n  mounted(el, { value }) {\n    el.value = value == null ? \"\" : value;\n  },\n  beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    if (el.composing)\n      return;\n    const elValue = number || el.type === \"number\" ? looseToNumber(el.value) : el.value;\n    const newValue = value == null ? \"\" : value;\n    if (elValue === newValue) {\n      return;\n    }\n    if (document.activeElement === el && el.type !== \"range\") {\n      if (lazy) {\n        return;\n      }\n      if (trim && el.value.trim() === newValue) {\n        return;\n      }\n    }\n    el.value = newValue;\n  }\n};\nconst vModelCheckbox = {\n  // #4096 array checkboxes need to be deep traversed\n  deep: true,\n  created(el, _, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    addEventListener(el, \"change\", () => {\n      const modelValue = el._modelValue;\n      const elementValue = getValue(el);\n      const checked = el.checked;\n      const assign = el[assignKey];\n      if (isArray(modelValue)) {\n        const index = looseIndexOf(modelValue, elementValue);\n        const found = index !== -1;\n        if (checked && !found) {\n          assign(modelValue.concat(elementValue));\n        } else if (!checked && found) {\n          const filtered = [...modelValue];\n          filtered.splice(index, 1);\n          assign(filtered);\n        }\n      } else if (isSet(modelValue)) {\n        const cloned = new Set(modelValue);\n        if (checked) {\n          cloned.add(elementValue);\n        } else {\n          cloned.delete(elementValue);\n        }\n        assign(cloned);\n      } else {\n        assign(getCheckboxValue(el, checked));\n      }\n    });\n  },\n  // set initial checked on mount to wait for true-value/false-value\n  mounted: setChecked,\n  beforeUpdate(el, binding, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    setChecked(el, binding, vnode);\n  }\n};\nfunction setChecked(el, { value, oldValue }, vnode) {\n  el._modelValue = value;\n  if (isArray(value)) {\n    el.checked = looseIndexOf(value, vnode.props.value) > -1;\n  } else if (isSet(value)) {\n    el.checked = value.has(vnode.props.value);\n  } else if (value !== oldValue) {\n    el.checked = looseEqual(value, getCheckboxValue(el, true));\n  }\n}\nconst vModelRadio = {\n  created(el, { value }, vnode) {\n    el.checked = looseEqual(value, vnode.props.value);\n    el[assignKey] = getModelAssigner(vnode);\n    addEventListener(el, \"change\", () => {\n      el[assignKey](getValue(el));\n    });\n  },\n  beforeUpdate(el, { value, oldValue }, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n    if (value !== oldValue) {\n      el.checked = looseEqual(value, vnode.props.value);\n    }\n  }\n};\nconst vModelSelect = {\n  // <select multiple> value need to be deep traversed\n  deep: true,\n  created(el, { value, modifiers: { number } }, vnode) {\n    const isSetModel = isSet(value);\n    addEventListener(el, \"change\", () => {\n      const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map(\n        (o) => number ? looseToNumber(getValue(o)) : getValue(o)\n      );\n      el[assignKey](\n        el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0]\n      );\n      el._assigning = true;\n      nextTick(() => {\n        el._assigning = false;\n      });\n    });\n    el[assignKey] = getModelAssigner(vnode);\n  },\n  // set value in mounted & updated because <select> relies on its children\n  // <option>s.\n  mounted(el, { value, modifiers: { number } }) {\n    setSelected(el, value, number);\n  },\n  beforeUpdate(el, _binding, vnode) {\n    el[assignKey] = getModelAssigner(vnode);\n  },\n  updated(el, { value, modifiers: { number } }) {\n    if (!el._assigning) {\n      setSelected(el, value, number);\n    }\n  }\n};\nfunction setSelected(el, value, number) {\n  const isMultiple = el.multiple;\n  const isArrayValue = isArray(value);\n  if (isMultiple && !isArrayValue && !isSet(value)) {\n    !!(process.env.NODE_ENV !== \"production\") && warn(\n      `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(value).slice(8, -1)}.`\n    );\n    return;\n  }\n  for (let i = 0, l = el.options.length; i < l; i++) {\n    const option = el.options[i];\n    const optionValue = getValue(option);\n    if (isMultiple) {\n      if (isArrayValue) {\n        const optionType = typeof optionValue;\n        if (optionType === \"string\" || optionType === \"number\") {\n          option.selected = value.includes(\n            number ? looseToNumber(optionValue) : optionValue\n          );\n        } else {\n          option.selected = looseIndexOf(value, optionValue) > -1;\n        }\n      } else {\n        option.selected = value.has(optionValue);\n      }\n    } else if (looseEqual(getValue(option), value)) {\n      if (el.selectedIndex !== i)\n        el.selectedIndex = i;\n      return;\n    }\n  }\n  if (!isMultiple && el.selectedIndex !== -1) {\n    el.selectedIndex = -1;\n  }\n}\nfunction getValue(el) {\n  return \"_value\" in el ? el._value : el.value;\n}\nfunction getCheckboxValue(el, checked) {\n  const key = checked ? \"_trueValue\" : \"_falseValue\";\n  return key in el ? el[key] : checked;\n}\nconst vModelDynamic = {\n  created(el, binding, vnode) {\n    callModelHook(el, binding, vnode, null, \"created\");\n  },\n  mounted(el, binding, vnode) {\n    callModelHook(el, binding, vnode, null, \"mounted\");\n  },\n  beforeUpdate(el, binding, vnode, prevVNode) {\n    callModelHook(el, binding, vnode, prevVNode, \"beforeUpdate\");\n  },\n  updated(el, binding, vnode, prevVNode) {\n    callModelHook(el, binding, vnode, prevVNode, \"updated\");\n  }\n};\nfunction resolveDynamicModel(tagName, type) {\n  switch (tagName) {\n    case \"SELECT\":\n      return vModelSelect;\n    case \"TEXTAREA\":\n      return vModelText;\n    default:\n      switch (type) {\n        case \"checkbox\":\n          return vModelCheckbox;\n        case \"radio\":\n          return vModelRadio;\n        default:\n          return vModelText;\n      }\n  }\n}\nfunction callModelHook(el, binding, vnode, prevVNode, hook) {\n  const modelToUse = resolveDynamicModel(\n    el.tagName,\n    vnode.props && vnode.props.type\n  );\n  const fn = modelToUse[hook];\n  fn && fn(el, binding, vnode, prevVNode);\n}\nfunction initVModelForSSR() {\n  vModelText.getSSRProps = ({ value }) => ({ value });\n  vModelRadio.getSSRProps = ({ value }, vnode) => {\n    if (vnode.props && looseEqual(vnode.props.value, value)) {\n      return { checked: true };\n    }\n  };\n  vModelCheckbox.getSSRProps = ({ value }, vnode) => {\n    if (isArray(value)) {\n      if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) {\n        return { checked: true };\n      }\n    } else if (isSet(value)) {\n      if (vnode.props && value.has(vnode.props.value)) {\n        return { checked: true };\n      }\n    } else if (value) {\n      return { checked: true };\n    }\n  };\n  vModelDynamic.getSSRProps = (binding, vnode) => {\n    if (typeof vnode.type !== \"string\") {\n      return;\n    }\n    const modelToUse = resolveDynamicModel(\n      // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase\n      vnode.type.toUpperCase(),\n      vnode.props && vnode.props.type\n    );\n    if (modelToUse.getSSRProps) {\n      return modelToUse.getSSRProps(binding, vnode);\n    }\n  };\n}\n\nconst systemModifiers = [\"ctrl\", \"shift\", \"alt\", \"meta\"];\nconst modifierGuards = {\n  stop: (e) => e.stopPropagation(),\n  prevent: (e) => e.preventDefault(),\n  self: (e) => e.target !== e.currentTarget,\n  ctrl: (e) => !e.ctrlKey,\n  shift: (e) => !e.shiftKey,\n  alt: (e) => !e.altKey,\n  meta: (e) => !e.metaKey,\n  left: (e) => \"button\" in e && e.button !== 0,\n  middle: (e) => \"button\" in e && e.button !== 1,\n  right: (e) => \"button\" in e && e.button !== 2,\n  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))\n};\nconst withModifiers = (fn, modifiers) => {\n  const cache = fn._withMods || (fn._withMods = {});\n  const cacheKey = modifiers.join(\".\");\n  return cache[cacheKey] || (cache[cacheKey] = (event, ...args) => {\n    for (let i = 0; i < modifiers.length; i++) {\n      const guard = modifierGuards[modifiers[i]];\n      if (guard && guard(event, modifiers))\n        return;\n    }\n    return fn(event, ...args);\n  });\n};\nconst keyNames = {\n  esc: \"escape\",\n  space: \" \",\n  up: \"arrow-up\",\n  left: \"arrow-left\",\n  right: \"arrow-right\",\n  down: \"arrow-down\",\n  delete: \"backspace\"\n};\nconst withKeys = (fn, modifiers) => {\n  const cache = fn._withKeys || (fn._withKeys = {});\n  const cacheKey = modifiers.join(\".\");\n  return cache[cacheKey] || (cache[cacheKey] = (event) => {\n    if (!(\"key\" in event)) {\n      return;\n    }\n    const eventKey = hyphenate(event.key);\n    if (modifiers.some((k) => k === eventKey || keyNames[k] === eventKey)) {\n      return fn(event);\n    }\n  });\n};\n\nconst rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);\nlet renderer;\nlet enabledHydration = false;\nfunction ensureRenderer() {\n  return renderer || (renderer = createRenderer(rendererOptions));\n}\nfunction ensureHydrationRenderer() {\n  renderer = enabledHydration ? renderer : createHydrationRenderer(rendererOptions);\n  enabledHydration = true;\n  return renderer;\n}\nconst render = (...args) => {\n  ensureRenderer().render(...args);\n};\nconst hydrate = (...args) => {\n  ensureHydrationRenderer().hydrate(...args);\n};\nconst createApp = (...args) => {\n  const app = ensureRenderer().createApp(...args);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    injectNativeTagCheck(app);\n    injectCompilerOptionsCheck(app);\n  }\n  const { mount } = app;\n  app.mount = (containerOrSelector) => {\n    const container = normalizeContainer(containerOrSelector);\n    if (!container)\n      return;\n    const component = app._component;\n    if (!isFunction(component) && !component.render && !component.template) {\n      component.template = container.innerHTML;\n    }\n    container.innerHTML = \"\";\n    const proxy = mount(container, false, resolveRootNamespace(container));\n    if (container instanceof Element) {\n      container.removeAttribute(\"v-cloak\");\n      container.setAttribute(\"data-v-app\", \"\");\n    }\n    return proxy;\n  };\n  return app;\n};\nconst createSSRApp = (...args) => {\n  const app = ensureHydrationRenderer().createApp(...args);\n  if (!!(process.env.NODE_ENV !== \"production\")) {\n    injectNativeTagCheck(app);\n    injectCompilerOptionsCheck(app);\n  }\n  const { mount } = app;\n  app.mount = (containerOrSelector) => {\n    const container = normalizeContainer(containerOrSelector);\n    if (container) {\n      return mount(container, true, resolveRootNamespace(container));\n    }\n  };\n  return app;\n};\nfunction resolveRootNamespace(container) {\n  if (container instanceof SVGElement) {\n    return \"svg\";\n  }\n  if (typeof MathMLElement === \"function\" && container instanceof MathMLElement) {\n    return \"mathml\";\n  }\n}\nfunction injectNativeTagCheck(app) {\n  Object.defineProperty(app.config, \"isNativeTag\", {\n    value: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag),\n    writable: false\n  });\n}\nfunction injectCompilerOptionsCheck(app) {\n  if (isRuntimeOnly()) {\n    const isCustomElement = app.config.isCustomElement;\n    Object.defineProperty(app.config, \"isCustomElement\", {\n      get() {\n        return isCustomElement;\n      },\n      set() {\n        warn(\n          `The \\`isCustomElement\\` config option is deprecated. Use \\`compilerOptions.isCustomElement\\` instead.`\n        );\n      }\n    });\n    const compilerOptions = app.config.compilerOptions;\n    const msg = `The \\`compilerOptions\\` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka \"full build\"). Since you are using the runtime-only build, \\`compilerOptions\\` must be passed to \\`@vue/compiler-dom\\` in the build setup instead.\n- For vue-loader: pass it via vue-loader's \\`compilerOptions\\` loader option.\n- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\n- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc`;\n    Object.defineProperty(app.config, \"compilerOptions\", {\n      get() {\n        warn(msg);\n        return compilerOptions;\n      },\n      set() {\n        warn(msg);\n      }\n    });\n  }\n}\nfunction normalizeContainer(container) {\n  if (isString(container)) {\n    const res = document.querySelector(container);\n    if (!!(process.env.NODE_ENV !== \"production\") && !res) {\n      warn(\n        `Failed to mount app: mount target selector \"${container}\" returned null.`\n      );\n    }\n    return res;\n  }\n  if (!!(process.env.NODE_ENV !== \"production\") && window.ShadowRoot && container instanceof window.ShadowRoot && container.mode === \"closed\") {\n    warn(\n      `mounting on a ShadowRoot with \\`{mode: \"closed\"}\\` may lead to unpredictable bugs`\n    );\n  }\n  return container;\n}\nlet ssrDirectiveInitialized = false;\nconst initDirectivesForSSR = () => {\n  if (!ssrDirectiveInitialized) {\n    ssrDirectiveInitialized = true;\n    initVModelForSSR();\n    initVShowForSSR();\n  }\n} ;\n\nexport { Transition, TransitionGroup, VueElement, createApp, createSSRApp, defineCustomElement, defineSSRCustomElement, hydrate, initDirectivesForSSR, render, useCssModule, useCssVars, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, withKeys, withModifiers };\n","import * as Vue from 'vue'\n\nvar isVue2 = false\nvar isVue3 = true\nvar Vue2 = undefined\n\nfunction install() {}\n\nexport function set(target, key, val) {\n  if (Array.isArray(target)) {\n    target.length = Math.max(target.length, key)\n    target.splice(key, 1, val)\n    return val\n  }\n  target[key] = val\n  return val\n}\n\nexport function del(target, key) {\n  if (Array.isArray(target)) {\n    target.splice(key, 1)\n    return\n  }\n  delete target[key]\n}\n\nexport * from 'vue'\nexport {\n  Vue,\n  Vue2,\n  isVue2,\n  isVue3,\n  install,\n}\n","import { shallowRef, watchEffect, readonly, ref, watch, customRef, getCurrentScope, onScopeDispose, effectScope, getCurrentInstance, provide, inject, isVue3, version, isRef, unref, computed, reactive, toRefs as toRefs$1, toRef as toRef$1, isVue2, set as set$1, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue-demi';\n\nfunction computedEager(fn, options) {\n  var _a;\n  const result = shallowRef();\n  watchEffect(() => {\n    result.value = fn();\n  }, {\n    ...options,\n    flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n  });\n  return readonly(result);\n}\n\nfunction computedWithControl(source, fn) {\n  let v = void 0;\n  let track;\n  let trigger;\n  const dirty = ref(true);\n  const update = () => {\n    dirty.value = true;\n    trigger();\n  };\n  watch(source, update, { flush: \"sync\" });\n  const get = typeof fn === \"function\" ? fn : fn.get;\n  const set = typeof fn === \"function\" ? void 0 : fn.set;\n  const result = customRef((_track, _trigger) => {\n    track = _track;\n    trigger = _trigger;\n    return {\n      get() {\n        if (dirty.value) {\n          v = get();\n          dirty.value = false;\n        }\n        track();\n        return v;\n      },\n      set(v2) {\n        set == null ? void 0 : set(v2);\n      }\n    };\n  });\n  if (Object.isExtensible(result))\n    result.trigger = update;\n  return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n  if (getCurrentScope()) {\n    onScopeDispose(fn);\n    return true;\n  }\n  return false;\n}\n\nfunction createEventHook() {\n  const fns = /* @__PURE__ */ new Set();\n  const off = (fn) => {\n    fns.delete(fn);\n  };\n  const on = (fn) => {\n    fns.add(fn);\n    const offFn = () => off(fn);\n    tryOnScopeDispose(offFn);\n    return {\n      off: offFn\n    };\n  };\n  const trigger = (param) => {\n    return Promise.all(Array.from(fns).map((fn) => param ? fn(param) : fn()));\n  };\n  return {\n    on,\n    off,\n    trigger\n  };\n}\n\nfunction createGlobalState(stateFactory) {\n  let initialized = false;\n  let state;\n  const scope = effectScope(true);\n  return (...args) => {\n    if (!initialized) {\n      state = scope.run(() => stateFactory(...args));\n      initialized = true;\n    }\n    return state;\n  };\n}\n\nconst localProvidedStateMap = /* @__PURE__ */ new WeakMap();\n\nconst provideLocal = (key, value) => {\n  var _a;\n  const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n  if (instance == null)\n    throw new Error(\"provideLocal must be called in setup\");\n  if (!localProvidedStateMap.has(instance))\n    localProvidedStateMap.set(instance, /* @__PURE__ */ Object.create(null));\n  const localProvidedState = localProvidedStateMap.get(instance);\n  localProvidedState[key] = value;\n  provide(key, value);\n};\n\nconst injectLocal = (...args) => {\n  var _a;\n  const key = args[0];\n  const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n  if (instance == null)\n    throw new Error(\"injectLocal must be called in setup\");\n  if (localProvidedStateMap.has(instance) && key in localProvidedStateMap.get(instance))\n    return localProvidedStateMap.get(instance)[key];\n  return inject(...args);\n};\n\nfunction createInjectionState(composable, options) {\n  const key = (options == null ? void 0 : options.injectionKey) || Symbol(\"InjectionState\");\n  const useProvidingState = (...args) => {\n    const state = composable(...args);\n    provideLocal(key, state);\n    return state;\n  };\n  const useInjectedState = () => injectLocal(key);\n  return [useProvidingState, useInjectedState];\n}\n\nfunction createSharedComposable(composable) {\n  let subscribers = 0;\n  let state;\n  let scope;\n  const dispose = () => {\n    subscribers -= 1;\n    if (scope && subscribers <= 0) {\n      scope.stop();\n      state = void 0;\n      scope = void 0;\n    }\n  };\n  return (...args) => {\n    subscribers += 1;\n    if (!state) {\n      scope = effectScope(true);\n      state = scope.run(() => composable(...args));\n    }\n    tryOnScopeDispose(dispose);\n    return state;\n  };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n  if (!isVue3 && !version.startsWith(\"2.7.\")) {\n    if (process.env.NODE_ENV !== \"production\")\n      throw new Error(\"[VueUse] extendRef only works in Vue 2.7 or above.\");\n    return;\n  }\n  for (const [key, value] of Object.entries(extend)) {\n    if (key === \"value\")\n      continue;\n    if (isRef(value) && unwrap) {\n      Object.defineProperty(ref, key, {\n        get() {\n          return value.value;\n        },\n        set(v) {\n          value.value = v;\n        },\n        enumerable\n      });\n    } else {\n      Object.defineProperty(ref, key, { value, enumerable });\n    }\n  }\n  return ref;\n}\n\nfunction get(obj, key) {\n  if (key == null)\n    return unref(obj);\n  return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n  return unref(v) != null;\n}\n\nfunction makeDestructurable(obj, arr) {\n  if (typeof Symbol !== \"undefined\") {\n    const clone = { ...obj };\n    Object.defineProperty(clone, Symbol.iterator, {\n      enumerable: false,\n      value() {\n        let index = 0;\n        return {\n          next: () => ({\n            value: arr[index++],\n            done: index > arr.length\n          })\n        };\n      }\n    });\n    return clone;\n  } else {\n    return Object.assign([...arr], obj);\n  }\n}\n\nfunction toValue(r) {\n  return typeof r === \"function\" ? r() : unref(r);\n}\nconst resolveUnref = toValue;\n\nfunction reactify(fn, options) {\n  const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : toValue;\n  return function(...args) {\n    return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n  };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n  let keys = [];\n  let options;\n  if (Array.isArray(optionsOrKeys)) {\n    keys = optionsOrKeys;\n  } else {\n    options = optionsOrKeys;\n    const { includeOwnProperties = true } = optionsOrKeys;\n    keys.push(...Object.keys(obj));\n    if (includeOwnProperties)\n      keys.push(...Object.getOwnPropertyNames(obj));\n  }\n  return Object.fromEntries(\n    keys.map((key) => {\n      const value = obj[key];\n      return [\n        key,\n        typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n      ];\n    })\n  );\n}\n\nfunction toReactive(objectRef) {\n  if (!isRef(objectRef))\n    return reactive(objectRef);\n  const proxy = new Proxy({}, {\n    get(_, p, receiver) {\n      return unref(Reflect.get(objectRef.value, p, receiver));\n    },\n    set(_, p, value) {\n      if (isRef(objectRef.value[p]) && !isRef(value))\n        objectRef.value[p].value = value;\n      else\n        objectRef.value[p] = value;\n      return true;\n    },\n    deleteProperty(_, p) {\n      return Reflect.deleteProperty(objectRef.value, p);\n    },\n    has(_, p) {\n      return Reflect.has(objectRef.value, p);\n    },\n    ownKeys() {\n      return Object.keys(objectRef.value);\n    },\n    getOwnPropertyDescriptor() {\n      return {\n        enumerable: true,\n        configurable: true\n      };\n    }\n  });\n  return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n  return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n  const flatKeys = keys.flat();\n  const predicate = flatKeys[0];\n  return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isWorker = typeof WorkerGlobalScope !== \"undefined\" && globalThis instanceof WorkerGlobalScope;\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n  if (!condition)\n    console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n  min = Math.ceil(min);\n  max = Math.floor(max);\n  return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n  var _a;\n  return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /* @__PURE__ */ /iP(ad|hone|od)/.test(window.navigator.userAgent);\n}\n\nfunction createFilterWrapper(filter, fn) {\n  function wrapper(...args) {\n    return new Promise((resolve, reject) => {\n      Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n    });\n  }\n  return wrapper;\n}\nconst bypassFilter = (invoke) => {\n  return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n  let timer;\n  let maxTimer;\n  let lastRejector = noop;\n  const _clearTimeout = (timer2) => {\n    clearTimeout(timer2);\n    lastRejector();\n    lastRejector = noop;\n  };\n  const filter = (invoke) => {\n    const duration = toValue(ms);\n    const maxDuration = toValue(options.maxWait);\n    if (timer)\n      _clearTimeout(timer);\n    if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n      if (maxTimer) {\n        _clearTimeout(maxTimer);\n        maxTimer = null;\n      }\n      return Promise.resolve(invoke());\n    }\n    return new Promise((resolve, reject) => {\n      lastRejector = options.rejectOnCancel ? reject : resolve;\n      if (maxDuration && !maxTimer) {\n        maxTimer = setTimeout(() => {\n          if (timer)\n            _clearTimeout(timer);\n          maxTimer = null;\n          resolve(invoke());\n        }, maxDuration);\n      }\n      timer = setTimeout(() => {\n        if (maxTimer)\n          _clearTimeout(maxTimer);\n        maxTimer = null;\n        resolve(invoke());\n      }, duration);\n    });\n  };\n  return filter;\n}\nfunction throttleFilter(ms, trailing = true, leading = true, rejectOnCancel = false) {\n  let lastExec = 0;\n  let timer;\n  let isLeading = true;\n  let lastRejector = noop;\n  let lastValue;\n  const clear = () => {\n    if (timer) {\n      clearTimeout(timer);\n      timer = void 0;\n      lastRejector();\n      lastRejector = noop;\n    }\n  };\n  const filter = (_invoke) => {\n    const duration = toValue(ms);\n    const elapsed = Date.now() - lastExec;\n    const invoke = () => {\n      return lastValue = _invoke();\n    };\n    clear();\n    if (duration <= 0) {\n      lastExec = Date.now();\n      return invoke();\n    }\n    if (elapsed > duration && (leading || !isLeading)) {\n      lastExec = Date.now();\n      invoke();\n    } else if (trailing) {\n      lastValue = new Promise((resolve, reject) => {\n        lastRejector = rejectOnCancel ? reject : resolve;\n        timer = setTimeout(() => {\n          lastExec = Date.now();\n          isLeading = true;\n          resolve(invoke());\n          clear();\n        }, Math.max(0, duration - elapsed));\n      });\n    }\n    if (!leading && !timer)\n      timer = setTimeout(() => isLeading = true, duration);\n    isLeading = false;\n    return lastValue;\n  };\n  return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter) {\n  const isActive = ref(true);\n  function pause() {\n    isActive.value = false;\n  }\n  function resume() {\n    isActive.value = true;\n  }\n  const eventFilter = (...args) => {\n    if (isActive.value)\n      extendFilter(...args);\n  };\n  return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nconst directiveHooks = {\n  mounted: isVue3 ? \"mounted\" : \"inserted\",\n  updated: isVue3 ? \"updated\" : \"componentUpdated\",\n  unmounted: isVue3 ? \"unmounted\" : \"unbind\"\n};\n\nfunction cacheStringFunction(fn) {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (str) => {\n    const hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n}\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n  return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n  return new Promise((resolve, reject) => {\n    if (throwOnTimeout)\n      setTimeout(() => reject(reason), ms);\n    else\n      setTimeout(resolve, ms);\n  });\n}\nfunction identity(arg) {\n  return arg;\n}\nfunction createSingletonPromise(fn) {\n  let _promise;\n  function wrapper() {\n    if (!_promise)\n      _promise = fn();\n    return _promise;\n  }\n  wrapper.reset = async () => {\n    const _prev = _promise;\n    _promise = void 0;\n    if (_prev)\n      await _prev;\n  };\n  return wrapper;\n}\nfunction invoke(fn) {\n  return fn();\n}\nfunction containsProp(obj, ...props) {\n  return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n  var _a;\n  if (typeof target === \"number\")\n    return target + delta;\n  const value = ((_a = target.match(/^-?[0-9]+\\.?[0-9]*/)) == null ? void 0 : _a[0]) || \"\";\n  const unit = target.slice(value.length);\n  const result = Number.parseFloat(value) + delta;\n  if (Number.isNaN(result))\n    return target;\n  return result + unit;\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n  return keys.reduce((n, k) => {\n    if (k in obj) {\n      if (!omitUndefined || obj[k] !== void 0)\n        n[k] = obj[k];\n    }\n    return n;\n  }, {});\n}\nfunction objectOmit(obj, keys, omitUndefined = false) {\n  return Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n    return (!omitUndefined || value !== void 0) && !keys.includes(key);\n  }));\n}\nfunction objectEntries(obj) {\n  return Object.entries(obj);\n}\n\nfunction toRef(...args) {\n  if (args.length !== 1)\n    return toRef$1(...args);\n  const r = args[0];\n  return typeof r === \"function\" ? readonly(customRef(() => ({ get: r, set: noop }))) : ref(r);\n}\nconst resolveRef = toRef;\n\nfunction reactivePick(obj, ...keys) {\n  const flatKeys = keys.flat();\n  const predicate = flatKeys[0];\n  return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n  return customRef((track, trigger) => {\n    let value = toValue(defaultValue);\n    let timer;\n    const resetAfter = () => setTimeout(() => {\n      value = toValue(defaultValue);\n      trigger();\n    }, toValue(afterMs));\n    tryOnScopeDispose(() => {\n      clearTimeout(timer);\n    });\n    return {\n      get() {\n        track();\n        return value;\n      },\n      set(newValue) {\n        value = newValue;\n        trigger();\n        clearTimeout(timer);\n        timer = resetAfter();\n      }\n    };\n  });\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n  return createFilterWrapper(\n    debounceFilter(ms, options),\n    fn\n  );\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n  const debounced = ref(value.value);\n  const updater = useDebounceFn(() => {\n    debounced.value = value.value;\n  }, ms, options);\n  watch(value, () => updater());\n  return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n  return computed({\n    get() {\n      var _a;\n      return (_a = source.value) != null ? _a : defaultValue;\n    },\n    set(value) {\n      source.value = value;\n    }\n  });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n  return createFilterWrapper(\n    throttleFilter(ms, trailing, leading, rejectOnCancel),\n    fn\n  );\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n  if (delay <= 0)\n    return value;\n  const throttled = ref(value.value);\n  const updater = useThrottleFn(() => {\n    throttled.value = value.value;\n  }, delay, trailing, leading);\n  watch(value, () => updater());\n  return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n  let source = initial;\n  let track;\n  let trigger;\n  const ref = customRef((_track, _trigger) => {\n    track = _track;\n    trigger = _trigger;\n    return {\n      get() {\n        return get();\n      },\n      set(v) {\n        set(v);\n      }\n    };\n  });\n  function get(tracking = true) {\n    if (tracking)\n      track();\n    return source;\n  }\n  function set(value, triggering = true) {\n    var _a, _b;\n    if (value === source)\n      return;\n    const old = source;\n    if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n      return;\n    source = value;\n    (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n    if (triggering)\n      trigger();\n  }\n  const untrackedGet = () => get(false);\n  const silentSet = (v) => set(v, false);\n  const peek = () => get(false);\n  const lay = (v) => set(v, false);\n  return extendRef(\n    ref,\n    {\n      get,\n      set,\n      untrackedGet,\n      silentSet,\n      peek,\n      lay\n    },\n    { enumerable: true }\n  );\n}\nconst controlledRef = refWithControl;\n\nfunction set(...args) {\n  if (args.length === 2) {\n    const [ref, value] = args;\n    ref.value = value;\n  }\n  if (args.length === 3) {\n    if (isVue2) {\n      set$1(...args);\n    } else {\n      const [target, key, value] = args;\n      target[key] = value;\n    }\n  }\n}\n\nfunction watchWithFilter(source, cb, options = {}) {\n  const {\n    eventFilter = bypassFilter,\n    ...watchOptions\n  } = options;\n  return watch(\n    source,\n    createFilterWrapper(\n      eventFilter,\n      cb\n    ),\n    watchOptions\n  );\n}\n\nfunction watchPausable(source, cb, options = {}) {\n  const {\n    eventFilter: filter,\n    ...watchOptions\n  } = options;\n  const { eventFilter, pause, resume, isActive } = pausableFilter(filter);\n  const stop = watchWithFilter(\n    source,\n    cb,\n    {\n      ...watchOptions,\n      eventFilter\n    }\n  );\n  return { stop, pause, resume, isActive };\n}\n\nfunction syncRef(left, right, ...[options]) {\n  const {\n    flush = \"sync\",\n    deep = false,\n    immediate = true,\n    direction = \"both\",\n    transform = {}\n  } = options || {};\n  const watchers = [];\n  const transformLTR = \"ltr\" in transform && transform.ltr || ((v) => v);\n  const transformRTL = \"rtl\" in transform && transform.rtl || ((v) => v);\n  if (direction === \"both\" || direction === \"ltr\") {\n    watchers.push(watchPausable(\n      left,\n      (newValue) => {\n        watchers.forEach((w) => w.pause());\n        right.value = transformLTR(newValue);\n        watchers.forEach((w) => w.resume());\n      },\n      { flush, deep, immediate }\n    ));\n  }\n  if (direction === \"both\" || direction === \"rtl\") {\n    watchers.push(watchPausable(\n      right,\n      (newValue) => {\n        watchers.forEach((w) => w.pause());\n        left.value = transformRTL(newValue);\n        watchers.forEach((w) => w.resume());\n      },\n      { flush, deep, immediate }\n    ));\n  }\n  const stop = () => {\n    watchers.forEach((w) => w.stop());\n  };\n  return stop;\n}\n\nfunction syncRefs(source, targets, options = {}) {\n  const {\n    flush = \"sync\",\n    deep = false,\n    immediate = true\n  } = options;\n  if (!Array.isArray(targets))\n    targets = [targets];\n  return watch(\n    source,\n    (newValue) => targets.forEach((target) => target.value = newValue),\n    { flush, deep, immediate }\n  );\n}\n\nfunction toRefs(objectRef, options = {}) {\n  if (!isRef(objectRef))\n    return toRefs$1(objectRef);\n  const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n  for (const key in objectRef.value) {\n    result[key] = customRef(() => ({\n      get() {\n        return objectRef.value[key];\n      },\n      set(v) {\n        var _a;\n        const replaceRef = (_a = toValue(options.replaceRef)) != null ? _a : true;\n        if (replaceRef) {\n          if (Array.isArray(objectRef.value)) {\n            const copy = [...objectRef.value];\n            copy[key] = v;\n            objectRef.value = copy;\n          } else {\n            const newObject = { ...objectRef.value, [key]: v };\n            Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n            objectRef.value = newObject;\n          }\n        } else {\n          objectRef.value[key] = v;\n        }\n      }\n    }));\n  }\n  return result;\n}\n\nfunction tryOnBeforeMount(fn, sync = true) {\n  if (getCurrentInstance())\n    onBeforeMount(fn);\n  else if (sync)\n    fn();\n  else\n    nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn) {\n  if (getCurrentInstance())\n    onBeforeUnmount(fn);\n}\n\nfunction tryOnMounted(fn, sync = true) {\n  if (getCurrentInstance())\n    onMounted(fn);\n  else if (sync)\n    fn();\n  else\n    nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn) {\n  if (getCurrentInstance())\n    onUnmounted(fn);\n}\n\nfunction createUntil(r, isNot = false) {\n  function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n    let stop = null;\n    const watcher = new Promise((resolve) => {\n      stop = watch(\n        r,\n        (v) => {\n          if (condition(v) !== isNot) {\n            stop == null ? void 0 : stop();\n            resolve(v);\n          }\n        },\n        {\n          flush,\n          deep,\n          immediate: true\n        }\n      );\n    });\n    const promises = [watcher];\n    if (timeout != null) {\n      promises.push(\n        promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop == null ? void 0 : stop())\n      );\n    }\n    return Promise.race(promises);\n  }\n  function toBe(value, options) {\n    if (!isRef(value))\n      return toMatch((v) => v === value, options);\n    const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n    let stop = null;\n    const watcher = new Promise((resolve) => {\n      stop = watch(\n        [r, value],\n        ([v1, v2]) => {\n          if (isNot !== (v1 === v2)) {\n            stop == null ? void 0 : stop();\n            resolve(v1);\n          }\n        },\n        {\n          flush,\n          deep,\n          immediate: true\n        }\n      );\n    });\n    const promises = [watcher];\n    if (timeout != null) {\n      promises.push(\n        promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => {\n          stop == null ? void 0 : stop();\n          return toValue(r);\n        })\n      );\n    }\n    return Promise.race(promises);\n  }\n  function toBeTruthy(options) {\n    return toMatch((v) => Boolean(v), options);\n  }\n  function toBeNull(options) {\n    return toBe(null, options);\n  }\n  function toBeUndefined(options) {\n    return toBe(void 0, options);\n  }\n  function toBeNaN(options) {\n    return toMatch(Number.isNaN, options);\n  }\n  function toContains(value, options) {\n    return toMatch((v) => {\n      const array = Array.from(v);\n      return array.includes(value) || array.includes(toValue(value));\n    }, options);\n  }\n  function changed(options) {\n    return changedTimes(1, options);\n  }\n  function changedTimes(n = 1, options) {\n    let count = -1;\n    return toMatch(() => {\n      count += 1;\n      return count >= n;\n    }, options);\n  }\n  if (Array.isArray(toValue(r))) {\n    const instance = {\n      toMatch,\n      toContains,\n      changed,\n      changedTimes,\n      get not() {\n        return createUntil(r, !isNot);\n      }\n    };\n    return instance;\n  } else {\n    const instance = {\n      toMatch,\n      toBe,\n      toBeTruthy,\n      toBeNull,\n      toBeNaN,\n      toBeUndefined,\n      changed,\n      changedTimes,\n      get not() {\n        return createUntil(r, !isNot);\n      }\n    };\n    return instance;\n  }\n}\nfunction until(r) {\n  return createUntil(r);\n}\n\nfunction defaultComparator(value, othVal) {\n  return value === othVal;\n}\nfunction useArrayDifference(...args) {\n  var _a;\n  const list = args[0];\n  const values = args[1];\n  let compareFn = (_a = args[2]) != null ? _a : defaultComparator;\n  if (typeof compareFn === \"string\") {\n    const key = compareFn;\n    compareFn = (value, othVal) => value[key] === othVal[key];\n  }\n  return computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1));\n}\n\nfunction useArrayEvery(list, fn) {\n  return computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n  return computed(() => toValue(list).map((i) => toValue(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n  return computed(() => toValue(\n    toValue(list).find((element, index, array) => fn(toValue(element), index, array))\n  ));\n}\n\nfunction useArrayFindIndex(list, fn) {\n  return computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n  let index = arr.length;\n  while (index-- > 0) {\n    if (cb(arr[index], index, arr))\n      return arr[index];\n  }\n  return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n  return computed(() => toValue(\n    !Array.prototype.findLast ? findLast(toValue(list), (element, index, array) => fn(toValue(element), index, array)) : toValue(list).findLast((element, index, array) => fn(toValue(element), index, array))\n  ));\n}\n\nfunction isArrayIncludesOptions(obj) {\n  return isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\nfunction useArrayIncludes(...args) {\n  var _a;\n  const list = args[0];\n  const value = args[1];\n  let comparator = args[2];\n  let formIndex = 0;\n  if (isArrayIncludesOptions(comparator)) {\n    formIndex = (_a = comparator.fromIndex) != null ? _a : 0;\n    comparator = comparator.comparator;\n  }\n  if (typeof comparator === \"string\") {\n    const key = comparator;\n    comparator = (element, value2) => element[key] === toValue(value2);\n  }\n  comparator = comparator != null ? comparator : (element, value2) => element === toValue(value2);\n  return computed(() => toValue(list).slice(formIndex).some((element, index, array) => comparator(\n    toValue(element),\n    toValue(value),\n    index,\n    toValue(array)\n  )));\n}\n\nfunction useArrayJoin(list, separator) {\n  return computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n  return computed(() => toValue(list).map((i) => toValue(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n  const reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index);\n  return computed(() => {\n    const resolved = toValue(list);\n    return args.length ? resolved.reduce(reduceCallback, toValue(args[0])) : resolved.reduce(reduceCallback);\n  });\n}\n\nfunction useArraySome(list, fn) {\n  return computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction uniq(array) {\n  return Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n  return array.reduce((acc, v) => {\n    if (!acc.some((x) => fn(v, x, array)))\n      acc.push(v);\n    return acc;\n  }, []);\n}\nfunction useArrayUnique(list, compareFn) {\n  return computed(() => {\n    const resolvedList = toValue(list).map((element) => toValue(element));\n    return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n  });\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n  let _initialValue = unref(initialValue);\n  const count = ref(initialValue);\n  const {\n    max = Number.POSITIVE_INFINITY,\n    min = Number.NEGATIVE_INFINITY\n  } = options;\n  const inc = (delta = 1) => count.value = Math.min(max, count.value + delta);\n  const dec = (delta = 1) => count.value = Math.max(min, count.value - delta);\n  const get = () => count.value;\n  const set = (val) => count.value = Math.max(min, Math.min(max, val));\n  const reset = (val = _initialValue) => {\n    _initialValue = val;\n    return set(val);\n  };\n  return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/;\nconst REGEX_FORMAT = /[YMDHhms]o|\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n  let m = hours < 12 ? \"AM\" : \"PM\";\n  if (hasPeriod)\n    m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n  return isLowercase ? m.toLowerCase() : m;\n}\nfunction formatOrdinal(num) {\n  const suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n  const v = num % 100;\n  return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n}\nfunction formatDate(date, formatStr, options = {}) {\n  var _a;\n  const years = date.getFullYear();\n  const month = date.getMonth();\n  const days = date.getDate();\n  const hours = date.getHours();\n  const minutes = date.getMinutes();\n  const seconds = date.getSeconds();\n  const milliseconds = date.getMilliseconds();\n  const day = date.getDay();\n  const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n  const matches = {\n    Yo: () => formatOrdinal(years),\n    YY: () => String(years).slice(-2),\n    YYYY: () => years,\n    M: () => month + 1,\n    Mo: () => formatOrdinal(month + 1),\n    MM: () => `${month + 1}`.padStart(2, \"0\"),\n    MMM: () => date.toLocaleDateString(options.locales, { month: \"short\" }),\n    MMMM: () => date.toLocaleDateString(options.locales, { month: \"long\" }),\n    D: () => String(days),\n    Do: () => formatOrdinal(days),\n    DD: () => `${days}`.padStart(2, \"0\"),\n    H: () => String(hours),\n    Ho: () => formatOrdinal(hours),\n    HH: () => `${hours}`.padStart(2, \"0\"),\n    h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n    ho: () => formatOrdinal(hours % 12 || 12),\n    hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n    m: () => String(minutes),\n    mo: () => formatOrdinal(minutes),\n    mm: () => `${minutes}`.padStart(2, \"0\"),\n    s: () => String(seconds),\n    so: () => formatOrdinal(seconds),\n    ss: () => `${seconds}`.padStart(2, \"0\"),\n    SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n    d: () => day,\n    dd: () => date.toLocaleDateString(options.locales, { weekday: \"narrow\" }),\n    ddd: () => date.toLocaleDateString(options.locales, { weekday: \"short\" }),\n    dddd: () => date.toLocaleDateString(options.locales, { weekday: \"long\" }),\n    A: () => meridiem(hours, minutes),\n    AA: () => meridiem(hours, minutes, false, true),\n    a: () => meridiem(hours, minutes, true),\n    aa: () => meridiem(hours, minutes, true, true)\n  };\n  return formatStr.replace(REGEX_FORMAT, (match, $1) => {\n    var _a2, _b;\n    return (_b = $1 != null ? $1 : (_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) != null ? _b : match;\n  });\n}\nfunction normalizeDate(date) {\n  if (date === null)\n    return new Date(Number.NaN);\n  if (date === void 0)\n    return /* @__PURE__ */ new Date();\n  if (date instanceof Date)\n    return new Date(date);\n  if (typeof date === \"string\" && !/Z$/i.test(date)) {\n    const d = date.match(REGEX_PARSE);\n    if (d) {\n      const m = d[2] - 1 || 0;\n      const ms = (d[7] || \"0\").substring(0, 3);\n      return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n    }\n  }\n  return new Date(date);\n}\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n  return computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n  const {\n    immediate = true,\n    immediateCallback = false\n  } = options;\n  let timer = null;\n  const isActive = ref(false);\n  function clean() {\n    if (timer) {\n      clearInterval(timer);\n      timer = null;\n    }\n  }\n  function pause() {\n    isActive.value = false;\n    clean();\n  }\n  function resume() {\n    const intervalValue = toValue(interval);\n    if (intervalValue <= 0)\n      return;\n    isActive.value = true;\n    if (immediateCallback)\n      cb();\n    clean();\n    timer = setInterval(cb, intervalValue);\n  }\n  if (immediate && isClient)\n    resume();\n  if (isRef(interval) || typeof interval === \"function\") {\n    const stopWatch = watch(interval, () => {\n      if (isActive.value && isClient)\n        resume();\n    });\n    tryOnScopeDispose(stopWatch);\n  }\n  tryOnScopeDispose(pause);\n  return {\n    isActive,\n    pause,\n    resume\n  };\n}\n\nfunction useInterval(interval = 1e3, options = {}) {\n  const {\n    controls: exposeControls = false,\n    immediate = true,\n    callback\n  } = options;\n  const counter = ref(0);\n  const update = () => counter.value += 1;\n  const reset = () => {\n    counter.value = 0;\n  };\n  const controls = useIntervalFn(\n    callback ? () => {\n      update();\n      callback(counter.value);\n    } : update,\n    interval,\n    { immediate }\n  );\n  if (exposeControls) {\n    return {\n      counter,\n      reset,\n      ...controls\n    };\n  } else {\n    return counter;\n  }\n}\n\nfunction useLastChanged(source, options = {}) {\n  var _a;\n  const ms = ref((_a = options.initialValue) != null ? _a : null);\n  watch(\n    source,\n    () => ms.value = timestamp(),\n    options\n  );\n  return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n  const {\n    immediate = true\n  } = options;\n  const isPending = ref(false);\n  let timer = null;\n  function clear() {\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n  }\n  function stop() {\n    isPending.value = false;\n    clear();\n  }\n  function start(...args) {\n    clear();\n    isPending.value = true;\n    timer = setTimeout(() => {\n      isPending.value = false;\n      timer = null;\n      cb(...args);\n    }, toValue(interval));\n  }\n  if (immediate) {\n    isPending.value = true;\n    if (isClient)\n      start();\n  }\n  tryOnScopeDispose(stop);\n  return {\n    isPending: readonly(isPending),\n    start,\n    stop\n  };\n}\n\nfunction useTimeout(interval = 1e3, options = {}) {\n  const {\n    controls: exposeControls = false,\n    callback\n  } = options;\n  const controls = useTimeoutFn(\n    callback != null ? callback : noop,\n    interval,\n    options\n  );\n  const ready = computed(() => !controls.isPending.value);\n  if (exposeControls) {\n    return {\n      ready,\n      ...controls\n    };\n  } else {\n    return ready;\n  }\n}\n\nfunction useToNumber(value, options = {}) {\n  const {\n    method = \"parseFloat\",\n    radix,\n    nanToZero\n  } = options;\n  return computed(() => {\n    let resolved = toValue(value);\n    if (typeof resolved === \"string\")\n      resolved = Number[method](resolved, radix);\n    if (nanToZero && Number.isNaN(resolved))\n      resolved = 0;\n    return resolved;\n  });\n}\n\nfunction useToString(value) {\n  return computed(() => `${toValue(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n  const {\n    truthyValue = true,\n    falsyValue = false\n  } = options;\n  const valueIsRef = isRef(initialValue);\n  const _value = ref(initialValue);\n  function toggle(value) {\n    if (arguments.length) {\n      _value.value = value;\n      return _value.value;\n    } else {\n      const truthy = toValue(truthyValue);\n      _value.value = _value.value === truthy ? toValue(falsyValue) : truthy;\n      return _value.value;\n    }\n  }\n  if (valueIsRef)\n    return toggle;\n  else\n    return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n  let oldList = (options == null ? void 0 : options.immediate) ? [] : [...source instanceof Function ? source() : Array.isArray(source) ? source : toValue(source)];\n  return watch(source, (newList, _, onCleanup) => {\n    const oldListRemains = Array.from({ length: oldList.length });\n    const added = [];\n    for (const obj of newList) {\n      let found = false;\n      for (let i = 0; i < oldList.length; i++) {\n        if (!oldListRemains[i] && obj === oldList[i]) {\n          oldListRemains[i] = true;\n          found = true;\n          break;\n        }\n      }\n      if (!found)\n        added.push(obj);\n    }\n    const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n    cb(newList, oldList, added, removed, onCleanup);\n    oldList = [...newList];\n  }, options);\n}\n\nfunction watchAtMost(source, cb, options) {\n  const {\n    count,\n    ...watchOptions\n  } = options;\n  const current = ref(0);\n  const stop = watchWithFilter(\n    source,\n    (...args) => {\n      current.value += 1;\n      if (current.value >= toValue(count))\n        nextTick(() => stop());\n      cb(...args);\n    },\n    watchOptions\n  );\n  return { count: current, stop };\n}\n\nfunction watchDebounced(source, cb, options = {}) {\n  const {\n    debounce = 0,\n    maxWait = void 0,\n    ...watchOptions\n  } = options;\n  return watchWithFilter(\n    source,\n    cb,\n    {\n      ...watchOptions,\n      eventFilter: debounceFilter(debounce, { maxWait })\n    }\n  );\n}\n\nfunction watchDeep(source, cb, options) {\n  return watch(\n    source,\n    cb,\n    {\n      ...options,\n      deep: true\n    }\n  );\n}\n\nfunction watchIgnorable(source, cb, options = {}) {\n  const {\n    eventFilter = bypassFilter,\n    ...watchOptions\n  } = options;\n  const filteredCb = createFilterWrapper(\n    eventFilter,\n    cb\n  );\n  let ignoreUpdates;\n  let ignorePrevAsyncUpdates;\n  let stop;\n  if (watchOptions.flush === \"sync\") {\n    const ignore = ref(false);\n    ignorePrevAsyncUpdates = () => {\n    };\n    ignoreUpdates = (updater) => {\n      ignore.value = true;\n      updater();\n      ignore.value = false;\n    };\n    stop = watch(\n      source,\n      (...args) => {\n        if (!ignore.value)\n          filteredCb(...args);\n      },\n      watchOptions\n    );\n  } else {\n    const disposables = [];\n    const ignoreCounter = ref(0);\n    const syncCounter = ref(0);\n    ignorePrevAsyncUpdates = () => {\n      ignoreCounter.value = syncCounter.value;\n    };\n    disposables.push(\n      watch(\n        source,\n        () => {\n          syncCounter.value++;\n        },\n        { ...watchOptions, flush: \"sync\" }\n      )\n    );\n    ignoreUpdates = (updater) => {\n      const syncCounterPrev = syncCounter.value;\n      updater();\n      ignoreCounter.value += syncCounter.value - syncCounterPrev;\n    };\n    disposables.push(\n      watch(\n        source,\n        (...args) => {\n          const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n          ignoreCounter.value = 0;\n          syncCounter.value = 0;\n          if (ignore)\n            return;\n          filteredCb(...args);\n        },\n        watchOptions\n      )\n    );\n    stop = () => {\n      disposables.forEach((fn) => fn());\n    };\n  }\n  return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nfunction watchImmediate(source, cb, options) {\n  return watch(\n    source,\n    cb,\n    {\n      ...options,\n      immediate: true\n    }\n  );\n}\n\nfunction watchOnce(source, cb, options) {\n  const stop = watch(source, (...args) => {\n    nextTick(() => stop());\n    return cb(...args);\n  }, options);\n  return stop;\n}\n\nfunction watchThrottled(source, cb, options = {}) {\n  const {\n    throttle = 0,\n    trailing = true,\n    leading = true,\n    ...watchOptions\n  } = options;\n  return watchWithFilter(\n    source,\n    cb,\n    {\n      ...watchOptions,\n      eventFilter: throttleFilter(throttle, trailing, leading)\n    }\n  );\n}\n\nfunction watchTriggerable(source, cb, options = {}) {\n  let cleanupFn;\n  function onEffect() {\n    if (!cleanupFn)\n      return;\n    const fn = cleanupFn;\n    cleanupFn = void 0;\n    fn();\n  }\n  function onCleanup(callback) {\n    cleanupFn = callback;\n  }\n  const _cb = (value, oldValue) => {\n    onEffect();\n    return cb(value, oldValue, onCleanup);\n  };\n  const res = watchIgnorable(source, _cb, options);\n  const { ignoreUpdates } = res;\n  const trigger = () => {\n    let res2;\n    ignoreUpdates(() => {\n      res2 = _cb(getWatchSources(source), getOldValue(source));\n    });\n    return res2;\n  };\n  return {\n    ...res,\n    trigger\n  };\n}\nfunction getWatchSources(sources) {\n  if (isReactive(sources))\n    return sources;\n  if (Array.isArray(sources))\n    return sources.map((item) => toValue(item));\n  return toValue(sources);\n}\nfunction getOldValue(source) {\n  return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n  return watch(\n    source,\n    (v, ov, onInvalidate) => {\n      if (v)\n        cb(v, ov, onInvalidate);\n    },\n    options\n  );\n}\n\nexport { assert, refAutoReset as autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, directiveHooks, computedEager as eagerComputed, extendRef, formatDate, get, hasOwn, hyphenate, identity, watchIgnorable as ignorableWatch, increaseWithUnit, injectLocal, invoke, isClient, isDef, isDefined, isIOS, isObject, isWorker, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, provideLocal, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toReactive, toRef, toRefs, toValue, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n","import { noop, makeDestructurable, camelize, toValue, isClient, isObject, tryOnScopeDispose, isIOS, tryOnMounted, computedWithControl, objectOmit, promiseTimeout, until, increaseWithUnit, objectEntries, createSingletonPromise, useTimeoutFn, pausableWatch, toRef, createEventHook, timestamp, pausableFilter, watchIgnorable, debounceFilter, createFilterWrapper, bypassFilter, toRefs, useIntervalFn, notNullish, containsProp, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, clamp, syncRef, objectPick, tryOnUnmounted, watchWithFilter, identity, isDef, isWorker } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, ref, shallowRef, watchEffect, computed, inject, isVue3, version, defineComponent, h, TransitionGroup, shallowReactive, Fragment, watch, getCurrentInstance, customRef, onUpdated, onMounted, readonly, nextTick, reactive, markRaw, unref, getCurrentScope, isVue2, set, del, isReadonly, onBeforeUpdate } from 'vue-demi';\nimport { useEventListener as useEventListener$1 } from '@vueuse/core';\n\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n  let options;\n  if (isRef(optionsOrRef)) {\n    options = {\n      evaluating: optionsOrRef\n    };\n  } else {\n    options = optionsOrRef || {};\n  }\n  const {\n    lazy = false,\n    evaluating = void 0,\n    shallow = true,\n    onError = noop\n  } = options;\n  const started = ref(!lazy);\n  const current = shallow ? shallowRef(initialState) : ref(initialState);\n  let counter = 0;\n  watchEffect(async (onInvalidate) => {\n    if (!started.value)\n      return;\n    counter++;\n    const counterAtBeginning = counter;\n    let hasFinished = false;\n    if (evaluating) {\n      Promise.resolve().then(() => {\n        evaluating.value = true;\n      });\n    }\n    try {\n      const result = await evaluationCallback((cancelCallback) => {\n        onInvalidate(() => {\n          if (evaluating)\n            evaluating.value = false;\n          if (!hasFinished)\n            cancelCallback();\n        });\n      });\n      if (counterAtBeginning === counter)\n        current.value = result;\n    } catch (e) {\n      onError(e);\n    } finally {\n      if (evaluating && counterAtBeginning === counter)\n        evaluating.value = false;\n      hasFinished = true;\n    }\n  });\n  if (lazy) {\n    return computed(() => {\n      started.value = true;\n      return current.value;\n    });\n  } else {\n    return current;\n  }\n}\n\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n  let source = inject(key);\n  if (defaultSource)\n    source = inject(key, defaultSource);\n  if (treatDefaultAsFactory)\n    source = inject(key, defaultSource, treatDefaultAsFactory);\n  if (typeof options === \"function\") {\n    return computed((ctx) => options(source, ctx));\n  } else {\n    return computed({\n      get: (ctx) => options.get(source, ctx),\n      set: options.set\n    });\n  }\n}\n\nfunction createReusableTemplate(options = {}) {\n  if (!isVue3 && !version.startsWith(\"2.7.\")) {\n    if (process.env.NODE_ENV !== \"production\")\n      throw new Error(\"[VueUse] createReusableTemplate only works in Vue 2.7 or above.\");\n    return;\n  }\n  const {\n    inheritAttrs = true\n  } = options;\n  const render = shallowRef();\n  const define = /* #__PURE__ */ defineComponent({\n    setup(_, { slots }) {\n      return () => {\n        render.value = slots.default;\n      };\n    }\n  });\n  const reuse = /* #__PURE__ */ defineComponent({\n    inheritAttrs,\n    setup(_, { attrs, slots }) {\n      return () => {\n        var _a;\n        if (!render.value && process.env.NODE_ENV !== \"production\")\n          throw new Error(\"[VueUse] Failed to find the definition of reusable template\");\n        const vnode = (_a = render.value) == null ? void 0 : _a.call(render, { ...keysToCamelKebabCase(attrs), $slots: slots });\n        return inheritAttrs && (vnode == null ? void 0 : vnode.length) === 1 ? vnode[0] : vnode;\n      };\n    }\n  });\n  return makeDestructurable(\n    { define, reuse },\n    [define, reuse]\n  );\n}\nfunction keysToCamelKebabCase(obj) {\n  const newObj = {};\n  for (const key in obj)\n    newObj[camelize(key)] = obj[key];\n  return newObj;\n}\n\nfunction createTemplatePromise(options = {}) {\n  if (!isVue3) {\n    if (process.env.NODE_ENV !== \"production\")\n      throw new Error(\"[VueUse] createTemplatePromise only works in Vue 3 or above.\");\n    return;\n  }\n  let index = 0;\n  const instances = ref([]);\n  function create(...args) {\n    const props = shallowReactive({\n      key: index++,\n      args,\n      promise: void 0,\n      resolve: () => {\n      },\n      reject: () => {\n      },\n      isResolving: false,\n      options\n    });\n    instances.value.push(props);\n    props.promise = new Promise((_resolve, _reject) => {\n      props.resolve = (v) => {\n        props.isResolving = true;\n        return _resolve(v);\n      };\n      props.reject = _reject;\n    }).finally(() => {\n      props.promise = void 0;\n      const index2 = instances.value.indexOf(props);\n      if (index2 !== -1)\n        instances.value.splice(index2, 1);\n    });\n    return props.promise;\n  }\n  function start(...args) {\n    if (options.singleton && instances.value.length > 0)\n      return instances.value[0].promise;\n    return create(...args);\n  }\n  const component = /* #__PURE__ */ defineComponent((_, { slots }) => {\n    const renderList = () => instances.value.map((props) => {\n      var _a;\n      return h(Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props));\n    });\n    if (options.transition)\n      return () => h(TransitionGroup, options.transition, renderList);\n    return renderList;\n  });\n  component.start = start;\n  return component;\n}\n\nfunction createUnrefFn(fn) {\n  return function(...args) {\n    return fn.apply(this, args.map((i) => toValue(i)));\n  };\n}\n\nfunction unrefElement(elRef) {\n  var _a;\n  const plain = toValue(elRef);\n  return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n\nfunction useEventListener(...args) {\n  let target;\n  let events;\n  let listeners;\n  let options;\n  if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n    [events, listeners, options] = args;\n    target = defaultWindow;\n  } else {\n    [target, events, listeners, options] = args;\n  }\n  if (!target)\n    return noop;\n  if (!Array.isArray(events))\n    events = [events];\n  if (!Array.isArray(listeners))\n    listeners = [listeners];\n  const cleanups = [];\n  const cleanup = () => {\n    cleanups.forEach((fn) => fn());\n    cleanups.length = 0;\n  };\n  const register = (el, event, listener, options2) => {\n    el.addEventListener(event, listener, options2);\n    return () => el.removeEventListener(event, listener, options2);\n  };\n  const stopWatch = watch(\n    () => [unrefElement(target), toValue(options)],\n    ([el, options2]) => {\n      cleanup();\n      if (!el)\n        return;\n      const optionsClone = isObject(options2) ? { ...options2 } : options2;\n      cleanups.push(\n        ...events.flatMap((event) => {\n          return listeners.map((listener) => register(el, event, listener, optionsClone));\n        })\n      );\n    },\n    { immediate: true, flush: \"post\" }\n  );\n  const stop = () => {\n    stopWatch();\n    cleanup();\n  };\n  tryOnScopeDispose(stop);\n  return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n  const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n  if (!window)\n    return;\n  if (isIOS && !_iOSWorkaround) {\n    _iOSWorkaround = true;\n    Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop));\n    window.document.documentElement.addEventListener(\"click\", noop);\n  }\n  let shouldListen = true;\n  const shouldIgnore = (event) => {\n    return ignore.some((target2) => {\n      if (typeof target2 === \"string\") {\n        return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n      } else {\n        const el = unrefElement(target2);\n        return el && (event.target === el || event.composedPath().includes(el));\n      }\n    });\n  };\n  const listener = (event) => {\n    const el = unrefElement(target);\n    if (!el || el === event.target || event.composedPath().includes(el))\n      return;\n    if (event.detail === 0)\n      shouldListen = !shouldIgnore(event);\n    if (!shouldListen) {\n      shouldListen = true;\n      return;\n    }\n    handler(event);\n  };\n  const cleanup = [\n    useEventListener(window, \"click\", listener, { passive: true, capture }),\n    useEventListener(window, \"pointerdown\", (e) => {\n      const el = unrefElement(target);\n      shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n    }, { passive: true }),\n    detectIframe && useEventListener(window, \"blur\", (event) => {\n      setTimeout(() => {\n        var _a;\n        const el = unrefElement(target);\n        if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement)))\n          handler(event);\n      }, 0);\n    })\n  ].filter(Boolean);\n  const stop = () => cleanup.forEach((fn) => fn());\n  return stop;\n}\n\nfunction createKeyPredicate(keyFilter) {\n  if (typeof keyFilter === \"function\")\n    return keyFilter;\n  else if (typeof keyFilter === \"string\")\n    return (event) => event.key === keyFilter;\n  else if (Array.isArray(keyFilter))\n    return (event) => keyFilter.includes(event.key);\n  return () => true;\n}\nfunction onKeyStroke(...args) {\n  let key;\n  let handler;\n  let options = {};\n  if (args.length === 3) {\n    key = args[0];\n    handler = args[1];\n    options = args[2];\n  } else if (args.length === 2) {\n    if (typeof args[1] === \"object\") {\n      key = true;\n      handler = args[0];\n      options = args[1];\n    } else {\n      key = args[0];\n      handler = args[1];\n    }\n  } else {\n    key = true;\n    handler = args[0];\n  }\n  const {\n    target = defaultWindow,\n    eventName = \"keydown\",\n    passive = false,\n    dedupe = false\n  } = options;\n  const predicate = createKeyPredicate(key);\n  const listener = (e) => {\n    if (e.repeat && toValue(dedupe))\n      return;\n    if (predicate(e))\n      handler(e);\n  };\n  return useEventListener(target, eventName, listener, passive);\n}\nfunction onKeyDown(key, handler, options = {}) {\n  return onKeyStroke(key, handler, { ...options, eventName: \"keydown\" });\n}\nfunction onKeyPressed(key, handler, options = {}) {\n  return onKeyStroke(key, handler, { ...options, eventName: \"keypress\" });\n}\nfunction onKeyUp(key, handler, options = {}) {\n  return onKeyStroke(key, handler, { ...options, eventName: \"keyup\" });\n}\n\nconst DEFAULT_DELAY = 500;\nfunction onLongPress(target, handler, options) {\n  var _a, _b;\n  const elementRef = computed(() => unrefElement(target));\n  let timeout;\n  function clear() {\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = void 0;\n    }\n  }\n  function onDown(ev) {\n    var _a2, _b2, _c, _d;\n    if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n      return;\n    clear();\n    if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n      ev.preventDefault();\n    if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n      ev.stopPropagation();\n    timeout = setTimeout(\n      () => handler(ev),\n      (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n    );\n  }\n  const listenerOptions = {\n    capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n    once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n  };\n  const cleanup = [\n    useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n    useEventListener(elementRef, [\"pointerup\", \"pointerleave\"], clear, listenerOptions)\n  ].filter(Boolean);\n  const stop = () => cleanup.forEach((fn) => fn());\n  return stop;\n}\n\nfunction isFocusedElementEditable() {\n  const { activeElement, body } = document;\n  if (!activeElement)\n    return false;\n  if (activeElement === body)\n    return false;\n  switch (activeElement.tagName) {\n    case \"INPUT\":\n    case \"TEXTAREA\":\n      return true;\n  }\n  return activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isTypedCharValid({\n  keyCode,\n  metaKey,\n  ctrlKey,\n  altKey\n}) {\n  if (metaKey || ctrlKey || altKey)\n    return false;\n  if (keyCode >= 48 && keyCode <= 57)\n    return true;\n  if (keyCode >= 65 && keyCode <= 90)\n    return true;\n  if (keyCode >= 97 && keyCode <= 122)\n    return true;\n  return false;\n}\nfunction onStartTyping(callback, options = {}) {\n  const { document: document2 = defaultDocument } = options;\n  const keydown = (event) => {\n    !isFocusedElementEditable() && isTypedCharValid(event) && callback(event);\n  };\n  if (document2)\n    useEventListener(document2, \"keydown\", keydown, { passive: true });\n}\n\nfunction templateRef(key, initialValue = null) {\n  const instance = getCurrentInstance();\n  let _trigger = () => {\n  };\n  const element = customRef((track, trigger) => {\n    _trigger = trigger;\n    return {\n      get() {\n        var _a, _b;\n        track();\n        return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;\n      },\n      set() {\n      }\n    };\n  });\n  tryOnMounted(_trigger);\n  onUpdated(_trigger);\n  return element;\n}\n\nfunction useActiveElement(options = {}) {\n  var _a;\n  const {\n    window = defaultWindow,\n    deep = true\n  } = options;\n  const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document;\n  const getDeepActiveElement = () => {\n    var _a2;\n    let element = document == null ? void 0 : document.activeElement;\n    if (deep) {\n      while (element == null ? void 0 : element.shadowRoot)\n        element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement;\n    }\n    return element;\n  };\n  const activeElement = computedWithControl(\n    () => null,\n    () => getDeepActiveElement()\n  );\n  if (window) {\n    useEventListener(window, \"blur\", (event) => {\n      if (event.relatedTarget !== null)\n        return;\n      activeElement.trigger();\n    }, true);\n    useEventListener(window, \"focus\", activeElement.trigger, true);\n  }\n  return activeElement;\n}\n\nfunction useMounted() {\n  const isMounted = ref(false);\n  if (getCurrentInstance()) {\n    onMounted(() => {\n      isMounted.value = true;\n    });\n  }\n  return isMounted;\n}\n\nfunction useSupported(callback) {\n  const isMounted = useMounted();\n  return computed(() => {\n    isMounted.value;\n    return Boolean(callback());\n  });\n}\n\nfunction useRafFn(fn, options = {}) {\n  const {\n    immediate = true,\n    fpsLimit = void 0,\n    window = defaultWindow\n  } = options;\n  const isActive = ref(false);\n  const intervalLimit = fpsLimit ? 1e3 / fpsLimit : null;\n  let previousFrameTimestamp = 0;\n  let rafId = null;\n  function loop(timestamp) {\n    if (!isActive.value || !window)\n      return;\n    const delta = timestamp - (previousFrameTimestamp || timestamp);\n    if (intervalLimit && delta < intervalLimit) {\n      rafId = window.requestAnimationFrame(loop);\n      return;\n    }\n    fn({ delta, timestamp });\n    previousFrameTimestamp = timestamp;\n    rafId = window.requestAnimationFrame(loop);\n  }\n  function resume() {\n    if (!isActive.value && window) {\n      isActive.value = true;\n      rafId = window.requestAnimationFrame(loop);\n    }\n  }\n  function pause() {\n    isActive.value = false;\n    if (rafId != null && window) {\n      window.cancelAnimationFrame(rafId);\n      rafId = null;\n    }\n  }\n  if (immediate)\n    resume();\n  tryOnScopeDispose(pause);\n  return {\n    isActive: readonly(isActive),\n    pause,\n    resume\n  };\n}\n\nfunction useAnimate(target, keyframes, options) {\n  let config;\n  let animateOptions;\n  if (isObject(options)) {\n    config = options;\n    animateOptions = objectOmit(options, [\"window\", \"immediate\", \"commitStyles\", \"persist\", \"onReady\", \"onError\"]);\n  } else {\n    config = { duration: options };\n    animateOptions = options;\n  }\n  const {\n    window = defaultWindow,\n    immediate = true,\n    commitStyles,\n    persist,\n    playbackRate: _playbackRate = 1,\n    onReady,\n    onError = (e) => {\n      console.error(e);\n    }\n  } = config;\n  const isSupported = useSupported(() => window && HTMLElement && \"animate\" in HTMLElement.prototype);\n  const animate = shallowRef(void 0);\n  const store = shallowReactive({\n    startTime: null,\n    currentTime: null,\n    timeline: null,\n    playbackRate: _playbackRate,\n    pending: false,\n    playState: immediate ? \"idle\" : \"paused\",\n    replaceState: \"active\"\n  });\n  const pending = computed(() => store.pending);\n  const playState = computed(() => store.playState);\n  const replaceState = computed(() => store.replaceState);\n  const startTime = computed({\n    get() {\n      return store.startTime;\n    },\n    set(value) {\n      store.startTime = value;\n      if (animate.value)\n        animate.value.startTime = value;\n    }\n  });\n  const currentTime = computed({\n    get() {\n      return store.currentTime;\n    },\n    set(value) {\n      store.currentTime = value;\n      if (animate.value) {\n        animate.value.currentTime = value;\n        syncResume();\n      }\n    }\n  });\n  const timeline = computed({\n    get() {\n      return store.timeline;\n    },\n    set(value) {\n      store.timeline = value;\n      if (animate.value)\n        animate.value.timeline = value;\n    }\n  });\n  const playbackRate = computed({\n    get() {\n      return store.playbackRate;\n    },\n    set(value) {\n      store.playbackRate = value;\n      if (animate.value)\n        animate.value.playbackRate = value;\n    }\n  });\n  const play = () => {\n    if (animate.value) {\n      try {\n        animate.value.play();\n        syncResume();\n      } catch (e) {\n        syncPause();\n        onError(e);\n      }\n    } else {\n      update();\n    }\n  };\n  const pause = () => {\n    var _a;\n    try {\n      (_a = animate.value) == null ? void 0 : _a.pause();\n      syncPause();\n    } catch (e) {\n      onError(e);\n    }\n  };\n  const reverse = () => {\n    var _a;\n    !animate.value && update();\n    try {\n      (_a = animate.value) == null ? void 0 : _a.reverse();\n      syncResume();\n    } catch (e) {\n      syncPause();\n      onError(e);\n    }\n  };\n  const finish = () => {\n    var _a;\n    try {\n      (_a = animate.value) == null ? void 0 : _a.finish();\n      syncPause();\n    } catch (e) {\n      onError(e);\n    }\n  };\n  const cancel = () => {\n    var _a;\n    try {\n      (_a = animate.value) == null ? void 0 : _a.cancel();\n      syncPause();\n    } catch (e) {\n      onError(e);\n    }\n  };\n  watch(() => unrefElement(target), (el) => {\n    el && update();\n  });\n  watch(() => keyframes, (value) => {\n    !animate.value && update();\n    if (!unrefElement(target) && animate.value) {\n      animate.value.effect = new KeyframeEffect(\n        unrefElement(target),\n        toValue(value),\n        animateOptions\n      );\n    }\n  }, { deep: true });\n  tryOnMounted(() => {\n    nextTick(() => update(true));\n  });\n  tryOnScopeDispose(cancel);\n  function update(init) {\n    const el = unrefElement(target);\n    if (!isSupported.value || !el)\n      return;\n    animate.value = el.animate(toValue(keyframes), animateOptions);\n    if (commitStyles)\n      animate.value.commitStyles();\n    if (persist)\n      animate.value.persist();\n    if (_playbackRate !== 1)\n      animate.value.playbackRate = _playbackRate;\n    if (init && !immediate)\n      animate.value.pause();\n    else\n      syncResume();\n    onReady == null ? void 0 : onReady(animate.value);\n  }\n  useEventListener(animate, [\"cancel\", \"finish\", \"remove\"], syncPause);\n  const { resume: resumeRef, pause: pauseRef } = useRafFn(() => {\n    if (!animate.value)\n      return;\n    store.pending = animate.value.pending;\n    store.playState = animate.value.playState;\n    store.replaceState = animate.value.replaceState;\n    store.startTime = animate.value.startTime;\n    store.currentTime = animate.value.currentTime;\n    store.timeline = animate.value.timeline;\n    store.playbackRate = animate.value.playbackRate;\n  }, { immediate: false });\n  function syncResume() {\n    if (isSupported.value)\n      resumeRef();\n  }\n  function syncPause() {\n    if (isSupported.value && window)\n      window.requestAnimationFrame(pauseRef);\n  }\n  return {\n    isSupported,\n    animate,\n    // actions\n    play,\n    pause,\n    reverse,\n    finish,\n    cancel,\n    // state\n    pending,\n    playState,\n    replaceState,\n    startTime,\n    currentTime,\n    timeline,\n    playbackRate\n  };\n}\n\nfunction useAsyncQueue(tasks, options) {\n  const {\n    interrupt = true,\n    onError = noop,\n    onFinished = noop,\n    signal\n  } = options || {};\n  const promiseState = {\n    aborted: \"aborted\",\n    fulfilled: \"fulfilled\",\n    pending: \"pending\",\n    rejected: \"rejected\"\n  };\n  const initialResult = Array.from(Array.from({ length: tasks.length }), () => ({ state: promiseState.pending, data: null }));\n  const result = reactive(initialResult);\n  const activeIndex = ref(-1);\n  if (!tasks || tasks.length === 0) {\n    onFinished();\n    return {\n      activeIndex,\n      result\n    };\n  }\n  function updateResult(state, res) {\n    activeIndex.value++;\n    result[activeIndex.value].data = res;\n    result[activeIndex.value].state = state;\n  }\n  tasks.reduce((prev, curr) => {\n    return prev.then((prevRes) => {\n      var _a;\n      if (signal == null ? void 0 : signal.aborted) {\n        updateResult(promiseState.aborted, new Error(\"aborted\"));\n        return;\n      }\n      if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n        onFinished();\n        return;\n      }\n      const done = curr(prevRes).then((currentRes) => {\n        updateResult(promiseState.fulfilled, currentRes);\n        activeIndex.value === tasks.length - 1 && onFinished();\n        return currentRes;\n      });\n      if (!signal)\n        return done;\n      return Promise.race([done, whenAborted(signal)]);\n    }).catch((e) => {\n      if (signal == null ? void 0 : signal.aborted) {\n        updateResult(promiseState.aborted, e);\n        return e;\n      }\n      updateResult(promiseState.rejected, e);\n      onError();\n      return e;\n    });\n  }, Promise.resolve());\n  return {\n    activeIndex,\n    result\n  };\n}\nfunction whenAborted(signal) {\n  return new Promise((resolve, reject) => {\n    const error = new Error(\"aborted\");\n    if (signal.aborted)\n      reject(error);\n    else\n      signal.addEventListener(\"abort\", () => reject(error), { once: true });\n  });\n}\n\nfunction useAsyncState(promise, initialState, options) {\n  const {\n    immediate = true,\n    delay = 0,\n    onError = noop,\n    onSuccess = noop,\n    resetOnExecute = true,\n    shallow = true,\n    throwError\n  } = options != null ? options : {};\n  const state = shallow ? shallowRef(initialState) : ref(initialState);\n  const isReady = ref(false);\n  const isLoading = ref(false);\n  const error = shallowRef(void 0);\n  async function execute(delay2 = 0, ...args) {\n    if (resetOnExecute)\n      state.value = initialState;\n    error.value = void 0;\n    isReady.value = false;\n    isLoading.value = true;\n    if (delay2 > 0)\n      await promiseTimeout(delay2);\n    const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n    try {\n      const data = await _promise;\n      state.value = data;\n      isReady.value = true;\n      onSuccess(data);\n    } catch (e) {\n      error.value = e;\n      onError(e);\n      if (throwError)\n        throw e;\n    } finally {\n      isLoading.value = false;\n    }\n    return state.value;\n  }\n  if (immediate)\n    execute(delay);\n  const shell = {\n    state,\n    isReady,\n    isLoading,\n    error,\n    execute\n  };\n  function waitUntilIsLoaded() {\n    return new Promise((resolve, reject) => {\n      until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n    });\n  }\n  return {\n    ...shell,\n    then(onFulfilled, onRejected) {\n      return waitUntilIsLoaded().then(onFulfilled, onRejected);\n    }\n  };\n}\n\nconst defaults = {\n  array: (v) => JSON.stringify(v),\n  object: (v) => JSON.stringify(v),\n  set: (v) => JSON.stringify(Array.from(v)),\n  map: (v) => JSON.stringify(Object.fromEntries(v)),\n  null: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n  if (!target)\n    return defaults.null;\n  if (target instanceof Map)\n    return defaults.map;\n  else if (target instanceof Set)\n    return defaults.set;\n  else if (Array.isArray(target))\n    return defaults.array;\n  else\n    return defaults.object;\n}\n\nfunction useBase64(target, options) {\n  const base64 = ref(\"\");\n  const promise = ref();\n  function execute() {\n    if (!isClient)\n      return;\n    promise.value = new Promise((resolve, reject) => {\n      try {\n        const _target = toValue(target);\n        if (_target == null) {\n          resolve(\"\");\n        } else if (typeof _target === \"string\") {\n          resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n        } else if (_target instanceof Blob) {\n          resolve(blobToBase64(_target));\n        } else if (_target instanceof ArrayBuffer) {\n          resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n        } else if (_target instanceof HTMLCanvasElement) {\n          resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n        } else if (_target instanceof HTMLImageElement) {\n          const img = _target.cloneNode(false);\n          img.crossOrigin = \"Anonymous\";\n          imgLoaded(img).then(() => {\n            const canvas = document.createElement(\"canvas\");\n            const ctx = canvas.getContext(\"2d\");\n            canvas.width = img.width;\n            canvas.height = img.height;\n            ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n            resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n          }).catch(reject);\n        } else if (typeof _target === \"object\") {\n          const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target);\n          const serialized = _serializeFn(_target);\n          return resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n        } else {\n          reject(new Error(\"target is unsupported types\"));\n        }\n      } catch (error) {\n        reject(error);\n      }\n    });\n    promise.value.then((res) => base64.value = res);\n    return promise.value;\n  }\n  if (isRef(target) || typeof target === \"function\")\n    watch(target, execute, { immediate: true });\n  else\n    execute();\n  return {\n    base64,\n    promise,\n    execute\n  };\n}\nfunction imgLoaded(img) {\n  return new Promise((resolve, reject) => {\n    if (!img.complete) {\n      img.onload = () => {\n        resolve();\n      };\n      img.onerror = reject;\n    } else {\n      resolve();\n    }\n  });\n}\nfunction blobToBase64(blob) {\n  return new Promise((resolve, reject) => {\n    const fr = new FileReader();\n    fr.onload = (e) => {\n      resolve(e.target.result);\n    };\n    fr.onerror = reject;\n    fr.readAsDataURL(blob);\n  });\n}\n\nfunction useBattery(options = {}) {\n  const { navigator = defaultNavigator } = options;\n  const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n  const isSupported = useSupported(() => navigator && \"getBattery\" in navigator);\n  const charging = ref(false);\n  const chargingTime = ref(0);\n  const dischargingTime = ref(0);\n  const level = ref(1);\n  let battery;\n  function updateBatteryInfo() {\n    charging.value = this.charging;\n    chargingTime.value = this.chargingTime || 0;\n    dischargingTime.value = this.dischargingTime || 0;\n    level.value = this.level;\n  }\n  if (isSupported.value) {\n    navigator.getBattery().then((_battery) => {\n      battery = _battery;\n      updateBatteryInfo.call(battery);\n      useEventListener(battery, events, updateBatteryInfo, { passive: true });\n    });\n  }\n  return {\n    isSupported,\n    charging,\n    chargingTime,\n    dischargingTime,\n    level\n  };\n}\n\nfunction useBluetooth(options) {\n  let {\n    acceptAllDevices = false\n  } = options || {};\n  const {\n    filters = void 0,\n    optionalServices = void 0,\n    navigator = defaultNavigator\n  } = options || {};\n  const isSupported = useSupported(() => navigator && \"bluetooth\" in navigator);\n  const device = shallowRef(void 0);\n  const error = shallowRef(null);\n  watch(device, () => {\n    connectToBluetoothGATTServer();\n  });\n  async function requestDevice() {\n    if (!isSupported.value)\n      return;\n    error.value = null;\n    if (filters && filters.length > 0)\n      acceptAllDevices = false;\n    try {\n      device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({\n        acceptAllDevices,\n        filters,\n        optionalServices\n      }));\n    } catch (err) {\n      error.value = err;\n    }\n  }\n  const server = ref();\n  const isConnected = computed(() => {\n    var _a;\n    return ((_a = server.value) == null ? void 0 : _a.connected) || false;\n  });\n  async function connectToBluetoothGATTServer() {\n    error.value = null;\n    if (device.value && device.value.gatt) {\n      device.value.addEventListener(\"gattserverdisconnected\", () => {\n      });\n      try {\n        server.value = await device.value.gatt.connect();\n      } catch (err) {\n        error.value = err;\n      }\n    }\n  }\n  tryOnMounted(() => {\n    var _a;\n    if (device.value)\n      (_a = device.value.gatt) == null ? void 0 : _a.connect();\n  });\n  tryOnScopeDispose(() => {\n    var _a;\n    if (device.value)\n      (_a = device.value.gatt) == null ? void 0 : _a.disconnect();\n  });\n  return {\n    isSupported,\n    isConnected,\n    // Device:\n    device,\n    requestDevice,\n    // Server:\n    server,\n    // Errors:\n    error\n  };\n}\n\nfunction useMediaQuery(query, options = {}) {\n  const { window = defaultWindow } = options;\n  const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n  let mediaQuery;\n  const matches = ref(false);\n  const handler = (event) => {\n    matches.value = event.matches;\n  };\n  const cleanup = () => {\n    if (!mediaQuery)\n      return;\n    if (\"removeEventListener\" in mediaQuery)\n      mediaQuery.removeEventListener(\"change\", handler);\n    else\n      mediaQuery.removeListener(handler);\n  };\n  const stopWatch = watchEffect(() => {\n    if (!isSupported.value)\n      return;\n    cleanup();\n    mediaQuery = window.matchMedia(toValue(query));\n    if (\"addEventListener\" in mediaQuery)\n      mediaQuery.addEventListener(\"change\", handler);\n    else\n      mediaQuery.addListener(handler);\n    matches.value = mediaQuery.matches;\n  });\n  tryOnScopeDispose(() => {\n    stopWatch();\n    cleanup();\n    mediaQuery = void 0;\n  });\n  return matches;\n}\n\nconst breakpointsTailwind = {\n  \"sm\": 640,\n  \"md\": 768,\n  \"lg\": 1024,\n  \"xl\": 1280,\n  \"2xl\": 1536\n};\nconst breakpointsBootstrapV5 = {\n  xs: 0,\n  sm: 576,\n  md: 768,\n  lg: 992,\n  xl: 1200,\n  xxl: 1400\n};\nconst breakpointsVuetify = {\n  xs: 600,\n  sm: 960,\n  md: 1264,\n  lg: 1904\n};\nconst breakpointsAntDesign = {\n  xs: 480,\n  sm: 576,\n  md: 768,\n  lg: 992,\n  xl: 1200,\n  xxl: 1600\n};\nconst breakpointsQuasar = {\n  xs: 600,\n  sm: 1024,\n  md: 1440,\n  lg: 1920\n};\nconst breakpointsSematic = {\n  mobileS: 320,\n  mobileM: 375,\n  mobileL: 425,\n  tablet: 768,\n  laptop: 1024,\n  laptopL: 1440,\n  desktop4K: 2560\n};\nconst breakpointsMasterCss = {\n  \"3xs\": 360,\n  \"2xs\": 480,\n  \"xs\": 600,\n  \"sm\": 768,\n  \"md\": 1024,\n  \"lg\": 1280,\n  \"xl\": 1440,\n  \"2xl\": 1600,\n  \"3xl\": 1920,\n  \"4xl\": 2560\n};\nconst breakpointsPrimeFlex = {\n  sm: 576,\n  md: 768,\n  lg: 992,\n  xl: 1200\n};\n\nfunction useBreakpoints(breakpoints, options = {}) {\n  function getValue(k, delta) {\n    let v = breakpoints[k];\n    if (delta != null)\n      v = increaseWithUnit(v, delta);\n    if (typeof v === \"number\")\n      v = `${v}px`;\n    return v;\n  }\n  const { window = defaultWindow } = options;\n  function match(query) {\n    if (!window)\n      return false;\n    return window.matchMedia(query).matches;\n  }\n  const greaterOrEqual = (k) => {\n    return useMediaQuery(`(min-width: ${getValue(k)})`, options);\n  };\n  const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n    Object.defineProperty(shortcuts, k, {\n      get: () => greaterOrEqual(k),\n      enumerable: true,\n      configurable: true\n    });\n    return shortcuts;\n  }, {});\n  return Object.assign(shortcutMethods, {\n    greater(k) {\n      return useMediaQuery(`(min-width: ${getValue(k, 0.1)})`, options);\n    },\n    greaterOrEqual,\n    smaller(k) {\n      return useMediaQuery(`(max-width: ${getValue(k, -0.1)})`, options);\n    },\n    smallerOrEqual(k) {\n      return useMediaQuery(`(max-width: ${getValue(k)})`, options);\n    },\n    between(a, b) {\n      return useMediaQuery(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);\n    },\n    isGreater(k) {\n      return match(`(min-width: ${getValue(k, 0.1)})`);\n    },\n    isGreaterOrEqual(k) {\n      return match(`(min-width: ${getValue(k)})`);\n    },\n    isSmaller(k) {\n      return match(`(max-width: ${getValue(k, -0.1)})`);\n    },\n    isSmallerOrEqual(k) {\n      return match(`(max-width: ${getValue(k)})`);\n    },\n    isInBetween(a, b) {\n      return match(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`);\n    },\n    current() {\n      const points = Object.keys(breakpoints).map((i) => [i, greaterOrEqual(i)]);\n      return computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n    }\n  });\n}\n\nfunction useBroadcastChannel(options) {\n  const {\n    name,\n    window = defaultWindow\n  } = options;\n  const isSupported = useSupported(() => window && \"BroadcastChannel\" in window);\n  const isClosed = ref(false);\n  const channel = ref();\n  const data = ref();\n  const error = shallowRef(null);\n  const post = (data2) => {\n    if (channel.value)\n      channel.value.postMessage(data2);\n  };\n  const close = () => {\n    if (channel.value)\n      channel.value.close();\n    isClosed.value = true;\n  };\n  if (isSupported.value) {\n    tryOnMounted(() => {\n      error.value = null;\n      channel.value = new BroadcastChannel(name);\n      channel.value.addEventListener(\"message\", (e) => {\n        data.value = e.data;\n      }, { passive: true });\n      channel.value.addEventListener(\"messageerror\", (e) => {\n        error.value = e;\n      }, { passive: true });\n      channel.value.addEventListener(\"close\", () => {\n        isClosed.value = true;\n      });\n    });\n  }\n  tryOnScopeDispose(() => {\n    close();\n  });\n  return {\n    isSupported,\n    channel,\n    data,\n    post,\n    close,\n    error,\n    isClosed\n  };\n}\n\nconst WRITABLE_PROPERTIES = [\n  \"hash\",\n  \"host\",\n  \"hostname\",\n  \"href\",\n  \"pathname\",\n  \"port\",\n  \"protocol\",\n  \"search\"\n];\nfunction useBrowserLocation(options = {}) {\n  const { window = defaultWindow } = options;\n  const refs = Object.fromEntries(\n    WRITABLE_PROPERTIES.map((key) => [key, ref()])\n  );\n  for (const [key, ref2] of objectEntries(refs)) {\n    watch(ref2, (value) => {\n      if (!(window == null ? void 0 : window.location) || window.location[key] === value)\n        return;\n      window.location[key] = value;\n    });\n  }\n  const buildState = (trigger) => {\n    var _a;\n    const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n    const { origin } = (window == null ? void 0 : window.location) || {};\n    for (const key of WRITABLE_PROPERTIES)\n      refs[key].value = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a[key];\n    return reactive({\n      trigger,\n      state: state2,\n      length,\n      origin,\n      ...refs\n    });\n  };\n  const state = ref(buildState(\"load\"));\n  if (window) {\n    useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), { passive: true });\n    useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), { passive: true });\n  }\n  return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, watchOptions) {\n  const cachedValue = ref(refValue.value);\n  watch(() => refValue.value, (value) => {\n    if (!comparator(value, cachedValue.value))\n      cachedValue.value = value;\n  }, watchOptions);\n  return cachedValue;\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n  const {\n    controls = false,\n    navigator = defaultNavigator\n  } = options;\n  const isSupported = useSupported(() => navigator && \"permissions\" in navigator);\n  let permissionStatus;\n  const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n  const state = ref();\n  const onChange = () => {\n    if (permissionStatus)\n      state.value = permissionStatus.state;\n  };\n  const query = createSingletonPromise(async () => {\n    if (!isSupported.value)\n      return;\n    if (!permissionStatus) {\n      try {\n        permissionStatus = await navigator.permissions.query(desc);\n        useEventListener(permissionStatus, \"change\", onChange);\n        onChange();\n      } catch (e) {\n        state.value = \"prompt\";\n      }\n    }\n    return permissionStatus;\n  });\n  query();\n  if (controls) {\n    return {\n      state,\n      isSupported,\n      query\n    };\n  } else {\n    return state;\n  }\n}\n\nfunction useClipboard(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    read = false,\n    source,\n    copiedDuring = 1500,\n    legacy = false\n  } = options;\n  const isClipboardApiSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n  const permissionRead = usePermission(\"clipboard-read\");\n  const permissionWrite = usePermission(\"clipboard-write\");\n  const isSupported = computed(() => isClipboardApiSupported.value || legacy);\n  const text = ref(\"\");\n  const copied = ref(false);\n  const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n  function updateText() {\n    if (isClipboardApiSupported.value && permissionRead.value !== \"denied\") {\n      navigator.clipboard.readText().then((value) => {\n        text.value = value;\n      });\n    } else {\n      text.value = legacyRead();\n    }\n  }\n  if (isSupported.value && read)\n    useEventListener([\"copy\", \"cut\"], updateText);\n  async function copy(value = toValue(source)) {\n    if (isSupported.value && value != null) {\n      if (isClipboardApiSupported.value && permissionWrite.value !== \"denied\")\n        await navigator.clipboard.writeText(value);\n      else\n        legacyCopy(value);\n      text.value = value;\n      copied.value = true;\n      timeout.start();\n    }\n  }\n  function legacyCopy(value) {\n    const ta = document.createElement(\"textarea\");\n    ta.value = value != null ? value : \"\";\n    ta.style.position = \"absolute\";\n    ta.style.opacity = \"0\";\n    document.body.appendChild(ta);\n    ta.select();\n    document.execCommand(\"copy\");\n    ta.remove();\n  }\n  function legacyRead() {\n    var _a, _b, _c;\n    return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : \"\";\n  }\n  return {\n    isSupported,\n    text,\n    copied,\n    copy\n  };\n}\n\nfunction useClipboardItems(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    read = false,\n    source,\n    copiedDuring = 1500\n  } = options;\n  const isSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n  const content = ref([]);\n  const copied = ref(false);\n  const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n  function updateContent() {\n    if (isSupported.value) {\n      navigator.clipboard.read().then((items) => {\n        content.value = items;\n      });\n    }\n  }\n  if (isSupported.value && read)\n    useEventListener([\"copy\", \"cut\"], updateContent);\n  async function copy(value = toValue(source)) {\n    if (isSupported.value && value != null) {\n      await navigator.clipboard.write(value);\n      content.value = value;\n      copied.value = true;\n      timeout.start();\n    }\n  }\n  return {\n    isSupported,\n    content,\n    copied,\n    copy\n  };\n}\n\nfunction cloneFnJSON(source) {\n  return JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n  const cloned = ref({});\n  const {\n    manual,\n    clone = cloneFnJSON,\n    // watch options\n    deep = true,\n    immediate = true\n  } = options;\n  function sync() {\n    cloned.value = clone(toValue(source));\n  }\n  if (!manual && (isRef(source) || typeof source === \"function\")) {\n    watch(source, sync, {\n      ...options,\n      deep,\n      immediate\n    });\n  } else {\n    sync();\n  }\n  return { cloned, sync };\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n  if (!(globalKey in _global))\n    _global[globalKey] = _global[globalKey] || {};\n  return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n  return handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n  handlers[key] = fn;\n}\n\nfunction guessSerializerType(rawInit) {\n  return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nconst StorageSerializers = {\n  boolean: {\n    read: (v) => v === \"true\",\n    write: (v) => String(v)\n  },\n  object: {\n    read: (v) => JSON.parse(v),\n    write: (v) => JSON.stringify(v)\n  },\n  number: {\n    read: (v) => Number.parseFloat(v),\n    write: (v) => String(v)\n  },\n  any: {\n    read: (v) => v,\n    write: (v) => String(v)\n  },\n  string: {\n    read: (v) => v,\n    write: (v) => String(v)\n  },\n  map: {\n    read: (v) => new Map(JSON.parse(v)),\n    write: (v) => JSON.stringify(Array.from(v.entries()))\n  },\n  set: {\n    read: (v) => new Set(JSON.parse(v)),\n    write: (v) => JSON.stringify(Array.from(v))\n  },\n  date: {\n    read: (v) => new Date(v),\n    write: (v) => v.toISOString()\n  }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n  var _a;\n  const {\n    flush = \"pre\",\n    deep = true,\n    listenToStorageChanges = true,\n    writeDefaults = true,\n    mergeDefaults = false,\n    shallow,\n    window = defaultWindow,\n    eventFilter,\n    onError = (e) => {\n      console.error(e);\n    },\n    initOnMounted\n  } = options;\n  const data = (shallow ? shallowRef : ref)(typeof defaults === \"function\" ? defaults() : defaults);\n  if (!storage) {\n    try {\n      storage = getSSRHandler(\"getDefaultStorage\", () => {\n        var _a2;\n        return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n      })();\n    } catch (e) {\n      onError(e);\n    }\n  }\n  if (!storage)\n    return data;\n  const rawInit = toValue(defaults);\n  const type = guessSerializerType(rawInit);\n  const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n  const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n    data,\n    () => write(data.value),\n    { flush, deep, eventFilter }\n  );\n  if (window && listenToStorageChanges) {\n    tryOnMounted(() => {\n      useEventListener(window, \"storage\", update);\n      useEventListener(window, customStorageEventName, updateFromCustomEvent);\n      if (initOnMounted)\n        update();\n    });\n  }\n  if (!initOnMounted)\n    update();\n  return data;\n  function write(v) {\n    try {\n      if (v == null) {\n        storage.removeItem(key);\n      } else {\n        const serialized = serializer.write(v);\n        const oldValue = storage.getItem(key);\n        if (oldValue !== serialized) {\n          storage.setItem(key, serialized);\n          if (window) {\n            window.dispatchEvent(new CustomEvent(customStorageEventName, {\n              detail: {\n                key,\n                oldValue,\n                newValue: serialized,\n                storageArea: storage\n              }\n            }));\n          }\n        }\n      }\n    } catch (e) {\n      onError(e);\n    }\n  }\n  function read(event) {\n    const rawValue = event ? event.newValue : storage.getItem(key);\n    if (rawValue == null) {\n      if (writeDefaults && rawInit !== null)\n        storage.setItem(key, serializer.write(rawInit));\n      return rawInit;\n    } else if (!event && mergeDefaults) {\n      const value = serializer.read(rawValue);\n      if (typeof mergeDefaults === \"function\")\n        return mergeDefaults(value, rawInit);\n      else if (type === \"object\" && !Array.isArray(value))\n        return { ...rawInit, ...value };\n      return value;\n    } else if (typeof rawValue !== \"string\") {\n      return rawValue;\n    } else {\n      return serializer.read(rawValue);\n    }\n  }\n  function updateFromCustomEvent(event) {\n    update(event.detail);\n  }\n  function update(event) {\n    if (event && event.storageArea !== storage)\n      return;\n    if (event && event.key == null) {\n      data.value = rawInit;\n      return;\n    }\n    if (event && event.key !== key)\n      return;\n    pauseWatch();\n    try {\n      if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value))\n        data.value = read(event);\n    } catch (e) {\n      onError(e);\n    } finally {\n      if (event)\n        nextTick(resumeWatch);\n      else\n        resumeWatch();\n    }\n  }\n}\n\nfunction usePreferredDark(options) {\n  return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nfunction useColorMode(options = {}) {\n  const {\n    selector = \"html\",\n    attribute = \"class\",\n    initialValue = \"auto\",\n    window = defaultWindow,\n    storage,\n    storageKey = \"vueuse-color-scheme\",\n    listenToStorageChanges = true,\n    storageRef,\n    emitAuto,\n    disableTransition = true\n  } = options;\n  const modes = {\n    auto: \"\",\n    light: \"light\",\n    dark: \"dark\",\n    ...options.modes || {}\n  };\n  const preferredDark = usePreferredDark({ window });\n  const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n  const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n  const state = computed(() => store.value === \"auto\" ? system.value : store.value);\n  const updateHTMLAttrs = getSSRHandler(\n    \"updateHTMLAttrs\",\n    (selector2, attribute2, value) => {\n      const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n      if (!el)\n        return;\n      let style;\n      if (disableTransition) {\n        style = window.document.createElement(\"style\");\n        const styleString = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\n        style.appendChild(document.createTextNode(styleString));\n        window.document.head.appendChild(style);\n      }\n      if (attribute2 === \"class\") {\n        const current = value.split(/\\s/g);\n        Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n          if (current.includes(v))\n            el.classList.add(v);\n          else\n            el.classList.remove(v);\n        });\n      } else {\n        el.setAttribute(attribute2, value);\n      }\n      if (disableTransition) {\n        window.getComputedStyle(style).opacity;\n        document.head.removeChild(style);\n      }\n    }\n  );\n  function defaultOnChanged(mode) {\n    var _a;\n    updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n  }\n  function onChanged(mode) {\n    if (options.onChanged)\n      options.onChanged(mode, defaultOnChanged);\n    else\n      defaultOnChanged(mode);\n  }\n  watch(state, onChanged, { flush: \"post\", immediate: true });\n  tryOnMounted(() => onChanged(state.value));\n  const auto = computed({\n    get() {\n      return emitAuto ? store.value : state.value;\n    },\n    set(v) {\n      store.value = v;\n    }\n  });\n  try {\n    return Object.assign(auto, { store, system, state });\n  } catch (e) {\n    return auto;\n  }\n}\n\nfunction useConfirmDialog(revealed = ref(false)) {\n  const confirmHook = createEventHook();\n  const cancelHook = createEventHook();\n  const revealHook = createEventHook();\n  let _resolve = noop;\n  const reveal = (data) => {\n    revealHook.trigger(data);\n    revealed.value = true;\n    return new Promise((resolve) => {\n      _resolve = resolve;\n    });\n  };\n  const confirm = (data) => {\n    revealed.value = false;\n    confirmHook.trigger(data);\n    _resolve({ data, isCanceled: false });\n  };\n  const cancel = (data) => {\n    revealed.value = false;\n    cancelHook.trigger(data);\n    _resolve({ data, isCanceled: true });\n  };\n  return {\n    isRevealed: computed(() => revealed.value),\n    reveal,\n    confirm,\n    cancel,\n    onReveal: revealHook.on,\n    onConfirm: confirmHook.on,\n    onCancel: cancelHook.on\n  };\n}\n\nfunction useMutationObserver(target, callback, options = {}) {\n  const { window = defaultWindow, ...mutationOptions } = options;\n  let observer;\n  const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n  const cleanup = () => {\n    if (observer) {\n      observer.disconnect();\n      observer = void 0;\n    }\n  };\n  const stopWatch = watch(\n    () => unrefElement(target),\n    (el) => {\n      cleanup();\n      if (isSupported.value && window && el) {\n        observer = new MutationObserver(callback);\n        observer.observe(el, mutationOptions);\n      }\n    },\n    { immediate: true }\n  );\n  const takeRecords = () => {\n    return observer == null ? void 0 : observer.takeRecords();\n  };\n  const stop = () => {\n    cleanup();\n    stopWatch();\n  };\n  tryOnScopeDispose(stop);\n  return {\n    isSupported,\n    stop,\n    takeRecords\n  };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n  const { window = defaultWindow, initialValue = \"\", observe = false } = options;\n  const variable = ref(initialValue);\n  const elRef = computed(() => {\n    var _a;\n    return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n  });\n  function updateCssVar() {\n    var _a;\n    const key = toValue(prop);\n    const el = toValue(elRef);\n    if (el && window) {\n      const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n      variable.value = value || initialValue;\n    }\n  }\n  if (observe) {\n    useMutationObserver(elRef, updateCssVar, {\n      attributeFilter: [\"style\", \"class\"],\n      window\n    });\n  }\n  watch(\n    [elRef, () => toValue(prop)],\n    updateCssVar,\n    { immediate: true }\n  );\n  watch(\n    variable,\n    (val) => {\n      var _a;\n      if ((_a = elRef.value) == null ? void 0 : _a.style)\n        elRef.value.style.setProperty(toValue(prop), val);\n    }\n  );\n  return variable;\n}\n\nfunction useCurrentElement() {\n  const vm = getCurrentInstance();\n  const currentElement = computedWithControl(\n    () => null,\n    () => vm.proxy.$el\n  );\n  onUpdated(currentElement.trigger);\n  onMounted(currentElement.trigger);\n  return currentElement;\n}\n\nfunction useCycleList(list, options) {\n  const state = shallowRef(getInitialValue());\n  const listRef = toRef(list);\n  const index = computed({\n    get() {\n      var _a;\n      const targetList = listRef.value;\n      let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value);\n      if (index2 < 0)\n        index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0;\n      return index2;\n    },\n    set(v) {\n      set(v);\n    }\n  });\n  function set(i) {\n    const targetList = listRef.value;\n    const length = targetList.length;\n    const index2 = (i % length + length) % length;\n    const value = targetList[index2];\n    state.value = value;\n    return value;\n  }\n  function shift(delta = 1) {\n    return set(index.value + delta);\n  }\n  function next(n = 1) {\n    return shift(n);\n  }\n  function prev(n = 1) {\n    return shift(-n);\n  }\n  function getInitialValue() {\n    var _a, _b;\n    return (_b = toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : toValue(list)[0])) != null ? _b : void 0;\n  }\n  watch(listRef, () => set(index.value));\n  return {\n    state,\n    index,\n    next,\n    prev\n  };\n}\n\nfunction useDark(options = {}) {\n  const {\n    valueDark = \"dark\",\n    valueLight = \"\"\n  } = options;\n  const mode = useColorMode({\n    ...options,\n    onChanged: (mode2, defaultHandler) => {\n      var _a;\n      if (options.onChanged)\n        (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\", defaultHandler, mode2);\n      else\n        defaultHandler(mode2);\n    },\n    modes: {\n      dark: valueDark,\n      light: valueLight\n    }\n  });\n  const isDark = computed({\n    get() {\n      return mode.value === \"dark\";\n    },\n    set(v) {\n      const modeVal = v ? \"dark\" : \"light\";\n      if (mode.system.value === modeVal)\n        mode.value = \"auto\";\n      else\n        mode.value = modeVal;\n    }\n  });\n  return isDark;\n}\n\nfunction fnBypass(v) {\n  return v;\n}\nfunction fnSetSource(source, value) {\n  return source.value = value;\n}\nfunction defaultDump(clone) {\n  return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n  return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction useManualRefHistory(source, options = {}) {\n  const {\n    clone = false,\n    dump = defaultDump(clone),\n    parse = defaultParse(clone),\n    setSource = fnSetSource\n  } = options;\n  function _createHistoryRecord() {\n    return markRaw({\n      snapshot: dump(source.value),\n      timestamp: timestamp()\n    });\n  }\n  const last = ref(_createHistoryRecord());\n  const undoStack = ref([]);\n  const redoStack = ref([]);\n  const _setSource = (record) => {\n    setSource(source, parse(record.snapshot));\n    last.value = record;\n  };\n  const commit = () => {\n    undoStack.value.unshift(last.value);\n    last.value = _createHistoryRecord();\n    if (options.capacity && undoStack.value.length > options.capacity)\n      undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY);\n    if (redoStack.value.length)\n      redoStack.value.splice(0, redoStack.value.length);\n  };\n  const clear = () => {\n    undoStack.value.splice(0, undoStack.value.length);\n    redoStack.value.splice(0, redoStack.value.length);\n  };\n  const undo = () => {\n    const state = undoStack.value.shift();\n    if (state) {\n      redoStack.value.unshift(last.value);\n      _setSource(state);\n    }\n  };\n  const redo = () => {\n    const state = redoStack.value.shift();\n    if (state) {\n      undoStack.value.unshift(last.value);\n      _setSource(state);\n    }\n  };\n  const reset = () => {\n    _setSource(last.value);\n  };\n  const history = computed(() => [last.value, ...undoStack.value]);\n  const canUndo = computed(() => undoStack.value.length > 0);\n  const canRedo = computed(() => redoStack.value.length > 0);\n  return {\n    source,\n    undoStack,\n    redoStack,\n    last,\n    history,\n    canUndo,\n    canRedo,\n    clear,\n    commit,\n    reset,\n    undo,\n    redo\n  };\n}\n\nfunction useRefHistory(source, options = {}) {\n  const {\n    deep = false,\n    flush = \"pre\",\n    eventFilter\n  } = options;\n  const {\n    eventFilter: composedFilter,\n    pause,\n    resume: resumeTracking,\n    isActive: isTracking\n  } = pausableFilter(eventFilter);\n  const {\n    ignoreUpdates,\n    ignorePrevAsyncUpdates,\n    stop\n  } = watchIgnorable(\n    source,\n    commit,\n    { deep, flush, eventFilter: composedFilter }\n  );\n  function setSource(source2, value) {\n    ignorePrevAsyncUpdates();\n    ignoreUpdates(() => {\n      source2.value = value;\n    });\n  }\n  const manualHistory = useManualRefHistory(source, { ...options, clone: options.clone || deep, setSource });\n  const { clear, commit: manualCommit } = manualHistory;\n  function commit() {\n    ignorePrevAsyncUpdates();\n    manualCommit();\n  }\n  function resume(commitNow) {\n    resumeTracking();\n    if (commitNow)\n      commit();\n  }\n  function batch(fn) {\n    let canceled = false;\n    const cancel = () => canceled = true;\n    ignoreUpdates(() => {\n      fn(cancel);\n    });\n    if (!canceled)\n      commit();\n  }\n  function dispose() {\n    stop();\n    clear();\n  }\n  return {\n    ...manualHistory,\n    isTracking,\n    pause,\n    resume,\n    commit,\n    batch,\n    dispose\n  };\n}\n\nfunction useDebouncedRefHistory(source, options = {}) {\n  const filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n  const history = useRefHistory(source, { ...options, eventFilter: filter });\n  return {\n    ...history\n  };\n}\n\nfunction useDeviceMotion(options = {}) {\n  const {\n    window = defaultWindow,\n    eventFilter = bypassFilter\n  } = options;\n  const acceleration = ref({ x: null, y: null, z: null });\n  const rotationRate = ref({ alpha: null, beta: null, gamma: null });\n  const interval = ref(0);\n  const accelerationIncludingGravity = ref({\n    x: null,\n    y: null,\n    z: null\n  });\n  if (window) {\n    const onDeviceMotion = createFilterWrapper(\n      eventFilter,\n      (event) => {\n        acceleration.value = event.acceleration;\n        accelerationIncludingGravity.value = event.accelerationIncludingGravity;\n        rotationRate.value = event.rotationRate;\n        interval.value = event.interval;\n      }\n    );\n    useEventListener(window, \"devicemotion\", onDeviceMotion);\n  }\n  return {\n    acceleration,\n    accelerationIncludingGravity,\n    rotationRate,\n    interval\n  };\n}\n\nfunction useDeviceOrientation(options = {}) {\n  const { window = defaultWindow } = options;\n  const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n  const isAbsolute = ref(false);\n  const alpha = ref(null);\n  const beta = ref(null);\n  const gamma = ref(null);\n  if (window && isSupported.value) {\n    useEventListener(window, \"deviceorientation\", (event) => {\n      isAbsolute.value = event.absolute;\n      alpha.value = event.alpha;\n      beta.value = event.beta;\n      gamma.value = event.gamma;\n    });\n  }\n  return {\n    isSupported,\n    isAbsolute,\n    alpha,\n    beta,\n    gamma\n  };\n}\n\nfunction useDevicePixelRatio(options = {}) {\n  const {\n    window = defaultWindow\n  } = options;\n  const pixelRatio = ref(1);\n  if (window) {\n    let observe2 = function() {\n      pixelRatio.value = window.devicePixelRatio;\n      cleanup2();\n      media = window.matchMedia(`(resolution: ${pixelRatio.value}dppx)`);\n      media.addEventListener(\"change\", observe2, { once: true });\n    }, cleanup2 = function() {\n      media == null ? void 0 : media.removeEventListener(\"change\", observe2);\n    };\n    let media;\n    observe2();\n    tryOnScopeDispose(cleanup2);\n  }\n  return { pixelRatio };\n}\n\nfunction useDevicesList(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    requestPermissions = false,\n    constraints = { audio: true, video: true },\n    onUpdated\n  } = options;\n  const devices = ref([]);\n  const videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n  const audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n  const audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n  const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n  const permissionGranted = ref(false);\n  let stream;\n  async function update() {\n    if (!isSupported.value)\n      return;\n    devices.value = await navigator.mediaDevices.enumerateDevices();\n    onUpdated == null ? void 0 : onUpdated(devices.value);\n    if (stream) {\n      stream.getTracks().forEach((t) => t.stop());\n      stream = null;\n    }\n  }\n  async function ensurePermissions() {\n    if (!isSupported.value)\n      return false;\n    if (permissionGranted.value)\n      return true;\n    const { state, query } = usePermission(\"camera\", { controls: true });\n    await query();\n    if (state.value !== \"granted\") {\n      stream = await navigator.mediaDevices.getUserMedia(constraints);\n      update();\n      permissionGranted.value = true;\n    } else {\n      permissionGranted.value = true;\n    }\n    return permissionGranted.value;\n  }\n  if (isSupported.value) {\n    if (requestPermissions)\n      ensurePermissions();\n    useEventListener(navigator.mediaDevices, \"devicechange\", update);\n    update();\n  }\n  return {\n    devices,\n    ensurePermissions,\n    permissionGranted,\n    videoInputs,\n    audioInputs,\n    audioOutputs,\n    isSupported\n  };\n}\n\nfunction useDisplayMedia(options = {}) {\n  var _a;\n  const enabled = ref((_a = options.enabled) != null ? _a : false);\n  const video = options.video;\n  const audio = options.audio;\n  const { navigator = defaultNavigator } = options;\n  const isSupported = useSupported(() => {\n    var _a2;\n    return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia;\n  });\n  const constraint = { audio, video };\n  const stream = shallowRef();\n  async function _start() {\n    if (!isSupported.value || stream.value)\n      return;\n    stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n    return stream.value;\n  }\n  async function _stop() {\n    var _a2;\n    (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n    stream.value = void 0;\n  }\n  function stop() {\n    _stop();\n    enabled.value = false;\n  }\n  async function start() {\n    await _start();\n    if (stream.value)\n      enabled.value = true;\n    return stream.value;\n  }\n  watch(\n    enabled,\n    (v) => {\n      if (v)\n        _start();\n      else\n        _stop();\n    },\n    { immediate: true }\n  );\n  return {\n    isSupported,\n    stream,\n    start,\n    stop,\n    enabled\n  };\n}\n\nfunction useDocumentVisibility(options = {}) {\n  const { document = defaultDocument } = options;\n  if (!document)\n    return ref(\"visible\");\n  const visibility = ref(document.visibilityState);\n  useEventListener(document, \"visibilitychange\", () => {\n    visibility.value = document.visibilityState;\n  });\n  return visibility;\n}\n\nfunction useDraggable(target, options = {}) {\n  var _a, _b;\n  const {\n    pointerTypes,\n    preventDefault,\n    stopPropagation,\n    exact,\n    onMove,\n    onEnd,\n    onStart,\n    initialValue,\n    axis = \"both\",\n    draggingElement = defaultWindow,\n    containerElement,\n    handle: draggingHandle = target\n  } = options;\n  const position = ref(\n    (_a = toValue(initialValue)) != null ? _a : { x: 0, y: 0 }\n  );\n  const pressedDelta = ref();\n  const filterEvent = (e) => {\n    if (pointerTypes)\n      return pointerTypes.includes(e.pointerType);\n    return true;\n  };\n  const handleEvent = (e) => {\n    if (toValue(preventDefault))\n      e.preventDefault();\n    if (toValue(stopPropagation))\n      e.stopPropagation();\n  };\n  const start = (e) => {\n    var _a2;\n    if (!filterEvent(e))\n      return;\n    if (toValue(exact) && e.target !== toValue(target))\n      return;\n    const container = toValue(containerElement);\n    const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n    const targetRect = toValue(target).getBoundingClientRect();\n    const pos = {\n      x: e.clientX - (container ? targetRect.left - containerRect.left : targetRect.left),\n      y: e.clientY - (container ? targetRect.top - containerRect.top : targetRect.top)\n    };\n    if ((onStart == null ? void 0 : onStart(pos, e)) === false)\n      return;\n    pressedDelta.value = pos;\n    handleEvent(e);\n  };\n  const move = (e) => {\n    var _a2;\n    if (!filterEvent(e))\n      return;\n    if (!pressedDelta.value)\n      return;\n    const container = toValue(containerElement);\n    const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n    const targetRect = toValue(target).getBoundingClientRect();\n    let { x, y } = position.value;\n    if (axis === \"x\" || axis === \"both\") {\n      x = e.clientX - pressedDelta.value.x;\n      if (container)\n        x = Math.min(Math.max(0, x), containerRect.width - targetRect.width);\n    }\n    if (axis === \"y\" || axis === \"both\") {\n      y = e.clientY - pressedDelta.value.y;\n      if (container)\n        y = Math.min(Math.max(0, y), containerRect.height - targetRect.height);\n    }\n    position.value = {\n      x,\n      y\n    };\n    onMove == null ? void 0 : onMove(position.value, e);\n    handleEvent(e);\n  };\n  const end = (e) => {\n    if (!filterEvent(e))\n      return;\n    if (!pressedDelta.value)\n      return;\n    pressedDelta.value = void 0;\n    onEnd == null ? void 0 : onEnd(position.value, e);\n    handleEvent(e);\n  };\n  if (isClient) {\n    const config = { capture: (_b = options.capture) != null ? _b : true };\n    useEventListener(draggingHandle, \"pointerdown\", start, config);\n    useEventListener(draggingElement, \"pointermove\", move, config);\n    useEventListener(draggingElement, \"pointerup\", end, config);\n  }\n  return {\n    ...toRefs(position),\n    position,\n    isDragging: computed(() => !!pressedDelta.value),\n    style: computed(\n      () => `left:${position.value.x}px;top:${position.value.y}px;`\n    )\n  };\n}\n\nfunction useDropZone(target, options = {}) {\n  const isOverDropZone = ref(false);\n  const files = shallowRef(null);\n  let counter = 0;\n  let isDataTypeIncluded = true;\n  if (isClient) {\n    const _options = typeof options === \"function\" ? { onDrop: options } : options;\n    const getFiles = (event) => {\n      var _a, _b;\n      const list = Array.from((_b = (_a = event.dataTransfer) == null ? void 0 : _a.files) != null ? _b : []);\n      return files.value = list.length === 0 ? null : list;\n    };\n    useEventListener$1(target, \"dragenter\", (event) => {\n      var _a;\n      if (_options.dataTypes && event.dataTransfer) {\n        const dataTypes = unref(_options.dataTypes);\n        isDataTypeIncluded = typeof dataTypes === \"function\" ? dataTypes(event.dataTransfer.types) : dataTypes ? dataTypes.some((item) => event.dataTransfer.types.includes(item)) : true;\n        if (!isDataTypeIncluded)\n          return;\n      }\n      event.preventDefault();\n      counter += 1;\n      isOverDropZone.value = true;\n      (_a = _options.onEnter) == null ? void 0 : _a.call(_options, getFiles(event), event);\n    });\n    useEventListener$1(target, \"dragover\", (event) => {\n      var _a;\n      if (!isDataTypeIncluded)\n        return;\n      event.preventDefault();\n      (_a = _options.onOver) == null ? void 0 : _a.call(_options, getFiles(event), event);\n    });\n    useEventListener$1(target, \"dragleave\", (event) => {\n      var _a;\n      if (!isDataTypeIncluded)\n        return;\n      event.preventDefault();\n      counter -= 1;\n      if (counter === 0)\n        isOverDropZone.value = false;\n      (_a = _options.onLeave) == null ? void 0 : _a.call(_options, getFiles(event), event);\n    });\n    useEventListener$1(target, \"drop\", (event) => {\n      var _a;\n      event.preventDefault();\n      counter = 0;\n      isOverDropZone.value = false;\n      (_a = _options.onDrop) == null ? void 0 : _a.call(_options, getFiles(event), event);\n    });\n  }\n  return {\n    files,\n    isOverDropZone\n  };\n}\n\nfunction useResizeObserver(target, callback, options = {}) {\n  const { window = defaultWindow, ...observerOptions } = options;\n  let observer;\n  const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n  const cleanup = () => {\n    if (observer) {\n      observer.disconnect();\n      observer = void 0;\n    }\n  };\n  const targets = computed(() => Array.isArray(target) ? target.map((el) => unrefElement(el)) : [unrefElement(target)]);\n  const stopWatch = watch(\n    targets,\n    (els) => {\n      cleanup();\n      if (isSupported.value && window) {\n        observer = new ResizeObserver(callback);\n        for (const _el of els)\n          _el && observer.observe(_el, observerOptions);\n      }\n    },\n    { immediate: true, flush: \"post\", deep: true }\n  );\n  const stop = () => {\n    cleanup();\n    stopWatch();\n  };\n  tryOnScopeDispose(stop);\n  return {\n    isSupported,\n    stop\n  };\n}\n\nfunction useElementBounding(target, options = {}) {\n  const {\n    reset = true,\n    windowResize = true,\n    windowScroll = true,\n    immediate = true\n  } = options;\n  const height = ref(0);\n  const bottom = ref(0);\n  const left = ref(0);\n  const right = ref(0);\n  const top = ref(0);\n  const width = ref(0);\n  const x = ref(0);\n  const y = ref(0);\n  function update() {\n    const el = unrefElement(target);\n    if (!el) {\n      if (reset) {\n        height.value = 0;\n        bottom.value = 0;\n        left.value = 0;\n        right.value = 0;\n        top.value = 0;\n        width.value = 0;\n        x.value = 0;\n        y.value = 0;\n      }\n      return;\n    }\n    const rect = el.getBoundingClientRect();\n    height.value = rect.height;\n    bottom.value = rect.bottom;\n    left.value = rect.left;\n    right.value = rect.right;\n    top.value = rect.top;\n    width.value = rect.width;\n    x.value = rect.x;\n    y.value = rect.y;\n  }\n  useResizeObserver(target, update);\n  watch(() => unrefElement(target), (ele) => !ele && update());\n  if (windowScroll)\n    useEventListener(\"scroll\", update, { capture: true, passive: true });\n  if (windowResize)\n    useEventListener(\"resize\", update, { passive: true });\n  tryOnMounted(() => {\n    if (immediate)\n      update();\n  });\n  return {\n    height,\n    bottom,\n    left,\n    right,\n    top,\n    width,\n    x,\n    y,\n    update\n  };\n}\n\nfunction useElementByPoint(options) {\n  const {\n    x,\n    y,\n    document = defaultDocument,\n    multiple,\n    interval = \"requestAnimationFrame\",\n    immediate = true\n  } = options;\n  const isSupported = useSupported(() => {\n    if (toValue(multiple))\n      return document && \"elementsFromPoint\" in document;\n    return document && \"elementFromPoint\" in document;\n  });\n  const element = ref(null);\n  const cb = () => {\n    var _a, _b;\n    element.value = toValue(multiple) ? (_a = document == null ? void 0 : document.elementsFromPoint(toValue(x), toValue(y))) != null ? _a : [] : (_b = document == null ? void 0 : document.elementFromPoint(toValue(x), toValue(y))) != null ? _b : null;\n  };\n  const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n  return {\n    isSupported,\n    element,\n    ...controls\n  };\n}\n\nfunction useElementHover(el, options = {}) {\n  const {\n    delayEnter = 0,\n    delayLeave = 0,\n    window = defaultWindow\n  } = options;\n  const isHovered = ref(false);\n  let timer;\n  const toggle = (entering) => {\n    const delay = entering ? delayEnter : delayLeave;\n    if (timer) {\n      clearTimeout(timer);\n      timer = void 0;\n    }\n    if (delay)\n      timer = setTimeout(() => isHovered.value = entering, delay);\n    else\n      isHovered.value = entering;\n  };\n  if (!window)\n    return isHovered;\n  useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n  useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n  return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n  const { window = defaultWindow, box = \"content-box\" } = options;\n  const isSVG = computed(() => {\n    var _a, _b;\n    return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n  });\n  const width = ref(initialSize.width);\n  const height = ref(initialSize.height);\n  const { stop: stop1 } = useResizeObserver(\n    target,\n    ([entry]) => {\n      const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n      if (window && isSVG.value) {\n        const $elem = unrefElement(target);\n        if ($elem) {\n          const styles = window.getComputedStyle($elem);\n          width.value = Number.parseFloat(styles.width);\n          height.value = Number.parseFloat(styles.height);\n        }\n      } else {\n        if (boxSize) {\n          const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n          width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n          height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n        } else {\n          width.value = entry.contentRect.width;\n          height.value = entry.contentRect.height;\n        }\n      }\n    },\n    options\n  );\n  tryOnMounted(() => {\n    const ele = unrefElement(target);\n    if (ele) {\n      width.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n      height.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n    }\n  });\n  const stop2 = watch(\n    () => unrefElement(target),\n    (ele) => {\n      width.value = ele ? initialSize.width : 0;\n      height.value = ele ? initialSize.height : 0;\n    }\n  );\n  function stop() {\n    stop1();\n    stop2();\n  }\n  return {\n    width,\n    height,\n    stop\n  };\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n  const {\n    root,\n    rootMargin = \"0px\",\n    threshold = 0.1,\n    window = defaultWindow,\n    immediate = true\n  } = options;\n  const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n  const targets = computed(() => {\n    const _target = toValue(target);\n    return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish);\n  });\n  let cleanup = noop;\n  const isActive = ref(immediate);\n  const stopWatch = isSupported.value ? watch(\n    () => [targets.value, unrefElement(root), isActive.value],\n    ([targets2, root2]) => {\n      cleanup();\n      if (!isActive.value)\n        return;\n      if (!targets2.length)\n        return;\n      const observer = new IntersectionObserver(\n        callback,\n        {\n          root: unrefElement(root2),\n          rootMargin,\n          threshold\n        }\n      );\n      targets2.forEach((el) => el && observer.observe(el));\n      cleanup = () => {\n        observer.disconnect();\n        cleanup = noop;\n      };\n    },\n    { immediate, flush: \"post\" }\n  ) : noop;\n  const stop = () => {\n    cleanup();\n    stopWatch();\n    isActive.value = false;\n  };\n  tryOnScopeDispose(stop);\n  return {\n    isSupported,\n    isActive,\n    pause() {\n      cleanup();\n      isActive.value = false;\n    },\n    resume() {\n      isActive.value = true;\n    },\n    stop\n  };\n}\n\nfunction useElementVisibility(element, options = {}) {\n  const { window = defaultWindow, scrollTarget } = options;\n  const elementIsVisible = ref(false);\n  useIntersectionObserver(\n    element,\n    ([{ isIntersecting }]) => {\n      elementIsVisible.value = isIntersecting;\n    },\n    {\n      root: scrollTarget,\n      window,\n      threshold: 0\n    }\n  );\n  return elementIsVisible;\n}\n\nconst events = /* @__PURE__ */ new Map();\n\nfunction useEventBus(key) {\n  const scope = getCurrentScope();\n  function on(listener) {\n    var _a;\n    const listeners = events.get(key) || /* @__PURE__ */ new Set();\n    listeners.add(listener);\n    events.set(key, listeners);\n    const _off = () => off(listener);\n    (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off);\n    return _off;\n  }\n  function once(listener) {\n    function _listener(...args) {\n      off(_listener);\n      listener(...args);\n    }\n    return on(_listener);\n  }\n  function off(listener) {\n    const listeners = events.get(key);\n    if (!listeners)\n      return;\n    listeners.delete(listener);\n    if (!listeners.size)\n      reset();\n  }\n  function reset() {\n    events.delete(key);\n  }\n  function emit(event, payload) {\n    var _a;\n    (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload));\n  }\n  return { on, once, off, emit, reset };\n}\n\nfunction useEventSource(url, events = [], options = {}) {\n  const event = ref(null);\n  const data = ref(null);\n  const status = ref(\"CONNECTING\");\n  const eventSource = ref(null);\n  const error = shallowRef(null);\n  const {\n    withCredentials = false\n  } = options;\n  const close = () => {\n    if (eventSource.value) {\n      eventSource.value.close();\n      eventSource.value = null;\n      status.value = \"CLOSED\";\n    }\n  };\n  const es = new EventSource(url, { withCredentials });\n  eventSource.value = es;\n  es.onopen = () => {\n    status.value = \"OPEN\";\n    error.value = null;\n  };\n  es.onerror = (e) => {\n    status.value = \"CLOSED\";\n    error.value = e;\n  };\n  es.onmessage = (e) => {\n    event.value = null;\n    data.value = e.data;\n  };\n  for (const event_name of events) {\n    useEventListener(es, event_name, (e) => {\n      event.value = event_name;\n      data.value = e.data || null;\n    });\n  }\n  tryOnScopeDispose(() => {\n    close();\n  });\n  return {\n    eventSource,\n    event,\n    data,\n    status,\n    error,\n    close\n  };\n}\n\nfunction useEyeDropper(options = {}) {\n  const { initialValue = \"\" } = options;\n  const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n  const sRGBHex = ref(initialValue);\n  async function open(openOptions) {\n    if (!isSupported.value)\n      return;\n    const eyeDropper = new window.EyeDropper();\n    const result = await eyeDropper.open(openOptions);\n    sRGBHex.value = result.sRGBHex;\n    return result;\n  }\n  return { isSupported, sRGBHex, open };\n}\n\nfunction useFavicon(newIcon = null, options = {}) {\n  const {\n    baseUrl = \"\",\n    rel = \"icon\",\n    document = defaultDocument\n  } = options;\n  const favicon = toRef(newIcon);\n  const applyIcon = (icon) => {\n    const elements = document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`);\n    if (!elements || elements.length === 0) {\n      const link = document == null ? void 0 : document.createElement(\"link\");\n      if (link) {\n        link.rel = rel;\n        link.href = `${baseUrl}${icon}`;\n        link.type = `image/${icon.split(\".\").pop()}`;\n        document == null ? void 0 : document.head.append(link);\n      }\n      return;\n    }\n    elements == null ? void 0 : elements.forEach((el) => el.href = `${baseUrl}${icon}`);\n  };\n  watch(\n    favicon,\n    (i, o) => {\n      if (typeof i === \"string\" && i !== o)\n        applyIcon(i);\n    },\n    { immediate: true }\n  );\n  return favicon;\n}\n\nconst payloadMapping = {\n  json: \"application/json\",\n  text: \"text/plain\"\n};\nfunction isFetchOptions(obj) {\n  return obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\", \"updateDataOnError\");\n}\nfunction isAbsoluteURL(url) {\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\nfunction headersToObject(headers) {\n  if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n    return Object.fromEntries([...headers.entries()]);\n  return headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n  if (combination === \"overwrite\") {\n    return async (ctx) => {\n      const callback = callbacks[callbacks.length - 1];\n      if (callback)\n        return { ...ctx, ...await callback(ctx) };\n      return ctx;\n    };\n  } else {\n    return async (ctx) => {\n      for (const callback of callbacks) {\n        if (callback)\n          ctx = { ...ctx, ...await callback(ctx) };\n      }\n      return ctx;\n    };\n  }\n}\nfunction createFetch(config = {}) {\n  const _combination = config.combination || \"chain\";\n  const _options = config.options || {};\n  const _fetchOptions = config.fetchOptions || {};\n  function useFactoryFetch(url, ...args) {\n    const computedUrl = computed(() => {\n      const baseUrl = toValue(config.baseUrl);\n      const targetUrl = toValue(url);\n      return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n    });\n    let options = _options;\n    let fetchOptions = _fetchOptions;\n    if (args.length > 0) {\n      if (isFetchOptions(args[0])) {\n        options = {\n          ...options,\n          ...args[0],\n          beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n          afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n          onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n        };\n      } else {\n        fetchOptions = {\n          ...fetchOptions,\n          ...args[0],\n          headers: {\n            ...headersToObject(fetchOptions.headers) || {},\n            ...headersToObject(args[0].headers) || {}\n          }\n        };\n      }\n    }\n    if (args.length > 1 && isFetchOptions(args[1])) {\n      options = {\n        ...options,\n        ...args[1],\n        beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n        afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n        onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n      };\n    }\n    return useFetch(computedUrl, fetchOptions, options);\n  }\n  return useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n  var _a;\n  const supportsAbort = typeof AbortController === \"function\";\n  let fetchOptions = {};\n  let options = {\n    immediate: true,\n    refetch: false,\n    timeout: 0,\n    updateDataOnError: false\n  };\n  const config = {\n    method: \"GET\",\n    type: \"text\",\n    payload: void 0\n  };\n  if (args.length > 0) {\n    if (isFetchOptions(args[0]))\n      options = { ...options, ...args[0] };\n    else\n      fetchOptions = args[0];\n  }\n  if (args.length > 1) {\n    if (isFetchOptions(args[1]))\n      options = { ...options, ...args[1] };\n  }\n  const {\n    fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,\n    initialData,\n    timeout\n  } = options;\n  const responseEvent = createEventHook();\n  const errorEvent = createEventHook();\n  const finallyEvent = createEventHook();\n  const isFinished = ref(false);\n  const isFetching = ref(false);\n  const aborted = ref(false);\n  const statusCode = ref(null);\n  const response = shallowRef(null);\n  const error = shallowRef(null);\n  const data = shallowRef(initialData || null);\n  const canAbort = computed(() => supportsAbort && isFetching.value);\n  let controller;\n  let timer;\n  const abort = () => {\n    if (supportsAbort) {\n      controller == null ? void 0 : controller.abort();\n      controller = new AbortController();\n      controller.signal.onabort = () => aborted.value = true;\n      fetchOptions = {\n        ...fetchOptions,\n        signal: controller.signal\n      };\n    }\n  };\n  const loading = (isLoading) => {\n    isFetching.value = isLoading;\n    isFinished.value = !isLoading;\n  };\n  if (timeout)\n    timer = useTimeoutFn(abort, timeout, { immediate: false });\n  let executeCounter = 0;\n  const execute = async (throwOnFailed = false) => {\n    var _a2;\n    abort();\n    loading(true);\n    error.value = null;\n    statusCode.value = null;\n    aborted.value = false;\n    executeCounter += 1;\n    const currentExecuteCounter = executeCounter;\n    const defaultFetchOptions = {\n      method: config.method,\n      headers: {}\n    };\n    if (config.payload) {\n      const headers = headersToObject(defaultFetchOptions.headers);\n      const payload = toValue(config.payload);\n      if (!config.payloadType && payload && Object.getPrototypeOf(payload) === Object.prototype && !(payload instanceof FormData))\n        config.payloadType = \"json\";\n      if (config.payloadType)\n        headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n      defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n    }\n    let isCanceled = false;\n    const context = {\n      url: toValue(url),\n      options: {\n        ...defaultFetchOptions,\n        ...fetchOptions\n      },\n      cancel: () => {\n        isCanceled = true;\n      }\n    };\n    if (options.beforeFetch)\n      Object.assign(context, await options.beforeFetch(context));\n    if (isCanceled || !fetch) {\n      loading(false);\n      return Promise.resolve(null);\n    }\n    let responseData = null;\n    if (timer)\n      timer.start();\n    return new Promise((resolve, reject) => {\n      var _a3;\n      fetch(\n        context.url,\n        {\n          ...defaultFetchOptions,\n          ...context.options,\n          headers: {\n            ...headersToObject(defaultFetchOptions.headers),\n            ...headersToObject((_a3 = context.options) == null ? void 0 : _a3.headers)\n          }\n        }\n      ).then(async (fetchResponse) => {\n        response.value = fetchResponse;\n        statusCode.value = fetchResponse.status;\n        responseData = await fetchResponse[config.type]();\n        if (!fetchResponse.ok) {\n          data.value = initialData || null;\n          throw new Error(fetchResponse.statusText);\n        }\n        if (options.afterFetch) {\n          ({ data: responseData } = await options.afterFetch({\n            data: responseData,\n            response: fetchResponse\n          }));\n        }\n        data.value = responseData;\n        responseEvent.trigger(fetchResponse);\n        return resolve(fetchResponse);\n      }).catch(async (fetchError) => {\n        let errorData = fetchError.message || fetchError.name;\n        if (options.onFetchError) {\n          ({ error: errorData, data: responseData } = await options.onFetchError({\n            data: responseData,\n            error: fetchError,\n            response: response.value\n          }));\n        }\n        error.value = errorData;\n        if (options.updateDataOnError)\n          data.value = responseData;\n        errorEvent.trigger(fetchError);\n        if (throwOnFailed)\n          return reject(fetchError);\n        return resolve(null);\n      }).finally(() => {\n        if (currentExecuteCounter === executeCounter)\n          loading(false);\n        if (timer)\n          timer.stop();\n        finallyEvent.trigger(null);\n      });\n    });\n  };\n  const refetch = toRef(options.refetch);\n  watch(\n    [\n      refetch,\n      toRef(url)\n    ],\n    ([refetch2]) => refetch2 && execute(),\n    { deep: true }\n  );\n  const shell = {\n    isFinished,\n    statusCode,\n    response,\n    error,\n    data,\n    isFetching,\n    canAbort,\n    aborted,\n    abort,\n    execute,\n    onFetchResponse: responseEvent.on,\n    onFetchError: errorEvent.on,\n    onFetchFinally: finallyEvent.on,\n    // method\n    get: setMethod(\"GET\"),\n    put: setMethod(\"PUT\"),\n    post: setMethod(\"POST\"),\n    delete: setMethod(\"DELETE\"),\n    patch: setMethod(\"PATCH\"),\n    head: setMethod(\"HEAD\"),\n    options: setMethod(\"OPTIONS\"),\n    // type\n    json: setType(\"json\"),\n    text: setType(\"text\"),\n    blob: setType(\"blob\"),\n    arrayBuffer: setType(\"arrayBuffer\"),\n    formData: setType(\"formData\")\n  };\n  function setMethod(method) {\n    return (payload, payloadType) => {\n      if (!isFetching.value) {\n        config.method = method;\n        config.payload = payload;\n        config.payloadType = payloadType;\n        if (isRef(config.payload)) {\n          watch(\n            [\n              refetch,\n              toRef(config.payload)\n            ],\n            ([refetch2]) => refetch2 && execute(),\n            { deep: true }\n          );\n        }\n        return {\n          ...shell,\n          then(onFulfilled, onRejected) {\n            return waitUntilFinished().then(onFulfilled, onRejected);\n          }\n        };\n      }\n      return void 0;\n    };\n  }\n  function waitUntilFinished() {\n    return new Promise((resolve, reject) => {\n      until(isFinished).toBe(true).then(() => resolve(shell)).catch((error2) => reject(error2));\n    });\n  }\n  function setType(type) {\n    return () => {\n      if (!isFetching.value) {\n        config.type = type;\n        return {\n          ...shell,\n          then(onFulfilled, onRejected) {\n            return waitUntilFinished().then(onFulfilled, onRejected);\n          }\n        };\n      }\n      return void 0;\n    };\n  }\n  if (options.immediate)\n    Promise.resolve().then(() => execute());\n  return {\n    ...shell,\n    then(onFulfilled, onRejected) {\n      return waitUntilFinished().then(onFulfilled, onRejected);\n    }\n  };\n}\nfunction joinPaths(start, end) {\n  if (!start.endsWith(\"/\") && !end.startsWith(\"/\"))\n    return `${start}/${end}`;\n  return `${start}${end}`;\n}\n\nconst DEFAULT_OPTIONS = {\n  multiple: true,\n  accept: \"*\",\n  reset: false,\n  directory: false\n};\nfunction useFileDialog(options = {}) {\n  const {\n    document = defaultDocument\n  } = options;\n  const files = ref(null);\n  const { on: onChange, trigger } = createEventHook();\n  let input;\n  if (document) {\n    input = document.createElement(\"input\");\n    input.type = \"file\";\n    input.onchange = (event) => {\n      const result = event.target;\n      files.value = result.files;\n      trigger(files.value);\n    };\n  }\n  const reset = () => {\n    files.value = null;\n    if (input)\n      input.value = \"\";\n  };\n  const open = (localOptions) => {\n    if (!input)\n      return;\n    const _options = {\n      ...DEFAULT_OPTIONS,\n      ...options,\n      ...localOptions\n    };\n    input.multiple = _options.multiple;\n    input.accept = _options.accept;\n    input.webkitdirectory = _options.directory;\n    if (hasOwn(_options, \"capture\"))\n      input.capture = _options.capture;\n    if (_options.reset)\n      reset();\n    input.click();\n  };\n  return {\n    files: readonly(files),\n    open,\n    reset,\n    onChange\n  };\n}\n\nfunction useFileSystemAccess(options = {}) {\n  const {\n    window: _window = defaultWindow,\n    dataType = \"Text\"\n  } = options;\n  const window = _window;\n  const isSupported = useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n  const fileHandle = ref();\n  const data = ref();\n  const file = ref();\n  const fileName = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : \"\";\n  });\n  const fileMIME = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : \"\";\n  });\n  const fileSize = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0;\n  });\n  const fileLastModified = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0;\n  });\n  async function open(_options = {}) {\n    if (!isSupported.value)\n      return;\n    const [handle] = await window.showOpenFilePicker({ ...toValue(options), ..._options });\n    fileHandle.value = handle;\n    await updateFile();\n    await updateData();\n  }\n  async function create(_options = {}) {\n    if (!isSupported.value)\n      return;\n    fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n    data.value = void 0;\n    await updateFile();\n    await updateData();\n  }\n  async function save(_options = {}) {\n    if (!isSupported.value)\n      return;\n    if (!fileHandle.value)\n      return saveAs(_options);\n    if (data.value) {\n      const writableStream = await fileHandle.value.createWritable();\n      await writableStream.write(data.value);\n      await writableStream.close();\n    }\n    await updateFile();\n  }\n  async function saveAs(_options = {}) {\n    if (!isSupported.value)\n      return;\n    fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n    if (data.value) {\n      const writableStream = await fileHandle.value.createWritable();\n      await writableStream.write(data.value);\n      await writableStream.close();\n    }\n    await updateFile();\n  }\n  async function updateFile() {\n    var _a;\n    file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile());\n  }\n  async function updateData() {\n    var _a, _b;\n    const type = toValue(dataType);\n    if (type === \"Text\")\n      data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n    else if (type === \"ArrayBuffer\")\n      data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n    else if (type === \"Blob\")\n      data.value = file.value;\n  }\n  watch(() => toValue(dataType), updateData);\n  return {\n    isSupported,\n    data,\n    file,\n    fileName,\n    fileMIME,\n    fileSize,\n    fileLastModified,\n    open,\n    create,\n    save,\n    saveAs,\n    updateData\n  };\n}\n\nfunction useFocus(target, options = {}) {\n  const { initialValue = false, focusVisible = false } = options;\n  const innerFocused = ref(false);\n  const targetElement = computed(() => unrefElement(target));\n  useEventListener(targetElement, \"focus\", (event) => {\n    var _a, _b;\n    if (!focusVisible || ((_b = (_a = event.target).matches) == null ? void 0 : _b.call(_a, \":focus-visible\")))\n      innerFocused.value = true;\n  });\n  useEventListener(targetElement, \"blur\", () => innerFocused.value = false);\n  const focused = computed({\n    get: () => innerFocused.value,\n    set(value) {\n      var _a, _b;\n      if (!value && innerFocused.value)\n        (_a = targetElement.value) == null ? void 0 : _a.blur();\n      else if (value && !innerFocused.value)\n        (_b = targetElement.value) == null ? void 0 : _b.focus();\n    }\n  });\n  watch(\n    targetElement,\n    () => {\n      focused.value = initialValue;\n    },\n    { immediate: true, flush: \"post\" }\n  );\n  return { focused };\n}\n\nfunction useFocusWithin(target, options = {}) {\n  const activeElement = useActiveElement(options);\n  const targetElement = computed(() => unrefElement(target));\n  const focused = computed(() => targetElement.value && activeElement.value ? targetElement.value.contains(activeElement.value) : false);\n  return { focused };\n}\n\nfunction useFps(options) {\n  var _a;\n  const fps = ref(0);\n  if (typeof performance === \"undefined\")\n    return fps;\n  const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;\n  let last = performance.now();\n  let ticks = 0;\n  useRafFn(() => {\n    ticks += 1;\n    if (ticks >= every) {\n      const now = performance.now();\n      const diff = now - last;\n      fps.value = Math.round(1e3 / (diff / ticks));\n      last = now;\n      ticks = 0;\n    }\n  });\n  return fps;\n}\n\nconst eventHandlers = [\n  \"fullscreenchange\",\n  \"webkitfullscreenchange\",\n  \"webkitendfullscreen\",\n  \"mozfullscreenchange\",\n  \"MSFullscreenChange\"\n];\nfunction useFullscreen(target, options = {}) {\n  const {\n    document = defaultDocument,\n    autoExit = false\n  } = options;\n  const targetRef = computed(() => {\n    var _a;\n    return (_a = unrefElement(target)) != null ? _a : document == null ? void 0 : document.querySelector(\"html\");\n  });\n  const isFullscreen = ref(false);\n  const requestMethod = computed(() => {\n    return [\n      \"requestFullscreen\",\n      \"webkitRequestFullscreen\",\n      \"webkitEnterFullscreen\",\n      \"webkitEnterFullScreen\",\n      \"webkitRequestFullScreen\",\n      \"mozRequestFullScreen\",\n      \"msRequestFullscreen\"\n    ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n  });\n  const exitMethod = computed(() => {\n    return [\n      \"exitFullscreen\",\n      \"webkitExitFullscreen\",\n      \"webkitExitFullScreen\",\n      \"webkitCancelFullScreen\",\n      \"mozCancelFullScreen\",\n      \"msExitFullscreen\"\n    ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n  });\n  const fullscreenEnabled = computed(() => {\n    return [\n      \"fullScreen\",\n      \"webkitIsFullScreen\",\n      \"webkitDisplayingFullscreen\",\n      \"mozFullScreen\",\n      \"msFullscreenElement\"\n    ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n  });\n  const fullscreenElementMethod = [\n    \"fullscreenElement\",\n    \"webkitFullscreenElement\",\n    \"mozFullScreenElement\",\n    \"msFullscreenElement\"\n  ].find((m) => document && m in document);\n  const isSupported = useSupported(() => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0);\n  const isCurrentElementFullScreen = () => {\n    if (fullscreenElementMethod)\n      return (document == null ? void 0 : document[fullscreenElementMethod]) === targetRef.value;\n    return false;\n  };\n  const isElementFullScreen = () => {\n    if (fullscreenEnabled.value) {\n      if (document && document[fullscreenEnabled.value] != null) {\n        return document[fullscreenEnabled.value];\n      } else {\n        const target2 = targetRef.value;\n        if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) {\n          return Boolean(target2[fullscreenEnabled.value]);\n        }\n      }\n    }\n    return false;\n  };\n  async function exit() {\n    if (!isSupported.value || !isFullscreen.value)\n      return;\n    if (exitMethod.value) {\n      if ((document == null ? void 0 : document[exitMethod.value]) != null) {\n        await document[exitMethod.value]();\n      } else {\n        const target2 = targetRef.value;\n        if ((target2 == null ? void 0 : target2[exitMethod.value]) != null)\n          await target2[exitMethod.value]();\n      }\n    }\n    isFullscreen.value = false;\n  }\n  async function enter() {\n    if (!isSupported.value || isFullscreen.value)\n      return;\n    if (isElementFullScreen())\n      await exit();\n    const target2 = targetRef.value;\n    if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) {\n      await target2[requestMethod.value]();\n      isFullscreen.value = true;\n    }\n  }\n  async function toggle() {\n    await (isFullscreen.value ? exit() : enter());\n  }\n  const handlerCallback = () => {\n    const isElementFullScreenValue = isElementFullScreen();\n    if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen())\n      isFullscreen.value = isElementFullScreenValue;\n  };\n  useEventListener(document, eventHandlers, handlerCallback, false);\n  useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, false);\n  if (autoExit)\n    tryOnScopeDispose(exit);\n  return {\n    isSupported,\n    isFullscreen,\n    enter,\n    exit,\n    toggle\n  };\n}\n\nfunction mapGamepadToXbox360Controller(gamepad) {\n  return computed(() => {\n    if (gamepad.value) {\n      return {\n        buttons: {\n          a: gamepad.value.buttons[0],\n          b: gamepad.value.buttons[1],\n          x: gamepad.value.buttons[2],\n          y: gamepad.value.buttons[3]\n        },\n        bumper: {\n          left: gamepad.value.buttons[4],\n          right: gamepad.value.buttons[5]\n        },\n        triggers: {\n          left: gamepad.value.buttons[6],\n          right: gamepad.value.buttons[7]\n        },\n        stick: {\n          left: {\n            horizontal: gamepad.value.axes[0],\n            vertical: gamepad.value.axes[1],\n            button: gamepad.value.buttons[10]\n          },\n          right: {\n            horizontal: gamepad.value.axes[2],\n            vertical: gamepad.value.axes[3],\n            button: gamepad.value.buttons[11]\n          }\n        },\n        dpad: {\n          up: gamepad.value.buttons[12],\n          down: gamepad.value.buttons[13],\n          left: gamepad.value.buttons[14],\n          right: gamepad.value.buttons[15]\n        },\n        back: gamepad.value.buttons[8],\n        start: gamepad.value.buttons[9]\n      };\n    }\n    return null;\n  });\n}\nfunction useGamepad(options = {}) {\n  const {\n    navigator = defaultNavigator\n  } = options;\n  const isSupported = useSupported(() => navigator && \"getGamepads\" in navigator);\n  const gamepads = ref([]);\n  const onConnectedHook = createEventHook();\n  const onDisconnectedHook = createEventHook();\n  const stateFromGamepad = (gamepad) => {\n    const hapticActuators = [];\n    const vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n    if (vibrationActuator)\n      hapticActuators.push(vibrationActuator);\n    if (gamepad.hapticActuators)\n      hapticActuators.push(...gamepad.hapticActuators);\n    return {\n      ...gamepad,\n      id: gamepad.id,\n      hapticActuators,\n      axes: gamepad.axes.map((axes) => axes),\n      buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value }))\n    };\n  };\n  const updateGamepadState = () => {\n    const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n    for (let i = 0; i < _gamepads.length; ++i) {\n      const gamepad = _gamepads[i];\n      if (gamepad) {\n        const index = gamepads.value.findIndex(({ index: index2 }) => index2 === gamepad.index);\n        if (index > -1)\n          gamepads.value[index] = stateFromGamepad(gamepad);\n      }\n    }\n  };\n  const { isActive, pause, resume } = useRafFn(updateGamepadState);\n  const onGamepadConnected = (gamepad) => {\n    if (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n      gamepads.value.push(stateFromGamepad(gamepad));\n      onConnectedHook.trigger(gamepad.index);\n    }\n    resume();\n  };\n  const onGamepadDisconnected = (gamepad) => {\n    gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n    onDisconnectedHook.trigger(gamepad.index);\n  };\n  useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad));\n  useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad));\n  tryOnMounted(() => {\n    const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n    if (_gamepads) {\n      for (let i = 0; i < _gamepads.length; ++i) {\n        const gamepad = _gamepads[i];\n        if (gamepad)\n          onGamepadConnected(gamepad);\n      }\n    }\n  });\n  pause();\n  return {\n    isSupported,\n    onConnected: onConnectedHook.on,\n    onDisconnected: onDisconnectedHook.on,\n    gamepads,\n    pause,\n    resume,\n    isActive\n  };\n}\n\nfunction useGeolocation(options = {}) {\n  const {\n    enableHighAccuracy = true,\n    maximumAge = 3e4,\n    timeout = 27e3,\n    navigator = defaultNavigator,\n    immediate = true\n  } = options;\n  const isSupported = useSupported(() => navigator && \"geolocation\" in navigator);\n  const locatedAt = ref(null);\n  const error = shallowRef(null);\n  const coords = ref({\n    accuracy: 0,\n    latitude: Number.POSITIVE_INFINITY,\n    longitude: Number.POSITIVE_INFINITY,\n    altitude: null,\n    altitudeAccuracy: null,\n    heading: null,\n    speed: null\n  });\n  function updatePosition(position) {\n    locatedAt.value = position.timestamp;\n    coords.value = position.coords;\n    error.value = null;\n  }\n  let watcher;\n  function resume() {\n    if (isSupported.value) {\n      watcher = navigator.geolocation.watchPosition(\n        updatePosition,\n        (err) => error.value = err,\n        {\n          enableHighAccuracy,\n          maximumAge,\n          timeout\n        }\n      );\n    }\n  }\n  if (immediate)\n    resume();\n  function pause() {\n    if (watcher && navigator)\n      navigator.geolocation.clearWatch(watcher);\n  }\n  tryOnScopeDispose(() => {\n    pause();\n  });\n  return {\n    isSupported,\n    coords,\n    locatedAt,\n    error,\n    resume,\n    pause\n  };\n}\n\nconst defaultEvents$1 = [\"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\"];\nconst oneMinute = 6e4;\nfunction useIdle(timeout = oneMinute, options = {}) {\n  const {\n    initialState = false,\n    listenForVisibilityChange = true,\n    events = defaultEvents$1,\n    window = defaultWindow,\n    eventFilter = throttleFilter(50)\n  } = options;\n  const idle = ref(initialState);\n  const lastActive = ref(timestamp());\n  let timer;\n  const reset = () => {\n    idle.value = false;\n    clearTimeout(timer);\n    timer = setTimeout(() => idle.value = true, timeout);\n  };\n  const onEvent = createFilterWrapper(\n    eventFilter,\n    () => {\n      lastActive.value = timestamp();\n      reset();\n    }\n  );\n  if (window) {\n    const document = window.document;\n    for (const event of events)\n      useEventListener(window, event, onEvent, { passive: true });\n    if (listenForVisibilityChange) {\n      useEventListener(document, \"visibilitychange\", () => {\n        if (!document.hidden)\n          onEvent();\n      });\n    }\n    reset();\n  }\n  return {\n    idle,\n    lastActive,\n    reset\n  };\n}\n\nasync function loadImage(options) {\n  return new Promise((resolve, reject) => {\n    const img = new Image();\n    const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options;\n    img.src = src;\n    if (srcset)\n      img.srcset = srcset;\n    if (sizes)\n      img.sizes = sizes;\n    if (clazz)\n      img.className = clazz;\n    if (loading)\n      img.loading = loading;\n    if (crossorigin)\n      img.crossOrigin = crossorigin;\n    if (referrerPolicy)\n      img.referrerPolicy = referrerPolicy;\n    img.onload = () => resolve(img);\n    img.onerror = reject;\n  });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n  const state = useAsyncState(\n    () => loadImage(toValue(options)),\n    void 0,\n    {\n      resetOnExecute: true,\n      ...asyncStateOptions\n    }\n  );\n  watch(\n    () => toValue(options),\n    () => state.execute(asyncStateOptions.delay),\n    { deep: true }\n  );\n  return state;\n}\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n  const {\n    throttle = 0,\n    idle = 200,\n    onStop = noop,\n    onScroll = noop,\n    offset = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    },\n    eventListenerOptions = {\n      capture: false,\n      passive: true\n    },\n    behavior = \"auto\",\n    window = defaultWindow\n  } = options;\n  const internalX = ref(0);\n  const internalY = ref(0);\n  const x = computed({\n    get() {\n      return internalX.value;\n    },\n    set(x2) {\n      scrollTo(x2, void 0);\n    }\n  });\n  const y = computed({\n    get() {\n      return internalY.value;\n    },\n    set(y2) {\n      scrollTo(void 0, y2);\n    }\n  });\n  function scrollTo(_x, _y) {\n    var _a, _b, _c;\n    if (!window)\n      return;\n    const _element = toValue(element);\n    if (!_element)\n      return;\n    (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({\n      top: (_a = toValue(_y)) != null ? _a : y.value,\n      left: (_b = toValue(_x)) != null ? _b : x.value,\n      behavior: toValue(behavior)\n    });\n  }\n  const isScrolling = ref(false);\n  const arrivedState = reactive({\n    left: true,\n    right: false,\n    top: true,\n    bottom: false\n  });\n  const directions = reactive({\n    left: false,\n    right: false,\n    top: false,\n    bottom: false\n  });\n  const onScrollEnd = (e) => {\n    if (!isScrolling.value)\n      return;\n    isScrolling.value = false;\n    directions.left = false;\n    directions.right = false;\n    directions.top = false;\n    directions.bottom = false;\n    onStop(e);\n  };\n  const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n  const setArrivedState = (target) => {\n    var _a;\n    if (!window)\n      return;\n    const el = target.document ? target.document.documentElement : (_a = target.documentElement) != null ? _a : target;\n    const { display, flexDirection } = getComputedStyle(el);\n    const scrollLeft = el.scrollLeft;\n    directions.left = scrollLeft < internalX.value;\n    directions.right = scrollLeft > internalX.value;\n    const left = Math.abs(scrollLeft) <= 0 + (offset.left || 0);\n    const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n    if (display === \"flex\" && flexDirection === \"row-reverse\") {\n      arrivedState.left = right;\n      arrivedState.right = left;\n    } else {\n      arrivedState.left = left;\n      arrivedState.right = right;\n    }\n    internalX.value = scrollLeft;\n    let scrollTop = el.scrollTop;\n    if (target === window.document && !scrollTop)\n      scrollTop = window.document.body.scrollTop;\n    directions.top = scrollTop < internalY.value;\n    directions.bottom = scrollTop > internalY.value;\n    const top = Math.abs(scrollTop) <= 0 + (offset.top || 0);\n    const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n    if (display === \"flex\" && flexDirection === \"column-reverse\") {\n      arrivedState.top = bottom;\n      arrivedState.bottom = top;\n    } else {\n      arrivedState.top = top;\n      arrivedState.bottom = bottom;\n    }\n    internalY.value = scrollTop;\n  };\n  const onScrollHandler = (e) => {\n    var _a;\n    if (!window)\n      return;\n    const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target;\n    setArrivedState(eventTarget);\n    isScrolling.value = true;\n    onScrollEndDebounced(e);\n    onScroll(e);\n  };\n  useEventListener(\n    element,\n    \"scroll\",\n    throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n    eventListenerOptions\n  );\n  tryOnMounted(() => {\n    const _element = toValue(element);\n    if (!_element)\n      return;\n    setArrivedState(_element);\n  });\n  useEventListener(\n    element,\n    \"scrollend\",\n    onScrollEnd,\n    eventListenerOptions\n  );\n  return {\n    x,\n    y,\n    isScrolling,\n    arrivedState,\n    directions,\n    measure() {\n      const _element = toValue(element);\n      if (window && _element)\n        setArrivedState(_element);\n    }\n  };\n}\n\nfunction resolveElement(el) {\n  if (typeof Window !== \"undefined\" && el instanceof Window)\n    return el.document.documentElement;\n  if (typeof Document !== \"undefined\" && el instanceof Document)\n    return el.documentElement;\n  return el;\n}\n\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n  var _a;\n  const {\n    direction = \"bottom\",\n    interval = 100\n  } = options;\n  const state = reactive(useScroll(\n    element,\n    {\n      ...options,\n      offset: {\n        [direction]: (_a = options.distance) != null ? _a : 0,\n        ...options.offset\n      }\n    }\n  ));\n  const promise = ref();\n  const isLoading = computed(() => !!promise.value);\n  const observedElement = computed(() => {\n    return resolveElement(toValue(element));\n  });\n  const isElementVisible = useElementVisibility(observedElement);\n  function checkAndLoad() {\n    state.measure();\n    if (!observedElement.value || !isElementVisible.value)\n      return;\n    const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n    const isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n    if (state.arrivedState[direction] || isNarrower) {\n      if (!promise.value) {\n        promise.value = Promise.all([\n          onLoadMore(state),\n          new Promise((resolve) => setTimeout(resolve, interval))\n        ]).finally(() => {\n          promise.value = null;\n          nextTick(() => checkAndLoad());\n        });\n      }\n    }\n  }\n  watch(\n    () => [state.arrivedState[direction], isElementVisible.value],\n    checkAndLoad,\n    { immediate: true }\n  );\n  return {\n    isLoading\n  };\n}\n\nconst defaultEvents = [\"mousedown\", \"mouseup\", \"keydown\", \"keyup\"];\nfunction useKeyModifier(modifier, options = {}) {\n  const {\n    events = defaultEvents,\n    document = defaultDocument,\n    initial = null\n  } = options;\n  const state = ref(initial);\n  if (document) {\n    events.forEach((listenerEvent) => {\n      useEventListener(document, listenerEvent, (evt) => {\n        if (typeof evt.getModifierState === \"function\")\n          state.value = evt.getModifierState(modifier);\n      });\n    });\n  }\n  return state;\n}\n\nfunction useLocalStorage(key, initialValue, options = {}) {\n  const { window = defaultWindow } = options;\n  return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options);\n}\n\nconst DefaultMagicKeysAliasMap = {\n  ctrl: \"control\",\n  command: \"meta\",\n  cmd: \"meta\",\n  option: \"alt\",\n  up: \"arrowup\",\n  down: \"arrowdown\",\n  left: \"arrowleft\",\n  right: \"arrowright\"\n};\n\nfunction useMagicKeys(options = {}) {\n  const {\n    reactive: useReactive = false,\n    target = defaultWindow,\n    aliasMap = DefaultMagicKeysAliasMap,\n    passive = true,\n    onEventFired = noop\n  } = options;\n  const current = reactive(/* @__PURE__ */ new Set());\n  const obj = {\n    toJSON() {\n      return {};\n    },\n    current\n  };\n  const refs = useReactive ? reactive(obj) : obj;\n  const metaDeps = /* @__PURE__ */ new Set();\n  const usedKeys = /* @__PURE__ */ new Set();\n  function setRefs(key, value) {\n    if (key in refs) {\n      if (useReactive)\n        refs[key] = value;\n      else\n        refs[key].value = value;\n    }\n  }\n  function reset() {\n    current.clear();\n    for (const key of usedKeys)\n      setRefs(key, false);\n  }\n  function updateRefs(e, value) {\n    var _a, _b;\n    const key = (_a = e.key) == null ? void 0 : _a.toLowerCase();\n    const code = (_b = e.code) == null ? void 0 : _b.toLowerCase();\n    const values = [code, key].filter(Boolean);\n    if (key) {\n      if (value)\n        current.add(key);\n      else\n        current.delete(key);\n    }\n    for (const key2 of values) {\n      usedKeys.add(key2);\n      setRefs(key2, value);\n    }\n    if (key === \"meta\" && !value) {\n      metaDeps.forEach((key2) => {\n        current.delete(key2);\n        setRefs(key2, false);\n      });\n      metaDeps.clear();\n    } else if (typeof e.getModifierState === \"function\" && e.getModifierState(\"Meta\") && value) {\n      [...current, ...values].forEach((key2) => metaDeps.add(key2));\n    }\n  }\n  useEventListener(target, \"keydown\", (e) => {\n    updateRefs(e, true);\n    return onEventFired(e);\n  }, { passive });\n  useEventListener(target, \"keyup\", (e) => {\n    updateRefs(e, false);\n    return onEventFired(e);\n  }, { passive });\n  useEventListener(\"blur\", reset, { passive: true });\n  useEventListener(\"focus\", reset, { passive: true });\n  const proxy = new Proxy(\n    refs,\n    {\n      get(target2, prop, rec) {\n        if (typeof prop !== \"string\")\n          return Reflect.get(target2, prop, rec);\n        prop = prop.toLowerCase();\n        if (prop in aliasMap)\n          prop = aliasMap[prop];\n        if (!(prop in refs)) {\n          if (/[+_-]/.test(prop)) {\n            const keys = prop.split(/[+_-]/g).map((i) => i.trim());\n            refs[prop] = computed(() => keys.every((key) => toValue(proxy[key])));\n          } else {\n            refs[prop] = ref(false);\n          }\n        }\n        const r = Reflect.get(target2, prop, rec);\n        return useReactive ? toValue(r) : r;\n      }\n    }\n  );\n  return proxy;\n}\n\nfunction usingElRef(source, cb) {\n  if (toValue(source))\n    cb(toValue(source));\n}\nfunction timeRangeToArray(timeRanges) {\n  let ranges = [];\n  for (let i = 0; i < timeRanges.length; ++i)\n    ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n  return ranges;\n}\nfunction tracksToArray(tracks) {\n  return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));\n}\nconst defaultOptions = {\n  src: \"\",\n  tracks: []\n};\nfunction useMediaControls(target, options = {}) {\n  options = {\n    ...defaultOptions,\n    ...options\n  };\n  const {\n    document = defaultDocument\n  } = options;\n  const currentTime = ref(0);\n  const duration = ref(0);\n  const seeking = ref(false);\n  const volume = ref(1);\n  const waiting = ref(false);\n  const ended = ref(false);\n  const playing = ref(false);\n  const rate = ref(1);\n  const stalled = ref(false);\n  const buffered = ref([]);\n  const tracks = ref([]);\n  const selectedTrack = ref(-1);\n  const isPictureInPicture = ref(false);\n  const muted = ref(false);\n  const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n  const sourceErrorEvent = createEventHook();\n  const disableTrack = (track) => {\n    usingElRef(target, (el) => {\n      if (track) {\n        const id = typeof track === \"number\" ? track : track.id;\n        el.textTracks[id].mode = \"disabled\";\n      } else {\n        for (let i = 0; i < el.textTracks.length; ++i)\n          el.textTracks[i].mode = \"disabled\";\n      }\n      selectedTrack.value = -1;\n    });\n  };\n  const enableTrack = (track, disableTracks = true) => {\n    usingElRef(target, (el) => {\n      const id = typeof track === \"number\" ? track : track.id;\n      if (disableTracks)\n        disableTrack();\n      el.textTracks[id].mode = \"showing\";\n      selectedTrack.value = id;\n    });\n  };\n  const togglePictureInPicture = () => {\n    return new Promise((resolve, reject) => {\n      usingElRef(target, async (el) => {\n        if (supportsPictureInPicture) {\n          if (!isPictureInPicture.value) {\n            el.requestPictureInPicture().then(resolve).catch(reject);\n          } else {\n            document.exitPictureInPicture().then(resolve).catch(reject);\n          }\n        }\n      });\n    });\n  };\n  watchEffect(() => {\n    if (!document)\n      return;\n    const el = toValue(target);\n    if (!el)\n      return;\n    const src = toValue(options.src);\n    let sources = [];\n    if (!src)\n      return;\n    if (typeof src === \"string\")\n      sources = [{ src }];\n    else if (Array.isArray(src))\n      sources = src;\n    else if (isObject(src))\n      sources = [src];\n    el.querySelectorAll(\"source\").forEach((e) => {\n      e.removeEventListener(\"error\", sourceErrorEvent.trigger);\n      e.remove();\n    });\n    sources.forEach(({ src: src2, type }) => {\n      const source = document.createElement(\"source\");\n      source.setAttribute(\"src\", src2);\n      source.setAttribute(\"type\", type || \"\");\n      source.addEventListener(\"error\", sourceErrorEvent.trigger);\n      el.appendChild(source);\n    });\n    el.load();\n  });\n  tryOnScopeDispose(() => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.querySelectorAll(\"source\").forEach((e) => e.removeEventListener(\"error\", sourceErrorEvent.trigger));\n  });\n  watch([target, volume], () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.volume = volume.value;\n  });\n  watch([target, muted], () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.muted = muted.value;\n  });\n  watch([target, rate], () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.playbackRate = rate.value;\n  });\n  watchEffect(() => {\n    if (!document)\n      return;\n    const textTracks = toValue(options.tracks);\n    const el = toValue(target);\n    if (!textTracks || !textTracks.length || !el)\n      return;\n    el.querySelectorAll(\"track\").forEach((e) => e.remove());\n    textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n      const track = document.createElement(\"track\");\n      track.default = isDefault || false;\n      track.kind = kind;\n      track.label = label;\n      track.src = src;\n      track.srclang = srcLang;\n      if (track.default)\n        selectedTrack.value = i;\n      el.appendChild(track);\n    });\n  });\n  const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.currentTime = time;\n  });\n  const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    isPlaying ? el.play() : el.pause();\n  });\n  useEventListener(target, \"timeupdate\", () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime));\n  useEventListener(target, \"durationchange\", () => duration.value = toValue(target).duration);\n  useEventListener(target, \"progress\", () => buffered.value = timeRangeToArray(toValue(target).buffered));\n  useEventListener(target, \"seeking\", () => seeking.value = true);\n  useEventListener(target, \"seeked\", () => seeking.value = false);\n  useEventListener(target, [\"waiting\", \"loadstart\"], () => {\n    waiting.value = true;\n    ignorePlayingUpdates(() => playing.value = false);\n  });\n  useEventListener(target, \"loadeddata\", () => waiting.value = false);\n  useEventListener(target, \"playing\", () => {\n    waiting.value = false;\n    ended.value = false;\n    ignorePlayingUpdates(() => playing.value = true);\n  });\n  useEventListener(target, \"ratechange\", () => rate.value = toValue(target).playbackRate);\n  useEventListener(target, \"stalled\", () => stalled.value = true);\n  useEventListener(target, \"ended\", () => ended.value = true);\n  useEventListener(target, \"pause\", () => ignorePlayingUpdates(() => playing.value = false));\n  useEventListener(target, \"play\", () => ignorePlayingUpdates(() => playing.value = true));\n  useEventListener(target, \"enterpictureinpicture\", () => isPictureInPicture.value = true);\n  useEventListener(target, \"leavepictureinpicture\", () => isPictureInPicture.value = false);\n  useEventListener(target, \"volumechange\", () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    volume.value = el.volume;\n    muted.value = el.muted;\n  });\n  const listeners = [];\n  const stop = watch([target], () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    stop();\n    listeners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks));\n    listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks));\n    listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks));\n  });\n  tryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n  return {\n    currentTime,\n    duration,\n    waiting,\n    seeking,\n    ended,\n    stalled,\n    buffered,\n    playing,\n    rate,\n    // Volume\n    volume,\n    muted,\n    // Tracks\n    tracks,\n    selectedTrack,\n    enableTrack,\n    disableTrack,\n    // Picture in Picture\n    supportsPictureInPicture,\n    togglePictureInPicture,\n    isPictureInPicture,\n    // Events\n    onSourceError: sourceErrorEvent.on\n  };\n}\n\nfunction getMapVue2Compat() {\n  const data = reactive({});\n  return {\n    get: (key) => data[key],\n    set: (key, value) => set(data, key, value),\n    has: (key) => hasOwn(data, key),\n    delete: (key) => del(data, key),\n    clear: () => {\n      Object.keys(data).forEach((key) => {\n        del(data, key);\n      });\n    }\n  };\n}\nfunction useMemoize(resolver, options) {\n  const initCache = () => {\n    if (options == null ? void 0 : options.cache)\n      return reactive(options.cache);\n    if (isVue2)\n      return getMapVue2Compat();\n    return reactive(/* @__PURE__ */ new Map());\n  };\n  const cache = initCache();\n  const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n  const _loadData = (key, ...args) => {\n    cache.set(key, resolver(...args));\n    return cache.get(key);\n  };\n  const loadData = (...args) => _loadData(generateKey(...args), ...args);\n  const deleteData = (...args) => {\n    cache.delete(generateKey(...args));\n  };\n  const clearData = () => {\n    cache.clear();\n  };\n  const memoized = (...args) => {\n    const key = generateKey(...args);\n    if (cache.has(key))\n      return cache.get(key);\n    return _loadData(key, ...args);\n  };\n  memoized.load = loadData;\n  memoized.delete = deleteData;\n  memoized.clear = clearData;\n  memoized.generateKey = generateKey;\n  memoized.cache = cache;\n  return memoized;\n}\n\nfunction useMemory(options = {}) {\n  const memory = ref();\n  const isSupported = useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n  if (isSupported.value) {\n    const { interval = 1e3 } = options;\n    useIntervalFn(() => {\n      memory.value = performance.memory;\n    }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });\n  }\n  return { isSupported, memory };\n}\n\nconst UseMouseBuiltinExtractors = {\n  page: (event) => [event.pageX, event.pageY],\n  client: (event) => [event.clientX, event.clientY],\n  screen: (event) => [event.screenX, event.screenY],\n  movement: (event) => event instanceof Touch ? null : [event.movementX, event.movementY]\n};\nfunction useMouse(options = {}) {\n  const {\n    type = \"page\",\n    touch = true,\n    resetOnTouchEnds = false,\n    initialValue = { x: 0, y: 0 },\n    window = defaultWindow,\n    target = window,\n    scroll = true,\n    eventFilter\n  } = options;\n  let _prevMouseEvent = null;\n  const x = ref(initialValue.x);\n  const y = ref(initialValue.y);\n  const sourceType = ref(null);\n  const extractor = typeof type === \"function\" ? type : UseMouseBuiltinExtractors[type];\n  const mouseHandler = (event) => {\n    const result = extractor(event);\n    _prevMouseEvent = event;\n    if (result) {\n      [x.value, y.value] = result;\n      sourceType.value = \"mouse\";\n    }\n  };\n  const touchHandler = (event) => {\n    if (event.touches.length > 0) {\n      const result = extractor(event.touches[0]);\n      if (result) {\n        [x.value, y.value] = result;\n        sourceType.value = \"touch\";\n      }\n    }\n  };\n  const scrollHandler = () => {\n    if (!_prevMouseEvent || !window)\n      return;\n    const pos = extractor(_prevMouseEvent);\n    if (_prevMouseEvent instanceof MouseEvent && pos) {\n      x.value = pos[0] + window.scrollX;\n      y.value = pos[1] + window.scrollY;\n    }\n  };\n  const reset = () => {\n    x.value = initialValue.x;\n    y.value = initialValue.y;\n  };\n  const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event);\n  const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event);\n  const scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler();\n  if (target) {\n    const listenerOptions = { passive: true };\n    useEventListener(target, [\"mousemove\", \"dragover\"], mouseHandlerWrapper, listenerOptions);\n    if (touch && type !== \"movement\") {\n      useEventListener(target, [\"touchstart\", \"touchmove\"], touchHandlerWrapper, listenerOptions);\n      if (resetOnTouchEnds)\n        useEventListener(target, \"touchend\", reset, listenerOptions);\n    }\n    if (scroll && type === \"page\")\n      useEventListener(window, \"scroll\", scrollHandlerWrapper, { passive: true });\n  }\n  return {\n    x,\n    y,\n    sourceType\n  };\n}\n\nfunction useMouseInElement(target, options = {}) {\n  const {\n    handleOutside = true,\n    window = defaultWindow\n  } = options;\n  const type = options.type || \"page\";\n  const { x, y, sourceType } = useMouse(options);\n  const targetRef = ref(target != null ? target : window == null ? void 0 : window.document.body);\n  const elementX = ref(0);\n  const elementY = ref(0);\n  const elementPositionX = ref(0);\n  const elementPositionY = ref(0);\n  const elementHeight = ref(0);\n  const elementWidth = ref(0);\n  const isOutside = ref(true);\n  let stop = () => {\n  };\n  if (window) {\n    stop = watch(\n      [targetRef, x, y],\n      () => {\n        const el = unrefElement(targetRef);\n        if (!el)\n          return;\n        const {\n          left,\n          top,\n          width,\n          height\n        } = el.getBoundingClientRect();\n        elementPositionX.value = left + (type === \"page\" ? window.pageXOffset : 0);\n        elementPositionY.value = top + (type === \"page\" ? window.pageYOffset : 0);\n        elementHeight.value = height;\n        elementWidth.value = width;\n        const elX = x.value - elementPositionX.value;\n        const elY = y.value - elementPositionY.value;\n        isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n        if (handleOutside || !isOutside.value) {\n          elementX.value = elX;\n          elementY.value = elY;\n        }\n      },\n      { immediate: true }\n    );\n    useEventListener(document, \"mouseleave\", () => {\n      isOutside.value = true;\n    });\n  }\n  return {\n    x,\n    y,\n    sourceType,\n    elementX,\n    elementY,\n    elementPositionX,\n    elementPositionY,\n    elementHeight,\n    elementWidth,\n    isOutside,\n    stop\n  };\n}\n\nfunction useMousePressed(options = {}) {\n  const {\n    touch = true,\n    drag = true,\n    capture = false,\n    initialValue = false,\n    window = defaultWindow\n  } = options;\n  const pressed = ref(initialValue);\n  const sourceType = ref(null);\n  if (!window) {\n    return {\n      pressed,\n      sourceType\n    };\n  }\n  const onPressed = (srcType) => () => {\n    pressed.value = true;\n    sourceType.value = srcType;\n  };\n  const onReleased = () => {\n    pressed.value = false;\n    sourceType.value = null;\n  };\n  const target = computed(() => unrefElement(options.target) || window);\n  useEventListener(target, \"mousedown\", onPressed(\"mouse\"), { passive: true, capture });\n  useEventListener(window, \"mouseleave\", onReleased, { passive: true, capture });\n  useEventListener(window, \"mouseup\", onReleased, { passive: true, capture });\n  if (drag) {\n    useEventListener(target, \"dragstart\", onPressed(\"mouse\"), { passive: true, capture });\n    useEventListener(window, \"drop\", onReleased, { passive: true, capture });\n    useEventListener(window, \"dragend\", onReleased, { passive: true, capture });\n  }\n  if (touch) {\n    useEventListener(target, \"touchstart\", onPressed(\"touch\"), { passive: true, capture });\n    useEventListener(window, \"touchend\", onReleased, { passive: true, capture });\n    useEventListener(window, \"touchcancel\", onReleased, { passive: true, capture });\n  }\n  return {\n    pressed,\n    sourceType\n  };\n}\n\nfunction useNavigatorLanguage(options = {}) {\n  const { window = defaultWindow } = options;\n  const navigator = window == null ? void 0 : window.navigator;\n  const isSupported = useSupported(() => navigator && \"language\" in navigator);\n  const language = ref(navigator == null ? void 0 : navigator.language);\n  useEventListener(window, \"languagechange\", () => {\n    if (navigator)\n      language.value = navigator.language;\n  });\n  return {\n    isSupported,\n    language\n  };\n}\n\nfunction useNetwork(options = {}) {\n  const { window = defaultWindow } = options;\n  const navigator = window == null ? void 0 : window.navigator;\n  const isSupported = useSupported(() => navigator && \"connection\" in navigator);\n  const isOnline = ref(true);\n  const saveData = ref(false);\n  const offlineAt = ref(void 0);\n  const onlineAt = ref(void 0);\n  const downlink = ref(void 0);\n  const downlinkMax = ref(void 0);\n  const rtt = ref(void 0);\n  const effectiveType = ref(void 0);\n  const type = ref(\"unknown\");\n  const connection = isSupported.value && navigator.connection;\n  function updateNetworkInformation() {\n    if (!navigator)\n      return;\n    isOnline.value = navigator.onLine;\n    offlineAt.value = isOnline.value ? void 0 : Date.now();\n    onlineAt.value = isOnline.value ? Date.now() : void 0;\n    if (connection) {\n      downlink.value = connection.downlink;\n      downlinkMax.value = connection.downlinkMax;\n      effectiveType.value = connection.effectiveType;\n      rtt.value = connection.rtt;\n      saveData.value = connection.saveData;\n      type.value = connection.type;\n    }\n  }\n  if (window) {\n    useEventListener(window, \"offline\", () => {\n      isOnline.value = false;\n      offlineAt.value = Date.now();\n    });\n    useEventListener(window, \"online\", () => {\n      isOnline.value = true;\n      onlineAt.value = Date.now();\n    });\n  }\n  if (connection)\n    useEventListener(connection, \"change\", updateNetworkInformation, false);\n  updateNetworkInformation();\n  return {\n    isSupported,\n    isOnline,\n    saveData,\n    offlineAt,\n    onlineAt,\n    downlink,\n    downlinkMax,\n    effectiveType,\n    rtt,\n    type\n  };\n}\n\nfunction useNow(options = {}) {\n  const {\n    controls: exposeControls = false,\n    interval = \"requestAnimationFrame\"\n  } = options;\n  const now = ref(/* @__PURE__ */ new Date());\n  const update = () => now.value = /* @__PURE__ */ new Date();\n  const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });\n  if (exposeControls) {\n    return {\n      now,\n      ...controls\n    };\n  } else {\n    return now;\n  }\n}\n\nfunction useObjectUrl(object) {\n  const url = ref();\n  const release = () => {\n    if (url.value)\n      URL.revokeObjectURL(url.value);\n    url.value = void 0;\n  };\n  watch(\n    () => toValue(object),\n    (newObject) => {\n      release();\n      if (newObject)\n        url.value = URL.createObjectURL(newObject);\n    },\n    { immediate: true }\n  );\n  tryOnScopeDispose(release);\n  return readonly(url);\n}\n\nfunction useClamp(value, min, max) {\n  if (typeof value === \"function\" || isReadonly(value))\n    return computed(() => clamp(toValue(value), toValue(min), toValue(max)));\n  const _value = ref(value);\n  return computed({\n    get() {\n      return _value.value = clamp(_value.value, toValue(min), toValue(max));\n    },\n    set(value2) {\n      _value.value = clamp(value2, toValue(min), toValue(max));\n    }\n  });\n}\n\nfunction useOffsetPagination(options) {\n  const {\n    total = Number.POSITIVE_INFINITY,\n    pageSize = 10,\n    page = 1,\n    onPageChange = noop,\n    onPageSizeChange = noop,\n    onPageCountChange = noop\n  } = options;\n  const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY);\n  const pageCount = computed(() => Math.max(\n    1,\n    Math.ceil(toValue(total) / toValue(currentPageSize))\n  ));\n  const currentPage = useClamp(page, 1, pageCount);\n  const isFirstPage = computed(() => currentPage.value === 1);\n  const isLastPage = computed(() => currentPage.value === pageCount.value);\n  if (isRef(page))\n    syncRef(page, currentPage);\n  if (isRef(pageSize))\n    syncRef(pageSize, currentPageSize);\n  function prev() {\n    currentPage.value--;\n  }\n  function next() {\n    currentPage.value++;\n  }\n  const returnValue = {\n    currentPage,\n    currentPageSize,\n    pageCount,\n    isFirstPage,\n    isLastPage,\n    prev,\n    next\n  };\n  watch(currentPage, () => {\n    onPageChange(reactive(returnValue));\n  });\n  watch(currentPageSize, () => {\n    onPageSizeChange(reactive(returnValue));\n  });\n  watch(pageCount, () => {\n    onPageCountChange(reactive(returnValue));\n  });\n  return returnValue;\n}\n\nfunction useOnline(options = {}) {\n  const { isOnline } = useNetwork(options);\n  return isOnline;\n}\n\nfunction usePageLeave(options = {}) {\n  const { window = defaultWindow } = options;\n  const isLeft = ref(false);\n  const handler = (event) => {\n    if (!window)\n      return;\n    event = event || window.event;\n    const from = event.relatedTarget || event.toElement;\n    isLeft.value = !from;\n  };\n  if (window) {\n    useEventListener(window, \"mouseout\", handler, { passive: true });\n    useEventListener(window.document, \"mouseleave\", handler, { passive: true });\n    useEventListener(window.document, \"mouseenter\", handler, { passive: true });\n  }\n  return isLeft;\n}\n\nfunction useParallax(target, options = {}) {\n  const {\n    deviceOrientationTiltAdjust = (i) => i,\n    deviceOrientationRollAdjust = (i) => i,\n    mouseTiltAdjust = (i) => i,\n    mouseRollAdjust = (i) => i,\n    window = defaultWindow\n  } = options;\n  const orientation = reactive(useDeviceOrientation({ window }));\n  const {\n    elementX: x,\n    elementY: y,\n    elementWidth: width,\n    elementHeight: height\n  } = useMouseInElement(target, { handleOutside: false, window });\n  const source = computed(() => {\n    if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0))\n      return \"deviceOrientation\";\n    return \"mouse\";\n  });\n  const roll = computed(() => {\n    if (source.value === \"deviceOrientation\") {\n      const value = -orientation.beta / 90;\n      return deviceOrientationRollAdjust(value);\n    } else {\n      const value = -(y.value - height.value / 2) / height.value;\n      return mouseRollAdjust(value);\n    }\n  });\n  const tilt = computed(() => {\n    if (source.value === \"deviceOrientation\") {\n      const value = orientation.gamma / 90;\n      return deviceOrientationTiltAdjust(value);\n    } else {\n      const value = (x.value - width.value / 2) / width.value;\n      return mouseTiltAdjust(value);\n    }\n  });\n  return { roll, tilt, source };\n}\n\nfunction useParentElement(element = useCurrentElement()) {\n  const parentElement = shallowRef();\n  const update = () => {\n    const el = unrefElement(element);\n    if (el)\n      parentElement.value = el.parentElement;\n  };\n  tryOnMounted(update);\n  watch(() => toValue(element), update);\n  return parentElement;\n}\n\nfunction usePerformanceObserver(options, callback) {\n  const {\n    window = defaultWindow,\n    immediate = true,\n    ...performanceOptions\n  } = options;\n  const isSupported = useSupported(() => window && \"PerformanceObserver\" in window);\n  let observer;\n  const stop = () => {\n    observer == null ? void 0 : observer.disconnect();\n  };\n  const start = () => {\n    if (isSupported.value) {\n      stop();\n      observer = new PerformanceObserver(callback);\n      observer.observe(performanceOptions);\n    }\n  };\n  tryOnScopeDispose(stop);\n  if (immediate)\n    start();\n  return {\n    isSupported,\n    start,\n    stop\n  };\n}\n\nconst defaultState = {\n  x: 0,\n  y: 0,\n  pointerId: 0,\n  pressure: 0,\n  tiltX: 0,\n  tiltY: 0,\n  width: 0,\n  height: 0,\n  twist: 0,\n  pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n  const {\n    target = defaultWindow\n  } = options;\n  const isInside = ref(false);\n  const state = ref(options.initialValue || {});\n  Object.assign(state.value, defaultState, state.value);\n  const handler = (event) => {\n    isInside.value = true;\n    if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n      return;\n    state.value = objectPick(event, keys, false);\n  };\n  if (target) {\n    const listenerOptions = { passive: true };\n    useEventListener(target, [\"pointerdown\", \"pointermove\", \"pointerup\"], handler, listenerOptions);\n    useEventListener(target, \"pointerleave\", () => isInside.value = false, listenerOptions);\n  }\n  return {\n    ...toRefs(state),\n    isInside\n  };\n}\n\nfunction usePointerLock(target, options = {}) {\n  const { document = defaultDocument, pointerLockOptions } = options;\n  const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n  const element = ref();\n  const triggerElement = ref();\n  let targetElement;\n  if (isSupported.value) {\n    useEventListener(document, \"pointerlockchange\", () => {\n      var _a;\n      const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n      if (targetElement && currentElement === targetElement) {\n        element.value = document.pointerLockElement;\n        if (!element.value)\n          targetElement = triggerElement.value = null;\n      }\n    });\n    useEventListener(document, \"pointerlockerror\", () => {\n      var _a;\n      const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n      if (targetElement && currentElement === targetElement) {\n        const action = document.pointerLockElement ? \"release\" : \"acquire\";\n        throw new Error(`Failed to ${action} pointer lock.`);\n      }\n    });\n  }\n  async function lock(e, options2) {\n    var _a;\n    if (!isSupported.value)\n      throw new Error(\"Pointer Lock API is not supported by your browser.\");\n    triggerElement.value = e instanceof Event ? e.currentTarget : null;\n    targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e);\n    if (!targetElement)\n      throw new Error(\"Target element undefined.\");\n    targetElement.requestPointerLock(options2 != null ? options2 : pointerLockOptions);\n    return await until(element).toBe(targetElement);\n  }\n  async function unlock() {\n    if (!element.value)\n      return false;\n    document.exitPointerLock();\n    await until(element).toBeNull();\n    return true;\n  }\n  return {\n    isSupported,\n    element,\n    triggerElement,\n    lock,\n    unlock\n  };\n}\n\nfunction usePointerSwipe(target, options = {}) {\n  const targetRef = toRef(target);\n  const {\n    threshold = 50,\n    onSwipe,\n    onSwipeEnd,\n    onSwipeStart\n  } = options;\n  const posStart = reactive({ x: 0, y: 0 });\n  const updatePosStart = (x, y) => {\n    posStart.x = x;\n    posStart.y = y;\n  };\n  const posEnd = reactive({ x: 0, y: 0 });\n  const updatePosEnd = (x, y) => {\n    posEnd.x = x;\n    posEnd.y = y;\n  };\n  const distanceX = computed(() => posStart.x - posEnd.x);\n  const distanceY = computed(() => posStart.y - posEnd.y);\n  const { max, abs } = Math;\n  const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n  const isSwiping = ref(false);\n  const isPointerDown = ref(false);\n  const direction = computed(() => {\n    if (!isThresholdExceeded.value)\n      return \"none\";\n    if (abs(distanceX.value) > abs(distanceY.value)) {\n      return distanceX.value > 0 ? \"left\" : \"right\";\n    } else {\n      return distanceY.value > 0 ? \"up\" : \"down\";\n    }\n  });\n  const eventIsAllowed = (e) => {\n    var _a, _b, _c;\n    const isReleasingButton = e.buttons === 0;\n    const isPrimaryButton = e.buttons === 1;\n    return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true;\n  };\n  const stops = [\n    useEventListener(target, \"pointerdown\", (e) => {\n      var _a, _b;\n      if (!eventIsAllowed(e))\n        return;\n      isPointerDown.value = true;\n      (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"none\");\n      const eventTarget = e.target;\n      eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);\n      const { clientX: x, clientY: y } = e;\n      updatePosStart(x, y);\n      updatePosEnd(x, y);\n      onSwipeStart == null ? void 0 : onSwipeStart(e);\n    }),\n    useEventListener(target, \"pointermove\", (e) => {\n      if (!eventIsAllowed(e))\n        return;\n      if (!isPointerDown.value)\n        return;\n      const { clientX: x, clientY: y } = e;\n      updatePosEnd(x, y);\n      if (!isSwiping.value && isThresholdExceeded.value)\n        isSwiping.value = true;\n      if (isSwiping.value)\n        onSwipe == null ? void 0 : onSwipe(e);\n    }),\n    useEventListener(target, \"pointerup\", (e) => {\n      var _a, _b;\n      if (!eventIsAllowed(e))\n        return;\n      if (isSwiping.value)\n        onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n      isPointerDown.value = false;\n      isSwiping.value = false;\n      (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"initial\");\n    })\n  ];\n  const stop = () => stops.forEach((s) => s());\n  return {\n    isSwiping: readonly(isSwiping),\n    direction: readonly(direction),\n    posStart: readonly(posStart),\n    posEnd: readonly(posEnd),\n    distanceX,\n    distanceY,\n    stop\n  };\n}\n\nfunction usePreferredColorScheme(options) {\n  const isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n  const isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n  return computed(() => {\n    if (isDark.value)\n      return \"dark\";\n    if (isLight.value)\n      return \"light\";\n    return \"no-preference\";\n  });\n}\n\nfunction usePreferredContrast(options) {\n  const isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n  const isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n  const isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n  return computed(() => {\n    if (isMore.value)\n      return \"more\";\n    if (isLess.value)\n      return \"less\";\n    if (isCustom.value)\n      return \"custom\";\n    return \"no-preference\";\n  });\n}\n\nfunction usePreferredLanguages(options = {}) {\n  const { window = defaultWindow } = options;\n  if (!window)\n    return ref([\"en\"]);\n  const navigator = window.navigator;\n  const value = ref(navigator.languages);\n  useEventListener(window, \"languagechange\", () => {\n    value.value = navigator.languages;\n  });\n  return value;\n}\n\nfunction usePreferredReducedMotion(options) {\n  const isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n  return computed(() => {\n    if (isReduced.value)\n      return \"reduce\";\n    return \"no-preference\";\n  });\n}\n\nfunction usePrevious(value, initialValue) {\n  const previous = shallowRef(initialValue);\n  watch(\n    toRef(value),\n    (_, oldValue) => {\n      previous.value = oldValue;\n    },\n    { flush: \"sync\" }\n  );\n  return readonly(previous);\n}\n\nfunction useScreenOrientation(options = {}) {\n  const {\n    window = defaultWindow\n  } = options;\n  const isSupported = useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n  const screenOrientation = isSupported.value ? window.screen.orientation : {};\n  const orientation = ref(screenOrientation.type);\n  const angle = ref(screenOrientation.angle || 0);\n  if (isSupported.value) {\n    useEventListener(window, \"orientationchange\", () => {\n      orientation.value = screenOrientation.type;\n      angle.value = screenOrientation.angle;\n    });\n  }\n  const lockOrientation = (type) => {\n    if (!isSupported.value)\n      return Promise.reject(new Error(\"Not supported\"));\n    return screenOrientation.lock(type);\n  };\n  const unlockOrientation = () => {\n    if (isSupported.value)\n      screenOrientation.unlock();\n  };\n  return {\n    isSupported,\n    orientation,\n    angle,\n    lockOrientation,\n    unlockOrientation\n  };\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n  const top = ref(\"\");\n  const right = ref(\"\");\n  const bottom = ref(\"\");\n  const left = ref(\"\");\n  if (isClient) {\n    const topCssVar = useCssVar(topVarName);\n    const rightCssVar = useCssVar(rightVarName);\n    const bottomCssVar = useCssVar(bottomVarName);\n    const leftCssVar = useCssVar(leftVarName);\n    topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n    rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n    bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n    leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n    update();\n    useEventListener(\"resize\", useDebounceFn(update));\n  }\n  function update() {\n    top.value = getValue(topVarName);\n    right.value = getValue(rightVarName);\n    bottom.value = getValue(bottomVarName);\n    left.value = getValue(leftVarName);\n  }\n  return {\n    top,\n    right,\n    bottom,\n    left,\n    update\n  };\n}\nfunction getValue(position) {\n  return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n  const {\n    immediate = true,\n    manual = false,\n    type = \"text/javascript\",\n    async = true,\n    crossOrigin,\n    referrerPolicy,\n    noModule,\n    defer,\n    document = defaultDocument,\n    attrs = {}\n  } = options;\n  const scriptTag = ref(null);\n  let _promise = null;\n  const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n    const resolveWithElement = (el2) => {\n      scriptTag.value = el2;\n      resolve(el2);\n      return el2;\n    };\n    if (!document) {\n      resolve(false);\n      return;\n    }\n    let shouldAppend = false;\n    let el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n    if (!el) {\n      el = document.createElement(\"script\");\n      el.type = type;\n      el.async = async;\n      el.src = toValue(src);\n      if (defer)\n        el.defer = defer;\n      if (crossOrigin)\n        el.crossOrigin = crossOrigin;\n      if (noModule)\n        el.noModule = noModule;\n      if (referrerPolicy)\n        el.referrerPolicy = referrerPolicy;\n      Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value));\n      shouldAppend = true;\n    } else if (el.hasAttribute(\"data-loaded\")) {\n      resolveWithElement(el);\n    }\n    el.addEventListener(\"error\", (event) => reject(event));\n    el.addEventListener(\"abort\", (event) => reject(event));\n    el.addEventListener(\"load\", () => {\n      el.setAttribute(\"data-loaded\", \"true\");\n      onLoaded(el);\n      resolveWithElement(el);\n    });\n    if (shouldAppend)\n      el = document.head.appendChild(el);\n    if (!waitForScriptLoad)\n      resolveWithElement(el);\n  });\n  const load = (waitForScriptLoad = true) => {\n    if (!_promise)\n      _promise = loadScript(waitForScriptLoad);\n    return _promise;\n  };\n  const unload = () => {\n    if (!document)\n      return;\n    _promise = null;\n    if (scriptTag.value)\n      scriptTag.value = null;\n    const el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n    if (el)\n      document.head.removeChild(el);\n  };\n  if (immediate && !manual)\n    tryOnMounted(load);\n  if (!manual)\n    tryOnUnmounted(unload);\n  return { scriptTag, load, unload };\n}\n\nfunction checkOverflowScroll(ele) {\n  const style = window.getComputedStyle(ele);\n  if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n    return true;\n  } else {\n    const parent = ele.parentNode;\n    if (!parent || parent.tagName === \"BODY\")\n      return false;\n    return checkOverflowScroll(parent);\n  }\n}\nfunction preventDefault(rawEvent) {\n  const e = rawEvent || window.event;\n  const _target = e.target;\n  if (checkOverflowScroll(_target))\n    return false;\n  if (e.touches.length > 1)\n    return true;\n  if (e.preventDefault)\n    e.preventDefault();\n  return false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\nfunction useScrollLock(element, initialState = false) {\n  const isLocked = ref(initialState);\n  let stopTouchMoveListener = null;\n  let initialOverflow;\n  watch(toRef(element), (el) => {\n    const target = resolveElement(toValue(el));\n    if (target) {\n      const ele = target;\n      if (!elInitialOverflow.get(ele))\n        elInitialOverflow.set(ele, initialOverflow);\n      if (isLocked.value)\n        ele.style.overflow = \"hidden\";\n    }\n  }, {\n    immediate: true\n  });\n  const lock = () => {\n    const el = resolveElement(toValue(element));\n    if (!el || isLocked.value)\n      return;\n    if (isIOS) {\n      stopTouchMoveListener = useEventListener(\n        el,\n        \"touchmove\",\n        (e) => {\n          preventDefault(e);\n        },\n        { passive: false }\n      );\n    }\n    el.style.overflow = \"hidden\";\n    isLocked.value = true;\n  };\n  const unlock = () => {\n    var _a;\n    const el = resolveElement(toValue(element));\n    if (!el || !isLocked.value)\n      return;\n    isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());\n    el.style.overflow = (_a = elInitialOverflow.get(el)) != null ? _a : \"\";\n    elInitialOverflow.delete(el);\n    isLocked.value = false;\n  };\n  tryOnScopeDispose(unlock);\n  return computed({\n    get() {\n      return isLocked.value;\n    },\n    set(v) {\n      if (v)\n        lock();\n      else\n        unlock();\n    }\n  });\n}\n\nfunction useSessionStorage(key, initialValue, options = {}) {\n  const { window = defaultWindow } = options;\n  return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options);\n}\n\nfunction useShare(shareOptions = {}, options = {}) {\n  const { navigator = defaultNavigator } = options;\n  const _navigator = navigator;\n  const isSupported = useSupported(() => _navigator && \"canShare\" in _navigator);\n  const share = async (overrideOptions = {}) => {\n    if (isSupported.value) {\n      const data = {\n        ...toValue(shareOptions),\n        ...toValue(overrideOptions)\n      };\n      let granted = true;\n      if (data.files && _navigator.canShare)\n        granted = _navigator.canShare({ files: data.files });\n      if (granted)\n        return _navigator.share(data);\n    }\n  };\n  return {\n    isSupported,\n    share\n  };\n}\n\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n  var _a, _b, _c, _d;\n  const [source] = args;\n  let compareFn = defaultCompare;\n  let options = {};\n  if (args.length === 2) {\n    if (typeof args[1] === \"object\") {\n      options = args[1];\n      compareFn = (_a = options.compareFn) != null ? _a : defaultCompare;\n    } else {\n      compareFn = (_b = args[1]) != null ? _b : defaultCompare;\n    }\n  } else if (args.length > 2) {\n    compareFn = (_c = args[1]) != null ? _c : defaultCompare;\n    options = (_d = args[2]) != null ? _d : {};\n  }\n  const {\n    dirty = false,\n    sortFn = defaultSortFn\n  } = options;\n  if (!dirty)\n    return computed(() => sortFn([...toValue(source)], compareFn));\n  watchEffect(() => {\n    const result = sortFn(toValue(source), compareFn);\n    if (isRef(source))\n      source.value = result;\n    else\n      source.splice(0, source.length, ...result);\n  });\n  return source;\n}\n\nfunction useSpeechRecognition(options = {}) {\n  const {\n    interimResults = true,\n    continuous = true,\n    window = defaultWindow\n  } = options;\n  const lang = toRef(options.lang || \"en-US\");\n  const isListening = ref(false);\n  const isFinal = ref(false);\n  const result = ref(\"\");\n  const error = shallowRef(void 0);\n  const toggle = (value = !isListening.value) => {\n    isListening.value = value;\n  };\n  const start = () => {\n    isListening.value = true;\n  };\n  const stop = () => {\n    isListening.value = false;\n  };\n  const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n  const isSupported = useSupported(() => SpeechRecognition);\n  let recognition;\n  if (isSupported.value) {\n    recognition = new SpeechRecognition();\n    recognition.continuous = continuous;\n    recognition.interimResults = interimResults;\n    recognition.lang = toValue(lang);\n    recognition.onstart = () => {\n      isFinal.value = false;\n    };\n    watch(lang, (lang2) => {\n      if (recognition && !isListening.value)\n        recognition.lang = lang2;\n    });\n    recognition.onresult = (event) => {\n      const transcript = Array.from(event.results).map((result2) => {\n        isFinal.value = result2.isFinal;\n        return result2[0];\n      }).map((result2) => result2.transcript).join(\"\");\n      result.value = transcript;\n      error.value = void 0;\n    };\n    recognition.onerror = (event) => {\n      error.value = event;\n    };\n    recognition.onend = () => {\n      isListening.value = false;\n      recognition.lang = toValue(lang);\n    };\n    watch(isListening, () => {\n      if (isListening.value)\n        recognition.start();\n      else\n        recognition.stop();\n    });\n  }\n  tryOnScopeDispose(() => {\n    isListening.value = false;\n  });\n  return {\n    isSupported,\n    isListening,\n    isFinal,\n    recognition,\n    result,\n    error,\n    toggle,\n    start,\n    stop\n  };\n}\n\nfunction useSpeechSynthesis(text, options = {}) {\n  const {\n    pitch = 1,\n    rate = 1,\n    volume = 1,\n    window = defaultWindow\n  } = options;\n  const synth = window && window.speechSynthesis;\n  const isSupported = useSupported(() => synth);\n  const isPlaying = ref(false);\n  const status = ref(\"init\");\n  const spokenText = toRef(text || \"\");\n  const lang = toRef(options.lang || \"en-US\");\n  const error = shallowRef(void 0);\n  const toggle = (value = !isPlaying.value) => {\n    isPlaying.value = value;\n  };\n  const bindEventsForUtterance = (utterance2) => {\n    utterance2.lang = toValue(lang);\n    utterance2.voice = toValue(options.voice) || null;\n    utterance2.pitch = toValue(pitch);\n    utterance2.rate = toValue(rate);\n    utterance2.volume = volume;\n    utterance2.onstart = () => {\n      isPlaying.value = true;\n      status.value = \"play\";\n    };\n    utterance2.onpause = () => {\n      isPlaying.value = false;\n      status.value = \"pause\";\n    };\n    utterance2.onresume = () => {\n      isPlaying.value = true;\n      status.value = \"play\";\n    };\n    utterance2.onend = () => {\n      isPlaying.value = false;\n      status.value = \"end\";\n    };\n    utterance2.onerror = (event) => {\n      error.value = event;\n    };\n  };\n  const utterance = computed(() => {\n    isPlaying.value = false;\n    status.value = \"init\";\n    const newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n    bindEventsForUtterance(newUtterance);\n    return newUtterance;\n  });\n  const speak = () => {\n    synth.cancel();\n    utterance && synth.speak(utterance.value);\n  };\n  const stop = () => {\n    synth.cancel();\n    isPlaying.value = false;\n  };\n  if (isSupported.value) {\n    bindEventsForUtterance(utterance.value);\n    watch(lang, (lang2) => {\n      if (utterance.value && !isPlaying.value)\n        utterance.value.lang = lang2;\n    });\n    if (options.voice) {\n      watch(options.voice, () => {\n        synth.cancel();\n      });\n    }\n    watch(isPlaying, () => {\n      if (isPlaying.value)\n        synth.resume();\n      else\n        synth.pause();\n    });\n  }\n  tryOnScopeDispose(() => {\n    isPlaying.value = false;\n  });\n  return {\n    isSupported,\n    isPlaying,\n    status,\n    utterance,\n    error,\n    stop,\n    toggle,\n    speak\n  };\n}\n\nfunction useStepper(steps, initialStep) {\n  const stepsRef = ref(steps);\n  const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n  const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0]));\n  const current = computed(() => at(index.value));\n  const isFirst = computed(() => index.value === 0);\n  const isLast = computed(() => index.value === stepNames.value.length - 1);\n  const next = computed(() => stepNames.value[index.value + 1]);\n  const previous = computed(() => stepNames.value[index.value - 1]);\n  function at(index2) {\n    if (Array.isArray(stepsRef.value))\n      return stepsRef.value[index2];\n    return stepsRef.value[stepNames.value[index2]];\n  }\n  function get(step) {\n    if (!stepNames.value.includes(step))\n      return;\n    return at(stepNames.value.indexOf(step));\n  }\n  function goTo(step) {\n    if (stepNames.value.includes(step))\n      index.value = stepNames.value.indexOf(step);\n  }\n  function goToNext() {\n    if (isLast.value)\n      return;\n    index.value++;\n  }\n  function goToPrevious() {\n    if (isFirst.value)\n      return;\n    index.value--;\n  }\n  function goBackTo(step) {\n    if (isAfter(step))\n      goTo(step);\n  }\n  function isNext(step) {\n    return stepNames.value.indexOf(step) === index.value + 1;\n  }\n  function isPrevious(step) {\n    return stepNames.value.indexOf(step) === index.value - 1;\n  }\n  function isCurrent(step) {\n    return stepNames.value.indexOf(step) === index.value;\n  }\n  function isBefore(step) {\n    return index.value < stepNames.value.indexOf(step);\n  }\n  function isAfter(step) {\n    return index.value > stepNames.value.indexOf(step);\n  }\n  return {\n    steps: stepsRef,\n    stepNames,\n    index,\n    current,\n    next,\n    previous,\n    isFirst,\n    isLast,\n    at,\n    get,\n    goTo,\n    goToNext,\n    goToPrevious,\n    goBackTo,\n    isNext,\n    isPrevious,\n    isCurrent,\n    isBefore,\n    isAfter\n  };\n}\n\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n  var _a;\n  const {\n    flush = \"pre\",\n    deep = true,\n    listenToStorageChanges = true,\n    writeDefaults = true,\n    mergeDefaults = false,\n    shallow,\n    window = defaultWindow,\n    eventFilter,\n    onError = (e) => {\n      console.error(e);\n    }\n  } = options;\n  const rawInit = toValue(initialValue);\n  const type = guessSerializerType(rawInit);\n  const data = (shallow ? shallowRef : ref)(initialValue);\n  const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n  if (!storage) {\n    try {\n      storage = getSSRHandler(\"getDefaultStorage\", () => {\n        var _a2;\n        return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n      })();\n    } catch (e) {\n      onError(e);\n    }\n  }\n  async function read(event) {\n    if (!storage || event && event.key !== key)\n      return;\n    try {\n      const rawValue = event ? event.newValue : await storage.getItem(key);\n      if (rawValue == null) {\n        data.value = rawInit;\n        if (writeDefaults && rawInit !== null)\n          await storage.setItem(key, await serializer.write(rawInit));\n      } else if (mergeDefaults) {\n        const value = await serializer.read(rawValue);\n        if (typeof mergeDefaults === \"function\")\n          data.value = mergeDefaults(value, rawInit);\n        else if (type === \"object\" && !Array.isArray(value))\n          data.value = { ...rawInit, ...value };\n        else\n          data.value = value;\n      } else {\n        data.value = await serializer.read(rawValue);\n      }\n    } catch (e) {\n      onError(e);\n    }\n  }\n  read();\n  if (window && listenToStorageChanges)\n    useEventListener(window, \"storage\", (e) => Promise.resolve().then(() => read(e)));\n  if (storage) {\n    watchWithFilter(\n      data,\n      async () => {\n        try {\n          if (data.value == null)\n            await storage.removeItem(key);\n          else\n            await storage.setItem(key, await serializer.write(data.value));\n        } catch (e) {\n          onError(e);\n        }\n      },\n      {\n        flush,\n        deep,\n        eventFilter\n      }\n    );\n  }\n  return data;\n}\n\nlet _id = 0;\nfunction useStyleTag(css, options = {}) {\n  const isLoaded = ref(false);\n  const {\n    document = defaultDocument,\n    immediate = true,\n    manual = false,\n    id = `vueuse_styletag_${++_id}`\n  } = options;\n  const cssRef = ref(css);\n  let stop = () => {\n  };\n  const load = () => {\n    if (!document)\n      return;\n    const el = document.getElementById(id) || document.createElement(\"style\");\n    if (!el.isConnected) {\n      el.id = id;\n      if (options.media)\n        el.media = options.media;\n      document.head.appendChild(el);\n    }\n    if (isLoaded.value)\n      return;\n    stop = watch(\n      cssRef,\n      (value) => {\n        el.textContent = value;\n      },\n      { immediate: true }\n    );\n    isLoaded.value = true;\n  };\n  const unload = () => {\n    if (!document || !isLoaded.value)\n      return;\n    stop();\n    document.head.removeChild(document.getElementById(id));\n    isLoaded.value = false;\n  };\n  if (immediate && !manual)\n    tryOnMounted(load);\n  if (!manual)\n    tryOnScopeDispose(unload);\n  return {\n    id,\n    css: cssRef,\n    unload,\n    load,\n    isLoaded: readonly(isLoaded)\n  };\n}\n\nfunction useSwipe(target, options = {}) {\n  const {\n    threshold = 50,\n    onSwipe,\n    onSwipeEnd,\n    onSwipeStart,\n    passive = true,\n    window = defaultWindow\n  } = options;\n  const coordsStart = reactive({ x: 0, y: 0 });\n  const coordsEnd = reactive({ x: 0, y: 0 });\n  const diffX = computed(() => coordsStart.x - coordsEnd.x);\n  const diffY = computed(() => coordsStart.y - coordsEnd.y);\n  const { max, abs } = Math;\n  const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n  const isSwiping = ref(false);\n  const direction = computed(() => {\n    if (!isThresholdExceeded.value)\n      return \"none\";\n    if (abs(diffX.value) > abs(diffY.value)) {\n      return diffX.value > 0 ? \"left\" : \"right\";\n    } else {\n      return diffY.value > 0 ? \"up\" : \"down\";\n    }\n  });\n  const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n  const updateCoordsStart = (x, y) => {\n    coordsStart.x = x;\n    coordsStart.y = y;\n  };\n  const updateCoordsEnd = (x, y) => {\n    coordsEnd.x = x;\n    coordsEnd.y = y;\n  };\n  let listenerOptions;\n  const isPassiveEventSupported = checkPassiveEventSupport(window == null ? void 0 : window.document);\n  if (!passive)\n    listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true };\n  else\n    listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false };\n  const onTouchEnd = (e) => {\n    if (isSwiping.value)\n      onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n    isSwiping.value = false;\n  };\n  const stops = [\n    useEventListener(target, \"touchstart\", (e) => {\n      if (e.touches.length !== 1)\n        return;\n      if (listenerOptions.capture && !listenerOptions.passive)\n        e.preventDefault();\n      const [x, y] = getTouchEventCoords(e);\n      updateCoordsStart(x, y);\n      updateCoordsEnd(x, y);\n      onSwipeStart == null ? void 0 : onSwipeStart(e);\n    }, listenerOptions),\n    useEventListener(target, \"touchmove\", (e) => {\n      if (e.touches.length !== 1)\n        return;\n      const [x, y] = getTouchEventCoords(e);\n      updateCoordsEnd(x, y);\n      if (!isSwiping.value && isThresholdExceeded.value)\n        isSwiping.value = true;\n      if (isSwiping.value)\n        onSwipe == null ? void 0 : onSwipe(e);\n    }, listenerOptions),\n    useEventListener(target, [\"touchend\", \"touchcancel\"], onTouchEnd, listenerOptions)\n  ];\n  const stop = () => stops.forEach((s) => s());\n  return {\n    isPassiveEventSupported,\n    isSwiping,\n    direction,\n    coordsStart,\n    coordsEnd,\n    lengthX: diffX,\n    lengthY: diffY,\n    stop\n  };\n}\nfunction checkPassiveEventSupport(document) {\n  if (!document)\n    return false;\n  let supportsPassive = false;\n  const optionsBlock = {\n    get passive() {\n      supportsPassive = true;\n      return false;\n    }\n  };\n  document.addEventListener(\"x\", noop, optionsBlock);\n  document.removeEventListener(\"x\", noop);\n  return supportsPassive;\n}\n\nfunction useTemplateRefsList() {\n  const refs = ref([]);\n  refs.value.set = (el) => {\n    if (el)\n      refs.value.push(el);\n  };\n  onBeforeUpdate(() => {\n    refs.value.length = 0;\n  });\n  return refs;\n}\n\nfunction useTextDirection(options = {}) {\n  const {\n    document = defaultDocument,\n    selector = \"html\",\n    observe = false,\n    initialValue = \"ltr\"\n  } = options;\n  function getValue() {\n    var _a, _b;\n    return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute(\"dir\")) != null ? _b : initialValue;\n  }\n  const dir = ref(getValue());\n  tryOnMounted(() => dir.value = getValue());\n  if (observe && document) {\n    useMutationObserver(\n      document.querySelector(selector),\n      () => dir.value = getValue(),\n      { attributes: true }\n    );\n  }\n  return computed({\n    get() {\n      return dir.value;\n    },\n    set(v) {\n      var _a, _b;\n      dir.value = v;\n      if (!document)\n        return;\n      if (dir.value)\n        (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute(\"dir\", dir.value);\n      else\n        (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute(\"dir\");\n    }\n  });\n}\n\nfunction getRangesFromSelection(selection) {\n  var _a;\n  const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n  return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i));\n}\nfunction useTextSelection(options = {}) {\n  const {\n    window = defaultWindow\n  } = options;\n  const selection = ref(null);\n  const text = computed(() => {\n    var _a, _b;\n    return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n  });\n  const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n  const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n  function onSelectionChange() {\n    selection.value = null;\n    if (window)\n      selection.value = window.getSelection();\n  }\n  if (window)\n    useEventListener(window.document, \"selectionchange\", onSelectionChange);\n  return {\n    text,\n    rects,\n    ranges,\n    selection\n  };\n}\n\nfunction useTextareaAutosize(options) {\n  const textarea = ref(options == null ? void 0 : options.element);\n  const input = ref(options == null ? void 0 : options.input);\n  const textareaScrollHeight = ref(1);\n  function triggerResize() {\n    var _a, _b;\n    if (!textarea.value)\n      return;\n    let height = \"\";\n    textarea.value.style.height = \"1px\";\n    textareaScrollHeight.value = (_a = textarea.value) == null ? void 0 : _a.scrollHeight;\n    if (options == null ? void 0 : options.styleTarget)\n      toValue(options.styleTarget).style.height = `${textareaScrollHeight.value}px`;\n    else\n      height = `${textareaScrollHeight.value}px`;\n    textarea.value.style.height = height;\n    (_b = options == null ? void 0 : options.onResize) == null ? void 0 : _b.call(options);\n  }\n  watch([input, textarea], () => nextTick(triggerResize), { immediate: true });\n  useResizeObserver(textarea, () => triggerResize());\n  if (options == null ? void 0 : options.watch)\n    watch(options.watch, triggerResize, { immediate: true, deep: true });\n  return {\n    textarea,\n    input,\n    triggerResize\n  };\n}\n\nfunction useThrottledRefHistory(source, options = {}) {\n  const { throttle = 200, trailing = true } = options;\n  const filter = throttleFilter(throttle, trailing);\n  const history = useRefHistory(source, { ...options, eventFilter: filter });\n  return {\n    ...history\n  };\n}\n\nconst DEFAULT_UNITS = [\n  { max: 6e4, value: 1e3, name: \"second\" },\n  { max: 276e4, value: 6e4, name: \"minute\" },\n  { max: 72e6, value: 36e5, name: \"hour\" },\n  { max: 5184e5, value: 864e5, name: \"day\" },\n  { max: 24192e5, value: 6048e5, name: \"week\" },\n  { max: 28512e6, value: 2592e6, name: \"month\" },\n  { max: Number.POSITIVE_INFINITY, value: 31536e6, name: \"year\" }\n];\nconst DEFAULT_MESSAGES = {\n  justNow: \"just now\",\n  past: (n) => n.match(/\\d/) ? `${n} ago` : n,\n  future: (n) => n.match(/\\d/) ? `in ${n}` : n,\n  month: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n  year: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n  day: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n  week: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n  hour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n  minute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n  second: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n  invalid: \"\"\n};\nfunction DEFAULT_FORMATTER(date) {\n  return date.toISOString().slice(0, 10);\n}\nfunction useTimeAgo(time, options = {}) {\n  const {\n    controls: exposeControls = false,\n    updateInterval = 3e4\n  } = options;\n  const { now, ...controls } = useNow({ interval: updateInterval, controls: true });\n  const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now)));\n  if (exposeControls) {\n    return {\n      timeAgo,\n      ...controls\n    };\n  } else {\n    return timeAgo;\n  }\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n  var _a;\n  const {\n    max,\n    messages = DEFAULT_MESSAGES,\n    fullDateFormatter = DEFAULT_FORMATTER,\n    units = DEFAULT_UNITS,\n    showSecond = false,\n    rounding = \"round\"\n  } = options;\n  const roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n  const diff = +now - +from;\n  const absDiff = Math.abs(diff);\n  function getValue(diff2, unit) {\n    return roundFn(Math.abs(diff2) / unit.value);\n  }\n  function format(diff2, unit) {\n    const val = getValue(diff2, unit);\n    const past = diff2 > 0;\n    const str = applyFormat(unit.name, val, past);\n    return applyFormat(past ? \"past\" : \"future\", str, past);\n  }\n  function applyFormat(name, val, isPast) {\n    const formatter = messages[name];\n    if (typeof formatter === \"function\")\n      return formatter(val, isPast);\n    return formatter.replace(\"{0}\", val.toString());\n  }\n  if (absDiff < 6e4 && !showSecond)\n    return messages.justNow;\n  if (typeof max === \"number\" && absDiff > max)\n    return fullDateFormatter(new Date(from));\n  if (typeof max === \"string\") {\n    const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max;\n    if (unitMax && absDiff > unitMax)\n      return fullDateFormatter(new Date(from));\n  }\n  for (const [idx, unit] of units.entries()) {\n    const val = getValue(diff, unit);\n    if (val <= 0 && units[idx - 1])\n      return format(diff, units[idx - 1]);\n    if (absDiff < unit.max)\n      return format(diff, unit);\n  }\n  return messages.invalid;\n}\n\nfunction useTimeoutPoll(fn, interval, timeoutPollOptions) {\n  const { start } = useTimeoutFn(loop, interval, { immediate: false });\n  const isActive = ref(false);\n  async function loop() {\n    if (!isActive.value)\n      return;\n    await fn();\n    start();\n  }\n  function resume() {\n    if (!isActive.value) {\n      isActive.value = true;\n      loop();\n    }\n  }\n  function pause() {\n    isActive.value = false;\n  }\n  if (timeoutPollOptions == null ? void 0 : timeoutPollOptions.immediate)\n    resume();\n  tryOnScopeDispose(pause);\n  return {\n    isActive,\n    pause,\n    resume\n  };\n}\n\nfunction useTimestamp(options = {}) {\n  const {\n    controls: exposeControls = false,\n    offset = 0,\n    immediate = true,\n    interval = \"requestAnimationFrame\",\n    callback\n  } = options;\n  const ts = ref(timestamp() + offset);\n  const update = () => ts.value = timestamp() + offset;\n  const cb = callback ? () => {\n    update();\n    callback(ts.value);\n  } : update;\n  const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n  if (exposeControls) {\n    return {\n      timestamp: ts,\n      ...controls\n    };\n  } else {\n    return ts;\n  }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n  var _a, _b;\n  const {\n    document = defaultDocument\n  } = options;\n  const title = toRef((_a = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _a : null);\n  const isReadonly = newTitle && typeof newTitle === \"function\";\n  function format(t) {\n    if (!(\"titleTemplate\" in options))\n      return t;\n    const template = options.titleTemplate || \"%s\";\n    return typeof template === \"function\" ? template(t) : toValue(template).replace(/%s/g, t);\n  }\n  watch(\n    title,\n    (t, o) => {\n      if (t !== o && document)\n        document.title = format(typeof t === \"string\" ? t : \"\");\n    },\n    { immediate: true }\n  );\n  if (options.observe && !options.titleTemplate && document && !isReadonly) {\n    useMutationObserver(\n      (_b = document.head) == null ? void 0 : _b.querySelector(\"title\"),\n      () => {\n        if (document && document.title !== title.value)\n          title.value = format(document.title);\n      },\n      { childList: true }\n    );\n  }\n  return title;\n}\n\nconst _TransitionPresets = {\n  easeInSine: [0.12, 0, 0.39, 0],\n  easeOutSine: [0.61, 1, 0.88, 1],\n  easeInOutSine: [0.37, 0, 0.63, 1],\n  easeInQuad: [0.11, 0, 0.5, 0],\n  easeOutQuad: [0.5, 1, 0.89, 1],\n  easeInOutQuad: [0.45, 0, 0.55, 1],\n  easeInCubic: [0.32, 0, 0.67, 0],\n  easeOutCubic: [0.33, 1, 0.68, 1],\n  easeInOutCubic: [0.65, 0, 0.35, 1],\n  easeInQuart: [0.5, 0, 0.75, 0],\n  easeOutQuart: [0.25, 1, 0.5, 1],\n  easeInOutQuart: [0.76, 0, 0.24, 1],\n  easeInQuint: [0.64, 0, 0.78, 0],\n  easeOutQuint: [0.22, 1, 0.36, 1],\n  easeInOutQuint: [0.83, 0, 0.17, 1],\n  easeInExpo: [0.7, 0, 0.84, 0],\n  easeOutExpo: [0.16, 1, 0.3, 1],\n  easeInOutExpo: [0.87, 0, 0.13, 1],\n  easeInCirc: [0.55, 0, 1, 0.45],\n  easeOutCirc: [0, 0.55, 0.45, 1],\n  easeInOutCirc: [0.85, 0, 0.15, 1],\n  easeInBack: [0.36, 0, 0.66, -0.56],\n  easeOutBack: [0.34, 1.56, 0.64, 1],\n  easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nconst TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: identity }, _TransitionPresets);\nfunction createEasingFunction([p0, p1, p2, p3]) {\n  const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n  const b = (a1, a2) => 3 * a2 - 6 * a1;\n  const c = (a1) => 3 * a1;\n  const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n  const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n  const getTforX = (x) => {\n    let aGuessT = x;\n    for (let i = 0; i < 4; ++i) {\n      const currentSlope = getSlope(aGuessT, p0, p2);\n      if (currentSlope === 0)\n        return aGuessT;\n      const currentX = calcBezier(aGuessT, p0, p2) - x;\n      aGuessT -= currentX / currentSlope;\n    }\n    return aGuessT;\n  };\n  return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction lerp(a, b, alpha) {\n  return a + alpha * (b - a);\n}\nfunction toVec(t) {\n  return (typeof t === \"number\" ? [t] : t) || [];\n}\nfunction executeTransition(source, from, to, options = {}) {\n  var _a, _b;\n  const fromVal = toValue(from);\n  const toVal = toValue(to);\n  const v1 = toVec(fromVal);\n  const v2 = toVec(toVal);\n  const duration = (_a = toValue(options.duration)) != null ? _a : 1e3;\n  const startedAt = Date.now();\n  const endAt = Date.now() + duration;\n  const trans = typeof options.transition === \"function\" ? options.transition : (_b = toValue(options.transition)) != null ? _b : identity;\n  const ease = typeof trans === \"function\" ? trans : createEasingFunction(trans);\n  return new Promise((resolve) => {\n    source.value = fromVal;\n    const tick = () => {\n      var _a2;\n      if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) {\n        resolve();\n        return;\n      }\n      const now = Date.now();\n      const alpha = ease((now - startedAt) / duration);\n      const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha));\n      if (Array.isArray(source.value))\n        source.value = arr.map((n, i) => {\n          var _a3, _b2;\n          return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha);\n        });\n      else if (typeof source.value === \"number\")\n        source.value = arr[0];\n      if (now < endAt) {\n        requestAnimationFrame(tick);\n      } else {\n        source.value = toVal;\n        resolve();\n      }\n    };\n    tick();\n  });\n}\nfunction useTransition(source, options = {}) {\n  let currentId = 0;\n  const sourceVal = () => {\n    const v = toValue(source);\n    return typeof v === \"number\" ? v : v.map(toValue);\n  };\n  const outputRef = ref(sourceVal());\n  watch(sourceVal, async (to) => {\n    var _a, _b;\n    if (toValue(options.disabled))\n      return;\n    const id = ++currentId;\n    if (options.delay)\n      await promiseTimeout(toValue(options.delay));\n    if (id !== currentId)\n      return;\n    const toVal = Array.isArray(to) ? to.map(toValue) : toValue(to);\n    (_a = options.onStarted) == null ? void 0 : _a.call(options);\n    await executeTransition(outputRef, outputRef.value, toVal, {\n      ...options,\n      abort: () => {\n        var _a2;\n        return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options));\n      }\n    });\n    (_b = options.onFinished) == null ? void 0 : _b.call(options);\n  }, { deep: true });\n  watch(() => toValue(options.disabled), (disabled) => {\n    if (disabled) {\n      currentId++;\n      outputRef.value = sourceVal();\n    }\n  });\n  tryOnScopeDispose(() => {\n    currentId++;\n  });\n  return computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value);\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n  const {\n    initialValue = {},\n    removeNullishValues = true,\n    removeFalsyValues = false,\n    write: enableWrite = true,\n    window = defaultWindow\n  } = options;\n  if (!window)\n    return reactive(initialValue);\n  const state = reactive({});\n  function getRawParams() {\n    if (mode === \"history\") {\n      return window.location.search || \"\";\n    } else if (mode === \"hash\") {\n      const hash = window.location.hash || \"\";\n      const index = hash.indexOf(\"?\");\n      return index > 0 ? hash.slice(index) : \"\";\n    } else {\n      return (window.location.hash || \"\").replace(/^#/, \"\");\n    }\n  }\n  function constructQuery(params) {\n    const stringified = params.toString();\n    if (mode === \"history\")\n      return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n    if (mode === \"hash-params\")\n      return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n    const hash = window.location.hash || \"#\";\n    const index = hash.indexOf(\"?\");\n    if (index > 0)\n      return `${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n    return `${hash}${stringified ? `?${stringified}` : \"\"}`;\n  }\n  function read() {\n    return new URLSearchParams(getRawParams());\n  }\n  function updateState(params) {\n    const unusedKeys = new Set(Object.keys(state));\n    for (const key of params.keys()) {\n      const paramsForKey = params.getAll(key);\n      state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n      unusedKeys.delete(key);\n    }\n    Array.from(unusedKeys).forEach((key) => delete state[key]);\n  }\n  const { pause, resume } = pausableWatch(\n    state,\n    () => {\n      const params = new URLSearchParams(\"\");\n      Object.keys(state).forEach((key) => {\n        const mapEntry = state[key];\n        if (Array.isArray(mapEntry))\n          mapEntry.forEach((value) => params.append(key, value));\n        else if (removeNullishValues && mapEntry == null)\n          params.delete(key);\n        else if (removeFalsyValues && !mapEntry)\n          params.delete(key);\n        else\n          params.set(key, mapEntry);\n      });\n      write(params);\n    },\n    { deep: true }\n  );\n  function write(params, shouldUpdate) {\n    pause();\n    if (shouldUpdate)\n      updateState(params);\n    window.history.replaceState(\n      window.history.state,\n      window.document.title,\n      window.location.pathname + constructQuery(params)\n    );\n    resume();\n  }\n  function onChanged() {\n    if (!enableWrite)\n      return;\n    write(read(), true);\n  }\n  useEventListener(window, \"popstate\", onChanged, false);\n  if (mode !== \"history\")\n    useEventListener(window, \"hashchange\", onChanged, false);\n  const initial = read();\n  if (initial.keys().next().value)\n    updateState(initial);\n  else\n    Object.assign(state, initialValue);\n  return state;\n}\n\nfunction useUserMedia(options = {}) {\n  var _a, _b;\n  const enabled = ref((_a = options.enabled) != null ? _a : false);\n  const autoSwitch = ref((_b = options.autoSwitch) != null ? _b : true);\n  const constraints = ref(options.constraints);\n  const { navigator = defaultNavigator } = options;\n  const isSupported = useSupported(() => {\n    var _a2;\n    return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia;\n  });\n  const stream = shallowRef();\n  function getDeviceOptions(type) {\n    switch (type) {\n      case \"video\": {\n        if (constraints.value)\n          return constraints.value.video || false;\n        break;\n      }\n      case \"audio\": {\n        if (constraints.value)\n          return constraints.value.audio || false;\n        break;\n      }\n    }\n  }\n  async function _start() {\n    if (!isSupported.value || stream.value)\n      return;\n    stream.value = await navigator.mediaDevices.getUserMedia({\n      video: getDeviceOptions(\"video\"),\n      audio: getDeviceOptions(\"audio\")\n    });\n    return stream.value;\n  }\n  function _stop() {\n    var _a2;\n    (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n    stream.value = void 0;\n  }\n  function stop() {\n    _stop();\n    enabled.value = false;\n  }\n  async function start() {\n    await _start();\n    if (stream.value)\n      enabled.value = true;\n    return stream.value;\n  }\n  async function restart() {\n    _stop();\n    return await start();\n  }\n  watch(\n    enabled,\n    (v) => {\n      if (v)\n        _start();\n      else\n        _stop();\n    },\n    { immediate: true }\n  );\n  watch(\n    constraints,\n    () => {\n      if (autoSwitch.value && stream.value)\n        restart();\n    },\n    { immediate: true }\n  );\n  return {\n    isSupported,\n    stream,\n    start,\n    stop,\n    restart,\n    constraints,\n    enabled,\n    autoSwitch\n  };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n  var _a, _b, _c, _d, _e;\n  const {\n    clone = false,\n    passive = false,\n    eventName,\n    deep = false,\n    defaultValue,\n    shouldEmit\n  } = options;\n  const vm = getCurrentInstance();\n  const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n  let event = eventName;\n  if (!key) {\n    if (isVue2) {\n      const modelOptions = (_e = (_d = vm == null ? void 0 : vm.proxy) == null ? void 0 : _d.$options) == null ? void 0 : _e.model;\n      key = (modelOptions == null ? void 0 : modelOptions.value) || \"value\";\n      if (!eventName)\n        event = (modelOptions == null ? void 0 : modelOptions.event) || \"input\";\n    } else {\n      key = \"modelValue\";\n    }\n  }\n  event = event || `update:${key.toString()}`;\n  const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n  const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n  const triggerEmit = (value) => {\n    if (shouldEmit) {\n      if (shouldEmit(value))\n        _emit(event, value);\n    } else {\n      _emit(event, value);\n    }\n  };\n  if (passive) {\n    const initialValue = getValue();\n    const proxy = ref(initialValue);\n    let isUpdating = false;\n    watch(\n      () => props[key],\n      (v) => {\n        if (!isUpdating) {\n          isUpdating = true;\n          proxy.value = cloneFn(v);\n          nextTick(() => isUpdating = false);\n        }\n      }\n    );\n    watch(\n      proxy,\n      (v) => {\n        if (!isUpdating && (v !== props[key] || deep))\n          triggerEmit(v);\n      },\n      { deep }\n    );\n    return proxy;\n  } else {\n    return computed({\n      get() {\n        return getValue();\n      },\n      set(value) {\n        triggerEmit(value);\n      }\n    });\n  }\n}\n\nfunction useVModels(props, emit, options = {}) {\n  const ret = {};\n  for (const key in props) {\n    ret[key] = useVModel(\n      props,\n      key,\n      emit,\n      options\n    );\n  }\n  return ret;\n}\n\nfunction useVibrate(options) {\n  const {\n    pattern = [],\n    interval = 0,\n    navigator = defaultNavigator\n  } = options || {};\n  const isSupported = useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n  const patternRef = toRef(pattern);\n  let intervalControls;\n  const vibrate = (pattern2 = patternRef.value) => {\n    if (isSupported.value)\n      navigator.vibrate(pattern2);\n  };\n  const stop = () => {\n    if (isSupported.value)\n      navigator.vibrate(0);\n    intervalControls == null ? void 0 : intervalControls.pause();\n  };\n  if (interval > 0) {\n    intervalControls = useIntervalFn(\n      vibrate,\n      interval,\n      {\n        immediate: false,\n        immediateCallback: false\n      }\n    );\n  }\n  return {\n    isSupported,\n    pattern,\n    intervalControls,\n    vibrate,\n    stop\n  };\n}\n\nfunction useVirtualList(list, options) {\n  const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n  return {\n    list: currentList,\n    scrollTo,\n    containerProps: {\n      ref: containerRef,\n      onScroll: () => {\n        calculateRange();\n      },\n      style: containerStyle\n    },\n    wrapperProps\n  };\n}\nfunction useVirtualListResources(list) {\n  const containerRef = ref(null);\n  const size = useElementSize(containerRef);\n  const currentList = ref([]);\n  const source = shallowRef(list);\n  const state = ref({ start: 0, end: 10 });\n  return { state, source, currentList, size, containerRef };\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n  return (containerSize) => {\n    if (typeof itemSize === \"number\")\n      return Math.ceil(containerSize / itemSize);\n    const { start = 0 } = state.value;\n    let sum = 0;\n    let capacity = 0;\n    for (let i = start; i < source.value.length; i++) {\n      const size = itemSize(i);\n      sum += size;\n      capacity = i;\n      if (sum > containerSize)\n        break;\n    }\n    return capacity - start;\n  };\n}\nfunction createGetOffset(source, itemSize) {\n  return (scrollDirection) => {\n    if (typeof itemSize === \"number\")\n      return Math.floor(scrollDirection / itemSize) + 1;\n    let sum = 0;\n    let offset = 0;\n    for (let i = 0; i < source.value.length; i++) {\n      const size = itemSize(i);\n      sum += size;\n      if (sum >= scrollDirection) {\n        offset = i;\n        break;\n      }\n    }\n    return offset + 1;\n  };\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n  return () => {\n    const element = containerRef.value;\n    if (element) {\n      const offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n      const viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n      const from = offset - overscan;\n      const to = offset + viewCapacity + overscan;\n      state.value = {\n        start: from < 0 ? 0 : from,\n        end: to > source.value.length ? source.value.length : to\n      };\n      currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n        data: ele,\n        index: index + state.value.start\n      }));\n    }\n  };\n}\nfunction createGetDistance(itemSize, source) {\n  return (index) => {\n    if (typeof itemSize === \"number\") {\n      const size2 = index * itemSize;\n      return size2;\n    }\n    const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n    return size;\n  };\n}\nfunction useWatchForSizes(size, list, calculateRange) {\n  watch([size.width, size.height, list], () => {\n    calculateRange();\n  });\n}\nfunction createComputedTotalSize(itemSize, source) {\n  return computed(() => {\n    if (typeof itemSize === \"number\")\n      return source.value.length * itemSize;\n    return source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n  });\n}\nconst scrollToDictionaryForElementScrollKey = {\n  horizontal: \"scrollLeft\",\n  vertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n  return (index) => {\n    if (containerRef.value) {\n      containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n      calculateRange();\n    }\n  };\n}\nfunction useHorizontalVirtualList(options, list) {\n  const resources = useVirtualListResources(list);\n  const { state, source, currentList, size, containerRef } = resources;\n  const containerStyle = { overflowX: \"auto\" };\n  const { itemWidth, overscan = 5 } = options;\n  const getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n  const getOffset = createGetOffset(source, itemWidth);\n  const calculateRange = createCalculateRange(\"horizontal\", overscan, getOffset, getViewCapacity, resources);\n  const getDistanceLeft = createGetDistance(itemWidth, source);\n  const offsetLeft = computed(() => getDistanceLeft(state.value.start));\n  const totalWidth = createComputedTotalSize(itemWidth, source);\n  useWatchForSizes(size, list, calculateRange);\n  const scrollTo = createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef);\n  const wrapperProps = computed(() => {\n    return {\n      style: {\n        height: \"100%\",\n        width: `${totalWidth.value - offsetLeft.value}px`,\n        marginLeft: `${offsetLeft.value}px`,\n        display: \"flex\"\n      }\n    };\n  });\n  return {\n    scrollTo,\n    calculateRange,\n    wrapperProps,\n    containerStyle,\n    currentList,\n    containerRef\n  };\n}\nfunction useVerticalVirtualList(options, list) {\n  const resources = useVirtualListResources(list);\n  const { state, source, currentList, size, containerRef } = resources;\n  const containerStyle = { overflowY: \"auto\" };\n  const { itemHeight, overscan = 5 } = options;\n  const getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n  const getOffset = createGetOffset(source, itemHeight);\n  const calculateRange = createCalculateRange(\"vertical\", overscan, getOffset, getViewCapacity, resources);\n  const getDistanceTop = createGetDistance(itemHeight, source);\n  const offsetTop = computed(() => getDistanceTop(state.value.start));\n  const totalHeight = createComputedTotalSize(itemHeight, source);\n  useWatchForSizes(size, list, calculateRange);\n  const scrollTo = createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef);\n  const wrapperProps = computed(() => {\n    return {\n      style: {\n        width: \"100%\",\n        height: `${totalHeight.value - offsetTop.value}px`,\n        marginTop: `${offsetTop.value}px`\n      }\n    };\n  });\n  return {\n    calculateRange,\n    scrollTo,\n    containerStyle,\n    wrapperProps,\n    currentList,\n    containerRef\n  };\n}\n\nfunction useWakeLock(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    document = defaultDocument\n  } = options;\n  let wakeLock;\n  const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n  const isActive = ref(false);\n  async function onVisibilityChange() {\n    if (!isSupported.value || !wakeLock)\n      return;\n    if (document && document.visibilityState === \"visible\")\n      wakeLock = await navigator.wakeLock.request(\"screen\");\n    isActive.value = !wakeLock.released;\n  }\n  if (document)\n    useEventListener(document, \"visibilitychange\", onVisibilityChange, { passive: true });\n  async function request(type) {\n    if (!isSupported.value)\n      return;\n    wakeLock = await navigator.wakeLock.request(type);\n    isActive.value = !wakeLock.released;\n  }\n  async function release() {\n    if (!isSupported.value || !wakeLock)\n      return;\n    await wakeLock.release();\n    isActive.value = !wakeLock.released;\n    wakeLock = null;\n  }\n  return {\n    isSupported,\n    isActive,\n    request,\n    release\n  };\n}\n\nfunction useWebNotification(options = {}) {\n  const {\n    window = defaultWindow,\n    requestPermissions: _requestForPermissions = true\n  } = options;\n  const defaultWebNotificationOptions = options;\n  const isSupported = useSupported(() => !!window && \"Notification\" in window);\n  const permissionGranted = ref(isSupported.value && \"permission\" in Notification && Notification.permission === \"granted\");\n  const notification = ref(null);\n  const ensurePermissions = async () => {\n    if (!isSupported.value)\n      return;\n    if (!permissionGranted.value && Notification.permission !== \"denied\") {\n      const result = await Notification.requestPermission();\n      if (result === \"granted\")\n        permissionGranted.value = true;\n    }\n    return permissionGranted.value;\n  };\n  const { on: onClick, trigger: clickTrigger } = createEventHook();\n  const { on: onShow, trigger: showTrigger } = createEventHook();\n  const { on: onError, trigger: errorTrigger } = createEventHook();\n  const { on: onClose, trigger: closeTrigger } = createEventHook();\n  const show = async (overrides) => {\n    if (!isSupported.value || !permissionGranted.value)\n      return;\n    const options2 = Object.assign({}, defaultWebNotificationOptions, overrides);\n    notification.value = new Notification(options2.title || \"\", options2);\n    notification.value.onclick = clickTrigger;\n    notification.value.onshow = showTrigger;\n    notification.value.onerror = errorTrigger;\n    notification.value.onclose = closeTrigger;\n    return notification.value;\n  };\n  const close = () => {\n    if (notification.value)\n      notification.value.close();\n    notification.value = null;\n  };\n  if (_requestForPermissions)\n    tryOnMounted(ensurePermissions);\n  tryOnScopeDispose(close);\n  if (isSupported.value && window) {\n    const document = window.document;\n    useEventListener(document, \"visibilitychange\", (e) => {\n      e.preventDefault();\n      if (document.visibilityState === \"visible\") {\n        close();\n      }\n    });\n  }\n  return {\n    isSupported,\n    notification,\n    ensurePermissions,\n    permissionGranted,\n    show,\n    close,\n    onClick,\n    onShow,\n    onError,\n    onClose\n  };\n}\n\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n  if (options === true)\n    return {};\n  return options;\n}\nfunction useWebSocket(url, options = {}) {\n  const {\n    onConnected,\n    onDisconnected,\n    onError,\n    onMessage,\n    immediate = true,\n    autoClose = true,\n    protocols = []\n  } = options;\n  const data = ref(null);\n  const status = ref(\"CLOSED\");\n  const wsRef = ref();\n  const urlRef = toRef(url);\n  let heartbeatPause;\n  let heartbeatResume;\n  let explicitlyClosed = false;\n  let retried = 0;\n  let bufferedData = [];\n  let pongTimeoutWait;\n  const _sendBuffer = () => {\n    if (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n      for (const buffer of bufferedData)\n        wsRef.value.send(buffer);\n      bufferedData = [];\n    }\n  };\n  const resetHeartbeat = () => {\n    clearTimeout(pongTimeoutWait);\n    pongTimeoutWait = void 0;\n  };\n  const close = (code = 1e3, reason) => {\n    if (!isClient || !wsRef.value)\n      return;\n    explicitlyClosed = true;\n    resetHeartbeat();\n    heartbeatPause == null ? void 0 : heartbeatPause();\n    wsRef.value.close(code, reason);\n  };\n  const send = (data2, useBuffer = true) => {\n    if (!wsRef.value || status.value !== \"OPEN\") {\n      if (useBuffer)\n        bufferedData.push(data2);\n      return false;\n    }\n    _sendBuffer();\n    wsRef.value.send(data2);\n    return true;\n  };\n  const _init = () => {\n    if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n      return;\n    const ws = new WebSocket(urlRef.value, protocols);\n    wsRef.value = ws;\n    status.value = \"CONNECTING\";\n    ws.onopen = () => {\n      status.value = \"OPEN\";\n      onConnected == null ? void 0 : onConnected(ws);\n      heartbeatResume == null ? void 0 : heartbeatResume();\n      _sendBuffer();\n    };\n    ws.onclose = (ev) => {\n      status.value = \"CLOSED\";\n      wsRef.value = void 0;\n      onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n      if (!explicitlyClosed && options.autoReconnect) {\n        const {\n          retries = -1,\n          delay = 1e3,\n          onFailed\n        } = resolveNestedOptions(options.autoReconnect);\n        retried += 1;\n        if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n          setTimeout(_init, delay);\n        else if (typeof retries === \"function\" && retries())\n          setTimeout(_init, delay);\n        else\n          onFailed == null ? void 0 : onFailed();\n      }\n    };\n    ws.onerror = (e) => {\n      onError == null ? void 0 : onError(ws, e);\n    };\n    ws.onmessage = (e) => {\n      if (options.heartbeat) {\n        resetHeartbeat();\n        const {\n          message = DEFAULT_PING_MESSAGE\n        } = resolveNestedOptions(options.heartbeat);\n        if (e.data === message)\n          return;\n      }\n      data.value = e.data;\n      onMessage == null ? void 0 : onMessage(ws, e);\n    };\n  };\n  if (options.heartbeat) {\n    const {\n      message = DEFAULT_PING_MESSAGE,\n      interval = 1e3,\n      pongTimeout = 1e3\n    } = resolveNestedOptions(options.heartbeat);\n    const { pause, resume } = useIntervalFn(\n      () => {\n        send(message, false);\n        if (pongTimeoutWait != null)\n          return;\n        pongTimeoutWait = setTimeout(() => {\n          close();\n          explicitlyClosed = false;\n        }, pongTimeout);\n      },\n      interval,\n      { immediate: false }\n    );\n    heartbeatPause = pause;\n    heartbeatResume = resume;\n  }\n  if (autoClose) {\n    if (isClient)\n      useEventListener(\"beforeunload\", () => close());\n    tryOnScopeDispose(close);\n  }\n  const open = () => {\n    if (!isClient && !isWorker)\n      return;\n    close();\n    explicitlyClosed = false;\n    retried = 0;\n    _init();\n  };\n  if (immediate)\n    watch(urlRef, open, { immediate: true });\n  return {\n    data,\n    status,\n    close,\n    send,\n    open,\n    ws: wsRef\n  };\n}\n\nfunction useWebWorker(arg0, workerOptions, options) {\n  const {\n    window = defaultWindow\n  } = options != null ? options : {};\n  const data = ref(null);\n  const worker = shallowRef();\n  const post = (...args) => {\n    if (!worker.value)\n      return;\n    worker.value.postMessage(...args);\n  };\n  const terminate = function terminate2() {\n    if (!worker.value)\n      return;\n    worker.value.terminate();\n  };\n  if (window) {\n    if (typeof arg0 === \"string\")\n      worker.value = new Worker(arg0, workerOptions);\n    else if (typeof arg0 === \"function\")\n      worker.value = arg0();\n    else\n      worker.value = arg0;\n    worker.value.onmessage = (e) => {\n      data.value = e.data;\n    };\n    tryOnScopeDispose(() => {\n      if (worker.value)\n        worker.value.terminate();\n    });\n  }\n  return {\n    data,\n    post,\n    terminate,\n    worker\n  };\n}\n\nfunction jobRunner(userFunc) {\n  return (e) => {\n    const userFuncArgs = e.data[0];\n    return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n      postMessage([\"SUCCESS\", result]);\n    }).catch((error) => {\n      postMessage([\"ERROR\", error]);\n    });\n  };\n}\n\nfunction depsParser(deps) {\n  if (deps.length === 0)\n    return \"\";\n  const depsString = deps.map((dep) => `'${dep}'`).toString();\n  return `importScripts(${depsString})`;\n}\n\nfunction createWorkerBlobUrl(fn, deps) {\n  const blobCode = `${depsParser(deps)}; onmessage=(${jobRunner})(${fn})`;\n  const blob = new Blob([blobCode], { type: \"text/javascript\" });\n  const url = URL.createObjectURL(blob);\n  return url;\n}\n\nfunction useWebWorkerFn(fn, options = {}) {\n  const {\n    dependencies = [],\n    timeout,\n    window = defaultWindow\n  } = options;\n  const worker = ref();\n  const workerStatus = ref(\"PENDING\");\n  const promise = ref({});\n  const timeoutId = ref();\n  const workerTerminate = (status = \"PENDING\") => {\n    if (worker.value && worker.value._url && window) {\n      worker.value.terminate();\n      URL.revokeObjectURL(worker.value._url);\n      promise.value = {};\n      worker.value = void 0;\n      window.clearTimeout(timeoutId.value);\n      workerStatus.value = status;\n    }\n  };\n  workerTerminate();\n  tryOnScopeDispose(workerTerminate);\n  const generateWorker = () => {\n    const blobUrl = createWorkerBlobUrl(fn, dependencies);\n    const newWorker = new Worker(blobUrl);\n    newWorker._url = blobUrl;\n    newWorker.onmessage = (e) => {\n      const { resolve = () => {\n      }, reject = () => {\n      } } = promise.value;\n      const [status, result] = e.data;\n      switch (status) {\n        case \"SUCCESS\":\n          resolve(result);\n          workerTerminate(status);\n          break;\n        default:\n          reject(result);\n          workerTerminate(\"ERROR\");\n          break;\n      }\n    };\n    newWorker.onerror = (e) => {\n      const { reject = () => {\n      } } = promise.value;\n      e.preventDefault();\n      reject(e);\n      workerTerminate(\"ERROR\");\n    };\n    if (timeout) {\n      timeoutId.value = setTimeout(\n        () => workerTerminate(\"TIMEOUT_EXPIRED\"),\n        timeout\n      );\n    }\n    return newWorker;\n  };\n  const callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n    promise.value = {\n      resolve,\n      reject\n    };\n    worker.value && worker.value.postMessage([[...fnArgs]]);\n    workerStatus.value = \"RUNNING\";\n  });\n  const workerFn = (...fnArgs) => {\n    if (workerStatus.value === \"RUNNING\") {\n      console.error(\n        \"[useWebWorkerFn] You can only run one instance of the worker at a time.\"\n      );\n      return Promise.reject();\n    }\n    worker.value = generateWorker();\n    return callWorker(...fnArgs);\n  };\n  return {\n    workerFn,\n    workerStatus,\n    workerTerminate\n  };\n}\n\nfunction useWindowFocus(options = {}) {\n  const { window = defaultWindow } = options;\n  if (!window)\n    return ref(false);\n  const focused = ref(window.document.hasFocus());\n  useEventListener(window, \"blur\", () => {\n    focused.value = false;\n  });\n  useEventListener(window, \"focus\", () => {\n    focused.value = true;\n  });\n  return focused;\n}\n\nfunction useWindowScroll(options = {}) {\n  const { window = defaultWindow, behavior = \"auto\" } = options;\n  if (!window) {\n    return {\n      x: ref(0),\n      y: ref(0)\n    };\n  }\n  const internalX = ref(window.scrollX);\n  const internalY = ref(window.scrollY);\n  const x = computed({\n    get() {\n      return internalX.value;\n    },\n    set(x2) {\n      scrollTo({ left: x2, behavior });\n    }\n  });\n  const y = computed({\n    get() {\n      return internalY.value;\n    },\n    set(y2) {\n      scrollTo({ top: y2, behavior });\n    }\n  });\n  useEventListener(\n    window,\n    \"scroll\",\n    () => {\n      internalX.value = window.scrollX;\n      internalY.value = window.scrollY;\n    },\n    {\n      capture: false,\n      passive: true\n    }\n  );\n  return { x, y };\n}\n\nfunction useWindowSize(options = {}) {\n  const {\n    window = defaultWindow,\n    initialWidth = Number.POSITIVE_INFINITY,\n    initialHeight = Number.POSITIVE_INFINITY,\n    listenOrientation = true,\n    includeScrollbar = true\n  } = options;\n  const width = ref(initialWidth);\n  const height = ref(initialHeight);\n  const update = () => {\n    if (window) {\n      if (includeScrollbar) {\n        width.value = window.innerWidth;\n        height.value = window.innerHeight;\n      } else {\n        width.value = window.document.documentElement.clientWidth;\n        height.value = window.document.documentElement.clientHeight;\n      }\n    }\n  };\n  update();\n  tryOnMounted(update);\n  useEventListener(\"resize\", update, { passive: true });\n  if (listenOrientation) {\n    const matches = useMediaQuery(\"(orientation: portrait)\");\n    watch(matches, () => update());\n  }\n  return { width, height };\n}\n\nexport { DefaultMagicKeysAliasMap, StorageSerializers, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsMasterCss, breakpointsPrimeFlex, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, setSSRHandler, templateRef, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useClipboardItems, useCloned, useColorMode, useConfirmDialog, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, useParentElement, usePerformanceObserver, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePrevious, useRafFn, useRefHistory, useResizeObserver, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n","import { shallowRef, watchEffect, readonly, ref, watch, customRef, getCurrentScope, onScopeDispose, effectScope, getCurrentInstance, provide, inject, isVue3, version, isRef, unref, computed, reactive, toRefs as toRefs$1, toRef as toRef$1, isVue2, set as set$1, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue-demi';\n\nfunction computedEager(fn, options) {\n  var _a;\n  const result = shallowRef();\n  watchEffect(() => {\n    result.value = fn();\n  }, {\n    ...options,\n    flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n  });\n  return readonly(result);\n}\n\nfunction computedWithControl(source, fn) {\n  let v = void 0;\n  let track;\n  let trigger;\n  const dirty = ref(true);\n  const update = () => {\n    dirty.value = true;\n    trigger();\n  };\n  watch(source, update, { flush: \"sync\" });\n  const get = typeof fn === \"function\" ? fn : fn.get;\n  const set = typeof fn === \"function\" ? void 0 : fn.set;\n  const result = customRef((_track, _trigger) => {\n    track = _track;\n    trigger = _trigger;\n    return {\n      get() {\n        if (dirty.value) {\n          v = get();\n          dirty.value = false;\n        }\n        track();\n        return v;\n      },\n      set(v2) {\n        set == null ? void 0 : set(v2);\n      }\n    };\n  });\n  if (Object.isExtensible(result))\n    result.trigger = update;\n  return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n  if (getCurrentScope()) {\n    onScopeDispose(fn);\n    return true;\n  }\n  return false;\n}\n\nfunction createEventHook() {\n  const fns = /* @__PURE__ */ new Set();\n  const off = (fn) => {\n    fns.delete(fn);\n  };\n  const on = (fn) => {\n    fns.add(fn);\n    const offFn = () => off(fn);\n    tryOnScopeDispose(offFn);\n    return {\n      off: offFn\n    };\n  };\n  const trigger = (...args) => {\n    return Promise.all(Array.from(fns).map((fn) => fn(...args)));\n  };\n  return {\n    on,\n    off,\n    trigger\n  };\n}\n\nfunction createGlobalState(stateFactory) {\n  let initialized = false;\n  let state;\n  const scope = effectScope(true);\n  return (...args) => {\n    if (!initialized) {\n      state = scope.run(() => stateFactory(...args));\n      initialized = true;\n    }\n    return state;\n  };\n}\n\nconst localProvidedStateMap = /* @__PURE__ */ new WeakMap();\n\nconst provideLocal = (key, value) => {\n  var _a;\n  const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n  if (instance == null)\n    throw new Error(\"provideLocal must be called in setup\");\n  if (!localProvidedStateMap.has(instance))\n    localProvidedStateMap.set(instance, /* @__PURE__ */ Object.create(null));\n  const localProvidedState = localProvidedStateMap.get(instance);\n  localProvidedState[key] = value;\n  provide(key, value);\n};\n\nconst injectLocal = (...args) => {\n  var _a;\n  const key = args[0];\n  const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n  if (instance == null)\n    throw new Error(\"injectLocal must be called in setup\");\n  if (localProvidedStateMap.has(instance) && key in localProvidedStateMap.get(instance))\n    return localProvidedStateMap.get(instance)[key];\n  return inject(...args);\n};\n\nfunction createInjectionState(composable, options) {\n  const key = (options == null ? void 0 : options.injectionKey) || Symbol(composable.name || \"InjectionState\");\n  const useProvidingState = (...args) => {\n    const state = composable(...args);\n    provideLocal(key, state);\n    return state;\n  };\n  const useInjectedState = () => injectLocal(key);\n  return [useProvidingState, useInjectedState];\n}\n\nfunction createSharedComposable(composable) {\n  let subscribers = 0;\n  let state;\n  let scope;\n  const dispose = () => {\n    subscribers -= 1;\n    if (scope && subscribers <= 0) {\n      scope.stop();\n      state = void 0;\n      scope = void 0;\n    }\n  };\n  return (...args) => {\n    subscribers += 1;\n    if (!state) {\n      scope = effectScope(true);\n      state = scope.run(() => composable(...args));\n    }\n    tryOnScopeDispose(dispose);\n    return state;\n  };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n  if (!isVue3 && !version.startsWith(\"2.7.\")) {\n    if (process.env.NODE_ENV !== \"production\")\n      throw new Error(\"[VueUse] extendRef only works in Vue 2.7 or above.\");\n    return;\n  }\n  for (const [key, value] of Object.entries(extend)) {\n    if (key === \"value\")\n      continue;\n    if (isRef(value) && unwrap) {\n      Object.defineProperty(ref, key, {\n        get() {\n          return value.value;\n        },\n        set(v) {\n          value.value = v;\n        },\n        enumerable\n      });\n    } else {\n      Object.defineProperty(ref, key, { value, enumerable });\n    }\n  }\n  return ref;\n}\n\nfunction get(obj, key) {\n  if (key == null)\n    return unref(obj);\n  return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n  return unref(v) != null;\n}\n\nfunction makeDestructurable(obj, arr) {\n  if (typeof Symbol !== \"undefined\") {\n    const clone = { ...obj };\n    Object.defineProperty(clone, Symbol.iterator, {\n      enumerable: false,\n      value() {\n        let index = 0;\n        return {\n          next: () => ({\n            value: arr[index++],\n            done: index > arr.length\n          })\n        };\n      }\n    });\n    return clone;\n  } else {\n    return Object.assign([...arr], obj);\n  }\n}\n\nfunction toValue(r) {\n  return typeof r === \"function\" ? r() : unref(r);\n}\nconst resolveUnref = toValue;\n\nfunction reactify(fn, options) {\n  const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : toValue;\n  return function(...args) {\n    return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n  };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n  let keys = [];\n  let options;\n  if (Array.isArray(optionsOrKeys)) {\n    keys = optionsOrKeys;\n  } else {\n    options = optionsOrKeys;\n    const { includeOwnProperties = true } = optionsOrKeys;\n    keys.push(...Object.keys(obj));\n    if (includeOwnProperties)\n      keys.push(...Object.getOwnPropertyNames(obj));\n  }\n  return Object.fromEntries(\n    keys.map((key) => {\n      const value = obj[key];\n      return [\n        key,\n        typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n      ];\n    })\n  );\n}\n\nfunction toReactive(objectRef) {\n  if (!isRef(objectRef))\n    return reactive(objectRef);\n  const proxy = new Proxy({}, {\n    get(_, p, receiver) {\n      return unref(Reflect.get(objectRef.value, p, receiver));\n    },\n    set(_, p, value) {\n      if (isRef(objectRef.value[p]) && !isRef(value))\n        objectRef.value[p].value = value;\n      else\n        objectRef.value[p] = value;\n      return true;\n    },\n    deleteProperty(_, p) {\n      return Reflect.deleteProperty(objectRef.value, p);\n    },\n    has(_, p) {\n      return Reflect.has(objectRef.value, p);\n    },\n    ownKeys() {\n      return Object.keys(objectRef.value);\n    },\n    getOwnPropertyDescriptor() {\n      return {\n        enumerable: true,\n        configurable: true\n      };\n    }\n  });\n  return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n  return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n  const flatKeys = keys.flat();\n  const predicate = flatKeys[0];\n  return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isWorker = typeof WorkerGlobalScope !== \"undefined\" && globalThis instanceof WorkerGlobalScope;\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n  if (!condition)\n    console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n  min = Math.ceil(min);\n  max = Math.floor(max);\n  return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n  var _a, _b;\n  return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && (/iP(ad|hone|od)/.test(window.navigator.userAgent) || ((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.maxTouchPoints) > 2 && /iPad|Macintosh/.test(window == null ? void 0 : window.navigator.userAgent));\n}\n\nfunction createFilterWrapper(filter, fn) {\n  function wrapper(...args) {\n    return new Promise((resolve, reject) => {\n      Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n    });\n  }\n  return wrapper;\n}\nconst bypassFilter = (invoke) => {\n  return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n  let timer;\n  let maxTimer;\n  let lastRejector = noop;\n  const _clearTimeout = (timer2) => {\n    clearTimeout(timer2);\n    lastRejector();\n    lastRejector = noop;\n  };\n  const filter = (invoke) => {\n    const duration = toValue(ms);\n    const maxDuration = toValue(options.maxWait);\n    if (timer)\n      _clearTimeout(timer);\n    if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n      if (maxTimer) {\n        _clearTimeout(maxTimer);\n        maxTimer = null;\n      }\n      return Promise.resolve(invoke());\n    }\n    return new Promise((resolve, reject) => {\n      lastRejector = options.rejectOnCancel ? reject : resolve;\n      if (maxDuration && !maxTimer) {\n        maxTimer = setTimeout(() => {\n          if (timer)\n            _clearTimeout(timer);\n          maxTimer = null;\n          resolve(invoke());\n        }, maxDuration);\n      }\n      timer = setTimeout(() => {\n        if (maxTimer)\n          _clearTimeout(maxTimer);\n        maxTimer = null;\n        resolve(invoke());\n      }, duration);\n    });\n  };\n  return filter;\n}\nfunction throttleFilter(...args) {\n  let lastExec = 0;\n  let timer;\n  let isLeading = true;\n  let lastRejector = noop;\n  let lastValue;\n  let ms;\n  let trailing;\n  let leading;\n  let rejectOnCancel;\n  if (!isRef(args[0]) && typeof args[0] === \"object\")\n    ({ delay: ms, trailing = true, leading = true, rejectOnCancel = false } = args[0]);\n  else\n    [ms, trailing = true, leading = true, rejectOnCancel = false] = args;\n  const clear = () => {\n    if (timer) {\n      clearTimeout(timer);\n      timer = void 0;\n      lastRejector();\n      lastRejector = noop;\n    }\n  };\n  const filter = (_invoke) => {\n    const duration = toValue(ms);\n    const elapsed = Date.now() - lastExec;\n    const invoke = () => {\n      return lastValue = _invoke();\n    };\n    clear();\n    if (duration <= 0) {\n      lastExec = Date.now();\n      return invoke();\n    }\n    if (elapsed > duration && (leading || !isLeading)) {\n      lastExec = Date.now();\n      invoke();\n    } else if (trailing) {\n      lastValue = new Promise((resolve, reject) => {\n        lastRejector = rejectOnCancel ? reject : resolve;\n        timer = setTimeout(() => {\n          lastExec = Date.now();\n          isLeading = true;\n          resolve(invoke());\n          clear();\n        }, Math.max(0, duration - elapsed));\n      });\n    }\n    if (!leading && !timer)\n      timer = setTimeout(() => isLeading = true, duration);\n    isLeading = false;\n    return lastValue;\n  };\n  return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter) {\n  const isActive = ref(true);\n  function pause() {\n    isActive.value = false;\n  }\n  function resume() {\n    isActive.value = true;\n  }\n  const eventFilter = (...args) => {\n    if (isActive.value)\n      extendFilter(...args);\n  };\n  return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nconst directiveHooks = {\n  mounted: isVue3 ? \"mounted\" : \"inserted\",\n  updated: isVue3 ? \"updated\" : \"componentUpdated\",\n  unmounted: isVue3 ? \"unmounted\" : \"unbind\"\n};\n\nfunction cacheStringFunction(fn) {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (str) => {\n    const hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n}\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n  return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n  return new Promise((resolve, reject) => {\n    if (throwOnTimeout)\n      setTimeout(() => reject(reason), ms);\n    else\n      setTimeout(resolve, ms);\n  });\n}\nfunction identity(arg) {\n  return arg;\n}\nfunction createSingletonPromise(fn) {\n  let _promise;\n  function wrapper() {\n    if (!_promise)\n      _promise = fn();\n    return _promise;\n  }\n  wrapper.reset = async () => {\n    const _prev = _promise;\n    _promise = void 0;\n    if (_prev)\n      await _prev;\n  };\n  return wrapper;\n}\nfunction invoke(fn) {\n  return fn();\n}\nfunction containsProp(obj, ...props) {\n  return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n  var _a;\n  if (typeof target === \"number\")\n    return target + delta;\n  const value = ((_a = target.match(/^-?[0-9]+\\.?[0-9]*/)) == null ? void 0 : _a[0]) || \"\";\n  const unit = target.slice(value.length);\n  const result = Number.parseFloat(value) + delta;\n  if (Number.isNaN(result))\n    return target;\n  return result + unit;\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n  return keys.reduce((n, k) => {\n    if (k in obj) {\n      if (!omitUndefined || obj[k] !== void 0)\n        n[k] = obj[k];\n    }\n    return n;\n  }, {});\n}\nfunction objectOmit(obj, keys, omitUndefined = false) {\n  return Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n    return (!omitUndefined || value !== void 0) && !keys.includes(key);\n  }));\n}\nfunction objectEntries(obj) {\n  return Object.entries(obj);\n}\nfunction getLifeCycleTarget(target) {\n  return target || getCurrentInstance();\n}\n\nfunction toRef(...args) {\n  if (args.length !== 1)\n    return toRef$1(...args);\n  const r = args[0];\n  return typeof r === \"function\" ? readonly(customRef(() => ({ get: r, set: noop }))) : ref(r);\n}\nconst resolveRef = toRef;\n\nfunction reactivePick(obj, ...keys) {\n  const flatKeys = keys.flat();\n  const predicate = flatKeys[0];\n  return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n  return customRef((track, trigger) => {\n    let value = toValue(defaultValue);\n    let timer;\n    const resetAfter = () => setTimeout(() => {\n      value = toValue(defaultValue);\n      trigger();\n    }, toValue(afterMs));\n    tryOnScopeDispose(() => {\n      clearTimeout(timer);\n    });\n    return {\n      get() {\n        track();\n        return value;\n      },\n      set(newValue) {\n        value = newValue;\n        trigger();\n        clearTimeout(timer);\n        timer = resetAfter();\n      }\n    };\n  });\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n  return createFilterWrapper(\n    debounceFilter(ms, options),\n    fn\n  );\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n  const debounced = ref(value.value);\n  const updater = useDebounceFn(() => {\n    debounced.value = value.value;\n  }, ms, options);\n  watch(value, () => updater());\n  return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n  return computed({\n    get() {\n      var _a;\n      return (_a = source.value) != null ? _a : defaultValue;\n    },\n    set(value) {\n      source.value = value;\n    }\n  });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n  return createFilterWrapper(\n    throttleFilter(ms, trailing, leading, rejectOnCancel),\n    fn\n  );\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n  if (delay <= 0)\n    return value;\n  const throttled = ref(value.value);\n  const updater = useThrottleFn(() => {\n    throttled.value = value.value;\n  }, delay, trailing, leading);\n  watch(value, () => updater());\n  return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n  let source = initial;\n  let track;\n  let trigger;\n  const ref = customRef((_track, _trigger) => {\n    track = _track;\n    trigger = _trigger;\n    return {\n      get() {\n        return get();\n      },\n      set(v) {\n        set(v);\n      }\n    };\n  });\n  function get(tracking = true) {\n    if (tracking)\n      track();\n    return source;\n  }\n  function set(value, triggering = true) {\n    var _a, _b;\n    if (value === source)\n      return;\n    const old = source;\n    if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n      return;\n    source = value;\n    (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n    if (triggering)\n      trigger();\n  }\n  const untrackedGet = () => get(false);\n  const silentSet = (v) => set(v, false);\n  const peek = () => get(false);\n  const lay = (v) => set(v, false);\n  return extendRef(\n    ref,\n    {\n      get,\n      set,\n      untrackedGet,\n      silentSet,\n      peek,\n      lay\n    },\n    { enumerable: true }\n  );\n}\nconst controlledRef = refWithControl;\n\nfunction set(...args) {\n  if (args.length === 2) {\n    const [ref, value] = args;\n    ref.value = value;\n  }\n  if (args.length === 3) {\n    if (isVue2) {\n      set$1(...args);\n    } else {\n      const [target, key, value] = args;\n      target[key] = value;\n    }\n  }\n}\n\nfunction watchWithFilter(source, cb, options = {}) {\n  const {\n    eventFilter = bypassFilter,\n    ...watchOptions\n  } = options;\n  return watch(\n    source,\n    createFilterWrapper(\n      eventFilter,\n      cb\n    ),\n    watchOptions\n  );\n}\n\nfunction watchPausable(source, cb, options = {}) {\n  const {\n    eventFilter: filter,\n    ...watchOptions\n  } = options;\n  const { eventFilter, pause, resume, isActive } = pausableFilter(filter);\n  const stop = watchWithFilter(\n    source,\n    cb,\n    {\n      ...watchOptions,\n      eventFilter\n    }\n  );\n  return { stop, pause, resume, isActive };\n}\n\nfunction syncRef(left, right, ...[options]) {\n  const {\n    flush = \"sync\",\n    deep = false,\n    immediate = true,\n    direction = \"both\",\n    transform = {}\n  } = options || {};\n  const watchers = [];\n  const transformLTR = \"ltr\" in transform && transform.ltr || ((v) => v);\n  const transformRTL = \"rtl\" in transform && transform.rtl || ((v) => v);\n  if (direction === \"both\" || direction === \"ltr\") {\n    watchers.push(watchPausable(\n      left,\n      (newValue) => {\n        watchers.forEach((w) => w.pause());\n        right.value = transformLTR(newValue);\n        watchers.forEach((w) => w.resume());\n      },\n      { flush, deep, immediate }\n    ));\n  }\n  if (direction === \"both\" || direction === \"rtl\") {\n    watchers.push(watchPausable(\n      right,\n      (newValue) => {\n        watchers.forEach((w) => w.pause());\n        left.value = transformRTL(newValue);\n        watchers.forEach((w) => w.resume());\n      },\n      { flush, deep, immediate }\n    ));\n  }\n  const stop = () => {\n    watchers.forEach((w) => w.stop());\n  };\n  return stop;\n}\n\nfunction syncRefs(source, targets, options = {}) {\n  const {\n    flush = \"sync\",\n    deep = false,\n    immediate = true\n  } = options;\n  if (!Array.isArray(targets))\n    targets = [targets];\n  return watch(\n    source,\n    (newValue) => targets.forEach((target) => target.value = newValue),\n    { flush, deep, immediate }\n  );\n}\n\nfunction toRefs(objectRef, options = {}) {\n  if (!isRef(objectRef))\n    return toRefs$1(objectRef);\n  const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n  for (const key in objectRef.value) {\n    result[key] = customRef(() => ({\n      get() {\n        return objectRef.value[key];\n      },\n      set(v) {\n        var _a;\n        const replaceRef = (_a = toValue(options.replaceRef)) != null ? _a : true;\n        if (replaceRef) {\n          if (Array.isArray(objectRef.value)) {\n            const copy = [...objectRef.value];\n            copy[key] = v;\n            objectRef.value = copy;\n          } else {\n            const newObject = { ...objectRef.value, [key]: v };\n            Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n            objectRef.value = newObject;\n          }\n        } else {\n          objectRef.value[key] = v;\n        }\n      }\n    }));\n  }\n  return result;\n}\n\nfunction tryOnBeforeMount(fn, sync = true, target) {\n  const instance = getLifeCycleTarget(target);\n  if (instance)\n    onBeforeMount(fn, target);\n  else if (sync)\n    fn();\n  else\n    nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn, target) {\n  const instance = getLifeCycleTarget(target);\n  if (instance)\n    onBeforeUnmount(fn, target);\n}\n\nfunction tryOnMounted(fn, sync = true, target) {\n  const instance = getLifeCycleTarget();\n  if (instance)\n    onMounted(fn, target);\n  else if (sync)\n    fn();\n  else\n    nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn, target) {\n  const instance = getLifeCycleTarget(target);\n  if (instance)\n    onUnmounted(fn, target);\n}\n\nfunction createUntil(r, isNot = false) {\n  function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n    let stop = null;\n    const watcher = new Promise((resolve) => {\n      stop = watch(\n        r,\n        (v) => {\n          if (condition(v) !== isNot) {\n            stop == null ? void 0 : stop();\n            resolve(v);\n          }\n        },\n        {\n          flush,\n          deep,\n          immediate: true\n        }\n      );\n    });\n    const promises = [watcher];\n    if (timeout != null) {\n      promises.push(\n        promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop == null ? void 0 : stop())\n      );\n    }\n    return Promise.race(promises);\n  }\n  function toBe(value, options) {\n    if (!isRef(value))\n      return toMatch((v) => v === value, options);\n    const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n    let stop = null;\n    const watcher = new Promise((resolve) => {\n      stop = watch(\n        [r, value],\n        ([v1, v2]) => {\n          if (isNot !== (v1 === v2)) {\n            stop == null ? void 0 : stop();\n            resolve(v1);\n          }\n        },\n        {\n          flush,\n          deep,\n          immediate: true\n        }\n      );\n    });\n    const promises = [watcher];\n    if (timeout != null) {\n      promises.push(\n        promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => {\n          stop == null ? void 0 : stop();\n          return toValue(r);\n        })\n      );\n    }\n    return Promise.race(promises);\n  }\n  function toBeTruthy(options) {\n    return toMatch((v) => Boolean(v), options);\n  }\n  function toBeNull(options) {\n    return toBe(null, options);\n  }\n  function toBeUndefined(options) {\n    return toBe(void 0, options);\n  }\n  function toBeNaN(options) {\n    return toMatch(Number.isNaN, options);\n  }\n  function toContains(value, options) {\n    return toMatch((v) => {\n      const array = Array.from(v);\n      return array.includes(value) || array.includes(toValue(value));\n    }, options);\n  }\n  function changed(options) {\n    return changedTimes(1, options);\n  }\n  function changedTimes(n = 1, options) {\n    let count = -1;\n    return toMatch(() => {\n      count += 1;\n      return count >= n;\n    }, options);\n  }\n  if (Array.isArray(toValue(r))) {\n    const instance = {\n      toMatch,\n      toContains,\n      changed,\n      changedTimes,\n      get not() {\n        return createUntil(r, !isNot);\n      }\n    };\n    return instance;\n  } else {\n    const instance = {\n      toMatch,\n      toBe,\n      toBeTruthy,\n      toBeNull,\n      toBeNaN,\n      toBeUndefined,\n      changed,\n      changedTimes,\n      get not() {\n        return createUntil(r, !isNot);\n      }\n    };\n    return instance;\n  }\n}\nfunction until(r) {\n  return createUntil(r);\n}\n\nfunction defaultComparator(value, othVal) {\n  return value === othVal;\n}\nfunction useArrayDifference(...args) {\n  var _a;\n  const list = args[0];\n  const values = args[1];\n  let compareFn = (_a = args[2]) != null ? _a : defaultComparator;\n  if (typeof compareFn === \"string\") {\n    const key = compareFn;\n    compareFn = (value, othVal) => value[key] === othVal[key];\n  }\n  return computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1));\n}\n\nfunction useArrayEvery(list, fn) {\n  return computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n  return computed(() => toValue(list).map((i) => toValue(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n  return computed(() => toValue(\n    toValue(list).find((element, index, array) => fn(toValue(element), index, array))\n  ));\n}\n\nfunction useArrayFindIndex(list, fn) {\n  return computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n  let index = arr.length;\n  while (index-- > 0) {\n    if (cb(arr[index], index, arr))\n      return arr[index];\n  }\n  return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n  return computed(() => toValue(\n    !Array.prototype.findLast ? findLast(toValue(list), (element, index, array) => fn(toValue(element), index, array)) : toValue(list).findLast((element, index, array) => fn(toValue(element), index, array))\n  ));\n}\n\nfunction isArrayIncludesOptions(obj) {\n  return isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\nfunction useArrayIncludes(...args) {\n  var _a;\n  const list = args[0];\n  const value = args[1];\n  let comparator = args[2];\n  let formIndex = 0;\n  if (isArrayIncludesOptions(comparator)) {\n    formIndex = (_a = comparator.fromIndex) != null ? _a : 0;\n    comparator = comparator.comparator;\n  }\n  if (typeof comparator === \"string\") {\n    const key = comparator;\n    comparator = (element, value2) => element[key] === toValue(value2);\n  }\n  comparator = comparator != null ? comparator : (element, value2) => element === toValue(value2);\n  return computed(() => toValue(list).slice(formIndex).some((element, index, array) => comparator(\n    toValue(element),\n    toValue(value),\n    index,\n    toValue(array)\n  )));\n}\n\nfunction useArrayJoin(list, separator) {\n  return computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n  return computed(() => toValue(list).map((i) => toValue(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n  const reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index);\n  return computed(() => {\n    const resolved = toValue(list);\n    return args.length ? resolved.reduce(reduceCallback, toValue(args[0])) : resolved.reduce(reduceCallback);\n  });\n}\n\nfunction useArraySome(list, fn) {\n  return computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array)));\n}\n\nfunction uniq(array) {\n  return Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n  return array.reduce((acc, v) => {\n    if (!acc.some((x) => fn(v, x, array)))\n      acc.push(v);\n    return acc;\n  }, []);\n}\nfunction useArrayUnique(list, compareFn) {\n  return computed(() => {\n    const resolvedList = toValue(list).map((element) => toValue(element));\n    return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n  });\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n  let _initialValue = unref(initialValue);\n  const count = ref(initialValue);\n  const {\n    max = Number.POSITIVE_INFINITY,\n    min = Number.NEGATIVE_INFINITY\n  } = options;\n  const inc = (delta = 1) => count.value = Math.max(Math.min(max, count.value + delta), min);\n  const dec = (delta = 1) => count.value = Math.min(Math.max(min, count.value - delta), max);\n  const get = () => count.value;\n  const set = (val) => count.value = Math.max(min, Math.min(max, val));\n  const reset = (val = _initialValue) => {\n    _initialValue = val;\n    return set(val);\n  };\n  return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/;\nconst REGEX_FORMAT = /[YMDHhms]o|\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n  let m = hours < 12 ? \"AM\" : \"PM\";\n  if (hasPeriod)\n    m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n  return isLowercase ? m.toLowerCase() : m;\n}\nfunction formatOrdinal(num) {\n  const suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n  const v = num % 100;\n  return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n}\nfunction formatDate(date, formatStr, options = {}) {\n  var _a;\n  const years = date.getFullYear();\n  const month = date.getMonth();\n  const days = date.getDate();\n  const hours = date.getHours();\n  const minutes = date.getMinutes();\n  const seconds = date.getSeconds();\n  const milliseconds = date.getMilliseconds();\n  const day = date.getDay();\n  const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n  const matches = {\n    Yo: () => formatOrdinal(years),\n    YY: () => String(years).slice(-2),\n    YYYY: () => years,\n    M: () => month + 1,\n    Mo: () => formatOrdinal(month + 1),\n    MM: () => `${month + 1}`.padStart(2, \"0\"),\n    MMM: () => date.toLocaleDateString(options.locales, { month: \"short\" }),\n    MMMM: () => date.toLocaleDateString(options.locales, { month: \"long\" }),\n    D: () => String(days),\n    Do: () => formatOrdinal(days),\n    DD: () => `${days}`.padStart(2, \"0\"),\n    H: () => String(hours),\n    Ho: () => formatOrdinal(hours),\n    HH: () => `${hours}`.padStart(2, \"0\"),\n    h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n    ho: () => formatOrdinal(hours % 12 || 12),\n    hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n    m: () => String(minutes),\n    mo: () => formatOrdinal(minutes),\n    mm: () => `${minutes}`.padStart(2, \"0\"),\n    s: () => String(seconds),\n    so: () => formatOrdinal(seconds),\n    ss: () => `${seconds}`.padStart(2, \"0\"),\n    SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n    d: () => day,\n    dd: () => date.toLocaleDateString(options.locales, { weekday: \"narrow\" }),\n    ddd: () => date.toLocaleDateString(options.locales, { weekday: \"short\" }),\n    dddd: () => date.toLocaleDateString(options.locales, { weekday: \"long\" }),\n    A: () => meridiem(hours, minutes),\n    AA: () => meridiem(hours, minutes, false, true),\n    a: () => meridiem(hours, minutes, true),\n    aa: () => meridiem(hours, minutes, true, true)\n  };\n  return formatStr.replace(REGEX_FORMAT, (match, $1) => {\n    var _a2, _b;\n    return (_b = $1 != null ? $1 : (_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) != null ? _b : match;\n  });\n}\nfunction normalizeDate(date) {\n  if (date === null)\n    return new Date(Number.NaN);\n  if (date === void 0)\n    return /* @__PURE__ */ new Date();\n  if (date instanceof Date)\n    return new Date(date);\n  if (typeof date === \"string\" && !/Z$/i.test(date)) {\n    const d = date.match(REGEX_PARSE);\n    if (d) {\n      const m = d[2] - 1 || 0;\n      const ms = (d[7] || \"0\").substring(0, 3);\n      return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n    }\n  }\n  return new Date(date);\n}\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n  return computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n  const {\n    immediate = true,\n    immediateCallback = false\n  } = options;\n  let timer = null;\n  const isActive = ref(false);\n  function clean() {\n    if (timer) {\n      clearInterval(timer);\n      timer = null;\n    }\n  }\n  function pause() {\n    isActive.value = false;\n    clean();\n  }\n  function resume() {\n    const intervalValue = toValue(interval);\n    if (intervalValue <= 0)\n      return;\n    isActive.value = true;\n    if (immediateCallback)\n      cb();\n    clean();\n    timer = setInterval(cb, intervalValue);\n  }\n  if (immediate && isClient)\n    resume();\n  if (isRef(interval) || typeof interval === \"function\") {\n    const stopWatch = watch(interval, () => {\n      if (isActive.value && isClient)\n        resume();\n    });\n    tryOnScopeDispose(stopWatch);\n  }\n  tryOnScopeDispose(pause);\n  return {\n    isActive,\n    pause,\n    resume\n  };\n}\n\nfunction useInterval(interval = 1e3, options = {}) {\n  const {\n    controls: exposeControls = false,\n    immediate = true,\n    callback\n  } = options;\n  const counter = ref(0);\n  const update = () => counter.value += 1;\n  const reset = () => {\n    counter.value = 0;\n  };\n  const controls = useIntervalFn(\n    callback ? () => {\n      update();\n      callback(counter.value);\n    } : update,\n    interval,\n    { immediate }\n  );\n  if (exposeControls) {\n    return {\n      counter,\n      reset,\n      ...controls\n    };\n  } else {\n    return counter;\n  }\n}\n\nfunction useLastChanged(source, options = {}) {\n  var _a;\n  const ms = ref((_a = options.initialValue) != null ? _a : null);\n  watch(\n    source,\n    () => ms.value = timestamp(),\n    options\n  );\n  return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n  const {\n    immediate = true\n  } = options;\n  const isPending = ref(false);\n  let timer = null;\n  function clear() {\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n  }\n  function stop() {\n    isPending.value = false;\n    clear();\n  }\n  function start(...args) {\n    clear();\n    isPending.value = true;\n    timer = setTimeout(() => {\n      isPending.value = false;\n      timer = null;\n      cb(...args);\n    }, toValue(interval));\n  }\n  if (immediate) {\n    isPending.value = true;\n    if (isClient)\n      start();\n  }\n  tryOnScopeDispose(stop);\n  return {\n    isPending: readonly(isPending),\n    start,\n    stop\n  };\n}\n\nfunction useTimeout(interval = 1e3, options = {}) {\n  const {\n    controls: exposeControls = false,\n    callback\n  } = options;\n  const controls = useTimeoutFn(\n    callback != null ? callback : noop,\n    interval,\n    options\n  );\n  const ready = computed(() => !controls.isPending.value);\n  if (exposeControls) {\n    return {\n      ready,\n      ...controls\n    };\n  } else {\n    return ready;\n  }\n}\n\nfunction useToNumber(value, options = {}) {\n  const {\n    method = \"parseFloat\",\n    radix,\n    nanToZero\n  } = options;\n  return computed(() => {\n    let resolved = toValue(value);\n    if (typeof resolved === \"string\")\n      resolved = Number[method](resolved, radix);\n    if (nanToZero && Number.isNaN(resolved))\n      resolved = 0;\n    return resolved;\n  });\n}\n\nfunction useToString(value) {\n  return computed(() => `${toValue(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n  const {\n    truthyValue = true,\n    falsyValue = false\n  } = options;\n  const valueIsRef = isRef(initialValue);\n  const _value = ref(initialValue);\n  function toggle(value) {\n    if (arguments.length) {\n      _value.value = value;\n      return _value.value;\n    } else {\n      const truthy = toValue(truthyValue);\n      _value.value = _value.value === truthy ? toValue(falsyValue) : truthy;\n      return _value.value;\n    }\n  }\n  if (valueIsRef)\n    return toggle;\n  else\n    return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n  let oldList = (options == null ? void 0 : options.immediate) ? [] : [...source instanceof Function ? source() : Array.isArray(source) ? source : toValue(source)];\n  return watch(source, (newList, _, onCleanup) => {\n    const oldListRemains = Array.from({ length: oldList.length });\n    const added = [];\n    for (const obj of newList) {\n      let found = false;\n      for (let i = 0; i < oldList.length; i++) {\n        if (!oldListRemains[i] && obj === oldList[i]) {\n          oldListRemains[i] = true;\n          found = true;\n          break;\n        }\n      }\n      if (!found)\n        added.push(obj);\n    }\n    const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n    cb(newList, oldList, added, removed, onCleanup);\n    oldList = [...newList];\n  }, options);\n}\n\nfunction watchAtMost(source, cb, options) {\n  const {\n    count,\n    ...watchOptions\n  } = options;\n  const current = ref(0);\n  const stop = watchWithFilter(\n    source,\n    (...args) => {\n      current.value += 1;\n      if (current.value >= toValue(count))\n        nextTick(() => stop());\n      cb(...args);\n    },\n    watchOptions\n  );\n  return { count: current, stop };\n}\n\nfunction watchDebounced(source, cb, options = {}) {\n  const {\n    debounce = 0,\n    maxWait = void 0,\n    ...watchOptions\n  } = options;\n  return watchWithFilter(\n    source,\n    cb,\n    {\n      ...watchOptions,\n      eventFilter: debounceFilter(debounce, { maxWait })\n    }\n  );\n}\n\nfunction watchDeep(source, cb, options) {\n  return watch(\n    source,\n    cb,\n    {\n      ...options,\n      deep: true\n    }\n  );\n}\n\nfunction watchIgnorable(source, cb, options = {}) {\n  const {\n    eventFilter = bypassFilter,\n    ...watchOptions\n  } = options;\n  const filteredCb = createFilterWrapper(\n    eventFilter,\n    cb\n  );\n  let ignoreUpdates;\n  let ignorePrevAsyncUpdates;\n  let stop;\n  if (watchOptions.flush === \"sync\") {\n    const ignore = ref(false);\n    ignorePrevAsyncUpdates = () => {\n    };\n    ignoreUpdates = (updater) => {\n      ignore.value = true;\n      updater();\n      ignore.value = false;\n    };\n    stop = watch(\n      source,\n      (...args) => {\n        if (!ignore.value)\n          filteredCb(...args);\n      },\n      watchOptions\n    );\n  } else {\n    const disposables = [];\n    const ignoreCounter = ref(0);\n    const syncCounter = ref(0);\n    ignorePrevAsyncUpdates = () => {\n      ignoreCounter.value = syncCounter.value;\n    };\n    disposables.push(\n      watch(\n        source,\n        () => {\n          syncCounter.value++;\n        },\n        { ...watchOptions, flush: \"sync\" }\n      )\n    );\n    ignoreUpdates = (updater) => {\n      const syncCounterPrev = syncCounter.value;\n      updater();\n      ignoreCounter.value += syncCounter.value - syncCounterPrev;\n    };\n    disposables.push(\n      watch(\n        source,\n        (...args) => {\n          const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n          ignoreCounter.value = 0;\n          syncCounter.value = 0;\n          if (ignore)\n            return;\n          filteredCb(...args);\n        },\n        watchOptions\n      )\n    );\n    stop = () => {\n      disposables.forEach((fn) => fn());\n    };\n  }\n  return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nfunction watchImmediate(source, cb, options) {\n  return watch(\n    source,\n    cb,\n    {\n      ...options,\n      immediate: true\n    }\n  );\n}\n\nfunction watchOnce(source, cb, options) {\n  const stop = watch(source, (...args) => {\n    nextTick(() => stop());\n    return cb(...args);\n  }, options);\n  return stop;\n}\n\nfunction watchThrottled(source, cb, options = {}) {\n  const {\n    throttle = 0,\n    trailing = true,\n    leading = true,\n    ...watchOptions\n  } = options;\n  return watchWithFilter(\n    source,\n    cb,\n    {\n      ...watchOptions,\n      eventFilter: throttleFilter(throttle, trailing, leading)\n    }\n  );\n}\n\nfunction watchTriggerable(source, cb, options = {}) {\n  let cleanupFn;\n  function onEffect() {\n    if (!cleanupFn)\n      return;\n    const fn = cleanupFn;\n    cleanupFn = void 0;\n    fn();\n  }\n  function onCleanup(callback) {\n    cleanupFn = callback;\n  }\n  const _cb = (value, oldValue) => {\n    onEffect();\n    return cb(value, oldValue, onCleanup);\n  };\n  const res = watchIgnorable(source, _cb, options);\n  const { ignoreUpdates } = res;\n  const trigger = () => {\n    let res2;\n    ignoreUpdates(() => {\n      res2 = _cb(getWatchSources(source), getOldValue(source));\n    });\n    return res2;\n  };\n  return {\n    ...res,\n    trigger\n  };\n}\nfunction getWatchSources(sources) {\n  if (isReactive(sources))\n    return sources;\n  if (Array.isArray(sources))\n    return sources.map((item) => toValue(item));\n  return toValue(sources);\n}\nfunction getOldValue(source) {\n  return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n  const stop = watch(\n    source,\n    (v, ov, onInvalidate) => {\n      if (v) {\n        if (options == null ? void 0 : options.once)\n          nextTick(() => stop());\n        cb(v, ov, onInvalidate);\n      }\n    },\n    {\n      ...options,\n      once: false\n    }\n  );\n  return stop;\n}\n\nexport { assert, refAutoReset as autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, directiveHooks, computedEager as eagerComputed, extendRef, formatDate, get, getLifeCycleTarget, hasOwn, hyphenate, identity, watchIgnorable as ignorableWatch, increaseWithUnit, injectLocal, invoke, isClient, isDef, isDefined, isIOS, isObject, isWorker, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, provideLocal, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toReactive, toRef, toRefs, toValue, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n","import { noop, makeDestructurable, camelize, toValue, isClient, isObject, tryOnScopeDispose, isIOS, tryOnMounted, objectOmit, promiseTimeout, until, increaseWithUnit, objectEntries, createSingletonPromise, useTimeoutFn, pausableWatch, toRef, createEventHook, notNullish, computedWithControl, timestamp, pausableFilter, watchIgnorable, debounceFilter, createFilterWrapper, bypassFilter, toRefs, useIntervalFn, containsProp, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, clamp, syncRef, objectPick, tryOnUnmounted, watchWithFilter, tryOnBeforeUnmount, identity, isDef, isWorker } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, ref, shallowRef, watchEffect, computed, inject, isVue3, version, defineComponent, h, TransitionGroup, shallowReactive, Fragment, watch, getCurrentInstance, customRef, onUpdated, onMounted, isVue2, readonly, nextTick, reactive, markRaw, unref, getCurrentScope, set, del, isReadonly, onBeforeUpdate } from 'vue-demi';\n\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n  let options;\n  if (isRef(optionsOrRef)) {\n    options = {\n      evaluating: optionsOrRef\n    };\n  } else {\n    options = optionsOrRef || {};\n  }\n  const {\n    lazy = false,\n    evaluating = void 0,\n    shallow = true,\n    onError = noop\n  } = options;\n  const started = ref(!lazy);\n  const current = shallow ? shallowRef(initialState) : ref(initialState);\n  let counter = 0;\n  watchEffect(async (onInvalidate) => {\n    if (!started.value)\n      return;\n    counter++;\n    const counterAtBeginning = counter;\n    let hasFinished = false;\n    if (evaluating) {\n      Promise.resolve().then(() => {\n        evaluating.value = true;\n      });\n    }\n    try {\n      const result = await evaluationCallback((cancelCallback) => {\n        onInvalidate(() => {\n          if (evaluating)\n            evaluating.value = false;\n          if (!hasFinished)\n            cancelCallback();\n        });\n      });\n      if (counterAtBeginning === counter)\n        current.value = result;\n    } catch (e) {\n      onError(e);\n    } finally {\n      if (evaluating && counterAtBeginning === counter)\n        evaluating.value = false;\n      hasFinished = true;\n    }\n  });\n  if (lazy) {\n    return computed(() => {\n      started.value = true;\n      return current.value;\n    });\n  } else {\n    return current;\n  }\n}\n\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n  let source = inject(key);\n  if (defaultSource)\n    source = inject(key, defaultSource);\n  if (treatDefaultAsFactory)\n    source = inject(key, defaultSource, treatDefaultAsFactory);\n  if (typeof options === \"function\") {\n    return computed((ctx) => options(source, ctx));\n  } else {\n    return computed({\n      get: (ctx) => options.get(source, ctx),\n      set: options.set\n    });\n  }\n}\n\nfunction createReusableTemplate(options = {}) {\n  if (!isVue3 && !version.startsWith(\"2.7.\")) {\n    if (process.env.NODE_ENV !== \"production\")\n      throw new Error(\"[VueUse] createReusableTemplate only works in Vue 2.7 or above.\");\n    return;\n  }\n  const {\n    inheritAttrs = true\n  } = options;\n  const render = shallowRef();\n  const define = /* #__PURE__ */ defineComponent({\n    setup(_, { slots }) {\n      return () => {\n        render.value = slots.default;\n      };\n    }\n  });\n  const reuse = /* #__PURE__ */ defineComponent({\n    inheritAttrs,\n    setup(_, { attrs, slots }) {\n      return () => {\n        var _a;\n        if (!render.value && process.env.NODE_ENV !== \"production\")\n          throw new Error(\"[VueUse] Failed to find the definition of reusable template\");\n        const vnode = (_a = render.value) == null ? void 0 : _a.call(render, { ...keysToCamelKebabCase(attrs), $slots: slots });\n        return inheritAttrs && (vnode == null ? void 0 : vnode.length) === 1 ? vnode[0] : vnode;\n      };\n    }\n  });\n  return makeDestructurable(\n    { define, reuse },\n    [define, reuse]\n  );\n}\nfunction keysToCamelKebabCase(obj) {\n  const newObj = {};\n  for (const key in obj)\n    newObj[camelize(key)] = obj[key];\n  return newObj;\n}\n\nfunction createTemplatePromise(options = {}) {\n  if (!isVue3) {\n    if (process.env.NODE_ENV !== \"production\")\n      throw new Error(\"[VueUse] createTemplatePromise only works in Vue 3 or above.\");\n    return;\n  }\n  let index = 0;\n  const instances = ref([]);\n  function create(...args) {\n    const props = shallowReactive({\n      key: index++,\n      args,\n      promise: void 0,\n      resolve: () => {\n      },\n      reject: () => {\n      },\n      isResolving: false,\n      options\n    });\n    instances.value.push(props);\n    props.promise = new Promise((_resolve, _reject) => {\n      props.resolve = (v) => {\n        props.isResolving = true;\n        return _resolve(v);\n      };\n      props.reject = _reject;\n    }).finally(() => {\n      props.promise = void 0;\n      const index2 = instances.value.indexOf(props);\n      if (index2 !== -1)\n        instances.value.splice(index2, 1);\n    });\n    return props.promise;\n  }\n  function start(...args) {\n    if (options.singleton && instances.value.length > 0)\n      return instances.value[0].promise;\n    return create(...args);\n  }\n  const component = /* #__PURE__ */ defineComponent((_, { slots }) => {\n    const renderList = () => instances.value.map((props) => {\n      var _a;\n      return h(Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props));\n    });\n    if (options.transition)\n      return () => h(TransitionGroup, options.transition, renderList);\n    return renderList;\n  });\n  component.start = start;\n  return component;\n}\n\nfunction createUnrefFn(fn) {\n  return function(...args) {\n    return fn.apply(this, args.map((i) => toValue(i)));\n  };\n}\n\nfunction unrefElement(elRef) {\n  var _a;\n  const plain = toValue(elRef);\n  return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n\nfunction useEventListener(...args) {\n  let target;\n  let events;\n  let listeners;\n  let options;\n  if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n    [events, listeners, options] = args;\n    target = defaultWindow;\n  } else {\n    [target, events, listeners, options] = args;\n  }\n  if (!target)\n    return noop;\n  if (!Array.isArray(events))\n    events = [events];\n  if (!Array.isArray(listeners))\n    listeners = [listeners];\n  const cleanups = [];\n  const cleanup = () => {\n    cleanups.forEach((fn) => fn());\n    cleanups.length = 0;\n  };\n  const register = (el, event, listener, options2) => {\n    el.addEventListener(event, listener, options2);\n    return () => el.removeEventListener(event, listener, options2);\n  };\n  const stopWatch = watch(\n    () => [unrefElement(target), toValue(options)],\n    ([el, options2]) => {\n      cleanup();\n      if (!el)\n        return;\n      const optionsClone = isObject(options2) ? { ...options2 } : options2;\n      cleanups.push(\n        ...events.flatMap((event) => {\n          return listeners.map((listener) => register(el, event, listener, optionsClone));\n        })\n      );\n    },\n    { immediate: true, flush: \"post\" }\n  );\n  const stop = () => {\n    stopWatch();\n    cleanup();\n  };\n  tryOnScopeDispose(stop);\n  return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n  const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;\n  if (!window)\n    return noop;\n  if (isIOS && !_iOSWorkaround) {\n    _iOSWorkaround = true;\n    Array.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop));\n    window.document.documentElement.addEventListener(\"click\", noop);\n  }\n  let shouldListen = true;\n  const shouldIgnore = (event) => {\n    return ignore.some((target2) => {\n      if (typeof target2 === \"string\") {\n        return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n      } else {\n        const el = unrefElement(target2);\n        return el && (event.target === el || event.composedPath().includes(el));\n      }\n    });\n  };\n  const listener = (event) => {\n    const el = unrefElement(target);\n    if (!el || el === event.target || event.composedPath().includes(el))\n      return;\n    if (event.detail === 0)\n      shouldListen = !shouldIgnore(event);\n    if (!shouldListen) {\n      shouldListen = true;\n      return;\n    }\n    handler(event);\n  };\n  const cleanup = [\n    useEventListener(window, \"click\", listener, { passive: true, capture }),\n    useEventListener(window, \"pointerdown\", (e) => {\n      const el = unrefElement(target);\n      shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n    }, { passive: true }),\n    detectIframe && useEventListener(window, \"blur\", (event) => {\n      setTimeout(() => {\n        var _a;\n        const el = unrefElement(target);\n        if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement)))\n          handler(event);\n      }, 0);\n    })\n  ].filter(Boolean);\n  const stop = () => cleanup.forEach((fn) => fn());\n  return stop;\n}\n\nfunction createKeyPredicate(keyFilter) {\n  if (typeof keyFilter === \"function\")\n    return keyFilter;\n  else if (typeof keyFilter === \"string\")\n    return (event) => event.key === keyFilter;\n  else if (Array.isArray(keyFilter))\n    return (event) => keyFilter.includes(event.key);\n  return () => true;\n}\nfunction onKeyStroke(...args) {\n  let key;\n  let handler;\n  let options = {};\n  if (args.length === 3) {\n    key = args[0];\n    handler = args[1];\n    options = args[2];\n  } else if (args.length === 2) {\n    if (typeof args[1] === \"object\") {\n      key = true;\n      handler = args[0];\n      options = args[1];\n    } else {\n      key = args[0];\n      handler = args[1];\n    }\n  } else {\n    key = true;\n    handler = args[0];\n  }\n  const {\n    target = defaultWindow,\n    eventName = \"keydown\",\n    passive = false,\n    dedupe = false\n  } = options;\n  const predicate = createKeyPredicate(key);\n  const listener = (e) => {\n    if (e.repeat && toValue(dedupe))\n      return;\n    if (predicate(e))\n      handler(e);\n  };\n  return useEventListener(target, eventName, listener, passive);\n}\nfunction onKeyDown(key, handler, options = {}) {\n  return onKeyStroke(key, handler, { ...options, eventName: \"keydown\" });\n}\nfunction onKeyPressed(key, handler, options = {}) {\n  return onKeyStroke(key, handler, { ...options, eventName: \"keypress\" });\n}\nfunction onKeyUp(key, handler, options = {}) {\n  return onKeyStroke(key, handler, { ...options, eventName: \"keyup\" });\n}\n\nconst DEFAULT_DELAY = 500;\nconst DEFAULT_THRESHOLD = 10;\nfunction onLongPress(target, handler, options) {\n  var _a, _b;\n  const elementRef = computed(() => unrefElement(target));\n  let timeout;\n  let posStart;\n  function clear() {\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = void 0;\n    }\n    posStart = void 0;\n  }\n  function onDown(ev) {\n    var _a2, _b2, _c, _d;\n    if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n      return;\n    clear();\n    if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n      ev.preventDefault();\n    if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n      ev.stopPropagation();\n    posStart = {\n      x: ev.x,\n      y: ev.y\n    };\n    timeout = setTimeout(\n      () => handler(ev),\n      (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n    );\n  }\n  function onMove(ev) {\n    var _a2, _b2, _c, _d;\n    if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n      return;\n    if (!posStart || (options == null ? void 0 : options.distanceThreshold) === false)\n      return;\n    if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n      ev.preventDefault();\n    if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n      ev.stopPropagation();\n    const dx = ev.x - posStart.x;\n    const dy = ev.y - posStart.y;\n    const distance = Math.sqrt(dx * dx + dy * dy);\n    if (distance >= ((_d = options == null ? void 0 : options.distanceThreshold) != null ? _d : DEFAULT_THRESHOLD))\n      clear();\n  }\n  const listenerOptions = {\n    capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n    once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n  };\n  const cleanup = [\n    useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n    useEventListener(elementRef, \"pointermove\", onMove, listenerOptions),\n    useEventListener(elementRef, [\"pointerup\", \"pointerleave\"], clear, listenerOptions)\n  ];\n  const stop = () => cleanup.forEach((fn) => fn());\n  return stop;\n}\n\nfunction isFocusedElementEditable() {\n  const { activeElement, body } = document;\n  if (!activeElement)\n    return false;\n  if (activeElement === body)\n    return false;\n  switch (activeElement.tagName) {\n    case \"INPUT\":\n    case \"TEXTAREA\":\n      return true;\n  }\n  return activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isTypedCharValid({\n  keyCode,\n  metaKey,\n  ctrlKey,\n  altKey\n}) {\n  if (metaKey || ctrlKey || altKey)\n    return false;\n  if (keyCode >= 48 && keyCode <= 57)\n    return true;\n  if (keyCode >= 65 && keyCode <= 90)\n    return true;\n  if (keyCode >= 97 && keyCode <= 122)\n    return true;\n  return false;\n}\nfunction onStartTyping(callback, options = {}) {\n  const { document: document2 = defaultDocument } = options;\n  const keydown = (event) => {\n    !isFocusedElementEditable() && isTypedCharValid(event) && callback(event);\n  };\n  if (document2)\n    useEventListener(document2, \"keydown\", keydown, { passive: true });\n}\n\nfunction templateRef(key, initialValue = null) {\n  const instance = getCurrentInstance();\n  let _trigger = () => {\n  };\n  const element = customRef((track, trigger) => {\n    _trigger = trigger;\n    return {\n      get() {\n        var _a, _b;\n        track();\n        return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;\n      },\n      set() {\n      }\n    };\n  });\n  tryOnMounted(_trigger);\n  onUpdated(_trigger);\n  return element;\n}\n\nfunction useActiveElement(options = {}) {\n  var _a;\n  const {\n    window = defaultWindow,\n    deep = true\n  } = options;\n  const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document;\n  const getDeepActiveElement = () => {\n    var _a2;\n    let element = document == null ? void 0 : document.activeElement;\n    if (deep) {\n      while (element == null ? void 0 : element.shadowRoot)\n        element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement;\n    }\n    return element;\n  };\n  const activeElement = ref();\n  const trigger = () => {\n    activeElement.value = getDeepActiveElement();\n  };\n  if (window) {\n    useEventListener(window, \"blur\", (event) => {\n      if (event.relatedTarget !== null)\n        return;\n      trigger();\n    }, true);\n    useEventListener(window, \"focus\", trigger, true);\n  }\n  trigger();\n  return activeElement;\n}\n\nfunction useMounted() {\n  const isMounted = ref(false);\n  const instance = getCurrentInstance();\n  if (instance) {\n    onMounted(() => {\n      isMounted.value = true;\n    }, isVue2 ? null : instance);\n  }\n  return isMounted;\n}\n\nfunction useSupported(callback) {\n  const isMounted = useMounted();\n  return computed(() => {\n    isMounted.value;\n    return Boolean(callback());\n  });\n}\n\nfunction useRafFn(fn, options = {}) {\n  const {\n    immediate = true,\n    fpsLimit = void 0,\n    window = defaultWindow\n  } = options;\n  const isActive = ref(false);\n  const intervalLimit = fpsLimit ? 1e3 / fpsLimit : null;\n  let previousFrameTimestamp = 0;\n  let rafId = null;\n  function loop(timestamp) {\n    if (!isActive.value || !window)\n      return;\n    if (!previousFrameTimestamp)\n      previousFrameTimestamp = timestamp;\n    const delta = timestamp - previousFrameTimestamp;\n    if (intervalLimit && delta < intervalLimit) {\n      rafId = window.requestAnimationFrame(loop);\n      return;\n    }\n    previousFrameTimestamp = timestamp;\n    fn({ delta, timestamp });\n    rafId = window.requestAnimationFrame(loop);\n  }\n  function resume() {\n    if (!isActive.value && window) {\n      isActive.value = true;\n      previousFrameTimestamp = 0;\n      rafId = window.requestAnimationFrame(loop);\n    }\n  }\n  function pause() {\n    isActive.value = false;\n    if (rafId != null && window) {\n      window.cancelAnimationFrame(rafId);\n      rafId = null;\n    }\n  }\n  if (immediate)\n    resume();\n  tryOnScopeDispose(pause);\n  return {\n    isActive: readonly(isActive),\n    pause,\n    resume\n  };\n}\n\nfunction useAnimate(target, keyframes, options) {\n  let config;\n  let animateOptions;\n  if (isObject(options)) {\n    config = options;\n    animateOptions = objectOmit(options, [\"window\", \"immediate\", \"commitStyles\", \"persist\", \"onReady\", \"onError\"]);\n  } else {\n    config = { duration: options };\n    animateOptions = options;\n  }\n  const {\n    window = defaultWindow,\n    immediate = true,\n    commitStyles,\n    persist,\n    playbackRate: _playbackRate = 1,\n    onReady,\n    onError = (e) => {\n      console.error(e);\n    }\n  } = config;\n  const isSupported = useSupported(() => window && HTMLElement && \"animate\" in HTMLElement.prototype);\n  const animate = shallowRef(void 0);\n  const store = shallowReactive({\n    startTime: null,\n    currentTime: null,\n    timeline: null,\n    playbackRate: _playbackRate,\n    pending: false,\n    playState: immediate ? \"idle\" : \"paused\",\n    replaceState: \"active\"\n  });\n  const pending = computed(() => store.pending);\n  const playState = computed(() => store.playState);\n  const replaceState = computed(() => store.replaceState);\n  const startTime = computed({\n    get() {\n      return store.startTime;\n    },\n    set(value) {\n      store.startTime = value;\n      if (animate.value)\n        animate.value.startTime = value;\n    }\n  });\n  const currentTime = computed({\n    get() {\n      return store.currentTime;\n    },\n    set(value) {\n      store.currentTime = value;\n      if (animate.value) {\n        animate.value.currentTime = value;\n        syncResume();\n      }\n    }\n  });\n  const timeline = computed({\n    get() {\n      return store.timeline;\n    },\n    set(value) {\n      store.timeline = value;\n      if (animate.value)\n        animate.value.timeline = value;\n    }\n  });\n  const playbackRate = computed({\n    get() {\n      return store.playbackRate;\n    },\n    set(value) {\n      store.playbackRate = value;\n      if (animate.value)\n        animate.value.playbackRate = value;\n    }\n  });\n  const play = () => {\n    if (animate.value) {\n      try {\n        animate.value.play();\n        syncResume();\n      } catch (e) {\n        syncPause();\n        onError(e);\n      }\n    } else {\n      update();\n    }\n  };\n  const pause = () => {\n    var _a;\n    try {\n      (_a = animate.value) == null ? void 0 : _a.pause();\n      syncPause();\n    } catch (e) {\n      onError(e);\n    }\n  };\n  const reverse = () => {\n    var _a;\n    !animate.value && update();\n    try {\n      (_a = animate.value) == null ? void 0 : _a.reverse();\n      syncResume();\n    } catch (e) {\n      syncPause();\n      onError(e);\n    }\n  };\n  const finish = () => {\n    var _a;\n    try {\n      (_a = animate.value) == null ? void 0 : _a.finish();\n      syncPause();\n    } catch (e) {\n      onError(e);\n    }\n  };\n  const cancel = () => {\n    var _a;\n    try {\n      (_a = animate.value) == null ? void 0 : _a.cancel();\n      syncPause();\n    } catch (e) {\n      onError(e);\n    }\n  };\n  watch(() => unrefElement(target), (el) => {\n    el && update();\n  });\n  watch(() => keyframes, (value) => {\n    !animate.value && update();\n    if (!unrefElement(target) && animate.value) {\n      animate.value.effect = new KeyframeEffect(\n        unrefElement(target),\n        toValue(value),\n        animateOptions\n      );\n    }\n  }, { deep: true });\n  tryOnMounted(() => {\n    nextTick(() => update(true));\n  });\n  tryOnScopeDispose(cancel);\n  function update(init) {\n    const el = unrefElement(target);\n    if (!isSupported.value || !el)\n      return;\n    if (!animate.value)\n      animate.value = el.animate(toValue(keyframes), animateOptions);\n    if (commitStyles)\n      animate.value.commitStyles();\n    if (persist)\n      animate.value.persist();\n    if (_playbackRate !== 1)\n      animate.value.playbackRate = _playbackRate;\n    if (init && !immediate)\n      animate.value.pause();\n    else\n      syncResume();\n    onReady == null ? void 0 : onReady(animate.value);\n  }\n  useEventListener(animate, [\"cancel\", \"finish\", \"remove\"], syncPause);\n  const { resume: resumeRef, pause: pauseRef } = useRafFn(() => {\n    if (!animate.value)\n      return;\n    store.pending = animate.value.pending;\n    store.playState = animate.value.playState;\n    store.replaceState = animate.value.replaceState;\n    store.startTime = animate.value.startTime;\n    store.currentTime = animate.value.currentTime;\n    store.timeline = animate.value.timeline;\n    store.playbackRate = animate.value.playbackRate;\n  }, { immediate: false });\n  function syncResume() {\n    if (isSupported.value)\n      resumeRef();\n  }\n  function syncPause() {\n    if (isSupported.value && window)\n      window.requestAnimationFrame(pauseRef);\n  }\n  return {\n    isSupported,\n    animate,\n    // actions\n    play,\n    pause,\n    reverse,\n    finish,\n    cancel,\n    // state\n    pending,\n    playState,\n    replaceState,\n    startTime,\n    currentTime,\n    timeline,\n    playbackRate\n  };\n}\n\nfunction useAsyncQueue(tasks, options) {\n  const {\n    interrupt = true,\n    onError = noop,\n    onFinished = noop,\n    signal\n  } = options || {};\n  const promiseState = {\n    aborted: \"aborted\",\n    fulfilled: \"fulfilled\",\n    pending: \"pending\",\n    rejected: \"rejected\"\n  };\n  const initialResult = Array.from(Array.from({ length: tasks.length }), () => ({ state: promiseState.pending, data: null }));\n  const result = reactive(initialResult);\n  const activeIndex = ref(-1);\n  if (!tasks || tasks.length === 0) {\n    onFinished();\n    return {\n      activeIndex,\n      result\n    };\n  }\n  function updateResult(state, res) {\n    activeIndex.value++;\n    result[activeIndex.value].data = res;\n    result[activeIndex.value].state = state;\n  }\n  tasks.reduce((prev, curr) => {\n    return prev.then((prevRes) => {\n      var _a;\n      if (signal == null ? void 0 : signal.aborted) {\n        updateResult(promiseState.aborted, new Error(\"aborted\"));\n        return;\n      }\n      if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n        onFinished();\n        return;\n      }\n      const done = curr(prevRes).then((currentRes) => {\n        updateResult(promiseState.fulfilled, currentRes);\n        activeIndex.value === tasks.length - 1 && onFinished();\n        return currentRes;\n      });\n      if (!signal)\n        return done;\n      return Promise.race([done, whenAborted(signal)]);\n    }).catch((e) => {\n      if (signal == null ? void 0 : signal.aborted) {\n        updateResult(promiseState.aborted, e);\n        return e;\n      }\n      updateResult(promiseState.rejected, e);\n      onError();\n      return e;\n    });\n  }, Promise.resolve());\n  return {\n    activeIndex,\n    result\n  };\n}\nfunction whenAborted(signal) {\n  return new Promise((resolve, reject) => {\n    const error = new Error(\"aborted\");\n    if (signal.aborted)\n      reject(error);\n    else\n      signal.addEventListener(\"abort\", () => reject(error), { once: true });\n  });\n}\n\nfunction useAsyncState(promise, initialState, options) {\n  const {\n    immediate = true,\n    delay = 0,\n    onError = noop,\n    onSuccess = noop,\n    resetOnExecute = true,\n    shallow = true,\n    throwError\n  } = options != null ? options : {};\n  const state = shallow ? shallowRef(initialState) : ref(initialState);\n  const isReady = ref(false);\n  const isLoading = ref(false);\n  const error = shallowRef(void 0);\n  async function execute(delay2 = 0, ...args) {\n    if (resetOnExecute)\n      state.value = initialState;\n    error.value = void 0;\n    isReady.value = false;\n    isLoading.value = true;\n    if (delay2 > 0)\n      await promiseTimeout(delay2);\n    const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n    try {\n      const data = await _promise;\n      state.value = data;\n      isReady.value = true;\n      onSuccess(data);\n    } catch (e) {\n      error.value = e;\n      onError(e);\n      if (throwError)\n        throw e;\n    } finally {\n      isLoading.value = false;\n    }\n    return state.value;\n  }\n  if (immediate)\n    execute(delay);\n  const shell = {\n    state,\n    isReady,\n    isLoading,\n    error,\n    execute\n  };\n  function waitUntilIsLoaded() {\n    return new Promise((resolve, reject) => {\n      until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n    });\n  }\n  return {\n    ...shell,\n    then(onFulfilled, onRejected) {\n      return waitUntilIsLoaded().then(onFulfilled, onRejected);\n    }\n  };\n}\n\nconst defaults = {\n  array: (v) => JSON.stringify(v),\n  object: (v) => JSON.stringify(v),\n  set: (v) => JSON.stringify(Array.from(v)),\n  map: (v) => JSON.stringify(Object.fromEntries(v)),\n  null: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n  if (!target)\n    return defaults.null;\n  if (target instanceof Map)\n    return defaults.map;\n  else if (target instanceof Set)\n    return defaults.set;\n  else if (Array.isArray(target))\n    return defaults.array;\n  else\n    return defaults.object;\n}\n\nfunction useBase64(target, options) {\n  const base64 = ref(\"\");\n  const promise = ref();\n  function execute() {\n    if (!isClient)\n      return;\n    promise.value = new Promise((resolve, reject) => {\n      try {\n        const _target = toValue(target);\n        if (_target == null) {\n          resolve(\"\");\n        } else if (typeof _target === \"string\") {\n          resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n        } else if (_target instanceof Blob) {\n          resolve(blobToBase64(_target));\n        } else if (_target instanceof ArrayBuffer) {\n          resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n        } else if (_target instanceof HTMLCanvasElement) {\n          resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n        } else if (_target instanceof HTMLImageElement) {\n          const img = _target.cloneNode(false);\n          img.crossOrigin = \"Anonymous\";\n          imgLoaded(img).then(() => {\n            const canvas = document.createElement(\"canvas\");\n            const ctx = canvas.getContext(\"2d\");\n            canvas.width = img.width;\n            canvas.height = img.height;\n            ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n            resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n          }).catch(reject);\n        } else if (typeof _target === \"object\") {\n          const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target);\n          const serialized = _serializeFn(_target);\n          return resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n        } else {\n          reject(new Error(\"target is unsupported types\"));\n        }\n      } catch (error) {\n        reject(error);\n      }\n    });\n    promise.value.then((res) => base64.value = res);\n    return promise.value;\n  }\n  if (isRef(target) || typeof target === \"function\")\n    watch(target, execute, { immediate: true });\n  else\n    execute();\n  return {\n    base64,\n    promise,\n    execute\n  };\n}\nfunction imgLoaded(img) {\n  return new Promise((resolve, reject) => {\n    if (!img.complete) {\n      img.onload = () => {\n        resolve();\n      };\n      img.onerror = reject;\n    } else {\n      resolve();\n    }\n  });\n}\nfunction blobToBase64(blob) {\n  return new Promise((resolve, reject) => {\n    const fr = new FileReader();\n    fr.onload = (e) => {\n      resolve(e.target.result);\n    };\n    fr.onerror = reject;\n    fr.readAsDataURL(blob);\n  });\n}\n\nfunction useBattery(options = {}) {\n  const { navigator = defaultNavigator } = options;\n  const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n  const isSupported = useSupported(() => navigator && \"getBattery\" in navigator && typeof navigator.getBattery === \"function\");\n  const charging = ref(false);\n  const chargingTime = ref(0);\n  const dischargingTime = ref(0);\n  const level = ref(1);\n  let battery;\n  function updateBatteryInfo() {\n    charging.value = this.charging;\n    chargingTime.value = this.chargingTime || 0;\n    dischargingTime.value = this.dischargingTime || 0;\n    level.value = this.level;\n  }\n  if (isSupported.value) {\n    navigator.getBattery().then((_battery) => {\n      battery = _battery;\n      updateBatteryInfo.call(battery);\n      useEventListener(battery, events, updateBatteryInfo, { passive: true });\n    });\n  }\n  return {\n    isSupported,\n    charging,\n    chargingTime,\n    dischargingTime,\n    level\n  };\n}\n\nfunction useBluetooth(options) {\n  let {\n    acceptAllDevices = false\n  } = options || {};\n  const {\n    filters = void 0,\n    optionalServices = void 0,\n    navigator = defaultNavigator\n  } = options || {};\n  const isSupported = useSupported(() => navigator && \"bluetooth\" in navigator);\n  const device = shallowRef(void 0);\n  const error = shallowRef(null);\n  watch(device, () => {\n    connectToBluetoothGATTServer();\n  });\n  async function requestDevice() {\n    if (!isSupported.value)\n      return;\n    error.value = null;\n    if (filters && filters.length > 0)\n      acceptAllDevices = false;\n    try {\n      device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({\n        acceptAllDevices,\n        filters,\n        optionalServices\n      }));\n    } catch (err) {\n      error.value = err;\n    }\n  }\n  const server = ref();\n  const isConnected = computed(() => {\n    var _a;\n    return ((_a = server.value) == null ? void 0 : _a.connected) || false;\n  });\n  async function connectToBluetoothGATTServer() {\n    error.value = null;\n    if (device.value && device.value.gatt) {\n      device.value.addEventListener(\"gattserverdisconnected\", () => {\n      });\n      try {\n        server.value = await device.value.gatt.connect();\n      } catch (err) {\n        error.value = err;\n      }\n    }\n  }\n  tryOnMounted(() => {\n    var _a;\n    if (device.value)\n      (_a = device.value.gatt) == null ? void 0 : _a.connect();\n  });\n  tryOnScopeDispose(() => {\n    var _a;\n    if (device.value)\n      (_a = device.value.gatt) == null ? void 0 : _a.disconnect();\n  });\n  return {\n    isSupported,\n    isConnected,\n    // Device:\n    device,\n    requestDevice,\n    // Server:\n    server,\n    // Errors:\n    error\n  };\n}\n\nfunction useMediaQuery(query, options = {}) {\n  const { window = defaultWindow } = options;\n  const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n  let mediaQuery;\n  const matches = ref(false);\n  const handler = (event) => {\n    matches.value = event.matches;\n  };\n  const cleanup = () => {\n    if (!mediaQuery)\n      return;\n    if (\"removeEventListener\" in mediaQuery)\n      mediaQuery.removeEventListener(\"change\", handler);\n    else\n      mediaQuery.removeListener(handler);\n  };\n  const stopWatch = watchEffect(() => {\n    if (!isSupported.value)\n      return;\n    cleanup();\n    mediaQuery = window.matchMedia(toValue(query));\n    if (\"addEventListener\" in mediaQuery)\n      mediaQuery.addEventListener(\"change\", handler);\n    else\n      mediaQuery.addListener(handler);\n    matches.value = mediaQuery.matches;\n  });\n  tryOnScopeDispose(() => {\n    stopWatch();\n    cleanup();\n    mediaQuery = void 0;\n  });\n  return matches;\n}\n\nconst breakpointsTailwind = {\n  \"sm\": 640,\n  \"md\": 768,\n  \"lg\": 1024,\n  \"xl\": 1280,\n  \"2xl\": 1536\n};\nconst breakpointsBootstrapV5 = {\n  xs: 0,\n  sm: 576,\n  md: 768,\n  lg: 992,\n  xl: 1200,\n  xxl: 1400\n};\nconst breakpointsVuetifyV2 = {\n  xs: 0,\n  sm: 600,\n  md: 960,\n  lg: 1264,\n  xl: 1904\n};\nconst breakpointsVuetifyV3 = {\n  xs: 0,\n  sm: 600,\n  md: 960,\n  lg: 1280,\n  xl: 1920,\n  xxl: 2560\n};\nconst breakpointsVuetify = breakpointsVuetifyV2;\nconst breakpointsAntDesign = {\n  xs: 480,\n  sm: 576,\n  md: 768,\n  lg: 992,\n  xl: 1200,\n  xxl: 1600\n};\nconst breakpointsQuasar = {\n  xs: 0,\n  sm: 600,\n  md: 1024,\n  lg: 1440,\n  xl: 1920\n};\nconst breakpointsSematic = {\n  mobileS: 320,\n  mobileM: 375,\n  mobileL: 425,\n  tablet: 768,\n  laptop: 1024,\n  laptopL: 1440,\n  desktop4K: 2560\n};\nconst breakpointsMasterCss = {\n  \"3xs\": 360,\n  \"2xs\": 480,\n  \"xs\": 600,\n  \"sm\": 768,\n  \"md\": 1024,\n  \"lg\": 1280,\n  \"xl\": 1440,\n  \"2xl\": 1600,\n  \"3xl\": 1920,\n  \"4xl\": 2560\n};\nconst breakpointsPrimeFlex = {\n  sm: 576,\n  md: 768,\n  lg: 992,\n  xl: 1200\n};\n\nfunction useBreakpoints(breakpoints, options = {}) {\n  function getValue(k, delta) {\n    let v = toValue(breakpoints[toValue(k)]);\n    if (delta != null)\n      v = increaseWithUnit(v, delta);\n    if (typeof v === \"number\")\n      v = `${v}px`;\n    return v;\n  }\n  const { window = defaultWindow, strategy = \"min-width\" } = options;\n  function match(query) {\n    if (!window)\n      return false;\n    return window.matchMedia(query).matches;\n  }\n  const greaterOrEqual = (k) => {\n    return useMediaQuery(() => `(min-width: ${getValue(k)})`, options);\n  };\n  const smallerOrEqual = (k) => {\n    return useMediaQuery(() => `(max-width: ${getValue(k)})`, options);\n  };\n  const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n    Object.defineProperty(shortcuts, k, {\n      get: () => strategy === \"min-width\" ? greaterOrEqual(k) : smallerOrEqual(k),\n      enumerable: true,\n      configurable: true\n    });\n    return shortcuts;\n  }, {});\n  function current() {\n    const points = Object.keys(breakpoints).map((i) => [i, greaterOrEqual(i)]);\n    return computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n  }\n  return Object.assign(shortcutMethods, {\n    greaterOrEqual,\n    smallerOrEqual,\n    greater(k) {\n      return useMediaQuery(() => `(min-width: ${getValue(k, 0.1)})`, options);\n    },\n    smaller(k) {\n      return useMediaQuery(() => `(max-width: ${getValue(k, -0.1)})`, options);\n    },\n    between(a, b) {\n      return useMediaQuery(() => `(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);\n    },\n    isGreater(k) {\n      return match(`(min-width: ${getValue(k, 0.1)})`);\n    },\n    isGreaterOrEqual(k) {\n      return match(`(min-width: ${getValue(k)})`);\n    },\n    isSmaller(k) {\n      return match(`(max-width: ${getValue(k, -0.1)})`);\n    },\n    isSmallerOrEqual(k) {\n      return match(`(max-width: ${getValue(k)})`);\n    },\n    isInBetween(a, b) {\n      return match(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`);\n    },\n    current,\n    active() {\n      const bps = current();\n      return computed(() => bps.value.length === 0 ? \"\" : bps.value.at(-1));\n    }\n  });\n}\n\nfunction useBroadcastChannel(options) {\n  const {\n    name,\n    window = defaultWindow\n  } = options;\n  const isSupported = useSupported(() => window && \"BroadcastChannel\" in window);\n  const isClosed = ref(false);\n  const channel = ref();\n  const data = ref();\n  const error = shallowRef(null);\n  const post = (data2) => {\n    if (channel.value)\n      channel.value.postMessage(data2);\n  };\n  const close = () => {\n    if (channel.value)\n      channel.value.close();\n    isClosed.value = true;\n  };\n  if (isSupported.value) {\n    tryOnMounted(() => {\n      error.value = null;\n      channel.value = new BroadcastChannel(name);\n      channel.value.addEventListener(\"message\", (e) => {\n        data.value = e.data;\n      }, { passive: true });\n      channel.value.addEventListener(\"messageerror\", (e) => {\n        error.value = e;\n      }, { passive: true });\n      channel.value.addEventListener(\"close\", () => {\n        isClosed.value = true;\n      });\n    });\n  }\n  tryOnScopeDispose(() => {\n    close();\n  });\n  return {\n    isSupported,\n    channel,\n    data,\n    post,\n    close,\n    error,\n    isClosed\n  };\n}\n\nconst WRITABLE_PROPERTIES = [\n  \"hash\",\n  \"host\",\n  \"hostname\",\n  \"href\",\n  \"pathname\",\n  \"port\",\n  \"protocol\",\n  \"search\"\n];\nfunction useBrowserLocation(options = {}) {\n  const { window = defaultWindow } = options;\n  const refs = Object.fromEntries(\n    WRITABLE_PROPERTIES.map((key) => [key, ref()])\n  );\n  for (const [key, ref2] of objectEntries(refs)) {\n    watch(ref2, (value) => {\n      if (!(window == null ? void 0 : window.location) || window.location[key] === value)\n        return;\n      window.location[key] = value;\n    });\n  }\n  const buildState = (trigger) => {\n    var _a;\n    const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n    const { origin } = (window == null ? void 0 : window.location) || {};\n    for (const key of WRITABLE_PROPERTIES)\n      refs[key].value = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a[key];\n    return reactive({\n      trigger,\n      state: state2,\n      length,\n      origin,\n      ...refs\n    });\n  };\n  const state = ref(buildState(\"load\"));\n  if (window) {\n    useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), { passive: true });\n    useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), { passive: true });\n  }\n  return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, watchOptions) {\n  const cachedValue = ref(refValue.value);\n  watch(() => refValue.value, (value) => {\n    if (!comparator(value, cachedValue.value))\n      cachedValue.value = value;\n  }, watchOptions);\n  return cachedValue;\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n  const {\n    controls = false,\n    navigator = defaultNavigator\n  } = options;\n  const isSupported = useSupported(() => navigator && \"permissions\" in navigator);\n  let permissionStatus;\n  const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n  const state = ref();\n  const onChange = () => {\n    if (permissionStatus)\n      state.value = permissionStatus.state;\n  };\n  const query = createSingletonPromise(async () => {\n    if (!isSupported.value)\n      return;\n    if (!permissionStatus) {\n      try {\n        permissionStatus = await navigator.permissions.query(desc);\n        useEventListener(permissionStatus, \"change\", onChange);\n        onChange();\n      } catch (e) {\n        state.value = \"prompt\";\n      }\n    }\n    return permissionStatus;\n  });\n  query();\n  if (controls) {\n    return {\n      state,\n      isSupported,\n      query\n    };\n  } else {\n    return state;\n  }\n}\n\nfunction useClipboard(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    read = false,\n    source,\n    copiedDuring = 1500,\n    legacy = false\n  } = options;\n  const isClipboardApiSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n  const permissionRead = usePermission(\"clipboard-read\");\n  const permissionWrite = usePermission(\"clipboard-write\");\n  const isSupported = computed(() => isClipboardApiSupported.value || legacy);\n  const text = ref(\"\");\n  const copied = ref(false);\n  const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n  function updateText() {\n    if (isClipboardApiSupported.value && isAllowed(permissionRead.value)) {\n      navigator.clipboard.readText().then((value) => {\n        text.value = value;\n      });\n    } else {\n      text.value = legacyRead();\n    }\n  }\n  if (isSupported.value && read)\n    useEventListener([\"copy\", \"cut\"], updateText);\n  async function copy(value = toValue(source)) {\n    if (isSupported.value && value != null) {\n      if (isClipboardApiSupported.value && isAllowed(permissionWrite.value))\n        await navigator.clipboard.writeText(value);\n      else\n        legacyCopy(value);\n      text.value = value;\n      copied.value = true;\n      timeout.start();\n    }\n  }\n  function legacyCopy(value) {\n    const ta = document.createElement(\"textarea\");\n    ta.value = value != null ? value : \"\";\n    ta.style.position = \"absolute\";\n    ta.style.opacity = \"0\";\n    document.body.appendChild(ta);\n    ta.select();\n    document.execCommand(\"copy\");\n    ta.remove();\n  }\n  function legacyRead() {\n    var _a, _b, _c;\n    return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : \"\";\n  }\n  function isAllowed(status) {\n    return status === \"granted\" || status === \"prompt\";\n  }\n  return {\n    isSupported,\n    text,\n    copied,\n    copy\n  };\n}\n\nfunction useClipboardItems(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    read = false,\n    source,\n    copiedDuring = 1500\n  } = options;\n  const isSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n  const content = ref([]);\n  const copied = ref(false);\n  const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);\n  function updateContent() {\n    if (isSupported.value) {\n      navigator.clipboard.read().then((items) => {\n        content.value = items;\n      });\n    }\n  }\n  if (isSupported.value && read)\n    useEventListener([\"copy\", \"cut\"], updateContent);\n  async function copy(value = toValue(source)) {\n    if (isSupported.value && value != null) {\n      await navigator.clipboard.write(value);\n      content.value = value;\n      copied.value = true;\n      timeout.start();\n    }\n  }\n  return {\n    isSupported,\n    content,\n    copied,\n    copy\n  };\n}\n\nfunction cloneFnJSON(source) {\n  return JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n  const cloned = ref({});\n  const {\n    manual,\n    clone = cloneFnJSON,\n    // watch options\n    deep = true,\n    immediate = true\n  } = options;\n  function sync() {\n    cloned.value = clone(toValue(source));\n  }\n  if (!manual && (isRef(source) || typeof source === \"function\")) {\n    watch(source, sync, {\n      ...options,\n      deep,\n      immediate\n    });\n  } else {\n    sync();\n  }\n  return { cloned, sync };\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n  if (!(globalKey in _global))\n    _global[globalKey] = _global[globalKey] || {};\n  return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n  return handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n  handlers[key] = fn;\n}\n\nfunction guessSerializerType(rawInit) {\n  return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nconst StorageSerializers = {\n  boolean: {\n    read: (v) => v === \"true\",\n    write: (v) => String(v)\n  },\n  object: {\n    read: (v) => JSON.parse(v),\n    write: (v) => JSON.stringify(v)\n  },\n  number: {\n    read: (v) => Number.parseFloat(v),\n    write: (v) => String(v)\n  },\n  any: {\n    read: (v) => v,\n    write: (v) => String(v)\n  },\n  string: {\n    read: (v) => v,\n    write: (v) => String(v)\n  },\n  map: {\n    read: (v) => new Map(JSON.parse(v)),\n    write: (v) => JSON.stringify(Array.from(v.entries()))\n  },\n  set: {\n    read: (v) => new Set(JSON.parse(v)),\n    write: (v) => JSON.stringify(Array.from(v))\n  },\n  date: {\n    read: (v) => new Date(v),\n    write: (v) => v.toISOString()\n  }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n  var _a;\n  const {\n    flush = \"pre\",\n    deep = true,\n    listenToStorageChanges = true,\n    writeDefaults = true,\n    mergeDefaults = false,\n    shallow,\n    window = defaultWindow,\n    eventFilter,\n    onError = (e) => {\n      console.error(e);\n    },\n    initOnMounted\n  } = options;\n  const data = (shallow ? shallowRef : ref)(typeof defaults === \"function\" ? defaults() : defaults);\n  if (!storage) {\n    try {\n      storage = getSSRHandler(\"getDefaultStorage\", () => {\n        var _a2;\n        return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n      })();\n    } catch (e) {\n      onError(e);\n    }\n  }\n  if (!storage)\n    return data;\n  const rawInit = toValue(defaults);\n  const type = guessSerializerType(rawInit);\n  const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n  const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n    data,\n    () => write(data.value),\n    { flush, deep, eventFilter }\n  );\n  if (window && listenToStorageChanges) {\n    tryOnMounted(() => {\n      useEventListener(window, \"storage\", update);\n      useEventListener(window, customStorageEventName, updateFromCustomEvent);\n      if (initOnMounted)\n        update();\n    });\n  }\n  if (!initOnMounted)\n    update();\n  function dispatchWriteEvent(oldValue, newValue) {\n    if (window) {\n      window.dispatchEvent(new CustomEvent(customStorageEventName, {\n        detail: {\n          key,\n          oldValue,\n          newValue,\n          storageArea: storage\n        }\n      }));\n    }\n  }\n  function write(v) {\n    try {\n      const oldValue = storage.getItem(key);\n      if (v == null) {\n        dispatchWriteEvent(oldValue, null);\n        storage.removeItem(key);\n      } else {\n        const serialized = serializer.write(v);\n        if (oldValue !== serialized) {\n          storage.setItem(key, serialized);\n          dispatchWriteEvent(oldValue, serialized);\n        }\n      }\n    } catch (e) {\n      onError(e);\n    }\n  }\n  function read(event) {\n    const rawValue = event ? event.newValue : storage.getItem(key);\n    if (rawValue == null) {\n      if (writeDefaults && rawInit != null)\n        storage.setItem(key, serializer.write(rawInit));\n      return rawInit;\n    } else if (!event && mergeDefaults) {\n      const value = serializer.read(rawValue);\n      if (typeof mergeDefaults === \"function\")\n        return mergeDefaults(value, rawInit);\n      else if (type === \"object\" && !Array.isArray(value))\n        return { ...rawInit, ...value };\n      return value;\n    } else if (typeof rawValue !== \"string\") {\n      return rawValue;\n    } else {\n      return serializer.read(rawValue);\n    }\n  }\n  function update(event) {\n    if (event && event.storageArea !== storage)\n      return;\n    if (event && event.key == null) {\n      data.value = rawInit;\n      return;\n    }\n    if (event && event.key !== key)\n      return;\n    pauseWatch();\n    try {\n      if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value))\n        data.value = read(event);\n    } catch (e) {\n      onError(e);\n    } finally {\n      if (event)\n        nextTick(resumeWatch);\n      else\n        resumeWatch();\n    }\n  }\n  function updateFromCustomEvent(event) {\n    update(event.detail);\n  }\n  return data;\n}\n\nfunction usePreferredDark(options) {\n  return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nfunction useColorMode(options = {}) {\n  const {\n    selector = \"html\",\n    attribute = \"class\",\n    initialValue = \"auto\",\n    window = defaultWindow,\n    storage,\n    storageKey = \"vueuse-color-scheme\",\n    listenToStorageChanges = true,\n    storageRef,\n    emitAuto,\n    disableTransition = true\n  } = options;\n  const modes = {\n    auto: \"\",\n    light: \"light\",\n    dark: \"dark\",\n    ...options.modes || {}\n  };\n  const preferredDark = usePreferredDark({ window });\n  const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n  const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n  const state = computed(() => store.value === \"auto\" ? system.value : store.value);\n  const updateHTMLAttrs = getSSRHandler(\n    \"updateHTMLAttrs\",\n    (selector2, attribute2, value) => {\n      const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n      if (!el)\n        return;\n      let style;\n      if (disableTransition) {\n        style = window.document.createElement(\"style\");\n        const styleString = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\n        style.appendChild(document.createTextNode(styleString));\n        window.document.head.appendChild(style);\n      }\n      if (attribute2 === \"class\") {\n        const current = value.split(/\\s/g);\n        Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n          if (current.includes(v))\n            el.classList.add(v);\n          else\n            el.classList.remove(v);\n        });\n      } else {\n        el.setAttribute(attribute2, value);\n      }\n      if (disableTransition) {\n        window.getComputedStyle(style).opacity;\n        document.head.removeChild(style);\n      }\n    }\n  );\n  function defaultOnChanged(mode) {\n    var _a;\n    updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n  }\n  function onChanged(mode) {\n    if (options.onChanged)\n      options.onChanged(mode, defaultOnChanged);\n    else\n      defaultOnChanged(mode);\n  }\n  watch(state, onChanged, { flush: \"post\", immediate: true });\n  tryOnMounted(() => onChanged(state.value));\n  const auto = computed({\n    get() {\n      return emitAuto ? store.value : state.value;\n    },\n    set(v) {\n      store.value = v;\n    }\n  });\n  try {\n    return Object.assign(auto, { store, system, state });\n  } catch (e) {\n    return auto;\n  }\n}\n\nfunction useConfirmDialog(revealed = ref(false)) {\n  const confirmHook = createEventHook();\n  const cancelHook = createEventHook();\n  const revealHook = createEventHook();\n  let _resolve = noop;\n  const reveal = (data) => {\n    revealHook.trigger(data);\n    revealed.value = true;\n    return new Promise((resolve) => {\n      _resolve = resolve;\n    });\n  };\n  const confirm = (data) => {\n    revealed.value = false;\n    confirmHook.trigger(data);\n    _resolve({ data, isCanceled: false });\n  };\n  const cancel = (data) => {\n    revealed.value = false;\n    cancelHook.trigger(data);\n    _resolve({ data, isCanceled: true });\n  };\n  return {\n    isRevealed: computed(() => revealed.value),\n    reveal,\n    confirm,\n    cancel,\n    onReveal: revealHook.on,\n    onConfirm: confirmHook.on,\n    onCancel: cancelHook.on\n  };\n}\n\nfunction useMutationObserver(target, callback, options = {}) {\n  const { window = defaultWindow, ...mutationOptions } = options;\n  let observer;\n  const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n  const cleanup = () => {\n    if (observer) {\n      observer.disconnect();\n      observer = void 0;\n    }\n  };\n  const targets = computed(() => {\n    const value = toValue(target);\n    const items = (Array.isArray(value) ? value : [value]).map(unrefElement).filter(notNullish);\n    return new Set(items);\n  });\n  const stopWatch = watch(\n    () => targets.value,\n    (targets2) => {\n      cleanup();\n      if (isSupported.value && window && targets2.size) {\n        observer = new MutationObserver(callback);\n        targets2.forEach((el) => observer.observe(el, mutationOptions));\n      }\n    },\n    { immediate: true, flush: \"post\" }\n  );\n  const takeRecords = () => {\n    return observer == null ? void 0 : observer.takeRecords();\n  };\n  const stop = () => {\n    cleanup();\n    stopWatch();\n  };\n  tryOnScopeDispose(stop);\n  return {\n    isSupported,\n    stop,\n    takeRecords\n  };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n  const { window = defaultWindow, initialValue = \"\", observe = false } = options;\n  const variable = ref(initialValue);\n  const elRef = computed(() => {\n    var _a;\n    return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n  });\n  function updateCssVar() {\n    var _a;\n    const key = toValue(prop);\n    const el = toValue(elRef);\n    if (el && window) {\n      const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n      variable.value = value || initialValue;\n    }\n  }\n  if (observe) {\n    useMutationObserver(elRef, updateCssVar, {\n      attributeFilter: [\"style\", \"class\"],\n      window\n    });\n  }\n  watch(\n    [elRef, () => toValue(prop)],\n    updateCssVar,\n    { immediate: true }\n  );\n  watch(\n    variable,\n    (val) => {\n      var _a;\n      if ((_a = elRef.value) == null ? void 0 : _a.style)\n        elRef.value.style.setProperty(toValue(prop), val);\n    }\n  );\n  return variable;\n}\n\nfunction useCurrentElement(rootComponent) {\n  const vm = getCurrentInstance();\n  const currentElement = computedWithControl(\n    () => null,\n    () => rootComponent ? unrefElement(rootComponent) : vm.proxy.$el\n  );\n  onUpdated(currentElement.trigger);\n  onMounted(currentElement.trigger);\n  return currentElement;\n}\n\nfunction useCycleList(list, options) {\n  const state = shallowRef(getInitialValue());\n  const listRef = toRef(list);\n  const index = computed({\n    get() {\n      var _a;\n      const targetList = listRef.value;\n      let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value);\n      if (index2 < 0)\n        index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0;\n      return index2;\n    },\n    set(v) {\n      set(v);\n    }\n  });\n  function set(i) {\n    const targetList = listRef.value;\n    const length = targetList.length;\n    const index2 = (i % length + length) % length;\n    const value = targetList[index2];\n    state.value = value;\n    return value;\n  }\n  function shift(delta = 1) {\n    return set(index.value + delta);\n  }\n  function next(n = 1) {\n    return shift(n);\n  }\n  function prev(n = 1) {\n    return shift(-n);\n  }\n  function getInitialValue() {\n    var _a, _b;\n    return (_b = toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : toValue(list)[0])) != null ? _b : void 0;\n  }\n  watch(listRef, () => set(index.value));\n  return {\n    state,\n    index,\n    next,\n    prev,\n    go: set\n  };\n}\n\nfunction useDark(options = {}) {\n  const {\n    valueDark = \"dark\",\n    valueLight = \"\",\n    window = defaultWindow\n  } = options;\n  const mode = useColorMode({\n    ...options,\n    onChanged: (mode2, defaultHandler) => {\n      var _a;\n      if (options.onChanged)\n        (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\", defaultHandler, mode2);\n      else\n        defaultHandler(mode2);\n    },\n    modes: {\n      dark: valueDark,\n      light: valueLight\n    }\n  });\n  const system = computed(() => {\n    if (mode.system) {\n      return mode.system.value;\n    } else {\n      const preferredDark = usePreferredDark({ window });\n      return preferredDark.value ? \"dark\" : \"light\";\n    }\n  });\n  const isDark = computed({\n    get() {\n      return mode.value === \"dark\";\n    },\n    set(v) {\n      const modeVal = v ? \"dark\" : \"light\";\n      if (system.value === modeVal)\n        mode.value = \"auto\";\n      else\n        mode.value = modeVal;\n    }\n  });\n  return isDark;\n}\n\nfunction fnBypass(v) {\n  return v;\n}\nfunction fnSetSource(source, value) {\n  return source.value = value;\n}\nfunction defaultDump(clone) {\n  return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n  return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction useManualRefHistory(source, options = {}) {\n  const {\n    clone = false,\n    dump = defaultDump(clone),\n    parse = defaultParse(clone),\n    setSource = fnSetSource\n  } = options;\n  function _createHistoryRecord() {\n    return markRaw({\n      snapshot: dump(source.value),\n      timestamp: timestamp()\n    });\n  }\n  const last = ref(_createHistoryRecord());\n  const undoStack = ref([]);\n  const redoStack = ref([]);\n  const _setSource = (record) => {\n    setSource(source, parse(record.snapshot));\n    last.value = record;\n  };\n  const commit = () => {\n    undoStack.value.unshift(last.value);\n    last.value = _createHistoryRecord();\n    if (options.capacity && undoStack.value.length > options.capacity)\n      undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY);\n    if (redoStack.value.length)\n      redoStack.value.splice(0, redoStack.value.length);\n  };\n  const clear = () => {\n    undoStack.value.splice(0, undoStack.value.length);\n    redoStack.value.splice(0, redoStack.value.length);\n  };\n  const undo = () => {\n    const state = undoStack.value.shift();\n    if (state) {\n      redoStack.value.unshift(last.value);\n      _setSource(state);\n    }\n  };\n  const redo = () => {\n    const state = redoStack.value.shift();\n    if (state) {\n      undoStack.value.unshift(last.value);\n      _setSource(state);\n    }\n  };\n  const reset = () => {\n    _setSource(last.value);\n  };\n  const history = computed(() => [last.value, ...undoStack.value]);\n  const canUndo = computed(() => undoStack.value.length > 0);\n  const canRedo = computed(() => redoStack.value.length > 0);\n  return {\n    source,\n    undoStack,\n    redoStack,\n    last,\n    history,\n    canUndo,\n    canRedo,\n    clear,\n    commit,\n    reset,\n    undo,\n    redo\n  };\n}\n\nfunction useRefHistory(source, options = {}) {\n  const {\n    deep = false,\n    flush = \"pre\",\n    eventFilter\n  } = options;\n  const {\n    eventFilter: composedFilter,\n    pause,\n    resume: resumeTracking,\n    isActive: isTracking\n  } = pausableFilter(eventFilter);\n  const {\n    ignoreUpdates,\n    ignorePrevAsyncUpdates,\n    stop\n  } = watchIgnorable(\n    source,\n    commit,\n    { deep, flush, eventFilter: composedFilter }\n  );\n  function setSource(source2, value) {\n    ignorePrevAsyncUpdates();\n    ignoreUpdates(() => {\n      source2.value = value;\n    });\n  }\n  const manualHistory = useManualRefHistory(source, { ...options, clone: options.clone || deep, setSource });\n  const { clear, commit: manualCommit } = manualHistory;\n  function commit() {\n    ignorePrevAsyncUpdates();\n    manualCommit();\n  }\n  function resume(commitNow) {\n    resumeTracking();\n    if (commitNow)\n      commit();\n  }\n  function batch(fn) {\n    let canceled = false;\n    const cancel = () => canceled = true;\n    ignoreUpdates(() => {\n      fn(cancel);\n    });\n    if (!canceled)\n      commit();\n  }\n  function dispose() {\n    stop();\n    clear();\n  }\n  return {\n    ...manualHistory,\n    isTracking,\n    pause,\n    resume,\n    commit,\n    batch,\n    dispose\n  };\n}\n\nfunction useDebouncedRefHistory(source, options = {}) {\n  const filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n  const history = useRefHistory(source, { ...options, eventFilter: filter });\n  return {\n    ...history\n  };\n}\n\nfunction useDeviceMotion(options = {}) {\n  const {\n    window = defaultWindow,\n    eventFilter = bypassFilter\n  } = options;\n  const acceleration = ref({ x: null, y: null, z: null });\n  const rotationRate = ref({ alpha: null, beta: null, gamma: null });\n  const interval = ref(0);\n  const accelerationIncludingGravity = ref({\n    x: null,\n    y: null,\n    z: null\n  });\n  if (window) {\n    const onDeviceMotion = createFilterWrapper(\n      eventFilter,\n      (event) => {\n        acceleration.value = event.acceleration;\n        accelerationIncludingGravity.value = event.accelerationIncludingGravity;\n        rotationRate.value = event.rotationRate;\n        interval.value = event.interval;\n      }\n    );\n    useEventListener(window, \"devicemotion\", onDeviceMotion);\n  }\n  return {\n    acceleration,\n    accelerationIncludingGravity,\n    rotationRate,\n    interval\n  };\n}\n\nfunction useDeviceOrientation(options = {}) {\n  const { window = defaultWindow } = options;\n  const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n  const isAbsolute = ref(false);\n  const alpha = ref(null);\n  const beta = ref(null);\n  const gamma = ref(null);\n  if (window && isSupported.value) {\n    useEventListener(window, \"deviceorientation\", (event) => {\n      isAbsolute.value = event.absolute;\n      alpha.value = event.alpha;\n      beta.value = event.beta;\n      gamma.value = event.gamma;\n    });\n  }\n  return {\n    isSupported,\n    isAbsolute,\n    alpha,\n    beta,\n    gamma\n  };\n}\n\nfunction useDevicePixelRatio(options = {}) {\n  const {\n    window = defaultWindow\n  } = options;\n  const pixelRatio = ref(1);\n  if (window) {\n    let observe2 = function() {\n      pixelRatio.value = window.devicePixelRatio;\n      cleanup2();\n      media = window.matchMedia(`(resolution: ${pixelRatio.value}dppx)`);\n      media.addEventListener(\"change\", observe2, { once: true });\n    }, cleanup2 = function() {\n      media == null ? void 0 : media.removeEventListener(\"change\", observe2);\n    };\n    let media;\n    observe2();\n    tryOnScopeDispose(cleanup2);\n  }\n  return { pixelRatio };\n}\n\nfunction useDevicesList(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    requestPermissions = false,\n    constraints = { audio: true, video: true },\n    onUpdated\n  } = options;\n  const devices = ref([]);\n  const videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n  const audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n  const audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n  const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n  const permissionGranted = ref(false);\n  let stream;\n  async function update() {\n    if (!isSupported.value)\n      return;\n    devices.value = await navigator.mediaDevices.enumerateDevices();\n    onUpdated == null ? void 0 : onUpdated(devices.value);\n    if (stream) {\n      stream.getTracks().forEach((t) => t.stop());\n      stream = null;\n    }\n  }\n  async function ensurePermissions() {\n    if (!isSupported.value)\n      return false;\n    if (permissionGranted.value)\n      return true;\n    const { state, query } = usePermission(\"camera\", { controls: true });\n    await query();\n    if (state.value !== \"granted\") {\n      stream = await navigator.mediaDevices.getUserMedia(constraints);\n      update();\n      permissionGranted.value = true;\n    } else {\n      permissionGranted.value = true;\n    }\n    return permissionGranted.value;\n  }\n  if (isSupported.value) {\n    if (requestPermissions)\n      ensurePermissions();\n    useEventListener(navigator.mediaDevices, \"devicechange\", update);\n    update();\n  }\n  return {\n    devices,\n    ensurePermissions,\n    permissionGranted,\n    videoInputs,\n    audioInputs,\n    audioOutputs,\n    isSupported\n  };\n}\n\nfunction useDisplayMedia(options = {}) {\n  var _a;\n  const enabled = ref((_a = options.enabled) != null ? _a : false);\n  const video = options.video;\n  const audio = options.audio;\n  const { navigator = defaultNavigator } = options;\n  const isSupported = useSupported(() => {\n    var _a2;\n    return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia;\n  });\n  const constraint = { audio, video };\n  const stream = shallowRef();\n  async function _start() {\n    if (!isSupported.value || stream.value)\n      return;\n    stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n    return stream.value;\n  }\n  async function _stop() {\n    var _a2;\n    (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n    stream.value = void 0;\n  }\n  function stop() {\n    _stop();\n    enabled.value = false;\n  }\n  async function start() {\n    await _start();\n    if (stream.value)\n      enabled.value = true;\n    return stream.value;\n  }\n  watch(\n    enabled,\n    (v) => {\n      if (v)\n        _start();\n      else\n        _stop();\n    },\n    { immediate: true }\n  );\n  return {\n    isSupported,\n    stream,\n    start,\n    stop,\n    enabled\n  };\n}\n\nfunction useDocumentVisibility(options = {}) {\n  const { document = defaultDocument } = options;\n  if (!document)\n    return ref(\"visible\");\n  const visibility = ref(document.visibilityState);\n  useEventListener(document, \"visibilitychange\", () => {\n    visibility.value = document.visibilityState;\n  });\n  return visibility;\n}\n\nfunction useDraggable(target, options = {}) {\n  var _a, _b;\n  const {\n    pointerTypes,\n    preventDefault,\n    stopPropagation,\n    exact,\n    onMove,\n    onEnd,\n    onStart,\n    initialValue,\n    axis = \"both\",\n    draggingElement = defaultWindow,\n    containerElement,\n    handle: draggingHandle = target\n  } = options;\n  const position = ref(\n    (_a = toValue(initialValue)) != null ? _a : { x: 0, y: 0 }\n  );\n  const pressedDelta = ref();\n  const filterEvent = (e) => {\n    if (pointerTypes)\n      return pointerTypes.includes(e.pointerType);\n    return true;\n  };\n  const handleEvent = (e) => {\n    if (toValue(preventDefault))\n      e.preventDefault();\n    if (toValue(stopPropagation))\n      e.stopPropagation();\n  };\n  const start = (e) => {\n    var _a2;\n    if (toValue(options.disabled) || !filterEvent(e))\n      return;\n    if (toValue(exact) && e.target !== toValue(target))\n      return;\n    const container = toValue(containerElement);\n    const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n    const targetRect = toValue(target).getBoundingClientRect();\n    const pos = {\n      x: e.clientX - (container ? targetRect.left - containerRect.left + container.scrollLeft : targetRect.left),\n      y: e.clientY - (container ? targetRect.top - containerRect.top + container.scrollTop : targetRect.top)\n    };\n    if ((onStart == null ? void 0 : onStart(pos, e)) === false)\n      return;\n    pressedDelta.value = pos;\n    handleEvent(e);\n  };\n  const move = (e) => {\n    if (toValue(options.disabled) || !filterEvent(e))\n      return;\n    if (!pressedDelta.value)\n      return;\n    const container = toValue(containerElement);\n    const targetRect = toValue(target).getBoundingClientRect();\n    let { x, y } = position.value;\n    if (axis === \"x\" || axis === \"both\") {\n      x = e.clientX - pressedDelta.value.x;\n      if (container)\n        x = Math.min(Math.max(0, x), container.scrollWidth - targetRect.width);\n    }\n    if (axis === \"y\" || axis === \"both\") {\n      y = e.clientY - pressedDelta.value.y;\n      if (container)\n        y = Math.min(Math.max(0, y), container.scrollHeight - targetRect.height);\n    }\n    position.value = {\n      x,\n      y\n    };\n    onMove == null ? void 0 : onMove(position.value, e);\n    handleEvent(e);\n  };\n  const end = (e) => {\n    if (toValue(options.disabled) || !filterEvent(e))\n      return;\n    if (!pressedDelta.value)\n      return;\n    pressedDelta.value = void 0;\n    onEnd == null ? void 0 : onEnd(position.value, e);\n    handleEvent(e);\n  };\n  if (isClient) {\n    const config = { capture: (_b = options.capture) != null ? _b : true };\n    useEventListener(draggingHandle, \"pointerdown\", start, config);\n    useEventListener(draggingElement, \"pointermove\", move, config);\n    useEventListener(draggingElement, \"pointerup\", end, config);\n  }\n  return {\n    ...toRefs(position),\n    position,\n    isDragging: computed(() => !!pressedDelta.value),\n    style: computed(\n      () => `left:${position.value.x}px;top:${position.value.y}px;`\n    )\n  };\n}\n\nfunction useDropZone(target, options = {}) {\n  const isOverDropZone = ref(false);\n  const files = shallowRef(null);\n  let counter = 0;\n  let isDataTypeIncluded = true;\n  if (isClient) {\n    const _options = typeof options === \"function\" ? { onDrop: options } : options;\n    const getFiles = (event) => {\n      var _a, _b;\n      const list = Array.from((_b = (_a = event.dataTransfer) == null ? void 0 : _a.files) != null ? _b : []);\n      return files.value = list.length === 0 ? null : list;\n    };\n    useEventListener(target, \"dragenter\", (event) => {\n      var _a, _b;\n      const types = Array.from(((_a = event == null ? void 0 : event.dataTransfer) == null ? void 0 : _a.items) || []).map((i) => i.kind === \"file\" ? i.type : null).filter(notNullish);\n      if (_options.dataTypes && event.dataTransfer) {\n        const dataTypes = unref(_options.dataTypes);\n        isDataTypeIncluded = typeof dataTypes === \"function\" ? dataTypes(types) : dataTypes ? dataTypes.some((item) => types.includes(item)) : true;\n        if (!isDataTypeIncluded)\n          return;\n      }\n      event.preventDefault();\n      counter += 1;\n      isOverDropZone.value = true;\n      (_b = _options.onEnter) == null ? void 0 : _b.call(_options, getFiles(event), event);\n    });\n    useEventListener(target, \"dragover\", (event) => {\n      var _a;\n      if (!isDataTypeIncluded)\n        return;\n      event.preventDefault();\n      (_a = _options.onOver) == null ? void 0 : _a.call(_options, getFiles(event), event);\n    });\n    useEventListener(target, \"dragleave\", (event) => {\n      var _a;\n      if (!isDataTypeIncluded)\n        return;\n      event.preventDefault();\n      counter -= 1;\n      if (counter === 0)\n        isOverDropZone.value = false;\n      (_a = _options.onLeave) == null ? void 0 : _a.call(_options, getFiles(event), event);\n    });\n    useEventListener(target, \"drop\", (event) => {\n      var _a;\n      event.preventDefault();\n      counter = 0;\n      isOverDropZone.value = false;\n      (_a = _options.onDrop) == null ? void 0 : _a.call(_options, getFiles(event), event);\n    });\n  }\n  return {\n    files,\n    isOverDropZone\n  };\n}\n\nfunction useResizeObserver(target, callback, options = {}) {\n  const { window = defaultWindow, ...observerOptions } = options;\n  let observer;\n  const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n  const cleanup = () => {\n    if (observer) {\n      observer.disconnect();\n      observer = void 0;\n    }\n  };\n  const targets = computed(() => Array.isArray(target) ? target.map((el) => unrefElement(el)) : [unrefElement(target)]);\n  const stopWatch = watch(\n    targets,\n    (els) => {\n      cleanup();\n      if (isSupported.value && window) {\n        observer = new ResizeObserver(callback);\n        for (const _el of els)\n          _el && observer.observe(_el, observerOptions);\n      }\n    },\n    { immediate: true, flush: \"post\" }\n  );\n  const stop = () => {\n    cleanup();\n    stopWatch();\n  };\n  tryOnScopeDispose(stop);\n  return {\n    isSupported,\n    stop\n  };\n}\n\nfunction useElementBounding(target, options = {}) {\n  const {\n    reset = true,\n    windowResize = true,\n    windowScroll = true,\n    immediate = true\n  } = options;\n  const height = ref(0);\n  const bottom = ref(0);\n  const left = ref(0);\n  const right = ref(0);\n  const top = ref(0);\n  const width = ref(0);\n  const x = ref(0);\n  const y = ref(0);\n  function update() {\n    const el = unrefElement(target);\n    if (!el) {\n      if (reset) {\n        height.value = 0;\n        bottom.value = 0;\n        left.value = 0;\n        right.value = 0;\n        top.value = 0;\n        width.value = 0;\n        x.value = 0;\n        y.value = 0;\n      }\n      return;\n    }\n    const rect = el.getBoundingClientRect();\n    height.value = rect.height;\n    bottom.value = rect.bottom;\n    left.value = rect.left;\n    right.value = rect.right;\n    top.value = rect.top;\n    width.value = rect.width;\n    x.value = rect.x;\n    y.value = rect.y;\n  }\n  useResizeObserver(target, update);\n  watch(() => unrefElement(target), (ele) => !ele && update());\n  useMutationObserver(target, update, {\n    attributeFilter: [\"style\", \"class\"]\n  });\n  if (windowScroll)\n    useEventListener(\"scroll\", update, { capture: true, passive: true });\n  if (windowResize)\n    useEventListener(\"resize\", update, { passive: true });\n  tryOnMounted(() => {\n    if (immediate)\n      update();\n  });\n  return {\n    height,\n    bottom,\n    left,\n    right,\n    top,\n    width,\n    x,\n    y,\n    update\n  };\n}\n\nfunction useElementByPoint(options) {\n  const {\n    x,\n    y,\n    document = defaultDocument,\n    multiple,\n    interval = \"requestAnimationFrame\",\n    immediate = true\n  } = options;\n  const isSupported = useSupported(() => {\n    if (toValue(multiple))\n      return document && \"elementsFromPoint\" in document;\n    return document && \"elementFromPoint\" in document;\n  });\n  const element = ref(null);\n  const cb = () => {\n    var _a, _b;\n    element.value = toValue(multiple) ? (_a = document == null ? void 0 : document.elementsFromPoint(toValue(x), toValue(y))) != null ? _a : [] : (_b = document == null ? void 0 : document.elementFromPoint(toValue(x), toValue(y))) != null ? _b : null;\n  };\n  const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n  return {\n    isSupported,\n    element,\n    ...controls\n  };\n}\n\nfunction useElementHover(el, options = {}) {\n  const {\n    delayEnter = 0,\n    delayLeave = 0,\n    window = defaultWindow\n  } = options;\n  const isHovered = ref(false);\n  let timer;\n  const toggle = (entering) => {\n    const delay = entering ? delayEnter : delayLeave;\n    if (timer) {\n      clearTimeout(timer);\n      timer = void 0;\n    }\n    if (delay)\n      timer = setTimeout(() => isHovered.value = entering, delay);\n    else\n      isHovered.value = entering;\n  };\n  if (!window)\n    return isHovered;\n  useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n  useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n  return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n  const { window = defaultWindow, box = \"content-box\" } = options;\n  const isSVG = computed(() => {\n    var _a, _b;\n    return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n  });\n  const width = ref(initialSize.width);\n  const height = ref(initialSize.height);\n  const { stop: stop1 } = useResizeObserver(\n    target,\n    ([entry]) => {\n      const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n      if (window && isSVG.value) {\n        const $elem = unrefElement(target);\n        if ($elem) {\n          const styles = window.getComputedStyle($elem);\n          width.value = Number.parseFloat(styles.width);\n          height.value = Number.parseFloat(styles.height);\n        }\n      } else {\n        if (boxSize) {\n          const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize];\n          width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n          height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n        } else {\n          width.value = entry.contentRect.width;\n          height.value = entry.contentRect.height;\n        }\n      }\n    },\n    options\n  );\n  tryOnMounted(() => {\n    const ele = unrefElement(target);\n    if (ele) {\n      width.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n      height.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n    }\n  });\n  const stop2 = watch(\n    () => unrefElement(target),\n    (ele) => {\n      width.value = ele ? initialSize.width : 0;\n      height.value = ele ? initialSize.height : 0;\n    }\n  );\n  function stop() {\n    stop1();\n    stop2();\n  }\n  return {\n    width,\n    height,\n    stop\n  };\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n  const {\n    root,\n    rootMargin = \"0px\",\n    threshold = 0.1,\n    window = defaultWindow,\n    immediate = true\n  } = options;\n  const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n  const targets = computed(() => {\n    const _target = toValue(target);\n    return (Array.isArray(_target) ? _target : [_target]).map(unrefElement).filter(notNullish);\n  });\n  let cleanup = noop;\n  const isActive = ref(immediate);\n  const stopWatch = isSupported.value ? watch(\n    () => [targets.value, unrefElement(root), isActive.value],\n    ([targets2, root2]) => {\n      cleanup();\n      if (!isActive.value)\n        return;\n      if (!targets2.length)\n        return;\n      const observer = new IntersectionObserver(\n        callback,\n        {\n          root: unrefElement(root2),\n          rootMargin,\n          threshold\n        }\n      );\n      targets2.forEach((el) => el && observer.observe(el));\n      cleanup = () => {\n        observer.disconnect();\n        cleanup = noop;\n      };\n    },\n    { immediate, flush: \"post\" }\n  ) : noop;\n  const stop = () => {\n    cleanup();\n    stopWatch();\n    isActive.value = false;\n  };\n  tryOnScopeDispose(stop);\n  return {\n    isSupported,\n    isActive,\n    pause() {\n      cleanup();\n      isActive.value = false;\n    },\n    resume() {\n      isActive.value = true;\n    },\n    stop\n  };\n}\n\nfunction useElementVisibility(element, options = {}) {\n  const { window = defaultWindow, scrollTarget, threshold = 0 } = options;\n  const elementIsVisible = ref(false);\n  useIntersectionObserver(\n    element,\n    (intersectionObserverEntries) => {\n      let isIntersecting = elementIsVisible.value;\n      let latestTime = 0;\n      for (const entry of intersectionObserverEntries) {\n        if (entry.time >= latestTime) {\n          latestTime = entry.time;\n          isIntersecting = entry.isIntersecting;\n        }\n      }\n      elementIsVisible.value = isIntersecting;\n    },\n    {\n      root: scrollTarget,\n      window,\n      threshold\n    }\n  );\n  return elementIsVisible;\n}\n\nconst events = /* @__PURE__ */ new Map();\n\nfunction useEventBus(key) {\n  const scope = getCurrentScope();\n  function on(listener) {\n    var _a;\n    const listeners = events.get(key) || /* @__PURE__ */ new Set();\n    listeners.add(listener);\n    events.set(key, listeners);\n    const _off = () => off(listener);\n    (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off);\n    return _off;\n  }\n  function once(listener) {\n    function _listener(...args) {\n      off(_listener);\n      listener(...args);\n    }\n    return on(_listener);\n  }\n  function off(listener) {\n    const listeners = events.get(key);\n    if (!listeners)\n      return;\n    listeners.delete(listener);\n    if (!listeners.size)\n      reset();\n  }\n  function reset() {\n    events.delete(key);\n  }\n  function emit(event, payload) {\n    var _a;\n    (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload));\n  }\n  return { on, once, off, emit, reset };\n}\n\nfunction resolveNestedOptions$1(options) {\n  if (options === true)\n    return {};\n  return options;\n}\nfunction useEventSource(url, events = [], options = {}) {\n  const event = ref(null);\n  const data = ref(null);\n  const status = ref(\"CONNECTING\");\n  const eventSource = ref(null);\n  const error = shallowRef(null);\n  const urlRef = toRef(url);\n  let explicitlyClosed = false;\n  let retried = 0;\n  const {\n    withCredentials = false,\n    immediate = true\n  } = options;\n  const close = () => {\n    if (isClient && eventSource.value) {\n      eventSource.value.close();\n      eventSource.value = null;\n      status.value = \"CLOSED\";\n      explicitlyClosed = true;\n    }\n  };\n  const _init = () => {\n    if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n      return;\n    const es = new EventSource(urlRef.value, { withCredentials });\n    status.value = \"CONNECTING\";\n    eventSource.value = es;\n    es.onopen = () => {\n      status.value = \"OPEN\";\n      error.value = null;\n    };\n    es.onerror = (e) => {\n      status.value = \"CLOSED\";\n      error.value = e;\n      if (es.readyState === 2 && !explicitlyClosed && options.autoReconnect) {\n        es.close();\n        const {\n          retries = -1,\n          delay = 1e3,\n          onFailed\n        } = resolveNestedOptions$1(options.autoReconnect);\n        retried += 1;\n        if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n          setTimeout(_init, delay);\n        else if (typeof retries === \"function\" && retries())\n          setTimeout(_init, delay);\n        else\n          onFailed == null ? void 0 : onFailed();\n      }\n    };\n    es.onmessage = (e) => {\n      event.value = null;\n      data.value = e.data;\n    };\n    for (const event_name of events) {\n      useEventListener(es, event_name, (e) => {\n        event.value = event_name;\n        data.value = e.data || null;\n      });\n    }\n  };\n  const open = () => {\n    if (!isClient)\n      return;\n    close();\n    explicitlyClosed = false;\n    retried = 0;\n    _init();\n  };\n  if (immediate)\n    watch(urlRef, open, { immediate: true });\n  tryOnScopeDispose(close);\n  return {\n    eventSource,\n    event,\n    data,\n    status,\n    error,\n    open,\n    close\n  };\n}\n\nfunction useEyeDropper(options = {}) {\n  const { initialValue = \"\" } = options;\n  const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n  const sRGBHex = ref(initialValue);\n  async function open(openOptions) {\n    if (!isSupported.value)\n      return;\n    const eyeDropper = new window.EyeDropper();\n    const result = await eyeDropper.open(openOptions);\n    sRGBHex.value = result.sRGBHex;\n    return result;\n  }\n  return { isSupported, sRGBHex, open };\n}\n\nfunction useFavicon(newIcon = null, options = {}) {\n  const {\n    baseUrl = \"\",\n    rel = \"icon\",\n    document = defaultDocument\n  } = options;\n  const favicon = toRef(newIcon);\n  const applyIcon = (icon) => {\n    const elements = document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`);\n    if (!elements || elements.length === 0) {\n      const link = document == null ? void 0 : document.createElement(\"link\");\n      if (link) {\n        link.rel = rel;\n        link.href = `${baseUrl}${icon}`;\n        link.type = `image/${icon.split(\".\").pop()}`;\n        document == null ? void 0 : document.head.append(link);\n      }\n      return;\n    }\n    elements == null ? void 0 : elements.forEach((el) => el.href = `${baseUrl}${icon}`);\n  };\n  watch(\n    favicon,\n    (i, o) => {\n      if (typeof i === \"string\" && i !== o)\n        applyIcon(i);\n    },\n    { immediate: true }\n  );\n  return favicon;\n}\n\nconst payloadMapping = {\n  json: \"application/json\",\n  text: \"text/plain\"\n};\nfunction isFetchOptions(obj) {\n  return obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\", \"updateDataOnError\");\n}\nfunction isAbsoluteURL(url) {\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\nfunction headersToObject(headers) {\n  if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n    return Object.fromEntries(headers.entries());\n  return headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n  if (combination === \"overwrite\") {\n    return async (ctx) => {\n      const callback = callbacks[callbacks.length - 1];\n      if (callback)\n        return { ...ctx, ...await callback(ctx) };\n      return ctx;\n    };\n  } else {\n    return async (ctx) => {\n      for (const callback of callbacks) {\n        if (callback)\n          ctx = { ...ctx, ...await callback(ctx) };\n      }\n      return ctx;\n    };\n  }\n}\nfunction createFetch(config = {}) {\n  const _combination = config.combination || \"chain\";\n  const _options = config.options || {};\n  const _fetchOptions = config.fetchOptions || {};\n  function useFactoryFetch(url, ...args) {\n    const computedUrl = computed(() => {\n      const baseUrl = toValue(config.baseUrl);\n      const targetUrl = toValue(url);\n      return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n    });\n    let options = _options;\n    let fetchOptions = _fetchOptions;\n    if (args.length > 0) {\n      if (isFetchOptions(args[0])) {\n        options = {\n          ...options,\n          ...args[0],\n          beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n          afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n          onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n        };\n      } else {\n        fetchOptions = {\n          ...fetchOptions,\n          ...args[0],\n          headers: {\n            ...headersToObject(fetchOptions.headers) || {},\n            ...headersToObject(args[0].headers) || {}\n          }\n        };\n      }\n    }\n    if (args.length > 1 && isFetchOptions(args[1])) {\n      options = {\n        ...options,\n        ...args[1],\n        beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n        afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n        onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n      };\n    }\n    return useFetch(computedUrl, fetchOptions, options);\n  }\n  return useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n  var _a;\n  const supportsAbort = typeof AbortController === \"function\";\n  let fetchOptions = {};\n  let options = {\n    immediate: true,\n    refetch: false,\n    timeout: 0,\n    updateDataOnError: false\n  };\n  const config = {\n    method: \"GET\",\n    type: \"text\",\n    payload: void 0\n  };\n  if (args.length > 0) {\n    if (isFetchOptions(args[0]))\n      options = { ...options, ...args[0] };\n    else\n      fetchOptions = args[0];\n  }\n  if (args.length > 1) {\n    if (isFetchOptions(args[1]))\n      options = { ...options, ...args[1] };\n  }\n  const {\n    fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,\n    initialData,\n    timeout\n  } = options;\n  const responseEvent = createEventHook();\n  const errorEvent = createEventHook();\n  const finallyEvent = createEventHook();\n  const isFinished = ref(false);\n  const isFetching = ref(false);\n  const aborted = ref(false);\n  const statusCode = ref(null);\n  const response = shallowRef(null);\n  const error = shallowRef(null);\n  const data = shallowRef(initialData || null);\n  const canAbort = computed(() => supportsAbort && isFetching.value);\n  let controller;\n  let timer;\n  const abort = () => {\n    if (supportsAbort) {\n      controller == null ? void 0 : controller.abort();\n      controller = new AbortController();\n      controller.signal.onabort = () => aborted.value = true;\n      fetchOptions = {\n        ...fetchOptions,\n        signal: controller.signal\n      };\n    }\n  };\n  const loading = (isLoading) => {\n    isFetching.value = isLoading;\n    isFinished.value = !isLoading;\n  };\n  if (timeout)\n    timer = useTimeoutFn(abort, timeout, { immediate: false });\n  let executeCounter = 0;\n  const execute = async (throwOnFailed = false) => {\n    var _a2, _b;\n    abort();\n    loading(true);\n    error.value = null;\n    statusCode.value = null;\n    aborted.value = false;\n    executeCounter += 1;\n    const currentExecuteCounter = executeCounter;\n    const defaultFetchOptions = {\n      method: config.method,\n      headers: {}\n    };\n    if (config.payload) {\n      const headers = headersToObject(defaultFetchOptions.headers);\n      const payload = toValue(config.payload);\n      if (!config.payloadType && payload && Object.getPrototypeOf(payload) === Object.prototype && !(payload instanceof FormData))\n        config.payloadType = \"json\";\n      if (config.payloadType)\n        headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n      defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n    }\n    let isCanceled = false;\n    const context = {\n      url: toValue(url),\n      options: {\n        ...defaultFetchOptions,\n        ...fetchOptions\n      },\n      cancel: () => {\n        isCanceled = true;\n      }\n    };\n    if (options.beforeFetch)\n      Object.assign(context, await options.beforeFetch(context));\n    if (isCanceled || !fetch) {\n      loading(false);\n      return Promise.resolve(null);\n    }\n    let responseData = null;\n    if (timer)\n      timer.start();\n    return fetch(\n      context.url,\n      {\n        ...defaultFetchOptions,\n        ...context.options,\n        headers: {\n          ...headersToObject(defaultFetchOptions.headers),\n          ...headersToObject((_b = context.options) == null ? void 0 : _b.headers)\n        }\n      }\n    ).then(async (fetchResponse) => {\n      response.value = fetchResponse;\n      statusCode.value = fetchResponse.status;\n      responseData = await fetchResponse.clone()[config.type]();\n      if (!fetchResponse.ok) {\n        data.value = initialData || null;\n        throw new Error(fetchResponse.statusText);\n      }\n      if (options.afterFetch) {\n        ({ data: responseData } = await options.afterFetch({\n          data: responseData,\n          response: fetchResponse\n        }));\n      }\n      data.value = responseData;\n      responseEvent.trigger(fetchResponse);\n      return fetchResponse;\n    }).catch(async (fetchError) => {\n      let errorData = fetchError.message || fetchError.name;\n      if (options.onFetchError) {\n        ({ error: errorData, data: responseData } = await options.onFetchError({\n          data: responseData,\n          error: fetchError,\n          response: response.value\n        }));\n      }\n      error.value = errorData;\n      if (options.updateDataOnError)\n        data.value = responseData;\n      errorEvent.trigger(fetchError);\n      if (throwOnFailed)\n        throw fetchError;\n      return null;\n    }).finally(() => {\n      if (currentExecuteCounter === executeCounter)\n        loading(false);\n      if (timer)\n        timer.stop();\n      finallyEvent.trigger(null);\n    });\n  };\n  const refetch = toRef(options.refetch);\n  watch(\n    [\n      refetch,\n      toRef(url)\n    ],\n    ([refetch2]) => refetch2 && execute(),\n    { deep: true }\n  );\n  const shell = {\n    isFinished: readonly(isFinished),\n    isFetching: readonly(isFetching),\n    statusCode,\n    response,\n    error,\n    data,\n    canAbort,\n    aborted,\n    abort,\n    execute,\n    onFetchResponse: responseEvent.on,\n    onFetchError: errorEvent.on,\n    onFetchFinally: finallyEvent.on,\n    // method\n    get: setMethod(\"GET\"),\n    put: setMethod(\"PUT\"),\n    post: setMethod(\"POST\"),\n    delete: setMethod(\"DELETE\"),\n    patch: setMethod(\"PATCH\"),\n    head: setMethod(\"HEAD\"),\n    options: setMethod(\"OPTIONS\"),\n    // type\n    json: setType(\"json\"),\n    text: setType(\"text\"),\n    blob: setType(\"blob\"),\n    arrayBuffer: setType(\"arrayBuffer\"),\n    formData: setType(\"formData\")\n  };\n  function setMethod(method) {\n    return (payload, payloadType) => {\n      if (!isFetching.value) {\n        config.method = method;\n        config.payload = payload;\n        config.payloadType = payloadType;\n        if (isRef(config.payload)) {\n          watch(\n            [\n              refetch,\n              toRef(config.payload)\n            ],\n            ([refetch2]) => refetch2 && execute(),\n            { deep: true }\n          );\n        }\n        return {\n          ...shell,\n          then(onFulfilled, onRejected) {\n            return waitUntilFinished().then(onFulfilled, onRejected);\n          }\n        };\n      }\n      return void 0;\n    };\n  }\n  function waitUntilFinished() {\n    return new Promise((resolve, reject) => {\n      until(isFinished).toBe(true).then(() => resolve(shell)).catch((error2) => reject(error2));\n    });\n  }\n  function setType(type) {\n    return () => {\n      if (!isFetching.value) {\n        config.type = type;\n        return {\n          ...shell,\n          then(onFulfilled, onRejected) {\n            return waitUntilFinished().then(onFulfilled, onRejected);\n          }\n        };\n      }\n      return void 0;\n    };\n  }\n  if (options.immediate)\n    Promise.resolve().then(() => execute());\n  return {\n    ...shell,\n    then(onFulfilled, onRejected) {\n      return waitUntilFinished().then(onFulfilled, onRejected);\n    }\n  };\n}\nfunction joinPaths(start, end) {\n  if (!start.endsWith(\"/\") && !end.startsWith(\"/\"))\n    return `${start}/${end}`;\n  return `${start}${end}`;\n}\n\nconst DEFAULT_OPTIONS = {\n  multiple: true,\n  accept: \"*\",\n  reset: false,\n  directory: false\n};\nfunction useFileDialog(options = {}) {\n  const {\n    document = defaultDocument\n  } = options;\n  const files = ref(null);\n  const { on: onChange, trigger } = createEventHook();\n  let input;\n  if (document) {\n    input = document.createElement(\"input\");\n    input.type = \"file\";\n    input.onchange = (event) => {\n      const result = event.target;\n      files.value = result.files;\n      trigger(files.value);\n    };\n  }\n  const reset = () => {\n    files.value = null;\n    if (input) {\n      input.value = \"\";\n      trigger(null);\n    }\n  };\n  const open = (localOptions) => {\n    if (!input)\n      return;\n    const _options = {\n      ...DEFAULT_OPTIONS,\n      ...options,\n      ...localOptions\n    };\n    input.multiple = _options.multiple;\n    input.accept = _options.accept;\n    input.webkitdirectory = _options.directory;\n    if (hasOwn(_options, \"capture\"))\n      input.capture = _options.capture;\n    if (_options.reset)\n      reset();\n    input.click();\n  };\n  return {\n    files: readonly(files),\n    open,\n    reset,\n    onChange\n  };\n}\n\nfunction useFileSystemAccess(options = {}) {\n  const {\n    window: _window = defaultWindow,\n    dataType = \"Text\"\n  } = options;\n  const window = _window;\n  const isSupported = useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n  const fileHandle = ref();\n  const data = ref();\n  const file = ref();\n  const fileName = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : \"\";\n  });\n  const fileMIME = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : \"\";\n  });\n  const fileSize = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0;\n  });\n  const fileLastModified = computed(() => {\n    var _a, _b;\n    return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0;\n  });\n  async function open(_options = {}) {\n    if (!isSupported.value)\n      return;\n    const [handle] = await window.showOpenFilePicker({ ...toValue(options), ..._options });\n    fileHandle.value = handle;\n    await updateData();\n  }\n  async function create(_options = {}) {\n    if (!isSupported.value)\n      return;\n    fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n    data.value = void 0;\n    await updateData();\n  }\n  async function save(_options = {}) {\n    if (!isSupported.value)\n      return;\n    if (!fileHandle.value)\n      return saveAs(_options);\n    if (data.value) {\n      const writableStream = await fileHandle.value.createWritable();\n      await writableStream.write(data.value);\n      await writableStream.close();\n    }\n    await updateFile();\n  }\n  async function saveAs(_options = {}) {\n    if (!isSupported.value)\n      return;\n    fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n    if (data.value) {\n      const writableStream = await fileHandle.value.createWritable();\n      await writableStream.write(data.value);\n      await writableStream.close();\n    }\n    await updateFile();\n  }\n  async function updateFile() {\n    var _a;\n    file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile());\n  }\n  async function updateData() {\n    var _a, _b;\n    await updateFile();\n    const type = toValue(dataType);\n    if (type === \"Text\")\n      data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n    else if (type === \"ArrayBuffer\")\n      data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n    else if (type === \"Blob\")\n      data.value = file.value;\n  }\n  watch(() => toValue(dataType), updateData);\n  return {\n    isSupported,\n    data,\n    file,\n    fileName,\n    fileMIME,\n    fileSize,\n    fileLastModified,\n    open,\n    create,\n    save,\n    saveAs,\n    updateData\n  };\n}\n\nfunction useFocus(target, options = {}) {\n  const { initialValue = false, focusVisible = false } = options;\n  const innerFocused = ref(false);\n  const targetElement = computed(() => unrefElement(target));\n  useEventListener(targetElement, \"focus\", (event) => {\n    var _a, _b;\n    if (!focusVisible || ((_b = (_a = event.target).matches) == null ? void 0 : _b.call(_a, \":focus-visible\")))\n      innerFocused.value = true;\n  });\n  useEventListener(targetElement, \"blur\", () => innerFocused.value = false);\n  const focused = computed({\n    get: () => innerFocused.value,\n    set(value) {\n      var _a, _b;\n      if (!value && innerFocused.value)\n        (_a = targetElement.value) == null ? void 0 : _a.blur();\n      else if (value && !innerFocused.value)\n        (_b = targetElement.value) == null ? void 0 : _b.focus();\n    }\n  });\n  watch(\n    targetElement,\n    () => {\n      focused.value = initialValue;\n    },\n    { immediate: true, flush: \"post\" }\n  );\n  return { focused };\n}\n\nfunction useFocusWithin(target, options = {}) {\n  const activeElement = useActiveElement(options);\n  const targetElement = computed(() => unrefElement(target));\n  const focused = computed(() => targetElement.value && activeElement.value ? targetElement.value.contains(activeElement.value) : false);\n  return { focused };\n}\n\nfunction useFps(options) {\n  var _a;\n  const fps = ref(0);\n  if (typeof performance === \"undefined\")\n    return fps;\n  const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;\n  let last = performance.now();\n  let ticks = 0;\n  useRafFn(() => {\n    ticks += 1;\n    if (ticks >= every) {\n      const now = performance.now();\n      const diff = now - last;\n      fps.value = Math.round(1e3 / (diff / ticks));\n      last = now;\n      ticks = 0;\n    }\n  });\n  return fps;\n}\n\nconst eventHandlers = [\n  \"fullscreenchange\",\n  \"webkitfullscreenchange\",\n  \"webkitendfullscreen\",\n  \"mozfullscreenchange\",\n  \"MSFullscreenChange\"\n];\nfunction useFullscreen(target, options = {}) {\n  const {\n    document = defaultDocument,\n    autoExit = false\n  } = options;\n  const targetRef = computed(() => {\n    var _a;\n    return (_a = unrefElement(target)) != null ? _a : document == null ? void 0 : document.querySelector(\"html\");\n  });\n  const isFullscreen = ref(false);\n  const requestMethod = computed(() => {\n    return [\n      \"requestFullscreen\",\n      \"webkitRequestFullscreen\",\n      \"webkitEnterFullscreen\",\n      \"webkitEnterFullScreen\",\n      \"webkitRequestFullScreen\",\n      \"mozRequestFullScreen\",\n      \"msRequestFullscreen\"\n    ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n  });\n  const exitMethod = computed(() => {\n    return [\n      \"exitFullscreen\",\n      \"webkitExitFullscreen\",\n      \"webkitExitFullScreen\",\n      \"webkitCancelFullScreen\",\n      \"mozCancelFullScreen\",\n      \"msExitFullscreen\"\n    ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n  });\n  const fullscreenEnabled = computed(() => {\n    return [\n      \"fullScreen\",\n      \"webkitIsFullScreen\",\n      \"webkitDisplayingFullscreen\",\n      \"mozFullScreen\",\n      \"msFullscreenElement\"\n    ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n  });\n  const fullscreenElementMethod = [\n    \"fullscreenElement\",\n    \"webkitFullscreenElement\",\n    \"mozFullScreenElement\",\n    \"msFullscreenElement\"\n  ].find((m) => document && m in document);\n  const isSupported = useSupported(() => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0);\n  const isCurrentElementFullScreen = () => {\n    if (fullscreenElementMethod)\n      return (document == null ? void 0 : document[fullscreenElementMethod]) === targetRef.value;\n    return false;\n  };\n  const isElementFullScreen = () => {\n    if (fullscreenEnabled.value) {\n      if (document && document[fullscreenEnabled.value] != null) {\n        return document[fullscreenEnabled.value];\n      } else {\n        const target2 = targetRef.value;\n        if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) {\n          return Boolean(target2[fullscreenEnabled.value]);\n        }\n      }\n    }\n    return false;\n  };\n  async function exit() {\n    if (!isSupported.value || !isFullscreen.value)\n      return;\n    if (exitMethod.value) {\n      if ((document == null ? void 0 : document[exitMethod.value]) != null) {\n        await document[exitMethod.value]();\n      } else {\n        const target2 = targetRef.value;\n        if ((target2 == null ? void 0 : target2[exitMethod.value]) != null)\n          await target2[exitMethod.value]();\n      }\n    }\n    isFullscreen.value = false;\n  }\n  async function enter() {\n    if (!isSupported.value || isFullscreen.value)\n      return;\n    if (isElementFullScreen())\n      await exit();\n    const target2 = targetRef.value;\n    if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) {\n      await target2[requestMethod.value]();\n      isFullscreen.value = true;\n    }\n  }\n  async function toggle() {\n    await (isFullscreen.value ? exit() : enter());\n  }\n  const handlerCallback = () => {\n    const isElementFullScreenValue = isElementFullScreen();\n    if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen())\n      isFullscreen.value = isElementFullScreenValue;\n  };\n  useEventListener(document, eventHandlers, handlerCallback, false);\n  useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, false);\n  if (autoExit)\n    tryOnScopeDispose(exit);\n  return {\n    isSupported,\n    isFullscreen,\n    enter,\n    exit,\n    toggle\n  };\n}\n\nfunction mapGamepadToXbox360Controller(gamepad) {\n  return computed(() => {\n    if (gamepad.value) {\n      return {\n        buttons: {\n          a: gamepad.value.buttons[0],\n          b: gamepad.value.buttons[1],\n          x: gamepad.value.buttons[2],\n          y: gamepad.value.buttons[3]\n        },\n        bumper: {\n          left: gamepad.value.buttons[4],\n          right: gamepad.value.buttons[5]\n        },\n        triggers: {\n          left: gamepad.value.buttons[6],\n          right: gamepad.value.buttons[7]\n        },\n        stick: {\n          left: {\n            horizontal: gamepad.value.axes[0],\n            vertical: gamepad.value.axes[1],\n            button: gamepad.value.buttons[10]\n          },\n          right: {\n            horizontal: gamepad.value.axes[2],\n            vertical: gamepad.value.axes[3],\n            button: gamepad.value.buttons[11]\n          }\n        },\n        dpad: {\n          up: gamepad.value.buttons[12],\n          down: gamepad.value.buttons[13],\n          left: gamepad.value.buttons[14],\n          right: gamepad.value.buttons[15]\n        },\n        back: gamepad.value.buttons[8],\n        start: gamepad.value.buttons[9]\n      };\n    }\n    return null;\n  });\n}\nfunction useGamepad(options = {}) {\n  const {\n    navigator = defaultNavigator\n  } = options;\n  const isSupported = useSupported(() => navigator && \"getGamepads\" in navigator);\n  const gamepads = ref([]);\n  const onConnectedHook = createEventHook();\n  const onDisconnectedHook = createEventHook();\n  const stateFromGamepad = (gamepad) => {\n    const hapticActuators = [];\n    const vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n    if (vibrationActuator)\n      hapticActuators.push(vibrationActuator);\n    if (gamepad.hapticActuators)\n      hapticActuators.push(...gamepad.hapticActuators);\n    return {\n      ...gamepad,\n      id: gamepad.id,\n      hapticActuators,\n      axes: gamepad.axes.map((axes) => axes),\n      buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value })),\n      index: gamepad.index\n    };\n  };\n  const updateGamepadState = () => {\n    const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n    for (const gamepad of _gamepads) {\n      if (gamepad && gamepads.value[gamepad.index])\n        gamepads.value[gamepad.index] = stateFromGamepad(gamepad);\n    }\n  };\n  const { isActive, pause, resume } = useRafFn(updateGamepadState);\n  const onGamepadConnected = (gamepad) => {\n    if (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n      gamepads.value.push(stateFromGamepad(gamepad));\n      onConnectedHook.trigger(gamepad.index);\n    }\n    resume();\n  };\n  const onGamepadDisconnected = (gamepad) => {\n    gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n    onDisconnectedHook.trigger(gamepad.index);\n  };\n  useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad));\n  useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad));\n  tryOnMounted(() => {\n    const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n    for (const gamepad of _gamepads) {\n      if (gamepad && gamepads.value[gamepad.index])\n        onGamepadConnected(gamepad);\n    }\n  });\n  pause();\n  return {\n    isSupported,\n    onConnected: onConnectedHook.on,\n    onDisconnected: onDisconnectedHook.on,\n    gamepads,\n    pause,\n    resume,\n    isActive\n  };\n}\n\nfunction useGeolocation(options = {}) {\n  const {\n    enableHighAccuracy = true,\n    maximumAge = 3e4,\n    timeout = 27e3,\n    navigator = defaultNavigator,\n    immediate = true\n  } = options;\n  const isSupported = useSupported(() => navigator && \"geolocation\" in navigator);\n  const locatedAt = ref(null);\n  const error = shallowRef(null);\n  const coords = ref({\n    accuracy: 0,\n    latitude: Number.POSITIVE_INFINITY,\n    longitude: Number.POSITIVE_INFINITY,\n    altitude: null,\n    altitudeAccuracy: null,\n    heading: null,\n    speed: null\n  });\n  function updatePosition(position) {\n    locatedAt.value = position.timestamp;\n    coords.value = position.coords;\n    error.value = null;\n  }\n  let watcher;\n  function resume() {\n    if (isSupported.value) {\n      watcher = navigator.geolocation.watchPosition(\n        updatePosition,\n        (err) => error.value = err,\n        {\n          enableHighAccuracy,\n          maximumAge,\n          timeout\n        }\n      );\n    }\n  }\n  if (immediate)\n    resume();\n  function pause() {\n    if (watcher && navigator)\n      navigator.geolocation.clearWatch(watcher);\n  }\n  tryOnScopeDispose(() => {\n    pause();\n  });\n  return {\n    isSupported,\n    coords,\n    locatedAt,\n    error,\n    resume,\n    pause\n  };\n}\n\nconst defaultEvents$1 = [\"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\"];\nconst oneMinute = 6e4;\nfunction useIdle(timeout = oneMinute, options = {}) {\n  const {\n    initialState = false,\n    listenForVisibilityChange = true,\n    events = defaultEvents$1,\n    window = defaultWindow,\n    eventFilter = throttleFilter(50)\n  } = options;\n  const idle = ref(initialState);\n  const lastActive = ref(timestamp());\n  let timer;\n  const reset = () => {\n    idle.value = false;\n    clearTimeout(timer);\n    timer = setTimeout(() => idle.value = true, timeout);\n  };\n  const onEvent = createFilterWrapper(\n    eventFilter,\n    () => {\n      lastActive.value = timestamp();\n      reset();\n    }\n  );\n  if (window) {\n    const document = window.document;\n    for (const event of events)\n      useEventListener(window, event, onEvent, { passive: true });\n    if (listenForVisibilityChange) {\n      useEventListener(document, \"visibilitychange\", () => {\n        if (!document.hidden)\n          onEvent();\n      });\n    }\n    reset();\n  }\n  return {\n    idle,\n    lastActive,\n    reset\n  };\n}\n\nasync function loadImage(options) {\n  return new Promise((resolve, reject) => {\n    const img = new Image();\n    const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy } = options;\n    img.src = src;\n    if (srcset)\n      img.srcset = srcset;\n    if (sizes)\n      img.sizes = sizes;\n    if (clazz)\n      img.className = clazz;\n    if (loading)\n      img.loading = loading;\n    if (crossorigin)\n      img.crossOrigin = crossorigin;\n    if (referrerPolicy)\n      img.referrerPolicy = referrerPolicy;\n    img.onload = () => resolve(img);\n    img.onerror = reject;\n  });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n  const state = useAsyncState(\n    () => loadImage(toValue(options)),\n    void 0,\n    {\n      resetOnExecute: true,\n      ...asyncStateOptions\n    }\n  );\n  watch(\n    () => toValue(options),\n    () => state.execute(asyncStateOptions.delay),\n    { deep: true }\n  );\n  return state;\n}\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n  const {\n    throttle = 0,\n    idle = 200,\n    onStop = noop,\n    onScroll = noop,\n    offset = {\n      left: 0,\n      right: 0,\n      top: 0,\n      bottom: 0\n    },\n    eventListenerOptions = {\n      capture: false,\n      passive: true\n    },\n    behavior = \"auto\",\n    window = defaultWindow,\n    onError = (e) => {\n      console.error(e);\n    }\n  } = options;\n  const internalX = ref(0);\n  const internalY = ref(0);\n  const x = computed({\n    get() {\n      return internalX.value;\n    },\n    set(x2) {\n      scrollTo(x2, void 0);\n    }\n  });\n  const y = computed({\n    get() {\n      return internalY.value;\n    },\n    set(y2) {\n      scrollTo(void 0, y2);\n    }\n  });\n  function scrollTo(_x, _y) {\n    var _a, _b, _c;\n    if (!window)\n      return;\n    const _element = toValue(element);\n    if (!_element)\n      return;\n    (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({\n      top: (_a = toValue(_y)) != null ? _a : y.value,\n      left: (_b = toValue(_x)) != null ? _b : x.value,\n      behavior: toValue(behavior)\n    });\n  }\n  const isScrolling = ref(false);\n  const arrivedState = reactive({\n    left: true,\n    right: false,\n    top: true,\n    bottom: false\n  });\n  const directions = reactive({\n    left: false,\n    right: false,\n    top: false,\n    bottom: false\n  });\n  const onScrollEnd = (e) => {\n    if (!isScrolling.value)\n      return;\n    isScrolling.value = false;\n    directions.left = false;\n    directions.right = false;\n    directions.top = false;\n    directions.bottom = false;\n    onStop(e);\n  };\n  const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n  const setArrivedState = (target) => {\n    var _a;\n    if (!window)\n      return;\n    const el = ((_a = target == null ? void 0 : target.document) == null ? void 0 : _a.documentElement) || (target == null ? void 0 : target.documentElement) || unrefElement(target);\n    const { display, flexDirection } = getComputedStyle(el);\n    const scrollLeft = el.scrollLeft;\n    directions.left = scrollLeft < internalX.value;\n    directions.right = scrollLeft > internalX.value;\n    const left = Math.abs(scrollLeft) <= (offset.left || 0);\n    const right = Math.abs(scrollLeft) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n    if (display === \"flex\" && flexDirection === \"row-reverse\") {\n      arrivedState.left = right;\n      arrivedState.right = left;\n    } else {\n      arrivedState.left = left;\n      arrivedState.right = right;\n    }\n    internalX.value = scrollLeft;\n    let scrollTop = el.scrollTop;\n    if (target === window.document && !scrollTop)\n      scrollTop = window.document.body.scrollTop;\n    directions.top = scrollTop < internalY.value;\n    directions.bottom = scrollTop > internalY.value;\n    const top = Math.abs(scrollTop) <= (offset.top || 0);\n    const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n    if (display === \"flex\" && flexDirection === \"column-reverse\") {\n      arrivedState.top = bottom;\n      arrivedState.bottom = top;\n    } else {\n      arrivedState.top = top;\n      arrivedState.bottom = bottom;\n    }\n    internalY.value = scrollTop;\n  };\n  const onScrollHandler = (e) => {\n    var _a;\n    if (!window)\n      return;\n    const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target;\n    setArrivedState(eventTarget);\n    isScrolling.value = true;\n    onScrollEndDebounced(e);\n    onScroll(e);\n  };\n  useEventListener(\n    element,\n    \"scroll\",\n    throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n    eventListenerOptions\n  );\n  tryOnMounted(() => {\n    try {\n      const _element = toValue(element);\n      if (!_element)\n        return;\n      setArrivedState(_element);\n    } catch (e) {\n      onError(e);\n    }\n  });\n  useEventListener(\n    element,\n    \"scrollend\",\n    onScrollEnd,\n    eventListenerOptions\n  );\n  return {\n    x,\n    y,\n    isScrolling,\n    arrivedState,\n    directions,\n    measure() {\n      const _element = toValue(element);\n      if (window && _element)\n        setArrivedState(_element);\n    }\n  };\n}\n\nfunction resolveElement(el) {\n  if (typeof Window !== \"undefined\" && el instanceof Window)\n    return el.document.documentElement;\n  if (typeof Document !== \"undefined\" && el instanceof Document)\n    return el.documentElement;\n  return el;\n}\n\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n  var _a;\n  const {\n    direction = \"bottom\",\n    interval = 100,\n    canLoadMore = () => true\n  } = options;\n  const state = reactive(useScroll(\n    element,\n    {\n      ...options,\n      offset: {\n        [direction]: (_a = options.distance) != null ? _a : 0,\n        ...options.offset\n      }\n    }\n  ));\n  const promise = ref();\n  const isLoading = computed(() => !!promise.value);\n  const observedElement = computed(() => {\n    return resolveElement(toValue(element));\n  });\n  const isElementVisible = useElementVisibility(observedElement);\n  function checkAndLoad() {\n    state.measure();\n    if (!observedElement.value || !isElementVisible.value || !canLoadMore(observedElement.value))\n      return;\n    const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n    const isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n    if (state.arrivedState[direction] || isNarrower) {\n      if (!promise.value) {\n        promise.value = Promise.all([\n          onLoadMore(state),\n          new Promise((resolve) => setTimeout(resolve, interval))\n        ]).finally(() => {\n          promise.value = null;\n          nextTick(() => checkAndLoad());\n        });\n      }\n    }\n  }\n  watch(\n    () => [state.arrivedState[direction], isElementVisible.value],\n    checkAndLoad,\n    { immediate: true }\n  );\n  return {\n    isLoading\n  };\n}\n\nconst defaultEvents = [\"mousedown\", \"mouseup\", \"keydown\", \"keyup\"];\nfunction useKeyModifier(modifier, options = {}) {\n  const {\n    events = defaultEvents,\n    document = defaultDocument,\n    initial = null\n  } = options;\n  const state = ref(initial);\n  if (document) {\n    events.forEach((listenerEvent) => {\n      useEventListener(document, listenerEvent, (evt) => {\n        if (typeof evt.getModifierState === \"function\")\n          state.value = evt.getModifierState(modifier);\n      });\n    });\n  }\n  return state;\n}\n\nfunction useLocalStorage(key, initialValue, options = {}) {\n  const { window = defaultWindow } = options;\n  return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options);\n}\n\nconst DefaultMagicKeysAliasMap = {\n  ctrl: \"control\",\n  command: \"meta\",\n  cmd: \"meta\",\n  option: \"alt\",\n  up: \"arrowup\",\n  down: \"arrowdown\",\n  left: \"arrowleft\",\n  right: \"arrowright\"\n};\n\nfunction useMagicKeys(options = {}) {\n  const {\n    reactive: useReactive = false,\n    target = defaultWindow,\n    aliasMap = DefaultMagicKeysAliasMap,\n    passive = true,\n    onEventFired = noop\n  } = options;\n  const current = reactive(/* @__PURE__ */ new Set());\n  const obj = {\n    toJSON() {\n      return {};\n    },\n    current\n  };\n  const refs = useReactive ? reactive(obj) : obj;\n  const metaDeps = /* @__PURE__ */ new Set();\n  const usedKeys = /* @__PURE__ */ new Set();\n  function setRefs(key, value) {\n    if (key in refs) {\n      if (useReactive)\n        refs[key] = value;\n      else\n        refs[key].value = value;\n    }\n  }\n  function reset() {\n    current.clear();\n    for (const key of usedKeys)\n      setRefs(key, false);\n  }\n  function updateRefs(e, value) {\n    var _a, _b;\n    const key = (_a = e.key) == null ? void 0 : _a.toLowerCase();\n    const code = (_b = e.code) == null ? void 0 : _b.toLowerCase();\n    const values = [code, key].filter(Boolean);\n    if (key) {\n      if (value)\n        current.add(key);\n      else\n        current.delete(key);\n    }\n    for (const key2 of values) {\n      usedKeys.add(key2);\n      setRefs(key2, value);\n    }\n    if (key === \"meta\" && !value) {\n      metaDeps.forEach((key2) => {\n        current.delete(key2);\n        setRefs(key2, false);\n      });\n      metaDeps.clear();\n    } else if (typeof e.getModifierState === \"function\" && e.getModifierState(\"Meta\") && value) {\n      [...current, ...values].forEach((key2) => metaDeps.add(key2));\n    }\n  }\n  useEventListener(target, \"keydown\", (e) => {\n    updateRefs(e, true);\n    return onEventFired(e);\n  }, { passive });\n  useEventListener(target, \"keyup\", (e) => {\n    updateRefs(e, false);\n    return onEventFired(e);\n  }, { passive });\n  useEventListener(\"blur\", reset, { passive: true });\n  useEventListener(\"focus\", reset, { passive: true });\n  const proxy = new Proxy(\n    refs,\n    {\n      get(target2, prop, rec) {\n        if (typeof prop !== \"string\")\n          return Reflect.get(target2, prop, rec);\n        prop = prop.toLowerCase();\n        if (prop in aliasMap)\n          prop = aliasMap[prop];\n        if (!(prop in refs)) {\n          if (/[+_-]/.test(prop)) {\n            const keys = prop.split(/[+_-]/g).map((i) => i.trim());\n            refs[prop] = computed(() => keys.every((key) => toValue(proxy[key])));\n          } else {\n            refs[prop] = ref(false);\n          }\n        }\n        const r = Reflect.get(target2, prop, rec);\n        return useReactive ? toValue(r) : r;\n      }\n    }\n  );\n  return proxy;\n}\n\nfunction usingElRef(source, cb) {\n  if (toValue(source))\n    cb(toValue(source));\n}\nfunction timeRangeToArray(timeRanges) {\n  let ranges = [];\n  for (let i = 0; i < timeRanges.length; ++i)\n    ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n  return ranges;\n}\nfunction tracksToArray(tracks) {\n  return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));\n}\nconst defaultOptions = {\n  src: \"\",\n  tracks: []\n};\nfunction useMediaControls(target, options = {}) {\n  options = {\n    ...defaultOptions,\n    ...options\n  };\n  const {\n    document = defaultDocument\n  } = options;\n  const currentTime = ref(0);\n  const duration = ref(0);\n  const seeking = ref(false);\n  const volume = ref(1);\n  const waiting = ref(false);\n  const ended = ref(false);\n  const playing = ref(false);\n  const rate = ref(1);\n  const stalled = ref(false);\n  const buffered = ref([]);\n  const tracks = ref([]);\n  const selectedTrack = ref(-1);\n  const isPictureInPicture = ref(false);\n  const muted = ref(false);\n  const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n  const sourceErrorEvent = createEventHook();\n  const disableTrack = (track) => {\n    usingElRef(target, (el) => {\n      if (track) {\n        const id = typeof track === \"number\" ? track : track.id;\n        el.textTracks[id].mode = \"disabled\";\n      } else {\n        for (let i = 0; i < el.textTracks.length; ++i)\n          el.textTracks[i].mode = \"disabled\";\n      }\n      selectedTrack.value = -1;\n    });\n  };\n  const enableTrack = (track, disableTracks = true) => {\n    usingElRef(target, (el) => {\n      const id = typeof track === \"number\" ? track : track.id;\n      if (disableTracks)\n        disableTrack();\n      el.textTracks[id].mode = \"showing\";\n      selectedTrack.value = id;\n    });\n  };\n  const togglePictureInPicture = () => {\n    return new Promise((resolve, reject) => {\n      usingElRef(target, async (el) => {\n        if (supportsPictureInPicture) {\n          if (!isPictureInPicture.value) {\n            el.requestPictureInPicture().then(resolve).catch(reject);\n          } else {\n            document.exitPictureInPicture().then(resolve).catch(reject);\n          }\n        }\n      });\n    });\n  };\n  watchEffect(() => {\n    if (!document)\n      return;\n    const el = toValue(target);\n    if (!el)\n      return;\n    const src = toValue(options.src);\n    let sources = [];\n    if (!src)\n      return;\n    if (typeof src === \"string\")\n      sources = [{ src }];\n    else if (Array.isArray(src))\n      sources = src;\n    else if (isObject(src))\n      sources = [src];\n    el.querySelectorAll(\"source\").forEach((e) => {\n      e.removeEventListener(\"error\", sourceErrorEvent.trigger);\n      e.remove();\n    });\n    sources.forEach(({ src: src2, type }) => {\n      const source = document.createElement(\"source\");\n      source.setAttribute(\"src\", src2);\n      source.setAttribute(\"type\", type || \"\");\n      source.addEventListener(\"error\", sourceErrorEvent.trigger);\n      el.appendChild(source);\n    });\n    el.load();\n  });\n  tryOnScopeDispose(() => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.querySelectorAll(\"source\").forEach((e) => e.removeEventListener(\"error\", sourceErrorEvent.trigger));\n  });\n  watch([target, volume], () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.volume = volume.value;\n  });\n  watch([target, muted], () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.muted = muted.value;\n  });\n  watch([target, rate], () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.playbackRate = rate.value;\n  });\n  watchEffect(() => {\n    if (!document)\n      return;\n    const textTracks = toValue(options.tracks);\n    const el = toValue(target);\n    if (!textTracks || !textTracks.length || !el)\n      return;\n    el.querySelectorAll(\"track\").forEach((e) => e.remove());\n    textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n      const track = document.createElement(\"track\");\n      track.default = isDefault || false;\n      track.kind = kind;\n      track.label = label;\n      track.src = src;\n      track.srclang = srcLang;\n      if (track.default)\n        selectedTrack.value = i;\n      el.appendChild(track);\n    });\n  });\n  const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    el.currentTime = time;\n  });\n  const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    isPlaying ? el.play() : el.pause();\n  });\n  useEventListener(target, \"timeupdate\", () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime));\n  useEventListener(target, \"durationchange\", () => duration.value = toValue(target).duration);\n  useEventListener(target, \"progress\", () => buffered.value = timeRangeToArray(toValue(target).buffered));\n  useEventListener(target, \"seeking\", () => seeking.value = true);\n  useEventListener(target, \"seeked\", () => seeking.value = false);\n  useEventListener(target, [\"waiting\", \"loadstart\"], () => {\n    waiting.value = true;\n    ignorePlayingUpdates(() => playing.value = false);\n  });\n  useEventListener(target, \"loadeddata\", () => waiting.value = false);\n  useEventListener(target, \"playing\", () => {\n    waiting.value = false;\n    ended.value = false;\n    ignorePlayingUpdates(() => playing.value = true);\n  });\n  useEventListener(target, \"ratechange\", () => rate.value = toValue(target).playbackRate);\n  useEventListener(target, \"stalled\", () => stalled.value = true);\n  useEventListener(target, \"ended\", () => ended.value = true);\n  useEventListener(target, \"pause\", () => ignorePlayingUpdates(() => playing.value = false));\n  useEventListener(target, \"play\", () => ignorePlayingUpdates(() => playing.value = true));\n  useEventListener(target, \"enterpictureinpicture\", () => isPictureInPicture.value = true);\n  useEventListener(target, \"leavepictureinpicture\", () => isPictureInPicture.value = false);\n  useEventListener(target, \"volumechange\", () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    volume.value = el.volume;\n    muted.value = el.muted;\n  });\n  const listeners = [];\n  const stop = watch([target], () => {\n    const el = toValue(target);\n    if (!el)\n      return;\n    stop();\n    listeners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks));\n    listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks));\n    listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks));\n  });\n  tryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n  return {\n    currentTime,\n    duration,\n    waiting,\n    seeking,\n    ended,\n    stalled,\n    buffered,\n    playing,\n    rate,\n    // Volume\n    volume,\n    muted,\n    // Tracks\n    tracks,\n    selectedTrack,\n    enableTrack,\n    disableTrack,\n    // Picture in Picture\n    supportsPictureInPicture,\n    togglePictureInPicture,\n    isPictureInPicture,\n    // Events\n    onSourceError: sourceErrorEvent.on\n  };\n}\n\nfunction getMapVue2Compat() {\n  const data = shallowReactive({});\n  return {\n    get: (key) => data[key],\n    set: (key, value) => set(data, key, value),\n    has: (key) => hasOwn(data, key),\n    delete: (key) => del(data, key),\n    clear: () => {\n      Object.keys(data).forEach((key) => {\n        del(data, key);\n      });\n    }\n  };\n}\nfunction useMemoize(resolver, options) {\n  const initCache = () => {\n    if (options == null ? void 0 : options.cache)\n      return shallowReactive(options.cache);\n    if (isVue2)\n      return getMapVue2Compat();\n    return shallowReactive(/* @__PURE__ */ new Map());\n  };\n  const cache = initCache();\n  const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n  const _loadData = (key, ...args) => {\n    cache.set(key, resolver(...args));\n    return cache.get(key);\n  };\n  const loadData = (...args) => _loadData(generateKey(...args), ...args);\n  const deleteData = (...args) => {\n    cache.delete(generateKey(...args));\n  };\n  const clearData = () => {\n    cache.clear();\n  };\n  const memoized = (...args) => {\n    const key = generateKey(...args);\n    if (cache.has(key))\n      return cache.get(key);\n    return _loadData(key, ...args);\n  };\n  memoized.load = loadData;\n  memoized.delete = deleteData;\n  memoized.clear = clearData;\n  memoized.generateKey = generateKey;\n  memoized.cache = cache;\n  return memoized;\n}\n\nfunction useMemory(options = {}) {\n  const memory = ref();\n  const isSupported = useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n  if (isSupported.value) {\n    const { interval = 1e3 } = options;\n    useIntervalFn(() => {\n      memory.value = performance.memory;\n    }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });\n  }\n  return { isSupported, memory };\n}\n\nconst UseMouseBuiltinExtractors = {\n  page: (event) => [event.pageX, event.pageY],\n  client: (event) => [event.clientX, event.clientY],\n  screen: (event) => [event.screenX, event.screenY],\n  movement: (event) => event instanceof Touch ? null : [event.movementX, event.movementY]\n};\nfunction useMouse(options = {}) {\n  const {\n    type = \"page\",\n    touch = true,\n    resetOnTouchEnds = false,\n    initialValue = { x: 0, y: 0 },\n    window = defaultWindow,\n    target = window,\n    scroll = true,\n    eventFilter\n  } = options;\n  let _prevMouseEvent = null;\n  const x = ref(initialValue.x);\n  const y = ref(initialValue.y);\n  const sourceType = ref(null);\n  const extractor = typeof type === \"function\" ? type : UseMouseBuiltinExtractors[type];\n  const mouseHandler = (event) => {\n    const result = extractor(event);\n    _prevMouseEvent = event;\n    if (result) {\n      [x.value, y.value] = result;\n      sourceType.value = \"mouse\";\n    }\n  };\n  const touchHandler = (event) => {\n    if (event.touches.length > 0) {\n      const result = extractor(event.touches[0]);\n      if (result) {\n        [x.value, y.value] = result;\n        sourceType.value = \"touch\";\n      }\n    }\n  };\n  const scrollHandler = () => {\n    if (!_prevMouseEvent || !window)\n      return;\n    const pos = extractor(_prevMouseEvent);\n    if (_prevMouseEvent instanceof MouseEvent && pos) {\n      x.value = pos[0] + window.scrollX;\n      y.value = pos[1] + window.scrollY;\n    }\n  };\n  const reset = () => {\n    x.value = initialValue.x;\n    y.value = initialValue.y;\n  };\n  const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event);\n  const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event);\n  const scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler();\n  if (target) {\n    const listenerOptions = { passive: true };\n    useEventListener(target, [\"mousemove\", \"dragover\"], mouseHandlerWrapper, listenerOptions);\n    if (touch && type !== \"movement\") {\n      useEventListener(target, [\"touchstart\", \"touchmove\"], touchHandlerWrapper, listenerOptions);\n      if (resetOnTouchEnds)\n        useEventListener(target, \"touchend\", reset, listenerOptions);\n    }\n    if (scroll && type === \"page\")\n      useEventListener(window, \"scroll\", scrollHandlerWrapper, { passive: true });\n  }\n  return {\n    x,\n    y,\n    sourceType\n  };\n}\n\nfunction useMouseInElement(target, options = {}) {\n  const {\n    handleOutside = true,\n    window = defaultWindow\n  } = options;\n  const type = options.type || \"page\";\n  const { x, y, sourceType } = useMouse(options);\n  const targetRef = ref(target != null ? target : window == null ? void 0 : window.document.body);\n  const elementX = ref(0);\n  const elementY = ref(0);\n  const elementPositionX = ref(0);\n  const elementPositionY = ref(0);\n  const elementHeight = ref(0);\n  const elementWidth = ref(0);\n  const isOutside = ref(true);\n  let stop = () => {\n  };\n  if (window) {\n    stop = watch(\n      [targetRef, x, y],\n      () => {\n        const el = unrefElement(targetRef);\n        if (!el)\n          return;\n        const {\n          left,\n          top,\n          width,\n          height\n        } = el.getBoundingClientRect();\n        elementPositionX.value = left + (type === \"page\" ? window.pageXOffset : 0);\n        elementPositionY.value = top + (type === \"page\" ? window.pageYOffset : 0);\n        elementHeight.value = height;\n        elementWidth.value = width;\n        const elX = x.value - elementPositionX.value;\n        const elY = y.value - elementPositionY.value;\n        isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n        if (handleOutside || !isOutside.value) {\n          elementX.value = elX;\n          elementY.value = elY;\n        }\n      },\n      { immediate: true }\n    );\n    useEventListener(document, \"mouseleave\", () => {\n      isOutside.value = true;\n    });\n  }\n  return {\n    x,\n    y,\n    sourceType,\n    elementX,\n    elementY,\n    elementPositionX,\n    elementPositionY,\n    elementHeight,\n    elementWidth,\n    isOutside,\n    stop\n  };\n}\n\nfunction useMousePressed(options = {}) {\n  const {\n    touch = true,\n    drag = true,\n    capture = false,\n    initialValue = false,\n    window = defaultWindow\n  } = options;\n  const pressed = ref(initialValue);\n  const sourceType = ref(null);\n  if (!window) {\n    return {\n      pressed,\n      sourceType\n    };\n  }\n  const onPressed = (srcType) => () => {\n    pressed.value = true;\n    sourceType.value = srcType;\n  };\n  const onReleased = () => {\n    pressed.value = false;\n    sourceType.value = null;\n  };\n  const target = computed(() => unrefElement(options.target) || window);\n  useEventListener(target, \"mousedown\", onPressed(\"mouse\"), { passive: true, capture });\n  useEventListener(window, \"mouseleave\", onReleased, { passive: true, capture });\n  useEventListener(window, \"mouseup\", onReleased, { passive: true, capture });\n  if (drag) {\n    useEventListener(target, \"dragstart\", onPressed(\"mouse\"), { passive: true, capture });\n    useEventListener(window, \"drop\", onReleased, { passive: true, capture });\n    useEventListener(window, \"dragend\", onReleased, { passive: true, capture });\n  }\n  if (touch) {\n    useEventListener(target, \"touchstart\", onPressed(\"touch\"), { passive: true, capture });\n    useEventListener(window, \"touchend\", onReleased, { passive: true, capture });\n    useEventListener(window, \"touchcancel\", onReleased, { passive: true, capture });\n  }\n  return {\n    pressed,\n    sourceType\n  };\n}\n\nfunction useNavigatorLanguage(options = {}) {\n  const { window = defaultWindow } = options;\n  const navigator = window == null ? void 0 : window.navigator;\n  const isSupported = useSupported(() => navigator && \"language\" in navigator);\n  const language = ref(navigator == null ? void 0 : navigator.language);\n  useEventListener(window, \"languagechange\", () => {\n    if (navigator)\n      language.value = navigator.language;\n  });\n  return {\n    isSupported,\n    language\n  };\n}\n\nfunction useNetwork(options = {}) {\n  const { window = defaultWindow } = options;\n  const navigator = window == null ? void 0 : window.navigator;\n  const isSupported = useSupported(() => navigator && \"connection\" in navigator);\n  const isOnline = ref(true);\n  const saveData = ref(false);\n  const offlineAt = ref(void 0);\n  const onlineAt = ref(void 0);\n  const downlink = ref(void 0);\n  const downlinkMax = ref(void 0);\n  const rtt = ref(void 0);\n  const effectiveType = ref(void 0);\n  const type = ref(\"unknown\");\n  const connection = isSupported.value && navigator.connection;\n  function updateNetworkInformation() {\n    if (!navigator)\n      return;\n    isOnline.value = navigator.onLine;\n    offlineAt.value = isOnline.value ? void 0 : Date.now();\n    onlineAt.value = isOnline.value ? Date.now() : void 0;\n    if (connection) {\n      downlink.value = connection.downlink;\n      downlinkMax.value = connection.downlinkMax;\n      effectiveType.value = connection.effectiveType;\n      rtt.value = connection.rtt;\n      saveData.value = connection.saveData;\n      type.value = connection.type;\n    }\n  }\n  if (window) {\n    useEventListener(window, \"offline\", () => {\n      isOnline.value = false;\n      offlineAt.value = Date.now();\n    });\n    useEventListener(window, \"online\", () => {\n      isOnline.value = true;\n      onlineAt.value = Date.now();\n    });\n  }\n  if (connection)\n    useEventListener(connection, \"change\", updateNetworkInformation, false);\n  updateNetworkInformation();\n  return {\n    isSupported,\n    isOnline,\n    saveData,\n    offlineAt,\n    onlineAt,\n    downlink,\n    downlinkMax,\n    effectiveType,\n    rtt,\n    type\n  };\n}\n\nfunction useNow(options = {}) {\n  const {\n    controls: exposeControls = false,\n    interval = \"requestAnimationFrame\"\n  } = options;\n  const now = ref(/* @__PURE__ */ new Date());\n  const update = () => now.value = /* @__PURE__ */ new Date();\n  const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });\n  if (exposeControls) {\n    return {\n      now,\n      ...controls\n    };\n  } else {\n    return now;\n  }\n}\n\nfunction useObjectUrl(object) {\n  const url = ref();\n  const release = () => {\n    if (url.value)\n      URL.revokeObjectURL(url.value);\n    url.value = void 0;\n  };\n  watch(\n    () => toValue(object),\n    (newObject) => {\n      release();\n      if (newObject)\n        url.value = URL.createObjectURL(newObject);\n    },\n    { immediate: true }\n  );\n  tryOnScopeDispose(release);\n  return readonly(url);\n}\n\nfunction useClamp(value, min, max) {\n  if (typeof value === \"function\" || isReadonly(value))\n    return computed(() => clamp(toValue(value), toValue(min), toValue(max)));\n  const _value = ref(value);\n  return computed({\n    get() {\n      return _value.value = clamp(_value.value, toValue(min), toValue(max));\n    },\n    set(value2) {\n      _value.value = clamp(value2, toValue(min), toValue(max));\n    }\n  });\n}\n\nfunction useOffsetPagination(options) {\n  const {\n    total = Number.POSITIVE_INFINITY,\n    pageSize = 10,\n    page = 1,\n    onPageChange = noop,\n    onPageSizeChange = noop,\n    onPageCountChange = noop\n  } = options;\n  const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY);\n  const pageCount = computed(() => Math.max(\n    1,\n    Math.ceil(toValue(total) / toValue(currentPageSize))\n  ));\n  const currentPage = useClamp(page, 1, pageCount);\n  const isFirstPage = computed(() => currentPage.value === 1);\n  const isLastPage = computed(() => currentPage.value === pageCount.value);\n  if (isRef(page)) {\n    syncRef(page, currentPage, {\n      direction: isReadonly(page) ? \"ltr\" : \"both\"\n    });\n  }\n  if (isRef(pageSize)) {\n    syncRef(pageSize, currentPageSize, {\n      direction: isReadonly(pageSize) ? \"ltr\" : \"both\"\n    });\n  }\n  function prev() {\n    currentPage.value--;\n  }\n  function next() {\n    currentPage.value++;\n  }\n  const returnValue = {\n    currentPage,\n    currentPageSize,\n    pageCount,\n    isFirstPage,\n    isLastPage,\n    prev,\n    next\n  };\n  watch(currentPage, () => {\n    onPageChange(reactive(returnValue));\n  });\n  watch(currentPageSize, () => {\n    onPageSizeChange(reactive(returnValue));\n  });\n  watch(pageCount, () => {\n    onPageCountChange(reactive(returnValue));\n  });\n  return returnValue;\n}\n\nfunction useOnline(options = {}) {\n  const { isOnline } = useNetwork(options);\n  return isOnline;\n}\n\nfunction usePageLeave(options = {}) {\n  const { window = defaultWindow } = options;\n  const isLeft = ref(false);\n  const handler = (event) => {\n    if (!window)\n      return;\n    event = event || window.event;\n    const from = event.relatedTarget || event.toElement;\n    isLeft.value = !from;\n  };\n  if (window) {\n    useEventListener(window, \"mouseout\", handler, { passive: true });\n    useEventListener(window.document, \"mouseleave\", handler, { passive: true });\n    useEventListener(window.document, \"mouseenter\", handler, { passive: true });\n  }\n  return isLeft;\n}\n\nfunction useScreenOrientation(options = {}) {\n  const {\n    window = defaultWindow\n  } = options;\n  const isSupported = useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n  const screenOrientation = isSupported.value ? window.screen.orientation : {};\n  const orientation = ref(screenOrientation.type);\n  const angle = ref(screenOrientation.angle || 0);\n  if (isSupported.value) {\n    useEventListener(window, \"orientationchange\", () => {\n      orientation.value = screenOrientation.type;\n      angle.value = screenOrientation.angle;\n    });\n  }\n  const lockOrientation = (type) => {\n    if (isSupported.value && typeof screenOrientation.lock === \"function\")\n      return screenOrientation.lock(type);\n    return Promise.reject(new Error(\"Not supported\"));\n  };\n  const unlockOrientation = () => {\n    if (isSupported.value && typeof screenOrientation.unlock === \"function\")\n      screenOrientation.unlock();\n  };\n  return {\n    isSupported,\n    orientation,\n    angle,\n    lockOrientation,\n    unlockOrientation\n  };\n}\n\nfunction useParallax(target, options = {}) {\n  const {\n    deviceOrientationTiltAdjust = (i) => i,\n    deviceOrientationRollAdjust = (i) => i,\n    mouseTiltAdjust = (i) => i,\n    mouseRollAdjust = (i) => i,\n    window = defaultWindow\n  } = options;\n  const orientation = reactive(useDeviceOrientation({ window }));\n  const screenOrientation = reactive(useScreenOrientation({ window }));\n  const {\n    elementX: x,\n    elementY: y,\n    elementWidth: width,\n    elementHeight: height\n  } = useMouseInElement(target, { handleOutside: false, window });\n  const source = computed(() => {\n    if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0))\n      return \"deviceOrientation\";\n    return \"mouse\";\n  });\n  const roll = computed(() => {\n    if (source.value === \"deviceOrientation\") {\n      let value;\n      switch (screenOrientation.orientation) {\n        case \"landscape-primary\":\n          value = orientation.gamma / 90;\n          break;\n        case \"landscape-secondary\":\n          value = -orientation.gamma / 90;\n          break;\n        case \"portrait-primary\":\n          value = -orientation.beta / 90;\n          break;\n        case \"portrait-secondary\":\n          value = orientation.beta / 90;\n          break;\n        default:\n          value = -orientation.beta / 90;\n      }\n      return deviceOrientationRollAdjust(value);\n    } else {\n      const value = -(y.value - height.value / 2) / height.value;\n      return mouseRollAdjust(value);\n    }\n  });\n  const tilt = computed(() => {\n    if (source.value === \"deviceOrientation\") {\n      let value;\n      switch (screenOrientation.orientation) {\n        case \"landscape-primary\":\n          value = orientation.beta / 90;\n          break;\n        case \"landscape-secondary\":\n          value = -orientation.beta / 90;\n          break;\n        case \"portrait-primary\":\n          value = orientation.gamma / 90;\n          break;\n        case \"portrait-secondary\":\n          value = -orientation.gamma / 90;\n          break;\n        default:\n          value = orientation.gamma / 90;\n      }\n      return deviceOrientationTiltAdjust(value);\n    } else {\n      const value = (x.value - width.value / 2) / width.value;\n      return mouseTiltAdjust(value);\n    }\n  });\n  return { roll, tilt, source };\n}\n\nfunction useParentElement(element = useCurrentElement()) {\n  const parentElement = shallowRef();\n  const update = () => {\n    const el = unrefElement(element);\n    if (el)\n      parentElement.value = el.parentElement;\n  };\n  tryOnMounted(update);\n  watch(() => toValue(element), update);\n  return parentElement;\n}\n\nfunction usePerformanceObserver(options, callback) {\n  const {\n    window = defaultWindow,\n    immediate = true,\n    ...performanceOptions\n  } = options;\n  const isSupported = useSupported(() => window && \"PerformanceObserver\" in window);\n  let observer;\n  const stop = () => {\n    observer == null ? void 0 : observer.disconnect();\n  };\n  const start = () => {\n    if (isSupported.value) {\n      stop();\n      observer = new PerformanceObserver(callback);\n      observer.observe(performanceOptions);\n    }\n  };\n  tryOnScopeDispose(stop);\n  if (immediate)\n    start();\n  return {\n    isSupported,\n    start,\n    stop\n  };\n}\n\nconst defaultState = {\n  x: 0,\n  y: 0,\n  pointerId: 0,\n  pressure: 0,\n  tiltX: 0,\n  tiltY: 0,\n  width: 0,\n  height: 0,\n  twist: 0,\n  pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n  const {\n    target = defaultWindow\n  } = options;\n  const isInside = ref(false);\n  const state = ref(options.initialValue || {});\n  Object.assign(state.value, defaultState, state.value);\n  const handler = (event) => {\n    isInside.value = true;\n    if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n      return;\n    state.value = objectPick(event, keys, false);\n  };\n  if (target) {\n    const listenerOptions = { passive: true };\n    useEventListener(target, [\"pointerdown\", \"pointermove\", \"pointerup\"], handler, listenerOptions);\n    useEventListener(target, \"pointerleave\", () => isInside.value = false, listenerOptions);\n  }\n  return {\n    ...toRefs(state),\n    isInside\n  };\n}\n\nfunction usePointerLock(target, options = {}) {\n  const { document = defaultDocument } = options;\n  const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n  const element = ref();\n  const triggerElement = ref();\n  let targetElement;\n  if (isSupported.value) {\n    useEventListener(document, \"pointerlockchange\", () => {\n      var _a;\n      const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n      if (targetElement && currentElement === targetElement) {\n        element.value = document.pointerLockElement;\n        if (!element.value)\n          targetElement = triggerElement.value = null;\n      }\n    });\n    useEventListener(document, \"pointerlockerror\", () => {\n      var _a;\n      const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n      if (targetElement && currentElement === targetElement) {\n        const action = document.pointerLockElement ? \"release\" : \"acquire\";\n        throw new Error(`Failed to ${action} pointer lock.`);\n      }\n    });\n  }\n  async function lock(e) {\n    var _a;\n    if (!isSupported.value)\n      throw new Error(\"Pointer Lock API is not supported by your browser.\");\n    triggerElement.value = e instanceof Event ? e.currentTarget : null;\n    targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e);\n    if (!targetElement)\n      throw new Error(\"Target element undefined.\");\n    targetElement.requestPointerLock();\n    return await until(element).toBe(targetElement);\n  }\n  async function unlock() {\n    if (!element.value)\n      return false;\n    document.exitPointerLock();\n    await until(element).toBeNull();\n    return true;\n  }\n  return {\n    isSupported,\n    element,\n    triggerElement,\n    lock,\n    unlock\n  };\n}\n\nfunction usePointerSwipe(target, options = {}) {\n  const targetRef = toRef(target);\n  const {\n    threshold = 50,\n    onSwipe,\n    onSwipeEnd,\n    onSwipeStart,\n    disableTextSelect = false\n  } = options;\n  const posStart = reactive({ x: 0, y: 0 });\n  const updatePosStart = (x, y) => {\n    posStart.x = x;\n    posStart.y = y;\n  };\n  const posEnd = reactive({ x: 0, y: 0 });\n  const updatePosEnd = (x, y) => {\n    posEnd.x = x;\n    posEnd.y = y;\n  };\n  const distanceX = computed(() => posStart.x - posEnd.x);\n  const distanceY = computed(() => posStart.y - posEnd.y);\n  const { max, abs } = Math;\n  const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n  const isSwiping = ref(false);\n  const isPointerDown = ref(false);\n  const direction = computed(() => {\n    if (!isThresholdExceeded.value)\n      return \"none\";\n    if (abs(distanceX.value) > abs(distanceY.value)) {\n      return distanceX.value > 0 ? \"left\" : \"right\";\n    } else {\n      return distanceY.value > 0 ? \"up\" : \"down\";\n    }\n  });\n  const eventIsAllowed = (e) => {\n    var _a, _b, _c;\n    const isReleasingButton = e.buttons === 0;\n    const isPrimaryButton = e.buttons === 1;\n    return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true;\n  };\n  const stops = [\n    useEventListener(target, \"pointerdown\", (e) => {\n      if (!eventIsAllowed(e))\n        return;\n      isPointerDown.value = true;\n      const eventTarget = e.target;\n      eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);\n      const { clientX: x, clientY: y } = e;\n      updatePosStart(x, y);\n      updatePosEnd(x, y);\n      onSwipeStart == null ? void 0 : onSwipeStart(e);\n    }),\n    useEventListener(target, \"pointermove\", (e) => {\n      if (!eventIsAllowed(e))\n        return;\n      if (!isPointerDown.value)\n        return;\n      const { clientX: x, clientY: y } = e;\n      updatePosEnd(x, y);\n      if (!isSwiping.value && isThresholdExceeded.value)\n        isSwiping.value = true;\n      if (isSwiping.value)\n        onSwipe == null ? void 0 : onSwipe(e);\n    }),\n    useEventListener(target, \"pointerup\", (e) => {\n      if (!eventIsAllowed(e))\n        return;\n      if (isSwiping.value)\n        onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n      isPointerDown.value = false;\n      isSwiping.value = false;\n    })\n  ];\n  tryOnMounted(() => {\n    var _a, _b, _c, _d, _e, _f, _g, _h;\n    (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"none\");\n    if (disableTextSelect) {\n      (_d = (_c = targetRef.value) == null ? void 0 : _c.style) == null ? void 0 : _d.setProperty(\"-webkit-user-select\", \"none\");\n      (_f = (_e = targetRef.value) == null ? void 0 : _e.style) == null ? void 0 : _f.setProperty(\"-ms-user-select\", \"none\");\n      (_h = (_g = targetRef.value) == null ? void 0 : _g.style) == null ? void 0 : _h.setProperty(\"user-select\", \"none\");\n    }\n  });\n  const stop = () => stops.forEach((s) => s());\n  return {\n    isSwiping: readonly(isSwiping),\n    direction: readonly(direction),\n    posStart: readonly(posStart),\n    posEnd: readonly(posEnd),\n    distanceX,\n    distanceY,\n    stop\n  };\n}\n\nfunction usePreferredColorScheme(options) {\n  const isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n  const isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n  return computed(() => {\n    if (isDark.value)\n      return \"dark\";\n    if (isLight.value)\n      return \"light\";\n    return \"no-preference\";\n  });\n}\n\nfunction usePreferredContrast(options) {\n  const isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n  const isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n  const isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n  return computed(() => {\n    if (isMore.value)\n      return \"more\";\n    if (isLess.value)\n      return \"less\";\n    if (isCustom.value)\n      return \"custom\";\n    return \"no-preference\";\n  });\n}\n\nfunction usePreferredLanguages(options = {}) {\n  const { window = defaultWindow } = options;\n  if (!window)\n    return ref([\"en\"]);\n  const navigator = window.navigator;\n  const value = ref(navigator.languages);\n  useEventListener(window, \"languagechange\", () => {\n    value.value = navigator.languages;\n  });\n  return value;\n}\n\nfunction usePreferredReducedMotion(options) {\n  const isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n  return computed(() => {\n    if (isReduced.value)\n      return \"reduce\";\n    return \"no-preference\";\n  });\n}\n\nfunction usePrevious(value, initialValue) {\n  const previous = shallowRef(initialValue);\n  watch(\n    toRef(value),\n    (_, oldValue) => {\n      previous.value = oldValue;\n    },\n    { flush: \"sync\" }\n  );\n  return readonly(previous);\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n  const top = ref(\"\");\n  const right = ref(\"\");\n  const bottom = ref(\"\");\n  const left = ref(\"\");\n  if (isClient) {\n    const topCssVar = useCssVar(topVarName);\n    const rightCssVar = useCssVar(rightVarName);\n    const bottomCssVar = useCssVar(bottomVarName);\n    const leftCssVar = useCssVar(leftVarName);\n    topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n    rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n    bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n    leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n    update();\n    useEventListener(\"resize\", useDebounceFn(update));\n  }\n  function update() {\n    top.value = getValue(topVarName);\n    right.value = getValue(rightVarName);\n    bottom.value = getValue(bottomVarName);\n    left.value = getValue(leftVarName);\n  }\n  return {\n    top,\n    right,\n    bottom,\n    left,\n    update\n  };\n}\nfunction getValue(position) {\n  return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n  const {\n    immediate = true,\n    manual = false,\n    type = \"text/javascript\",\n    async = true,\n    crossOrigin,\n    referrerPolicy,\n    noModule,\n    defer,\n    document = defaultDocument,\n    attrs = {}\n  } = options;\n  const scriptTag = ref(null);\n  let _promise = null;\n  const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n    const resolveWithElement = (el2) => {\n      scriptTag.value = el2;\n      resolve(el2);\n      return el2;\n    };\n    if (!document) {\n      resolve(false);\n      return;\n    }\n    let shouldAppend = false;\n    let el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n    if (!el) {\n      el = document.createElement(\"script\");\n      el.type = type;\n      el.async = async;\n      el.src = toValue(src);\n      if (defer)\n        el.defer = defer;\n      if (crossOrigin)\n        el.crossOrigin = crossOrigin;\n      if (noModule)\n        el.noModule = noModule;\n      if (referrerPolicy)\n        el.referrerPolicy = referrerPolicy;\n      Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value));\n      shouldAppend = true;\n    } else if (el.hasAttribute(\"data-loaded\")) {\n      resolveWithElement(el);\n    }\n    el.addEventListener(\"error\", (event) => reject(event));\n    el.addEventListener(\"abort\", (event) => reject(event));\n    el.addEventListener(\"load\", () => {\n      el.setAttribute(\"data-loaded\", \"true\");\n      onLoaded(el);\n      resolveWithElement(el);\n    });\n    if (shouldAppend)\n      el = document.head.appendChild(el);\n    if (!waitForScriptLoad)\n      resolveWithElement(el);\n  });\n  const load = (waitForScriptLoad = true) => {\n    if (!_promise)\n      _promise = loadScript(waitForScriptLoad);\n    return _promise;\n  };\n  const unload = () => {\n    if (!document)\n      return;\n    _promise = null;\n    if (scriptTag.value)\n      scriptTag.value = null;\n    const el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n    if (el)\n      document.head.removeChild(el);\n  };\n  if (immediate && !manual)\n    tryOnMounted(load);\n  if (!manual)\n    tryOnUnmounted(unload);\n  return { scriptTag, load, unload };\n}\n\nfunction checkOverflowScroll(ele) {\n  const style = window.getComputedStyle(ele);\n  if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n    return true;\n  } else {\n    const parent = ele.parentNode;\n    if (!parent || parent.tagName === \"BODY\")\n      return false;\n    return checkOverflowScroll(parent);\n  }\n}\nfunction preventDefault(rawEvent) {\n  const e = rawEvent || window.event;\n  const _target = e.target;\n  if (checkOverflowScroll(_target))\n    return false;\n  if (e.touches.length > 1)\n    return true;\n  if (e.preventDefault)\n    e.preventDefault();\n  return false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\nfunction useScrollLock(element, initialState = false) {\n  const isLocked = ref(initialState);\n  let stopTouchMoveListener = null;\n  watch(toRef(element), (el) => {\n    const target = resolveElement(toValue(el));\n    if (target) {\n      const ele = target;\n      if (!elInitialOverflow.get(ele))\n        elInitialOverflow.set(ele, ele.style.overflow);\n      if (isLocked.value)\n        ele.style.overflow = \"hidden\";\n    }\n  }, {\n    immediate: true\n  });\n  const lock = () => {\n    const el = resolveElement(toValue(element));\n    if (!el || isLocked.value)\n      return;\n    if (isIOS) {\n      stopTouchMoveListener = useEventListener(\n        el,\n        \"touchmove\",\n        (e) => {\n          preventDefault(e);\n        },\n        { passive: false }\n      );\n    }\n    el.style.overflow = \"hidden\";\n    isLocked.value = true;\n  };\n  const unlock = () => {\n    var _a;\n    const el = resolveElement(toValue(element));\n    if (!el || !isLocked.value)\n      return;\n    isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());\n    el.style.overflow = (_a = elInitialOverflow.get(el)) != null ? _a : \"\";\n    elInitialOverflow.delete(el);\n    isLocked.value = false;\n  };\n  tryOnScopeDispose(unlock);\n  return computed({\n    get() {\n      return isLocked.value;\n    },\n    set(v) {\n      if (v)\n        lock();\n      else\n        unlock();\n    }\n  });\n}\n\nfunction useSessionStorage(key, initialValue, options = {}) {\n  const { window = defaultWindow } = options;\n  return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options);\n}\n\nfunction useShare(shareOptions = {}, options = {}) {\n  const { navigator = defaultNavigator } = options;\n  const _navigator = navigator;\n  const isSupported = useSupported(() => _navigator && \"canShare\" in _navigator);\n  const share = async (overrideOptions = {}) => {\n    if (isSupported.value) {\n      const data = {\n        ...toValue(shareOptions),\n        ...toValue(overrideOptions)\n      };\n      let granted = true;\n      if (data.files && _navigator.canShare)\n        granted = _navigator.canShare({ files: data.files });\n      if (granted)\n        return _navigator.share(data);\n    }\n  };\n  return {\n    isSupported,\n    share\n  };\n}\n\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n  var _a, _b, _c, _d;\n  const [source] = args;\n  let compareFn = defaultCompare;\n  let options = {};\n  if (args.length === 2) {\n    if (typeof args[1] === \"object\") {\n      options = args[1];\n      compareFn = (_a = options.compareFn) != null ? _a : defaultCompare;\n    } else {\n      compareFn = (_b = args[1]) != null ? _b : defaultCompare;\n    }\n  } else if (args.length > 2) {\n    compareFn = (_c = args[1]) != null ? _c : defaultCompare;\n    options = (_d = args[2]) != null ? _d : {};\n  }\n  const {\n    dirty = false,\n    sortFn = defaultSortFn\n  } = options;\n  if (!dirty)\n    return computed(() => sortFn([...toValue(source)], compareFn));\n  watchEffect(() => {\n    const result = sortFn(toValue(source), compareFn);\n    if (isRef(source))\n      source.value = result;\n    else\n      source.splice(0, source.length, ...result);\n  });\n  return source;\n}\n\nfunction useSpeechRecognition(options = {}) {\n  const {\n    interimResults = true,\n    continuous = true,\n    window = defaultWindow\n  } = options;\n  const lang = toRef(options.lang || \"en-US\");\n  const isListening = ref(false);\n  const isFinal = ref(false);\n  const result = ref(\"\");\n  const error = shallowRef(void 0);\n  const toggle = (value = !isListening.value) => {\n    isListening.value = value;\n  };\n  const start = () => {\n    isListening.value = true;\n  };\n  const stop = () => {\n    isListening.value = false;\n  };\n  const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n  const isSupported = useSupported(() => SpeechRecognition);\n  let recognition;\n  if (isSupported.value) {\n    recognition = new SpeechRecognition();\n    recognition.continuous = continuous;\n    recognition.interimResults = interimResults;\n    recognition.lang = toValue(lang);\n    recognition.onstart = () => {\n      isFinal.value = false;\n    };\n    watch(lang, (lang2) => {\n      if (recognition && !isListening.value)\n        recognition.lang = lang2;\n    });\n    recognition.onresult = (event) => {\n      const transcript = Array.from(event.results).map((result2) => {\n        isFinal.value = result2.isFinal;\n        return result2[0];\n      }).map((result2) => result2.transcript).join(\"\");\n      result.value = transcript;\n      error.value = void 0;\n    };\n    recognition.onerror = (event) => {\n      error.value = event;\n    };\n    recognition.onend = () => {\n      isListening.value = false;\n      recognition.lang = toValue(lang);\n    };\n    watch(isListening, () => {\n      if (isListening.value)\n        recognition.start();\n      else\n        recognition.stop();\n    });\n  }\n  tryOnScopeDispose(() => {\n    isListening.value = false;\n  });\n  return {\n    isSupported,\n    isListening,\n    isFinal,\n    recognition,\n    result,\n    error,\n    toggle,\n    start,\n    stop\n  };\n}\n\nfunction useSpeechSynthesis(text, options = {}) {\n  const {\n    pitch = 1,\n    rate = 1,\n    volume = 1,\n    window = defaultWindow\n  } = options;\n  const synth = window && window.speechSynthesis;\n  const isSupported = useSupported(() => synth);\n  const isPlaying = ref(false);\n  const status = ref(\"init\");\n  const spokenText = toRef(text || \"\");\n  const lang = toRef(options.lang || \"en-US\");\n  const error = shallowRef(void 0);\n  const toggle = (value = !isPlaying.value) => {\n    isPlaying.value = value;\n  };\n  const bindEventsForUtterance = (utterance2) => {\n    utterance2.lang = toValue(lang);\n    utterance2.voice = toValue(options.voice) || null;\n    utterance2.pitch = toValue(pitch);\n    utterance2.rate = toValue(rate);\n    utterance2.volume = volume;\n    utterance2.onstart = () => {\n      isPlaying.value = true;\n      status.value = \"play\";\n    };\n    utterance2.onpause = () => {\n      isPlaying.value = false;\n      status.value = \"pause\";\n    };\n    utterance2.onresume = () => {\n      isPlaying.value = true;\n      status.value = \"play\";\n    };\n    utterance2.onend = () => {\n      isPlaying.value = false;\n      status.value = \"end\";\n    };\n    utterance2.onerror = (event) => {\n      error.value = event;\n    };\n  };\n  const utterance = computed(() => {\n    isPlaying.value = false;\n    status.value = \"init\";\n    const newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n    bindEventsForUtterance(newUtterance);\n    return newUtterance;\n  });\n  const speak = () => {\n    synth.cancel();\n    utterance && synth.speak(utterance.value);\n  };\n  const stop = () => {\n    synth.cancel();\n    isPlaying.value = false;\n  };\n  if (isSupported.value) {\n    bindEventsForUtterance(utterance.value);\n    watch(lang, (lang2) => {\n      if (utterance.value && !isPlaying.value)\n        utterance.value.lang = lang2;\n    });\n    if (options.voice) {\n      watch(options.voice, () => {\n        synth.cancel();\n      });\n    }\n    watch(isPlaying, () => {\n      if (isPlaying.value)\n        synth.resume();\n      else\n        synth.pause();\n    });\n  }\n  tryOnScopeDispose(() => {\n    isPlaying.value = false;\n  });\n  return {\n    isSupported,\n    isPlaying,\n    status,\n    utterance,\n    error,\n    stop,\n    toggle,\n    speak\n  };\n}\n\nfunction useStepper(steps, initialStep) {\n  const stepsRef = ref(steps);\n  const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n  const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0]));\n  const current = computed(() => at(index.value));\n  const isFirst = computed(() => index.value === 0);\n  const isLast = computed(() => index.value === stepNames.value.length - 1);\n  const next = computed(() => stepNames.value[index.value + 1]);\n  const previous = computed(() => stepNames.value[index.value - 1]);\n  function at(index2) {\n    if (Array.isArray(stepsRef.value))\n      return stepsRef.value[index2];\n    return stepsRef.value[stepNames.value[index2]];\n  }\n  function get(step) {\n    if (!stepNames.value.includes(step))\n      return;\n    return at(stepNames.value.indexOf(step));\n  }\n  function goTo(step) {\n    if (stepNames.value.includes(step))\n      index.value = stepNames.value.indexOf(step);\n  }\n  function goToNext() {\n    if (isLast.value)\n      return;\n    index.value++;\n  }\n  function goToPrevious() {\n    if (isFirst.value)\n      return;\n    index.value--;\n  }\n  function goBackTo(step) {\n    if (isAfter(step))\n      goTo(step);\n  }\n  function isNext(step) {\n    return stepNames.value.indexOf(step) === index.value + 1;\n  }\n  function isPrevious(step) {\n    return stepNames.value.indexOf(step) === index.value - 1;\n  }\n  function isCurrent(step) {\n    return stepNames.value.indexOf(step) === index.value;\n  }\n  function isBefore(step) {\n    return index.value < stepNames.value.indexOf(step);\n  }\n  function isAfter(step) {\n    return index.value > stepNames.value.indexOf(step);\n  }\n  return {\n    steps: stepsRef,\n    stepNames,\n    index,\n    current,\n    next,\n    previous,\n    isFirst,\n    isLast,\n    at,\n    get,\n    goTo,\n    goToNext,\n    goToPrevious,\n    goBackTo,\n    isNext,\n    isPrevious,\n    isCurrent,\n    isBefore,\n    isAfter\n  };\n}\n\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n  var _a;\n  const {\n    flush = \"pre\",\n    deep = true,\n    listenToStorageChanges = true,\n    writeDefaults = true,\n    mergeDefaults = false,\n    shallow,\n    window = defaultWindow,\n    eventFilter,\n    onError = (e) => {\n      console.error(e);\n    }\n  } = options;\n  const rawInit = toValue(initialValue);\n  const type = guessSerializerType(rawInit);\n  const data = (shallow ? shallowRef : ref)(initialValue);\n  const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n  if (!storage) {\n    try {\n      storage = getSSRHandler(\"getDefaultStorageAsync\", () => {\n        var _a2;\n        return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n      })();\n    } catch (e) {\n      onError(e);\n    }\n  }\n  async function read(event) {\n    if (!storage || event && event.key !== key)\n      return;\n    try {\n      const rawValue = event ? event.newValue : await storage.getItem(key);\n      if (rawValue == null) {\n        data.value = rawInit;\n        if (writeDefaults && rawInit !== null)\n          await storage.setItem(key, await serializer.write(rawInit));\n      } else if (mergeDefaults) {\n        const value = await serializer.read(rawValue);\n        if (typeof mergeDefaults === \"function\")\n          data.value = mergeDefaults(value, rawInit);\n        else if (type === \"object\" && !Array.isArray(value))\n          data.value = { ...rawInit, ...value };\n        else\n          data.value = value;\n      } else {\n        data.value = await serializer.read(rawValue);\n      }\n    } catch (e) {\n      onError(e);\n    }\n  }\n  read();\n  if (window && listenToStorageChanges)\n    useEventListener(window, \"storage\", (e) => Promise.resolve().then(() => read(e)));\n  if (storage) {\n    watchWithFilter(\n      data,\n      async () => {\n        try {\n          if (data.value == null)\n            await storage.removeItem(key);\n          else\n            await storage.setItem(key, await serializer.write(data.value));\n        } catch (e) {\n          onError(e);\n        }\n      },\n      {\n        flush,\n        deep,\n        eventFilter\n      }\n    );\n  }\n  return data;\n}\n\nlet _id = 0;\nfunction useStyleTag(css, options = {}) {\n  const isLoaded = ref(false);\n  const {\n    document = defaultDocument,\n    immediate = true,\n    manual = false,\n    id = `vueuse_styletag_${++_id}`\n  } = options;\n  const cssRef = ref(css);\n  let stop = () => {\n  };\n  const load = () => {\n    if (!document)\n      return;\n    const el = document.getElementById(id) || document.createElement(\"style\");\n    if (!el.isConnected) {\n      el.id = id;\n      if (options.media)\n        el.media = options.media;\n      document.head.appendChild(el);\n    }\n    if (isLoaded.value)\n      return;\n    stop = watch(\n      cssRef,\n      (value) => {\n        el.textContent = value;\n      },\n      { immediate: true }\n    );\n    isLoaded.value = true;\n  };\n  const unload = () => {\n    if (!document || !isLoaded.value)\n      return;\n    stop();\n    document.head.removeChild(document.getElementById(id));\n    isLoaded.value = false;\n  };\n  if (immediate && !manual)\n    tryOnMounted(load);\n  if (!manual)\n    tryOnScopeDispose(unload);\n  return {\n    id,\n    css: cssRef,\n    unload,\n    load,\n    isLoaded: readonly(isLoaded)\n  };\n}\n\nfunction useSwipe(target, options = {}) {\n  const {\n    threshold = 50,\n    onSwipe,\n    onSwipeEnd,\n    onSwipeStart,\n    passive = true,\n    window = defaultWindow\n  } = options;\n  const coordsStart = reactive({ x: 0, y: 0 });\n  const coordsEnd = reactive({ x: 0, y: 0 });\n  const diffX = computed(() => coordsStart.x - coordsEnd.x);\n  const diffY = computed(() => coordsStart.y - coordsEnd.y);\n  const { max, abs } = Math;\n  const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n  const isSwiping = ref(false);\n  const direction = computed(() => {\n    if (!isThresholdExceeded.value)\n      return \"none\";\n    if (abs(diffX.value) > abs(diffY.value)) {\n      return diffX.value > 0 ? \"left\" : \"right\";\n    } else {\n      return diffY.value > 0 ? \"up\" : \"down\";\n    }\n  });\n  const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n  const updateCoordsStart = (x, y) => {\n    coordsStart.x = x;\n    coordsStart.y = y;\n  };\n  const updateCoordsEnd = (x, y) => {\n    coordsEnd.x = x;\n    coordsEnd.y = y;\n  };\n  let listenerOptions;\n  const isPassiveEventSupported = checkPassiveEventSupport(window == null ? void 0 : window.document);\n  if (!passive)\n    listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true };\n  else\n    listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false };\n  const onTouchEnd = (e) => {\n    if (isSwiping.value)\n      onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n    isSwiping.value = false;\n  };\n  const stops = [\n    useEventListener(target, \"touchstart\", (e) => {\n      if (e.touches.length !== 1)\n        return;\n      if (listenerOptions.capture && !listenerOptions.passive)\n        e.preventDefault();\n      const [x, y] = getTouchEventCoords(e);\n      updateCoordsStart(x, y);\n      updateCoordsEnd(x, y);\n      onSwipeStart == null ? void 0 : onSwipeStart(e);\n    }, listenerOptions),\n    useEventListener(target, \"touchmove\", (e) => {\n      if (e.touches.length !== 1)\n        return;\n      const [x, y] = getTouchEventCoords(e);\n      updateCoordsEnd(x, y);\n      if (!isSwiping.value && isThresholdExceeded.value)\n        isSwiping.value = true;\n      if (isSwiping.value)\n        onSwipe == null ? void 0 : onSwipe(e);\n    }, listenerOptions),\n    useEventListener(target, [\"touchend\", \"touchcancel\"], onTouchEnd, listenerOptions)\n  ];\n  const stop = () => stops.forEach((s) => s());\n  return {\n    isPassiveEventSupported,\n    isSwiping,\n    direction,\n    coordsStart,\n    coordsEnd,\n    lengthX: diffX,\n    lengthY: diffY,\n    stop\n  };\n}\nfunction checkPassiveEventSupport(document) {\n  if (!document)\n    return false;\n  let supportsPassive = false;\n  const optionsBlock = {\n    get passive() {\n      supportsPassive = true;\n      return false;\n    }\n  };\n  document.addEventListener(\"x\", noop, optionsBlock);\n  document.removeEventListener(\"x\", noop);\n  return supportsPassive;\n}\n\nfunction useTemplateRefsList() {\n  const refs = ref([]);\n  refs.value.set = (el) => {\n    if (el)\n      refs.value.push(el);\n  };\n  onBeforeUpdate(() => {\n    refs.value.length = 0;\n  });\n  return refs;\n}\n\nfunction useTextDirection(options = {}) {\n  const {\n    document = defaultDocument,\n    selector = \"html\",\n    observe = false,\n    initialValue = \"ltr\"\n  } = options;\n  function getValue() {\n    var _a, _b;\n    return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute(\"dir\")) != null ? _b : initialValue;\n  }\n  const dir = ref(getValue());\n  tryOnMounted(() => dir.value = getValue());\n  if (observe && document) {\n    useMutationObserver(\n      document.querySelector(selector),\n      () => dir.value = getValue(),\n      { attributes: true }\n    );\n  }\n  return computed({\n    get() {\n      return dir.value;\n    },\n    set(v) {\n      var _a, _b;\n      dir.value = v;\n      if (!document)\n        return;\n      if (dir.value)\n        (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute(\"dir\", dir.value);\n      else\n        (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute(\"dir\");\n    }\n  });\n}\n\nfunction getRangesFromSelection(selection) {\n  var _a;\n  const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n  return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i));\n}\nfunction useTextSelection(options = {}) {\n  const {\n    window = defaultWindow\n  } = options;\n  const selection = ref(null);\n  const text = computed(() => {\n    var _a, _b;\n    return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n  });\n  const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n  const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n  function onSelectionChange() {\n    selection.value = null;\n    if (window)\n      selection.value = window.getSelection();\n  }\n  if (window)\n    useEventListener(window.document, \"selectionchange\", onSelectionChange);\n  return {\n    text,\n    rects,\n    ranges,\n    selection\n  };\n}\n\nfunction useTextareaAutosize(options) {\n  var _a;\n  const textarea = ref(options == null ? void 0 : options.element);\n  const input = ref(options == null ? void 0 : options.input);\n  const styleProp = (_a = options == null ? void 0 : options.styleProp) != null ? _a : \"height\";\n  const textareaScrollHeight = ref(1);\n  function triggerResize() {\n    var _a2, _b;\n    if (!textarea.value)\n      return;\n    let height = \"\";\n    textarea.value.style[styleProp] = \"1px\";\n    textareaScrollHeight.value = (_a2 = textarea.value) == null ? void 0 : _a2.scrollHeight;\n    if (options == null ? void 0 : options.styleTarget)\n      toValue(options.styleTarget).style[styleProp] = `${textareaScrollHeight.value}px`;\n    else\n      height = `${textareaScrollHeight.value}px`;\n    textarea.value.style[styleProp] = height;\n    (_b = options == null ? void 0 : options.onResize) == null ? void 0 : _b.call(options);\n  }\n  watch([input, textarea], () => nextTick(triggerResize), { immediate: true });\n  useResizeObserver(textarea, () => triggerResize());\n  if (options == null ? void 0 : options.watch)\n    watch(options.watch, triggerResize, { immediate: true, deep: true });\n  return {\n    textarea,\n    input,\n    triggerResize\n  };\n}\n\nfunction useThrottledRefHistory(source, options = {}) {\n  const { throttle = 200, trailing = true } = options;\n  const filter = throttleFilter(throttle, trailing);\n  const history = useRefHistory(source, { ...options, eventFilter: filter });\n  return {\n    ...history\n  };\n}\n\nconst DEFAULT_UNITS = [\n  { max: 6e4, value: 1e3, name: \"second\" },\n  { max: 276e4, value: 6e4, name: \"minute\" },\n  { max: 72e6, value: 36e5, name: \"hour\" },\n  { max: 5184e5, value: 864e5, name: \"day\" },\n  { max: 24192e5, value: 6048e5, name: \"week\" },\n  { max: 28512e6, value: 2592e6, name: \"month\" },\n  { max: Number.POSITIVE_INFINITY, value: 31536e6, name: \"year\" }\n];\nconst DEFAULT_MESSAGES = {\n  justNow: \"just now\",\n  past: (n) => n.match(/\\d/) ? `${n} ago` : n,\n  future: (n) => n.match(/\\d/) ? `in ${n}` : n,\n  month: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n  year: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n  day: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n  week: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n  hour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n  minute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n  second: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n  invalid: \"\"\n};\nfunction DEFAULT_FORMATTER(date) {\n  return date.toISOString().slice(0, 10);\n}\nfunction useTimeAgo(time, options = {}) {\n  const {\n    controls: exposeControls = false,\n    updateInterval = 3e4\n  } = options;\n  const { now, ...controls } = useNow({ interval: updateInterval, controls: true });\n  const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now)));\n  if (exposeControls) {\n    return {\n      timeAgo,\n      ...controls\n    };\n  } else {\n    return timeAgo;\n  }\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n  var _a;\n  const {\n    max,\n    messages = DEFAULT_MESSAGES,\n    fullDateFormatter = DEFAULT_FORMATTER,\n    units = DEFAULT_UNITS,\n    showSecond = false,\n    rounding = \"round\"\n  } = options;\n  const roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n  const diff = +now - +from;\n  const absDiff = Math.abs(diff);\n  function getValue(diff2, unit) {\n    return roundFn(Math.abs(diff2) / unit.value);\n  }\n  function format(diff2, unit) {\n    const val = getValue(diff2, unit);\n    const past = diff2 > 0;\n    const str = applyFormat(unit.name, val, past);\n    return applyFormat(past ? \"past\" : \"future\", str, past);\n  }\n  function applyFormat(name, val, isPast) {\n    const formatter = messages[name];\n    if (typeof formatter === \"function\")\n      return formatter(val, isPast);\n    return formatter.replace(\"{0}\", val.toString());\n  }\n  if (absDiff < 6e4 && !showSecond)\n    return messages.justNow;\n  if (typeof max === \"number\" && absDiff > max)\n    return fullDateFormatter(new Date(from));\n  if (typeof max === \"string\") {\n    const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max;\n    if (unitMax && absDiff > unitMax)\n      return fullDateFormatter(new Date(from));\n  }\n  for (const [idx, unit] of units.entries()) {\n    const val = getValue(diff, unit);\n    if (val <= 0 && units[idx - 1])\n      return format(diff, units[idx - 1]);\n    if (absDiff < unit.max)\n      return format(diff, unit);\n  }\n  return messages.invalid;\n}\n\nfunction useTimeoutPoll(fn, interval, timeoutPollOptions) {\n  const { start } = useTimeoutFn(loop, interval, { immediate: false });\n  const isActive = ref(false);\n  async function loop() {\n    if (!isActive.value)\n      return;\n    await fn();\n    start();\n  }\n  function resume() {\n    if (!isActive.value) {\n      isActive.value = true;\n      loop();\n    }\n  }\n  function pause() {\n    isActive.value = false;\n  }\n  if (timeoutPollOptions == null ? void 0 : timeoutPollOptions.immediate)\n    resume();\n  tryOnScopeDispose(pause);\n  return {\n    isActive,\n    pause,\n    resume\n  };\n}\n\nfunction useTimestamp(options = {}) {\n  const {\n    controls: exposeControls = false,\n    offset = 0,\n    immediate = true,\n    interval = \"requestAnimationFrame\",\n    callback\n  } = options;\n  const ts = ref(timestamp() + offset);\n  const update = () => ts.value = timestamp() + offset;\n  const cb = callback ? () => {\n    update();\n    callback(ts.value);\n  } : update;\n  const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n  if (exposeControls) {\n    return {\n      timestamp: ts,\n      ...controls\n    };\n  } else {\n    return ts;\n  }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n  var _a, _b, _c;\n  const {\n    document = defaultDocument,\n    restoreOnUnmount = (t) => t\n  } = options;\n  const originalTitle = (_a = document == null ? void 0 : document.title) != null ? _a : \"\";\n  const title = toRef((_b = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _b : null);\n  const isReadonly = newTitle && typeof newTitle === \"function\";\n  function format(t) {\n    if (!(\"titleTemplate\" in options))\n      return t;\n    const template = options.titleTemplate || \"%s\";\n    return typeof template === \"function\" ? template(t) : toValue(template).replace(/%s/g, t);\n  }\n  watch(\n    title,\n    (t, o) => {\n      if (t !== o && document)\n        document.title = format(typeof t === \"string\" ? t : \"\");\n    },\n    { immediate: true }\n  );\n  if (options.observe && !options.titleTemplate && document && !isReadonly) {\n    useMutationObserver(\n      (_c = document.head) == null ? void 0 : _c.querySelector(\"title\"),\n      () => {\n        if (document && document.title !== title.value)\n          title.value = format(document.title);\n      },\n      { childList: true }\n    );\n  }\n  tryOnBeforeUnmount(() => {\n    if (restoreOnUnmount) {\n      const restoredTitle = restoreOnUnmount(originalTitle, title.value || \"\");\n      if (restoredTitle != null && document)\n        document.title = restoredTitle;\n    }\n  });\n  return title;\n}\n\nconst _TransitionPresets = {\n  easeInSine: [0.12, 0, 0.39, 0],\n  easeOutSine: [0.61, 1, 0.88, 1],\n  easeInOutSine: [0.37, 0, 0.63, 1],\n  easeInQuad: [0.11, 0, 0.5, 0],\n  easeOutQuad: [0.5, 1, 0.89, 1],\n  easeInOutQuad: [0.45, 0, 0.55, 1],\n  easeInCubic: [0.32, 0, 0.67, 0],\n  easeOutCubic: [0.33, 1, 0.68, 1],\n  easeInOutCubic: [0.65, 0, 0.35, 1],\n  easeInQuart: [0.5, 0, 0.75, 0],\n  easeOutQuart: [0.25, 1, 0.5, 1],\n  easeInOutQuart: [0.76, 0, 0.24, 1],\n  easeInQuint: [0.64, 0, 0.78, 0],\n  easeOutQuint: [0.22, 1, 0.36, 1],\n  easeInOutQuint: [0.83, 0, 0.17, 1],\n  easeInExpo: [0.7, 0, 0.84, 0],\n  easeOutExpo: [0.16, 1, 0.3, 1],\n  easeInOutExpo: [0.87, 0, 0.13, 1],\n  easeInCirc: [0.55, 0, 1, 0.45],\n  easeOutCirc: [0, 0.55, 0.45, 1],\n  easeInOutCirc: [0.85, 0, 0.15, 1],\n  easeInBack: [0.36, 0, 0.66, -0.56],\n  easeOutBack: [0.34, 1.56, 0.64, 1],\n  easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nconst TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: identity }, _TransitionPresets);\nfunction createEasingFunction([p0, p1, p2, p3]) {\n  const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n  const b = (a1, a2) => 3 * a2 - 6 * a1;\n  const c = (a1) => 3 * a1;\n  const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n  const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n  const getTforX = (x) => {\n    let aGuessT = x;\n    for (let i = 0; i < 4; ++i) {\n      const currentSlope = getSlope(aGuessT, p0, p2);\n      if (currentSlope === 0)\n        return aGuessT;\n      const currentX = calcBezier(aGuessT, p0, p2) - x;\n      aGuessT -= currentX / currentSlope;\n    }\n    return aGuessT;\n  };\n  return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction lerp(a, b, alpha) {\n  return a + alpha * (b - a);\n}\nfunction toVec(t) {\n  return (typeof t === \"number\" ? [t] : t) || [];\n}\nfunction executeTransition(source, from, to, options = {}) {\n  var _a, _b;\n  const fromVal = toValue(from);\n  const toVal = toValue(to);\n  const v1 = toVec(fromVal);\n  const v2 = toVec(toVal);\n  const duration = (_a = toValue(options.duration)) != null ? _a : 1e3;\n  const startedAt = Date.now();\n  const endAt = Date.now() + duration;\n  const trans = typeof options.transition === \"function\" ? options.transition : (_b = toValue(options.transition)) != null ? _b : identity;\n  const ease = typeof trans === \"function\" ? trans : createEasingFunction(trans);\n  return new Promise((resolve) => {\n    source.value = fromVal;\n    const tick = () => {\n      var _a2;\n      if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) {\n        resolve();\n        return;\n      }\n      const now = Date.now();\n      const alpha = ease((now - startedAt) / duration);\n      const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha));\n      if (Array.isArray(source.value))\n        source.value = arr.map((n, i) => {\n          var _a3, _b2;\n          return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha);\n        });\n      else if (typeof source.value === \"number\")\n        source.value = arr[0];\n      if (now < endAt) {\n        requestAnimationFrame(tick);\n      } else {\n        source.value = toVal;\n        resolve();\n      }\n    };\n    tick();\n  });\n}\nfunction useTransition(source, options = {}) {\n  let currentId = 0;\n  const sourceVal = () => {\n    const v = toValue(source);\n    return typeof v === \"number\" ? v : v.map(toValue);\n  };\n  const outputRef = ref(sourceVal());\n  watch(sourceVal, async (to) => {\n    var _a, _b;\n    if (toValue(options.disabled))\n      return;\n    const id = ++currentId;\n    if (options.delay)\n      await promiseTimeout(toValue(options.delay));\n    if (id !== currentId)\n      return;\n    const toVal = Array.isArray(to) ? to.map(toValue) : toValue(to);\n    (_a = options.onStarted) == null ? void 0 : _a.call(options);\n    await executeTransition(outputRef, outputRef.value, toVal, {\n      ...options,\n      abort: () => {\n        var _a2;\n        return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options));\n      }\n    });\n    (_b = options.onFinished) == null ? void 0 : _b.call(options);\n  }, { deep: true });\n  watch(() => toValue(options.disabled), (disabled) => {\n    if (disabled) {\n      currentId++;\n      outputRef.value = sourceVal();\n    }\n  });\n  tryOnScopeDispose(() => {\n    currentId++;\n  });\n  return computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value);\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n  const {\n    initialValue = {},\n    removeNullishValues = true,\n    removeFalsyValues = false,\n    write: enableWrite = true,\n    window = defaultWindow\n  } = options;\n  if (!window)\n    return reactive(initialValue);\n  const state = reactive({});\n  function getRawParams() {\n    if (mode === \"history\") {\n      return window.location.search || \"\";\n    } else if (mode === \"hash\") {\n      const hash = window.location.hash || \"\";\n      const index = hash.indexOf(\"?\");\n      return index > 0 ? hash.slice(index) : \"\";\n    } else {\n      return (window.location.hash || \"\").replace(/^#/, \"\");\n    }\n  }\n  function constructQuery(params) {\n    const stringified = params.toString();\n    if (mode === \"history\")\n      return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n    if (mode === \"hash-params\")\n      return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n    const hash = window.location.hash || \"#\";\n    const index = hash.indexOf(\"?\");\n    if (index > 0)\n      return `${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n    return `${hash}${stringified ? `?${stringified}` : \"\"}`;\n  }\n  function read() {\n    return new URLSearchParams(getRawParams());\n  }\n  function updateState(params) {\n    const unusedKeys = new Set(Object.keys(state));\n    for (const key of params.keys()) {\n      const paramsForKey = params.getAll(key);\n      state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n      unusedKeys.delete(key);\n    }\n    Array.from(unusedKeys).forEach((key) => delete state[key]);\n  }\n  const { pause, resume } = pausableWatch(\n    state,\n    () => {\n      const params = new URLSearchParams(\"\");\n      Object.keys(state).forEach((key) => {\n        const mapEntry = state[key];\n        if (Array.isArray(mapEntry))\n          mapEntry.forEach((value) => params.append(key, value));\n        else if (removeNullishValues && mapEntry == null)\n          params.delete(key);\n        else if (removeFalsyValues && !mapEntry)\n          params.delete(key);\n        else\n          params.set(key, mapEntry);\n      });\n      write(params);\n    },\n    { deep: true }\n  );\n  function write(params, shouldUpdate) {\n    pause();\n    if (shouldUpdate)\n      updateState(params);\n    window.history.replaceState(\n      window.history.state,\n      window.document.title,\n      window.location.pathname + constructQuery(params)\n    );\n    resume();\n  }\n  function onChanged() {\n    if (!enableWrite)\n      return;\n    write(read(), true);\n  }\n  useEventListener(window, \"popstate\", onChanged, false);\n  if (mode !== \"history\")\n    useEventListener(window, \"hashchange\", onChanged, false);\n  const initial = read();\n  if (initial.keys().next().value)\n    updateState(initial);\n  else\n    Object.assign(state, initialValue);\n  return state;\n}\n\nfunction useUserMedia(options = {}) {\n  var _a, _b;\n  const enabled = ref((_a = options.enabled) != null ? _a : false);\n  const autoSwitch = ref((_b = options.autoSwitch) != null ? _b : true);\n  const constraints = ref(options.constraints);\n  const { navigator = defaultNavigator } = options;\n  const isSupported = useSupported(() => {\n    var _a2;\n    return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia;\n  });\n  const stream = shallowRef();\n  function getDeviceOptions(type) {\n    switch (type) {\n      case \"video\": {\n        if (constraints.value)\n          return constraints.value.video || false;\n        break;\n      }\n      case \"audio\": {\n        if (constraints.value)\n          return constraints.value.audio || false;\n        break;\n      }\n    }\n  }\n  async function _start() {\n    if (!isSupported.value || stream.value)\n      return;\n    stream.value = await navigator.mediaDevices.getUserMedia({\n      video: getDeviceOptions(\"video\"),\n      audio: getDeviceOptions(\"audio\")\n    });\n    return stream.value;\n  }\n  function _stop() {\n    var _a2;\n    (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n    stream.value = void 0;\n  }\n  function stop() {\n    _stop();\n    enabled.value = false;\n  }\n  async function start() {\n    await _start();\n    if (stream.value)\n      enabled.value = true;\n    return stream.value;\n  }\n  async function restart() {\n    _stop();\n    return await start();\n  }\n  watch(\n    enabled,\n    (v) => {\n      if (v)\n        _start();\n      else\n        _stop();\n    },\n    { immediate: true }\n  );\n  watch(\n    constraints,\n    () => {\n      if (autoSwitch.value && stream.value)\n        restart();\n    },\n    { immediate: true }\n  );\n  tryOnScopeDispose(() => {\n    stop();\n  });\n  return {\n    isSupported,\n    stream,\n    start,\n    stop,\n    restart,\n    constraints,\n    enabled,\n    autoSwitch\n  };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n  var _a, _b, _c, _d, _e;\n  const {\n    clone = false,\n    passive = false,\n    eventName,\n    deep = false,\n    defaultValue,\n    shouldEmit\n  } = options;\n  const vm = getCurrentInstance();\n  const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n  let event = eventName;\n  if (!key) {\n    if (isVue2) {\n      const modelOptions = (_e = (_d = vm == null ? void 0 : vm.proxy) == null ? void 0 : _d.$options) == null ? void 0 : _e.model;\n      key = (modelOptions == null ? void 0 : modelOptions.value) || \"value\";\n      if (!eventName)\n        event = (modelOptions == null ? void 0 : modelOptions.event) || \"input\";\n    } else {\n      key = \"modelValue\";\n    }\n  }\n  event = event || `update:${key.toString()}`;\n  const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n  const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n  const triggerEmit = (value) => {\n    if (shouldEmit) {\n      if (shouldEmit(value))\n        _emit(event, value);\n    } else {\n      _emit(event, value);\n    }\n  };\n  if (passive) {\n    const initialValue = getValue();\n    const proxy = ref(initialValue);\n    let isUpdating = false;\n    watch(\n      () => props[key],\n      (v) => {\n        if (!isUpdating) {\n          isUpdating = true;\n          proxy.value = cloneFn(v);\n          nextTick(() => isUpdating = false);\n        }\n      }\n    );\n    watch(\n      proxy,\n      (v) => {\n        if (!isUpdating && (v !== props[key] || deep))\n          triggerEmit(v);\n      },\n      { deep }\n    );\n    return proxy;\n  } else {\n    return computed({\n      get() {\n        return getValue();\n      },\n      set(value) {\n        triggerEmit(value);\n      }\n    });\n  }\n}\n\nfunction useVModels(props, emit, options = {}) {\n  const ret = {};\n  for (const key in props) {\n    ret[key] = useVModel(\n      props,\n      key,\n      emit,\n      options\n    );\n  }\n  return ret;\n}\n\nfunction useVibrate(options) {\n  const {\n    pattern = [],\n    interval = 0,\n    navigator = defaultNavigator\n  } = options || {};\n  const isSupported = useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n  const patternRef = toRef(pattern);\n  let intervalControls;\n  const vibrate = (pattern2 = patternRef.value) => {\n    if (isSupported.value)\n      navigator.vibrate(pattern2);\n  };\n  const stop = () => {\n    if (isSupported.value)\n      navigator.vibrate(0);\n    intervalControls == null ? void 0 : intervalControls.pause();\n  };\n  if (interval > 0) {\n    intervalControls = useIntervalFn(\n      vibrate,\n      interval,\n      {\n        immediate: false,\n        immediateCallback: false\n      }\n    );\n  }\n  return {\n    isSupported,\n    pattern,\n    intervalControls,\n    vibrate,\n    stop\n  };\n}\n\nfunction useVirtualList(list, options) {\n  const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n  return {\n    list: currentList,\n    scrollTo,\n    containerProps: {\n      ref: containerRef,\n      onScroll: () => {\n        calculateRange();\n      },\n      style: containerStyle\n    },\n    wrapperProps\n  };\n}\nfunction useVirtualListResources(list) {\n  const containerRef = ref(null);\n  const size = useElementSize(containerRef);\n  const currentList = ref([]);\n  const source = shallowRef(list);\n  const state = ref({ start: 0, end: 10 });\n  return { state, source, currentList, size, containerRef };\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n  return (containerSize) => {\n    if (typeof itemSize === \"number\")\n      return Math.ceil(containerSize / itemSize);\n    const { start = 0 } = state.value;\n    let sum = 0;\n    let capacity = 0;\n    for (let i = start; i < source.value.length; i++) {\n      const size = itemSize(i);\n      sum += size;\n      capacity = i;\n      if (sum > containerSize)\n        break;\n    }\n    return capacity - start;\n  };\n}\nfunction createGetOffset(source, itemSize) {\n  return (scrollDirection) => {\n    if (typeof itemSize === \"number\")\n      return Math.floor(scrollDirection / itemSize) + 1;\n    let sum = 0;\n    let offset = 0;\n    for (let i = 0; i < source.value.length; i++) {\n      const size = itemSize(i);\n      sum += size;\n      if (sum >= scrollDirection) {\n        offset = i;\n        break;\n      }\n    }\n    return offset + 1;\n  };\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n  return () => {\n    const element = containerRef.value;\n    if (element) {\n      const offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n      const viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n      const from = offset - overscan;\n      const to = offset + viewCapacity + overscan;\n      state.value = {\n        start: from < 0 ? 0 : from,\n        end: to > source.value.length ? source.value.length : to\n      };\n      currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n        data: ele,\n        index: index + state.value.start\n      }));\n    }\n  };\n}\nfunction createGetDistance(itemSize, source) {\n  return (index) => {\n    if (typeof itemSize === \"number\") {\n      const size2 = index * itemSize;\n      return size2;\n    }\n    const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n    return size;\n  };\n}\nfunction useWatchForSizes(size, list, calculateRange) {\n  watch([size.width, size.height, list], () => {\n    calculateRange();\n  });\n}\nfunction createComputedTotalSize(itemSize, source) {\n  return computed(() => {\n    if (typeof itemSize === \"number\")\n      return source.value.length * itemSize;\n    return source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n  });\n}\nconst scrollToDictionaryForElementScrollKey = {\n  horizontal: \"scrollLeft\",\n  vertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n  return (index) => {\n    if (containerRef.value) {\n      containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n      calculateRange();\n    }\n  };\n}\nfunction useHorizontalVirtualList(options, list) {\n  const resources = useVirtualListResources(list);\n  const { state, source, currentList, size, containerRef } = resources;\n  const containerStyle = { overflowX: \"auto\" };\n  const { itemWidth, overscan = 5 } = options;\n  const getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n  const getOffset = createGetOffset(source, itemWidth);\n  const calculateRange = createCalculateRange(\"horizontal\", overscan, getOffset, getViewCapacity, resources);\n  const getDistanceLeft = createGetDistance(itemWidth, source);\n  const offsetLeft = computed(() => getDistanceLeft(state.value.start));\n  const totalWidth = createComputedTotalSize(itemWidth, source);\n  useWatchForSizes(size, list, calculateRange);\n  const scrollTo = createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef);\n  const wrapperProps = computed(() => {\n    return {\n      style: {\n        height: \"100%\",\n        width: `${totalWidth.value - offsetLeft.value}px`,\n        marginLeft: `${offsetLeft.value}px`,\n        display: \"flex\"\n      }\n    };\n  });\n  return {\n    scrollTo,\n    calculateRange,\n    wrapperProps,\n    containerStyle,\n    currentList,\n    containerRef\n  };\n}\nfunction useVerticalVirtualList(options, list) {\n  const resources = useVirtualListResources(list);\n  const { state, source, currentList, size, containerRef } = resources;\n  const containerStyle = { overflowY: \"auto\" };\n  const { itemHeight, overscan = 5 } = options;\n  const getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n  const getOffset = createGetOffset(source, itemHeight);\n  const calculateRange = createCalculateRange(\"vertical\", overscan, getOffset, getViewCapacity, resources);\n  const getDistanceTop = createGetDistance(itemHeight, source);\n  const offsetTop = computed(() => getDistanceTop(state.value.start));\n  const totalHeight = createComputedTotalSize(itemHeight, source);\n  useWatchForSizes(size, list, calculateRange);\n  const scrollTo = createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef);\n  const wrapperProps = computed(() => {\n    return {\n      style: {\n        width: \"100%\",\n        height: `${totalHeight.value - offsetTop.value}px`,\n        marginTop: `${offsetTop.value}px`\n      }\n    };\n  });\n  return {\n    calculateRange,\n    scrollTo,\n    containerStyle,\n    wrapperProps,\n    currentList,\n    containerRef\n  };\n}\n\nfunction useWakeLock(options = {}) {\n  const {\n    navigator = defaultNavigator,\n    document = defaultDocument\n  } = options;\n  let wakeLock;\n  const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n  const isActive = ref(false);\n  async function onVisibilityChange() {\n    if (!isSupported.value || !wakeLock)\n      return;\n    if (document && document.visibilityState === \"visible\")\n      wakeLock = await navigator.wakeLock.request(\"screen\");\n    isActive.value = !wakeLock.released;\n  }\n  if (document)\n    useEventListener(document, \"visibilitychange\", onVisibilityChange, { passive: true });\n  async function request(type) {\n    if (!isSupported.value)\n      return;\n    wakeLock = await navigator.wakeLock.request(type);\n    isActive.value = !wakeLock.released;\n  }\n  async function release() {\n    if (!isSupported.value || !wakeLock)\n      return;\n    await wakeLock.release();\n    isActive.value = !wakeLock.released;\n    wakeLock = null;\n  }\n  return {\n    isSupported,\n    isActive,\n    request,\n    release\n  };\n}\n\nfunction useWebNotification(options = {}) {\n  const {\n    window = defaultWindow,\n    requestPermissions: _requestForPermissions = true\n  } = options;\n  const defaultWebNotificationOptions = options;\n  const isSupported = useSupported(() => !!window && \"Notification\" in window);\n  const permissionGranted = ref(isSupported.value && \"permission\" in Notification && Notification.permission === \"granted\");\n  const notification = ref(null);\n  const ensurePermissions = async () => {\n    if (!isSupported.value)\n      return;\n    if (!permissionGranted.value && Notification.permission !== \"denied\") {\n      const result = await Notification.requestPermission();\n      if (result === \"granted\")\n        permissionGranted.value = true;\n    }\n    return permissionGranted.value;\n  };\n  const { on: onClick, trigger: clickTrigger } = createEventHook();\n  const { on: onShow, trigger: showTrigger } = createEventHook();\n  const { on: onError, trigger: errorTrigger } = createEventHook();\n  const { on: onClose, trigger: closeTrigger } = createEventHook();\n  const show = async (overrides) => {\n    if (!isSupported.value || !permissionGranted.value)\n      return;\n    const options2 = Object.assign({}, defaultWebNotificationOptions, overrides);\n    notification.value = new Notification(options2.title || \"\", options2);\n    notification.value.onclick = clickTrigger;\n    notification.value.onshow = showTrigger;\n    notification.value.onerror = errorTrigger;\n    notification.value.onclose = closeTrigger;\n    return notification.value;\n  };\n  const close = () => {\n    if (notification.value)\n      notification.value.close();\n    notification.value = null;\n  };\n  if (_requestForPermissions)\n    tryOnMounted(ensurePermissions);\n  tryOnScopeDispose(close);\n  if (isSupported.value && window) {\n    const document = window.document;\n    useEventListener(document, \"visibilitychange\", (e) => {\n      e.preventDefault();\n      if (document.visibilityState === \"visible\") {\n        close();\n      }\n    });\n  }\n  return {\n    isSupported,\n    notification,\n    ensurePermissions,\n    permissionGranted,\n    show,\n    close,\n    onClick,\n    onShow,\n    onError,\n    onClose\n  };\n}\n\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n  if (options === true)\n    return {};\n  return options;\n}\nfunction useWebSocket(url, options = {}) {\n  const {\n    onConnected,\n    onDisconnected,\n    onError,\n    onMessage,\n    immediate = true,\n    autoClose = true,\n    protocols = []\n  } = options;\n  const data = ref(null);\n  const status = ref(\"CLOSED\");\n  const wsRef = ref();\n  const urlRef = toRef(url);\n  let heartbeatPause;\n  let heartbeatResume;\n  let explicitlyClosed = false;\n  let retried = 0;\n  let bufferedData = [];\n  let pongTimeoutWait;\n  const _sendBuffer = () => {\n    if (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n      for (const buffer of bufferedData)\n        wsRef.value.send(buffer);\n      bufferedData = [];\n    }\n  };\n  const resetHeartbeat = () => {\n    clearTimeout(pongTimeoutWait);\n    pongTimeoutWait = void 0;\n  };\n  const close = (code = 1e3, reason) => {\n    if (!isClient || !wsRef.value)\n      return;\n    explicitlyClosed = true;\n    resetHeartbeat();\n    heartbeatPause == null ? void 0 : heartbeatPause();\n    wsRef.value.close(code, reason);\n    wsRef.value = void 0;\n  };\n  const send = (data2, useBuffer = true) => {\n    if (!wsRef.value || status.value !== \"OPEN\") {\n      if (useBuffer)\n        bufferedData.push(data2);\n      return false;\n    }\n    _sendBuffer();\n    wsRef.value.send(data2);\n    return true;\n  };\n  const _init = () => {\n    if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n      return;\n    const ws = new WebSocket(urlRef.value, protocols);\n    wsRef.value = ws;\n    status.value = \"CONNECTING\";\n    ws.onopen = () => {\n      status.value = \"OPEN\";\n      onConnected == null ? void 0 : onConnected(ws);\n      heartbeatResume == null ? void 0 : heartbeatResume();\n      _sendBuffer();\n    };\n    ws.onclose = (ev) => {\n      status.value = \"CLOSED\";\n      onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n      if (!explicitlyClosed && options.autoReconnect) {\n        const {\n          retries = -1,\n          delay = 1e3,\n          onFailed\n        } = resolveNestedOptions(options.autoReconnect);\n        retried += 1;\n        if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n          setTimeout(_init, delay);\n        else if (typeof retries === \"function\" && retries())\n          setTimeout(_init, delay);\n        else\n          onFailed == null ? void 0 : onFailed();\n      }\n    };\n    ws.onerror = (e) => {\n      onError == null ? void 0 : onError(ws, e);\n    };\n    ws.onmessage = (e) => {\n      if (options.heartbeat) {\n        resetHeartbeat();\n        const {\n          message = DEFAULT_PING_MESSAGE\n        } = resolveNestedOptions(options.heartbeat);\n        if (e.data === message)\n          return;\n      }\n      data.value = e.data;\n      onMessage == null ? void 0 : onMessage(ws, e);\n    };\n  };\n  if (options.heartbeat) {\n    const {\n      message = DEFAULT_PING_MESSAGE,\n      interval = 1e3,\n      pongTimeout = 1e3\n    } = resolveNestedOptions(options.heartbeat);\n    const { pause, resume } = useIntervalFn(\n      () => {\n        send(message, false);\n        if (pongTimeoutWait != null)\n          return;\n        pongTimeoutWait = setTimeout(() => {\n          close();\n          explicitlyClosed = false;\n        }, pongTimeout);\n      },\n      interval,\n      { immediate: false }\n    );\n    heartbeatPause = pause;\n    heartbeatResume = resume;\n  }\n  if (autoClose) {\n    if (isClient)\n      useEventListener(\"beforeunload\", () => close());\n    tryOnScopeDispose(close);\n  }\n  const open = () => {\n    if (!isClient && !isWorker)\n      return;\n    close();\n    explicitlyClosed = false;\n    retried = 0;\n    _init();\n  };\n  if (immediate)\n    open();\n  return {\n    data,\n    status,\n    close,\n    send,\n    open,\n    ws: wsRef\n  };\n}\n\nfunction useWebWorker(arg0, workerOptions, options) {\n  const {\n    window = defaultWindow\n  } = options != null ? options : {};\n  const data = ref(null);\n  const worker = shallowRef();\n  const post = (...args) => {\n    if (!worker.value)\n      return;\n    worker.value.postMessage(...args);\n  };\n  const terminate = function terminate2() {\n    if (!worker.value)\n      return;\n    worker.value.terminate();\n  };\n  if (window) {\n    if (typeof arg0 === \"string\")\n      worker.value = new Worker(arg0, workerOptions);\n    else if (typeof arg0 === \"function\")\n      worker.value = arg0();\n    else\n      worker.value = arg0;\n    worker.value.onmessage = (e) => {\n      data.value = e.data;\n    };\n    tryOnScopeDispose(() => {\n      if (worker.value)\n        worker.value.terminate();\n    });\n  }\n  return {\n    data,\n    post,\n    terminate,\n    worker\n  };\n}\n\nfunction jobRunner(userFunc) {\n  return (e) => {\n    const userFuncArgs = e.data[0];\n    return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n      postMessage([\"SUCCESS\", result]);\n    }).catch((error) => {\n      postMessage([\"ERROR\", error]);\n    });\n  };\n}\n\nfunction depsParser(deps) {\n  if (deps.length === 0)\n    return \"\";\n  const depsString = deps.map((dep) => `'${dep}'`).toString();\n  return `importScripts(${depsString})`;\n}\n\nfunction createWorkerBlobUrl(fn, deps) {\n  const blobCode = `${depsParser(deps)}; onmessage=(${jobRunner})(${fn})`;\n  const blob = new Blob([blobCode], { type: \"text/javascript\" });\n  const url = URL.createObjectURL(blob);\n  return url;\n}\n\nfunction useWebWorkerFn(fn, options = {}) {\n  const {\n    dependencies = [],\n    timeout,\n    window = defaultWindow\n  } = options;\n  const worker = ref();\n  const workerStatus = ref(\"PENDING\");\n  const promise = ref({});\n  const timeoutId = ref();\n  const workerTerminate = (status = \"PENDING\") => {\n    if (worker.value && worker.value._url && window) {\n      worker.value.terminate();\n      URL.revokeObjectURL(worker.value._url);\n      promise.value = {};\n      worker.value = void 0;\n      window.clearTimeout(timeoutId.value);\n      workerStatus.value = status;\n    }\n  };\n  workerTerminate();\n  tryOnScopeDispose(workerTerminate);\n  const generateWorker = () => {\n    const blobUrl = createWorkerBlobUrl(fn, dependencies);\n    const newWorker = new Worker(blobUrl);\n    newWorker._url = blobUrl;\n    newWorker.onmessage = (e) => {\n      const { resolve = () => {\n      }, reject = () => {\n      } } = promise.value;\n      const [status, result] = e.data;\n      switch (status) {\n        case \"SUCCESS\":\n          resolve(result);\n          workerTerminate(status);\n          break;\n        default:\n          reject(result);\n          workerTerminate(\"ERROR\");\n          break;\n      }\n    };\n    newWorker.onerror = (e) => {\n      const { reject = () => {\n      } } = promise.value;\n      e.preventDefault();\n      reject(e);\n      workerTerminate(\"ERROR\");\n    };\n    if (timeout) {\n      timeoutId.value = setTimeout(\n        () => workerTerminate(\"TIMEOUT_EXPIRED\"),\n        timeout\n      );\n    }\n    return newWorker;\n  };\n  const callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n    promise.value = {\n      resolve,\n      reject\n    };\n    worker.value && worker.value.postMessage([[...fnArgs]]);\n    workerStatus.value = \"RUNNING\";\n  });\n  const workerFn = (...fnArgs) => {\n    if (workerStatus.value === \"RUNNING\") {\n      console.error(\n        \"[useWebWorkerFn] You can only run one instance of the worker at a time.\"\n      );\n      return Promise.reject();\n    }\n    worker.value = generateWorker();\n    return callWorker(...fnArgs);\n  };\n  return {\n    workerFn,\n    workerStatus,\n    workerTerminate\n  };\n}\n\nfunction useWindowFocus(options = {}) {\n  const { window = defaultWindow } = options;\n  if (!window)\n    return ref(false);\n  const focused = ref(window.document.hasFocus());\n  useEventListener(window, \"blur\", () => {\n    focused.value = false;\n  });\n  useEventListener(window, \"focus\", () => {\n    focused.value = true;\n  });\n  return focused;\n}\n\nfunction useWindowScroll(options = {}) {\n  const { window = defaultWindow, behavior = \"auto\" } = options;\n  if (!window) {\n    return {\n      x: ref(0),\n      y: ref(0)\n    };\n  }\n  const internalX = ref(window.scrollX);\n  const internalY = ref(window.scrollY);\n  const x = computed({\n    get() {\n      return internalX.value;\n    },\n    set(x2) {\n      scrollTo({ left: x2, behavior });\n    }\n  });\n  const y = computed({\n    get() {\n      return internalY.value;\n    },\n    set(y2) {\n      scrollTo({ top: y2, behavior });\n    }\n  });\n  useEventListener(\n    window,\n    \"scroll\",\n    () => {\n      internalX.value = window.scrollX;\n      internalY.value = window.scrollY;\n    },\n    {\n      capture: false,\n      passive: true\n    }\n  );\n  return { x, y };\n}\n\nfunction useWindowSize(options = {}) {\n  const {\n    window = defaultWindow,\n    initialWidth = Number.POSITIVE_INFINITY,\n    initialHeight = Number.POSITIVE_INFINITY,\n    listenOrientation = true,\n    includeScrollbar = true\n  } = options;\n  const width = ref(initialWidth);\n  const height = ref(initialHeight);\n  const update = () => {\n    if (window) {\n      if (includeScrollbar) {\n        width.value = window.innerWidth;\n        height.value = window.innerHeight;\n      } else {\n        width.value = window.document.documentElement.clientWidth;\n        height.value = window.document.documentElement.clientHeight;\n      }\n    }\n  };\n  update();\n  tryOnMounted(update);\n  useEventListener(\"resize\", update, { passive: true });\n  if (listenOrientation) {\n    const matches = useMediaQuery(\"(orientation: portrait)\");\n    watch(matches, () => update());\n  }\n  return { width, height };\n}\n\nexport { DefaultMagicKeysAliasMap, StorageSerializers, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsMasterCss, breakpointsPrimeFlex, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, breakpointsVuetifyV2, breakpointsVuetifyV3, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, setSSRHandler, templateRef, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useClipboardItems, useCloned, useColorMode, useConfirmDialog, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, useParentElement, usePerformanceObserver, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePrevious, useRafFn, useRefHistory, useResizeObserver, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n","/*!\n* tabbable 6.2.0\n* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE\n*/\n// NOTE: separate `:not()` selectors has broader browser support than the newer\n//  `:not([inert], [inert] *)` (Feb 2023)\n// CAREFUL: JSDom does not support `:not([inert] *)` as a selector; using it causes\n//  the entire query to fail, resulting in no nodes found, which will break a lot\n//  of things... so we have to rely on JS to identify nodes inside an inert container\nvar candidateSelectors = ['input:not([inert])', 'select:not([inert])', 'textarea:not([inert])', 'a[href]:not([inert])', 'button:not([inert])', '[tabindex]:not(slot):not([inert])', 'audio[controls]:not([inert])', 'video[controls]:not([inert])', '[contenteditable]:not([contenteditable=\"false\"]):not([inert])', 'details>summary:first-of-type:not([inert])', 'details:not([inert])'];\nvar candidateSelector = /* #__PURE__ */candidateSelectors.join(',');\nvar NoElement = typeof Element === 'undefined';\nvar matches = NoElement ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\nvar getRootNode = !NoElement && Element.prototype.getRootNode ? function (element) {\n  var _element$getRootNode;\n  return element === null || element === void 0 ? void 0 : (_element$getRootNode = element.getRootNode) === null || _element$getRootNode === void 0 ? void 0 : _element$getRootNode.call(element);\n} : function (element) {\n  return element === null || element === void 0 ? void 0 : element.ownerDocument;\n};\n\n/**\n * Determines if a node is inert or in an inert ancestor.\n * @param {Element} [node]\n * @param {boolean} [lookUp] If true and `node` is not inert, looks up at ancestors to\n *  see if any of them are inert. If false, only `node` itself is considered.\n * @returns {boolean} True if inert itself or by way of being in an inert ancestor.\n *  False if `node` is falsy.\n */\nvar isInert = function isInert(node, lookUp) {\n  var _node$getAttribute;\n  if (lookUp === void 0) {\n    lookUp = true;\n  }\n  // CAREFUL: JSDom does not support inert at all, so we can't use the `HTMLElement.inert`\n  //  JS API property; we have to check the attribute, which can either be empty or 'true';\n  //  if it's `null` (not specified) or 'false', it's an active element\n  var inertAtt = node === null || node === void 0 ? void 0 : (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'inert');\n  var inert = inertAtt === '' || inertAtt === 'true';\n\n  // NOTE: this could also be handled with `node.matches('[inert], :is([inert] *)')`\n  //  if it weren't for `matches()` not being a function on shadow roots; the following\n  //  code works for any kind of node\n  // CAREFUL: JSDom does not appear to support certain selectors like `:not([inert] *)`\n  //  so it likely would not support `:is([inert] *)` either...\n  var result = inert || lookUp && node && isInert(node.parentNode); // recursive\n\n  return result;\n};\n\n/**\n * Determines if a node's content is editable.\n * @param {Element} [node]\n * @returns True if it's content-editable; false if it's not or `node` is falsy.\n */\nvar isContentEditable = function isContentEditable(node) {\n  var _node$getAttribute2;\n  // CAREFUL: JSDom does not support the `HTMLElement.isContentEditable` API so we have\n  //  to use the attribute directly to check for this, which can either be empty or 'true';\n  //  if it's `null` (not specified) or 'false', it's a non-editable element\n  var attValue = node === null || node === void 0 ? void 0 : (_node$getAttribute2 = node.getAttribute) === null || _node$getAttribute2 === void 0 ? void 0 : _node$getAttribute2.call(node, 'contenteditable');\n  return attValue === '' || attValue === 'true';\n};\n\n/**\n * @param {Element} el container to check in\n * @param {boolean} includeContainer add container to check\n * @param {(node: Element) => boolean} filter filter candidates\n * @returns {Element[]}\n */\nvar getCandidates = function getCandidates(el, includeContainer, filter) {\n  // even if `includeContainer=false`, we still have to check it for inertness because\n  //  if it's inert, all its children are inert\n  if (isInert(el)) {\n    return [];\n  }\n  var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));\n  if (includeContainer && matches.call(el, candidateSelector)) {\n    candidates.unshift(el);\n  }\n  candidates = candidates.filter(filter);\n  return candidates;\n};\n\n/**\n * @callback GetShadowRoot\n * @param {Element} element to check for shadow root\n * @returns {ShadowRoot|boolean} ShadowRoot if available or boolean indicating if a shadowRoot is attached but not available.\n */\n\n/**\n * @callback ShadowRootFilter\n * @param {Element} shadowHostNode the element which contains shadow content\n * @returns {boolean} true if a shadow root could potentially contain valid candidates.\n */\n\n/**\n * @typedef {Object} CandidateScope\n * @property {Element} scopeParent contains inner candidates\n * @property {Element[]} candidates list of candidates found in the scope parent\n */\n\n/**\n * @typedef {Object} IterativeOptions\n * @property {GetShadowRoot|boolean} getShadowRoot true if shadow support is enabled; falsy if not;\n *  if a function, implies shadow support is enabled and either returns the shadow root of an element\n *  or a boolean stating if it has an undisclosed shadow root\n * @property {(node: Element) => boolean} filter filter candidates\n * @property {boolean} flatten if true then result will flatten any CandidateScope into the returned list\n * @property {ShadowRootFilter} shadowRootFilter filter shadow roots;\n */\n\n/**\n * @param {Element[]} elements list of element containers to match candidates from\n * @param {boolean} includeContainer add container list to check\n * @param {IterativeOptions} options\n * @returns {Array.<Element|CandidateScope>}\n */\nvar getCandidatesIteratively = function getCandidatesIteratively(elements, includeContainer, options) {\n  var candidates = [];\n  var elementsToCheck = Array.from(elements);\n  while (elementsToCheck.length) {\n    var element = elementsToCheck.shift();\n    if (isInert(element, false)) {\n      // no need to look up since we're drilling down\n      // anything inside this container will also be inert\n      continue;\n    }\n    if (element.tagName === 'SLOT') {\n      // add shadow dom slot scope (slot itself cannot be focusable)\n      var assigned = element.assignedElements();\n      var content = assigned.length ? assigned : element.children;\n      var nestedCandidates = getCandidatesIteratively(content, true, options);\n      if (options.flatten) {\n        candidates.push.apply(candidates, nestedCandidates);\n      } else {\n        candidates.push({\n          scopeParent: element,\n          candidates: nestedCandidates\n        });\n      }\n    } else {\n      // check candidate element\n      var validCandidate = matches.call(element, candidateSelector);\n      if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) {\n        candidates.push(element);\n      }\n\n      // iterate over shadow content if possible\n      var shadowRoot = element.shadowRoot ||\n      // check for an undisclosed shadow\n      typeof options.getShadowRoot === 'function' && options.getShadowRoot(element);\n\n      // no inert look up because we're already drilling down and checking for inertness\n      //  on the way down, so all containers to this root node should have already been\n      //  vetted as non-inert\n      var validShadowRoot = !isInert(shadowRoot, false) && (!options.shadowRootFilter || options.shadowRootFilter(element));\n      if (shadowRoot && validShadowRoot) {\n        // add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed\n        //  shadow exists, so look at light dom children as fallback BUT create a scope for any\n        //  child candidates found because they're likely slotted elements (elements that are\n        //  children of the web component element (which has the shadow), in the light dom, but\n        //  slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below,\n        //  _after_ we return from this recursive call\n        var _nestedCandidates = getCandidatesIteratively(shadowRoot === true ? element.children : shadowRoot.children, true, options);\n        if (options.flatten) {\n          candidates.push.apply(candidates, _nestedCandidates);\n        } else {\n          candidates.push({\n            scopeParent: element,\n            candidates: _nestedCandidates\n          });\n        }\n      } else {\n        // there's not shadow so just dig into the element's (light dom) children\n        //  __without__ giving the element special scope treatment\n        elementsToCheck.unshift.apply(elementsToCheck, element.children);\n      }\n    }\n  }\n  return candidates;\n};\n\n/**\n * @private\n * Determines if the node has an explicitly specified `tabindex` attribute.\n * @param {HTMLElement} node\n * @returns {boolean} True if so; false if not.\n */\nvar hasTabIndex = function hasTabIndex(node) {\n  return !isNaN(parseInt(node.getAttribute('tabindex'), 10));\n};\n\n/**\n * Determine the tab index of a given node.\n * @param {HTMLElement} node\n * @returns {number} Tab order (negative, 0, or positive number).\n * @throws {Error} If `node` is falsy.\n */\nvar getTabIndex = function getTabIndex(node) {\n  if (!node) {\n    throw new Error('No node provided');\n  }\n  if (node.tabIndex < 0) {\n    // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n    // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n    // yet they are still part of the regular tab order; in FF, they get a default\n    // `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n    // order, consider their tab index to be 0.\n    // Also browsers do not return `tabIndex` correctly for contentEditable nodes;\n    // so if they don't have a tabindex attribute specifically set, assume it's 0.\n    if ((/^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) || isContentEditable(node)) && !hasTabIndex(node)) {\n      return 0;\n    }\n  }\n  return node.tabIndex;\n};\n\n/**\n * Determine the tab index of a given node __for sort order purposes__.\n * @param {HTMLElement} node\n * @param {boolean} [isScope] True for a custom element with shadow root or slot that, by default,\n *  has tabIndex -1, but needs to be sorted by document order in order for its content to be\n *  inserted into the correct sort position.\n * @returns {number} Tab order (negative, 0, or positive number).\n */\nvar getSortOrderTabIndex = function getSortOrderTabIndex(node, isScope) {\n  var tabIndex = getTabIndex(node);\n  if (tabIndex < 0 && isScope && !hasTabIndex(node)) {\n    return 0;\n  }\n  return tabIndex;\n};\nvar sortOrderedTabbables = function sortOrderedTabbables(a, b) {\n  return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n};\nvar isInput = function isInput(node) {\n  return node.tagName === 'INPUT';\n};\nvar isHiddenInput = function isHiddenInput(node) {\n  return isInput(node) && node.type === 'hidden';\n};\nvar isDetailsWithSummary = function isDetailsWithSummary(node) {\n  var r = node.tagName === 'DETAILS' && Array.prototype.slice.apply(node.children).some(function (child) {\n    return child.tagName === 'SUMMARY';\n  });\n  return r;\n};\nvar getCheckedRadio = function getCheckedRadio(nodes, form) {\n  for (var i = 0; i < nodes.length; i++) {\n    if (nodes[i].checked && nodes[i].form === form) {\n      return nodes[i];\n    }\n  }\n};\nvar isTabbableRadio = function isTabbableRadio(node) {\n  if (!node.name) {\n    return true;\n  }\n  var radioScope = node.form || getRootNode(node);\n  var queryRadios = function queryRadios(name) {\n    return radioScope.querySelectorAll('input[type=\"radio\"][name=\"' + name + '\"]');\n  };\n  var radioSet;\n  if (typeof window !== 'undefined' && typeof window.CSS !== 'undefined' && typeof window.CSS.escape === 'function') {\n    radioSet = queryRadios(window.CSS.escape(node.name));\n  } else {\n    try {\n      radioSet = queryRadios(node.name);\n    } catch (err) {\n      // eslint-disable-next-line no-console\n      console.error('Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s', err.message);\n      return false;\n    }\n  }\n  var checked = getCheckedRadio(radioSet, node.form);\n  return !checked || checked === node;\n};\nvar isRadio = function isRadio(node) {\n  return isInput(node) && node.type === 'radio';\n};\nvar isNonTabbableRadio = function isNonTabbableRadio(node) {\n  return isRadio(node) && !isTabbableRadio(node);\n};\n\n// determines if a node is ultimately attached to the window's document\nvar isNodeAttached = function isNodeAttached(node) {\n  var _nodeRoot;\n  // The root node is the shadow root if the node is in a shadow DOM; some document otherwise\n  //  (but NOT _the_ document; see second 'If' comment below for more).\n  // If rootNode is shadow root, it'll have a host, which is the element to which the shadow\n  //  is attached, and the one we need to check if it's in the document or not (because the\n  //  shadow, and all nodes it contains, is never considered in the document since shadows\n  //  behave like self-contained DOMs; but if the shadow's HOST, which is part of the document,\n  //  is hidden, or is not in the document itself but is detached, it will affect the shadow's\n  //  visibility, including all the nodes it contains). The host could be any normal node,\n  //  or a custom element (i.e. web component). Either way, that's the one that is considered\n  //  part of the document, not the shadow root, nor any of its children (i.e. the node being\n  //  tested).\n  // To further complicate things, we have to look all the way up until we find a shadow HOST\n  //  that is attached (or find none) because the node might be in nested shadows...\n  // If rootNode is not a shadow root, it won't have a host, and so rootNode should be the\n  //  document (per the docs) and while it's a Document-type object, that document does not\n  //  appear to be the same as the node's `ownerDocument` for some reason, so it's safer\n  //  to ignore the rootNode at this point, and use `node.ownerDocument`. Otherwise,\n  //  using `rootNode.contains(node)` will _always_ be true we'll get false-positives when\n  //  node is actually detached.\n  // NOTE: If `nodeRootHost` or `node` happens to be the `document` itself (which is possible\n  //  if a tabbable/focusable node was quickly added to the DOM, focused, and then removed\n  //  from the DOM as in https://github.com/focus-trap/focus-trap-react/issues/905), then\n  //  `ownerDocument` will be `null`, hence the optional chaining on it.\n  var nodeRoot = node && getRootNode(node);\n  var nodeRootHost = (_nodeRoot = nodeRoot) === null || _nodeRoot === void 0 ? void 0 : _nodeRoot.host;\n\n  // in some cases, a detached node will return itself as the root instead of a document or\n  //  shadow root object, in which case, we shouldn't try to look further up the host chain\n  var attached = false;\n  if (nodeRoot && nodeRoot !== node) {\n    var _nodeRootHost, _nodeRootHost$ownerDo, _node$ownerDocument;\n    attached = !!((_nodeRootHost = nodeRootHost) !== null && _nodeRootHost !== void 0 && (_nodeRootHost$ownerDo = _nodeRootHost.ownerDocument) !== null && _nodeRootHost$ownerDo !== void 0 && _nodeRootHost$ownerDo.contains(nodeRootHost) || node !== null && node !== void 0 && (_node$ownerDocument = node.ownerDocument) !== null && _node$ownerDocument !== void 0 && _node$ownerDocument.contains(node));\n    while (!attached && nodeRootHost) {\n      var _nodeRoot2, _nodeRootHost2, _nodeRootHost2$ownerD;\n      // since it's not attached and we have a root host, the node MUST be in a nested shadow DOM,\n      //  which means we need to get the host's host and check if that parent host is contained\n      //  in (i.e. attached to) the document\n      nodeRoot = getRootNode(nodeRootHost);\n      nodeRootHost = (_nodeRoot2 = nodeRoot) === null || _nodeRoot2 === void 0 ? void 0 : _nodeRoot2.host;\n      attached = !!((_nodeRootHost2 = nodeRootHost) !== null && _nodeRootHost2 !== void 0 && (_nodeRootHost2$ownerD = _nodeRootHost2.ownerDocument) !== null && _nodeRootHost2$ownerD !== void 0 && _nodeRootHost2$ownerD.contains(nodeRootHost));\n    }\n  }\n  return attached;\n};\nvar isZeroArea = function isZeroArea(node) {\n  var _node$getBoundingClie = node.getBoundingClientRect(),\n    width = _node$getBoundingClie.width,\n    height = _node$getBoundingClie.height;\n  return width === 0 && height === 0;\n};\nvar isHidden = function isHidden(node, _ref) {\n  var displayCheck = _ref.displayCheck,\n    getShadowRoot = _ref.getShadowRoot;\n  // NOTE: visibility will be `undefined` if node is detached from the document\n  //  (see notes about this further down), which means we will consider it visible\n  //  (this is legacy behavior from a very long way back)\n  // NOTE: we check this regardless of `displayCheck=\"none\"` because this is a\n  //  _visibility_ check, not a _display_ check\n  if (getComputedStyle(node).visibility === 'hidden') {\n    return true;\n  }\n  var isDirectSummary = matches.call(node, 'details>summary:first-of-type');\n  var nodeUnderDetails = isDirectSummary ? node.parentElement : node;\n  if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {\n    return true;\n  }\n  if (!displayCheck || displayCheck === 'full' || displayCheck === 'legacy-full') {\n    if (typeof getShadowRoot === 'function') {\n      // figure out if we should consider the node to be in an undisclosed shadow and use the\n      //  'non-zero-area' fallback\n      var originalNode = node;\n      while (node) {\n        var parentElement = node.parentElement;\n        var rootNode = getRootNode(node);\n        if (parentElement && !parentElement.shadowRoot && getShadowRoot(parentElement) === true // check if there's an undisclosed shadow\n        ) {\n          // node has an undisclosed shadow which means we can only treat it as a black box, so we\n          //  fall back to a non-zero-area test\n          return isZeroArea(node);\n        } else if (node.assignedSlot) {\n          // iterate up slot\n          node = node.assignedSlot;\n        } else if (!parentElement && rootNode !== node.ownerDocument) {\n          // cross shadow boundary\n          node = rootNode.host;\n        } else {\n          // iterate up normal dom\n          node = parentElement;\n        }\n      }\n      node = originalNode;\n    }\n    // else, `getShadowRoot` might be true, but all that does is enable shadow DOM support\n    //  (i.e. it does not also presume that all nodes might have undisclosed shadows); or\n    //  it might be a falsy value, which means shadow DOM support is disabled\n\n    // Since we didn't find it sitting in an undisclosed shadow (or shadows are disabled)\n    //  now we can just test to see if it would normally be visible or not, provided it's\n    //  attached to the main document.\n    // NOTE: We must consider case where node is inside a shadow DOM and given directly to\n    //  `isTabbable()` or `isFocusable()` -- regardless of `getShadowRoot` option setting.\n\n    if (isNodeAttached(node)) {\n      // this works wherever the node is: if there's at least one client rect, it's\n      //  somehow displayed; it also covers the CSS 'display: contents' case where the\n      //  node itself is hidden in place of its contents; and there's no need to search\n      //  up the hierarchy either\n      return !node.getClientRects().length;\n    }\n\n    // Else, the node isn't attached to the document, which means the `getClientRects()`\n    //  API will __always__ return zero rects (this can happen, for example, if React\n    //  is used to render nodes onto a detached tree, as confirmed in this thread:\n    //  https://github.com/facebook/react/issues/9117#issuecomment-284228870)\n    //\n    // It also means that even window.getComputedStyle(node).display will return `undefined`\n    //  because styles are only computed for nodes that are in the document.\n    //\n    // NOTE: THIS HAS BEEN THE CASE FOR YEARS. It is not new, nor is it caused by tabbable\n    //  somehow. Though it was never stated officially, anyone who has ever used tabbable\n    //  APIs on nodes in detached containers has actually implicitly used tabbable in what\n    //  was later (as of v5.2.0 on Apr 9, 2021) called `displayCheck=\"none\"` mode -- essentially\n    //  considering __everything__ to be visible because of the innability to determine styles.\n    //\n    // v6.0.0: As of this major release, the default 'full' option __no longer treats detached\n    //  nodes as visible with the 'none' fallback.__\n    if (displayCheck !== 'legacy-full') {\n      return true; // hidden\n    }\n    // else, fallback to 'none' mode and consider the node visible\n  } else if (displayCheck === 'non-zero-area') {\n    // NOTE: Even though this tests that the node's client rect is non-zero to determine\n    //  whether it's displayed, and that a detached node will __always__ have a zero-area\n    //  client rect, we don't special-case for whether the node is attached or not. In\n    //  this mode, we do want to consider nodes that have a zero area to be hidden at all\n    //  times, and that includes attached or not.\n    return isZeroArea(node);\n  }\n\n  // visible, as far as we can tell, or per current `displayCheck=none` mode, we assume\n  //  it's visible\n  return false;\n};\n\n// form fields (nested) inside a disabled fieldset are not focusable/tabbable\n//  unless they are in the _first_ <legend> element of the top-most disabled\n//  fieldset\nvar isDisabledFromFieldset = function isDisabledFromFieldset(node) {\n  if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {\n    var parentNode = node.parentElement;\n    // check if `node` is contained in a disabled <fieldset>\n    while (parentNode) {\n      if (parentNode.tagName === 'FIELDSET' && parentNode.disabled) {\n        // look for the first <legend> among the children of the disabled <fieldset>\n        for (var i = 0; i < parentNode.children.length; i++) {\n          var child = parentNode.children.item(i);\n          // when the first <legend> (in document order) is found\n          if (child.tagName === 'LEGEND') {\n            // if its parent <fieldset> is not nested in another disabled <fieldset>,\n            // return whether `node` is a descendant of its first <legend>\n            return matches.call(parentNode, 'fieldset[disabled] *') ? true : !child.contains(node);\n          }\n        }\n        // the disabled <fieldset> containing `node` has no <legend>\n        return true;\n      }\n      parentNode = parentNode.parentElement;\n    }\n  }\n\n  // else, node's tabbable/focusable state should not be affected by a fieldset's\n  //  enabled/disabled state\n  return false;\n};\nvar isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable(options, node) {\n  if (node.disabled ||\n  // we must do an inert look up to filter out any elements inside an inert ancestor\n  //  because we're limited in the type of selectors we can use in JSDom (see related\n  //  note related to `candidateSelectors`)\n  isInert(node) || isHiddenInput(node) || isHidden(node, options) ||\n  // For a details element with a summary, the summary element gets the focus\n  isDetailsWithSummary(node) || isDisabledFromFieldset(node)) {\n    return false;\n  }\n  return true;\n};\nvar isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable(options, node) {\n  if (isNonTabbableRadio(node) || getTabIndex(node) < 0 || !isNodeMatchingSelectorFocusable(options, node)) {\n    return false;\n  }\n  return true;\n};\nvar isValidShadowRootTabbable = function isValidShadowRootTabbable(shadowHostNode) {\n  var tabIndex = parseInt(shadowHostNode.getAttribute('tabindex'), 10);\n  if (isNaN(tabIndex) || tabIndex >= 0) {\n    return true;\n  }\n  // If a custom element has an explicit negative tabindex,\n  // browsers will not allow tab targeting said element's children.\n  return false;\n};\n\n/**\n * @param {Array.<Element|CandidateScope>} candidates\n * @returns Element[]\n */\nvar sortByOrder = function sortByOrder(candidates) {\n  var regularTabbables = [];\n  var orderedTabbables = [];\n  candidates.forEach(function (item, i) {\n    var isScope = !!item.scopeParent;\n    var element = isScope ? item.scopeParent : item;\n    var candidateTabindex = getSortOrderTabIndex(element, isScope);\n    var elements = isScope ? sortByOrder(item.candidates) : element;\n    if (candidateTabindex === 0) {\n      isScope ? regularTabbables.push.apply(regularTabbables, elements) : regularTabbables.push(element);\n    } else {\n      orderedTabbables.push({\n        documentOrder: i,\n        tabIndex: candidateTabindex,\n        item: item,\n        isScope: isScope,\n        content: elements\n      });\n    }\n  });\n  return orderedTabbables.sort(sortOrderedTabbables).reduce(function (acc, sortable) {\n    sortable.isScope ? acc.push.apply(acc, sortable.content) : acc.push(sortable.content);\n    return acc;\n  }, []).concat(regularTabbables);\n};\nvar tabbable = function tabbable(container, options) {\n  options = options || {};\n  var candidates;\n  if (options.getShadowRoot) {\n    candidates = getCandidatesIteratively([container], options.includeContainer, {\n      filter: isNodeMatchingSelectorTabbable.bind(null, options),\n      flatten: false,\n      getShadowRoot: options.getShadowRoot,\n      shadowRootFilter: isValidShadowRootTabbable\n    });\n  } else {\n    candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options));\n  }\n  return sortByOrder(candidates);\n};\nvar focusable = function focusable(container, options) {\n  options = options || {};\n  var candidates;\n  if (options.getShadowRoot) {\n    candidates = getCandidatesIteratively([container], options.includeContainer, {\n      filter: isNodeMatchingSelectorFocusable.bind(null, options),\n      flatten: true,\n      getShadowRoot: options.getShadowRoot\n    });\n  } else {\n    candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options));\n  }\n  return candidates;\n};\nvar isTabbable = function isTabbable(node, options) {\n  options = options || {};\n  if (!node) {\n    throw new Error('No node provided');\n  }\n  if (matches.call(node, candidateSelector) === false) {\n    return false;\n  }\n  return isNodeMatchingSelectorTabbable(options, node);\n};\nvar focusableCandidateSelector = /* #__PURE__ */candidateSelectors.concat('iframe').join(',');\nvar isFocusable = function isFocusable(node, options) {\n  options = options || {};\n  if (!node) {\n    throw new Error('No node provided');\n  }\n  if (matches.call(node, focusableCandidateSelector) === false) {\n    return false;\n  }\n  return isNodeMatchingSelectorFocusable(options, node);\n};\n\nexport { focusable, getTabIndex, isFocusable, isTabbable, tabbable };\n//# sourceMappingURL=index.esm.js.map\n","/*!\n* focus-trap 7.5.4\n* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE\n*/\nimport { isFocusable, tabbable, focusable, isTabbable, getTabIndex } from 'tabbable';\n\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n      _defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}\nfunction _defineProperty(obj, key, value) {\n  key = _toPropertyKey(key);\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  return obj;\n}\nfunction _toPrimitive(input, hint) {\n  if (typeof input !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (typeof res !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n  var key = _toPrimitive(arg, \"string\");\n  return typeof key === \"symbol\" ? key : String(key);\n}\n\nvar activeFocusTraps = {\n  activateTrap: function activateTrap(trapStack, trap) {\n    if (trapStack.length > 0) {\n      var activeTrap = trapStack[trapStack.length - 1];\n      if (activeTrap !== trap) {\n        activeTrap.pause();\n      }\n    }\n    var trapIndex = trapStack.indexOf(trap);\n    if (trapIndex === -1) {\n      trapStack.push(trap);\n    } else {\n      // move this existing trap to the front of the queue\n      trapStack.splice(trapIndex, 1);\n      trapStack.push(trap);\n    }\n  },\n  deactivateTrap: function deactivateTrap(trapStack, trap) {\n    var trapIndex = trapStack.indexOf(trap);\n    if (trapIndex !== -1) {\n      trapStack.splice(trapIndex, 1);\n    }\n    if (trapStack.length > 0) {\n      trapStack[trapStack.length - 1].unpause();\n    }\n  }\n};\nvar isSelectableInput = function isSelectableInput(node) {\n  return node.tagName && node.tagName.toLowerCase() === 'input' && typeof node.select === 'function';\n};\nvar isEscapeEvent = function isEscapeEvent(e) {\n  return (e === null || e === void 0 ? void 0 : e.key) === 'Escape' || (e === null || e === void 0 ? void 0 : e.key) === 'Esc' || (e === null || e === void 0 ? void 0 : e.keyCode) === 27;\n};\nvar isTabEvent = function isTabEvent(e) {\n  return (e === null || e === void 0 ? void 0 : e.key) === 'Tab' || (e === null || e === void 0 ? void 0 : e.keyCode) === 9;\n};\n\n// checks for TAB by default\nvar isKeyForward = function isKeyForward(e) {\n  return isTabEvent(e) && !e.shiftKey;\n};\n\n// checks for SHIFT+TAB by default\nvar isKeyBackward = function isKeyBackward(e) {\n  return isTabEvent(e) && e.shiftKey;\n};\nvar delay = function delay(fn) {\n  return setTimeout(fn, 0);\n};\n\n// Array.find/findIndex() are not supported on IE; this replicates enough\n//  of Array.findIndex() for our needs\nvar findIndex = function findIndex(arr, fn) {\n  var idx = -1;\n  arr.every(function (value, i) {\n    if (fn(value)) {\n      idx = i;\n      return false; // break\n    }\n\n    return true; // next\n  });\n\n  return idx;\n};\n\n/**\n * Get an option's value when it could be a plain value, or a handler that provides\n *  the value.\n * @param {*} value Option's value to check.\n * @param {...*} [params] Any parameters to pass to the handler, if `value` is a function.\n * @returns {*} The `value`, or the handler's returned value.\n */\nvar valueOrHandler = function valueOrHandler(value) {\n  for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    params[_key - 1] = arguments[_key];\n  }\n  return typeof value === 'function' ? value.apply(void 0, params) : value;\n};\nvar getActualTarget = function getActualTarget(event) {\n  // NOTE: If the trap is _inside_ a shadow DOM, event.target will always be the\n  //  shadow host. However, event.target.composedPath() will be an array of\n  //  nodes \"clicked\" from inner-most (the actual element inside the shadow) to\n  //  outer-most (the host HTML document). If we have access to composedPath(),\n  //  then use its first element; otherwise, fall back to event.target (and\n  //  this only works for an _open_ shadow DOM; otherwise,\n  //  composedPath()[0] === event.target always).\n  return event.target.shadowRoot && typeof event.composedPath === 'function' ? event.composedPath()[0] : event.target;\n};\n\n// NOTE: this must be _outside_ `createFocusTrap()` to make sure all traps in this\n//  current instance use the same stack if `userOptions.trapStack` isn't specified\nvar internalTrapStack = [];\nvar createFocusTrap = function createFocusTrap(elements, userOptions) {\n  // SSR: a live trap shouldn't be created in this type of environment so this\n  //  should be safe code to execute if the `document` option isn't specified\n  var doc = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.document) || document;\n  var trapStack = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.trapStack) || internalTrapStack;\n  var config = _objectSpread2({\n    returnFocusOnDeactivate: true,\n    escapeDeactivates: true,\n    delayInitialFocus: true,\n    isKeyForward: isKeyForward,\n    isKeyBackward: isKeyBackward\n  }, userOptions);\n  var state = {\n    // containers given to createFocusTrap()\n    // @type {Array<HTMLElement>}\n    containers: [],\n    // list of objects identifying tabbable nodes in `containers` in the trap\n    // NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap\n    //  is active, but the trap should never get to a state where there isn't at least one group\n    //  with at least one tabbable node in it (that would lead to an error condition that would\n    //  result in an error being thrown)\n    // @type {Array<{\n    //   container: HTMLElement,\n    //   tabbableNodes: Array<HTMLElement>, // empty if none\n    //   focusableNodes: Array<HTMLElement>, // empty if none\n    //   posTabIndexesFound: boolean,\n    //   firstTabbableNode: HTMLElement|undefined,\n    //   lastTabbableNode: HTMLElement|undefined,\n    //   firstDomTabbableNode: HTMLElement|undefined,\n    //   lastDomTabbableNode: HTMLElement|undefined,\n    //   nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined\n    // }>}\n    containerGroups: [],\n    // same order/length as `containers` list\n\n    // references to objects in `containerGroups`, but only those that actually have\n    //  tabbable nodes in them\n    // NOTE: same order as `containers` and `containerGroups`, but __not necessarily__\n    //  the same length\n    tabbableGroups: [],\n    nodeFocusedBeforeActivation: null,\n    mostRecentlyFocusedNode: null,\n    active: false,\n    paused: false,\n    // timer ID for when delayInitialFocus is true and initial focus in this trap\n    //  has been delayed during activation\n    delayInitialFocusTimer: undefined,\n    // the most recent KeyboardEvent for the configured nav key (typically [SHIFT+]TAB), if any\n    recentNavEvent: undefined\n  };\n  var trap; // eslint-disable-line prefer-const -- some private functions reference it, and its methods reference private functions, so we must declare here and define later\n\n  /**\n   * Gets a configuration option value.\n   * @param {Object|undefined} configOverrideOptions If true, and option is defined in this set,\n   *  value will be taken from this object. Otherwise, value will be taken from base configuration.\n   * @param {string} optionName Name of the option whose value is sought.\n   * @param {string|undefined} [configOptionName] Name of option to use __instead of__ `optionName`\n   *  IIF `configOverrideOptions` is not defined. Otherwise, `optionName` is used.\n   */\n  var getOption = function getOption(configOverrideOptions, optionName, configOptionName) {\n    return configOverrideOptions && configOverrideOptions[optionName] !== undefined ? configOverrideOptions[optionName] : config[configOptionName || optionName];\n  };\n\n  /**\n   * Finds the index of the container that contains the element.\n   * @param {HTMLElement} element\n   * @param {Event} [event] If available, and `element` isn't directly found in any container,\n   *  the event's composed path is used to see if includes any known trap containers in the\n   *  case where the element is inside a Shadow DOM.\n   * @returns {number} Index of the container in either `state.containers` or\n   *  `state.containerGroups` (the order/length of these lists are the same); -1\n   *  if the element isn't found.\n   */\n  var findContainerIndex = function findContainerIndex(element, event) {\n    var composedPath = typeof (event === null || event === void 0 ? void 0 : event.composedPath) === 'function' ? event.composedPath() : undefined;\n    // NOTE: search `containerGroups` because it's possible a group contains no tabbable\n    //  nodes, but still contains focusable nodes (e.g. if they all have `tabindex=-1`)\n    //  and we still need to find the element in there\n    return state.containerGroups.findIndex(function (_ref) {\n      var container = _ref.container,\n        tabbableNodes = _ref.tabbableNodes;\n      return container.contains(element) || ( // fall back to explicit tabbable search which will take into consideration any\n      //  web components if the `tabbableOptions.getShadowRoot` option was used for\n      //  the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't\n      //  look inside web components even if open)\n      composedPath === null || composedPath === void 0 ? void 0 : composedPath.includes(container)) || tabbableNodes.find(function (node) {\n        return node === element;\n      });\n    });\n  };\n\n  /**\n   * Gets the node for the given option, which is expected to be an option that\n   *  can be either a DOM node, a string that is a selector to get a node, `false`\n   *  (if a node is explicitly NOT given), or a function that returns any of these\n   *  values.\n   * @param {string} optionName\n   * @returns {undefined | false | HTMLElement | SVGElement} Returns\n   *  `undefined` if the option is not specified; `false` if the option\n   *  resolved to `false` (node explicitly not given); otherwise, the resolved\n   *  DOM node.\n   * @throws {Error} If the option is set, not `false`, and is not, or does not\n   *  resolve to a node.\n   */\n  var getNodeForOption = function getNodeForOption(optionName) {\n    var optionValue = config[optionName];\n    if (typeof optionValue === 'function') {\n      for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        params[_key2 - 1] = arguments[_key2];\n      }\n      optionValue = optionValue.apply(void 0, params);\n    }\n    if (optionValue === true) {\n      optionValue = undefined; // use default value\n    }\n\n    if (!optionValue) {\n      if (optionValue === undefined || optionValue === false) {\n        return optionValue;\n      }\n      // else, empty string (invalid), null (invalid), 0 (invalid)\n\n      throw new Error(\"`\".concat(optionName, \"` was specified but was not a node, or did not return a node\"));\n    }\n    var node = optionValue; // could be HTMLElement, SVGElement, or non-empty string at this point\n\n    if (typeof optionValue === 'string') {\n      node = doc.querySelector(optionValue); // resolve to node, or null if fails\n      if (!node) {\n        throw new Error(\"`\".concat(optionName, \"` as selector refers to no known node\"));\n      }\n    }\n    return node;\n  };\n  var getInitialFocusNode = function getInitialFocusNode() {\n    var node = getNodeForOption('initialFocus');\n\n    // false explicitly indicates we want no initialFocus at all\n    if (node === false) {\n      return false;\n    }\n    if (node === undefined || !isFocusable(node, config.tabbableOptions)) {\n      // option not specified nor focusable: use fallback options\n      if (findContainerIndex(doc.activeElement) >= 0) {\n        node = doc.activeElement;\n      } else {\n        var firstTabbableGroup = state.tabbableGroups[0];\n        var firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode;\n\n        // NOTE: `fallbackFocus` option function cannot return `false` (not supported)\n        node = firstTabbableNode || getNodeForOption('fallbackFocus');\n      }\n    }\n    if (!node) {\n      throw new Error('Your focus-trap needs to have at least one focusable element');\n    }\n    return node;\n  };\n  var updateTabbableNodes = function updateTabbableNodes() {\n    state.containerGroups = state.containers.map(function (container) {\n      var tabbableNodes = tabbable(container, config.tabbableOptions);\n\n      // NOTE: if we have tabbable nodes, we must have focusable nodes; focusable nodes\n      //  are a superset of tabbable nodes since nodes with negative `tabindex` attributes\n      //  are focusable but not tabbable\n      var focusableNodes = focusable(container, config.tabbableOptions);\n      var firstTabbableNode = tabbableNodes.length > 0 ? tabbableNodes[0] : undefined;\n      var lastTabbableNode = tabbableNodes.length > 0 ? tabbableNodes[tabbableNodes.length - 1] : undefined;\n      var firstDomTabbableNode = focusableNodes.find(function (node) {\n        return isTabbable(node);\n      });\n      var lastDomTabbableNode = focusableNodes.slice().reverse().find(function (node) {\n        return isTabbable(node);\n      });\n      var posTabIndexesFound = !!tabbableNodes.find(function (node) {\n        return getTabIndex(node) > 0;\n      });\n      return {\n        container: container,\n        tabbableNodes: tabbableNodes,\n        focusableNodes: focusableNodes,\n        /** True if at least one node with positive `tabindex` was found in this container. */\n        posTabIndexesFound: posTabIndexesFound,\n        /** First tabbable node in container, __tabindex__ order; `undefined` if none. */\n        firstTabbableNode: firstTabbableNode,\n        /** Last tabbable node in container, __tabindex__ order; `undefined` if none. */\n        lastTabbableNode: lastTabbableNode,\n        // NOTE: DOM order is NOT NECESSARILY \"document position\" order, but figuring that out\n        //  would require more than just https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n        //  because that API doesn't work with Shadow DOM as well as it should (@see\n        //  https://github.com/whatwg/dom/issues/320) and since this first/last is only needed, so far,\n        //  to address an edge case related to positive tabindex support, this seems like a much easier,\n        //  \"close enough most of the time\" alternative for positive tabindexes which should generally\n        //  be avoided anyway...\n        /** First tabbable node in container, __DOM__ order; `undefined` if none. */\n        firstDomTabbableNode: firstDomTabbableNode,\n        /** Last tabbable node in container, __DOM__ order; `undefined` if none. */\n        lastDomTabbableNode: lastDomTabbableNode,\n        /**\n         * Finds the __tabbable__ node that follows the given node in the specified direction,\n         *  in this container, if any.\n         * @param {HTMLElement} node\n         * @param {boolean} [forward] True if going in forward tab order; false if going\n         *  in reverse.\n         * @returns {HTMLElement|undefined} The next tabbable node, if any.\n         */\n        nextTabbableNode: function nextTabbableNode(node) {\n          var forward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n          var nodeIdx = tabbableNodes.indexOf(node);\n          if (nodeIdx < 0) {\n            // either not tabbable nor focusable, or was focused but not tabbable (negative tabindex):\n            //  since `node` should at least have been focusable, we assume that's the case and mimic\n            //  what browsers do, which is set focus to the next node in __document position order__,\n            //  regardless of positive tabindexes, if any -- and for reasons explained in the NOTE\n            //  above related to `firstDomTabbable` and `lastDomTabbable` properties, we fall back to\n            //  basic DOM order\n            if (forward) {\n              return focusableNodes.slice(focusableNodes.indexOf(node) + 1).find(function (el) {\n                return isTabbable(el);\n              });\n            }\n            return focusableNodes.slice(0, focusableNodes.indexOf(node)).reverse().find(function (el) {\n              return isTabbable(el);\n            });\n          }\n          return tabbableNodes[nodeIdx + (forward ? 1 : -1)];\n        }\n      };\n    });\n    state.tabbableGroups = state.containerGroups.filter(function (group) {\n      return group.tabbableNodes.length > 0;\n    });\n\n    // throw if no groups have tabbable nodes and we don't have a fallback focus node either\n    if (state.tabbableGroups.length <= 0 && !getNodeForOption('fallbackFocus') // returning false not supported for this option\n    ) {\n      throw new Error('Your focus-trap must have at least one container with at least one tabbable node in it at all times');\n    }\n\n    // NOTE: Positive tabindexes are only properly supported in single-container traps because\n    //  doing it across multiple containers where tabindexes could be all over the place\n    //  would require Tabbable to support multiple containers, would require additional\n    //  specialized Shadow DOM support, and would require Tabbable's multi-container support\n    //  to look at those containers in document position order rather than user-provided\n    //  order (as they are treated in Focus-trap, for legacy reasons). See discussion on\n    //  https://github.com/focus-trap/focus-trap/issues/375 for more details.\n    if (state.containerGroups.find(function (g) {\n      return g.posTabIndexesFound;\n    }) && state.containerGroups.length > 1) {\n      throw new Error(\"At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.\");\n    }\n  };\n\n  /**\n   * Gets the current activeElement. If it's a web-component and has open shadow-root\n   * it will recursively search inside shadow roots for the \"true\" activeElement.\n   *\n   * @param {Document | ShadowRoot} el\n   *\n   * @returns {HTMLElement} The element that currently has the focus\n   **/\n  var getActiveElement = function getActiveElement(el) {\n    var activeElement = el.activeElement;\n    if (!activeElement) {\n      return;\n    }\n    if (activeElement.shadowRoot && activeElement.shadowRoot.activeElement !== null) {\n      return getActiveElement(activeElement.shadowRoot);\n    }\n    return activeElement;\n  };\n  var tryFocus = function tryFocus(node) {\n    if (node === false) {\n      return;\n    }\n    if (node === getActiveElement(document)) {\n      return;\n    }\n    if (!node || !node.focus) {\n      tryFocus(getInitialFocusNode());\n      return;\n    }\n    node.focus({\n      preventScroll: !!config.preventScroll\n    });\n    // NOTE: focus() API does not trigger focusIn event so set MRU node manually\n    state.mostRecentlyFocusedNode = node;\n    if (isSelectableInput(node)) {\n      node.select();\n    }\n  };\n  var getReturnFocusNode = function getReturnFocusNode(previousActiveElement) {\n    var node = getNodeForOption('setReturnFocus', previousActiveElement);\n    return node ? node : node === false ? false : previousActiveElement;\n  };\n\n  /**\n   * Finds the next node (in either direction) where focus should move according to a\n   *  keyboard focus-in event.\n   * @param {Object} params\n   * @param {Node} [params.target] Known target __from which__ to navigate, if any.\n   * @param {KeyboardEvent|FocusEvent} [params.event] Event to use if `target` isn't known (event\n   *  will be used to determine the `target`). Ignored if `target` is specified.\n   * @param {boolean} [params.isBackward] True if focus should move backward.\n   * @returns {Node|undefined} The next node, or `undefined` if a next node couldn't be\n   *  determined given the current state of the trap.\n   */\n  var findNextNavNode = function findNextNavNode(_ref2) {\n    var target = _ref2.target,\n      event = _ref2.event,\n      _ref2$isBackward = _ref2.isBackward,\n      isBackward = _ref2$isBackward === void 0 ? false : _ref2$isBackward;\n    target = target || getActualTarget(event);\n    updateTabbableNodes();\n    var destinationNode = null;\n    if (state.tabbableGroups.length > 0) {\n      // make sure the target is actually contained in a group\n      // NOTE: the target may also be the container itself if it's focusable\n      //  with tabIndex='-1' and was given initial focus\n      var containerIndex = findContainerIndex(target, event);\n      var containerGroup = containerIndex >= 0 ? state.containerGroups[containerIndex] : undefined;\n      if (containerIndex < 0) {\n        // target not found in any group: quite possible focus has escaped the trap,\n        //  so bring it back into...\n        if (isBackward) {\n          // ...the last node in the last group\n          destinationNode = state.tabbableGroups[state.tabbableGroups.length - 1].lastTabbableNode;\n        } else {\n          // ...the first node in the first group\n          destinationNode = state.tabbableGroups[0].firstTabbableNode;\n        }\n      } else if (isBackward) {\n        // REVERSE\n\n        // is the target the first tabbable node in a group?\n        var startOfGroupIndex = findIndex(state.tabbableGroups, function (_ref3) {\n          var firstTabbableNode = _ref3.firstTabbableNode;\n          return target === firstTabbableNode;\n        });\n        if (startOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target, false))) {\n          // an exception case where the target is either the container itself, or\n          //  a non-tabbable node that was given focus (i.e. tabindex is negative\n          //  and user clicked on it or node was programmatically given focus)\n          //  and is not followed by any other tabbable node, in which\n          //  case, we should handle shift+tab as if focus were on the container's\n          //  first tabbable node, and go to the last tabbable node of the LAST group\n          startOfGroupIndex = containerIndex;\n        }\n        if (startOfGroupIndex >= 0) {\n          // YES: then shift+tab should go to the last tabbable node in the\n          //  previous group (and wrap around to the last tabbable node of\n          //  the LAST group if it's the first tabbable node of the FIRST group)\n          var destinationGroupIndex = startOfGroupIndex === 0 ? state.tabbableGroups.length - 1 : startOfGroupIndex - 1;\n          var destinationGroup = state.tabbableGroups[destinationGroupIndex];\n          destinationNode = getTabIndex(target) >= 0 ? destinationGroup.lastTabbableNode : destinationGroup.lastDomTabbableNode;\n        } else if (!isTabEvent(event)) {\n          // user must have customized the nav keys so we have to move focus manually _within_\n          //  the active group: do this based on the order determined by tabbable()\n          destinationNode = containerGroup.nextTabbableNode(target, false);\n        }\n      } else {\n        // FORWARD\n\n        // is the target the last tabbable node in a group?\n        var lastOfGroupIndex = findIndex(state.tabbableGroups, function (_ref4) {\n          var lastTabbableNode = _ref4.lastTabbableNode;\n          return target === lastTabbableNode;\n        });\n        if (lastOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target))) {\n          // an exception case where the target is the container itself, or\n          //  a non-tabbable node that was given focus (i.e. tabindex is negative\n          //  and user clicked on it or node was programmatically given focus)\n          //  and is not followed by any other tabbable node, in which\n          //  case, we should handle tab as if focus were on the container's\n          //  last tabbable node, and go to the first tabbable node of the FIRST group\n          lastOfGroupIndex = containerIndex;\n        }\n        if (lastOfGroupIndex >= 0) {\n          // YES: then tab should go to the first tabbable node in the next\n          //  group (and wrap around to the first tabbable node of the FIRST\n          //  group if it's the last tabbable node of the LAST group)\n          var _destinationGroupIndex = lastOfGroupIndex === state.tabbableGroups.length - 1 ? 0 : lastOfGroupIndex + 1;\n          var _destinationGroup = state.tabbableGroups[_destinationGroupIndex];\n          destinationNode = getTabIndex(target) >= 0 ? _destinationGroup.firstTabbableNode : _destinationGroup.firstDomTabbableNode;\n        } else if (!isTabEvent(event)) {\n          // user must have customized the nav keys so we have to move focus manually _within_\n          //  the active group: do this based on the order determined by tabbable()\n          destinationNode = containerGroup.nextTabbableNode(target);\n        }\n      }\n    } else {\n      // no groups available\n      // NOTE: the fallbackFocus option does not support returning false to opt-out\n      destinationNode = getNodeForOption('fallbackFocus');\n    }\n    return destinationNode;\n  };\n\n  // This needs to be done on mousedown and touchstart instead of click\n  // so that it precedes the focus event.\n  var checkPointerDown = function checkPointerDown(e) {\n    var target = getActualTarget(e);\n    if (findContainerIndex(target, e) >= 0) {\n      // allow the click since it ocurred inside the trap\n      return;\n    }\n    if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n      // immediately deactivate the trap\n      trap.deactivate({\n        // NOTE: by setting `returnFocus: false`, deactivate() will do nothing,\n        //  which will result in the outside click setting focus to the node\n        //  that was clicked (and if not focusable, to \"nothing\"); by setting\n        //  `returnFocus: true`, we'll attempt to re-focus the node originally-focused\n        //  on activation (or the configured `setReturnFocus` node), whether the\n        //  outside click was on a focusable node or not\n        returnFocus: config.returnFocusOnDeactivate\n      });\n      return;\n    }\n\n    // This is needed for mobile devices.\n    // (If we'll only let `click` events through,\n    // then on mobile they will be blocked anyways if `touchstart` is blocked.)\n    if (valueOrHandler(config.allowOutsideClick, e)) {\n      // allow the click outside the trap to take place\n      return;\n    }\n\n    // otherwise, prevent the click\n    e.preventDefault();\n  };\n\n  // In case focus escapes the trap for some strange reason, pull it back in.\n  // NOTE: the focusIn event is NOT cancelable, so if focus escapes, it may cause unexpected\n  //  scrolling if the node that got focused was out of view; there's nothing we can do to\n  //  prevent that from happening by the time we discover that focus escaped\n  var checkFocusIn = function checkFocusIn(event) {\n    var target = getActualTarget(event);\n    var targetContained = findContainerIndex(target, event) >= 0;\n\n    // In Firefox when you Tab out of an iframe the Document is briefly focused.\n    if (targetContained || target instanceof Document) {\n      if (targetContained) {\n        state.mostRecentlyFocusedNode = target;\n      }\n    } else {\n      // escaped! pull it back in to where it just left\n      event.stopImmediatePropagation();\n\n      // focus will escape if the MRU node had a positive tab index and user tried to nav forward;\n      //  it will also escape if the MRU node had a 0 tab index and user tried to nav backward\n      //  toward a node with a positive tab index\n      var nextNode; // next node to focus, if we find one\n      var navAcrossContainers = true;\n      if (state.mostRecentlyFocusedNode) {\n        if (getTabIndex(state.mostRecentlyFocusedNode) > 0) {\n          // MRU container index must be >=0 otherwise we wouldn't have it as an MRU node...\n          var mruContainerIdx = findContainerIndex(state.mostRecentlyFocusedNode);\n          // there MAY not be any tabbable nodes in the container if there are at least 2 containers\n          //  and the MRU node is focusable but not tabbable (focus-trap requires at least 1 container\n          //  with at least one tabbable node in order to function, so this could be the other container\n          //  with nothing tabbable in it)\n          var tabbableNodes = state.containerGroups[mruContainerIdx].tabbableNodes;\n          if (tabbableNodes.length > 0) {\n            // MRU tab index MAY not be found if the MRU node is focusable but not tabbable\n            var mruTabIdx = tabbableNodes.findIndex(function (node) {\n              return node === state.mostRecentlyFocusedNode;\n            });\n            if (mruTabIdx >= 0) {\n              if (config.isKeyForward(state.recentNavEvent)) {\n                if (mruTabIdx + 1 < tabbableNodes.length) {\n                  nextNode = tabbableNodes[mruTabIdx + 1];\n                  navAcrossContainers = false;\n                }\n                // else, don't wrap within the container as focus should move to next/previous\n                //  container\n              } else {\n                if (mruTabIdx - 1 >= 0) {\n                  nextNode = tabbableNodes[mruTabIdx - 1];\n                  navAcrossContainers = false;\n                }\n                // else, don't wrap within the container as focus should move to next/previous\n                //  container\n              }\n              // else, don't find in container order without considering direction too\n            }\n          }\n          // else, no tabbable nodes in that container (which means we must have at least one other\n          //  container with at least one tabbable node in it, otherwise focus-trap would've thrown\n          //  an error the last time updateTabbableNodes() was run): find next node among all known\n          //  containers\n        } else {\n          // check to see if there's at least one tabbable node with a positive tab index inside\n          //  the trap because focus seems to escape when navigating backward from a tabbable node\n          //  with tabindex=0 when this is the case (instead of wrapping to the tabbable node with\n          //  the greatest positive tab index like it should)\n          if (!state.containerGroups.some(function (g) {\n            return g.tabbableNodes.some(function (n) {\n              return getTabIndex(n) > 0;\n            });\n          })) {\n            // no containers with tabbable nodes with positive tab indexes which means the focus\n            //  escaped for some other reason and we should just execute the fallback to the\n            //  MRU node or initial focus node, if any\n            navAcrossContainers = false;\n          }\n        }\n      } else {\n        // no MRU node means we're likely in some initial condition when the trap has just\n        //  been activated and initial focus hasn't been given yet, in which case we should\n        //  fall through to trying to focus the initial focus node, which is what should\n        //  happen below at this point in the logic\n        navAcrossContainers = false;\n      }\n      if (navAcrossContainers) {\n        nextNode = findNextNavNode({\n          // move FROM the MRU node, not event-related node (which will be the node that is\n          //  outside the trap causing the focus escape we're trying to fix)\n          target: state.mostRecentlyFocusedNode,\n          isBackward: config.isKeyBackward(state.recentNavEvent)\n        });\n      }\n      if (nextNode) {\n        tryFocus(nextNode);\n      } else {\n        tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n      }\n    }\n    state.recentNavEvent = undefined; // clear\n  };\n\n  // Hijack key nav events on the first and last focusable nodes of the trap,\n  // in order to prevent focus from escaping. If it escapes for even a\n  // moment it can end up scrolling the page and causing confusion so we\n  // kind of need to capture the action at the keydown phase.\n  var checkKeyNav = function checkKeyNav(event) {\n    var isBackward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    state.recentNavEvent = event;\n    var destinationNode = findNextNavNode({\n      event: event,\n      isBackward: isBackward\n    });\n    if (destinationNode) {\n      if (isTabEvent(event)) {\n        // since tab natively moves focus, we wouldn't have a destination node unless we\n        //  were on the edge of a container and had to move to the next/previous edge, in\n        //  which case we want to prevent default to keep the browser from moving focus\n        //  to where it normally would\n        event.preventDefault();\n      }\n      tryFocus(destinationNode);\n    }\n    // else, let the browser take care of [shift+]tab and move the focus\n  };\n\n  var checkKey = function checkKey(event) {\n    if (isEscapeEvent(event) && valueOrHandler(config.escapeDeactivates, event) !== false) {\n      event.preventDefault();\n      trap.deactivate();\n      return;\n    }\n    if (config.isKeyForward(event) || config.isKeyBackward(event)) {\n      checkKeyNav(event, config.isKeyBackward(event));\n    }\n  };\n  var checkClick = function checkClick(e) {\n    var target = getActualTarget(e);\n    if (findContainerIndex(target, e) >= 0) {\n      return;\n    }\n    if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n      return;\n    }\n    if (valueOrHandler(config.allowOutsideClick, e)) {\n      return;\n    }\n    e.preventDefault();\n    e.stopImmediatePropagation();\n  };\n\n  //\n  // EVENT LISTENERS\n  //\n\n  var addListeners = function addListeners() {\n    if (!state.active) {\n      return;\n    }\n\n    // There can be only one listening focus trap at a time\n    activeFocusTraps.activateTrap(trapStack, trap);\n\n    // Delay ensures that the focused element doesn't capture the event\n    // that caused the focus trap activation.\n    state.delayInitialFocusTimer = config.delayInitialFocus ? delay(function () {\n      tryFocus(getInitialFocusNode());\n    }) : tryFocus(getInitialFocusNode());\n    doc.addEventListener('focusin', checkFocusIn, true);\n    doc.addEventListener('mousedown', checkPointerDown, {\n      capture: true,\n      passive: false\n    });\n    doc.addEventListener('touchstart', checkPointerDown, {\n      capture: true,\n      passive: false\n    });\n    doc.addEventListener('click', checkClick, {\n      capture: true,\n      passive: false\n    });\n    doc.addEventListener('keydown', checkKey, {\n      capture: true,\n      passive: false\n    });\n    return trap;\n  };\n  var removeListeners = function removeListeners() {\n    if (!state.active) {\n      return;\n    }\n    doc.removeEventListener('focusin', checkFocusIn, true);\n    doc.removeEventListener('mousedown', checkPointerDown, true);\n    doc.removeEventListener('touchstart', checkPointerDown, true);\n    doc.removeEventListener('click', checkClick, true);\n    doc.removeEventListener('keydown', checkKey, true);\n    return trap;\n  };\n\n  //\n  // MUTATION OBSERVER\n  //\n\n  var checkDomRemoval = function checkDomRemoval(mutations) {\n    var isFocusedNodeRemoved = mutations.some(function (mutation) {\n      var removedNodes = Array.from(mutation.removedNodes);\n      return removedNodes.some(function (node) {\n        return node === state.mostRecentlyFocusedNode;\n      });\n    });\n\n    // If the currently focused is removed then browsers will move focus to the\n    // <body> element. If this happens, try to move focus back into the trap.\n    if (isFocusedNodeRemoved) {\n      tryFocus(getInitialFocusNode());\n    }\n  };\n\n  // Use MutationObserver - if supported - to detect if focused node is removed\n  // from the DOM.\n  var mutationObserver = typeof window !== 'undefined' && 'MutationObserver' in window ? new MutationObserver(checkDomRemoval) : undefined;\n  var updateObservedNodes = function updateObservedNodes() {\n    if (!mutationObserver) {\n      return;\n    }\n    mutationObserver.disconnect();\n    if (state.active && !state.paused) {\n      state.containers.map(function (container) {\n        mutationObserver.observe(container, {\n          subtree: true,\n          childList: true\n        });\n      });\n    }\n  };\n\n  //\n  // TRAP DEFINITION\n  //\n\n  trap = {\n    get active() {\n      return state.active;\n    },\n    get paused() {\n      return state.paused;\n    },\n    activate: function activate(activateOptions) {\n      if (state.active) {\n        return this;\n      }\n      var onActivate = getOption(activateOptions, 'onActivate');\n      var onPostActivate = getOption(activateOptions, 'onPostActivate');\n      var checkCanFocusTrap = getOption(activateOptions, 'checkCanFocusTrap');\n      if (!checkCanFocusTrap) {\n        updateTabbableNodes();\n      }\n      state.active = true;\n      state.paused = false;\n      state.nodeFocusedBeforeActivation = doc.activeElement;\n      onActivate === null || onActivate === void 0 || onActivate();\n      var finishActivation = function finishActivation() {\n        if (checkCanFocusTrap) {\n          updateTabbableNodes();\n        }\n        addListeners();\n        updateObservedNodes();\n        onPostActivate === null || onPostActivate === void 0 || onPostActivate();\n      };\n      if (checkCanFocusTrap) {\n        checkCanFocusTrap(state.containers.concat()).then(finishActivation, finishActivation);\n        return this;\n      }\n      finishActivation();\n      return this;\n    },\n    deactivate: function deactivate(deactivateOptions) {\n      if (!state.active) {\n        return this;\n      }\n      var options = _objectSpread2({\n        onDeactivate: config.onDeactivate,\n        onPostDeactivate: config.onPostDeactivate,\n        checkCanReturnFocus: config.checkCanReturnFocus\n      }, deactivateOptions);\n      clearTimeout(state.delayInitialFocusTimer); // noop if undefined\n      state.delayInitialFocusTimer = undefined;\n      removeListeners();\n      state.active = false;\n      state.paused = false;\n      updateObservedNodes();\n      activeFocusTraps.deactivateTrap(trapStack, trap);\n      var onDeactivate = getOption(options, 'onDeactivate');\n      var onPostDeactivate = getOption(options, 'onPostDeactivate');\n      var checkCanReturnFocus = getOption(options, 'checkCanReturnFocus');\n      var returnFocus = getOption(options, 'returnFocus', 'returnFocusOnDeactivate');\n      onDeactivate === null || onDeactivate === void 0 || onDeactivate();\n      var finishDeactivation = function finishDeactivation() {\n        delay(function () {\n          if (returnFocus) {\n            tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));\n          }\n          onPostDeactivate === null || onPostDeactivate === void 0 || onPostDeactivate();\n        });\n      };\n      if (returnFocus && checkCanReturnFocus) {\n        checkCanReturnFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)).then(finishDeactivation, finishDeactivation);\n        return this;\n      }\n      finishDeactivation();\n      return this;\n    },\n    pause: function pause(pauseOptions) {\n      if (state.paused || !state.active) {\n        return this;\n      }\n      var onPause = getOption(pauseOptions, 'onPause');\n      var onPostPause = getOption(pauseOptions, 'onPostPause');\n      state.paused = true;\n      onPause === null || onPause === void 0 || onPause();\n      removeListeners();\n      updateObservedNodes();\n      onPostPause === null || onPostPause === void 0 || onPostPause();\n      return this;\n    },\n    unpause: function unpause(unpauseOptions) {\n      if (!state.paused || !state.active) {\n        return this;\n      }\n      var onUnpause = getOption(unpauseOptions, 'onUnpause');\n      var onPostUnpause = getOption(unpauseOptions, 'onPostUnpause');\n      state.paused = false;\n      onUnpause === null || onUnpause === void 0 || onUnpause();\n      updateTabbableNodes();\n      addListeners();\n      updateObservedNodes();\n      onPostUnpause === null || onPostUnpause === void 0 || onPostUnpause();\n      return this;\n    },\n    updateContainerElements: function updateContainerElements(containerElements) {\n      var elementsAsArray = [].concat(containerElements).filter(Boolean);\n      state.containers = elementsAsArray.map(function (element) {\n        return typeof element === 'string' ? doc.querySelector(element) : element;\n      });\n      if (state.active) {\n        updateTabbableNodes();\n      }\n      updateObservedNodes();\n      return this;\n    }\n  };\n\n  // initialize container elements\n  trap.updateContainerElements(elements);\n  return trap;\n};\n\nexport { createFocusTrap };\n//# sourceMappingURL=focus-trap.esm.js.map\n","import { unrefElement, tryOnScopeDispose } from '@vueuse/core';\nimport { ref, watch } from 'vue-demi';\nimport { createFocusTrap } from 'focus-trap';\n\nfunction useFocusTrap(target, options = {}) {\n  let trap;\n  const { immediate, ...focusTrapOptions } = options;\n  const hasFocus = ref(false);\n  const isPaused = ref(false);\n  const activate = (opts) => trap && trap.activate(opts);\n  const deactivate = (opts) => trap && trap.deactivate(opts);\n  const pause = () => {\n    if (trap) {\n      trap.pause();\n      isPaused.value = true;\n    }\n  };\n  const unpause = () => {\n    if (trap) {\n      trap.unpause();\n      isPaused.value = false;\n    }\n  };\n  watch(\n    () => unrefElement(target),\n    (el) => {\n      if (!el)\n        return;\n      trap = createFocusTrap(el, {\n        ...focusTrapOptions,\n        onActivate() {\n          hasFocus.value = true;\n          if (options.onActivate)\n            options.onActivate();\n        },\n        onDeactivate() {\n          hasFocus.value = false;\n          if (options.onDeactivate)\n            options.onDeactivate();\n        }\n      });\n      if (immediate)\n        activate();\n    },\n    { flush: \"post\" }\n  );\n  tryOnScopeDispose(() => deactivate());\n  return {\n    hasFocus,\n    isPaused,\n    activate,\n    deactivate,\n    pause,\n    unpause\n  };\n}\n\nexport { useFocusTrap };\n","import { ref as C, computed as g, watch as I, nextTick as z, onBeforeUnmount as he, reactive as pe, onMounted as Pe, getCurrentInstance as Ae, inject as Qe, shallowReactive as _, markRaw as te, defineComponent as me, useAttrs as Ie, toRef as ae, openBlock as B, createBlock as U, Teleport as _e, unref as v, withDirectives as ue, createElementBlock as N, mergeProps as x, withKeys as eo, withModifiers as Ce, Transition as ke, toHandlers as Ve, withCtx as ye, normalizeClass as oo, normalizeStyle as to, vShow as ce, createCommentVNode as Y, createVNode as no, renderSlot as Ee, normalizeProps as Re, guardReactiveProps as lo, createElementVNode as ee, Fragment as so, renderList as Be, resolveDynamicComponent as de, createSlots as ro } from \"vue\";\nimport { useEventListener as F, tryOnUnmounted as io } from \"@vueuse/core\";\nimport { useFocusTrap as ao } from \"@vueuse/integrations/useFocusTrap\";\nconst uo = (e) => (...o) => {\n  e && (e == null || e(...o), e = null);\n}, q = () => {\n};\nfunction oe(e, o, l) {\n  return e > l ? l : e < o ? o : e;\n}\nconst we = (e) => typeof e == \"string\";\nfunction fe(e, o) {\n  var s;\n  const l = ((s = $(e, o)) == null ? void 0 : s[0]) || o;\n  e.push(l);\n}\nfunction $(e, o) {\n  const l = e.indexOf(o);\n  if (l !== -1)\n    return e.splice(l, 1);\n}\nfunction Fe(e) {\n  return Object.entries(e);\n}\nconst co = {\n  /**\n   * @description Set `null | false` to disable teleport.\n   * @default `'body'`\n   * @example\n   * ```js\n   * teleportTo: '#modals'\n   * ```\n   */\n  teleportTo: {\n    type: [String, null, Boolean, Object],\n    default: \"body\"\n  },\n  /**\n   * @description An uniq name for the open/close a modal via vfm.open/vfm.close APIs.\n   * @default `undefined`\n   * @example Symbol: `Symbol('MyModal')`\n   * @example String: `'AUniqString'`\n   * @example Number: `300`\n   */\n  modalId: {\n    type: [String, Number, Symbol],\n    default: void 0\n  },\n  /**\n   * @description Display the modal or not.\n   * @default `undefined`\n   * @example\n   * ```js\n   * const showModal = ref(false)\n   * v-model=\"showModal\"\n   * ```\n   */\n  modelValue: {\n    type: Boolean,\n    default: void 0\n  },\n  /**\n   * @description Render the modal via `if` or `show`.\n   * @default `'if'`\n   * @example\n   * ```js\n   * displayDirective: 'if'\n   * ```\n   * @example\n   * ```js\n   * displayDirective: 'show'\n   * ```\n   */\n  displayDirective: {\n    type: String,\n    default: \"if\",\n    validator: (e) => [\"if\", \"show\", \"visible\"].includes(e)\n  },\n  /**\n   * @description Hide the overlay or not.\n   * @default `undefined`\n   * @example\n   * ```js\n   * hideOverlay=\"true\"\n   * ```\n   */\n  hideOverlay: {\n    type: Boolean,\n    default: void 0\n  },\n  /**\n   * @description Customize the overlay behavior.\n   */\n  overlayBehavior: {\n    type: String,\n    default: \"auto\",\n    validator: (e) => [\"auto\", \"persist\"].includes(e)\n  },\n  /**\n   * @description Customize the overlay transition.\n   * @default `undefined`\n   */\n  overlayTransition: {\n    type: [String, Object],\n    default: void 0\n  },\n  /**\n   * @description Customize the content transition.\n   * @default `undefined`\n   */\n  contentTransition: {\n    type: [String, Object],\n    default: void 0\n  },\n  /**\n   * @description Bind class to vfm__overlay.\n   * @default `undefined`\n   */\n  overlayClass: {\n    type: void 0,\n    default: void 0\n  },\n  /**\n   * @description Bind class to vfm__content.\n   * @default `undefined`\n   */\n  contentClass: {\n    type: void 0,\n    default: void 0\n  },\n  /**\n   * @description Bind style to vfm__overlay.\n   * @default `undefined`\n   */\n  overlayStyle: {\n    type: [String, Object, Array],\n    default: void 0\n  },\n  /**\n   * @description Bind style to vfm__content.\n   * @default `undefined`\n   */\n  contentStyle: {\n    type: [String, Object, Array],\n    default: void 0\n  },\n  /**\n   * @description Is it allow to close the modal by clicking the overlay.\n   * @default `true`\n   */\n  clickToClose: {\n    type: Boolean,\n    default: !0\n  },\n  /**\n   * @description Is it allow to close the modal by keypress `esc`.\n   * @default `true`\n   */\n  escToClose: {\n    type: Boolean,\n    default: !0\n  },\n  /**\n   * @description Is it allow to click outside of the vfm__content when the modal is opened\n   * @default `'non-interactive'`\n   */\n  background: {\n    type: String,\n    default: \"non-interactive\",\n    validator: (e) => [\"interactive\", \"non-interactive\"].includes(e)\n  },\n  /**\n   * @description\n   * * Use `{ disabled: true }` to disable the focusTrap.\n   * * Checkout the createOptions type here https://github.com/focus-trap/focus-trap for more.\n   * @default `{ allowOutsideClick: true }`\n   */\n  focusTrap: {\n    type: [Boolean, Object],\n    default: () => ({\n      allowOutsideClick: !0\n    })\n  },\n  /**\n   * @description Lock body scroll or not when the modal is opened.\n   * @default `true`\n   */\n  lockScroll: {\n    type: Boolean,\n    default: !0\n  },\n  /**\n   * @description Creates a padding-right when scroll is locked to prevent the page from jumping\n   * @default `true`\n   */\n  reserveScrollBarGap: {\n    type: Boolean,\n    default: !0\n  },\n  /**\n   * @description Define how to increase the zIndex when there are nested modals\n   * @default `({ index }) => 1000 + 2 * index`\n   */\n  zIndexFn: {\n    type: Function,\n    default: ({ index: e }) => 1e3 + 2 * e\n  },\n  /**\n   * @description The direction of swiping to close the modal\n   * @default `none`\n   * @example\n   * Set swipeToClose=\"none\" to disable swiping to close\n   * ```js\n   * swipeToClose=\"none\"\n   * ```\n   */\n  swipeToClose: {\n    type: String,\n    default: \"none\",\n    validator: (e) => [\"none\", \"up\", \"right\", \"down\", \"left\"].includes(e)\n  },\n  /**\n   * @description Threshold for swipe to close\n   * @default `0`\n   */\n  threshold: {\n    type: Number,\n    default: 0\n  },\n  /**\n   * @description If set `:showSwipeBanner=\"true\"`, only allow clicking `swipe-banner` slot to swipe to close\n   * @default `undefined`\n   * @example\n   * ```js\n   * swipeToClose=\"right\"\n   * :showSwipeBanner=\"true\"\n   * ```\n   * ```html\n   * <VueFinalModal\n   *   ...\n   *   swipeToClose=\"right\"\n   *   :showSwipeBanner=\"true\"\n   * >\n   *   <template #swipe-banner>\n   *     <div style=\"position: absolute; height: 100%; top: 0; left: 0; width: 10px;\" />\n   *   </template>\n   *   ...modal content\n   * </VueFinalModal>\n   * ```\n   */\n  showSwipeBanner: {\n    type: Boolean,\n    default: void 0\n  },\n  /**\n   * @description When set `:preventNavigationGestures=\"true\"`, there will be two invisible bars for prevent navigation gestures including swiping back/forward on mobile webkit. For example: Safari mobile.\n   * @default `undefined`\n   * @example\n   * Set preventNavigationGestures=\"true\" to prevent Safari navigation gestures including swiping back/forward.\n   * ```js\n   * :preventNavigationGestures=\"true\"\n   * ```\n   */\n  preventNavigationGestures: {\n    type: Boolean,\n    default: void 0\n  }\n};\nfunction Oe(e = !1) {\n  const o = C(e), l = C(o.value ? 0 : void 0);\n  return [o, l, {\n    beforeEnter() {\n      l.value = 1;\n    },\n    afterEnter() {\n      l.value = 0;\n    },\n    beforeLeave() {\n      l.value = 3;\n    },\n    afterLeave() {\n      l.value = 2;\n    }\n  }];\n}\nfunction fo(e, o) {\n  const { modelValueLocal: l, onEntering: s, onEnter: u, onLeaving: c, onLeave: a } = o, n = C(l.value), [t, r, m] = Oe(n.value), [f, M, S] = Oe(n.value), V = g(() => typeof e.contentTransition == \"string\" ? { name: e.contentTransition, appear: !0 } : { appear: !0, ...e.contentTransition }), O = g(() => typeof e.overlayTransition == \"string\" ? { name: e.overlayTransition, appear: !0 } : { appear: !0, ...e.overlayTransition }), E = g(\n    () => (e.hideOverlay || M.value === 2) && r.value === 2\n    /* Leave */\n  );\n  I(\n    E,\n    (k) => {\n      k && (n.value = !1);\n    }\n  ), I(r, (k) => {\n    if (k === 1) {\n      if (!n.value)\n        return;\n      s == null || s();\n    } else if (k === 0) {\n      if (!n.value)\n        return;\n      u == null || u();\n    } else\n      k === 3 ? c == null || c() : k === 2 && (a == null || a());\n  });\n  async function w() {\n    n.value = !0, await z(), t.value = !0, f.value = !0;\n  }\n  function D() {\n    t.value = !1, f.value = !1;\n  }\n  return {\n    visible: n,\n    contentVisible: t,\n    contentListeners: m,\n    contentTransition: V,\n    overlayVisible: f,\n    overlayListeners: S,\n    overlayTransition: O,\n    enterTransition: w,\n    leaveTransition: D\n  };\n}\nfunction vo(e, o, l) {\n  const { vfmRootEl: s, vfmContentEl: u, visible: c, modelValueLocal: a } = l, n = C();\n  function t() {\n    c.value && e.escToClose && (a.value = !1);\n  }\n  function r(f) {\n    n.value = f == null ? void 0 : f.target;\n  }\n  function m() {\n    var f;\n    n.value === s.value && (e.clickToClose ? a.value = !1 : ((f = u.value) == null || f.focus(), o(\"clickOutside\")));\n  }\n  return {\n    onEsc: t,\n    onMouseupRoot: m,\n    onMousedown: r\n  };\n}\nfunction po(e, o, l) {\n  let s = !1;\n  const { open: u, close: c } = l, a = C(!1), n = {\n    get value() {\n      return a.value;\n    },\n    set value(r) {\n      t(r);\n    }\n  };\n  function t(r) {\n    (r ? u() : c()) ? (a.value = r, r !== e.modelValue && o(\"update:modelValue\", r)) : (s = !0, o(\"update:modelValue\", !r), z(() => {\n      s = !1;\n    }));\n  }\n  return I(() => e.modelValue, (r) => {\n    s || (n.value = !!r);\n  }), {\n    modelValueLocal: n\n  };\n}\nfunction yo(e, o) {\n  if (e.focusTrap === !1)\n    return {\n      focus() {\n      },\n      blur() {\n      }\n    };\n  const { focusEl: l } = o, { hasFocus: s, activate: u, deactivate: c } = ao(l, e.focusTrap);\n  function a() {\n    requestAnimationFrame(() => {\n      u();\n    });\n  }\n  function n() {\n    s.value && c();\n  }\n  return { focus: a, blur: n };\n}\nlet be = !1;\nif (typeof window < \"u\") {\n  const e = {\n    get passive() {\n      be = !0;\n    }\n  };\n  window.addEventListener(\"testPassive\", null, e), window.removeEventListener(\"testPassive\", null, e);\n}\nconst He = typeof window < \"u\" && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === \"MacIntel\" && window.navigator.maxTouchPoints > 1);\nlet j = [], le = !1, ne = 0, je = -1, W, X;\nconst ho = (e) => {\n  if (!e || e.nodeType !== Node.ELEMENT_NODE)\n    return !1;\n  const o = window.getComputedStyle(e);\n  return [\"auto\", \"scroll\"].includes(o.overflowY) && e.scrollHeight > e.clientHeight;\n}, mo = (e, o) => !(e.scrollTop === 0 && o < 0 || e.scrollTop + e.clientHeight + o >= e.scrollHeight && o > 0), wo = (e) => {\n  const o = [];\n  for (; e; ) {\n    if (o.push(e), e.classList.contains(\"vfm\"))\n      return o;\n    e = e.parentElement;\n  }\n  return o;\n}, bo = (e, o) => {\n  let l = !1;\n  return wo(e).forEach((u) => {\n    ho(u) && mo(u, o) && (l = !0);\n  }), l;\n}, Ne = (e) => j.some(() => bo(e, -ne)), se = (e) => {\n  const o = e || window.event;\n  return Ne(o.target) || o.touches.length > 1 ? !0 : (o.preventDefault && o.preventDefault(), !1);\n}, To = (e) => {\n  if (X === void 0) {\n    const o = !!e && e.reserveScrollBarGap === !0, l = window.innerWidth - document.documentElement.clientWidth;\n    if (o && l > 0) {\n      const s = parseInt(getComputedStyle(document.body).getPropertyValue(\"padding-right\"), 10);\n      X = document.body.style.paddingRight, document.body.style.paddingRight = `${s + l}px`;\n    }\n  }\n  W === void 0 && (W = document.body.style.overflow, document.body.style.overflow = \"hidden\");\n}, So = () => {\n  X !== void 0 && (document.body.style.paddingRight = X, X = void 0), W !== void 0 && (document.body.style.overflow = W, W = void 0);\n}, Mo = (e) => e ? e.scrollHeight - e.scrollTop <= e.clientHeight : !1, go = (e, o) => (ne = e.targetTouches[0].clientY - je, Ne(e.target) ? !1 : o && o.scrollTop === 0 && ne > 0 || Mo(o) && ne < 0 ? se(e) : (e.stopPropagation(), !0)), Co = (e, o) => {\n  if (!e) {\n    console.error(\n      \"disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.\"\n    );\n    return;\n  }\n  if (j.some((s) => s.targetElement === e))\n    return;\n  const l = {\n    targetElement: e,\n    options: o || {}\n  };\n  j = [...j, l], He ? (e.ontouchstart = (s) => {\n    s.targetTouches.length === 1 && (je = s.targetTouches[0].clientY);\n  }, e.ontouchmove = (s) => {\n    s.targetTouches.length === 1 && go(s, e);\n  }, le || (document.addEventListener(\"touchmove\", se, be ? { passive: !1 } : void 0), le = !0)) : To(o);\n}, ko = (e) => {\n  if (!e) {\n    console.error(\n      \"enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.\"\n    );\n    return;\n  }\n  j = j.filter((o) => o.targetElement !== e), He ? (e.ontouchstart = null, e.ontouchmove = null, le && j.length === 0 && (document.removeEventListener(\"touchmove\", se, be ? { passive: !1 } : void 0), le = !1)) : j.length || So();\n};\nfunction Vo(e, o) {\n  const { lockScrollEl: l, modelValueLocal: s } = o;\n  let u;\n  I(l, (n) => {\n    n && (u = n);\n  }, { immediate: !0 }), I(() => e.lockScroll, (n) => {\n    n ? a() : c();\n  }), he(() => {\n    c();\n  });\n  function c() {\n    u && ko(u);\n  }\n  function a() {\n    s.value && e.lockScroll && u && Co(u, {\n      reserveScrollBarGap: e.reserveScrollBarGap,\n      allowTouchMove: (n) => {\n        for (; n && n !== document.body; ) {\n          if (n.getAttribute(\"vfm-scroll-lock-ignore\") !== null)\n            return !0;\n          n = n.parentElement;\n        }\n        return !1;\n      }\n    });\n  }\n  return {\n    enableBodyScroll: c,\n    disableBodyScroll: a\n  };\n}\nfunction Eo(e) {\n  const o = C();\n  function l(u) {\n    var c;\n    o.value = (c = e.zIndexFn) == null ? void 0 : c.call(e, { index: u <= -1 ? 0 : u });\n  }\n  function s() {\n    o.value = void 0;\n  }\n  return {\n    zIndex: o,\n    refreshZIndex: l,\n    resetZIndex: s\n  };\n}\nconst ve = {\n  beforeMount(e, { value: o }, { transition: l }) {\n    e._vov = e.style.visibility === \"hidden\" ? \"\" : e.style.visibility, l && o ? l.beforeEnter(e) : G(e, o);\n  },\n  mounted(e, { value: o }, { transition: l }) {\n    l && o && l.enter(e);\n  },\n  updated(e, { value: o, oldValue: l }, { transition: s }) {\n    !o != !l && (s ? o ? (s.beforeEnter(e), G(e, !0), s.enter(e)) : s.leave(e, () => {\n      G(e, !1);\n    }) : G(e, o));\n  },\n  beforeUnmount(e, { value: o }) {\n    G(e, o);\n  }\n};\nfunction G(e, o) {\n  e.style.visibility = o ? e._vov : \"hidden\";\n}\nconst De = (e) => {\n  if (e instanceof MouseEvent) {\n    const { clientX: o, clientY: l } = e;\n    return { x: o, y: l };\n  } else {\n    const { clientX: o, clientY: l } = e.targetTouches[0];\n    return { x: o, y: l };\n  }\n};\nfunction Bo(e) {\n  if (!e)\n    return !1;\n  let o = !1;\n  const l = {\n    get passive() {\n      return o = !0, !1;\n    }\n  };\n  return e.addEventListener(\"x\", q, l), e.removeEventListener(\"x\", q), o;\n}\nfunction Oo(e, {\n  threshold: o = 0,\n  onSwipeStart: l,\n  onSwipe: s,\n  onSwipeEnd: u,\n  passive: c = !0\n}) {\n  const a = pe({ x: 0, y: 0 }), n = pe({ x: 0, y: 0 }), t = g(() => a.x - n.x), r = g(() => a.y - n.y), { max: m, abs: f } = Math, M = g(\n    () => m(f(t.value), f(r.value)) >= o\n  ), S = C(!1), V = g(() => M.value ? f(t.value) > f(r.value) ? t.value > 0 ? \"left\" : \"right\" : r.value > 0 ? \"up\" : \"down\" : \"none\"), O = (p, h) => {\n    a.x = p, a.y = h;\n  }, E = (p, h) => {\n    n.x = p, n.y = h;\n  };\n  let w, D;\n  function k(p) {\n    w.capture && !w.passive && p.preventDefault();\n    const { x: h, y: R } = De(p);\n    O(h, R), E(h, R), l == null || l(p), D = [\n      F(e, \"mousemove\", P, w),\n      F(e, \"touchmove\", P, w),\n      F(e, \"mouseup\", i, w),\n      F(e, \"touchend\", i, w),\n      F(e, \"touchcancel\", i, w)\n    ];\n  }\n  function P(p) {\n    const { x: h, y: R } = De(p);\n    E(h, R), !S.value && M.value && (S.value = !0), S.value && (s == null || s(p));\n  }\n  function i(p) {\n    S.value && (u == null || u(p, V.value)), S.value = !1, D.forEach((h) => h());\n  }\n  let b = [];\n  return Pe(() => {\n    const p = Bo(window == null ? void 0 : window.document);\n    c ? w = p ? { passive: !0 } : { capture: !1 } : w = p ? { passive: !1, capture: !0 } : { capture: !0 }, b = [\n      F(e, \"mousedown\", k, w),\n      F(e, \"touchstart\", k, w)\n    ];\n  }), {\n    isSwiping: S,\n    direction: V,\n    coordsStart: a,\n    coordsEnd: n,\n    lengthX: t,\n    lengthY: r,\n    stop: () => {\n      b.forEach((p) => p()), D.forEach((p) => p());\n    }\n  };\n}\nfunction Do(e, o) {\n  const { vfmContentEl: l, modelValueLocal: s } = o, u = 0.1, c = 300, a = C(), n = g(() => {\n    if (!(e.swipeToClose === void 0 || e.swipeToClose === \"none\"))\n      return e.showSwipeBanner ? a.value : l.value;\n  }), t = C(0), r = C(!0);\n  let m = q, f = !0, M, S = !1;\n  const { lengthX: V, lengthY: O, direction: E, isSwiping: w } = Oo(n, {\n    threshold: e.threshold,\n    onSwipeStart(i) {\n      m = F(document, \"selectionchange\", () => {\n        var b;\n        r.value = (b = window.getSelection()) == null ? void 0 : b.isCollapsed;\n      }), M = (/* @__PURE__ */ new Date()).getTime(), S = P(i == null ? void 0 : i.target);\n    },\n    onSwipe() {\n      var i, b, L, p;\n      if (S && r.value && E.value === e.swipeToClose) {\n        if (E.value === \"up\") {\n          const h = oe(Math.abs(O.value || 0), 0, ((i = n.value) == null ? void 0 : i.offsetHeight) || 0) - (e.threshold || 0);\n          t.value = h;\n        } else if (E.value === \"down\") {\n          const h = oe(Math.abs(O.value || 0), 0, ((b = n.value) == null ? void 0 : b.offsetHeight) || 0) - (e.threshold || 0);\n          t.value = -h;\n        } else if (E.value === \"right\") {\n          const h = oe(Math.abs(V.value || 0), 0, ((L = n.value) == null ? void 0 : L.offsetWidth) || 0) - (e.threshold || 0);\n          t.value = -h;\n        } else if (E.value === \"left\") {\n          const h = oe(Math.abs(V.value || 0), 0, ((p = n.value) == null ? void 0 : p.offsetWidth) || 0) - (e.threshold || 0);\n          t.value = h;\n        }\n      }\n    },\n    onSwipeEnd(i, b) {\n      if (m(), !r.value) {\n        r.value = !0;\n        return;\n      }\n      const L = (/* @__PURE__ */ new Date()).getTime(), p = b === e.swipeToClose, h = (() => {\n        var J, Q;\n        if (b === \"up\" || b === \"down\")\n          return Math.abs((O == null ? void 0 : O.value) || 0) > u * (((J = n.value) == null ? void 0 : J.offsetHeight) || 0);\n        if (b === \"left\" || b === \"right\")\n          return Math.abs((V == null ? void 0 : V.value) || 0) > u * (((Q = n.value) == null ? void 0 : Q.offsetWidth) || 0);\n      })(), R = L - M <= c;\n      if (f && S && p && (h || R)) {\n        s.value = !1;\n        return;\n      }\n      t.value = 0;\n    }\n  }), D = g(() => {\n    if (e.swipeToClose === \"none\")\n      return;\n    const i = (() => {\n      switch (e.swipeToClose) {\n        case \"up\":\n        case \"down\":\n          return \"translateY\";\n        case \"left\":\n        case \"right\":\n          return \"translateX\";\n      }\n    })();\n    return {\n      class: { \"vfm-bounce-back\": !w.value },\n      style: { transform: `${i}(${-t.value}px)` }\n    };\n  });\n  I(\n    () => r.value,\n    (i) => {\n      i || (t.value = 0);\n    }\n  ), I(\n    () => s.value,\n    (i) => {\n      i && (t.value = 0);\n    }\n  ), I(\n    () => t.value,\n    (i, b) => {\n      switch (e.swipeToClose) {\n        case \"down\":\n        case \"right\":\n          f = i < b;\n          break;\n        case \"up\":\n        case \"left\":\n          f = i > b;\n          break;\n      }\n    }\n  );\n  function k(i) {\n    e.preventNavigationGestures && i.preventDefault();\n  }\n  function P(i) {\n    const b = i == null ? void 0 : i.tagName;\n    if (!b || [\"INPUT\", \"TEXTAREA\"].includes(b))\n      return !1;\n    const L = (() => {\n      switch (e.swipeToClose) {\n        case \"up\":\n          return (i == null ? void 0 : i.scrollTop) + (i == null ? void 0 : i.clientHeight) === (i == null ? void 0 : i.scrollHeight);\n        case \"left\":\n          return (i == null ? void 0 : i.scrollLeft) + (i == null ? void 0 : i.clientWidth) === (i == null ? void 0 : i.scrollWidth);\n        case \"down\":\n          return (i == null ? void 0 : i.scrollTop) === 0;\n        case \"right\":\n          return (i == null ? void 0 : i.scrollLeft) === 0;\n        default:\n          return !1;\n      }\n    })();\n    return i === n.value ? L : L && P(i == null ? void 0 : i.parentElement);\n  }\n  return {\n    vfmContentEl: l,\n    swipeBannerEl: a,\n    bindSwipe: D,\n    onTouchStartSwipeBanner: k\n  };\n}\nconst Ye = Symbol(\"vfm\");\nlet H;\nconst Lo = (e) => H = e, Po = {\n  install: q,\n  modals: [],\n  openedModals: [],\n  openedModalOverlays: [],\n  dynamicModals: [],\n  modalsContainers: C([]),\n  get: () => {\n  },\n  toggle: () => {\n  },\n  open: () => {\n  },\n  close: () => {\n  },\n  closeAll: () => Promise.allSettled([])\n}, Ao = () => Ae() && Qe(Ye, Po) || H;\nfunction zo() {\n  const e = _([]), o = _([]), l = _([]), s = _([]), u = C([]), c = te({\n    install(a) {\n      a.provide(Ye, c), a.config.globalProperties.$vfm = c;\n    },\n    modals: e,\n    openedModals: o,\n    openedModalOverlays: l,\n    dynamicModals: s,\n    modalsContainers: u,\n    get(a) {\n      return e.find((n) => {\n        var t, r;\n        return ((r = (t = Z(n)) == null ? void 0 : t.value.modalId) == null ? void 0 : r.value) === a;\n      });\n    },\n    toggle(a, n) {\n      var r;\n      const t = c.get(a);\n      return (r = Z(t)) == null ? void 0 : r.value.toggle(n);\n    },\n    open(a) {\n      return c.toggle(a, !0);\n    },\n    close(a) {\n      return c.toggle(a, !1);\n    },\n    closeAll() {\n      return Promise.allSettled(\n        o.reduce((a, n) => {\n          const t = Z(n), r = t == null ? void 0 : t.value.toggle(!1);\n          return r && a.push(r), a;\n        }, [])\n      );\n    }\n  });\n  return Lo(c), c;\n}\nfunction Z(e) {\n  var o;\n  return (o = e == null ? void 0 : e.exposed) == null ? void 0 : o.modalExposed;\n}\nconst Io = me({ inheritAttrs: !1 }), Ro = /* @__PURE__ */ me({\n  ...Io,\n  __name: \"VueFinalModal\",\n  props: co,\n  emits: [\"update:modelValue\", \"beforeOpen\", \"opened\", \"beforeClose\", \"closed\", \"clickOutside\"],\n  setup(e, { expose: o, emit: l }) {\n    const s = e, u = l, c = Ie(), a = Ae(), { modals: n, openedModals: t, openedModalOverlays: r } = K(), m = C(), f = C(), { focus: M, blur: S } = yo(s, { focusEl: m }), { zIndex: V, refreshZIndex: O, resetZIndex: E } = Eo(s), { modelValueLocal: w } = po(s, u, { open: We, close: Xe }), { enableBodyScroll: D, disableBodyScroll: k } = Vo(s, {\n      lockScrollEl: m,\n      modelValueLocal: w\n    });\n    let P = q;\n    const {\n      visible: i,\n      contentVisible: b,\n      contentListeners: L,\n      contentTransition: p,\n      overlayVisible: h,\n      overlayListeners: R,\n      overlayTransition: J,\n      enterTransition: Q,\n      leaveTransition: xe\n    } = fo(s, {\n      modelValueLocal: w,\n      onEntering() {\n        z(() => {\n          k(), M();\n        });\n      },\n      onEnter() {\n        u(\"opened\"), P(\"opened\");\n      },\n      onLeave() {\n        $(t, a), E(), D(), u(\"closed\"), P(\"closed\");\n      }\n    }), { onEsc: ze, onMouseupRoot: Ge, onMousedown: Te } = vo(s, u, { vfmRootEl: m, vfmContentEl: f, visible: i, modelValueLocal: w }), {\n      swipeBannerEl: $e,\n      bindSwipe: Ue,\n      onTouchStartSwipeBanner: Se\n    } = Do(s, { vfmContentEl: f, modelValueLocal: w }), Me = g(() => a ? t.indexOf(a) : -1);\n    I([() => s.zIndexFn, Me], () => {\n      i.value && O(Me.value);\n    }), Pe(() => {\n      fe(n, a);\n    }), s.modelValue && (w.value = !0);\n    function We() {\n      let d = !1;\n      return u(\"beforeOpen\", { stop: () => d = !0 }), d ? !1 : (fe(t, a), fe(r, a), ie(), Q(), !0);\n    }\n    function Xe() {\n      let d = !1;\n      return u(\"beforeClose\", { stop: () => d = !0 }), d ? !1 : ($(r, a), ie(), S(), xe(), !0);\n    }\n    function Ze() {\n      w.value = !1;\n    }\n    he(() => {\n      D(), $(n, a), $(t, a), S(), ie();\n    });\n    async function ie() {\n      await z();\n      const d = r.filter((y) => {\n        var A;\n        const T = Z(y);\n        return (T == null ? void 0 : T.value.overlayBehavior.value) === \"auto\" && !((A = T == null ? void 0 : T.value.hideOverlay) != null && A.value);\n      });\n      d.forEach((y, T) => {\n        const A = Z(y);\n        A != null && A.value && (A.value.overlayVisible.value = T === d.length - 1);\n      });\n    }\n    const Ke = ae(() => s.modalId), ge = ae(() => s.hideOverlay), qe = ae(() => s.overlayBehavior), Je = g(() => ({\n      modalId: Ke,\n      hideOverlay: ge,\n      overlayBehavior: qe,\n      overlayVisible: h,\n      toggle(d) {\n        return new Promise((y) => {\n          P = uo((A) => y(A));\n          const T = typeof d == \"boolean\" ? d : !w.value;\n          w.value = T;\n        });\n      }\n    }));\n    return o({\n      modalExposed: Je\n    }), (d, y) => (B(), U(_e, {\n      to: d.teleportTo ? d.teleportTo : void 0,\n      disabled: !d.teleportTo\n    }, [\n      d.displayDirective !== \"if\" || v(i) ? ue((B(), N(\"div\", x({ key: 0 }, v(c), {\n        ref_key: \"vfmRootEl\",\n        ref: m,\n        class: [\"vfm vfm--fixed vfm--inset\", { \"vfm--prevent-none\": d.background === \"interactive\" }],\n        style: { zIndex: v(V) },\n        role: \"dialog\",\n        \"aria-modal\": \"true\",\n        onKeydown: y[7] || (y[7] = eo(() => v(ze)(), [\"esc\"])),\n        onMouseup: y[8] || (y[8] = Ce(() => v(Ge)(), [\"self\"])),\n        onMousedown: y[9] || (y[9] = Ce((T) => v(Te)(T), [\"self\"]))\n      }), [\n        ge.value ? Y(\"\", !0) : (B(), U(ke, x({ key: 0 }, v(J), Ve(v(R))), {\n          default: ye(() => [\n            d.displayDirective !== \"if\" || v(h) ? ue((B(), N(\"div\", {\n              key: 0,\n              class: oo([\"vfm__overlay vfm--overlay vfm--absolute vfm--inset vfm--prevent-none\", d.overlayClass]),\n              style: to(d.overlayStyle),\n              \"aria-hidden\": \"true\"\n            }, null, 6)), [\n              [ce, d.displayDirective !== \"show\" || v(h)],\n              [v(ve), d.displayDirective !== \"visible\" || v(h)]\n            ]) : Y(\"\", !0)\n          ]),\n          _: 1\n        }, 16)),\n        no(ke, x(v(p), Ve(v(L))), {\n          default: ye(() => [\n            d.displayDirective !== \"if\" || v(b) ? ue((B(), N(\"div\", x({\n              key: 0,\n              ref_key: \"vfmContentEl\",\n              ref: f,\n              class: [\"vfm__content vfm--outline-none\", [d.contentClass, { \"vfm--prevent-auto\": d.background === \"interactive\" }]],\n              style: d.contentStyle,\n              tabindex: \"0\"\n            }, v(Ue), {\n              onMousedown: y[6] || (y[6] = () => v(Te)())\n            }), [\n              Ee(d.$slots, \"default\", Re(lo({ close: Ze }))),\n              d.showSwipeBanner ? (B(), N(\"div\", {\n                key: 0,\n                ref_key: \"swipeBannerEl\",\n                ref: $e,\n                class: \"vfm-swipe-banner-container\",\n                onTouchstart: y[2] || (y[2] = (T) => v(Se)(T))\n              }, [\n                Ee(d.$slots, \"swipe-banner\", {}, () => [\n                  ee(\"div\", {\n                    class: \"vfm-swipe-banner-back\",\n                    onTouchstart: y[0] || (y[0] = (T) => d.swipeToClose === \"left\" && T.preventDefault())\n                  }, null, 32),\n                  ee(\"div\", {\n                    class: \"vfm-swipe-banner-forward\",\n                    onTouchstart: y[1] || (y[1] = (T) => d.swipeToClose === \"right\" && T.preventDefault())\n                  }, null, 32)\n                ])\n              ], 544)) : !d.showSwipeBanner && d.preventNavigationGestures ? (B(), N(\"div\", {\n                key: 1,\n                class: \"vfm-swipe-banner-container\",\n                onTouchstart: y[5] || (y[5] = (T) => v(Se)(T))\n              }, [\n                ee(\"div\", {\n                  class: \"vfm-swipe-banner-back\",\n                  onTouchstart: y[3] || (y[3] = (T) => d.swipeToClose === \"left\" && T.preventDefault())\n                }, null, 32),\n                ee(\"div\", {\n                  class: \"vfm-swipe-banner-forward\",\n                  onTouchstart: y[4] || (y[4] = (T) => d.swipeToClose === \"right\" && T.preventDefault())\n                }, null, 32)\n              ], 32)) : Y(\"\", !0)\n            ], 16)), [\n              [ce, d.displayDirective !== \"show\" || v(b)],\n              [v(ve), d.displayDirective !== \"visible\" || v(b)]\n            ]) : Y(\"\", !0)\n          ]),\n          _: 3\n        }, 16)\n      ], 16)), [\n        [ce, d.displayDirective !== \"show\" || v(i)],\n        [v(ve), d.displayDirective !== \"visible\" || v(i)]\n      ]) : Y(\"\", !0)\n    ], 8, [\"to\", \"disabled\"]));\n  }\n});\nfunction K() {\n  const e = Ao();\n  if (!e)\n    throw new Error(\n      `[Vue Final Modal]: getActiveVfm was called with no active Vfm. Did you forget to install vfm?\n\tconst vfm = createVfm()\n\tapp.use(vfm)\nThis will fail in production.`\n    );\n  return e;\n}\nfunction Le(e, o = Ro) {\n  const { component: l, slots: s, ...u } = e, c = typeof s > \"u\" ? {} : Object.fromEntries(Fe(s).map(([a, n]) => we(n) ? [a, n] : re(n) ? [a, {\n    ...n,\n    component: te(n.component)\n  }] : [a, te(n)]));\n  return {\n    ...u,\n    component: te(l || o),\n    slots: c\n  };\n}\nfunction Go(e) {\n  const o = pe({\n    id: Symbol(\"useModal\"),\n    modelValue: !!(e != null && e.defaultModelValue),\n    resolveOpened: () => {\n    },\n    resolveClosed: () => {\n    },\n    attrs: {},\n    ...Le(e)\n  });\n  io(() => {\n    o != null && o.keepAlive || n();\n  }), o.modelValue === !0 && (H ? H == null || H.dynamicModals.push(o) : z(() => {\n    const t = K();\n    t == null || t.dynamicModals.push(o);\n  }));\n  async function l() {\n    let t;\n    return H ? t = H : (await z(), t = K()), o.modelValue ? Promise.resolve(\"[Vue Final Modal] modal is already opened.\") : (n(), o.modelValue = !0, t.dynamicModals.push(o), new Promise((r) => {\n      o.resolveOpened = () => r(\"opened\");\n    }));\n  }\n  function s() {\n    return o.modelValue ? (o.modelValue = !1, new Promise((t) => {\n      o.resolveClosed = () => t(\"closed\");\n    })) : Promise.resolve(\"[Vue Final Modal] modal is already closed.\");\n  }\n  function u(t) {\n    const { slots: r, ...m } = Le(t, o.component);\n    t.defaultModelValue !== void 0 && (o.defaultModelValue = t.defaultModelValue), (t == null ? void 0 : t.keepAlive) !== void 0 && (o.keepAlive = t == null ? void 0 : t.keepAlive), c(o, m), r && Fe(r).forEach(([f, M]) => {\n      const S = o.slots[f];\n      we(S) ? o.slots[f] = M : re(S) && re(M) ? c(S, M) : o.slots[f] = M;\n    });\n  }\n  function c(t, r) {\n    r.component && (t.component = r.component), r.attrs && a(t.attrs, r.attrs);\n  }\n  function a(t, r) {\n    return Object.entries(r).forEach(([m, f]) => {\n      t[m] = f;\n    }), t;\n  }\n  function n() {\n    const t = K(), r = t.dynamicModals.indexOf(o);\n    r !== -1 && t.dynamicModals.splice(r, 1);\n  }\n  return {\n    options: o,\n    open: l,\n    close: s,\n    patchOptions: u,\n    destroy: n\n  };\n}\nfunction $o(e) {\n  return e;\n}\nfunction re(e) {\n  return typeof e == \"object\" && e !== null ? \"component\" in e : !1;\n}\nfunction Fo(e, o) {\n  return Object.keys(o).reduce((l, s) => (l[s] = e == null ? void 0 : e[s], l), {});\n}\nfunction Ho(e) {\n  return {\n    \"onUpdate:modelValue\": (o) => e == null ? void 0 : e(\"update:modelValue\", o),\n    onBeforeClose: (o) => e == null ? void 0 : e(\"beforeClose\", o),\n    onClosed: () => e == null ? void 0 : e(\"closed\"),\n    onBeforeOpen: (o) => e == null ? void 0 : e(\"beforeOpen\", o),\n    onOpened: () => e == null ? void 0 : e(\"opened\"),\n    /** onClickOutside will only be emitted when clickToClose equal to `false` */\n    onClickOutside: () => e == null ? void 0 : e(\"clickOutside\")\n  };\n}\nfunction Uo(e) {\n  const { props: o, modalProps: l, emit: s } = e, u = g(() => Fo(o, l)), c = Ho(s), a = Ie();\n  return g(() => ({\n    ...u.value,\n    ...c,\n    ...a\n  }));\n}\nconst jo = [\"innerHTML\"], Wo = /* @__PURE__ */ me({\n  __name: \"ModalsContainer\",\n  setup(e) {\n    const { modalsContainers: o, dynamicModals: l } = K(), s = Symbol(\"ModalsContainer\"), u = g(() => {\n      var n;\n      return s === ((n = o.value) == null ? void 0 : n[0]);\n    });\n    o.value.push(s), he(() => {\n      o.value = o.value.filter((n) => n !== s);\n    });\n    function c(n) {\n      var t, r, m;\n      (r = (t = l[n]) == null ? void 0 : t.resolveClosed) == null || r.call(t), (m = l[n]) != null && m.keepAlive || l.splice(n, 1);\n    }\n    function a(n) {\n      var t, r;\n      (r = (t = l[n]) == null ? void 0 : t.resolveOpened) == null || r.call(t);\n    }\n    return (n, t) => u.value ? (B(!0), N(so, { key: 0 }, Be(v(l), (r, m) => (B(), U(de(r.component), x({\n      key: r.id\n    }, {\n      displayDirective: r != null && r.keepAlive ? \"show\" : void 0,\n      ...typeof r.attrs == \"object\" ? r.attrs : {}\n    }, {\n      modelValue: r.modelValue,\n      \"onUpdate:modelValue\": (f) => r.modelValue = f,\n      onClosed: () => c(m),\n      onOpened: () => a(m)\n    }), ro({ _: 2 }, [\n      Be(r.slots, (f, M) => ({\n        name: M,\n        fn: ye(() => [\n          v(we)(f) ? (B(), N(\"div\", {\n            key: 0,\n            innerHTML: f\n          }, null, 8, jo)) : v(re)(f) ? (B(), U(de(f.component), Re(x({ key: 1 }, f.attrs)), null, 16)) : (B(), U(de(f), { key: 2 }))\n        ])\n      }))\n    ]), 1040, [\"modelValue\", \"onUpdate:modelValue\", \"onClosed\", \"onOpened\"]))), 128)) : Y(\"\", !0);\n  }\n});\nexport {\n  Wo as ModalsContainer,\n  Ro as VueFinalModal,\n  zo as createVfm,\n  Z as getModalExposed,\n  Go as useModal,\n  $o as useModalSlot,\n  K as useVfm,\n  Uo as useVfmAttrs,\n  co as vueFinalModalProps\n};\n","import { createVfm } from 'vue-final-modal';\nimport type { UserModule } from './user-module-type';\n\n/**\n * Add vue-final-modal\n * @see https://vue-final-modal.org/\n */\nexport const install: UserModule = ({ app }) => {\n  app.use(createVfm());\n};\n","// packages/utils/src/index.ts\nvar isBrowser = typeof window !== \"undefined\";\nvar explicitKeys = [\n  \"__key\",\n  \"__init\",\n  \"__shim\",\n  \"__original\",\n  \"__index\",\n  \"__prevKey\"\n];\nfunction token() {\n  return Math.random().toString(36).substring(2, 15);\n}\nfunction setify(items) {\n  return items instanceof Set ? items : new Set(items);\n}\nfunction dedupe(arr1, arr2) {\n  const original = arr1 instanceof Set ? arr1 : new Set(arr1);\n  if (arr2)\n    arr2.forEach((item) => original.add(item));\n  return [...original];\n}\nfunction has(obj, property) {\n  return Object.prototype.hasOwnProperty.call(obj, property);\n}\nfunction eq(valA, valB, deep = true, explicit = [\"__key\"]) {\n  if (valA === valB)\n    return true;\n  if (typeof valB === \"object\" && typeof valA === \"object\") {\n    if (valA instanceof Map)\n      return false;\n    if (valA instanceof Set)\n      return false;\n    if (valA instanceof Date && valB instanceof Date)\n      return valA.getTime() === valB.getTime();\n    if (valA instanceof RegExp && valB instanceof RegExp)\n      return eqRegExp(valA, valB);\n    if (valA === null || valB === null)\n      return false;\n    if (Object.keys(valA).length !== Object.keys(valB).length)\n      return false;\n    for (const k of explicit) {\n      if ((k in valA || k in valB) && valA[k] !== valB[k])\n        return false;\n    }\n    for (const key in valA) {\n      if (!(key in valB))\n        return false;\n      if (valA[key] !== valB[key] && !deep)\n        return false;\n      if (deep && !eq(valA[key], valB[key], deep, explicit))\n        return false;\n    }\n    return true;\n  }\n  return false;\n}\nfunction eqRegExp(x, y) {\n  return x.source === y.source && x.flags.split(\"\").sort().join(\"\") === y.flags.split(\"\").sort().join(\"\");\n}\nfunction empty(value) {\n  const type = typeof value;\n  if (type === \"number\")\n    return false;\n  if (value === void 0)\n    return true;\n  if (type === \"string\") {\n    return value === \"\";\n  }\n  if (type === \"object\") {\n    if (value === null)\n      return true;\n    for (const _i in value)\n      return false;\n    if (value instanceof RegExp)\n      return false;\n    if (value instanceof Date)\n      return false;\n    return true;\n  }\n  return false;\n}\nfunction escapeExp(string) {\n  return string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nfunction regexForFormat(format) {\n  const escaped = `^${escapeExp(format)}$`;\n  const formats = {\n    MM: \"(0[1-9]|1[012])\",\n    M: \"([1-9]|1[012])\",\n    DD: \"([012][0-9]|3[01])\",\n    D: \"([012]?[0-9]|3[01])\",\n    YYYY: \"\\\\d{4}\",\n    YY: \"\\\\d{2}\"\n  };\n  const tokens = Object.keys(formats);\n  return new RegExp(\n    tokens.reduce((regex, format2) => {\n      return regex.replace(format2, formats[format2]);\n    }, escaped)\n  );\n}\nfunction nodeType(type) {\n  const t = type.toLowerCase();\n  if (t === \"list\")\n    return \"list\";\n  if (t === \"group\")\n    return \"group\";\n  return \"input\";\n}\nfunction isRecord(o) {\n  return Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction isObject(o) {\n  return isRecord(o) || Array.isArray(o);\n}\nfunction isPojo(o) {\n  if (isRecord(o) === false)\n    return false;\n  if (o.__FKNode__ || o.__POJO__ === false)\n    return false;\n  const ctor = o.constructor;\n  if (ctor === void 0)\n    return true;\n  const prot = ctor.prototype;\n  if (isRecord(prot) === false)\n    return false;\n  if (prot.hasOwnProperty(\"isPrototypeOf\") === false) {\n    return false;\n  }\n  return true;\n}\nvar extend = /* @__NO_SIDE_EFFECTS__ */ (original, additional, extendArrays = false, ignoreUndefined = false) => {\n  if (additional === null)\n    return null;\n  const merged = {};\n  if (typeof additional === \"string\")\n    return additional;\n  for (const key in original) {\n    if (has(additional, key) && (additional[key] !== void 0 || !ignoreUndefined)) {\n      if (extendArrays && Array.isArray(original[key]) && Array.isArray(additional[key])) {\n        merged[key] = original[key].concat(additional[key]);\n        continue;\n      }\n      if (additional[key] === void 0) {\n        continue;\n      }\n      if (isPojo(original[key]) && isPojo(additional[key])) {\n        merged[key] = /* @__PURE__ */ extend(\n          original[key],\n          additional[key],\n          extendArrays,\n          ignoreUndefined\n        );\n      } else {\n        merged[key] = additional[key];\n      }\n    } else {\n      merged[key] = original[key];\n    }\n  }\n  for (const key in additional) {\n    if (!has(merged, key) && additional[key] !== void 0) {\n      merged[key] = additional[key];\n    }\n  }\n  return merged;\n};\nfunction isQuotedString(str) {\n  if (str[0] !== '\"' && str[0] !== \"'\")\n    return false;\n  if (str[0] !== str[str.length - 1])\n    return false;\n  const quoteType = str[0];\n  for (let p = 1; p < str.length; p++) {\n    if (str[p] === quoteType && (p === 1 || str[p - 1] !== \"\\\\\") && p !== str.length - 1) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction rmEscapes(str) {\n  if (!str.length)\n    return \"\";\n  let clean = \"\";\n  let lastChar = \"\";\n  for (let p = 0; p < str.length; p++) {\n    const char = str.charAt(p);\n    if (char !== \"\\\\\" || lastChar === \"\\\\\") {\n      clean += char;\n    }\n    lastChar = char;\n  }\n  return clean;\n}\nfunction assignDeep(a, b) {\n  for (const key in a) {\n    if (has(b, key) && a[key] !== b[key] && !(isPojo(a[key]) && isPojo(b[key]))) {\n      a[key] = b[key];\n    } else if (isPojo(a[key]) && isPojo(b[key])) {\n      assignDeep(a[key], b[key]);\n    }\n  }\n  for (const key in b) {\n    if (!has(a, key)) {\n      a[key] = b[key];\n    }\n  }\n  return a;\n}\nfunction nodeProps(...sets) {\n  return sets.reduce((valid, props) => {\n    const { value, name, modelValue, config, plugins, ...validProps } = props;\n    return Object.assign(valid, validProps);\n  }, {});\n}\nfunction parseArgs(str) {\n  const args = [];\n  let arg = \"\";\n  let depth = 0;\n  let quote = \"\";\n  let lastChar = \"\";\n  for (let p = 0; p < str.length; p++) {\n    const char = str.charAt(p);\n    if (char === quote && lastChar !== \"\\\\\") {\n      quote = \"\";\n    } else if ((char === \"'\" || char === '\"') && !quote && lastChar !== \"\\\\\") {\n      quote = char;\n    } else if (char === \"(\" && !quote) {\n      depth++;\n    } else if (char === \")\" && !quote) {\n      depth--;\n    }\n    if (char === \",\" && !quote && depth === 0) {\n      args.push(arg);\n      arg = \"\";\n    } else if (char !== \" \" || quote) {\n      arg += char;\n    }\n    lastChar = char;\n  }\n  if (arg) {\n    args.push(arg);\n  }\n  return args;\n}\nfunction except(obj, toRemove) {\n  const clean = {};\n  const exps = toRemove.filter((n) => n instanceof RegExp);\n  const keysToRemove = new Set(toRemove);\n  for (const key in obj) {\n    if (!keysToRemove.has(key) && !exps.some((exp) => exp.test(key))) {\n      clean[key] = obj[key];\n    }\n  }\n  return clean;\n}\nfunction only(obj, include) {\n  const clean = {};\n  const exps = include.filter((n) => n instanceof RegExp);\n  include.forEach((key) => {\n    if (!(key instanceof RegExp)) {\n      clean[key] = obj[key];\n    }\n  });\n  Object.keys(obj).forEach((key) => {\n    if (exps.some((exp) => exp.test(key))) {\n      clean[key] = obj[key];\n    }\n  });\n  return clean;\n}\nfunction camel(str) {\n  return str.replace(\n    /-([a-z0-9])/gi,\n    (_s, g) => g.toUpperCase()\n  );\n}\nfunction kebab(str) {\n  return str.replace(\n    /([a-z0-9])([A-Z])/g,\n    (_s, trail, cap) => trail + \"-\" + cap.toLowerCase()\n  ).replace(\" \", \"-\").toLowerCase();\n}\nfunction shallowClone(obj, explicit = explicitKeys) {\n  if (obj !== null && typeof obj === \"object\") {\n    let returnObject;\n    if (Array.isArray(obj))\n      returnObject = [...obj];\n    else if (isPojo(obj))\n      returnObject = { ...obj };\n    if (returnObject) {\n      applyExplicit(obj, returnObject, explicit);\n      return returnObject;\n    }\n  }\n  return obj;\n}\nfunction clone(obj, explicit = explicitKeys) {\n  if (obj === null || obj instanceof RegExp || obj instanceof Date || obj instanceof Map || obj instanceof Set || typeof File === \"function\" && obj instanceof File)\n    return obj;\n  let returnObject;\n  if (Array.isArray(obj)) {\n    returnObject = obj.map((value) => {\n      if (typeof value === \"object\")\n        return clone(value, explicit);\n      return value;\n    });\n  } else {\n    returnObject = Object.keys(obj).reduce((newObj, key) => {\n      newObj[key] = typeof obj[key] === \"object\" ? clone(obj[key], explicit) : obj[key];\n      return newObj;\n    }, {});\n  }\n  for (const key of explicit) {\n    if (key in obj) {\n      Object.defineProperty(returnObject, key, {\n        enumerable: false,\n        value: obj[key]\n      });\n    }\n  }\n  return returnObject;\n}\nfunction cloneAny(obj) {\n  return typeof obj === \"object\" ? clone(obj) : obj;\n}\nfunction getAt(obj, addr) {\n  if (!obj || typeof obj !== \"object\")\n    return null;\n  const segments = addr.split(\".\");\n  let o = obj;\n  for (const i in segments) {\n    const segment = segments[i];\n    if (has(o, segment)) {\n      o = o[segment];\n    }\n    if (+i === segments.length - 1)\n      return o;\n    if (!o || typeof o !== \"object\")\n      return null;\n  }\n  return null;\n}\nfunction undefine(value) {\n  return value !== void 0 && value !== \"false\" && value !== false ? true : void 0;\n}\nfunction init(obj) {\n  return !Object.isFrozen(obj) ? Object.defineProperty(obj, \"__init\", {\n    enumerable: false,\n    value: true\n  }) : obj;\n}\nfunction slugify(str) {\n  return str.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").toLowerCase().replace(/[^a-z0-9]/g, \" \").trim().replace(/\\s+/g, \"-\");\n}\nfunction spread(obj, explicit = explicitKeys) {\n  if (obj && typeof obj === \"object\") {\n    if (obj instanceof RegExp)\n      return obj;\n    if (obj instanceof Date)\n      return obj;\n    let spread2;\n    if (Array.isArray(obj)) {\n      spread2 = [...obj];\n    } else {\n      spread2 = { ...obj };\n    }\n    return applyExplicit(\n      obj,\n      spread2,\n      explicit\n    );\n  }\n  return obj;\n}\nfunction applyExplicit(original, obj, explicit) {\n  for (const key of explicit) {\n    if (key in original) {\n      Object.defineProperty(obj, key, {\n        enumerable: false,\n        value: original[key]\n      });\n    }\n  }\n  return obj;\n}\nfunction whenAvailable(childId, callback, root) {\n  if (!isBrowser)\n    return;\n  if (!root)\n    root = document;\n  const el = root.getElementById(childId);\n  if (el)\n    return callback(el);\n  const observer = new MutationObserver(() => {\n    const el2 = root?.getElementById(childId);\n    if (el2) {\n      observer?.disconnect();\n      callback(el2);\n    }\n  });\n  observer.observe(root, { childList: true, subtree: true });\n}\nfunction oncePerTick(fn) {\n  let called = false;\n  return (...args) => {\n    if (called)\n      return;\n    called = true;\n    queueMicrotask(() => called = false);\n    return fn(...args);\n  };\n}\nfunction boolGetter(value) {\n  if (value === \"false\" || value === false)\n    return void 0;\n  return true;\n}\n\nexport { assignDeep, boolGetter, camel, clone, cloneAny, dedupe, empty, eq, eqRegExp, escapeExp, except, extend, getAt, has, init, isObject, isPojo, isQuotedString, isRecord, kebab, nodeProps, nodeType, oncePerTick, only, parseArgs, regexForFormat, rmEscapes, setify, shallowClone, slugify, spread, token, undefine, whenAvailable };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","import { token, cloneAny, empty, isObject, init, eq, clone, camel, extend as extend$1, undefine, has, kebab, dedupe, parseArgs, getAt, isQuotedString, rmEscapes, slugify, boolGetter } from '@formkit/utils';\n\n// packages/core/src/dispatcher.ts\nfunction createDispatcher() {\n  const middleware = [];\n  let currentIndex = 0;\n  const use2 = (dispatchable) => middleware.push(dispatchable);\n  const dispatch = (payload) => {\n    const current = middleware[currentIndex];\n    if (typeof current === \"function\") {\n      return current(payload, (explicitPayload) => {\n        currentIndex++;\n        return dispatch(explicitPayload);\n      });\n    }\n    currentIndex = 0;\n    return payload;\n  };\n  use2.dispatch = dispatch;\n  use2.unshift = (dispatchable) => middleware.unshift(dispatchable);\n  use2.remove = (dispatchable) => {\n    const index = middleware.indexOf(dispatchable);\n    if (index > -1)\n      middleware.splice(index, 1);\n  };\n  return use2;\n}\nfunction createEmitter() {\n  const listeners = /* @__PURE__ */ new Map();\n  const receipts2 = /* @__PURE__ */ new Map();\n  let buffer = void 0;\n  const emitter = (node, event) => {\n    if (buffer) {\n      buffer.set(event.name, [node, event]);\n      return;\n    }\n    if (listeners.has(event.name)) {\n      listeners.get(event.name).forEach((wrapper) => {\n        if (event.origin === node || wrapper.modifiers.includes(\"deep\")) {\n          wrapper.listener(event);\n        }\n      });\n    }\n    if (event.bubble) {\n      node.bubble(event);\n    }\n  };\n  emitter.flush = () => {\n    listeners.clear();\n    receipts2.clear();\n    buffer?.clear();\n  };\n  emitter.on = (eventName, listener, pos = \"push\") => {\n    const [event, ...modifiers] = eventName.split(\".\");\n    const receipt = listener.receipt || token();\n    const wrapper = {\n      modifiers,\n      event,\n      listener,\n      receipt\n    };\n    listeners.has(event) ? listeners.get(event)[pos](wrapper) : listeners.set(event, [wrapper]);\n    receipts2.has(receipt) ? receipts2.get(receipt)[pos](event) : receipts2.set(receipt, [event]);\n    return receipt;\n  };\n  emitter.off = (receipt) => {\n    if (receipts2.has(receipt)) {\n      receipts2.get(receipt)?.forEach((event) => {\n        const eventListeners = listeners.get(event);\n        if (Array.isArray(eventListeners)) {\n          listeners.set(\n            event,\n            eventListeners.filter((wrapper) => wrapper.receipt !== receipt)\n          );\n        }\n      });\n      receipts2.delete(receipt);\n    }\n  };\n  emitter.pause = (node) => {\n    if (!buffer)\n      buffer = /* @__PURE__ */ new Map();\n    if (node) {\n      node.walk((child) => child._e.pause());\n    }\n  };\n  emitter.play = (node) => {\n    if (!buffer)\n      return;\n    const events = buffer;\n    buffer = void 0;\n    events.forEach(([node2, event]) => emitter(node2, event));\n    if (node) {\n      node.walk((child) => child._e.play());\n    }\n  };\n  return emitter;\n}\nfunction emit(node, context, name, payload, bubble2 = true, meta) {\n  context._e(node, {\n    payload,\n    name,\n    bubble: bubble2,\n    origin: node,\n    meta\n  });\n  return node;\n}\nfunction bubble(node, _context, event) {\n  if (isNode(node.parent)) {\n    node.parent._e(node.parent, event);\n  }\n  return node;\n}\nfunction on(_node, context, name, listener, pos) {\n  return context._e.on(name, listener, pos);\n}\nfunction off(node, context, receipt) {\n  context._e.off(receipt);\n  return node;\n}\n\n// packages/core/src/errors.ts\nvar errorHandler = createDispatcher();\nerrorHandler((error2, next) => {\n  if (!error2.message)\n    error2.message = String(`E${error2.code}`);\n  return next(error2);\n});\nvar warningHandler = createDispatcher();\nwarningHandler((warning, next) => {\n  if (!warning.message)\n    warning.message = String(`W${warning.code}`);\n  const result = next(warning);\n  if (console && typeof console.warn === \"function\")\n    console.warn(result.message);\n  return result;\n});\nfunction warn(code, data = {}) {\n  warningHandler.dispatch({ code, data });\n}\nfunction error(code, data = {}) {\n  throw Error(errorHandler.dispatch({ code, data }).message);\n}\nfunction createMessage(conf, node) {\n  const m = {\n    blocking: false,\n    key: token(),\n    meta: {},\n    type: \"state\",\n    visible: true,\n    ...conf\n  };\n  if (node && m.value && m.meta.localize !== false) {\n    m.value = node.t(m);\n    m.meta.locale = node.config.locale;\n  }\n  return m;\n}\nvar storeTraps = {\n  apply: applyMessages,\n  set: setMessage,\n  remove: removeMessage,\n  filter: filterMessages,\n  reduce: reduceMessages,\n  release: releaseBuffer,\n  touch: touchMessages\n};\nfunction createStore(_buffer = false) {\n  const messages = {};\n  let node;\n  let buffer = _buffer;\n  let _b = [];\n  const _m = /* @__PURE__ */ new Map();\n  let _r = void 0;\n  const store = new Proxy(messages, {\n    get(...args) {\n      const [_target, property] = args;\n      if (property === \"buffer\")\n        return buffer;\n      if (property === \"_b\")\n        return _b;\n      if (property === \"_m\")\n        return _m;\n      if (property === \"_r\")\n        return _r;\n      if (has(storeTraps, property)) {\n        return storeTraps[property].bind(\n          null,\n          messages,\n          store,\n          node\n        );\n      }\n      return Reflect.get(...args);\n    },\n    set(_t, prop, value) {\n      if (prop === \"_n\") {\n        node = value;\n        if (_r === \"__n\")\n          releaseMissed(node, store);\n        return true;\n      } else if (prop === \"_b\") {\n        _b = value;\n        return true;\n      } else if (prop === \"buffer\") {\n        buffer = value;\n        return true;\n      } else if (prop === \"_r\") {\n        _r = value;\n        return true;\n      }\n      error(101, node);\n      return false;\n    }\n  });\n  return store;\n}\nfunction setMessage(messageStore, store, node, message) {\n  if (store.buffer) {\n    store._b.push([[message]]);\n    return store;\n  }\n  if (messageStore[message.key] !== message) {\n    if (typeof message.value === \"string\" && message.meta.localize !== false) {\n      const previous = message.value;\n      message.value = node.t(message);\n      if (message.value !== previous) {\n        message.meta.locale = node.props.locale;\n      }\n    }\n    const e = `message-${has(messageStore, message.key) ? \"updated\" : \"added\"}`;\n    messageStore[message.key] = Object.freeze(\n      node.hook.message.dispatch(message)\n    );\n    node.emit(e, message);\n  }\n  return store;\n}\nfunction touchMessages(messageStore, store) {\n  for (const key in messageStore) {\n    const message = { ...messageStore[key] };\n    store.set(message);\n  }\n}\nfunction removeMessage(messageStore, store, node, key) {\n  if (has(messageStore, key)) {\n    const message = messageStore[key];\n    delete messageStore[key];\n    node.emit(\"message-removed\", message);\n  }\n  if (store.buffer === true) {\n    store._b = store._b.filter((buffered) => {\n      buffered[0] = buffered[0].filter((m) => m.key !== key);\n      return buffered[1] || buffered[0].length;\n    });\n  }\n  return store;\n}\nfunction filterMessages(messageStore, store, node, callback, type) {\n  for (const key in messageStore) {\n    const message = messageStore[key];\n    if ((!type || message.type === type) && !callback(message)) {\n      removeMessage(messageStore, store, node, key);\n    }\n  }\n}\nfunction reduceMessages(messageStore, _store, _node, reducer, accumulator) {\n  for (const key in messageStore) {\n    const message = messageStore[key];\n    accumulator = reducer(accumulator, message);\n  }\n  return accumulator;\n}\nfunction applyMessages(_messageStore, store, node, messages, clear) {\n  if (Array.isArray(messages)) {\n    if (store.buffer) {\n      store._b.push([messages, clear]);\n      return;\n    }\n    const applied = new Set(\n      messages.map((message) => {\n        store.set(message);\n        return message.key;\n      })\n    );\n    if (typeof clear === \"string\") {\n      store.filter(\n        (message) => message.type !== clear || applied.has(message.key)\n      );\n    } else if (typeof clear === \"function\") {\n      store.filter((message) => !clear(message) || applied.has(message.key));\n    }\n  } else {\n    for (const address in messages) {\n      const child = node.at(address);\n      if (child) {\n        child.store.apply(messages[address], clear);\n      } else {\n        missed(node, store, address, messages[address], clear);\n      }\n    }\n  }\n}\nfunction createMessages(node, ...errors) {\n  const sourceKey = `${node.name}-set`;\n  const make = (error2) => createMessage({\n    key: slugify(error2),\n    type: \"error\",\n    value: error2,\n    meta: { source: sourceKey, autoClear: true }\n  });\n  return errors.filter((m) => !!m).map((errorSet) => {\n    if (typeof errorSet === \"string\")\n      errorSet = [errorSet];\n    if (Array.isArray(errorSet)) {\n      return errorSet.map((error2) => make(error2));\n    } else {\n      const errors2 = {};\n      for (const key in errorSet) {\n        if (Array.isArray(errorSet[key])) {\n          errors2[key] = errorSet[key].map(\n            (error2) => make(error2)\n          );\n        } else {\n          errors2[key] = [make(errorSet[key])];\n        }\n      }\n      return errors2;\n    }\n  });\n}\nfunction missed(node, store, address, messages, clear) {\n  const misses = store._m;\n  if (!misses.has(address))\n    misses.set(address, []);\n  if (!store._r)\n    store._r = releaseMissed(node, store);\n  misses.get(address)?.push([messages, clear]);\n}\nfunction releaseMissed(node, store) {\n  return node.on(\n    \"child.deep\",\n    ({ payload: child }) => {\n      store._m.forEach((misses, address) => {\n        if (node.at(address) === child) {\n          misses.forEach(([messages, clear]) => {\n            child.store.apply(messages, clear);\n          });\n          store._m.delete(address);\n        }\n      });\n      if (store._m.size === 0 && store._r) {\n        node.off(store._r);\n        store._r = void 0;\n      }\n    }\n  );\n}\nfunction releaseBuffer(_messageStore, store) {\n  store.buffer = false;\n  store._b.forEach(([messages, clear]) => store.apply(messages, clear));\n  store._b = [];\n}\nfunction createLedger() {\n  const ledger = {};\n  let n;\n  return {\n    count: (...args) => createCounter(n, ledger, ...args),\n    init(node) {\n      n = node;\n      node.on(\"message-added.deep\", add(ledger, 1));\n      node.on(\"message-removed.deep\", add(ledger, -1));\n    },\n    merge: (child) => merge(n, ledger, child),\n    settled(counterName) {\n      return has(ledger, counterName) ? ledger[counterName].promise : Promise.resolve();\n    },\n    unmerge: (child) => merge(n, ledger, child, true),\n    value(counterName) {\n      return has(ledger, counterName) ? ledger[counterName].count : 0;\n    }\n  };\n}\nfunction createCounter(node, ledger, counterName, condition, increment = 0) {\n  condition = parseCondition(condition || counterName);\n  if (!has(ledger, counterName)) {\n    const counter = {\n      condition,\n      count: 0,\n      name: counterName,\n      node,\n      promise: Promise.resolve(),\n      resolve: () => {\n      }\n      // eslint-disable-line @typescript-eslint/no-empty-function\n    };\n    ledger[counterName] = counter;\n    increment = node.store.reduce(\n      (sum, m) => sum + counter.condition(m) * 1,\n      increment\n    );\n    node.each((child) => {\n      child.ledger.count(counter.name, counter.condition);\n      increment += child.ledger.value(counter.name);\n    });\n  }\n  return count(ledger[counterName], increment).promise;\n}\nfunction parseCondition(condition) {\n  if (typeof condition === \"function\") {\n    return condition;\n  }\n  return (m) => m.type === condition;\n}\nfunction count(counter, increment) {\n  const initial = counter.count;\n  const post = counter.count + increment;\n  counter.count = post;\n  if (initial === 0 && post !== 0) {\n    counter.node.emit(`unsettled:${counter.name}`, counter.count, false);\n    counter.promise = new Promise((r) => counter.resolve = r);\n  } else if (initial !== 0 && post === 0) {\n    counter.node.emit(`settled:${counter.name}`, counter.count, false);\n    counter.resolve();\n  }\n  counter.node.emit(`count:${counter.name}`, counter.count, false);\n  return counter;\n}\nfunction add(ledger, delta) {\n  return (e) => {\n    for (const name in ledger) {\n      const counter = ledger[name];\n      if (counter.condition(e.payload)) {\n        count(counter, delta);\n      }\n    }\n  };\n}\nfunction merge(parent, ledger, child, remove = false) {\n  const originalParent = parent;\n  for (const key in ledger) {\n    const condition = ledger[key].condition;\n    if (!remove)\n      child.ledger.count(key, condition);\n    const increment = child.ledger.value(key) * (remove ? -1 : 1);\n    if (!parent)\n      continue;\n    do {\n      parent.ledger.count(key, condition, increment);\n      parent = parent.parent;\n    } while (parent);\n    parent = originalParent;\n  }\n}\n\n// packages/core/src/registry.ts\nvar registry = /* @__PURE__ */ new Map();\nvar reflected = /* @__PURE__ */ new Map();\nvar emit2 = createEmitter();\nvar receipts = [];\nfunction register(node) {\n  if (node.props.id) {\n    registry.set(node.props.id, node);\n    reflected.set(node, node.props.id);\n    emit2(node, {\n      payload: node,\n      name: node.props.id,\n      bubble: false,\n      origin: node\n    });\n  }\n}\nfunction deregister(node) {\n  if (reflected.has(node)) {\n    const id = reflected.get(node);\n    reflected.delete(node);\n    registry.delete(id);\n    emit2(node, {\n      payload: null,\n      name: id,\n      bubble: false,\n      origin: node\n    });\n  }\n}\nfunction getNode(id) {\n  return registry.get(id);\n}\nfunction resetRegistry() {\n  registry.forEach((node) => {\n    deregister(node);\n  });\n  receipts.forEach((receipt) => emit2.off(receipt));\n}\nfunction watchRegistry(id, callback) {\n  receipts.push(emit2.on(id, callback));\n}\n\n// packages/core/src/config.ts\nfunction configChange(node, prop, value) {\n  let usingFallback = true;\n  !(prop in node.config._t) ? node.emit(`config:${prop}`, value, false) : usingFallback = false;\n  if (!(prop in node.props)) {\n    node.emit(\"prop\", { prop, value });\n    node.emit(`prop:${prop}`, value);\n  }\n  return usingFallback;\n}\nfunction createConfig(options = {}) {\n  const nodes = /* @__PURE__ */ new Set();\n  const target = {\n    ...options,\n    ...{\n      _add: (node) => nodes.add(node),\n      _rm: (node) => nodes.delete(node)\n    }\n  };\n  const rootConfig = new Proxy(target, {\n    set(t, prop, value, r) {\n      if (typeof prop === \"string\") {\n        nodes.forEach((node) => configChange(node, prop, value));\n      }\n      return Reflect.set(t, prop, value, r);\n    }\n  });\n  return rootConfig;\n}\n\n// packages/core/src/submitForm.ts\nfunction submitForm(id, root) {\n  const formElement = (root || document).getElementById(id);\n  if (formElement instanceof HTMLFormElement) {\n    const event = new Event(\"submit\", { cancelable: true, bubbles: true });\n    formElement.dispatchEvent(event);\n    return;\n  }\n  warn(151, id);\n}\nfunction clearState(node) {\n  const clear = (n) => {\n    for (const key in n.store) {\n      const message = n.store[key];\n      if (message.type === \"error\" || message.type === \"ui\" && key === \"incomplete\") {\n        n.store.remove(key);\n      } else if (message.type === \"state\") {\n        n.store.set({ ...message, value: false });\n      }\n    }\n  };\n  clear(node);\n  node.walk(clear);\n}\nfunction reset(id, resetTo) {\n  const node = typeof id === \"string\" ? getNode(id) : id;\n  if (node) {\n    const initial = (n) => cloneAny(n.props.initial) || (n.type === \"group\" ? {} : n.type === \"list\" ? [] : void 0);\n    node._e.pause(node);\n    const resetValue2 = cloneAny(resetTo);\n    if (resetTo && !empty(resetTo)) {\n      node.props.initial = isObject(resetValue2) ? init(resetValue2) : resetValue2;\n      node.props._init = node.props.initial;\n    }\n    node.input(initial(node), false);\n    node.walk((child) => {\n      if (child.type === \"list\" && child.sync)\n        return;\n      child.input(initial(child), false);\n    });\n    node.input(\n      empty(resetValue2) && resetValue2 ? resetValue2 : initial(node),\n      false\n    );\n    const isDeepReset = node.type !== \"input\" && resetTo && !empty(resetTo) && isObject(resetTo);\n    if (isDeepReset) {\n      node.walk((child) => {\n        child.props.initial = isObject(child.value) ? init(child.value) : child.value;\n        child.props._init = child.props.initial;\n      });\n    }\n    node._e.play(node);\n    clearState(node);\n    node.emit(\"reset\", node);\n    return node;\n  }\n  warn(152, id);\n  return;\n}\n\n// packages/core/src/node.ts\nvar defaultConfig = {\n  delimiter: \".\",\n  delay: 0,\n  locale: \"en\",\n  rootClasses: (key) => ({ [`formkit-${kebab(key)}`]: true })\n};\nvar useIndex = Symbol(\"index\");\nvar valueRemoved = Symbol(\"removed\");\nvar valueMoved = Symbol(\"moved\");\nvar valueInserted = Symbol(\"inserted\");\nfunction isList(arg) {\n  return arg.type === \"list\" && Array.isArray(arg._value);\n}\nfunction isNode(node) {\n  return node && typeof node === \"object\" && node.__FKNode__ === true;\n}\nvar invalidSetter = (node, _context, property) => {\n  error(102, [node, property]);\n};\nvar traps = {\n  _c: trap(getContext, invalidSetter, false),\n  add: trap(addChild),\n  addProps: trap(addProps),\n  address: trap(getAddress, invalidSetter, false),\n  at: trap(getNode2),\n  bubble: trap(bubble),\n  clearErrors: trap(clearErrors),\n  calm: trap(calm),\n  config: trap(false),\n  define: trap(define),\n  disturb: trap(disturb),\n  destroy: trap(destroy),\n  extend: trap(extend),\n  hydrate: trap(hydrate),\n  index: trap(getIndex, setIndex, false),\n  input: trap(input),\n  each: trap(eachChild),\n  emit: trap(emit),\n  find: trap(find),\n  on: trap(on),\n  off: trap(off),\n  parent: trap(false, setParent),\n  plugins: trap(false),\n  remove: trap(removeChild),\n  root: trap(getRoot, invalidSetter, false),\n  reset: trap(resetValue),\n  resetConfig: trap(resetConfig),\n  setErrors: trap(setErrors),\n  submit: trap(submit),\n  t: trap(text),\n  use: trap(use),\n  name: trap(getName, false, false),\n  walk: trap(walkTree)\n};\nfunction createTraps() {\n  return new Map(Object.entries(traps));\n}\nfunction trap(getter, setter, curryGetter = true) {\n  return {\n    get: getter ? (node, context) => curryGetter ? (...args) => getter(node, context, ...args) : getter(node, context) : false,\n    set: setter !== void 0 ? setter : invalidSetter.bind(null)\n  };\n}\nfunction createHooks() {\n  const hooks = /* @__PURE__ */ new Map();\n  return new Proxy(hooks, {\n    get(_, property) {\n      if (!hooks.has(property)) {\n        hooks.set(property, createDispatcher());\n      }\n      return hooks.get(property);\n    }\n  });\n}\nvar nameCount = 0;\nvar idCount = 0;\nfunction resetCount() {\n  nameCount = 0;\n  idCount = 0;\n}\nfunction names(children) {\n  return children.reduce(\n    (named, child) => Object.assign(named, { [child.name]: child }),\n    {}\n  );\n}\nfunction createName(options) {\n  if (options.parent?.type === \"list\")\n    return useIndex;\n  return options.name || `${options.props?.type || \"input\"}_${++nameCount}`;\n}\nfunction createValue(options) {\n  if (options.type === \"group\") {\n    return init(\n      options.value && typeof options.value === \"object\" && !Array.isArray(options.value) ? options.value : {}\n    );\n  } else if (options.type === \"list\") {\n    return init(Array.isArray(options.value) ? options.value : []);\n  }\n  return options.value;\n}\nfunction input(node, context, value, async = true) {\n  context._value = validateInput(node, node.hook.input.dispatch(value));\n  node.emit(\"input\", context._value);\n  if (node.isCreated && node.type === \"input\" && eq(context._value, context.value)) {\n    node.emit(\"commitRaw\", context.value);\n    return context.settled;\n  }\n  if (context.isSettled)\n    node.disturb();\n  if (async) {\n    if (context._tmo)\n      clearTimeout(context._tmo);\n    context._tmo = setTimeout(\n      commit,\n      node.props.delay,\n      node,\n      context\n    );\n  } else {\n    commit(node, context);\n  }\n  return context.settled;\n}\nfunction validateInput(node, value) {\n  switch (node.type) {\n    case \"input\":\n      break;\n    case \"group\":\n      if (!value || typeof value !== \"object\")\n        error(107, [node, value]);\n      break;\n    case \"list\":\n      if (!Array.isArray(value))\n        error(108, [node, value]);\n      break;\n  }\n  return value;\n}\nfunction commit(node, context, calm2 = true, hydrate2 = true) {\n  context._value = context.value = node.hook.commit.dispatch(context._value);\n  if (node.type !== \"input\" && hydrate2)\n    node.hydrate();\n  node.emit(\"commitRaw\", context.value);\n  node.emit(\"commit\", context.value);\n  if (calm2)\n    node.calm();\n}\nfunction partial(context, { name, value, from }) {\n  if (Object.isFrozen(context._value))\n    return;\n  if (isList(context)) {\n    const insert = value === valueRemoved ? [] : value === valueMoved && typeof from === \"number\" ? context._value.splice(from, 1) : [value];\n    context._value.splice(\n      name,\n      value === valueMoved || from === valueInserted ? 0 : 1,\n      ...insert\n    );\n    return;\n  }\n  if (value !== valueRemoved) {\n    context._value[name] = value;\n  } else {\n    delete context._value[name];\n  }\n}\nfunction hydrate(node, context) {\n  const _value = context._value;\n  if (node.type === \"list\" && node.sync)\n    syncListNodes(node, context);\n  context.children.forEach((child) => {\n    if (typeof _value !== \"object\")\n      return;\n    if (child.name in _value) {\n      const childValue = child.type !== \"input\" || _value[child.name] && typeof _value[child.name] === \"object\" ? init(_value[child.name]) : _value[child.name];\n      if (!child.isSettled || !isObject(childValue) && eq(childValue, child._value))\n        return;\n      child.input(childValue, false);\n    } else {\n      if (node.type !== \"list\" || typeof child.name === \"number\") {\n        partial(context, { name: child.name, value: child.value });\n      }\n      if (!_value.__init) {\n        if (child.type === \"group\")\n          child.input({}, false);\n        else if (child.type === \"list\")\n          child.input([], false);\n        else\n          child.input(void 0, false);\n      }\n    }\n  });\n  return node;\n}\nfunction syncListNodes(node, context) {\n  const _value = node._value;\n  if (!Array.isArray(_value))\n    return;\n  const newChildren = [];\n  const unused = new Set(context.children);\n  const placeholderValues = /* @__PURE__ */ new Map();\n  _value.forEach((value, i) => {\n    if (context.children[i] && context.children[i]._value === value) {\n      newChildren.push(context.children[i]);\n      unused.delete(context.children[i]);\n    } else {\n      newChildren.push(null);\n      const indexes = placeholderValues.get(value) || [];\n      indexes.push(i);\n      placeholderValues.set(value, indexes);\n    }\n  });\n  if (unused.size && placeholderValues.size) {\n    unused.forEach((child) => {\n      if (placeholderValues.has(child._value)) {\n        const indexes = placeholderValues.get(child._value);\n        const index = indexes.shift();\n        newChildren[index] = child;\n        unused.delete(child);\n        if (!indexes.length)\n          placeholderValues.delete(child._value);\n      }\n    });\n  }\n  const emptyIndexes = [];\n  placeholderValues.forEach((indexes) => {\n    emptyIndexes.push(...indexes);\n  });\n  while (unused.size && emptyIndexes.length) {\n    const child = unused.values().next().value;\n    const index = emptyIndexes.shift();\n    if (index === void 0)\n      break;\n    newChildren[index] = child;\n    unused.delete(child);\n  }\n  emptyIndexes.forEach((index, value) => {\n    newChildren[index] = createPlaceholder({ value });\n  });\n  if (unused.size) {\n    unused.forEach((child) => {\n      if (!(\"__FKP\" in child)) {\n        const parent = child._c.parent;\n        if (!parent || isPlaceholder(parent))\n          return;\n        parent.ledger.unmerge(child);\n        child._c.parent = null;\n        child.destroy();\n      }\n    });\n  }\n  context.children = newChildren;\n}\nfunction disturb(node, context) {\n  if (context._d <= 0) {\n    context.isSettled = false;\n    node.emit(\"settled\", false, false);\n    context.settled = new Promise((resolve) => {\n      context._resolve = resolve;\n    });\n    if (node.parent)\n      node.parent?.disturb();\n  }\n  context._d++;\n  return node;\n}\nfunction calm(node, context, value) {\n  if (value !== void 0 && node.type !== \"input\") {\n    partial(context, value);\n    return commit(node, context, true, false);\n  }\n  if (context._d > 0)\n    context._d--;\n  if (context._d === 0) {\n    context.isSettled = true;\n    node.emit(\"settled\", true, false);\n    if (node.parent)\n      node.parent?.calm({ name: node.name, value: context.value });\n    if (context._resolve)\n      context._resolve(context.value);\n  }\n}\nfunction destroy(node, context) {\n  node.emit(\"destroying\", node);\n  node.store.filter(() => false);\n  if (node.parent) {\n    node.parent.remove(node);\n  }\n  deregister(node);\n  node.emit(\"destroyed\", node);\n  context._e.flush();\n  context._value = context.value = void 0;\n  for (const property in context.context) {\n    delete context.context[property];\n  }\n  context.plugins.clear();\n  context.context = null;\n}\nfunction define(node, context, definition) {\n  context.type = definition.type;\n  const clonedDef = clone(definition);\n  node.props.__propDefs = mergeProps(\n    node.props.__propDefs ?? [],\n    clonedDef?.props || []\n  );\n  clonedDef.props = node.props.__propDefs;\n  context.props.definition = clonedDef;\n  context.value = context._value = createValue({\n    type: node.type,\n    value: context.value\n  });\n  if (definition.forceTypeProp) {\n    if (node.props.type)\n      node.props.originalType = node.props.type;\n    context.props.type = definition.forceTypeProp;\n  }\n  if (definition.family) {\n    context.props.family = definition.family;\n  }\n  if (definition.features) {\n    definition.features.forEach((feature) => feature(node));\n  }\n  if (definition.props) {\n    node.addProps(definition.props);\n  }\n  node.emit(\"defined\", definition);\n}\nfunction addProps(node, context, props) {\n  const propNames = Array.isArray(props) ? props : Object.keys(props);\n  const defaults = !Array.isArray(props) ? propNames.reduce((defaults2, name) => {\n    if (\"default\" in props[name]) {\n      defaults2[name] = props[name].default;\n    }\n    return defaults2;\n  }, {}) : {};\n  if (node.props.attrs) {\n    const attrs = { ...node.props.attrs };\n    node.props._emit = false;\n    for (const attr in attrs) {\n      const camelName = camel(attr);\n      if (propNames.includes(camelName)) {\n        node.props[camelName] = attrs[attr];\n        delete attrs[attr];\n      }\n    }\n    if (!Array.isArray(props)) {\n      propNames.forEach((prop) => {\n        if (\"default\" in props[prop] && node.props[prop] === void 0) {\n          node.props[prop] = defaults[prop];\n        }\n      });\n    }\n    const initial = cloneAny(context._value);\n    node.props.initial = node.type !== \"input\" ? init(initial) : initial;\n    node.props._emit = true;\n    node.props.attrs = attrs;\n  }\n  const mergedProps = mergeProps(node.props.__propDefs ?? [], props);\n  if (node.props.definition) {\n    node.props.definition.props = mergedProps;\n  }\n  node.props.__propDefs = mergedProps;\n  node.emit(\"added-props\", props);\n  return node;\n}\nfunction toPropsObj(props) {\n  return !Array.isArray(props) ? props : props.reduce((props2, prop) => {\n    props2[prop] = {};\n    return props2;\n  }, {});\n}\nfunction mergeProps(props, newProps) {\n  if (Array.isArray(props) && Array.isArray(newProps))\n    return props.concat(newProps);\n  return extend$1(toPropsObj(props), toPropsObj(newProps));\n}\nfunction addChild(parent, parentContext, child, listIndex) {\n  if (parent.type === \"input\")\n    error(100, parent);\n  if (child.parent && child.parent !== parent) {\n    child.parent.remove(child);\n  }\n  if (!parentContext.children.includes(child)) {\n    if (listIndex !== void 0 && parent.type === \"list\") {\n      const existingNode = parentContext.children[listIndex];\n      if (existingNode && \"__FKP\" in existingNode) {\n        child._c.uid = existingNode.uid;\n        parentContext.children.splice(listIndex, 1, child);\n      } else {\n        parentContext.children.splice(listIndex, 0, child);\n      }\n      if (Array.isArray(parent.value) && parent.value.length < parentContext.children.length) {\n        parent.disturb().calm({\n          name: listIndex,\n          value: child.value,\n          from: valueInserted\n        });\n      }\n    } else {\n      parentContext.children.push(child);\n    }\n    if (!child.isSettled)\n      parent.disturb();\n  }\n  if (child.parent !== parent) {\n    child.parent = parent;\n    if (child.parent !== parent) {\n      parent.remove(child);\n      child.parent.add(child);\n      return parent;\n    }\n  } else {\n    child.use(parent.plugins);\n  }\n  commit(parent, parentContext, false);\n  parent.ledger.merge(child);\n  parent.emit(\"child\", child);\n  return parent;\n}\nfunction setParent(child, context, _property, parent) {\n  if (isNode(parent)) {\n    if (child.parent && child.parent !== parent) {\n      child.parent.remove(child);\n    }\n    context.parent = parent;\n    child.resetConfig();\n    !parent.children.includes(child) ? parent.add(child) : child.use(parent.plugins);\n    return true;\n  }\n  if (parent === null) {\n    context.parent = null;\n    return true;\n  }\n  return false;\n}\nfunction removeChild(node, context, child) {\n  const childIndex = context.children.indexOf(child);\n  if (childIndex !== -1) {\n    if (child.isSettled)\n      node.disturb();\n    context.children.splice(childIndex, 1);\n    let preserve = undefine(child.props.preserve);\n    let parent = child.parent;\n    while (preserve === void 0 && parent) {\n      preserve = undefine(parent.props.preserve);\n      parent = parent.parent;\n    }\n    if (!preserve) {\n      node.calm({\n        name: node.type === \"list\" ? childIndex : child.name,\n        value: valueRemoved\n      });\n    } else {\n      node.calm();\n    }\n    child.parent = null;\n    child.config._rmn = child;\n  }\n  node.ledger.unmerge(child);\n  node.emit(\"childRemoved\", child);\n  return node;\n}\nfunction eachChild(_node, context, callback) {\n  context.children.forEach((child) => !(\"__FKP\" in child) && callback(child));\n}\nfunction walkTree(_node, context, callback, stopIfFalse = false, skipSubtreeOnFalse = false) {\n  context.children.some((child) => {\n    if (\"__FKP\" in child)\n      return false;\n    const val = callback(child);\n    if (stopIfFalse && val === false)\n      return true;\n    if (skipSubtreeOnFalse && val === false)\n      return false;\n    return child.walk(callback, stopIfFalse, skipSubtreeOnFalse);\n  });\n}\nfunction resetConfig(node, context) {\n  const parent = node.parent || void 0;\n  context.config = createConfig2(node.config._t, parent);\n  node.walk((n) => n.resetConfig());\n}\nfunction use(node, context, plugin, run = true, library = true) {\n  if (Array.isArray(plugin) || plugin instanceof Set) {\n    plugin.forEach((p) => use(node, context, p));\n    return node;\n  }\n  if (!context.plugins.has(plugin)) {\n    if (library && typeof plugin.library === \"function\")\n      plugin.library(node);\n    if (run && plugin(node) !== false) {\n      context.plugins.add(plugin);\n      node.children.forEach((child) => child.use(plugin));\n    }\n  }\n  return node;\n}\nfunction setIndex(node, _context, _property, setIndex2) {\n  if (isNode(node.parent)) {\n    const children = node.parent.children;\n    const index = setIndex2 >= children.length ? children.length - 1 : setIndex2 < 0 ? 0 : setIndex2;\n    const oldIndex = children.indexOf(node);\n    if (oldIndex === -1)\n      return false;\n    children.splice(oldIndex, 1);\n    children.splice(index, 0, node);\n    node.parent.children = children;\n    if (node.parent.type === \"list\")\n      node.parent.disturb().calm({ name: index, value: valueMoved, from: oldIndex });\n    return true;\n  }\n  return false;\n}\nfunction getIndex(node) {\n  if (node.parent) {\n    const index = [...node.parent.children].indexOf(node);\n    return index === -1 ? node.parent.children.length : index;\n  }\n  return -1;\n}\nfunction getContext(_node, context) {\n  return context;\n}\nfunction getName(node, context) {\n  if (node.parent?.type === \"list\")\n    return node.index;\n  return context.name !== useIndex ? context.name : node.index;\n}\nfunction getAddress(node, context) {\n  return context.parent ? context.parent.address.concat([node.name]) : [node.name];\n}\nfunction getNode2(node, _context, locator) {\n  const address = typeof locator === \"string\" ? locator.split(node.config.delimiter) : locator;\n  if (!address.length)\n    return void 0;\n  const first = address[0];\n  let pointer = node.parent;\n  if (!pointer) {\n    if (String(address[0]) === String(node.name))\n      address.shift();\n    pointer = node;\n  }\n  if (first === \"$parent\")\n    address.shift();\n  while (pointer && address.length) {\n    const name = address.shift();\n    switch (name) {\n      case \"$root\":\n        pointer = node.root;\n        break;\n      case \"$parent\":\n        pointer = pointer.parent;\n        break;\n      case \"$self\":\n        pointer = node;\n        break;\n      default:\n        pointer = pointer.children.find(\n          (c) => !(\"__FKP\" in c) && String(c.name) === String(name)\n        ) || select(pointer, name);\n    }\n  }\n  return pointer || void 0;\n}\nfunction select(node, selector) {\n  const matches = String(selector).match(/^(find)\\((.*)\\)$/);\n  if (matches) {\n    const [, action, argStr] = matches;\n    const args = argStr.split(\",\").map((arg) => arg.trim());\n    switch (action) {\n      case \"find\":\n        return node.find(args[0], args[1]);\n      default:\n        return void 0;\n    }\n  }\n  return void 0;\n}\nfunction find(node, _context, searchTerm, searcher) {\n  return bfs(node, searchTerm, searcher);\n}\nfunction bfs(tree, searchValue, searchGoal = \"name\") {\n  const search = typeof searchGoal === \"string\" ? (n) => n[searchGoal] == searchValue : searchGoal;\n  const stack = [tree];\n  while (stack.length) {\n    const node = stack.shift();\n    if (\"__FKP\" in node)\n      continue;\n    if (search(node, searchValue))\n      return node;\n    stack.push(...node.children);\n  }\n  return void 0;\n}\nfunction getRoot(n) {\n  let node = n;\n  while (node.parent) {\n    node = node.parent;\n  }\n  return node;\n}\nfunction createConfig2(target = {}, parent) {\n  let node = void 0;\n  return new Proxy(target, {\n    get(...args) {\n      const prop = args[1];\n      if (prop === \"_t\")\n        return target;\n      const localValue = Reflect.get(...args);\n      if (localValue !== void 0)\n        return localValue;\n      if (parent) {\n        const parentVal = parent.config[prop];\n        if (parentVal !== void 0)\n          return parentVal;\n      }\n      if (target.rootConfig && typeof prop === \"string\") {\n        const rootValue = target.rootConfig[prop];\n        if (rootValue !== void 0)\n          return rootValue;\n      }\n      if (prop === \"delay\" && node?.type === \"input\")\n        return 20;\n      return defaultConfig[prop];\n    },\n    set(...args) {\n      const prop = args[1];\n      const value = args[2];\n      if (prop === \"_n\") {\n        node = value;\n        if (target.rootConfig)\n          target.rootConfig._add(node);\n        return true;\n      }\n      if (prop === \"_rmn\") {\n        if (target.rootConfig)\n          target.rootConfig._rm(node);\n        node = void 0;\n        return true;\n      }\n      if (!eq(target[prop], value, false)) {\n        const didSet = Reflect.set(...args);\n        if (node) {\n          node.emit(`config:${prop}`, value, false);\n          configChange(node, prop, value);\n          node.walk((n) => configChange(n, prop, value), false, true);\n        }\n        return didSet;\n      }\n      return true;\n    }\n  });\n}\nfunction text(node, _context, key, type = \"ui\") {\n  const fragment = typeof key === \"string\" ? { key, value: key, type } : key;\n  const value = node.hook.text.dispatch(fragment);\n  node.emit(\"text\", value, false);\n  return value.value;\n}\nfunction submit(node) {\n  const name = node.name;\n  do {\n    if (node.props.isForm === true)\n      break;\n    if (!node.parent)\n      error(106, name);\n    node = node.parent;\n  } while (node);\n  if (node.props.id) {\n    submitForm(node.props.id, node.props.__root);\n  }\n}\nfunction resetValue(node, _context, value) {\n  return reset(node, value);\n}\nfunction setErrors(node, _context, localErrors, childErrors) {\n  const sourceKey = `${node.name}-set`;\n  const errors = node.hook.setErrors.dispatch({ localErrors, childErrors });\n  createMessages(node, errors.localErrors, errors.childErrors).forEach(\n    (errors2) => {\n      node.store.apply(errors2, (message) => message.meta.source === sourceKey);\n    }\n  );\n  return node;\n}\nfunction clearErrors(node, _context, clearChildErrors = true, sourceKey) {\n  node.store.filter((m) => {\n    return !(sourceKey === void 0 || m.meta.source === sourceKey);\n  }, \"error\");\n  if (clearChildErrors) {\n    sourceKey = sourceKey || `${node.name}-set`;\n    node.walk((child) => {\n      child.store.filter((message) => {\n        return !(message.type === \"error\" && message.meta && message.meta.source === sourceKey);\n      });\n    });\n  }\n  return node;\n}\nfunction createProps(initial) {\n  const props = {\n    initial: typeof initial === \"object\" ? cloneAny(initial) : initial\n  };\n  let node;\n  let isEmitting = true;\n  let propDefs = {};\n  return new Proxy(props, {\n    get(...args) {\n      const [_t, prop] = args;\n      let val;\n      if (has(props, prop)) {\n        val = Reflect.get(...args);\n        if (propDefs[prop]?.boolean)\n          val = boolGetter(val);\n      } else if (node && typeof prop === \"string\" && node.config[prop] !== void 0) {\n        val = node.config[prop];\n      } else {\n        val = propDefs[prop]?.default;\n      }\n      const getter = propDefs[prop]?.getter;\n      if (propDefs[prop]?.boolean)\n        val = !!val;\n      return getter ? getter(val, node) : val;\n    },\n    set(target, property, originalValue, receiver) {\n      if (property === \"_n\") {\n        node = originalValue;\n        return true;\n      }\n      if (property === \"_emit\") {\n        isEmitting = originalValue;\n        return true;\n      }\n      let { prop, value } = node.hook.prop.dispatch({\n        prop: property,\n        value: originalValue\n      });\n      const setter = propDefs[prop]?.setter;\n      value = setter ? setter(value, node) : value;\n      if (!eq(props[prop], value, false) || typeof value === \"object\") {\n        const didSet = Reflect.set(target, prop, value, receiver);\n        if (prop === \"__propDefs\")\n          propDefs = toPropsObj(value);\n        if (isEmitting) {\n          node.emit(\"prop\", { prop, value });\n          if (typeof prop === \"string\")\n            node.emit(`prop:${prop}`, value);\n        }\n        return didSet;\n      }\n      return true;\n    }\n  });\n}\nfunction extend(node, context, property, trap2) {\n  context.traps.set(property, trap2);\n  return node;\n}\nfunction findDefinition(node, plugins) {\n  if (node.props.definition)\n    return node.define(node.props.definition);\n  for (const plugin of plugins) {\n    if (node.props.definition)\n      return;\n    if (typeof plugin.library === \"function\") {\n      plugin.library(node);\n    }\n  }\n}\nfunction createContext(options) {\n  const value = createValue(options);\n  const config = createConfig2(options.config || {}, options.parent);\n  return {\n    _d: 0,\n    _e: createEmitter(),\n    uid: Symbol(),\n    _resolve: false,\n    _tmo: false,\n    _value: value,\n    children: dedupe(options.children || []),\n    config,\n    hook: createHooks(),\n    isCreated: false,\n    isSettled: true,\n    ledger: createLedger(),\n    name: createName(options),\n    parent: options.parent || null,\n    plugins: /* @__PURE__ */ new Set(),\n    props: createProps(value),\n    settled: Promise.resolve(value),\n    store: createStore(true),\n    sync: options.sync || false,\n    traps: createTraps(),\n    type: options.type || \"input\",\n    value\n  };\n}\nfunction nodeInit(node, options) {\n  const hasInitialId = options.props?.id;\n  if (!hasInitialId)\n    delete options.props?.id;\n  node.ledger.init(node.store._n = node.props._n = node.config._n = node);\n  node.props._emit = false;\n  Object.assign(\n    node.props,\n    hasInitialId ? {} : { id: `input_${idCount++}` },\n    options.props ?? {}\n  );\n  node.props._emit = true;\n  findDefinition(\n    node,\n    /* @__PURE__ */ new Set([\n      ...options.plugins || [],\n      ...node.parent ? node.parent.plugins : []\n    ])\n  );\n  if (options.plugins) {\n    for (const plugin of options.plugins) {\n      use(node, node._c, plugin, true, false);\n    }\n  }\n  node.each((child) => node.add(child));\n  if (node.parent)\n    node.parent.add(node, options.index);\n  if (node.type === \"input\" && node.children.length)\n    error(100, node);\n  input(node, node._c, node._value, false);\n  node.store.release();\n  if (hasInitialId)\n    register(node);\n  node.emit(\"created\", node);\n  node.isCreated = true;\n  return node;\n}\nfunction createPlaceholder(options) {\n  return {\n    __FKP: true,\n    uid: Symbol(),\n    name: options?.name ?? `p_${nameCount++}`,\n    value: options?.value ?? null,\n    _value: options?.value ?? null,\n    type: options?.type ?? \"input\",\n    use: () => {\n    },\n    input(value) {\n      this._value = value;\n      this.value = value;\n      return Promise.resolve();\n    },\n    isSettled: true\n  };\n}\nfunction isPlaceholder(node) {\n  return \"__FKP\" in node;\n}\nfunction createNode(options) {\n  const ops = options || {};\n  const context = createContext(ops);\n  const node = new Proxy(context, {\n    get(...args) {\n      const [, property] = args;\n      if (property === \"__FKNode__\")\n        return true;\n      const trap2 = context.traps.get(property);\n      if (trap2 && trap2.get)\n        return trap2.get(node, context);\n      return Reflect.get(...args);\n    },\n    set(...args) {\n      const [, property, value] = args;\n      const trap2 = context.traps.get(property);\n      if (trap2 && trap2.set)\n        return trap2.set(node, context, property, value);\n      return Reflect.set(...args);\n    }\n  });\n  return nodeInit(node, ops);\n}\nfunction isDOM(node) {\n  return typeof node !== \"string\" && has(node, \"$el\");\n}\nfunction isComponent(node) {\n  return typeof node !== \"string\" && has(node, \"$cmp\");\n}\nfunction isConditional(node) {\n  if (!node || typeof node === \"string\")\n    return false;\n  return has(node, \"if\") && has(node, \"then\");\n}\nfunction isSugar(node) {\n  return typeof node !== \"string\" && \"$formkit\" in node;\n}\nfunction sugar(node) {\n  if (typeof node === \"string\") {\n    return {\n      $el: \"text\",\n      children: node\n    };\n  }\n  if (isSugar(node)) {\n    const {\n      $formkit: type,\n      for: iterator,\n      if: condition,\n      children,\n      bind,\n      ...props\n    } = node;\n    return Object.assign(\n      {\n        $cmp: \"FormKit\",\n        props: { ...props, type }\n      },\n      condition ? { if: condition } : {},\n      iterator ? { for: iterator } : {},\n      children ? { children } : {},\n      bind ? { bind } : {}\n    );\n  }\n  return node;\n}\nfunction compile(expr) {\n  let provideTokens;\n  const requirements = /* @__PURE__ */ new Set();\n  const x = function expand(operand, tokens) {\n    return typeof operand === \"function\" ? operand(tokens) : operand;\n  };\n  const operatorRegistry = [\n    {\n      \"&&\": (l, r, t) => x(l, t) && x(r, t),\n      \"||\": (l, r, t) => x(l, t) || x(r, t)\n    },\n    {\n      \"===\": (l, r, t) => !!(x(l, t) === x(r, t)),\n      \"!==\": (l, r, t) => !!(x(l, t) !== x(r, t)),\n      \"==\": (l, r, t) => !!(x(l, t) == x(r, t)),\n      \"!=\": (l, r, t) => !!(x(l, t) != x(r, t)),\n      \">=\": (l, r, t) => !!(x(l, t) >= x(r, t)),\n      \"<=\": (l, r, t) => !!(x(l, t) <= x(r, t)),\n      \">\": (l, r, t) => !!(x(l, t) > x(r, t)),\n      \"<\": (l, r, t) => !!(x(l, t) < x(r, t))\n    },\n    {\n      \"+\": (l, r, t) => x(l, t) + x(r, t),\n      \"-\": (l, r, t) => x(l, t) - x(r, t)\n    },\n    {\n      \"*\": (l, r, t) => x(l, t) * x(r, t),\n      \"/\": (l, r, t) => x(l, t) / x(r, t),\n      \"%\": (l, r, t) => x(l, t) % x(r, t)\n    }\n  ];\n  const operatorSymbols = operatorRegistry.reduce((s, g) => {\n    return s.concat(Object.keys(g));\n  }, []);\n  const operatorChars = new Set(operatorSymbols.map((key) => key.charAt(0)));\n  function getOp(symbols, char, p, expression) {\n    const candidates = symbols.filter((s) => s.startsWith(char));\n    if (!candidates.length)\n      return false;\n    return candidates.find((symbol) => {\n      if (expression.length >= p + symbol.length) {\n        const nextChars = expression.substring(p, p + symbol.length);\n        if (nextChars === symbol)\n          return symbol;\n      }\n      return false;\n    });\n  }\n  function getStep(p, expression, direction = 1) {\n    let next = direction ? expression.substring(p + 1).trim() : expression.substring(0, p).trim();\n    if (!next.length)\n      return -1;\n    if (!direction) {\n      const reversed = next.split(\"\").reverse();\n      const start = reversed.findIndex((char2) => operatorChars.has(char2));\n      next = reversed.slice(start).join(\"\");\n    }\n    const char = next[0];\n    return operatorRegistry.findIndex((operators) => {\n      const symbols = Object.keys(operators);\n      return !!getOp(symbols, char, 0, next);\n    });\n  }\n  function getTail(pos, expression) {\n    let tail = \"\";\n    const length = expression.length;\n    let depth = 0;\n    for (let p = pos; p < length; p++) {\n      const char = expression.charAt(p);\n      if (char === \"(\") {\n        depth++;\n      } else if (char === \")\") {\n        depth--;\n      } else if (depth === 0 && char === \" \") {\n        continue;\n      }\n      if (depth === 0 && getOp(operatorSymbols, char, p, expression)) {\n        return [tail, p - 1];\n      } else {\n        tail += char;\n      }\n    }\n    return [tail, expression.length - 1];\n  }\n  function parseLogicals(expression, step = 0) {\n    const operators = operatorRegistry[step];\n    const length = expression.length;\n    const symbols = Object.keys(operators);\n    let depth = 0;\n    let quote = false;\n    let op = null;\n    let operand = \"\";\n    let left = null;\n    let operation;\n    let lastChar = \"\";\n    let char = \"\";\n    let parenthetical = \"\";\n    let parenQuote = \"\";\n    let startP = 0;\n    const addTo = (depth2, char2) => {\n      depth2 ? parenthetical += char2 : operand += char2;\n    };\n    for (let p = 0; p < length; p++) {\n      lastChar = char;\n      char = expression.charAt(p);\n      if ((char === \"'\" || char === '\"') && lastChar !== \"\\\\\" && (depth === 0 && !quote || depth && !parenQuote)) {\n        if (depth) {\n          parenQuote = char;\n        } else {\n          quote = char;\n        }\n        addTo(depth, char);\n        continue;\n      } else if (quote && (char !== quote || lastChar === \"\\\\\") || parenQuote && (char !== parenQuote || lastChar === \"\\\\\")) {\n        addTo(depth, char);\n        continue;\n      } else if (quote === char) {\n        quote = false;\n        addTo(depth, char);\n        continue;\n      } else if (parenQuote === char) {\n        parenQuote = false;\n        addTo(depth, char);\n        continue;\n      } else if (char === \" \") {\n        continue;\n      } else if (char === \"(\") {\n        if (depth === 0) {\n          startP = p;\n        } else {\n          parenthetical += char;\n        }\n        depth++;\n      } else if (char === \")\") {\n        depth--;\n        if (depth === 0) {\n          const fn = typeof operand === \"string\" && operand.startsWith(\"$\") ? operand : void 0;\n          const hasTail = fn && expression.charAt(p + 1) === \".\";\n          let tail = \"\";\n          if (hasTail) {\n            [tail, p] = getTail(p + 2, expression);\n          }\n          const lStep = op ? step : getStep(startP, expression, 0);\n          const rStep = getStep(p, expression);\n          if (lStep === -1 && rStep === -1) {\n            operand = evaluate(parenthetical, -1, fn, tail);\n            if (typeof operand === \"string\")\n              operand = parenthetical;\n          } else if (op && (lStep >= rStep || rStep === -1) && step === lStep) {\n            left = op.bind(null, evaluate(parenthetical, -1, fn, tail));\n            op = null;\n            operand = \"\";\n          } else if (rStep > lStep && step === rStep) {\n            operand = evaluate(parenthetical, -1, fn, tail);\n          } else {\n            operand += `(${parenthetical})${hasTail ? `.${tail}` : \"\"}`;\n          }\n          parenthetical = \"\";\n        } else {\n          parenthetical += char;\n        }\n      } else if (depth === 0 && (operation = getOp(symbols, char, p, expression))) {\n        if (p === 0) {\n          error(103, [operation, expression]);\n        }\n        p += operation.length - 1;\n        if (p === expression.length - 1) {\n          error(104, [operation, expression]);\n        }\n        if (!op) {\n          if (left) {\n            op = operators[operation].bind(null, evaluate(left, step));\n            left = null;\n          } else {\n            op = operators[operation].bind(null, evaluate(operand, step));\n            operand = \"\";\n          }\n        } else if (operand) {\n          left = op.bind(null, evaluate(operand, step));\n          op = operators[operation].bind(null, left);\n          operand = \"\";\n        }\n        continue;\n      } else {\n        addTo(depth, char);\n      }\n    }\n    if (operand && op) {\n      op = op.bind(null, evaluate(operand, step));\n    }\n    op = !op && left ? left : op;\n    if (!op && operand) {\n      op = (v, t) => {\n        return typeof v === \"function\" ? v(t) : v;\n      };\n      op = op.bind(null, evaluate(operand, step));\n    }\n    if (!op && !operand) {\n      error(105, expression);\n    }\n    return op;\n  }\n  function evaluate(operand, step, fnToken, tail) {\n    if (fnToken) {\n      const fn = evaluate(fnToken, operatorRegistry.length);\n      let userFuncReturn;\n      let tailCall = tail ? compile(`$${tail}`) : false;\n      if (typeof fn === \"function\") {\n        const args = parseArgs(String(operand)).map(\n          (arg) => evaluate(arg, -1)\n        );\n        return (tokens) => {\n          const userFunc = fn(tokens);\n          if (typeof userFunc !== \"function\") {\n            warn(150, fnToken);\n            return userFunc;\n          }\n          userFuncReturn = userFunc(\n            ...args.map(\n              (arg) => typeof arg === \"function\" ? arg(tokens) : arg\n            )\n          );\n          if (tailCall) {\n            tailCall = tailCall.provide((subTokens) => {\n              const rootTokens = provideTokens(subTokens);\n              const t = subTokens.reduce(\n                (tokenSet, token3) => {\n                  const isTail = token3 === tail || tail?.startsWith(`${token3}(`);\n                  if (isTail) {\n                    const value = getAt(userFuncReturn, token3);\n                    tokenSet[token3] = () => value;\n                  } else {\n                    tokenSet[token3] = rootTokens[token3];\n                  }\n                  return tokenSet;\n                },\n                {}\n              );\n              return t;\n            });\n          }\n          return tailCall ? tailCall() : userFuncReturn;\n        };\n      }\n    } else if (typeof operand === \"string\") {\n      if (operand === \"true\")\n        return true;\n      if (operand === \"false\")\n        return false;\n      if (operand === \"undefined\")\n        return void 0;\n      if (isQuotedString(operand))\n        return rmEscapes(operand.substring(1, operand.length - 1));\n      if (!isNaN(+operand))\n        return Number(operand);\n      if (step < operatorRegistry.length - 1) {\n        return parseLogicals(operand, step + 1);\n      } else {\n        if (operand.startsWith(\"$\")) {\n          const cleaned = operand.substring(1);\n          requirements.add(cleaned);\n          return function getToken(tokens) {\n            return cleaned in tokens ? tokens[cleaned]() : void 0;\n          };\n        }\n        return operand;\n      }\n    }\n    return operand;\n  }\n  const compiled = parseLogicals(\n    expr.startsWith(\"$:\") ? expr.substring(2) : expr\n  );\n  const reqs = Array.from(requirements);\n  function provide(callback) {\n    provideTokens = callback;\n    return Object.assign(\n      // @ts-ignore - @rollup/plugin-typescript doesn't like this\n      compiled.bind(null, callback(reqs)),\n      { provide }\n    );\n  }\n  return Object.assign(compiled, {\n    provide\n  });\n}\n\n// packages/core/src/classes.ts\nfunction createClasses(propertyKey, node, sectionClassList) {\n  if (!sectionClassList)\n    return {};\n  if (typeof sectionClassList === \"string\") {\n    const classKeys = sectionClassList.split(\" \");\n    return classKeys.reduce(\n      (obj, key) => Object.assign(obj, { [key]: true }),\n      {}\n    );\n  } else if (typeof sectionClassList === \"function\") {\n    return createClasses(\n      propertyKey,\n      node,\n      sectionClassList(node, propertyKey)\n    );\n  }\n  return sectionClassList;\n}\nfunction generateClassList(node, property, ...args) {\n  const combinedClassList = args.reduce((finalClassList, currentClassList) => {\n    if (!currentClassList)\n      return handleNegativeClasses(finalClassList);\n    const { $reset, ...classList } = currentClassList;\n    if ($reset) {\n      return handleNegativeClasses(classList);\n    }\n    return handleNegativeClasses(Object.assign(finalClassList, classList));\n  }, {});\n  return Object.keys(\n    node.hook.classes.dispatch({ property, classes: combinedClassList }).classes\n  ).filter((key) => combinedClassList[key]).join(\" \") || null;\n}\nfunction handleNegativeClasses(classList) {\n  const removalToken = \"$remove:\";\n  let hasNegativeClassValue = false;\n  const applicableClasses = Object.keys(classList).filter((className) => {\n    if (classList[className] && className.startsWith(removalToken)) {\n      hasNegativeClassValue = true;\n    }\n    return classList[className];\n  });\n  if (applicableClasses.length > 1 && hasNegativeClassValue) {\n    const negativeClasses = applicableClasses.filter((className) => className.startsWith(removalToken));\n    negativeClasses.map((negativeClass) => {\n      const targetClass = negativeClass.substring(removalToken.length);\n      classList[targetClass] = false;\n      classList[negativeClass] = false;\n    });\n  }\n  return classList;\n}\n\n// packages/core/src/setErrors.ts\nfunction setErrors2(id, localErrors, childErrors) {\n  const node = getNode(id);\n  if (node) {\n    node.setErrors(localErrors, childErrors);\n  } else {\n    warn(651, id);\n  }\n}\nfunction clearErrors2(id, clearChildren = true) {\n  const node = getNode(id);\n  if (node) {\n    node.clearErrors(clearChildren);\n  } else {\n    warn(652, id);\n  }\n}\n\n// packages/core/src/index.ts\nvar FORMKIT_VERSION = \"1.5.9\";\n\nexport { FORMKIT_VERSION, bfs, clearErrors2 as clearErrors, compile, createClasses, createConfig, createMessage, createNode, createPlaceholder, createValue, deregister, error, errorHandler, generateClassList, getNode, isComponent, isConditional, isDOM, isList, isNode, isPlaceholder, isSugar, names, register, reset, resetCount, resetRegistry, setErrors2 as setErrors, submitForm, sugar, use, useIndex, valueInserted, valueMoved, valueRemoved, warn, warningHandler, watchRegistry };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","import { has } from '@formkit/utils';\nimport { isNode } from '@formkit/core';\n\n// packages/observer/src/index.ts\nvar revokedObservers = /* @__PURE__ */ new WeakSet();\nfunction createObserver(node, dependencies) {\n  const deps = dependencies || Object.assign(/* @__PURE__ */ new Map(), { active: false });\n  const receipts = /* @__PURE__ */ new Map();\n  const addDependency = function(event) {\n    if (!deps.active)\n      return;\n    if (!deps.has(node))\n      deps.set(node, /* @__PURE__ */ new Set());\n    deps.get(node)?.add(event);\n  };\n  const observeProps = function(props) {\n    return new Proxy(props, {\n      get(...args) {\n        typeof args[1] === \"string\" && addDependency(`prop:${args[1]}`);\n        return Reflect.get(...args);\n      }\n    });\n  };\n  const observeLedger = function(ledger) {\n    return new Proxy(ledger, {\n      get(...args) {\n        if (args[1] === \"value\") {\n          return (key) => {\n            addDependency(`count:${key}`);\n            return ledger.value(key);\n          };\n        }\n        return Reflect.get(...args);\n      }\n    });\n  };\n  const observe = function(value, property) {\n    if (isNode(value)) {\n      return createObserver(value, deps);\n    }\n    if (property === \"value\")\n      addDependency(\"commit\");\n    if (property === \"_value\")\n      addDependency(\"input\");\n    if (property === \"props\")\n      return observeProps(value);\n    if (property === \"ledger\")\n      return observeLedger(value);\n    if (property === \"children\") {\n      addDependency(\"child\");\n      addDependency(\"childRemoved\");\n    }\n    return value;\n  };\n  const {\n    proxy: observed,\n    revoke\n  } = Proxy.revocable(node, {\n    get(...args) {\n      switch (args[1]) {\n        case \"_node\":\n          return node;\n        case \"deps\":\n          return deps;\n        case \"watch\":\n          return (block, after, pos) => watch(observed, block, after, pos);\n        case \"observe\":\n          return () => {\n            const old = new Map(deps);\n            deps.clear();\n            deps.active = true;\n            return old;\n          };\n        case \"stopObserve\":\n          return () => {\n            const newDeps = new Map(deps);\n            deps.active = false;\n            return newDeps;\n          };\n        case \"receipts\":\n          return receipts;\n        case \"kill\":\n          return () => {\n            removeListeners(receipts);\n            revokedObservers.add(args[2]);\n            revoke();\n            return void 0;\n          };\n      }\n      const value = Reflect.get(...args);\n      if (typeof value === \"function\") {\n        return (...subArgs) => {\n          const subValue = value(...subArgs);\n          return observe(subValue, args[1]);\n        };\n      }\n      return observe(value, args[1]);\n    }\n  });\n  return observed;\n}\nfunction applyListeners(node, [toAdd, toRemove], callback, pos) {\n  toAdd.forEach((events, depNode) => {\n    events.forEach((event) => {\n      node.receipts.has(depNode) || node.receipts.set(depNode, {});\n      const events2 = node.receipts.get(depNode) ?? {};\n      events2[event] = events2[event] ?? [];\n      events2[event].push(depNode.on(event, callback, pos));\n      node.receipts.set(depNode, events2);\n    });\n  });\n  toRemove.forEach((events, depNode) => {\n    events.forEach((event) => {\n      if (node.receipts.has(depNode)) {\n        const nodeReceipts = node.receipts.get(depNode);\n        if (nodeReceipts && has(nodeReceipts, event)) {\n          nodeReceipts[event].map(depNode.off);\n          delete nodeReceipts[event];\n          node.receipts.set(depNode, nodeReceipts);\n        }\n      }\n    });\n  });\n}\nfunction removeListeners(receipts) {\n  receipts.forEach((events, node) => {\n    for (const event in events) {\n      events[event].map(node.off);\n    }\n  });\n  receipts.clear();\n}\nfunction watch(node, block, after, pos) {\n  const doAfterObservation = (res2) => {\n    const newDeps = node.stopObserve();\n    applyListeners(\n      node,\n      diffDeps(oldDeps, newDeps),\n      () => watch(node, block, after, pos),\n      pos\n    );\n    if (after)\n      after(res2);\n  };\n  const oldDeps = new Map(node.deps);\n  node.observe();\n  const res = block(node);\n  if (res instanceof Promise)\n    res.then((val) => doAfterObservation(val));\n  else\n    doAfterObservation(res);\n}\nfunction diffDeps(previous, current) {\n  const toAdd = /* @__PURE__ */ new Map();\n  const toRemove = /* @__PURE__ */ new Map();\n  current.forEach((events, node) => {\n    if (!previous.has(node)) {\n      toAdd.set(node, events);\n    } else {\n      const eventsToAdd = /* @__PURE__ */ new Set();\n      const previousEvents = previous.get(node);\n      events.forEach(\n        (event) => !previousEvents?.has(event) && eventsToAdd.add(event)\n      );\n      toAdd.set(node, eventsToAdd);\n    }\n  });\n  previous.forEach((events, node) => {\n    if (!current.has(node)) {\n      toRemove.set(node, events);\n    } else {\n      const eventsToRemove = /* @__PURE__ */ new Set();\n      const newEvents = current.get(node);\n      events.forEach(\n        (event) => !newEvents?.has(event) && eventsToRemove.add(event)\n      );\n      toRemove.set(node, eventsToRemove);\n    }\n  });\n  return [toAdd, toRemove];\n}\nfunction isKilled(node) {\n  return revokedObservers.has(node);\n}\n\nexport { applyListeners, createObserver, diffDeps, isKilled, removeListeners };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","import { has, regexForFormat, eq, empty } from '@formkit/utils';\n\n// packages/rules/src/accepted.ts\nvar accepted = function accepted2({ value }) {\n  return [\"yes\", \"on\", \"1\", 1, true, \"true\"].includes(value);\n};\naccepted.skipEmpty = false;\nvar accepted_default = accepted;\n\n// packages/rules/src/date_after.ts\nvar date_after = function({ value }, compare = false) {\n  const timestamp = Date.parse(compare || /* @__PURE__ */ new Date());\n  const fieldValue = Date.parse(String(value));\n  return isNaN(fieldValue) ? false : fieldValue > timestamp;\n};\nvar date_after_default = date_after;\nvar alpha = function({ value }, set = \"default\") {\n  const sets = {\n    default: /^\\p{L}+$/u,\n    latin: /^[a-z]+$/i\n  };\n  const selectedSet = has(sets, set) ? set : \"default\";\n  return sets[selectedSet].test(String(value));\n};\nvar alpha_default = alpha;\nvar alpha_spaces = function({ value }, set = \"default\") {\n  const sets = {\n    default: /^[\\p{L} ]+$/u,\n    latin: /^[a-z ]+$/i\n  };\n  const selectedSet = has(sets, set) ? set : \"default\";\n  return sets[selectedSet].test(String(value));\n};\nvar alpha_spaces_default = alpha_spaces;\nvar alphanumeric = function({ value }, set = \"default\") {\n  const sets = {\n    default: /^[0-9\\p{L}]+$/u,\n    latin: /^[0-9a-z]+$/i\n  };\n  const selectedSet = has(sets, set) ? set : \"default\";\n  return sets[selectedSet].test(String(value));\n};\nvar alphanumeric_default = alphanumeric;\n\n// packages/rules/src/date_before.ts\nvar date_before = function({ value }, compare = false) {\n  const timestamp = Date.parse(compare || /* @__PURE__ */ new Date());\n  const fieldValue = Date.parse(String(value));\n  return isNaN(fieldValue) ? false : fieldValue < timestamp;\n};\nvar date_before_default = date_before;\n\n// packages/rules/src/between.ts\nvar between = function between2({ value }, from, to) {\n  if (!isNaN(value) && !isNaN(from) && !isNaN(to)) {\n    const val = 1 * value;\n    from = Number(from);\n    to = Number(to);\n    const [a, b] = from <= to ? [from, to] : [to, from];\n    return val >= 1 * a && val <= 1 * b;\n  }\n  return false;\n};\nvar between_default = between;\n\n// packages/rules/src/confirm.ts\nvar hasConfirm = /(_confirm(?:ed)?)$/;\nvar confirm = function confirm2(node, address, comparison = \"loose\") {\n  if (!address) {\n    address = hasConfirm.test(node.name) ? node.name.replace(hasConfirm, \"\") : `${node.name}_confirm`;\n  }\n  const foreignValue = node.at(address)?.value;\n  return comparison === \"strict\" ? node.value === foreignValue : node.value == foreignValue;\n};\nvar confirm_default = confirm;\nvar contains_alpha = function({ value }, set = \"default\") {\n  const sets = {\n    default: /\\p{L}/u,\n    latin: /[a-z]/i\n  };\n  const selectedSet = has(sets, set) ? set : \"default\";\n  return sets[selectedSet].test(String(value));\n};\nvar contains_alpha_default = contains_alpha;\nvar contains_alpha_spaces = function({ value }, set = \"default\") {\n  const sets = {\n    default: /[\\p{L} ]/u,\n    latin: /[a-z ]/i\n  };\n  const selectedSet = has(sets, set) ? set : \"default\";\n  return sets[selectedSet].test(String(value));\n};\nvar contains_alpha_spaces_default = contains_alpha_spaces;\nvar contains_alphanumeric = function({ value }, set = \"default\") {\n  const sets = {\n    default: /[0-9\\p{L}]/u,\n    latin: /[0-9a-z]/i\n  };\n  const selectedSet = has(sets, set) ? set : \"default\";\n  return sets[selectedSet].test(String(value));\n};\nvar contains_alphanumeric_default = contains_alphanumeric;\nvar contains_lowercase = function({ value }, set = \"default\") {\n  const sets = {\n    default: /\\p{Ll}/u,\n    latin: /[a-z]/\n  };\n  const selectedSet = has(sets, set) ? set : \"default\";\n  return sets[selectedSet].test(String(value));\n};\nvar contains_lowercase_default = contains_lowercase;\n\n// packages/rules/src/contains_numeric.ts\nvar contains_numeric = function number({ value }) {\n  return /[0-9]/.test(String(value));\n};\nvar contains_numeric_default = contains_numeric;\n\n// packages/rules/src/contains_symbol.ts\nvar contains_symbol = function({ value }) {\n  return /[!-/:-@[-`{-~]/.test(String(value));\n};\nvar contains_symbol_default = contains_symbol;\nvar contains_uppercase = function({ value }, set = \"default\") {\n  const sets = {\n    default: /\\p{Lu}/u,\n    latin: /[A-Z]/\n  };\n  const selectedSet = has(sets, set) ? set : \"default\";\n  return sets[selectedSet].test(String(value));\n};\nvar contains_uppercase_default = contains_uppercase;\n\n// packages/rules/src/date_between.ts\nvar date_between = function date_between2({ value }, dateA, dateB) {\n  dateA = dateA instanceof Date ? dateA.getTime() : Date.parse(dateA);\n  dateB = dateB instanceof Date ? dateB.getTime() : Date.parse(dateB);\n  const compareTo = value instanceof Date ? value.getTime() : Date.parse(String(value));\n  if (dateA && !dateB) {\n    dateB = dateA;\n    dateA = Date.now();\n  } else if (!dateA || !compareTo) {\n    return false;\n  }\n  return compareTo >= dateA && compareTo <= dateB;\n};\nvar date_between_default = date_between;\nvar date_format = function date({ value }, format) {\n  if (format && typeof format === \"string\") {\n    return regexForFormat(format).test(String(value));\n  }\n  return !isNaN(Date.parse(String(value)));\n};\nvar date_format_default = date_format;\n\n// packages/rules/src/email.ts\nvar email = function email2({ value }) {\n  const isEmail = /^(([^<>()\\[\\]\\.,;:\\s@\\\"]+(\\.[^<>()\\[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/i;\n  return isEmail.test(String(value));\n};\nvar email_default = email;\n\n// packages/rules/src/ends_with.ts\nvar ends_with = function ends_with2({ value }, ...stack) {\n  if (typeof value === \"string\" && stack.length) {\n    return stack.some((item) => {\n      return value.endsWith(item);\n    });\n  } else if (typeof value === \"string\" && stack.length === 0) {\n    return true;\n  }\n  return false;\n};\nvar ends_with_default = ends_with;\nvar is = function is2({ value }, ...stack) {\n  return stack.some((item) => {\n    if (typeof item === \"object\") {\n      return eq(item, value);\n    }\n    return item == value;\n  });\n};\nvar is_default = is;\n\n// packages/rules/src/length.ts\nvar length = function length2({ value }, first = 0, second = Infinity) {\n  first = parseInt(first);\n  second = isNaN(parseInt(second)) ? Infinity : parseInt(second);\n  const min3 = first <= second ? first : second;\n  const max3 = second >= first ? second : first;\n  if (typeof value === \"string\" || Array.isArray(value)) {\n    return value.length >= min3 && value.length <= max3;\n  } else if (value && typeof value === \"object\") {\n    const length3 = Object.keys(value).length;\n    return length3 >= min3 && length3 <= max3;\n  }\n  return false;\n};\nvar length_default = length;\nvar lowercase = function({ value }, set = \"default\") {\n  const sets = {\n    default: /^\\p{Ll}+$/u,\n    allow_non_alpha: /^[0-9\\p{Ll}!-/:-@[-`{-~]+$/u,\n    allow_numeric: /^[0-9\\p{Ll}]+$/u,\n    allow_numeric_dashes: /^[0-9\\p{Ll}-]+$/u,\n    latin: /^[a-z]+$/\n  };\n  const selectedSet = has(sets, set) ? set : \"default\";\n  return sets[selectedSet].test(String(value));\n};\nvar lowercase_default = lowercase;\n\n// packages/rules/src/matches.ts\nvar matches = function matches2({ value }, ...stack) {\n  return stack.some((pattern) => {\n    if (typeof pattern === \"string\" && pattern.substr(0, 1) === \"/\" && pattern.substr(-1) === \"/\") {\n      pattern = new RegExp(pattern.substr(1, pattern.length - 2));\n    }\n    if (pattern instanceof RegExp) {\n      return pattern.test(String(value));\n    }\n    return pattern === value;\n  });\n};\nvar matches_default = matches;\n\n// packages/rules/src/max.ts\nvar max = function max2({ value }, maximum = 10) {\n  if (Array.isArray(value)) {\n    return value.length <= maximum;\n  }\n  return Number(value) <= Number(maximum);\n};\nvar max_default = max;\n\n// packages/rules/src/min.ts\nvar min = function min2({ value }, minimum = 1) {\n  if (Array.isArray(value)) {\n    return value.length >= minimum;\n  }\n  return Number(value) >= Number(minimum);\n};\nvar min_default = min;\nvar not = function not2({ value }, ...stack) {\n  return !stack.some((item) => {\n    if (typeof item === \"object\") {\n      return eq(item, value);\n    }\n    return item === value;\n  });\n};\nvar not_default = not;\n\n// packages/rules/src/number.ts\nvar number2 = function number3({ value }) {\n  return !isNaN(value);\n};\nvar number_default = number2;\nvar require_one = function(node, ...inputNames) {\n  if (!empty(node.value))\n    return true;\n  const values = inputNames.map((name) => node.at(name)?.value);\n  return values.some((value) => !empty(value));\n};\nrequire_one.skipEmpty = false;\nvar require_one_default = require_one;\nvar required = function required2({ value }, action = \"default\") {\n  return action === \"trim\" && typeof value === \"string\" ? !empty(value.trim()) : !empty(value);\n};\nrequired.skipEmpty = false;\nvar required_default = required;\n\n// packages/rules/src/starts_with.ts\nvar starts_with = function starts_with2({ value }, ...stack) {\n  if (typeof value === \"string\" && stack.length) {\n    return stack.some((item) => {\n      return value.startsWith(item);\n    });\n  } else if (typeof value === \"string\" && stack.length === 0) {\n    return true;\n  }\n  return false;\n};\nvar starts_with_default = starts_with;\n\n// packages/rules/src/symbol.ts\nvar symbol = function({ value }) {\n  return /^[!-/:-@[-`{-~]+$/.test(String(value));\n};\nvar symbol_default = symbol;\nvar uppercase = function({ value }, set = \"default\") {\n  const sets = {\n    default: /^\\p{Lu}+$/u,\n    latin: /^[A-Z]+$/\n  };\n  const selectedSet = has(sets, set) ? set : \"default\";\n  return sets[selectedSet].test(String(value));\n};\nvar uppercase_default = uppercase;\n\n// packages/rules/src/url.ts\nvar url = function url2({ value }, ...stack) {\n  try {\n    const protocols = stack.length ? stack : [\"http:\", \"https:\"];\n    const url3 = new URL(String(value));\n    return protocols.includes(url3.protocol);\n  } catch {\n    return false;\n  }\n};\nvar url_default = url;\n\nexport { accepted_default as accepted, alpha_default as alpha, alpha_spaces_default as alpha_spaces, alphanumeric_default as alphanumeric, between_default as between, confirm_default as confirm, contains_alpha_default as contains_alpha, contains_alpha_spaces_default as contains_alpha_spaces, contains_alphanumeric_default as contains_alphanumeric, contains_lowercase_default as contains_lowercase, contains_numeric_default as contains_numeric, contains_symbol_default as contains_symbol, contains_uppercase_default as contains_uppercase, date_after_default as date_after, date_before_default as date_before, date_between_default as date_between, date_format_default as date_format, email_default as email, ends_with_default as ends_with, is_default as is, length_default as length, lowercase_default as lowercase, matches_default as matches, max_default as max, min_default as min, not_default as not, number_default as number, require_one_default as require_one, required_default as required, starts_with_default as starts_with, symbol_default as symbol, uppercase_default as uppercase, url_default as url };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","import { createMessage } from '@formkit/core';\nimport { createObserver, removeListeners, isKilled, applyListeners, diffDeps } from '@formkit/observer';\nimport { cloneAny, token, eq, empty, clone, has } from '@formkit/utils';\n\n// packages/validation/src/validation.ts\nvar validatingMessage = createMessage({\n  type: \"state\",\n  blocking: true,\n  visible: false,\n  value: true,\n  key: \"validating\"\n});\nfunction createValidationPlugin(baseRules = {}) {\n  return function validationPlugin(node) {\n    let propRules = cloneAny(node.props.validationRules || {});\n    let availableRules = { ...baseRules, ...propRules };\n    let observedNode = createObserver(node);\n    const state = { input: token(), rerun: null, isPassing: true };\n    let validation = cloneAny(node.props.validation);\n    node.on(\"prop:validation\", ({ payload }) => reboot(payload, propRules));\n    node.on(\n      \"prop:validationRules\",\n      ({ payload }) => reboot(validation, payload)\n    );\n    function reboot(newValidation, newRules) {\n      if (eq(Object.keys(propRules || {}), Object.keys(newRules || {})) && eq(validation, newValidation))\n        return;\n      propRules = cloneAny(newRules);\n      validation = cloneAny(newValidation);\n      availableRules = { ...baseRules, ...propRules };\n      removeListeners(observedNode.receipts);\n      node.props.parsedRules?.forEach((validation2) => {\n        validation2.messageObserver = validation2.messageObserver?.kill();\n      });\n      node.store.filter(() => false, \"validation\");\n      node.props.parsedRules = parseRules(newValidation, availableRules);\n      observedNode.kill();\n      observedNode = createObserver(node);\n      validate(observedNode, node.props.parsedRules, state);\n    }\n    node.props.parsedRules = parseRules(validation, availableRules);\n    validate(observedNode, node.props.parsedRules, state);\n  };\n}\nfunction validate(node, validations, state) {\n  if (isKilled(node))\n    return;\n  state.input = token();\n  state.isPassing = true;\n  node.store.filter((message) => !message.meta.removeImmediately, \"validation\");\n  validations.forEach(\n    (validation) => validation.debounce && clearTimeout(validation.timer)\n  );\n  if (validations.length) {\n    node.store.set(validatingMessage);\n    run(0, validations, node, state, false, () => {\n      node.store.remove(validatingMessage.key);\n    });\n  }\n}\nfunction run(current, validations, node, state, removeImmediately, complete) {\n  const validation = validations[current];\n  if (!validation)\n    return complete();\n  const currentRun = state.input;\n  validation.state = null;\n  function next(async, result) {\n    state.isPassing = state.isPassing && !!result;\n    validation.queued = false;\n    const newDeps = node.stopObserve();\n    applyListeners(\n      node,\n      diffDeps(validation.deps, newDeps),\n      function revalidate() {\n        try {\n          node.store.set(validatingMessage);\n        } catch (e) {\n        }\n        validation.queued = true;\n        if (state.rerun)\n          clearTimeout(state.rerun);\n        state.rerun = setTimeout(\n          validate,\n          0,\n          node,\n          validations,\n          state\n        );\n      },\n      \"unshift\"\n      // We want these listeners to run before other events are emitted so the 'state.validating' will be reliable.\n    );\n    validation.deps = newDeps;\n    if (state.input === currentRun) {\n      validation.state = result;\n      if (result === false) {\n        createFailedMessage(node, validation, removeImmediately || async);\n      } else {\n        removeMessage(node, validation);\n      }\n      if (validations.length > current + 1) {\n        run(\n          current + 1,\n          validations,\n          node,\n          state,\n          removeImmediately || async,\n          complete\n        );\n      } else {\n        complete();\n      }\n    }\n  }\n  if ((!empty(node.value) || !validation.skipEmpty) && (state.isPassing || validation.force)) {\n    if (validation.queued) {\n      runRule(validation, node, (result) => {\n        result instanceof Promise ? result.then((r) => next(true, r)) : next(false, result);\n      });\n    } else {\n      run(current + 1, validations, node, state, removeImmediately, complete);\n    }\n  } else {\n    if (empty(node.value) && validation.skipEmpty && state.isPassing) {\n      node.observe();\n      node.value;\n      next(false, state.isPassing);\n    } else {\n      next(false, null);\n    }\n  }\n}\nfunction runRule(validation, node, after) {\n  if (validation.debounce) {\n    validation.timer = setTimeout(() => {\n      node.observe();\n      after(validation.rule(node, ...validation.args));\n    }, validation.debounce);\n  } else {\n    node.observe();\n    after(validation.rule(node, ...validation.args));\n  }\n}\nfunction removeMessage(node, validation) {\n  const key = `rule_${validation.name}`;\n  if (validation.messageObserver) {\n    validation.messageObserver = validation.messageObserver.kill();\n  }\n  if (has(node.store, key)) {\n    node.store.remove(key);\n  }\n}\nfunction createFailedMessage(node, validation, removeImmediately) {\n  if (isKilled(node))\n    return;\n  if (!validation.messageObserver) {\n    validation.messageObserver = createObserver(node._node);\n  }\n  validation.messageObserver.watch(\n    (node2) => {\n      const i18nArgs = createI18nArgs(\n        node2,\n        validation\n      );\n      return i18nArgs;\n    },\n    (i18nArgs) => {\n      const customMessage = createCustomMessage(node, validation, i18nArgs);\n      const message = createMessage({\n        blocking: validation.blocking,\n        key: `rule_${validation.name}`,\n        meta: {\n          /**\n           * Use this key instead of the message root key to produce i18n validation\n           * messages.\n           */\n          messageKey: validation.name,\n          /**\n           * For messages that were created *by or after* a debounced or async\n           * validation rule — we make note of it so we can immediately remove them\n           * as soon as the next commit happens.\n           */\n          removeImmediately,\n          /**\n           * Determines if this message should be passed to localization.\n           */\n          localize: !customMessage,\n          /**\n           * The arguments that will be passed to the validation rules\n           */\n          i18nArgs\n        },\n        type: \"validation\",\n        value: customMessage || \"This field is not valid.\"\n      });\n      node.store.set(message);\n    }\n  );\n}\nfunction createCustomMessage(node, validation, i18nArgs) {\n  const customMessage = node.props.validationMessages && has(node.props.validationMessages, validation.name) ? node.props.validationMessages[validation.name] : void 0;\n  if (typeof customMessage === \"function\") {\n    return customMessage(...i18nArgs);\n  }\n  return customMessage;\n}\nfunction createI18nArgs(node, validation) {\n  return [\n    {\n      node,\n      name: createMessageName(node),\n      args: validation.args\n    }\n  ];\n}\nfunction createMessageName(node) {\n  if (typeof node.props.validationLabel === \"function\") {\n    return node.props.validationLabel(node);\n  }\n  return node.props.validationLabel || node.props.label || node.props.name || String(node.name);\n}\nvar hintPattern = \"(?:[\\\\*+?()0-9]+)\";\nvar rulePattern = \"[a-zA-Z][a-zA-Z0-9_]+\";\nvar ruleExtractor = new RegExp(\n  `^(${hintPattern}?${rulePattern})(?:\\\\:(.*)+)?$`,\n  \"i\"\n);\nvar hintExtractor = new RegExp(`^(${hintPattern})(${rulePattern})$`, \"i\");\nvar debounceExtractor = /([\\*+?]+)?(\\(\\d+\\))([\\*+?]+)?/;\nvar hasDebounce = /\\(\\d+\\)/;\nvar defaultHints = {\n  blocking: true,\n  debounce: 0,\n  force: false,\n  skipEmpty: true,\n  name: \"\"\n};\nfunction parseRules(validation, rules) {\n  if (!validation)\n    return [];\n  const intents = typeof validation === \"string\" ? extractRules(validation) : clone(validation);\n  return intents.reduce((validations, args) => {\n    let rule = args.shift();\n    const hints = {};\n    if (typeof rule === \"string\") {\n      const [ruleName, parsedHints] = parseHints(rule);\n      if (has(rules, ruleName)) {\n        rule = rules[ruleName];\n        Object.assign(hints, parsedHints);\n      }\n    }\n    if (typeof rule === \"function\") {\n      validations.push({\n        rule,\n        args,\n        timer: 0,\n        state: null,\n        queued: true,\n        deps: /* @__PURE__ */ new Map(),\n        ...defaultHints,\n        ...fnHints(hints, rule)\n      });\n    }\n    return validations;\n  }, []);\n}\nfunction extractRules(validation) {\n  return validation.split(\"|\").reduce((rules, rule) => {\n    const parsedRule = parseRule(rule);\n    if (parsedRule) {\n      rules.push(parsedRule);\n    }\n    return rules;\n  }, []);\n}\nfunction parseRule(rule) {\n  const trimmed = rule.trim();\n  if (trimmed) {\n    const matches = trimmed.match(ruleExtractor);\n    if (matches && typeof matches[1] === \"string\") {\n      const ruleName = matches[1].trim();\n      const args = matches[2] && typeof matches[2] === \"string\" ? matches[2].split(\",\").map((s) => s.trim()) : [];\n      return [ruleName, ...args];\n    }\n  }\n  return false;\n}\nfunction parseHints(ruleName) {\n  const matches = ruleName.match(hintExtractor);\n  if (!matches) {\n    return [ruleName, { name: ruleName }];\n  }\n  const map = {\n    \"*\": { force: true },\n    \"+\": { skipEmpty: false },\n    \"?\": { blocking: false }\n  };\n  const [, hints, rule] = matches;\n  const hintGroups = hasDebounce.test(hints) ? hints.match(debounceExtractor) || [] : [, hints];\n  return [\n    rule,\n    [hintGroups[1], hintGroups[2], hintGroups[3]].reduce(\n      (hints2, group) => {\n        if (!group)\n          return hints2;\n        if (hasDebounce.test(group)) {\n          hints2.debounce = parseInt(group.substr(1, group.length - 1));\n        } else {\n          group.split(\"\").forEach(\n            (hint) => has(map, hint) && Object.assign(hints2, map[hint])\n          );\n        }\n        return hints2;\n      },\n      { name: rule }\n    )\n  ];\n}\nfunction fnHints(existingHints, rule) {\n  if (!existingHints.name) {\n    existingHints.name = rule.ruleName || rule.name;\n  }\n  return [\"skipEmpty\", \"force\", \"debounce\", \"blocking\"].reduce(\n    (hints, hint) => {\n      if (has(rule, hint) && !has(hints, hint)) {\n        Object.assign(hints, {\n          [hint]: rule[hint]\n        });\n      }\n      return hints;\n    },\n    existingHints\n  );\n}\nfunction getValidationMessages(node) {\n  const messages = /* @__PURE__ */ new Map();\n  const extract = (n) => {\n    const nodeMessages = [];\n    for (const key in n.store) {\n      const message = n.store[key];\n      if (message.type === \"validation\" && message.visible && typeof message.value === \"string\") {\n        nodeMessages.push(message);\n      }\n    }\n    if (nodeMessages.length) {\n      messages.set(n, nodeMessages);\n    }\n    return n;\n  };\n  extract(node).walk(extract);\n  return messages;\n}\n\nexport { createMessageName, createValidationPlugin, getValidationMessages };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","import { createMessageName } from '@formkit/validation';\nimport { has } from '@formkit/utils';\n\n// packages/i18n/src/locales/ar.ts\n\n// packages/i18n/src/formatters.ts\nfunction sentence(str) {\n  return str[0].toUpperCase() + str.substr(1);\n}\nfunction list(items, conjunction = \"or\") {\n  return items.reduce((oxford, item, index) => {\n    oxford += item;\n    if (index <= items.length - 2 && items.length > 2) {\n      oxford += \", \";\n    }\n    if (index === items.length - 2) {\n      oxford += `${items.length === 2 ? \" \" : \"\"}${conjunction} `;\n    }\n    return oxford;\n  }, \"\");\n}\nfunction date(date2) {\n  const dateTime = typeof date2 === \"string\" ? new Date(Date.parse(date2)) : date2;\n  if (!(dateTime instanceof Date)) {\n    return \"(unknown)\";\n  }\n  return new Intl.DateTimeFormat(void 0, {\n    dateStyle: \"medium\",\n    timeZone: \"UTC\"\n  }).format(dateTime);\n}\nfunction order(first, second) {\n  return Number(first) >= Number(second) ? [second, first] : [first, second];\n}\n\n// packages/i18n/src/locales/ar.ts\nvar ui = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"إضافة\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"إزالة\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"إزالة الكل\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"عذرا، لم يتم تعبئة جميع الحقول بشكل صحيح.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"إرسال\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"لا يوجد ملف مختار\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"تحرك لأعلى\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"انتقل لأسفل\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"يتم الآن التحميل...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"تحميل المزيد\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"التالي\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"السابق\",\n  /**\n   * Shown when transferring items between lists.\n   */\n  addAllValues: \"أضف جميع القيم\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"إضافة قيم محددة\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"قم بإزالة جميع القيم\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"إزالة القيم المحددة\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"اختر التاريخ\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"تاريخ التغيير\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"أغلق\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"افتح\"\n};\nvar validation = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `الرجاء قبول ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `يجب أن يكون ${sentence(name)} بعد ${date(args[0])}.`;\n    }\n    return `يجب أن يكون ${sentence(name)} في المستقبل.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `يمكن أن يحتوي ${sentence(name)} على أحرف أبجدية فقط.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `يمكن أن يحتوي ${sentence(name)} على أحرف وأرقام فقط.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `يمكن أن تحتوي ${sentence(name)} على أحرف ومسافات فقط.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `يجب أن يحتوي ${sentence(name)} على أحرف أبجدية.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `يجب أن يحتوي ${sentence(name)} على أحرف أو أرقام.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `يجب أن يحتوي ${sentence(name)} على أحرف أو مسافات.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `يجب أن يحتوي ${sentence(name)} على رمز.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `يجب أن يحتوي ${sentence(name)} على أحرف كبيرة.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `يجب أن يحتوي ${sentence(name)} على أحرف صغيرة.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `يجب أن يحتوي ${sentence(name)} على أرقام.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `يجب أن يكون ${sentence(name)} رمزًا.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `يمكن أن يحتوي ${sentence(name)} على أحرف كبيرة فقط.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `يمكن أن يحتوي ${sentence(name)} على أحرف صغيرة فقط.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `يجب أن يكون ${sentence(name)} قبل ${date(args[0])}.`;\n    }\n    return `يجب أن يكون ${sentence(name)} في الماضي.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `تمت تهيئة هذا الحقل بشكل غير صحيح ولا يمكن إرساله.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `يجب أن يكون ${sentence(name)} ما بين ${a} و ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} غير متطابق.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} ليس تاريخًا صالحًا ، يرجى استخدام التنسيق ${args[0]}`;\n    }\n    return \"تمت تهيئة هذا الحقل بشكل غير صحيح ولا يمكن إرساله\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `يجب أن يكون ${sentence(name)} بين ${date(args[0])} و ${date(args[1])}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"الرجاء أدخال بريد إليكتروني صالح.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `لا ينتهي ${sentence(name)} بـ ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} ليست قيمة مسموح بها.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `يجب أن يكون ${sentence(name)} حرفًا واحدًا على الأقل.`;\n    }\n    if (min == 0 && max) {\n      return `يجب أن يكون ${sentence(name)} أقل من أو يساوي ${max} حرفًا.`;\n    }\n    if (min === max) {\n      return `يجب أن يتكون ${sentence(name)} من الأحرف ${max}.`;\n    }\n    if (min && max === Infinity) {\n      return `يجب أن يكون ${sentence(name)} أكبر من أو يساوي ${min} حرفًا.`;\n    }\n    return `يجب أن يكون ${sentence(name)} بين ${min} و ${max} حرفًا.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} ليست قيمة مسموح بها.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `لا يمكن أن يكون أكثر من ${args[0]} ${name}.`;\n    }\n    return `يجب أن يكون ${sentence(name)} أقل من أو يساوي ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"لا يسمح بتنسيقات الملفات.\";\n    }\n    return `يجب أن يكون ${sentence(name)} من النوع: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `لا يمكن أن يكون أقل من ${args[0]} ${name}.`;\n    }\n    return `يجب أن يكون ${sentence(name)} على الأقل ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” ليس ${name} مسموحًا به.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} يجب ان يكون رقماً`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" أو \")} مطلوب.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} مطلوب.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `لا يبدأ ${sentence(name)} بـ ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `يرجى إدخال عنوان URL صالح.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"التاريخ المحدد غير صالح.\"\n};\nvar ar = { ui, validation };\nvar ui2 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"əlavə edin\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"çıxarmaq\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Hamısını silin\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Üzr istəyirik, bütün sahələr düzgün doldurulmayıb.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Təqdim et\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Heç bir fayl seçilməyib\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"yuxarı hərəkət\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Aşağı hərəkət\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Yükləmə...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Daha çox yüklə\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Növbəti\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Əvvəlki\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Bütün dəyərləri əlavə edin\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Seçilmiş dəyərləri əlavə edin\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Bütün dəyərləri sil\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Seçilmiş dəyərləri sil\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Tarixi seçin\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Tarixi dəyişdirin\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Bağlayın\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Açıq\"\n};\nvar validation2 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `${name} qəbul edin.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} ${date(args[0])} sonra olmalıdır.`;\n    }\n    return `${sentence(name)} gələcəkdə olmalıdır.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} yalnız əlifba sırası simvollarından ibarət ola bilər.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} yalnız hərf və rəqəmlərdən ibarət ola bilər.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} yalnız hərflərdən və boşluqlardan ibarət ola bilər.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} əlifba sırası simvolları ehtiva etməlidir.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} hərfləri və ya nömrələri ehtiva etməlidir.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} hərfləri və ya boşluqları ehtiva etməlidir.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} simvolu ehtiva etməlidir.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} böyük olmalıdır.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} kiçik olmalıdır.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} nömrələri ehtiva etməlidir.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} simvol olmalıdır.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} yalnız böyük hərfləri ehtiva edə bilər.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} yalnız kiçik hərfləri ehtiva edə bilər.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} ${date(args[0])} əvvəl olmalıdır.`;\n    }\n    return `${sentence(name)} keçmişdə olmalıdır.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Bu sahə səhv konfiqurasiya edilib və onu təqdim etmək mümkün deyil.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} ${a} və ${b} arasında olmalıdır.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} uyğun gəlmir.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} etibarlı tarix deyil, ${args[0]} formatından istifadə edin`;\n    }\n    return \"Bu sahə səhv konfiqurasiya edilib və onu təqdim etmək mümkün deyil\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} ${date(args[0])} və ${date(args[1])} arasında olmalıdır`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Etibarlı e-poçt ünvanı daxil edin.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} ${list(args)} ilə bitmir.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} icazə verilən dəyər deyil.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} ən azı bir simvol olmalıdır.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} ${max} simvoldan kiçik və ya ona bərabər olmalıdır.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} ${max} simvol uzunluğunda olmalıdır.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} ${min} simvoldan böyük və ya ona bərabər olmalıdır.`;\n    }\n    return `${sentence(name)} ${min} və ${max} simvol arasında olmalıdır.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} icazə verilən dəyər deyil.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `${args[0]} ${name}-dən çox ola bilməz.`;\n    }\n    return `${sentence(name)} ${args[0]} dəyərindən kiçik və ya ona bərabər olmalıdır.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Fayl formatlarına icazə verilmir.\";\n    }\n    return `${sentence(name)} aşağıdakı tipdə olmalıdır: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `${args[0]} ${name}-dən az ola bilməz.`;\n    }\n    return `${sentence(name)} ən azı ${args[0]} olmalıdır.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” icazə verilən ${name} deyil.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} rəqəm olmalıdır.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" və ya \")} tələb olunur.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} tələb olunur.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} ${list(args)} ilə başlamır.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Xahiş edirik, düzgün URL daxil edin.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Seçilmiş tarix etibarsızdır.\"\n};\nvar az = { ui: ui2, validation: validation2 };\nvar ui3 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"Добави\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Премахни\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Премахни всички\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Извинете, не всички полета са попълнени правилно.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Изпрати\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Няма избран файл\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Преместване нагоре\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Преместете се надолу\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Зареждане...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Заредете повече\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Следващ\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Предишен\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Добавете всички стойности\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Добавяне на избрани стойности\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Премахнете всички стойности\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Премахване на избраните стойности\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Избери дата\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Промяна на датата\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Затвори\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Отворете\"\n};\nvar validation3 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Моля приемете ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} трябва да е след ${date(args[0])}.`;\n    }\n    return `${sentence(name)} трябва да бъде в бъдещето.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} може да съдържа само букви.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} може да съдържа само букви и цифри.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} може да съдържа само букви и интервали.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} трябва да съдържа азбучни знаци.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} трябва да съдържа букви или цифри.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} трябва да съдържа букви или интервали.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} трябва да съдържа символ.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} трябва да съдържа главни букви.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} трябва да съдържа малки букви.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} трябва да съдържа числа.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} трябва да бъде символ.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} може да съдържа само главни букви.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} може да съдържа само малки букви.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} трябва да е преди ${date(args[0])}.`;\n    }\n    return `${sentence(name)} трябва да бъде в миналото.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Това поле е конфигурирано неправилно и не може да бъде изпратено`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} трябва да бъде между ${a} и ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} не съвпада.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} е невалидна дата. Моля, използвайте формата ${args[0]}`;\n    }\n    return \"Това поле е конфигурирано неправилно и не може да бъде изпратено\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} трябва да бъде между ${date(args[0])} и ${date(\n      args[1]\n    )}.`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Моля, въведете валиден имейл адрес.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} не завършва на ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} е неразрешена стойност.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} трябва да има поне един символ.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} трябва да бъде по-малко или равно на ${max} символа.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} трябва да бъде ${max} символи дълго.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} трябва да бъде по-голямо или равно на ${min} символа.`;\n    }\n    return `${sentence(name)} трябва да бъде между ${min} и ${max} символа.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} е неразрешена стойност.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Не може да има повече от ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} трябва да бъде по-малко или равно на ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Не са разрешени никакви файлови формати.\";\n    }\n    return `${sentence(name)} трябва да бъде от тип: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Не може да има по-малко от ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} трябва да бъде поне ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” е неразрешен ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} трябва да бъде число.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" или \")} изисква се.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} е задължително.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} не започва с ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Моля, въведете валиден URL адрес.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Избраната дата е невалидна.\"\n};\nvar bg = { ui: ui3, validation: validation3 };\nvar ui4 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"Dodaj\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Ukloni\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Ukloni sve\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Nažalost, nisu sva polja ispravno popunjena.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Pošalji\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Nije odabran nijedan fajl\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Pomjeri gore\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Pomjeri dole\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Učitavanje...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Učitaj više\",\n  /**\n   * Show on buttons that navigate state forward\n   */\n  next: \"Sljedeći\",\n  /**\n   * Show on buttons that navigate state backward\n   */\n  prev: \"Prethodni\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Dodajte sve vrijednosti\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Dodajte odabrane vrijednosti\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Uklonite sve vrijednosti\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Uklonite odabrane vrijednosti\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Odaberite datum\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Promjenite datum\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Zatvori\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Otvoreno\"\n};\nvar validation4 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Molimo prihvatite ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} mora biti poslije ${date(args[0])}.`;\n    }\n    return `${sentence(name)} mora biti u budućnosti.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} može sadržavati samo abecedne karaktere.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} može sadržavati samo slova i brojeve.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} može sadržavati samo slova i razmake.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} mora sadržavati abecedne karaktere.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} mora sadržavati slova ili brojeve.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} mora sadržavati slova ili razmake.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} mora sadržavati simbol.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} mora sadržavati veliko slovo.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} mora sadržavati malo slovo.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} mora sadržavati brojeve.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} mora biti simbol.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} može sadržavati samo velika slova.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} može sadržavati samo mala slova.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} mora biti prije ${date(args[0])}.`;\n    }\n    return `${sentence(name)} mora biti u prošlosti.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Ovo polje je pogrešno konfigurirano i ne može se poslati.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} mora biti između ${a} i ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} ne podudara se.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} nije ispravan datum, molimo koristite format ${args[0]}`;\n    }\n    return \"Ovo polje je pogrešno konfigurirano i ne može se poslati\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} mora biti između ${date(args[0])} i ${date(args[1])}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Molimo Vas da unesete validnu email adresu.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} ne završava sa ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} nije dozvoljena vrijednost.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} mora biti najmanje jedan karakter.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} mora biti manje od ili jednako ${max} karaktera.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} treba imati ${max} karaktera.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} mora biti veći od ili jednak ${min} karaktera.`;\n    }\n    return `${sentence(name)} mora biti između ${min} i ${max} karaktera.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} nije dozvoljena vrijednost.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Ne može imati više od ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} mora biti manji ili jednak ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Nisu dozvoljeni formati datoteka.\";\n    }\n    return `${sentence(name)} mora biti tipa: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Ne može imati manje od ${args[0]} ${name}.`;\n    }\n    return `Mora biti barem ${args[0]} ${name} .`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” nije dozvoljeno ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} mora biti broj.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" ili \")} je obavezno.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} je obavezno.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} ne počinje sa ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Unesite važeći link.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Odabrani datum je nevažeći.\"\n};\nvar bs = { ui: ui4, validation: validation4 };\nvar ui5 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"Afegir\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Eliminar\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Eliminar tot\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Disculpi, no tots els camps estan omplerts correctament.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Enviar\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Cap fitxer triat\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Moure amunt\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Moure avall\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Carregant...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Carregar més\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Següent\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Anterior\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Afegir tots els valors\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Afegeix els valors seleccionats\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Eliminar tots els valors\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Elimina els valors seleccionats\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Trieu la data\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Canviar data\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Tancar\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Obert\"\n};\nvar validation5 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://docs.formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Si us plau accepti ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://docs.formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} ha de ser posterior a ${date(args[0])}.`;\n    }\n    return `${sentence(name)} ha de succeïr al futur.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://docs.formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} només pot contenir caràcters alfabètics.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://docs.formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} només pot contenir lletres i números.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://docs.formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} només pot contenir lletres i espais.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} ha de contenir caràcters alfabètics.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} ha de contenir lletres o números.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} ha de contenir lletres o espais.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} ha de contenir símbol.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} ha de contenir majúscules.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} ha de contenir minúscules.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} ha de contenir números.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} ha de ser un símbol.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} només pot contenir lletres majúscules.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} només pot contenir lletres minúscules.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://docs.formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} ha de ser anterior a ${date(args[0])}.`;\n    }\n    return `${sentence(name)} ha d'estar al passat.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://docs.formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Aquest camp està configurat incorrectament i no pot ésser enviat.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} ha d'estar entre ${a} i ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://docs.formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} no concorda.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://docs.formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} no és una data vàlida, si us plau empri el format ${args[0]}`;\n    }\n    return \"Aquest camp està configurat incorrectament i no pot ésser enviat\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://docs.formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} ha d'estar entre ${date(args[0])} i ${date(args[1])}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://docs.formkit.com/essentials/validation#email}\n   */\n  email: `Si us plau, entri una adreça d'e-mail vàlida.`,\n  /**\n   * Does not end with the specified value\n   * @see {@link https://docs.formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} no acaba amb ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://docs.formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} no és un valor acceptat.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://docs.formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} ha de tenir com a mínim un caràcter.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} ha de ser inferior o igual a ${max} caràcters.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} ha de tenir una longitud de ${max} caràcters.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} ha de ser major que o igual a ${min} caràcters.`;\n    }\n    return `${sentence(name)} ha d'estar entre ${min} i ${max} caràcters.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://docs.formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} no és un valor permès.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://docs.formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `No pot tenir més de ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} ha de ser menys que o igual a ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://docs.formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"No hi ha cap format de fitxer acceptat.\";\n    }\n    return `${sentence(name)} ha de ser del tipus: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://docs.formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `No pot tenir menys de ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} ha de ser com a mínim ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://docs.formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” no s'accepta com a ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://docs.formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} ha de ser un número.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" o \")} es requereix.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://docs.formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} és obligatori.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://docs.formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} no comença amb ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://docs.formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Si us plau inclogui una url vàlida.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"La data seleccionada no és vàlida.\"\n};\nvar ca = { ui: ui5, validation: validation5 };\nvar ui6 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"Přidat\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Odebrat\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Odebrat vše\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Pardon, ale ne všechna pole jsou vyplněna správně.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Odeslat\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Žádný soubor nebyl vybrán\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Pohyb nahoru\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Posunout dolů\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Načítání...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Načíst více\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Další\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Předchozí\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Přidat všechny hodnoty\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Přidání vybraných hodnot\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Odstraňte všechny hodnoty\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Odstranění vybraných hodnot\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Zvolte datum\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Změnit datum\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Zavřít\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Otevřeno\"\n};\nvar validation6 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Prosím, zaškrtněte ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} musí být po ${date(args[0])}.`;\n    }\n    return `${sentence(name)} musí být v budoucnosti.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} může obsahovat pouze písmena.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} může obsahovat pouze písmena a čísla.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} musí obsahovat abecední znaky.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} musí obsahovat písmena nebo číslice.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} musí obsahovat písmena nebo mezery.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} musí obsahovat symbol.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} musí obsahovat velká písmena.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} musí obsahovat malá písmena.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} musí obsahovat čísla.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} musí být symbol.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} může obsahovat pouze velká písmena.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} může obsahovat pouze malá písmena.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} musí být před ${date(args[0])}.`;\n    }\n    return `${sentence(name)} musí být v minulosti.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Toto pole bylo špatně nakonfigurováno a nemůže být odesláno.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} musí být mezi ${a} a ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} nejsou shodná.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} není platné datum, prosím, použijte formát ${args[0]}`;\n    }\n    return \"Toto pole bylo špatně nakonfigurováno a nemůže být odesláno.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} musí být mezi ${date(args[0])} a ${date(args[1])}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Prosím, zadejte platnou e-mailovou adresu.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} nekončí na ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} není povolená hodnota.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} musí mít nejméně jeden znak.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} může mít maximálně ${max} znaků.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} by mělo být ${max} znaků dlouhé.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} musí obsahovat minimálně ${min} znaků.`;\n    }\n    return `${sentence(name)} musí být dlouhé ${min} až ${max} znaků.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} není povolená hodnota.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Nelze použít více než ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} musí mít menší nebo rovno než ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Nejsou nakonfigurovány povolené typy souborů.\";\n    }\n    return `${sentence(name)} musí být typu: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Nelze mít méně než ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} musí být minimálně ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” není dovolená hodnota pro ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} musí být číslo.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" nebo \")} je vyžadován.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} je povinné.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} nezačíná na ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Zadejte prosím platnou adresu URL.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Vybrané datum je neplatné.\"\n};\nvar cs = { ui: ui6, validation: validation6 };\nvar ui7 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"Tilføj\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Fjern\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Fjern alle\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Alle felter er ikke korrekt udfyldt.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Send\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Ingen filer valgt\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Flyt op\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Flyt ned\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Indlæser...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Indlæs mere\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Næste\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Forrige\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Tilføj alle værdier\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Tilføj valgte værdier\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Fjern alle værdier\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Fjern valgte værdier\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Vælg dato\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Skift dato\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Luk\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Åbn\"\n};\nvar validation7 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Accepter venligst ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} skal være senere end ${date(args[0])}.`;\n    }\n    return `${sentence(name)} skal være i fremtiden.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} kan kun indeholde bogstaver.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} kan kun indeholde bogstaver og tal.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} kan kun indeholde bogstaver og mellemrum.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} skal indeholde alfabetiske tegn.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} skal indeholde bogstaver eller tal.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} skal indeholde bogstaver eller mellemrum.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} skal indeholde symbol.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} skal indeholde store bogstaver.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} skal indeholde små bogstaver.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} skal indeholde tal.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} skal være et symbol.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} kan kun indeholde store bogstaver.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} kan kun indeholde små bogstaver.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} skal være før ${date(args[0])}.`;\n    }\n    return `${sentence(name)} skal være før i dag.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Dette felt er ikke konfigureret korrekt og kan derfor ikke blive sendt.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} skal være mellem ${a} og ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} matcher ikke.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} er ikke gyldig, brug venligst formatet ${args[0]}`;\n    }\n    return \"Dette felt er ikke konfigureret korrekt og kan derfor ikke blive sendt.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} skal være mellem ${date(args[0])} og ${date(args[1])}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Indtast venligst en gyldig email-adresse.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} slutter ikke med ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} er ikke en gyldig værdi.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} skal være på mindst ét tegn.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} skal være på højst ${max} tegn.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} skal være ${max} tegn lange.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} skal være på mindst ${min} tegn.`;\n    }\n    return `${sentence(name)} skal være på mindst ${min} og højst ${max} tegn.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} er ikke en gyldig værdi.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Kan ikke have flere end ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} skal være mindre eller lig med ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Ingen filformater tilladt.\";\n    }\n    return `${sentence(name)} skal være af filtypen: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Kan ikke have mindre end ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} skal være mindst ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” er ikke en tilladt ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} skal være et tal.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" eller \")} er påkrævet.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} er påkrævet.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} starter ikke med ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Indtast en gyldig URL.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Den valgte dato er ugyldig.\"\n};\nvar da = { ui: ui7, validation: validation7 };\nvar ui8 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"Hinzufügen\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Entfernen\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Alles entfernen\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Entschuldigung, nicht alle Felder wurden korrekt ausgefüllt.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Senden\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Keine Datei ausgewählt\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Gehe nach oben\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Gehen Sie nach unten\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Wird geladen...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Mehr laden\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Weiter\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Voriges\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Alle Werte hinzufügen\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Ausgewählte Werte hinzufügen\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Alle Werte entfernen\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Ausgewählte Werte entfernen\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Datum wählen\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Datum ändern\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Schliessen\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Offen\"\n};\nvar validation8 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Bitte ${name} akzeptieren.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} muss nach dem ${date(args[0])} liegen.`;\n    }\n    return `${sentence(name)} muss in der Zukunft liegen.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} darf nur Buchstaben enthalten.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} darf nur Buchstaben und Zahlen enthalten.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} dürfen nur Buchstaben und Leerzeichen enthalten.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} muss alphabetische Zeichen enthalten.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} muss Buchstaben oder Zahlen enthalten.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} muss Buchstaben oder Leerzeichen enthalten.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} muss ein Symbol enthalten.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} muss Großbuchstaben enthalten.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} muss Kleinbuchstaben enthalten.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} muss Zahlen enthalten.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} muss ein Symbol sein.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} kann nur Großbuchstaben enthalten.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} kann nur Kleinbuchstaben enthalten.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} muss vor dem ${date(args[0])} liegen.`;\n    }\n    return `${sentence(name)} muss in der Vergangenheit liegen.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Dieses Feld wurde falsch konfiguriert und kann nicht übermittelt werden.`;\n    }\n    return `${sentence(name)} muss zwischen ${args[0]} und ${args[1]} sein.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} stimmt nicht überein.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} ist kein gültiges Datum im Format ${args[0]}.`;\n    }\n    return \"Dieses Feld wurde falsch konfiguriert und kann nicht übermittelt werden.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} muss zwischen ${date(args[0])} und ${date(\n      args[1]\n    )} liegen.`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"E-Mail Adresse ist ungültig.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} endet nicht mit ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} enthält einen ungültigen Wert.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = first <= second ? first : second;\n    const max = second >= first ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} muss mindestens ein Zeichen enthalten.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} darf maximal ${max} Zeichen enthalten.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} sollte ${max} Zeichen lang sein.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} muss mindestens ${min} Zeichen enthalten.`;\n    }\n    return `${sentence(name)} muss zwischen ${min} und ${max} Zeichen enthalten.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} enthält einen ungültigen Wert.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Darf maximal ${args[0]} ${name} haben.`;\n    }\n    return `${sentence(name)} darf maximal ${args[0]} sein.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Keine Dateiformate konfiguriert.\";\n    }\n    return `${sentence(name)} muss vom Typ ${args[0]} sein.`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Mindestens ${args[0]} ${name} erforderlich.`;\n    }\n    return `${sentence(name)} muss mindestens ${args[0]} sein.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” ist kein gültiger Wert für ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} muss eine Zahl sein.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" oder \")} ist erforderlich.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} ist erforderlich.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} beginnt nicht mit ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Bitte geben Sie eine gültige URL ein.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Das gewählte Datum ist ungültig.\"\n};\nvar de = { ui: ui8, validation: validation8 };\nvar ui9 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"Προσθήκη\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Αφαίρεση\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Αφαίρεση όλων\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Λυπούμαστε, υπάρχουν πεδία που δεν έχουν συμπληρωθεί σωστά.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Υποβολή\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Κανένα αρχείο δεν έχει επιλεγεί\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Προς τα επάνω\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Προς τα κάτω\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Φορτώνει...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Φόρτωση περισσότερων\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Επόμενη\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Προηγούμενο\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Προσθήκη όλων των τιμών\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Προσθήκη επιλεγμένων τιμών\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Κατάργηση όλων των τιμών\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Αφαίρεση επιλεγμένων τιμών\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Επιλέξτε ημερομηνία\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Αλλαγή ημερομηνίας\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Κλείσιμο\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Ανοιχτό\"\n};\nvar validation9 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Παρακαλώ αποδεχτείτε το ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} πρέπει να είναι μετά της ${date(args[0])}.`;\n    }\n    return `${sentence(name)} πρέπει να είναι στο μέλλον.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} μπορεί να περιέχει μόνο αλφαβητικούς χαρακτήρες.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} μπορεί να περιέχει μόνο γράμματα και αριθμούς.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} μπορεί να περιέχει μόνο γράμματα και κενά.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `Το ${sentence(name)} πρέπει να περιέχει αλφαβητικούς χαρακτήρες.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `Το ${sentence(name)} πρέπει να περιέχει γράμματα ή αριθμούς.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} πρέπει να περιέχει γράμματα ή κενά.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `Το ${sentence(name)} πρέπει να περιέχει το σύμβολο.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `Το ${sentence(name)} πρέπει να περιέχει κεφαλαία γράμματα.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `Το ${sentence(name)} πρέπει να περιέχει πεζά γράμματα.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `Το ${sentence(name)} πρέπει να περιέχει αριθμούς.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `Το ${sentence(name)} πρέπει να είναι ένα σύμβολο.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `Το ${sentence(name)} μπορεί να περιέχει μόνο κεφαλαία γράμματα.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `Το ${sentence(name)} μπορεί να περιέχει μόνο πεζά γράμματα.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} πρέπει να είναι πριν της ${date(args[0])}.`;\n    }\n    return `${sentence(name)} πρέπει να είναι στο παρελθόν.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Αυτό το πεδίο έχει ρυθμιστεί λανθασμένα και δεν μπορεί να υποβληθεί.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} πρέπει να είναι μεταξύ ${a} και ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} δεν ταιριάζει.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(\n        name\n      )} δεν είναι έγυρη ημερομηνία, παρακαλώ ακολουθήστε την διαμόρφωση ${args[0]}`;\n    }\n    return \"Αυτό το πεδίο έχει ρυθμιστεί λανθασμένα και δεν μπορεί να υποβληθεί\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} πρέπει να είναι μεταξύ ${date(args[0])} και ${date(\n      args[1]\n    )}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Παρακαλώ πληκτρολογήστε μια έγκυρη email διεύθυνση. \",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} δεν καταλήγει με ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} δεν είναι μια επιτρεπτή τιμή.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} πρέπει να είναι τουλάχιστον ενός χαρακτήρα.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} πρέπει να είναι λιγότεροι ή ίσοι με ${max} χαρακτήρες.`;\n    }\n    if (min === max) {\n      return `Το ${sentence(name)} θα πρέπει να έχει μήκος ${max} χαρακτήρες.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(\n        name\n      )} πρέπει να είναι περισσότεροι ή ίσοι με ${min} χαρακτήρες.`;\n    }\n    return `${sentence(name)} πρέπει να είναι μεταξύ ${min} και ${max} χαρακτήρες.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} δεν είναι μια επιτρεπτή τιμή.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Δεν μπορεί να έχει παραπάνω από ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} πρέπει αν είναι λιγότερο ή ίσο με το ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Δεν επιτρέπονται αρχεία.\";\n    }\n    return `${sentence(name)} πρέπει να είναι τύπου: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Δεν μπορεί να είναι λιγότερο από ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} πρέπει να είναι τουλάχιστον ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” δεν είναι μια επιτρεπτή ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} πρέπει να είναι αριθμός.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" ή \")} απαιτείται.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} είναι υποχρεωτικό.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} δεν αρχίζει με ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Παρακαλώ εισάγετε ένα έγκυρο URL.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Η επιλεγμένη ημερομηνία δεν είναι έγκυρη.\"\n};\nvar el = { ui: ui9, validation: validation9 };\nvar ui10 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"Add\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Remove\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Remove all\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Sorry, not all fields are filled out correctly.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Submit\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"No file chosen\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Move up\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Move down\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Loading...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Load more\",\n  /**\n   * Show on buttons that navigate state forward\n   */\n  next: \"Next\",\n  /**\n   * Show on buttons that navigate state backward\n   */\n  prev: \"Previous\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Add all values\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Add selected values\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Remove all values\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Remove selected values\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Choose date\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Change date\",\n  /**\n   * Shown above error summaries when someone attempts to submit a form with\n   * errors and the developer has implemented `<FormKitSummary />`.\n   */\n  summaryHeader: \"There were errors in your form.\",\n  /*\n   * Shown when there is something to close\n   */\n  close: \"Close\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Open\"\n};\nvar validation10 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Please accept the ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} must be after ${date(args[0])}.`;\n    }\n    return `${sentence(name)} must be in the future.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} can only contain alphabetical characters.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} can only contain letters and numbers.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} can only contain letters and spaces.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} must contain alphabetical characters.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} must contain letters or numbers.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} must contain letters or spaces.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} must contain a symbol.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} must contain an uppercase letter.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} must contain a lowercase letter.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} must contain numbers.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} must be a symbol.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} can only contain uppercase letters.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name, args }) {\n    let postfix = \"\";\n    if (Array.isArray(args) && args.length) {\n      if (args[0] === \"allow_non_alpha\")\n        postfix = \", numbers and symbols\";\n      if (args[0] === \"allow_numeric\")\n        postfix = \" and numbers\";\n      if (args[0] === \"allow_numeric_dashes\")\n        postfix = \", numbers and dashes\";\n    }\n    return `${sentence(name)} can only contain lowercase letters${postfix}.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} must be before ${date(args[0])}.`;\n    }\n    return `${sentence(name)} must be in the past.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `This field was configured incorrectly and can’t be submitted.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} must be between ${a} and ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} does not match.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} is not a valid date, please use the format ${args[0]}`;\n    }\n    return \"This field was configured incorrectly and can’t be submitted\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} must be between ${date(args[0])} and ${date(args[1])}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Please enter a valid email address.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} doesn’t end with ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} is not an allowed value.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} must be at least one character.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} must be less than or equal to ${max} characters.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} should be ${max} characters long.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} must be greater than or equal to ${min} characters.`;\n    }\n    return `${sentence(name)} must be between ${min} and ${max} characters.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} is not an allowed value.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Cannot have more than ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} must be no more than ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"No file formats allowed.\";\n    }\n    return `${sentence(name)} must be of the type: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Cannot have fewer than ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} must be at least ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” is not an allowed ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} must be a number.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" or \")} is required.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} is required.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} doesn’t start with ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Please enter a valid URL.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"The selected date is invalid.\"\n};\nvar en = { ui: ui10, validation: validation10 };\nvar ui11 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"Añadir\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Quitar\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Quitar todos\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Discúlpe, los campos no fueron completados correctamente.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Enviar\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Archivo no seleccionado\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Moverse hacia arriba\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Moverse hacia abajo\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Cargando...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Cargar más\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Próximo\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Anterior\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Añadir todos los valores\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Añadir valores seleccionados\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Eliminar todos los valores\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Eliminar los valores seleccionados\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Elige fecha\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Cambiar fecha\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Cerrar\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Abrir\"\n};\nvar validation11 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Acepte el ${name} por favor.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} debe ser posterior a ${date(args[0])}.`;\n    }\n    return `${sentence(name)} debe ser una fecha futura.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} debe contener solo caractéres alfabéticos.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} debe ser alfanumérico.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} espacios alfa solo pueden contener letras y espacios.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} debe contener caracteres alfabéticos.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} debe contener letras o números.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} debe contener letras o espacios.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} debe contener un símbolo.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} debe estar en mayúsculas.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} debe contener minúsculas.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} debe contener números.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} debe ser un símbolo.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} solo puede contener letras mayúsculas.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} solo puede contener letras minúsculas.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} debe ser anterior a ${date(args[0])}.`;\n    }\n    return `${sentence(name)} debe ser una fecha pasada.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `El campo no fue completado correctamente y no puede ser enviado.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} debe estar entre ${a} y ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} no coincide.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} no es una fecha válida, por favor utilice el formato ${args[0]}`;\n    }\n    return \"El campo no fue completado correctamente y no puede ser enviado.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} debe estar entre ${date(args[0])} y ${date(args[1])}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Ingrese una dirección de correo electrónico válida por favor.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} no termina con ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} no es un valor permitido.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} debe tener al menos una letra.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} debe tener como máximo ${max} caractéres.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} debe tener ${max} caracteres.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} debe tener como mínimo ${min} caractéres.`;\n    }\n    return `${sentence(name)} debe tener entre ${min} y ${max} caractéres.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} no es un valor permitido.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `No puede tener más de ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} debe ser menor o igual a ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"No existen formatos de archivos permitidos.\";\n    }\n    return `${sentence(name)} debe ser del tipo: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `No puede tener menos de ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} debe ser de al menos ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” no es un valor permitido de ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} debe ser un número.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" o \")} se requiere estar.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} es requerido.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} debe comenzar con ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Introduce una URL válida.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"La fecha seleccionada no es válida.\"\n};\nvar es = { ui: ui11, validation: validation11 };\nvar ui12 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"افزودن\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"حذف\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"همه را حذف کنید\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"همه فیلدها به‌درستی پر نشده‌اند\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"ثبت\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"هیچ فایلی انتخاب نشده است\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"حرکت به بالا\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"حرکت به پایین\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"در حال بارگذاری...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"بارگذاری بیشتر\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"بعدی\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"قبلی\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"تمام مقادیر را اضافه کنید\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"مقادیر انتخاب شده را اضافه کنید\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"تمام مقادیر را حذف کنید\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"حذف مقادیر انتخاب شده\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"تاریخ را انتخاب کنید\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"تغییر تاریخ\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"بستن\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"باز کردن\"\n};\nvar validation12 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `لطفاً ${name} را بپذیرید.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} باید بعد از تاریخ ${date(args[0])} باشد.`;\n    }\n    return `${sentence(name)} باید مربوط به آینده باشد.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} فقط میتواند شامل حروف الفبا باشد.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} فقط میتواند شامل حروف و اعداد باشد.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} فقط می تواند شامل حروف و فاصله باشد.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} باید حاوی حروف الفبا باشد.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} باید حاوی حروف یا اعداد باشد.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} باید حاوی حروف یا فاصله باشد.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} باید حاوی نماد باشد.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} باید دارای حروف بزرگ باشد.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} باید حاوی حروف کوچک باشد.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} باید حاوی اعداد باشد.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} باید یک نماد باشد.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} تنها می‌تواند شامل حروف بزرگ باشد.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} تنها می‌تواند شامل حروف کوچک باشد.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} باید قبل از تاریخ ${date(args[0])} باشد.`;\n    }\n    return `${sentence(name)} باید مربوط به گذشته باشد.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `این فیلد به اشتباه پیکربندی شده است و قابل ارسال نیست`;\n    }\n    return `${sentence(name)} باید بین ${args[0]} و ${args[1]} باشد.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} مطابقت ندارد.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} تاریخ معتبری نیست، لطفاً از قالب ${args[0]} استفاده کنید\n`;\n    }\n    return \"این فیلد به اشتباه پیکربندی شده است و قابل ارسال نیست\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} باید بین ${date(args[0])} و ${date(args[1])} باشد.`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"لطفا آدرس ایمیل معتبر وارد کنید.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} باید به ${list(args)} ختم شود.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} مجاز نیست.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = first <= second ? first : second;\n    const max = second >= first ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} باید حداقل یک کاراکتر باشد.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} باید کمتر یا برابر با ${max} کاراکتر باشد.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} باید ${max} کاراکتر طولانی باشد.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} باید بزرگتر یا برابر با ${min} کاراکتر باشد.`;\n    }\n    return `${sentence(name)} باید بین ${min} و ${max} کاراکتر باشد.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} مجاز نیست.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `${name} نمی تواند بیش از ${args[0]} باشد.`;\n    }\n    return `${sentence(name)} باید کمتر یا برابر با ${args[0]} باشد.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"فرمت فایل مجاز نیست.\";\n    }\n    return `${sentence(name)} باید از این نوع باشد: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `${name} نمی تواند کمتر از ${args[0]} باشد.\n`;\n    }\n    return `${sentence(name)} باید حداقل ${args[0]} باشد.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `\"${value}\" یک ${name} مجاز نیست.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} باید عدد باشد.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" یا \")} مورد نیاز است.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `پر کردن ${sentence(name)} اجباری است.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} باید با ${list(args)} شروع شود.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `لطفا یک URL معتبر وارد کنید.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"تاریخ انتخاب شده نامعتبر است\"\n};\nvar fa = { ui: ui12, validation: validation12 };\nvar ui13 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"Lisää\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Poista\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Poista kaikki\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Kaikkia kenttiä ei ole täytetty oikein.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Tallenna\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Ei valittuja tiedostoja\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Siirrä ylös\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Siirrä alas\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Ladataan...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Lataa lisää\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Seuraava\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Edellinen\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Lisää kaikki arvot\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Lisää valitut arvot\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Poista kaikki arvot\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Poista valitut arvot\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Valitse päivämäärä\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Vaihda päivämäärä\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Sulje\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Avoinna\"\n};\nvar validation13 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Ole hyvä ja hyväksy ${name}`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} tulee olla ${date(args[0])} jälkeen.`;\n    }\n    return `${sentence(name)} on oltava tulevaisuudessa.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} saa sisältää vain kirjaimia.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} saa sisältää vain kirjaimia ja numeroita.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} voivat sisältää vain kirjaimia ja välilyöntejä.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} on sisällettävä aakkoselliset merkit.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} täytyy sisältää kirjaimia tai numeroita.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} täytyy sisältää kirjaimia tai välilyöntejä.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} täytyy sisältää symboli.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} täytyy sisältää isoja kirjaimia.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} täytyy sisältää pieniä kirjaimia.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} täytyy sisältää numeroita.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} on oltava symboli.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} voi sisältää vain isoja kirjaimia.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} voi sisältää vain pieniä kirjaimia.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} tulee olla ennen: ${date(args[0])}.`;\n    }\n    return `${sentence(name)} on oltava menneisyydessä.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Tämä kenttä on täytetty virheellisesti joten sitä ei voitu lähettää.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} on oltava välillä ${a} - ${b} `;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} ei täsmää.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(\n        name\n      )} ei ole validi päivämäärä, ole hyvä ja syötä muodossa: ${args[0]}`;\n    }\n    return \"Tämä kenttä on täytetty virheellisesti joten sitä ei voitu lähettää.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} on oltava välillä ${date(args[0])} - ${date(args[1])}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Syötä validi sähköpostiosoite.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} tulee päättyä ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} ei ole sallittu vaihtoehto.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} on oltava vähintään yksi merkki.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} on oltava ${max} tai alle merkkiä.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} pitäisi olla ${max} merkkiä pitkä.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} on oltava vähintään ${min} merkkiä.`;\n    }\n    return `${sentence(name)} on oltava vähintään ${min}, enintään ${max} merkkiä.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} ei ole sallittu arvo.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Valitse enintään ${args[0]} ${name} vaihtoehtoa.`;\n    }\n    return `${sentence(name)} on oltava ${args[0]} tai alle.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Tiedostoja ei sallita.\";\n    }\n    return `${sentence(name)} tulee olla ${args[0]}-tiedostotyyppiä.`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Valitse vähintään ${args[0]} ${name} vaihtoehtoa.`;\n    }\n    return `${sentence(name)} tulee olla ${args[0]} tai suurempi.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” ei ole sallittu ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `Kentän ${sentence(name)} tulee olla numero.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" tai \")} vaaditaan.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} vaaditaan.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} on alettava ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Anna kelvollinen URL-osoite.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Valittu päivämäärä on virheellinen.\"\n};\nvar fi = { ui: ui13, validation: validation13 };\nvar ui14 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"Ajouter\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Supprimer\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Enlever tout\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Désolé, tous les champs ne sont pas remplis correctement.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Valider\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Aucun fichier choisi\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Déplacez-vous\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Déplacez-vous\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Chargement...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Chargez plus\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Suivant\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Précédent\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Ajouter toutes les valeurs\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Ajouter les valeurs sélectionnées\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Supprimer toutes les valeurs\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Supprimer les valeurs sélectionnées\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Choisissez la date\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Modifier la date\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Fermer\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Ouvrir\"\n};\nvar validation14 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Veuillez accepter le ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} doit être postérieure au ${date(args[0])}.`;\n    }\n    return `${sentence(name)} doit être dans le futur.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} ne peut contenir que des caractères alphabétiques.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} ne peut contenir que des lettres et des chiffres.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} ne peuvent contenir que des lettres et des espaces.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} doit contenir des caractères alphabétiques.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} doit contenir au moins un lettre ou nombre.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} doit contenir des lettres ou des espaces.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} doit contenir un symbole.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} doit contenir au moins une majuscule.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} doit contenir au moins une minuscule.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} doit contenir des chiffres.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} doit être un symbole.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} ne peuvent contenir que des majuscules.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} ne peut contenir que des lettres minuscules.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} doit être antérieure au ${date(args[0])}.`;\n    }\n    return `${sentence(name)} doit être dans le passé.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Ce champ a été configuré de manière incorrecte et ne peut pas être soumis.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} doit être comprise entre ${a} et ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} ne correspond pas.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(\n        name\n      )} n'est pas une date valide, veuillez utiliser le format ${args[0]}`;\n    }\n    return \"Ce champ a été configuré de manière incorrecte et ne peut pas être soumis.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} doit être comprise entre ${date(args[0])} et ${date(\n      args[1]\n    )}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Veuillez saisir une adresse email valide.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} ne se termine pas par ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} n'est pas une valeur autorisée.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} doit comporter au moins un caractère.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} doit être inférieur ou égal à ${max} caractères.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} doit contenir ${max} caractères.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} doit être supérieur ou égal à ${min} caractères.`;\n    }\n    return `${sentence(name)} doit être comprise entre ${min} et ${max} caractères.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} n'est pas une valeur autorisée.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Ne peut pas avoir plus de ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} doit être inférieur ou égal à ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Aucun format de fichier n’est autorisé\";\n    }\n    return `${sentence(name)} doit être du type: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Ne peut pas avoir moins de ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} doit être au moins de ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” n'est pas un ${name} autorisé.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} doit être un nombre.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" ou \")} est requis.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} est requis.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} ne commence pas par ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Entrez une URL valide.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: `La date sélectionnée n'est pas valide.`\n};\nvar fr = { ui: ui14, validation: validation14 };\nvar ui15 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"Foeg ta\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Ferwider\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Ferwider alles\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Sorry, net alle fjilden binne korrekt ynfolle.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Ferstjoere\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Gjin bestân keazen\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Gean omheech\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Nei ûnderen\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Lade…\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Mear lade\",\n  /**\n   * Show on buttons that navigate state forward\n   */\n  next: \"Folgende\",\n  /**\n   * Show on buttons that navigate state backward\n   */\n  prev: \"Foarige\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Foegje alle wearden ta\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Foegje selektearre wearden ta\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Fuortsmite alle wearden\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Fuortsmite selektearre wearden\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Kies datum\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Feroarje datum\"\n};\nvar validation15 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Akseptearje de ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} moat nei ${date(args[0])} wêze.`;\n    }\n    return `${sentence(name)} moat yn de takomst lizze.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} mei allinne alfabetyske tekens befetsje.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} mei allinne letters en sifers befetsje.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} mei allinne letters en spaasjes befetsje.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} must contain alphabetical characters.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} must contain letters and numbers.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} must contain letters and spaces.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} must contain symbol.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} must contain uppercase.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} must contain lowercase.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} must contain number.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} can only contain symbol.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} can only contain uppercase.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} can only contain lowercase.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} moat foar ${date(args[0])} falle.`;\n    }\n    return `${sentence(name)} moat yn it ferline wêze.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Dit fjild is ferkeard konfigurearre en kin net ferstjoerd wurde.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} moat tusken ${a} en ${b} lizze.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} komt net oerien.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} is gjin jildige datum, brûk de notaasje ${args[0]}`;\n    }\n    return \"Dit fjild is ferkeard konfigurearre en kin net ferstjoerd wurde\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} moat tusken ${date(args[0])} en ${date(args[1])} lizze`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Folje in jildich e-mailadres yn.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} einiget net mei ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} is gjin tastiene wearde.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} moat minimaal ien teken wêze.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} moat lytser wêze as of gelyk wêze oan ${max} tekens.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} moat ${max} tekens lang wêze.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} moat grutter wêze as of gelyk wêze oan ${min} tekens.`;\n    }\n    return `${sentence(name)} moat tusken de ${min} en ${max} tekens befetsje.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} is gjin tastiene wearde.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Mei net mear as ${args[0]} ${name} hawwe.`;\n    }\n    return `${sentence(name)} moat lytser wêze as of gelyk wêze oan ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Gjin bestânsnotaasjes tastien.\";\n    }\n    return `${sentence(name)} moat fan it type: ${args[0]} wêze`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Mei net minder as ${args[0]} ${name} hawwe.`;\n    }\n    return `${sentence(name)} moat minimaal ${args[0]} wêze.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `\"${value}\" is gjin tastiene ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} moat in getal wêze.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" of \")} is ferplichte.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} is ferplicht.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} begjint net mei ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Doch der in jildige url by.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"De selektearre datum is ûnjildich.\"\n};\nvar fy = { ui: ui15, validation: validation15 };\nvar ui16 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"הוסף\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"מחק\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"מחק הכל\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"שים לב, לא כל השדות מלאים כראוי.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"שלח\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"לא נבחר קובץ..\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"הזז למעלה\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"הזז למטה\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"טוען...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"טען יותר\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"הבא\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"הקודם\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"הוסף את כל הערכים\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"הוספת ערכים נבחרים\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"הסר את כל הערכים\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"הסר ערכים נבחרים\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"בחר תאריך\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"שינוי תאריך\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"סגור\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"פתוח\"\n};\nvar validation16 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `אנא אשר את ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} חייב להיות אחרי ${date(args[0])}.`;\n    }\n    return `${sentence(name)} חייב להיות בעתיד.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} חייב להכיל אותיות אלפבת.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} יכול להכיל רק מספרים ואותיות.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} יכול להכיל רק אותיות ורווחים.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} חייב להכיל תווים אלפביתיים.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} חייב להכיל אותיות או מספרים.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} חייב להכיל אותיות או רווחים.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} חייב להכיל סמל.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} חייב להכיל אותיות רישיות.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} חייב להכיל אותיות קטנות.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} חייב להכיל מספרים.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} חייב להיות סמל.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} יכול להכיל אותיות רישיות בלבד.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} יכול להכיל רק אותיות קטנות.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} חייב להיות לפני ${date(args[0])}.`;\n    }\n    return `${sentence(name)} חייב להיות בעבר`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `שדה זה לא הוגדר כראוי ולא יכול להישלח.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} חייב להיות בין ${a} ו- ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} לא מתאים.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} הוא לא תאריך תקין, אנא השתמש בפורמט ${args[0]}`;\n    }\n    return \"שדה זה לא הוגדר כראוי ולא יכול להישלח.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} חייב להיות בין ${date(args[0])} ו- ${date(args[1])}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"אנא הקלד אימייל תקין.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} לא מסתיים ב- ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} הוא לא ערך מורשה.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} חייב להיות לפחות תו אחד.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} חייב להיות פחות או שווה ל- ${max} תווים.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} צריך להיות ${max} תווים ארוכים.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} חייב להיות גדול או שווה ל- ${min} תווים.`;\n    }\n    return `${sentence(name)} חייב להיות בין ${min} ו- ${max} תווים.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} הוא לא ערך תקין.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `${name} לא יכול להיות עם יותר מ- ${args[0]}.`;\n    }\n    return `${sentence(name)} חייב להיות פחות או שווה ל- ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"פורמט הקובץ לא מורשה.\";\n    }\n    return `${sentence(name)} חייב להיות מסוג: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `${name} לא יכול להיות עם פחות מ- ${args[0]}.`;\n    }\n    return `${sentence(name)} חייב להיות לפחות ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” לא מתאים ל- ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} חייב להיות מספר.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" או \")} נדרש.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} הינו חובה.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} לא מתחיל ב- ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `הזן כתובת URL חוקית.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"התאריך שנבחר אינו חוקי.\"\n};\nvar he = { ui: ui16, validation: validation16 };\nvar ui17 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"Dodaj\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Ukloni\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Pojedina polja nisu ispravno ispunjena.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Predaj\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Pomaknite se gore\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Pomakni se dolje\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Učitavanje...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Učitaj više\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Sljedeći\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"prijašnji\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Dodajte sve vrijednosti\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Dodavanje odabranih vrijednosti\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Ukloni sve vrijednosti\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Ukloni odabrane vrijednosti\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Odaberite datum\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Promijeni datum\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Zatvoriti\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Otvori\"\n};\nvar validation17 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Potrebno je potvrditi ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} mora biti u periodu poslije ${date(args[0])}.`;\n    }\n    return `${sentence(name)} mora biti u budućnosti.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} mora sadržavati samo slova.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} mora sadržavati slova i brojeve.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} mogu sadržavati samo slova i razmake..`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} mora sadržavati abecedne znakove.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} mora sadržavati slova ili brojeve.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} mora sadržavati slova ili razmake.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} mora sadržavati simbol.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} mora sadržavati velika slova.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} mora sadržavati mala slova.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} mora sadržavati brojeve.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} mora biti simbol.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} može sadržavati samo velika slova.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} može sadržavati samo mala slova.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} mora biti prije ${date(args[0])}.`;\n    }\n    return `${sentence(name)} mora biti u prošlosti.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Format sadržaja nije ispravan i ne može biti predan.`;\n    }\n    return `${sentence(name)} mora biti između ${args[0]} i ${args[1]}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} ne odgovara zadanoj vrijednosti.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(\n        name\n      )} nije ispravan format datuma. Molimo koristite sljedeći format: ${args[0]}`;\n    }\n    return \"Ovo polje nije ispravno postavljeno i ne može biti predano.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} mora biti vrijednost između ${date(args[0])} i ${date(\n      args[1]\n    )}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Molimo upišite ispravnu email adresu.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} ne završava s ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} nije dopuštena vrijednost.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = first <= second ? first : second;\n    const max = second >= first ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} mora sadržavati barem jedan znak.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} mora imati ${max} ili manje znakova.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} trebao bi biti dugačak ${max} znakova.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} mora imati barem ${min} znakova.`;\n    }\n    return `Broj znakova za polje ${sentence(name)} mora biti između ${min} i ${max}.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} nije dozvoljena vrijednost.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Ne smije imati više od ${args[0]} ${name} polja.`;\n    }\n    return `${sentence(name)} mora imati vrijednost manju ili jednaku ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Format datoteke nije dozvoljen.\";\n    }\n    return `Format datoteke na polju ${sentence(name)} mora odgovarati: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Broj upisanih vrijednosti na polju ${name} mora biti barem ${args[0]}.`;\n    }\n    return `${sentence(name)} mora biti barem ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” nije dozvoljena vrijednost na polju ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} mora biti broj.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" ili \")} je potreban.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} je obavezno.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} ne počinje s ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Unesite valjanu URL adresu.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Odabrani datum je nevažeći.\"\n};\nvar hr = { ui: ui17, validation: validation17 };\nvar ui18 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"Hozzáadás\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Eltávolítás\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Összes eltávolítása\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Sajnáljuk, nem minden mező lett helyesen kitöltve.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Beküldés\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Nincs fájl kiválasztva\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Mozgás felfelé\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Mozgás lefelé\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Betöltés...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Töltsön be többet\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Következő\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Előző\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Adja hozzá az összes értéket\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Kiválasztott értékek hozzáadása\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Távolítsa el az összes értéket\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"A kiválasztott értékek eltávolítása\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Válassza ki a dátumot\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Dátum módosítása\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Bezárás\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Nyitott\"\n};\nvar validation18 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Fogadja el a ${name} mezőt.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} mezőnek ${date(args[0])} után kell lennie.`;\n    }\n    return `${sentence(name)} mezőnek a jövőben kell lennie.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} csak alfanumerikus karaktereket tartalmazhat.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} csak betűket és számokat tartalmazhat.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} csak betűket és szóközöket tartalmazhat.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `A ${sentence(name)} betűrendes karaktereket kell tartalmaznia.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `A ${sentence(name)} betűket vagy számokat kell tartalmaznia.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `A ${sentence(name)} betűket vagy szóközöket kell tartalmaznia.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `A ${sentence(name)} szimbólumot kell tartalmaznia.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `A ${sentence(name)} nagybetűt kell tartalmaznia.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `A ${sentence(name)} kisbetűt kell tartalmaznia.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `A ${sentence(name)} számot kell tartalmaznia.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `A ${sentence(name)} szimbólumnak kell lennie.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `A ${sentence(name)} csak nagybetűket tartalmazhat.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `A ${sentence(name)} csak kisbetűket tartalmazhat.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} mezőnek ${date(args[0])} előtt kell lennie.`;\n    }\n    return `${sentence(name)} mezőnek a múltban kell lennie.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Ez a mező hibásan lett konfigurálva, így nem lehet beküldeni.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `A ${sentence(name)} mezőnek ${a} és ${b} között kell lennie.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} nem egyezik.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} nem érvényes dátum, ${args[0]} formátumot használj`;\n    }\n    return \"Ez a mező hibásan lett konfigurálva, így nem lehet beküldeni.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} mezőnek ${date(args[0])} és ${args[1]} között kell lennie`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Kérjük, érvényes email címet adjon meg.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} mező nem a kijelölt (${list(args)}) módon ér véget.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} nem engedélyezett érték.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} mezőnek legalább egy karakteresnek kell lennie.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} mezőnek maximum ${max} karakteresnek kell lennie.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} ${max} karakter hosszúnak kell lennie.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} mezőnek minimum ${min} karakteresnek kell lennie.`;\n    }\n    return `${sentence(name)} mezőnek ${min} és ${max} karakter között kell lennie.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} nem engedélyezett érték.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Nem lehet több mint ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} nem lehet nagyobb, mint ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Nincsenek támogatott fájlformátumok.\";\n    }\n    return `${sentence(name)}-nak/nek a következőnek kell lennie: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Nem lehet kevesebb, mint ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)}-nak/nek minimum ${args[0]}-nak/nek kell lennie.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `\"${value}\" nem engedélyezett ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} mezőnek számnak kell lennie.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" vagy \")} szükséges.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} mező kötelező.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} nem a következővel kezdődik: ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Kérjük, adjon meg egy érvényes URL-t.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"A kiválasztott dátum érvénytelen.\"\n};\nvar hu = { ui: ui18, validation: validation18 };\nvar ui19 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"Tambah\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Hapus\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Hapus semua\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Maaf, tidak semua bidang formulir terisi dengan benar\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Kirim\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Tidak ada file yang dipilih\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Pindah ke atas\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Pindah ke bawah\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Memuat...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Muat lebih\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Berikutnya\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Sebelumnya\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Tambahkan semua nilai\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Tambahkan nilai yang dipilih\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Hapus semua nilai\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Hapus nilai yang dipilih\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Pilih tanggal\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Ubah tanggal\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Tutup\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Buka\"\n};\nvar validation19 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Tolong terima kolom ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} nilainya harus lebih dari waktu ${date(args[0])}.`;\n    }\n    return `${sentence(name)} harus berisi waktu di masa depan.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} hanya bisa diisi huruf alfabet.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} hanya bisa diisi huruf dan angka.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} hanya boleh berisi huruf dan spasi..`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} harus berisi karakter abjad.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} harus mengandung huruf atau angka.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} harus berisi huruf atau spasi.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} harus berisi simbol.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} harus berisi huruf besar.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} harus berisi huruf kecil.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} harus berisi angka.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} harus berupa simbol.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} hanya dapat berisi huruf besar.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} hanya dapat berisi huruf kecil.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} nilainya harus kurang dari waktu ${date(args[0])}.`;\n    }\n    return `${sentence(name)} harus berisi waktu yang sudah lampau.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Kolom ini tidak diisi dengan benar sehingga tidak bisa dikirim`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} harus bernilai diantara ${a} dan ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} nilainya tidak cocok.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} waktu tidak cocok, mohon gunakan format waktu ${args[0]}`;\n    }\n    return \"Kolom ini tidak diisi dengan benar sehingga tidak bisa dikirim\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} harus diantara waktu ${date(args[0])} dan waktu ${date(\n      args[1]\n    )}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Tolong tulis alamat email yang benar.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} nilainya tidak berakhiran dengan ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} adalah nilai yang tidak diizinkan.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} nilainya setidaknya berisi satu karakter.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(\n        name\n      )} jumlah karakternya harus kurang dari atau sama dengan ${max} karakter.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} harus ${max} karakter panjang.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(\n        name\n      )} jumlah karakternya harus lebih dari atau sama dengan ${min} karakter.`;\n    }\n    return `${sentence(\n      name\n    )} jumlah karakternya hanya bisa antara ${min} dan ${max} karakter.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} nilainya tidak diizinkan.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Tidak bisa memiliki lebih dari ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} harus lebih kecil atau sama dengan ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Format file tidak diizinkan\";\n    }\n    return `${sentence(name)} hanya bisa bertipe: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Tidak boleh kurang dari ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} setidaknya harus berisi ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” adalah nilai yang tidak diperbolehkan untuk ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} harus berupa angka.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" atau \")} diperlukan`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} harus diisi.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} tidak dimulai dengan ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Harap masukkan URL yang valid.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Tanggal yang dipilih tidak valid.\"\n};\nvar id = { ui: ui19, validation: validation19 };\nvar ui20 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"Bæta við\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Fjarlægja\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Fjarlægja allt\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Því miður, það er ekki búið að fylla rétt inn í alla reiti.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Senda\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Engin skrá valin\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Færa upp\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Færa niður\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Hleðsla...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Sækja meira\",\n  /**\n   * Show on buttons that navigate state forward\n   */\n  next: \"Áfram\",\n  /**\n   * Show on buttons that navigate state backward\n   */\n  prev: \"Til baka\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Bæta við öllum gildum\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Bæta við völdum gildum\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Fjarlægja öll gildi\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Fjarlægja valin gildi\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Velja dagsetningu\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Breyta dagsetningu\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Loka\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Opið\"\n};\nvar validation20 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Vinsamlegast samþykktu ${name}`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} þarf að vera eftir ${date(args[0])}.`;\n    }\n    return `${sentence(name)} þarf að vera í framtíðinni.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} má einungis innihalda bókstafi.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} má einungis innihalda bókstafi og tölur.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} má einungis innihalda bókstafi og bil.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} verður að innihalda bókstafi.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} verður að innihalda bókstafi eða tölur.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} verður að innihalda bókstafi eða bil.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} verður að innihalda tákn.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} verður að innihalda hástaf.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} verður að innihalda lágstaf.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} verður að innihalda tölur.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} verður að vera tákn.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} má einungis innihalda hástafi.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} má einungis innihalda lágstafi.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} þarf að vera á undan ${date(args[0])}.`;\n    }\n    return `${sentence(name)} þarf að vera liðin.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Þessi reitur var ekki rétt stilltur.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} þarf að vera á milli ${a} og ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} passar ekki.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(\n        name\n      )} er ekki gild dagsetning, vinsamlegast hafið dagsetninguna í formi ${args[0]}`;\n    }\n    return \"Þessi reitur var ekki rétt stilltur\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} þarf að vera á milli ${date(args[0])} og ${date(\n      args[1]\n    )}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Vinsamlegast sláðu inn gilt netfang.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} endar ekki á ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} er ekki leyfilegt gildi.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} þarf að vera að minnsta kosti einn stafur.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} þarf að vera færri en eða nákvæmlega ${max} stafir.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} þarf að vera ${max} stafir að lengd.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} þarf að vera fleiri en eða nákvæmlega ${min} stafir.`;\n    }\n    return `${sentence(name)} þarf að vera á milli ${min} og ${max} stafir.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} er ekki leyfilegt gildi.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Ekki hægt að hafa fleiri en ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} þarf að vera minna en eða nákvæmlega ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Ekki leyfileg tegund skráar.\";\n    }\n    return `${sentence(name)} þarf að vera af tegundinni: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Ekki hægt að hafa færri en ${args[0]} ${name}.`;\n    }\n    return `Þarf að vera að minnsta kosti ${args[0]} ${name}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” er ekki leyfilegt fyrir ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} þarf að vera tala.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" or \")} is required.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} er skilyrt.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} byrjar ekki á ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Vinsamlegast sláðu inn gilda slóð.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Valin dagsetning er ógild\"\n};\nvar is = { ui: ui20, validation: validation20 };\nvar ui21 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"Inserisci\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Rimuovi\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Rimuovi tutti\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Ci dispiace, non tutti i campi sono compilati correttamente.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Invia\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Nessun file selezionato\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Sposta in alto\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Sposta giù\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Caricamento...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Carica altro\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Prossimo\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Precedente\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Aggiungi tutti i valori\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Aggiungi valori selezionati\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Rimuovi tutti i valori\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Rimuovi i valori selezionati\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Scegli la data\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Cambia data\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Chiudi\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Aperta\"\n};\nvar validation21 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Si prega di accettare ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `la data ${sentence(name)} deve essere successiva ${date(args[0])}.`;\n    }\n    return `la data ${sentence(name)} deve essere nel futuro.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} può contenere solo caratteri alfanumerici.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} può contenere solo lettere e numeri.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} può contenere solo lettere e spazi.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} deve contenere caratteri alfabetici.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} deve contenere lettere o numeri.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} deve contenere lettere o spazi.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} deve contenere un simbolo.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} must contain uppercase.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} deve contenere lettere minuscole.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} deve contenere numeri.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} deve essere un simbolo.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} può contenere solo lettere maiuscole.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} può contenere solo lettere minuscole.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `la data ${sentence(name)} deve essere antecedente ${date(args[0])}.`;\n    }\n    return `${sentence(name)} deve essere nel passato.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Questo campo è stato configurato male e non può essere inviato.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} deve essere tra ${a} e ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} non corrisponde.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} non è una data valida, per favore usa il formato ${args[0]}`;\n    }\n    return \"Questo campo è stato configurato in modo errato e non può essere inviato.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} deve essere tra ${date(args[0])} e ${date(args[1])}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Per favore inserire un indirizzo email valido.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} non termina con ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} non è un valore consentito.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} deve contenere almeno un carattere.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} deve essere minore o uguale a ${max} caratteri.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} deve contenere ${max} caratteri.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} deve essere maggiore o uguale a ${min} caratteri.`;\n    }\n    return `${sentence(name)} deve essere tra ${min} e ${max} caratteri.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} non è un valore consentito.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Non può avere più di ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} deve essere minore o uguale a ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Formato file non consentito.\";\n    }\n    return `${sentence(name)} deve essere di tipo: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Non può avere meno di ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} deve essere almeno ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `\"${value}\" non è un ${name} consentito.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} deve essere un numero.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" o \")} è richiesto.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} è richiesto.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} non inizia con ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Inserisci un URL valido.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"La data selezionata non è valida.\"\n};\nvar it = { ui: ui21, validation: validation21 };\nvar ui22 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"追加\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"削除\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"全て削除\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"項目が正しく入力されていません。\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"送信\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"ファイルが選択されていません\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"上に移動\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"下へ移動\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"読み込み中...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"さらに読み込む\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"[次へ]\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"前へ\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"すべての値を追加\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"選択した値を追加\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"すべての値を削除\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"選択した値を削除\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"日付を選択\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"日付を変更\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"閉じる\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"[開く]\"\n};\nvar validation22 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `${name}の同意が必要です。`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)}は${date(args[0])}より後の日付である必要があります。`;\n    }\n    return `${sentence(name)}は将来の日付でなければなりません。`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)}には英字のみを含めることができます。`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)}には、文字と数字のみを含めることができます。`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)}には、文字とスペースのみを含めることができます。`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} にはアルファベット文字が含まれている必要があります。`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} には文字または数字を含める必要があります。`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} には文字またはスペースを含める必要があります。`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} には記号が含まれている必要があります。`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} には大文字を含める必要があります。`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} には小文字を含める必要があります。`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} には数字が含まれている必要があります。`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} はシンボルでなければなりません。`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} には大文字しか使用できません`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} には小文字しか使用できません。`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)}は${date(args[0])}より前の日付である必要があります。`;\n    }\n    return `${sentence(name)}は過去の日付である必要があります。`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `このフィールドは正しく構成されていないため、送信できません。`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)}は${a}と${b}の間にある必要があります。`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)}が一致しません。`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)}は有効な日付ではありません。${args[0]}の形式を使用してください。`;\n    }\n    return \"このフィールドは正しく構成されておらず、送信できません。\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)}は${date(args[0])}と${date(\n      args[1]\n    )}の間にある必要があります。`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"有効なメールアドレスを入力してください。\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)}は${list(args)}で終わっていません。`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)}は許可された値ではありません。`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)}は少なくとも1文字である必要があります。`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)}は${max}文字以下である必要があります。`;\n    }\n    if (min === max) {\n      return `${sentence(name)} の長さは ${max} 文字でなければなりません。`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)}は${min}文字以上である必要があります。`;\n    }\n    return `${sentence(name)}は${min}から${max}文字の間でなければなりません。`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)}は許可された値ではありません。`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `${name}は${args[0]}を超えることはできません。`;\n    }\n    return `${sentence(name)}は${args[0]}以下である必要があります。`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"ファイル形式は許可されていません。\";\n    }\n    return `${sentence(name)}は${args[0]}である必要があります。`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `${name}は${args[0]}未満にすることはできません。`;\n    }\n    return `${sentence(name)}は少なくとも${args[0]}である必要があります。`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}”は許可された${name}ではありません。`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)}は数値でなければなりません。`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\"または\")}${labels}が必要です。`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)}は必須です。`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)}は${list(args)}で始まっていません。`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `有効な URL を入力してください。`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"選択した日付は無効です。\"\n};\nvar ja = { ui: ui22, validation: validation22 };\nvar ui23 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"қосу\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Жою\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Барлығын жою\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Кешіріңіз, барлық өрістер дұрыс толтырылмаған.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Жіберу\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Ешбір файл таңдалмады\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Жоғары жылжу\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Төмен жылжытыңыз\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Жүктеу...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Көбірек жүктеңіз\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Келесі\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Алдыңғы\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Барлық мәндерді қосыңыз\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Таңдалған мәндерді қосыңыз\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Барлық мәндерді алып тастаңыз\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Таңдалған мәндерді алып тастаңыз\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Күнді таңдаңыз\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Өзгерту күні\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Жабу\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Ашық\"\n};\nvar validation23 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `қабылдаңыз ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} кейін болуы керек ${date(args[0])}.`;\n    }\n    return `${sentence(name)} болашақта болуы керек.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} тек алфавиттік таңбаларды қамтуы мүмкін.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} тек әріптер мен сандардан тұруы мүмкін.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} тек әріптер мен бос орындар болуы мүмкін.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} алфавиттік таңбалардан тұруы керек.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} құрамында әріптер немесе сандар болуы керек.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} құрамында әріптер немесе бос орындар болуы керек.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} символы болуы керек.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} құрамында бас әріптер болуы керек.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} кіші әріп болуы керек.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} сандардан тұруы керек.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} символы болуы керек.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} тек бас әріптерден тұруы мүмкін.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} құрамында тек кіші әріптер болуы мүмкін.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} бұрын болуы керек ${date(args[0])}.`;\n    }\n    return `${sentence(name)} өткенде болуы керек.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Бұл өріс қате конфигурацияланған және оны жіберу мүмкін емес.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} арасында болуы керек ${a} және ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} сәйкес келмейді.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} жарамды күн емес, пішімді пайдаланыңыз ${args[0]}`;\n    }\n    return \"Бұл өріс қате конфигурацияланған және оны жіберу мүмкін емес\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} арасында болуы керек ${date(args[0])} және ${date(\n      args[1]\n    )}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Өтінеміз қолданыстағы электронды пошта адресін енгізіңіз.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} -мен бітпейді ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} рұқсат етілген мән емес.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} кем дегенде бір таңба болуы керек.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} кем немесе тең болуы керек ${max} кейіпкерлер.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} ${max} таңбалары болуы керек.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} артық немесе тең болуы керек ${min} кейіпкерлер.`;\n    }\n    return `${sentence(name)} арасында болуы керек ${min} және ${max} кейіпкерлер.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} рұқсат етілген мән емес.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `артық болуы мүмкін емес ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} кем немесе тең болуы керек ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Файл пішімдері рұқсат етілмейді.\";\n    }\n    return `${sentence(name)} типте болуы керек: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `кем болуы мүмкін емес ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} кем дегенде болуы керек ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” рұқсат етілмейді ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} сан болуы керек.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" не \")} қажет.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} талап етіледі.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} -ден басталмайды ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Жарамды URL мекенжайын енгізіңіз.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Таңдалған күн жарамсыз.\"\n};\nvar kk = { ui: ui23, validation: validation23 };\nvar ui24 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"추가\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"제거\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"모두 제거\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"모든 값을 채워주세요\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"제출하기\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"선택된 파일이 없습니다\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"위로 이동\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"아래로 이동\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"로드 중...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"더 불러오기\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"다음\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"이전\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"모든 값 추가\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"선택한 값 추가\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"모든 값 제거\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"선택한 값 제거\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"날짜 선택\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"날짜 변경\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"닫기\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"열기\"\n};\nvar validation24 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `${name} 올바른 값을 선택 해주세요`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} ${date(args[0])} 이후여야 합니다`;\n    }\n    return `${sentence(name)} 미래의 날짜여야합니다`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} 알파벳 문자만 포함할 수 있습니다`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} 문자와 숫자만 포함될 수 있습니다`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} 문자와 공백만 포함할 수 있습니다.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} 에는 알파벳 문자가 포함되어야 합니다.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} 에는 문자나 숫자가 포함되어야 합니다.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} 에는 문자나 공백이 포함되어야 합니다.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} 에는 기호를 포함해야 합니다.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} 는 대문자를 포함해야 합니다.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} 는 소문자를 포함해야 합니다.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} 에는 숫자가 포함되어야 합니다.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} 는 기호여야 합니다.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} 는 대문자만 포함할 수 있습니다.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} 는 소문자만 포함할 수 있습니다.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} ${date(args[0])} 이전여야 합니다`;\n    }\n    return `${sentence(name)} 과거의 날짜여야합니다`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `잘못된 구성으로 제출할 수 없습니다`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} ${a}와 ${b} 사이여야 합니다`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} 일치하지 않습니다`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} 유효한 날짜가 아닙니다. ${args[0]}과 같은 형식을 사용해주세요`;\n    }\n    return \"잘못된 구성으로 제출할 수 없습니다\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} ${date(args[0])}에서 ${date(args[1])} 사이여야 합니다`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"올바른 이메일 주소를 입력해주세요\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} ${list(args)}로 끝나지 않습니다`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} 허용되는 값이 아닙니다`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} 하나 이상의 문자여야 합니다`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} ${max}자 이하여야 합니다`;\n    }\n    if (min === max) {\n      return `${sentence(name)} 는 ${max} 자 길이여야 합니다.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} ${min} 문자보다 크거나 같아야 합니다`;\n    }\n    return `${sentence(name)} ${min}에서 ${max}자 사이여야 합니다`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} 허용되는 값이 아닙니다`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `${args[0]} ${name} 초과할 수 없습니다`;\n    }\n    return `${sentence(name)} ${args[0]}보다 작거나 같아야 합니다`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"파일 형식이 허용되지 않습니다\";\n    }\n    return `${sentence(name)} ${args[0]} 유형이어야 합니다`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `${args[0]} ${name}보다 작을 수 없습니다`;\n    }\n    return `${sentence(name)} ${args[0]} 이상이어야 합니다`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `${value}\" 허용되지 않는 ${name}입니다`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} 숫자여야 합니다`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" 또는 \")}가 필요합니다.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} 필수 값입니다`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} ${list(args)}로 시작하지 않습니다`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `유효한 URL을 입력하십시오.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"선택한 날짜가 잘못되었습니다.\"\n};\nvar ko = { ui: ui24, validation: validation24 };\nfunction getByQuantity(quantity, vienetas, vienetai, vienetu) {\n  const lastTwoDigits = quantity.toString().slice(-2);\n  const parsedQuantity = parseInt(lastTwoDigits);\n  if (parsedQuantity > 10 && parsedQuantity < 20 || parsedQuantity % 10 === 0) {\n    return vienetu;\n  }\n  if (parsedQuantity === 1 || parsedQuantity % 10 === 1) {\n    return vienetas;\n  }\n  return vienetai;\n}\nvar ui25 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"Pridėti\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Pašalinti\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Pašalinti visus\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Atsiprašome, ne visi laukai užpildyti teisingai.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Pateikti\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Nepasirinktas joks failas\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Aukštyn\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Žemyn\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Kraunama...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Daugiau\",\n  /**\n   * Show on buttons that navigate state forward\n   */\n  next: \"Kitas\",\n  /**\n   * Show on buttons that navigate state backward\n   */\n  prev: \"Ankstesnis\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Pridėti visas reikšmes\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Pridėti pasirinktas reikšmes\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Pašalinti visas reikšmes\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Pašalinti pasirinktas reikšmes\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Pasirinkti datą\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Pakeisti datą\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Uždaryti\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Atidaryti\"\n};\nvar validation25 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Prašome priimti ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} turi būti po ${date(args[0])}.`;\n    }\n    return `${sentence(name)} turi būti ateityje.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} gali būti tik abėcėlės simboliai.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} gali būti tik raidės ir skaičiai.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} gali būti tik raidės ir tarpai.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} turi būti abėcėlės simbolių.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} turi būti raidžių arba skaičių.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} turi būti raidžių arba tarpų.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} turi būti simbolių.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} turi būti didžioji raidė.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} turi būti mažoji raidė.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} turi būti skaičių.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} turi būti simbolis.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} turi būti tik didžiosios raidės.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} turi būti tik mažosios raidės.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} turi būti prieš ${date(args[0])}.`;\n    }\n    return `${sentence(name)} turi būti praeityje.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Šis laukas buvo sukonfigūruotas neteisingai ir jo negalima pateikti.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} turi būti tarp ${a} ir ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} nesutampa.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} nėra tinkama data, naudokite formatą ${args[0]}`;\n    }\n    return \"Šis laukas buvo sukonfigūruotas neteisingai ir jo negalima pateikti\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} turi būti tarp ${date(args[0])} ir ${date(args[1])}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Įveskite teisingą el. pašto adresą.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} nesibaigia su ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} nėra leistina reikšmė.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} turi būti bent vienas simbolis.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} turi būti mažiau arba lygiai ${max} ${getByQuantity(\n        max,\n        \"simbolis\",\n        \"simboliai\",\n        \"simbolių\"\n      )}.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} turi būti iš ${max} ${getByQuantity(\n        max,\n        \"simbolio\",\n        \"simbolių\",\n        \"simbolių\"\n      )}.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} turi būti daugiau arba lygiai ${min} ${getByQuantity(\n        min,\n        \"simbolis\",\n        \"simboliai\",\n        \"simbolių\"\n      )}.`;\n    }\n    return `${sentence(name)} turi būti tarp ${min} ir ${max} simbolių.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} nėra leistina reikšmė.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Negali turėti daugiau nei ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} turi būti mažiau arba lygiai ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Neleidžiami jokie failų formatai.\";\n    }\n    return `${sentence(name)} turi būti tokio tipo: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Negali turėti mažiau nei ${args[0]} ${name}.`;\n    }\n    return `Turi būti bent ${args[0]} ${name} .`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” nėra leidžiamas ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} turi būti skaičius.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" arba \")} yra privaloma.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} yra privaloma.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} neprasideda su ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Įveskite teisingą URL.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Pasirinkta data yra netinkama.\"\n};\nvar lt = { ui: ui25, validation: validation25 };\n\n// packages/i18n/src/locales/lv.ts\nvar ui26 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"Pievienot\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Noņemt\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Noņemt visus\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Piedodiet, visi lauki nav aizpildīti.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Iesniegt\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Nav izvēlēts fails\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Uz augšu\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Uz leju\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Ielādējas...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Ielādēt vēl\",\n  /**\n   * Show on buttons that navigate state forward\n   */\n  next: \"Tālāk\",\n  /**\n   * Show on buttons that navigate state backward\n   */\n  prev: \"Atpakaļ\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Pievienot visas vērtības\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Pievienojiet izvēlēto vērtību\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Noņemt visas vērtības\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Noņemt izvēlētās vērtības\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Izvēlieties datumu\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Mainīt datumu\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Aizvērt\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Atvērt\"\n};\nvar validation26 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Lūdzu apstipriniet ${name}`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${name} jābūt pēc ${date(args[0])}.`;\n    }\n    return `${name} jābūt pēc šodienas datuma.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${name} var saturēt tikai alfabētiskās rakstzīmes.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${name} var saturēt tikai burtus un ciparus.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${name} var saturēt tikai burtus un atstarpes.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${name} jābūt pirms ${date(args[0])}.`;\n    }\n    return `${name} jābūt pirms šodienas datuma.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Šis lauks tika aizpildīts nepareizi un nevar tikt iesniegts.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${name} jābūt starp ${a} un ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${name} nesakrīt.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${name} nav pareizs datums, lūdzu lietojiet formātu ${args[0]}`;\n    }\n    return \"Šis lauks tika aizpildīts nepareizi un nevar tikt iesniegts.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${name} jābūt starp ${date(args[0])} un ${date(args[1])}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Lūdzu ierakstiet pareizu e-pasta adresi.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${name} nebeidzas ar ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${name} nav atļauta vērtība.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${name} jābūt vismaz vienam simbolam.`;\n    }\n    if (min == 0 && max) {\n      return `${name} jābūt mazāk par vai ${max} simboliem.`;\n    }\n    if (min === max) {\n      return `${name} jābūt ${max} simbolu garumā.`;\n    }\n    if (min && max === Infinity) {\n      return `${name} jābūt vismaz ${min} simboliem.`;\n    }\n    return `${name} jābūt starp ${min} un ${max} simboliem.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${name} nav atļauta vērtība.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Nevar būt vairāk par ${args[0]} ${name}.`;\n    }\n    return `${name} nevar būt mazāk par ${args[0]} vai ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Atļauti nenoteikti faila formāti.\";\n    }\n    return `${sentence(name)} faila formāti var būt šādi: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Nevar būt mazāk par ${args[0]} ${name}.`;\n    }\n    return `Jābūt vismaz ${args[0]} ${name}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” nav atļauta vērtība iekš ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${name} jābūt ciparam.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${name} ir obligāti jāaizpilda`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${name} nesākas ar ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Lūdzu pievienojiet pareizu URL.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Izvēlētais datums ir nepareizs.\"\n};\nvar lv = { ui: ui26, validation: validation26 };\n\n// packages/i18n/src/locales/mn.ts\nvar ui27 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"Нэмэх\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Хасах\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Бүгдийг хасах\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Уучлраарай, зарим нүдэн дахь өгөгдөл дутуу байна.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Илгээх\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Файл сонгоогүй байна\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Дээшээ\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Доошоо\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Ачааллаж байна...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Нэмж ачааллах\",\n  /**\n   * Show on buttons that navigate state forward\n   */\n  next: \"Дараагийн\",\n  /**\n   * Show on buttons that navigate state backward\n   */\n  prev: \"Өмнөх\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Бүх утгуудыг нэмэх\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Сонгогдсон утгуудыг нэмэх\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Бүх утгуудыг устгах\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Сонгогдсон утгуудыг хасах\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Огноо сонгох\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Огноо өөрчлөх\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Хаах\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Нээлттэй\"\n};\nvar validation27 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `${name} утгыг зөвшөөрнө үү.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} нь ${date(args[0])}-ны дараа орох ёстой.`;\n    }\n    return `${sentence(name)} утга ирээдүйг заах ёстой.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} зөвхөн үсэг агуулах ёстой.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} зөвхөн үсэг болон тоог агуулах ёстой.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} зөвхөн үсэг болон зай агуулах ёстой.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} нь ${date(args[0])}-ны өмнө байх ёстой.`;\n    }\n    return `${sentence(name)} өнгөрсөн огноо байх ёстой.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Энэ нүдэн дэхь өгөгдөл буруу учраас илгээх боломжгүй.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} нь заавал ${a}, ${b} хоёрын дунд байх ёстой.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} таарахгүй байна.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} нь хүчинтэй огноо биш тул ${args[0]} гэсэн огноог ашиглаарай.`;\n    }\n    return \"Энэхүү нүд буруу тул цааш илгээх боломжгүй.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} нь заавал ${date(args[0])}, ${date(\n      args[1]\n    )} хоёр огноон дунд байх ёстой.`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Та хүчинтэй имейл хаягаа оруулна уу.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} нь ${list(args)} гэсэн утгаар төгсөөгүй байна.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} нь зөвшөөрөгдөх утга биш.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} дээр хаяж нэг үсэг байх ёстой`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)}-н урт нь ${max}-ээс ихгүй байх ёстой.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} нь ${max} урт байвал зүгээр.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)}-н урт нь ${min}-ээс их буюу тэнцүү байж болно.`;\n    }\n    return `${sentence(name)}-н урт нь ${min}, ${max} хоёрын дунд байх ёстой.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} нь зөвшөөрөгдөх утга биш.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `${name} нь ${args[0]}-аас их байж болохгүй.`;\n    }\n    return `${sentence(name)} нь ${args[0]}-тай тэнцүү эсвэл бага байх ёстой.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Файлын формат буруу.\";\n    }\n    return `${sentence(name)} төрөл нь ${args[0]} байх ёстой.`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `${name} нь ${args[0]}-аас их байж болохгүй.`;\n    }\n    return `${name} нь дор хаяж ${args[0]}-тай тэнцүү байх ёстой.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” бол зөвшөөрөгдөх ${name} гэсэн утга биш.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} зөвхөн тоо байх ёстой.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} байх ёстой.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} нь ${list(args)}-ээр эхлээгүй байна.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Хүчннтай URL оруулна уу.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Сонгосон огноо буруу байна.\"\n};\nvar mn = { ui: ui27, validation: validation27 };\nvar ui28 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"Legg til\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Fjern\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Fjern alle\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Beklager, noen felter er ikke fylt ut korrekt.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Send inn\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Ingen fil valgt\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Flytt opp\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Flytt ned\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Laster...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Last mer\",\n  /**\n   * Show on buttons that navigate state forward\n   */\n  next: \"Neste\",\n  /**\n   * Show on buttons that navigate state backward\n   */\n  prev: \"Forrige\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Legg til alle verdier\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Legg til valgte verdier\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Fjern alle verdier\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Fjern valgte verdier\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Velg dato\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Endre dato\"\n};\nvar validation28 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Vennligst aksepter ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} må være senere enn ${date(args[0])}.`;\n    }\n    return `${sentence(name)} må være i fremtiden.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} kan bare inneholde alfabetiske tegn.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} kan bare inneholde bokstaver og tall.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} kan bare inneholde bokstaver og mellomrom.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} must contain alphabetical characters.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} must contain letters and numbers.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} must contain letters and spaces.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} must contain symbol.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} must contain uppercase.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} must contain lowercase.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} must contain number.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} can only contain symbol.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} can only contain uppercase.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} can only contain lowercase.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} må være tidligere enn ${date(args[0])}.`;\n    }\n    return `${sentence(name)} må være i fortiden.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Dette feltet er feilkonfigurert og kan ikke innsendes.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} må være mellom ${a} og ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} stemmer ikke overens.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} er ikke en gyldig dato, vennligst bruk formatet ${args[0]}`;\n    }\n    return \"Dette feltet er feilkonfigurert og kan ikke innsendes.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} må være mellom ${date(args[0])} og ${date(args[1])}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Vennligst oppgi en gyldig epostadresse.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} slutter ikke med ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} er ikke en tillatt verdi.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} må ha minst ett tegn.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} må ha mindre enn eller nøyaktig ${max} tegn.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} skal være ${max} tegn langt.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} må ha mer enn eller nøyaktig ${min} tegn.`;\n    }\n    return `${sentence(name)} må ha mellom ${min} og ${max} tegn.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} er ikke en tillatt verdi.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Kan ikke ha mer enn ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} må være mindre enn eller nøyaktig ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Ingen tillatte filformater.\";\n    }\n    return `${sentence(name)} må være av typen: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Kan ikke ha mindre enn ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} må være minst ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” er ikke en tillatt ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} må være et tall.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" eller \")} er nødvendig.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} er påkrevd.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} starter ikke med ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Vennligst inkluder en gyldig url.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Den valgte datoen er ugyldig.\"\n};\nvar nb = { ui: ui28, validation: validation28 };\nvar ui29 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"Toevoegen\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Verwijderen\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Alles verwijderen\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Sorry, niet alle velden zijn correct ingevuld.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Versturen\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Geen bestand gekozen\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Naar boven gaan\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Naar beneden verplaatsen\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Aan het laden...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Meer laden\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Vervolgens\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Voorgaand\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Alle waarden toevoegen\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Geselecteerde waarden toevoegen\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Alle waarden verwijderen\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Geselecteerde waarden verwijderen\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Kies een datum\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Datum wijzigen\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Sluiten\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Open\"\n};\nvar validation29 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Accepteer de ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} moet na ${date(args[0])} zijn.`;\n    }\n    return `${sentence(name)} moet in de toekomst liggen.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} mag alleen alfabetische tekens bevatten.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} mag alleen letters en cijfers bevatten.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} mag alleen letters en spaties bevatten.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} moet alfabetische tekens bevatten.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} moet letters of cijfers bevatten.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} moet letters of spaties bevatten.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} moet een symbool bevatten.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} moet hoofdletters bevatten.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} moet kleine letters bevatten.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} moet cijfers bevatten.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} moet een symbool zijn.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} mag alleen hoofdletters bevatten.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} mag alleen kleine letters bevatten.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} moet vóór ${date(args[0])} vallen.`;\n    }\n    return `${sentence(name)} moet in het verleden liggen.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Dit veld is onjuist geconfigureerd en kan niet worden verzonden.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} moet tussen ${a} en ${b} liggen.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} komt niet overeen.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} is geen geldige datum, gebruik de notatie ${args[0]}`;\n    }\n    return \"Dit veld is onjuist geconfigureerd en kan niet worden verzonden\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} moet tussen ${date(args[0])} en ${date(args[1])} liggen`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Vul een geldig e-mailadres in.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} eindigt niet met ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} is geen toegestane waarde.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} moet minimaal één teken zijn.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} mag maximaal ${max} tekens lang zijn.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} moet ${max} tekens lang zijn.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} moet minimaal ${min} tekens lang zijn.`;\n    }\n    return `${sentence(name)} moet tussen de ${min} en ${max} tekens zijn.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} is geen toegestane waarde.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Mag niet meer dan ${args[0]} ${name} hebben.`;\n    }\n    return `${sentence(name)} moet kleiner zijn dan of gelijk zijn aan ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Geen bestandsformaten toegestaan.\";\n    }\n    return `${sentence(name)} moet van het type: ${args[0]} zijn`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Mag niet minder dan ${args[0]} ${name} hebben.`;\n    }\n    return `${sentence(name)} moet minimaal ${args[0]} zijn.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `\"${value}\" is geen toegestane ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} moet een getal zijn.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" of \")} is vereist.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} is verplicht.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} begint niet met ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Voer een geldige URL in.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"De geselecteerde datum is ongeldig.\"\n};\nvar nl = { ui: ui29, validation: validation29 };\nvar ui30 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"Dodaj\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Usuń\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Usuń wszystko\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Nie wszystkie pola zostały wypełnione poprawnie.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Wyślij\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Nie wybrano pliku\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Przesuń w górę\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Przesuń w dół\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Ładowanie...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Załaduj więcej\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Kolejny\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Poprzednia\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Dodaj wszystkie wartości\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Dodaj wybrane wartości\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Usuń wszystkie wartości\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Usuń wybrane wartości\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Wybierz datę\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Zmień datę\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Zamknij\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Otwórz\"\n};\nvar validation30 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Proszę zaakceptować ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} musi być po ${date(args[0])}.`;\n    }\n    return `${sentence(name)} musi być w przyszłości.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `Pole ${sentence(name)} może zawierać tylko znaki alfabetyczne.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `Pole ${sentence(name)} może zawierać tylko znaki alfanumeryczne.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `Pole ${sentence(name)} mogą zawierać tylko litery i spacje.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} musi zawierać znaki alfabetyczne.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} musi zawierać litery lub cyfry.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} musi zawierać litery lub spacje.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} musi zawierać symbol.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} musi zawierać wielkie litery.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} musi zawierać małe litery.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} musi zawierać liczby.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} musi być symbolem.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} może zawierać tylko wielkie litery.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} może zawierać tylko małe litery.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} musi być przed ${date(args[0])}.`;\n    }\n    return `${sentence(name)} musi być w przeszłości.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Pole zostało wypełnione niepoprawnie i nie może zostać wysłane.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `Wartość pola ${sentence(name)} musi być pomiędzy ${a} i ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} nie pokrywa się.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `Wartość pola ${sentence(\n        name\n      )} nie jest poprawną datą, proszę użyć formatu ${args[0]}`;\n    }\n    return \"To pole zostało wypełnione niepoprawnie i nie może zostać wysłane\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `Data w polu ${sentence(name)} musi być pomiędzy ${date(args[0])} i ${date(\n      args[1]\n    )}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Proszę wpisać poprawny adres email.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `Pole ${sentence(name)} nie kończy się na ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `Pole ${sentence(name)} nie jest dozwoloną wartością.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `Pole ${sentence(name)} musi posiadać minimum jeden znak.`;\n    }\n    if (min == 0 && max) {\n      return `Pole ${sentence(name)} musi zawierać ${max} lub mniej znaków.`;\n    }\n    if (min && max === Infinity) {\n      return `Pole ${sentence(name)} musi zawierać ${min} lub więcej znaków.`;\n    }\n    if (min === max) {\n      return `Pole ${sentence(name)} musi mieć ${min} znaków.`;\n    }\n    return `Pole ${sentence(name)} musi mieć ${min}-${max} znaków.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `Pole ${sentence(name)} zawiera niedozwolone znaki.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Nie można mieć więcej niż ${args[0]} ${name}.`;\n    }\n    return `Wartość pola ${sentence(name)} musi być mniejsza lub równa ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Nie podano dozwolonych typów plików.\";\n    }\n    return `${sentence(name)} musi być typem: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Musisz podać więcej niż ${args[0]} ${name}.`;\n    }\n    return ` Musisz podać conajmniej ${args[0]} ${sentence(name)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name }) {\n    return `Wartość pola ${name} jest niedozwolona.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} musi być numerem.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" lub \")} wymagany jest.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `Pole ${sentence(name)} jest wymagane.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `Wartośc pola ${sentence(name)} nie zaczyna się od ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Wprowadź prawidłowy adres URL.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Wybrana data jest nieprawidłowa.\"\n};\nvar pl = { ui: ui30, validation: validation30 };\nvar ui31 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"Incluir\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Remover\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Remover todos\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Desculpe, alguns campos não foram preenchidos corretamente.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Enviar\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Nenhum arquivo selecionado.\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Mover para cima\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Mover para baixo\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Carregando...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Carregar mais\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Próximo\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Anterior\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Adicione todos os valores\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Adicionar valores selecionados\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Remover todos os valores\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Remover valores selecionados\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Escolha a data\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Data da alteração\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Fechar\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Aberto\"\n};\nvar validation31 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Por favor aceite o ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} precisa ser depois de ${date(args[0])}.`;\n    }\n    return `${sentence(name)} precisa ser no futuro.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} precisa conter apenas letras.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} pode conter apenas letras e números.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} pode conter apenas números e espaços.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} deve conter caracteres alfabéticos.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} deve conter letras ou números.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} deve conter letras ou espaços.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} deve conter um símbolo.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} deve conter letras maiúsculas.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} deve conter letras minúsculas.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} deve conter números.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} deve ser um símbolo.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} só pode conter letras maiúsculas.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} só pode conter letras minúsculas.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} precisa ser antes de ${date(args[0])}.`;\n    }\n    return `${sentence(name)} precisa ser no passado.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Este campo não foi configurado corretamente e não pode ser submetido.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} precisa ser entre ${a} e ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} não é igual.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} não é uma data válida, por favor use este formato ${args[0]}`;\n    }\n    return \"Este campo não foi configurado corretamente e não pode ser submetido.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} precisa ser entre ${date(args[0])} e ${date(args[1])}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Por favor, insira um endereço de email válido.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} não termina com ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} não é um valor permitido.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = first <= second ? first : second;\n    const max = second >= first ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} precisa conter ao menos um caractere.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} precisa ser menor ou igual a ${max} caracteres.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} precisa conter ${max} caracteres.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} precisa ser maior ou igual a ${min} caracteres.`;\n    }\n    return `${sentence(name)} precisa ter entre ${min} e ${max} caracteres.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} não é um valor permitido.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Não pode ter mais de ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} precisa ser menor ou igual a ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Não há formatos de arquivos permitidos.\";\n    }\n    return `${sentence(name)} precisa ser do tipo: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Não pode ter menos de ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} precisa ser pelo menos ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” não é um(a) ${name} permitido(a).`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} precisa ser um número.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" ou \")} é necessário.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} é obrigatório.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} não começa com ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Por favor, insira uma url válida.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"A data selecionada é inválida.\"\n};\nvar pt = { ui: ui31, validation: validation31 };\nvar ui32 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"Adăugare\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Elimină\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Elimină tot\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Pare rău, unele câmpuri nu sunt corect completate.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Trimite\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Nu este selectat nici un fișier\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Mutare în sus\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Mutare în jos\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Se încarcă...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Încărcați mai mult\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Urmatorul\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Precedent\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Adăugați toate valorile\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Adăugarea valorilor selectate\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Eliminați toate valorile\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Eliminați valorile selectate\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Alege data\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Modificați data\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Închide\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Deschis\"\n};\nvar validation32 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Te rog acceptă ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} trebuie să fie după ${date(args[0])}.`;\n    }\n    return `${sentence(name)} trebuie sa fie în viitor.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} poate conține doar caractere alafetice.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} poate conține doar litere și numere.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} poate conține doar litere și spații.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} trebuie să conțină caractere alfabetice.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} trebuie să conțină litere sau numere.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} trebuie să conțină litere sau spații.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} trebuie să conțină simbol.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} trebuie să conțină majuscule.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} trebuie să conțină litere mici.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} trebuie să conțină numere.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} trebuie să fie un simbol.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} poate conține doar litere mari.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} poate conține doar litere mici.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} trebuie să preceadă ${date(args[0])}.`;\n    }\n    return `${sentence(name)} trebuie să fie în trecut.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Câmpul a fost configurat incorect și nu poate fi trimis.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} trebuie să fie între ${a} și ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} nu se potrivește.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} nu este validă, te rog foloște formatul ${args[0]}`;\n    }\n    return \"Câmpul a fost incorect configurat și nu poate fi trimis.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} trebuie să fie între ${date(args[0])} și ${date(\n      args[1]\n    )}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Te rog folosește o adresă de email validă.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} nu se termină cu ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} nu este o valoare acceptată.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} trebuie sa conțină cel puțin un caracter.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} trebuie sa aibă cel mult ${max} caractere.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} ar trebui să aibă ${max} caractere lungi.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} trebuie să aibă cel puțin ${min} caractere.`;\n    }\n    return `${sentence(name)} trebuie să aibă între ${min} și ${max} caractere.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} nu este o valoare acceptată.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Nu poate avea mai mult decat ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} trebuie să fie cel mult egal cu ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Tipul de fișier neacceptat.\";\n    }\n    return `${sentence(name)} trebuie să fie de tipul: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Nu poate avea mai puțin decât ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} trebuie să fie cel puțin ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” nu este o valoare acceptă pentru ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} trebuie să fie un număr.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" sau \")} este necesar.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} este necesar.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} nu începe cu ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Introduceți o adresă URL validă.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Data selectată este nevalidă.\"\n};\nvar ro = { ui: ui32, validation: validation32 };\nvar ui33 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"Добавить\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Удалить\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Убрать все\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Извините, не все поля заполнены верно.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Отправить\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Файл не выбран\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Переместить вверх\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Переместить вниз\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Загрузка...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Загрузить больше\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Следующий\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Предыдущий\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Добавить все значения\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Добавить выбранные значения\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Удалить все значения\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Удалить выбранные значения\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Выберите дату\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Изменить дату\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Закрыть\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Открыть\"\n};\nvar validation33 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Пожалуйста, примите ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `Дата ${sentence(name)} должна быть позже ${date(args[0])}.`;\n    }\n    return `Дата ${sentence(name)} должна быть в будущем.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `Поле ${sentence(name)} может содержать только буквы.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `Поле ${sentence(name)} может содержать только буквы и цифры.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} могут содержать только буквы и пробелы.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} должен содержать алфавитные символы.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} должен содержать буквы или цифры.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} должно содержать буквы или пробелы.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} должен содержать символ.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} должно содержать прописные буквы.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} должно содержать строчные буквы.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} должен содержать числа.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} должен быть символом.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} может содержать только прописные буквы.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} может содержать только буквы нижнего регистра.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `Дата ${sentence(name)} должна быть раньше ${date(args[0])}.`;\n    }\n    return `Дата ${sentence(name)} должна быть в прошлом.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Это поле заполнено неверно и не может быть отправлено.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `Поле ${sentence(name)} должно быть между ${a} и ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `Поле ${sentence(name)} не совпадает.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `Поле ${sentence(\n        name\n      )} имеет неверную дату. Пожалуйста, используйте формат ${args[0]}`;\n    }\n    return \"Это поле заполнено неверно и не может быть отправлено.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `Дата ${sentence(name)} должна быть между ${date(args[0])} и ${date(\n      args[1]\n    )}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Пожалуйста, введите действительный электронный адрес.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `Поле ${sentence(name)} не должно заканчиваться на ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `Поле ${sentence(name)} имеет неподустимое значение.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `Поле ${sentence(name)} должно содержать минимум один символ.`;\n    }\n    if (min == 0 && max) {\n      return `Длина поля ${sentence(\n        name\n      )} должна быть меньше или равна ${max} символам.`;\n    }\n    if (min === max) {\n      return `Длина ${sentence(name)} должна составлять ${max} символов.`;\n    }\n    if (min && max === Infinity) {\n      return `Длина поля ${sentence(\n        name\n      )} должна быть больше или равна ${min} символам.`;\n    }\n    return `Длина поля ${sentence(name)} должна быть между ${min} и ${max} символами.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `Поле ${sentence(name)} имеет недопустимое значение.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Не может быть выбрано больше, чем ${args[0]} ${name}.`;\n    }\n    return `Поле ${sentence(name)} должно быть меньше или равно ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Не указаны поддержиавемые форматы файла.\";\n    }\n    return `Формат файла в поле ${sentence(name)} должен быть: ${args[0]}.`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Не может быть выбрано меньше, чем ${args[0]} ${name}.`;\n    }\n    return `Поле ${sentence(name)} должно быть не менее, чем ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” не поддерживается в поле ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `Поле ${sentence(name)} должно быть числом.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" или \")} требуется.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `Поле ${sentence(name)} обязательно для заполнения.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `Поле ${sentence(name)} должно начинаться с ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Пожалуйста, введите действительный URL-адрес.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Выбранная дата недействительна.\"\n};\nvar ru = { ui: ui33, validation: validation33 };\nvar ui34 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"Pridať\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Odstrániť\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Odstrániť všetko\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Prepáčte, ale nie všetky polia sú vyplnené správne.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Odoslať\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Nebol vybraný žiadny súbor\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Posunúť hore\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Posunúť dole\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Načítavanie...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Načítať viac\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Ďalšie\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Predošlý\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Pridajte všetky hodnoty\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Pridajte vybrané hodnoty\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Odstrániť všetky hodnoty\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Odstrániť vybrané hodnoty\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Vyberte dátum\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Zmena dátumu\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Zavrieť\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Otvorené\"\n};\nvar validation34 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Prosím zaškrtnite ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} musí byť za ${date(args[0])}.`;\n    }\n    return `${sentence(name)} musí byť v budúcnosti.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} môže obsahovať iba písmená.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} môže obsahovať iba písmená a čísla.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} môže obsahovať iba písmená a medzery.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} musí obsahovať abecedné znaky.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} musí obsahovať písmená alebo číslice.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} musí obsahovať písmená alebo medzery.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} musí obsahovať symbol.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} musí obsahovať veľké písmená.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} musí obsahovať malé písmená.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} musí obsahovať čísla.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} musí byť symbol.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} môže obsahovať iba veľké písmená.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} môže obsahovať len malé písmená.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} musí byť pred ${date(args[0])}.`;\n    }\n    return `${sentence(name)} musí byť v minulosti.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Toto pole bolo nesprávne nakonfigurované a nemôže byť odoslané.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} musí byť medzi ${a} and ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} does not match.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} nie je platným dátumom, prosím, použite formát ${args[0]}`;\n    }\n    return \"Toto pole bolo nesprávne nakonfigurované a nemôže byť odoslané.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} musí byť medzi ${date(args[0])} a ${date(args[1])}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Prosím, zadajte platnú emailovú adresu.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} nekončí na ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} nie je povolená hodnota.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} musí mať najmenej jeden znak.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} musí byť menšie alebo rovné ako ${max} znakov.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} by mala mať dĺžku ${max} znakov.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} musí byť väčšie alebo rovné ako ${min} znakov.`;\n    }\n    return `${sentence(name)} musí byť medzi ${min} až ${max} znakov.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} nie je povolená hodnota.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Nie je možné použiť viac než ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} musí byť menšie alebo rovné ako ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Nie sú povolené formáty súborov.\";\n    }\n    return `${sentence(name)} musí byť typu: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Nemôže byť menej než ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} musí byť minimálne ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” nie je povolené hodnota pre ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} musí byť číslo.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" alebo \")} je potrebný.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} je povinné.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} nezačíná s ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Zadajte platnú adresu URL.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Vybraný dátum je neplatný.\"\n};\nvar sk = { ui: ui34, validation: validation34 };\nvar ui35 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"Dodaj\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Odstrani\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Odstrani vse\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Nekatera polja niso pravilno izpolnjena.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Pošlji\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Nobena datoteka ni izbrana\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Premakni se navzgor\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Premakni se navzdol\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Nalaganje...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Naloži več\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Naslednji\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Prejšnji\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Dodajte vse vrednosti\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Dodajanje izbranih vrednosti\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Odstranite vse vrednosti\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Odstrani izbrane vrednosti\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Izberite datum\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Spremeni datum\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Zapri\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Odpri\"\n};\nvar validation35 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Prosimo popravite ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} mora biti po ${date(args[0])}.`;\n    }\n    return `${sentence(name)} mora biti v prihodnosti.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} lahko vsebuje samo znake abecede.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} lahko vsebuje samo črke in številke.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} lahko vsebuje samo črke in presledke.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} mora vsebovati abecedne znake.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} mora vsebovati črke ali številke.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} mora vsebovati črke ali presledke.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} mora vsebovati simbol.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} mora vsebovati velike črke.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} mora vsebovati male črke.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} mora vsebovati številke.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} mora biti simbol.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} lahko vsebuje le velike črke.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} lahko vsebuje le male črke.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} mora biti pred ${date(args[0])}.`;\n    }\n    return `${sentence(name)} mora biti v preteklosti.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `To polje je narobe nastavljeno in ne mora biti izpolnjeno.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} mora biti med ${a} in ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} se ne ujema.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} ni pravilen datum, prosimo uporabite format ${args[0]}`;\n    }\n    return \"To polje je narobe nastavljeno in ne mora biti izpolnjeno.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} mora biti med ${date(args[0])} in ${date(args[1])}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Vnesite veljaven e-poštni naslov.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} se mora kočati z ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} ni dovoljena vrednost.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} mora vsebovati vsaj en znak.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} mora vsebovati največ ${max} znakov.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} mora biti dolg ${max} znakov.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} mora vsebovati vsaj ${min} znakov.`;\n    }\n    return `${sentence(name)} mora vsebovati med ${min} in ${max} znakov.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} ni dovoljena vrednost.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Največ je ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} je lahko največ ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Nobena vrsta datoteke ni dovoljena.\";\n    }\n    return `${sentence(name)} mora biti tipa: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Najmanj ${args[0]} ${name} je dovoljenih.`;\n    }\n    return `${sentence(name)} mora biti vsaj ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” ni dovoljen(a/o) ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} mora biti številka.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" ali \")} zahtevan je.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} je zahtevan(o/a).`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} se mora začeti z ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Vnesite veljaven URL.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Izbrani datum je neveljaven.\"\n};\nvar sl = { ui: ui35, validation: validation35 };\nvar ui36 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"Dodaj\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Ukloni\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Ukloni sve\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Pojedina polja nisu ispravno ispunjena.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Pošalji\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Fajl nije odabran\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Pomerite se gore\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Pomeri se dole\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Učitavanje...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Učitaj više\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Sledeća\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Prethodna\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Dodajte sve vrednosti\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Dodajte izabrane vrednosti\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Uklonite sve vrednosti\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Uklonite izabrane vrednosti\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Izaberite datum\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Promenite datum\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Zatvori\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Otvori\"\n};\nvar validation36 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Molimo prihvatite ${name}`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} mora biti posle ${date(args[0])}.`;\n    }\n    return `${sentence(name)} mora biti u budućnosti.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} može da sadrži samo abecedne znakove.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} može da sadrži samo slova i brojeve.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} može da sadrži samo slova i razmake.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} mora da sadrži abecedne znakove.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} mora da sadrži slova ili brojeve.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} mora da sadrži slova ili razmake.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} mora da sadrži simbol.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} mora da sadrži velika slova.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} mora da sadrži mala slova.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} mora da sadrži brojeve.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} mora biti simbol.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} može da sadrži samo velika slova.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} može da sadrži samo mala slova.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} mora biti pre ${date(args[0])}.`;\n    }\n    return `${sentence(name)} mora biti u prošlosti.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Ovo polje je pogrešno konfigurisano i ne može se poslati.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} mora biti između ${a} i ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} se ne podudara.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} nije važeći datum, molimo Vas koristite format ${args[0]}`;\n    }\n    return \"Ovo polje je pogrešno konfigurisano i ne može se poslati\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} mora biti između ${date(args[0])} i ${date(args[1])}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Unesite ispravnu e-mail adresu.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} se ne završava sa ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} nije dozvoljena vrednost`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} mora biti najmanje jedan karakter.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} mora biti manji ili jednaki od ${max} karaktera.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} treba da bude ${max} znakova dugačak.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} mora biti veći ili jednaki od ${min} karaktera.`;\n    }\n    return `${sentence(name)} mora biti između ${min} i ${max} karaktera.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} nije dozvoljena vrednost.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Ne može imati više od ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} mora biti manji ili jednaki od ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Nisu dozvoljeni formati datoteka.\";\n    }\n    return `${sentence(name)} mora biti tipa: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Ne može imati manje od ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} mora da ima najmanje ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” nije dozvoljeno ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} mora biti broj.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" или \")} потребан је.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} je obavezno polje.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} ne počinje sa ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Unesite važeću URL adresu.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Izabrani datum je nevažeći.\"\n};\nvar sr = { ui: ui36, validation: validation36 };\nvar ui37 = {\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Ta bort\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Ta bort alla\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Tyvärr är inte alla fält korrekt ifyllda\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Skicka\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Ingen fil vald\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Flytta upp\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Flytta ner\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Laddar...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Ladda mer\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Nästa\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Föregående\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Lägg till alla värden\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Lägg till valda värden\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Ta bort alla värden\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Ta bort valda värden\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Välj datum\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Ändra datum\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Stäng\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Öppna\"\n};\nvar validation37 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Var god acceptera ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} måste vara efter ${date(args[0])}.`;\n    }\n    return `${sentence(name)} måste vara framåt i tiden.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} kan enbart innehålla bokstäver i alfabetet.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} kan bara innehålla bokstäver och siffror.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} kan bara innehålla bokstäver och blanksteg.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} måste innehålla alfabetiska tecken.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} måste innehålla bokstäver eller siffror.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} måste innehålla bokstäver eller mellanslag.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} måste innehålla symbol.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} måste innehålla versaler.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} måste innehålla gemener.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} måste innehålla siffror.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} måste vara en symbol.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} kan bara innehålla versaler.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} kan bara innehålla små bokstäver.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} måste vara före ${date(args[0])}.`;\n    }\n    return `${sentence(name)} måste vara bakåt i tiden.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Det här fältet ställdes inte in korrekt och kan inte användas.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} måste vara mellan ${a} och ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} matchar inte.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} är inte ett giltigt datum, var god använd formatet ${args[0]}`;\n    }\n    return \"Det här fältet ställdes inte in korrekt och kan inte användas\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} måste vara mellan ${date(args[0])} och ${date(args[1])}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Var god fyll i en giltig e-postadress.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} slutar inte med ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} är inte ett godkänt värde.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} måste ha minst ett tecken.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} måste vara ${max} tecken eller färre.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} bör vara ${max} tecken långa.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} måste vara ${min} tecken eller fler.`;\n    }\n    return `${sentence(name)} måste vara mellan ${min} och ${max} tecken.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} är inte ett godkänt värde.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Kan inte ha mer än ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} måste vara ${args[0]} eller mindre.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Inga filtyper tillåtna.\";\n    }\n    return `${sentence(name)} måste vara av filtypen: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Kan inte ha mindre än ${args[0]} ${name}.`;\n    }\n    return `${sentence(name)} måste vara minst ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” är inte ett godkänt ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} måste vara en siffra.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" eller \")} krävs.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} är obligatoriskt.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} börjar inte med ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Ange en giltig URL.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Det valda datumet är ogiltigt.\"\n};\nvar sv = { ui: ui37, validation: validation37 };\n\n// packages/i18n/src/locales/tet.ts\nvar ui38 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"Aumenta\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Hasai\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Hasai Hotu\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Deskulpa, iha informasaun neebe sala iha formuláriu\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Submete\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Seidauk hili file\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Muda ba leten\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Muda ba kotuk\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Hein lai...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Foti tan\",\n  /**\n   * Show on buttons that navigate state forward\n   */\n  next: \"Ba oin\",\n  /**\n   * Show on buttons that navigate state backward\n   */\n  prev: \"Ba kotuk\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Aumenta hotu\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Aumenta buat neebe hili ona\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Hasai hotu\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Hasai buat neebe hili ona\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Hili data\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Troka data\"\n};\nvar validation38 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Favor ida simu ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} tenki depoid ${date(args[0])}.`;\n    }\n    return `${sentence(name)} tenki iha futuru.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} bele uza letra deit.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} bele uza letra ka numeru deit.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} bele uza letra ka numeru deit.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} tenki antes ${date(args[0])}.`;\n    }\n    return `${sentence(name)} tenki antes ohin loron.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Informasaun nee la loos no la bele submete.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} tenki iha klaran entre ${a} no ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} la hanesan.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} la loos, favor ida hakerek tuir ${args[0]}`;\n    }\n    return \"Informasaun nee la loos no la bele submete.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} tenki iha ${date(args[0])} no ${date(\n      args[1]\n    )} nia klaran`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Favor hakerek endresu email neebe loos.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} la remata ho ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `la bele uza ${sentence(name)}.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} tenki iha letra ida ka liu.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} tenki badak liu ${max} letra.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} tenki iha letra ${max}.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} tenki iha letra ${min} ka liu.`;\n    }\n    return `${sentence(name)} tenki iha letra ${min} too ${max}.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `la bele uza ${sentence(name)}.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `La bele iha ${args[0]} ka liu ${name}.`;\n    }\n    return `${sentence(name)} tenki kiik liu ka hanesan ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return `La bele simu 'format' ida.`;\n    }\n    return `${sentence(name)} tenki iha tipo: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Presiza ${args[0]} ${name} ka liu.`;\n    }\n    return `${name} tenki ${args[0]} ka liu.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `La bele uza “${value}” ba ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} tenki numeru.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `Presiza ${sentence(name)}.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} la komesa ho ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Favor hakerek URL neebe loos.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Data la loos.\"\n};\nvar tet = { ui: ui38, validation: validation38 };\nvar ui39 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"Илова кардан\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Хориҷ кардан\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Ҳамаро хориҷ кунед\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Бубахшед, на ҳама майдонҳо дуруст пур карда шудаанд.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Пешниҳод кунед\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Ягон файл интихоб нашудааст\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Ба боло ҳаракат кунед\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Ба поён ҳаракат кунед\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Дар ҳоли боргузорӣ\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Бештар бор кунед\",\n  /**\n   * Show on buttons that navigate state forward\n   */\n  next: \"Баъдӣ\",\n  /**\n   * Show on buttons that navigate state backward\n   */\n  prev: \"Гузашта\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Ҳама арзишҳоро илова кунед\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Илова кардани арзишҳои интихобшуда\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Ҳама арзишҳоро хориҷ кунед\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Арзишҳои интихобшударо хориҷ кунед\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Сана интихоб кунед\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Тағйир додани сана\"\n};\nvar validation39 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Лутфан ${name}-ро қабул кунед`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} бояд пас аз ${date(args[0])} бошад.`;\n    }\n    return `${sentence(name)} бояд дар оянда бошад.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} метавонад танҳо аломатҳои алифборо дар бар гирад.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} метавонад танҳо ҳарфҳо ва рақамҳоро дар бар гирад.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} метавонад танҳо ҳарфҳо ва фосилаҳоро дар бар гирад.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} must contain alphabetical characters.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} must contain letters and numbers.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} must contain letters and spaces.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} must contain symbol.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} must contain uppercase.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} must contain lowercase.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} must contain number.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} can only contain symbol.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} can only contain uppercase.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} can only contain lowercase.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} бояд пеш аз ${date(args[0])} бошад.`;\n    }\n    return `${sentence(name)} бояд дар гузашта бошад.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Ин майдон нодуруст танзим шудааст ва онро пешниҳод кардан ғайриимкон аст.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} бояд дар байни ${a} ва ${b} бошад.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} мувофиқат намекунад.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} санаи дуруст нест, лутфан формати ${args[0]}-ро истифода баред`;\n    }\n    return \"Ин майдон нодуруст танзим шудааст ва онро пешниҳод кардан ғайриимкон аст\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} бояд дар байни ${date(args[0])} ва ${date(\n      args[1]\n    )} бошад`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Лутфан нишонаи имейли амалкунандаро ворид намоед.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} бо ${list(args)} ба охир намерасад.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} арзиши иҷозатдодашуда нест.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} бояд ҳадди аққал як аломат бошад.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} бояд аз ${max} аломат камтар ё баробар бошад.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} бояд ${max} аломат бошад.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} бояд аз ${min} аломат зиёд ё баробар бошад.`;\n    }\n    return `${sentence(name)} бояд дар байни ${min} ва ${max} аломат бошад.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} арзиши иҷозатдодашуда нест.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Зиёда аз ${args[0]} ${name} дошта наметавонад.`;\n    }\n    return `${sentence(name)} бояд аз ${args[0]} камтар ё баробар бошад.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Ягон формати файл иҷозат дода намешавад.\";\n    }\n    return `${sentence(name)} бояд чунин намуд бошад: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Камтар аз ${args[0]} ${name} дошта наметавонад.`;\n    }\n    return `${sentence(name)} бояд ҳадди аққал ${args[0]} бошад.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `\"${value}\" ${name} иҷозат дода намешавад.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} бояд рақам бошад.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" ё \")} зарур а`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} лозим аст.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} бо ${list(args)} оғоз намешавад.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Лутфан URL-и дурустро дохил кунед.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Санаи интихобшуда нодуруст аст.\"\n};\nvar tg = { ui: ui39, validation: validation39 };\nvar ui40 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"เพิ่ม\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"เอาออก\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"เอาออกทั้งหมด\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"ขออภัย ข้อมูลบางช่องที่กรอกไม่ถูกต้อง\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"ส่ง\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"ยังไม่ได้เลือกไฟล์\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"เลื่อนขึ้น\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"เลื่อนลง\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"กำลังโหลด...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"โหลดเพิ่มเติม\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"ถัดไป\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"ก่อนหน้า\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"เพิ่มค่าทั้งหมด\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"เพิ่มค่าที่เลือก\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"ลบค่าทั้งหมด\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"ลบค่าที่เลือก\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"เลือกวันที่\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"เปลี่ยนวันที่\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"ปิด\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"เปิด\"\n};\nvar validation40 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `กรุณายอมรับ ${name}`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} จะต้องเป็นวันที่หลังจาก ${date(args[0])}`;\n    }\n    return `${sentence(name)} จะต้องเป็นวันที่ที่ยังไม่มาถึง`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} สามารถเป็นได้แค่ตัวอักษรเท่านั้น`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} สามารถเป็นได้แค่ตัวอักษรและตัวเลขเท่านั้น`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} สามารถเป็นได้แค่ตัวอักษรและเว้นวรรคเท่านั้น`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} ต้องมีตัวอักษรตัวอักษร`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} ต้องมีตัวอักษรหรือตัวเลข`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} ต้องมีตัวอักษรหรือช่องว่าง`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} ต้องมีสัญลักษณ์`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} ต้องมีตัวพิมพ์ใหญ่`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} ต้องมีตัวพิมพ์เล็ก`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} ต้องมีตัวเลข`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} จะต้องเป็นสัญลักษณ์`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} เท่านั้นที่สามารถมีตัวอักษรตัวพิมพ์ใหญ่`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} เท่านั้นที่สามารถมีตัวอักษรตัวพิมพ์เล็ก`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} จะต้องเป็นวันที่ที่มาก่อน ${date(args[0])}`;\n    }\n    return `${sentence(name)} จะต้องเป็นวันที่ที่ผ่านมาแล้ว`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `ช่องนี้ถูกตั้งค่าอย่างไม่ถูกต้อง และจะไม่สามารถส่งข้อมูลได้`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} จะต้องเป็นค่าระหว่าง ${a} และ ${b}`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} ไม่ตรงกัน`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} ไม่อยู่ในรูปแบบวันที่ที่ถูกต้อง กรุณากรอกตามรูปแบบ ${args[0]}`;\n    }\n    return \"ช่องนี้ถูกตั้งค่าอย่างไม่ถูกต้อง และจะไม่สามารถส่งข้อมูลได้\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} จะต้องเป็นวันที่ระหว่าง ${date(args[0])} และ ${date(\n      args[1]\n    )}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"กรุณากรอกที่อยู่อีเมลทีถูกต้อง\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} จะต้องลงท้ายด้วย ${list(args)}`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} ไม่ใช่ค่าที่อนุญาตให้กรอก`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} จะต้องมีความยาวอย่างน้อยหนึ่งตัวอักษร`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} จะต้องมีความยาวไม่เกิน ${max} ตัวอักษร`;\n    }\n    if (min === max) {\n      return `${sentence(name)} ควรจะเป็น ${max} ตัวอักษรยาว`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} จะต้องมีความยาว ${min} ตัวอักษรขึ้นไป`;\n    }\n    return `${sentence(name)} จะต้องมีความยาวระหว่าง ${min} และ ${max} ตัวอักษร`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} ไม่ใช่ค่าที่อนุญาตให้กรอก`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `ไม่สามารถเลือกมากกว่า ${args[0]} ${name} ได้`;\n    }\n    return `${sentence(name)} จะต้องมีค่าไม่เกิน ${args[0]}`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"ไม่มีประเภทของไฟล์ที่อนุญาต\";\n    }\n    return `${sentence(name)} จะต้องเป็นไฟล์ประเภท ${args[0]} เท่านั้น`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `ไม่สามารถเลือกน้อยกว่า ${args[0]} ${name} ได้`;\n    }\n    return `${sentence(name)} จะต้องมีค่าอย่างน้อย ${args[0]}`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” ไม่ใช่ค่า ${name} ที่อนุญาตให้กรอก`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} จะต้องเป็นตัวเลขเท่านั้น`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" หรือ \")} ต้องการ.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `กรุณากรอก ${sentence(name)}`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} จะต้องเริ่มต้นด้วย ${list(args)}`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `กรุณาระบุที่อยู่ลิงก์ให้ถูกต้อง`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"วันที่ที่เลือกไม่ถูกต้อง\"\n};\nvar th = { ui: ui40, validation: validation40 };\nvar ui41 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"Ekle\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Kaldır\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Hepsini kaldır\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Maalesef, tüm alanlar doğru doldurulmadı.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Gönder\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Dosya yok\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Yukarı Taşı\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Aşağı taşı\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Yükleniyor...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Daha fazla yükle\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Sonraki\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Önceki\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Tüm değerleri ekle\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Seçili değerleri ekle\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Tüm değerleri kaldır\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Seçili değerleri kaldır\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Tarih seçin\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Tarihi değiştir\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Kapat\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Açık\"\n};\nvar validation41 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Lütfen ${name}'yi kabul edin.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} ${date(args[0])}'den sonra olmalıdır.`;\n    }\n    return `${sentence(name)} gelecekte bir zaman olmalıdır.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} sadece alfabetik karakterler içerebilir.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} sadece alfabetik karakterler ve sayı içerebilir.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} yalnızca harf ve boşluk içerebilir.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} alfabetik karakterler içermelidir.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} harf veya rakamı içermelidir.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} harf veya boşluk içermelidir.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} sembol içermelidir.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} büyük harf içermelidir.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} küçük harf içermelidir.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} sayı içermelidir.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} bir sembol olmalıdır.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} yalnızca büyük harfler içerebilir.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} yalnızca küçük harfler içerebilir.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} ${date(args[0])} tarihinden önce olmalı.`;\n    }\n    return `${sentence(name)} geçmişte olmalı.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Alan yanlış yapılandırılmış ve gönderilemez.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} ${a} ve ${b} aralığında olmalı.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} eşleşmiyor.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} geçerli bir tarih değil, lütfen ${args[0]} biçimini kullanın.`;\n    }\n    return \"Alan yanlış yapılandırılmış ve gönderilemez.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)}, ${date(args[0])} ve ${date(args[1])} aralığında olmalı.`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Lütfen geçerli bir e-mail adresi girin.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} ${list(args)} ile bitmiyor.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} izin verilen bir değer değil.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} en azından bir karakter uzunluğunda olmalı.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} ${max}'e eşit veya daha küçük olmalı.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} ${max} karakter uzunluğunda olmalıdır.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} ${min}'e eşit veya daha büyük olmalı.`;\n    }\n    return `${sentence(name)}, ${min} ve ${max} karakter uzunluğu aralığında olmalı.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} izin verilen bir değer değil.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `${name}'in uzunluğu ${args[0]}'dan daha uzun olamaz.`;\n    }\n    return `${sentence(name)} en azından ${args[0]} uzunluğunda veya ona eşit olmalı.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Hiçbir dosya türüne izin verilmez.\";\n    }\n    return `${sentence(name)} şu tiplerden biri olmalı: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `${name}'in uzunluğu ${args[0]}'dan daha kısa olamaz.`;\n    }\n    return `${sentence(name)} en azından ${args[0]} uzunluğunda olmalı.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” ${name} olamaz.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} sayı olmalı.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" veya \")} gereklidir.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} gerekli.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} ${list(args)} ile başlamıyor.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Lütfen geçerli bir URL girin.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Seçilen tarih geçersiz.\"\n};\nvar tr = { ui: ui41, validation: validation41 };\nvar ui42 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"Додати\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Видалити\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Видалити все\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Вибачте, не всі поля заповнені правильно.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Відправити\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Файл не вибрано\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Рухатися вгору\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Пересунути вниз\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Завантаження...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Завантажте більше\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Наступний\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Попередній\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Додати всі значення\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Додати вибрані значення\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Вилучити всі значення\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Вилучити вибрані значення\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Виберіть дату\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Змінити дату\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Закрити\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Відкрити\"\n};\nvar validation42 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Будь ласка, прийміть ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `Дата ${sentence(name)} повинна бути пізніше за ${date(args[0])}.`;\n    }\n    return `Дата ${sentence(name)} має бути в майбутньому.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `Поле ${sentence(name)} може містити лише літери.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `Поле ${sentence(name)} може містити лише літери та цифри.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `Поле ${sentence(name)} може містити лише літери та пробіли.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} повинен містити алфавітні символи.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} повинен містити букви або цифри.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} повинен містити літери або пробіли.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} повинен містити символ.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} повинен містити великі регістри.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} повинен містити малі регістри.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} повинен містити цифри.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} має бути символом.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} може містити лише великі літери.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} може містити лише малі літери.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `Дата ${sentence(name)} повинна бути раніше за ${date(args[0])}.`;\n    }\n    return `Дата ${sentence(name)} повинна бути в минулому.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Це поле заповнено неправильно і не може бути надіслано.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `Поле ${sentence(name)} повинно бути між ${a} та ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `Поле ${sentence(name)} не збігається.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `Поле ${sentence(\n        name\n      )} має неправильну дату. Будь ласка, використовуйте формат ${args[0]}.`;\n    }\n    return \"Це поле заповнено неправильно і не може бути надіслано.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `Дата ${sentence(name)} повинна бути між ${date(args[0])} та ${date(\n      args[1]\n    )}.`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Будь ласка, введіть дійсну електронну адресу.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `Поле ${sentence(name)} не повинно закінчуватися на ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `Поле ${sentence(name)} має неприпустиме значення.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `Поле ${sentence(name)} має містити щонайменше один символ.`;\n    }\n    if (min == 0 && max) {\n      return `Довжина поля ${sentence(\n        name\n      )} повинна бути меншою або дорівнювати ${max} символам.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} має бути довжиною ${max} символів.`;\n    }\n    if (min && max === Infinity) {\n      return `Довжина поля ${sentence(\n        name\n      )} повинна бути більшою або дорівнювати ${min} символам.`;\n    }\n    return `Довжина поля ${sentence(\n      name\n    )} повинна бути між ${min} та ${max} символами.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `Поле ${sentence(name)} має неприпустиме значення.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Не може бути вибрано більше ніж ${args[0]} ${name}.`;\n    }\n    return `Поле ${sentence(name)} має бути менше або дорівнювати ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Не вказано дозволені типи файлів.\";\n    }\n    return `Тип файлу в полі ${sentence(name)} має бути: ${args[0]}.`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `Не може бути вибрано менше ніж ${args[0]} ${name}.`;\n    }\n    return `Поле ${sentence(name)} має бути не менше ніж ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” не дозволено в полі ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `Поле ${sentence(name)} має бути числом.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" або \")} потрібно.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `Поле ${sentence(name)} є обов'язковим.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `Поле ${sentence(name)} має починатися з ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Будь ласка, введіть коректну URL-адресу.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Вибрана дата недійсна.\"\n};\nvar uk = { ui: ui42, validation: validation42 };\nvar ui43 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"Qo'shish\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"O'chirish\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Hammasini o'chirish\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Kechirasiz, barcha maydonlar to'g'ri to'ldirilmagan.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Yuborish\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Hech qanday fayl tanlanmagan\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Yuqoriga ko’taring\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Pastga siljish\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Yuklanmoqda...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Ko’proq yuklang\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Keyingi\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Oldingi\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: `Barcha qiymatlarni qo'shish`,\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: `Tanlangan qiymatlarni qoʻshish`,\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Barcha qiymatlarni olib tashlang\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Tanlangan qiymatlarni olib tashlash\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Sanani tanlang\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: `O'zgartirish sanasi`,\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Yopish\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Ochiq\"\n};\nvar validation43 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `${name} ni qabul qiling.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} ${date(args[0])} dan keyin bo'lishi kerak.`;\n    }\n    return `${sentence(name)} kelajakda bo'lishi kerak.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(\n      name\n    )} faqat alifbo tartibidagi belgilardan iborat bo'lishi mumkin.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} faqat harflar va raqamlardan iborat bo'lishi mumkin.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} faqat harf va bo'shliqlardan iborat bo'lishi mumkin.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} alfavit belgilarini o'z ichiga olishi kerak.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} harflar yoki raqamlarni o'z ichiga olishi kerak.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} harflar yoki bo'shliqlar bo'lishi kerak.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} belgisi bo'lishi kerak.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} katta harfni o'z ichiga olishi kerak.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} kichik harflarni o'z ichiga olishi kerak.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} raqamlarini o'z ichiga olishi kerak.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} belgisi bo'lishi kerak.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} faqat katta harflarni o'z ichiga olishi mumkin.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} faqat kichik harflarni o'z ichiga olishi mumkin.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} ${date(args[0])} dan oldin bo'lishi kerak`;\n    }\n    return `${sentence(name)} o'tmishda bo'lishi kerak.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Bu maydon noto'g'ri sozlangan va uni yuborib bo'lmaydi.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} ${a} va ${b} orasida bo'lishi kerak.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} mos emas.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} haqiqiy sana emas, iltimos ${args[0]} formatidan foydalaning`;\n    }\n    return \"Bu maydon noto'g'ri sozlangan va uni yuborib bo'lmaydi\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} ${date(args[0])} va ${date(\n      args[1]\n    )} oralig'ida bo'lishi kerak`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Iltimos amaldagi e-mail manzilingizni kiriting.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} ${list(args)} bilan tugamaydi.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} ruxsat etilgan qiymat emas.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} kamida bitta belgidan iborat bo'lishi kerak.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} ${max} ta belgidan kam yoki teng bo'lishi kerak.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} bo'lishi kerak ${max} belgilar uzun.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} ${min} ta belgidan ko'p yoki teng bo'lishi kerak.`;\n    }\n    return `${sentence(\n      name\n    )} ${min} va ${max} gacha belgilardan iborat bo'lishi kerak.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} ruxsat etilgan qiymat emas.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `${args[0]} ${name} dan ortiq bo'lishi mumkin emas.`;\n    }\n    return `${sentence(name)} ${args[0]} dan kichik yoki teng bo'lishi kerak.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Fayl formatlariga ruxsat berilmagan.\";\n    }\n    return `${sentence(name)} quyidagi turdagi bo'lishi kerak: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `${args[0]} ${name} dan kam bo'lmasligi kerak.`;\n    }\n    return `${sentence(name)} kamida ${args[0]} bo'lishi kerak.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `\"${value}\" ruxsat berilmagan ${name}.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} raqam bo'lishi kerak.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" yoki \")} kerak.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} talab qilinadi.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} ${list(args)} bilan boshlanmaydi.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Iltimos, tegishli URL manzilini kiriting.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Tanlangan sana yaroqsiz.\"\n};\nvar uz = { ui: ui43, validation: validation43 };\nvar ui44 = {\n  /**\n   * Shown on buttons for adding new items.\n   */\n  add: \"Thêm\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"Xoá\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"Xoá tất cả\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"Xin lỗi, không phải tất cả các trường đều được nhập đúng.\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"Gửi\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"Chưa chọn file\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"Di chuyển lên\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"Di chuyển xuống\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"Đang tải...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"Tải thêm\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"Tiếp\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"Trước\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"Thêm tất cả các giá trị\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"Thêm các giá trị đã chọn\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"Loại bỏ tất cả các giá trị\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"Loại bỏ các giá trị đã chọn\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"Chọn ngày\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"Thay đổi ngày\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"Đóng\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"Mở\"\n};\nvar validation44 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `Hãy đồng ý với ${name}.`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} phải sau ${date(args[0])}.`;\n    }\n    return `${sentence(name)} phải trong tương lai.`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} có thể chỉ bao gồm các chữ cái alphabet.`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} có thể chỉ bao gồm các chữ cái và chữ số.`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} chỉ có thể chứa các chữ cái và khoảng trắng.`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} phải chứa các ký tự chữ cái.`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} phải chứa chữ cái hoặc số.`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} phải chứa chữ cái hoặc dấu cách.`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} phải chứa ký hiệu.`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} phải chứa chữ hoa.`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} phải chứa chữ thường.`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} phải chứa số.`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} phải là một ký hiệu.`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} chỉ có thể chứa chữ hoa.`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} chỉ có thể chứa chữ thường.`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} phải trước ${date(args[0])}.`;\n    }\n    return `${sentence(name)} phải trong quá khứ.`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `Trường này đã được thiết lập sai và không thể gửi.`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} phải ở giữa ${a} và ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} không khớp.`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} không phải ngày hợp lệ, hãy sử dụng định dạng ${args[0]}`;\n    }\n    return \"Trường này đã được thiết lập sai và không thể gửi.\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} phải ở giữa khoảng từ ${date(args[0])} đến ${date(\n      args[1]\n    )}.`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"Hãy nhập một địa chỉ email hợp lệ.\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} không kết thúc với ${list(args)}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} không phải một giá trị được cho phép.`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} phải có độ dài tối thiểu một ký tự.`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} phải có độ dài tối đa ${max} ký tự.`;\n    }\n    if (min === max) {\n      return `${sentence(name)} nên dài ${max} ký tự.`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} phải có độ dài tối thiểu ${min} ký tự.`;\n    }\n    return `${sentence(\n      name\n    )} phải có độ dài tối đa trong khoảng từ ${min} đến ${max} ký tự.`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} không phải một giá trị được cho phép.`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `${name} không thể lớn hơn ${args[0]}.`;\n    }\n    return `${sentence(name)} phải tối đa bằng ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"Định dạng tệp tin này không được phép.\";\n    }\n    return `${sentence(name)} phải là một trong các dạng: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `${name} không thể nhỏ hơn ${args[0]}.`;\n    }\n    return `${sentence(name)} phải tối thiểu bằng ${args[0]}.`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `\"${value}\" không phải giá trị ${name} được phép.`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} phải là một số.`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\" hoặc \")} cần có.`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} là bắt buộc.`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} không bắt đầu với ${list(args)}.`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `Vui lòng nhập một URL hợp lệ.`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"Ngày đã chọn không hợp lệ.\"\n};\nvar vi = { ui: ui44, validation: validation44 };\nvar ui45 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"添加\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"移除\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"移除全部\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"抱歉,部分字段未被正确填写。\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"提交\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"未选择文件\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"上移\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"下移\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"加载中...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"加载更多\",\n  /**\n   * Shown on buttons that navigate state forward\n   */\n  next: \"下一步\",\n  /**\n   * Shown on buttons that navigate state backward\n   */\n  prev: \"上一步\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"添加所有值\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"添加所选值\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"移除所有值\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"移除所选值\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"选择日期\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"更改日期\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"关闭\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"打开\"\n};\nvar validation45 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `请接受${name}。`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)}必须晚于${date(args[0])}。`;\n    }\n    return `${sentence(name)}必须是未来的日期。`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)}只能包含英文字母。`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)}只能包含字母和数字。`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)}只能包含字母和空格。`;\n  },\n  /**\n   * The value have no letter.\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n   */\n  contains_alpha({ name }) {\n    return `${sentence(name)} 必须包含字母字符`;\n  },\n  /**\n   * The value have no alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n   */\n  contains_alphanumeric({ name }) {\n    return `${sentence(name)} 必须包含字母或数字。`;\n  },\n  /**\n   * The value have no letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n   */\n  contains_alpha_spaces({ name }) {\n    return `${sentence(name)} 必须包含字母或空格。`;\n  },\n  /**\n   * The value have no symbol\n   * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n   */\n  contains_symbol({ name }) {\n    return `${sentence(name)} 必须包含符号。`;\n  },\n  /**\n   * The value have no uppercase\n   * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n   */\n  contains_uppercase({ name }) {\n    return `${sentence(name)} 必须包含大写字母。`;\n  },\n  /**\n   * The value have no lowercase\n   * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n   */\n  contains_lowercase({ name }) {\n    return `${sentence(name)} 必须包含小写字母。`;\n  },\n  /**\n   *  The value have no numeric\n   * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n   */\n  contains_numeric({ name }) {\n    return `${sentence(name)} 必须包含数字。`;\n  },\n  /**\n   * The value is not symbol\n   * @see {@link https://formkit.com/essentials/validation#symbol}\n   */\n  symbol({ name }) {\n    return `${sentence(name)} 必须是符号。`;\n  },\n  /**\n   * The value is not uppercase\n   * @see {@link https://formkit.com/essentials/validation#uppercase}\n   */\n  uppercase({ name }) {\n    return `${sentence(name)} 只能包含大写字母。`;\n  },\n  /**\n   * The value is not lowercase\n   * @see {@link https://formkit.com/essentials/validation#lowercase}\n   */\n  lowercase({ name }) {\n    return `${sentence(name)} 只能包含小写字母。`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)}必须早于${date(args[0])}。`;\n    }\n    return `${sentence(name)}必须是过去的日期。`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `该字段未被正确设置而无法提交。`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)}必须在${a}和${b}之间。`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)}不匹配。`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)}不是合法日期,请使用 ${args[0]} 格式`;\n    }\n    return \"该字段未被正确设置而无法提交\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)}必须在${date(args[0])}和${date(args[1])}之间`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"请输入合法的电子邮件地址。\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)}必须以${list(args)}结尾。`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)}是不允许的。`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)}至少要有一个字符。`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)}必须少于或等于${max}个字符。`;\n    }\n    if (min === max) {\n      return `${sentence(name)}必须包含${max}个字符。`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)}必须多于或等于${min}个字符。`;\n    }\n    return `${sentence(name)}必须介于${min}和${max}个字符之间。`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)}是不允许的。`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `${name}不得多于${args[0]}个值。`;\n    }\n    return `${name}不得大于${args[0]}。`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"没有允许的文件格式。\";\n    }\n    return `${sentence(name)}的类型必须为:${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `${name}不得少于${args[0]}个值。`;\n    }\n    return `${sentence(name)}不得小于${args[0]}。`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `\"${value}\"不是一个合法的${name}。`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)}必须为数字。`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\"或\")}${labels}需要。`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)}不得留空。`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)}必须以${list(args)}开头。`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `请输入有效的 URL。`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"所选日期无效。\"\n};\nvar zh = { ui: ui45, validation: validation45 };\nvar ui46 = {\n  /**\n   * Shown on a button for adding additional items.\n   */\n  add: \"新增\",\n  /**\n   * Shown when a button to remove items is visible.\n   */\n  remove: \"移除\",\n  /**\n   * Shown when there are multiple items to remove at the same time.\n   */\n  removeAll: \"移除全部\",\n  /**\n   * Shown when all fields are not filled out correctly.\n   */\n  incomplete: \"很抱歉,部分欄位填寫錯誤\",\n  /**\n   * Shown in a button inside a form to submit the form.\n   */\n  submit: \"提交\",\n  /**\n   * Shown when no files are selected.\n   */\n  noFiles: \"尚未選取檔案\",\n  /**\n   * Shown on buttons that move fields up in a list.\n   */\n  moveUp: \"上移\",\n  /**\n   * Shown on buttons that move fields down in a list.\n   */\n  moveDown: \"下移\",\n  /**\n   * Shown when something is actively loading.\n   */\n  isLoading: \"載入中...\",\n  /**\n   * Shown when there is more to load.\n   */\n  loadMore: \"載入更多\",\n  /**\n   * Show on buttons that navigate state forward\n   */\n  next: \"下一個\",\n  /**\n   * Show on buttons that navigate state backward\n   */\n  prev: \"上一個\",\n  /**\n   * Shown when adding all values.\n   */\n  addAllValues: \"加入全部的值\",\n  /**\n   * Shown when adding selected values.\n   */\n  addSelectedValues: \"加入選取的值\",\n  /**\n   * Shown when removing all values.\n   */\n  removeAllValues: \"移除全部的值\",\n  /**\n   * Shown when removing selected values.\n   */\n  removeSelectedValues: \"移除選取的值\",\n  /**\n   * Shown when there is a date to choose.\n   */\n  chooseDate: \"選擇日期\",\n  /**\n   * Shown when there is a date to change.\n   */\n  changeDate: \"變更日期\",\n  /**\n   * Shown when there is something to close\n   */\n  close: \"關閉\",\n  /**\n   * Shown when there is something to open.\n   */\n  open: \"開放\"\n};\nvar validation46 = {\n  /**\n   * The value is not an accepted value.\n   * @see {@link https://formkit.com/essentials/validation#accepted}\n   */\n  accepted({ name }) {\n    return `請接受 ${name}`;\n  },\n  /**\n   * The date is not after\n   * @see {@link https://formkit.com/essentials/validation#date-after}\n   */\n  date_after({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} 必須晚於 ${date(args[0])}`;\n    }\n    return `${sentence(name)} 必須晚於今日`;\n  },\n  /**\n   * The value is not a letter.\n   * @see {@link https://formkit.com/essentials/validation#alpha}\n   */\n  alpha({ name }) {\n    return `${sentence(name)} 欄位儘能填寫英文字母`;\n  },\n  /**\n   * The value is not alphanumeric\n   * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n   */\n  alphanumeric({ name }) {\n    return `${sentence(name)} 欄位僅能填寫英文字母與數字`;\n  },\n  /**\n   * The value is not letter and/or spaces\n   * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n   */\n  alpha_spaces({ name }) {\n    return `${sentence(name)} 欄位儘能填寫英文字母與空白`;\n  },\n  /**\n   * The date is not before\n   * @see {@link https://formkit.com/essentials/validation#date-before}\n   */\n  date_before({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} 必須早於 ${date(args[0])}.`;\n    }\n    return `${sentence(name)} 必須早於今日`;\n  },\n  /**\n   * The value is not between two numbers\n   * @see {@link https://formkit.com/essentials/validation#between}\n   */\n  between({ name, args }) {\n    if (isNaN(args[0]) || isNaN(args[1])) {\n      return `欄位值錯誤,無法提交`;\n    }\n    const [a, b] = order(args[0], args[1]);\n    return `${sentence(name)} 必須介於 ${a} 和 ${b}.`;\n  },\n  /**\n   * The confirmation field does not match\n   * @see {@link https://formkit.com/essentials/validation#confirm}\n   */\n  confirm({ name }) {\n    return `${sentence(name)} 與目標不一致`;\n  },\n  /**\n   * The value is not a valid date\n   * @see {@link https://formkit.com/essentials/validation#date-format}\n   */\n  date_format({ name, args }) {\n    if (Array.isArray(args) && args.length) {\n      return `${sentence(name)} 不是有效的日期,請使用 ${args[0]} 格式`;\n    }\n    return \"欄位值錯誤,無法提交\";\n  },\n  /**\n   * Is not within expected date range\n   * @see {@link https://formkit.com/essentials/validation#date-between}\n   */\n  date_between({ name, args }) {\n    return `${sentence(name)} 必須介於 ${date(args[0])} 和 ${date(args[1])}`;\n  },\n  /**\n   * Shown when the user-provided value is not a valid email address.\n   * @see {@link https://formkit.com/essentials/validation#email}\n   */\n  email: \"請輸入有效的 email\",\n  /**\n   * Does not end with the specified value\n   * @see {@link https://formkit.com/essentials/validation#ends-with}\n   */\n  ends_with({ name, args }) {\n    return `${sentence(name)} 的結尾必須是 ${list(args)}`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#is}\n   */\n  is({ name }) {\n    return `${sentence(name)} 欄位的值不合規則`;\n  },\n  /**\n   * Does not match specified length\n   * @see {@link https://formkit.com/essentials/validation#length}\n   */\n  length({ name, args: [first = 0, second = Infinity] }) {\n    const min = Number(first) <= Number(second) ? first : second;\n    const max = Number(second) >= Number(first) ? second : first;\n    if (min == 1 && max === Infinity) {\n      return `${sentence(name)} 欄位必須至少包含一個字`;\n    }\n    if (min == 0 && max) {\n      return `${sentence(name)} 的字數必須小於等於 ${max}`;\n    }\n    if (min === max) {\n      return `${sentence(name)} 的字數必須為 ${max}`;\n    }\n    if (min && max === Infinity) {\n      return `${sentence(name)} 的字數必須大於等於 ${min}`;\n    }\n    return `${sentence(name)} 的字數必須介於 ${min} 和 ${max}`;\n  },\n  /**\n   * Value is not a match\n   * @see {@link https://formkit.com/essentials/validation#matches}\n   */\n  matches({ name }) {\n    return `${sentence(name)} 欄位的值無效`;\n  },\n  /**\n   * Exceeds maximum allowed value\n   * @see {@link https://formkit.com/essentials/validation#max}\n   */\n  max({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `不能超過 ${args[0]} 個 ${name}.`;\n    }\n    return `${sentence(name)} 必須小於等於 ${args[0]}.`;\n  },\n  /**\n   * The (field-level) value does not match specified mime type\n   * @see {@link https://formkit.com/essentials/validation#mime}\n   */\n  mime({ name, args }) {\n    if (!args[0]) {\n      return \"非有效的檔案格式\";\n    }\n    return `${sentence(name)} 可接受的檔案格式為: ${args[0]}`;\n  },\n  /**\n   * Does not fulfill minimum allowed value\n   * @see {@link https://formkit.com/essentials/validation#min}\n   */\n  min({ name, node: { value }, args }) {\n    if (Array.isArray(value)) {\n      return `不可少於 ${args[0]} 個 ${name}`;\n    }\n    return `${name} 必須大於等於 ${args[0]}`;\n  },\n  /**\n   * Is not an allowed value\n   * @see {@link https://formkit.com/essentials/validation#not}\n   */\n  not({ name, node: { value } }) {\n    return `“${value}” 不是 ${name} 欄位可接受的值`;\n  },\n  /**\n   *  Is not a number\n   * @see {@link https://formkit.com/essentials/validation#number}\n   */\n  number({ name }) {\n    return `${sentence(name)} 欄位必須是數字`;\n  },\n  /**\n   * Require one field.\n   * @see {@link https://formkit.com/essentials/validation#require-one}\n   */\n  require_one: ({ name, node, args: inputNames }) => {\n    const labels = inputNames.map((name2) => {\n      const dependentNode = node.at(name2);\n      if (dependentNode) {\n        return createMessageName(dependentNode);\n      }\n      return false;\n    }).filter((name2) => !!name2);\n    labels.unshift(name);\n    return `${labels.join(\"或\")}${labels}需要。`;\n  },\n  /**\n   * Required field.\n   * @see {@link https://formkit.com/essentials/validation#required}\n   */\n  required({ name }) {\n    return `${sentence(name)} 是必要欄位`;\n  },\n  /**\n   * Does not start with specified value\n   * @see {@link https://formkit.com/essentials/validation#starts-with}\n   */\n  starts_with({ name, args }) {\n    return `${sentence(name)} 的開頭必須是 ${list(args)}`;\n  },\n  /**\n   * Is not a url\n   * @see {@link https://formkit.com/essentials/validation#url}\n   */\n  url() {\n    return `請輸入有效的 url`;\n  },\n  /**\n   * Shown when the date is invalid.\n   */\n  invalidDate: \"選取的日期無效\"\n};\nvar zhTW = { ui: ui46, validation: validation46 };\nvar i18nNodes = /* @__PURE__ */ new Set();\nfunction createI18nPlugin(registry) {\n  return function i18nPlugin(node) {\n    i18nNodes.add(node);\n    node.on(\"destroying\", () => i18nNodes.delete(node));\n    let localeKey = parseLocale(node.config.locale, registry);\n    let locale = localeKey ? registry[localeKey] : {};\n    node.on(\"prop:locale\", ({ payload: lang }) => {\n      localeKey = parseLocale(lang, registry);\n      locale = localeKey ? registry[localeKey] : {};\n      node.store.touch();\n    });\n    node.on(\"prop:label\", () => node.store.touch());\n    node.on(\"prop:validationLabel\", () => node.store.touch());\n    node.hook.text((fragment, next) => {\n      const key = fragment.meta?.messageKey || fragment.key;\n      if (has(locale, fragment.type) && has(locale[fragment.type], key)) {\n        const t = locale[fragment.type][key];\n        if (typeof t === \"function\") {\n          fragment.value = Array.isArray(fragment.meta?.i18nArgs) ? t(...fragment.meta.i18nArgs) : t(fragment);\n        } else {\n          fragment.value = t;\n        }\n      }\n      return next(fragment);\n    });\n  };\n}\nfunction parseLocale(locale, availableLocales) {\n  if (has(availableLocales, locale)) {\n    return locale;\n  }\n  const [lang] = locale.split(\"-\");\n  if (has(availableLocales, lang)) {\n    return lang;\n  }\n  for (const locale2 in availableLocales) {\n    return locale2;\n  }\n  return false;\n}\nfunction changeLocale(locale) {\n  for (const node of i18nNodes) {\n    node.config.locale = locale;\n  }\n}\n\n// packages/i18n/src/index.ts\nvar locales = {\n  ar,\n  az,\n  bg,\n  bs,\n  ca,\n  cs,\n  da,\n  de,\n  el,\n  en,\n  es,\n  fa,\n  fi,\n  fr,\n  fy,\n  he,\n  hr,\n  hu,\n  id,\n  it,\n  ja,\n  kk,\n  ko,\n  lt,\n  lv,\n  nb,\n  nl,\n  pl,\n  pt,\n  ro,\n  ru,\n  sk,\n  sl,\n  sr,\n  sv,\n  tet,\n  tg,\n  th,\n  tr,\n  uk,\n  uz,\n  vi,\n  zh,\n  \"zh-TW\": zhTW,\n  is,\n  mn\n};\n\nexport { ar, az, bg, bs, ca, changeLocale, createI18nPlugin, cs, da, date, de, el, en, es, fa, fi, fr, fy, he, hr, hu, id, is, it, ja, kk, ko, list, locales, lt, lv, mn, nb, nl, order, pl, pt, ro, ru, sentence, sk, sl, sr, sv, tet, tg, th, tr, uk, uz, vi, zh, zhTW };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","import { extend, camel, has, slugify, undefine, eq, token, clone, isObject, isPojo } from '@formkit/utils';\nimport { createMessage, warn, isConditional, isComponent, isDOM } from '@formkit/core';\n\n// packages/inputs/src/plugin.ts\nfunction createLibraryPlugin(...libraries) {\n  const library = libraries.reduce(\n    (merged, lib) => extend(merged, lib),\n    {}\n  );\n  const plugin = () => {\n  };\n  plugin.library = function(node) {\n    const type = camel(node.props.type);\n    if (has(library, type)) {\n      node.define(library[type]);\n    }\n  };\n  return plugin;\n}\n\n// packages/inputs/src/props.ts\nvar runtimeProps = [\n  \"classes\",\n  \"config\",\n  \"delay\",\n  \"errors\",\n  \"id\",\n  \"index\",\n  \"inputErrors\",\n  \"modelValue\",\n  \"onUpdate:modelValue\",\n  \"name\",\n  \"number\",\n  \"parent\",\n  \"plugins\",\n  \"sectionsSchema\",\n  \"type\",\n  \"validation\",\n  \"validationLabel\",\n  \"validationMessages\",\n  \"validationRules\",\n  // Runtime event props:\n  \"onInput\",\n  \"onInputRaw\",\n  \"onUpdate:modelValue\",\n  \"onNode\",\n  \"onSubmit\",\n  \"onSubmitInvalid\",\n  \"onSubmitRaw\"\n];\nfunction isGroupOption(option2) {\n  return option2 && typeof option2 === \"object\" && \"group\" in option2 && Array.isArray(option2.options);\n}\nfunction normalizeOptions(options2, i = { count: 1 }) {\n  if (Array.isArray(options2)) {\n    return options2.map(\n      (option2) => {\n        if (typeof option2 === \"string\" || typeof option2 === \"number\") {\n          return {\n            label: String(option2),\n            value: String(option2)\n          };\n        }\n        if (typeof option2 == \"object\") {\n          if (\"group\" in option2) {\n            option2.options = normalizeOptions(option2.options || [], i);\n            return option2;\n          } else if (\"value\" in option2 && typeof option2.value !== \"string\") {\n            Object.assign(option2, {\n              value: `__mask_${i.count++}`,\n              __original: option2.value\n            });\n          }\n        }\n        return option2;\n      }\n    );\n  }\n  return Object.keys(options2).map((value) => {\n    return {\n      label: options2[value],\n      value\n    };\n  });\n}\nfunction optionValue(options2, value, undefinedIfNotFound = false) {\n  if (Array.isArray(options2)) {\n    for (const option2 of options2) {\n      if (typeof option2 !== \"object\" && option2)\n        continue;\n      if (isGroupOption(option2)) {\n        const found = optionValue(option2.options, value, true);\n        if (found !== void 0) {\n          return found;\n        }\n      } else if (value == option2.value) {\n        return \"__original\" in option2 ? option2.__original : option2.value;\n      }\n    }\n  }\n  return undefinedIfNotFound ? void 0 : value;\n}\nfunction shouldSelect(valueA, valueB) {\n  if (valueA === null && valueB === void 0 || valueA === void 0 && valueB === null)\n    return false;\n  if (valueA == valueB)\n    return true;\n  if (isPojo(valueA) && isPojo(valueB))\n    return eq(valueA, valueB);\n  return false;\n}\nfunction options(node) {\n  node.hook.prop((prop, next) => {\n    var _a;\n    if (prop.prop === \"options\") {\n      if (typeof prop.value === \"function\") {\n        node.props.optionsLoader = prop.value;\n        prop.value = [];\n      } else {\n        (_a = node.props)._normalizeCounter ?? (_a._normalizeCounter = { count: 1 });\n        prop.value = normalizeOptions(prop.value, node.props._normalizeCounter);\n      }\n    }\n    return next(prop);\n  });\n}\n// @__NO_SIDE_EFFECTS__\nfunction createSection(section, el, fragment2 = false) {\n  return (...children) => {\n    const extendable = (extensions) => {\n      const node = !el || typeof el === \"string\" ? { $el: el } : el();\n      if (isDOM(node) || isComponent(node)) {\n        if (!node.meta) {\n          node.meta = { section };\n        }\n        if (children.length && !node.children) {\n          node.children = [\n            ...children.map(\n              (child) => typeof child === \"function\" ? child(extensions) : child\n            )\n          ];\n        }\n        if (isDOM(node)) {\n          node.attrs = {\n            class: `$classes.${section}`,\n            ...node.attrs || {}\n          };\n        }\n      }\n      return {\n        if: `$slots.${section}`,\n        then: `$slots.${section}`,\n        else: section in extensions ? /* @__PURE__ */ extendSchema(node, extensions[section]) : node\n      };\n    };\n    extendable._s = section;\n    return fragment2 ? /* @__PURE__ */ createRoot(extendable) : extendable;\n  };\n}\n// @__NO_SIDE_EFFECTS__\nfunction createRoot(rootSection) {\n  return (extensions) => {\n    return [rootSection(extensions)];\n  };\n}\nfunction isSchemaObject(schema) {\n  return !!(schema && typeof schema === \"object\" && (\"$el\" in schema || \"$cmp\" in schema || \"$formkit\" in schema));\n}\n// @__NO_SIDE_EFFECTS__\nfunction extendSchema(schema, extension = {}) {\n  if (typeof schema === \"string\") {\n    return isSchemaObject(extension) || typeof extension === \"string\" ? extension : schema;\n  } else if (Array.isArray(schema)) {\n    return isSchemaObject(extension) ? extension : schema;\n  }\n  return extend(schema, extension);\n}\n\n// packages/inputs/src/sections/actions.ts\nvar actions = createSection(\"actions\", () => ({\n  $el: \"div\",\n  if: \"$actions\"\n}));\n\n// packages/inputs/src/sections/box.ts\nvar box = createSection(\"input\", () => ({\n  $el: \"input\",\n  bind: \"$attrs\",\n  attrs: {\n    type: \"$type\",\n    name: \"$node.props.altName || $node.name\",\n    disabled: \"$option.attrs.disabled || $disabled\",\n    onInput: \"$handlers.toggleChecked\",\n    checked: \"$fns.eq($_value, $onValue)\",\n    onBlur: \"$handlers.blur\",\n    value: \"$: true\",\n    id: \"$id\",\n    \"aria-describedby\": {\n      if: \"$options.length\",\n      then: {\n        if: \"$option.help\",\n        then: '$: \"help-\" + $option.attrs.id',\n        else: void 0\n      },\n      else: {\n        if: \"$help\",\n        then: '$: \"help-\" + $id',\n        else: void 0\n      }\n    }\n  }\n}));\n\n// packages/inputs/src/sections/boxHelp.ts\nvar boxHelp = createSection(\"optionHelp\", () => ({\n  $el: \"div\",\n  if: \"$option.help\",\n  attrs: {\n    id: '$: \"help-\" + $option.attrs.id'\n  }\n}));\n\n// packages/inputs/src/sections/boxInner.ts\nvar boxInner = createSection(\"inner\", \"span\");\n\n// packages/inputs/src/sections/boxLabel.ts\nvar boxLabel = createSection(\"label\", \"span\");\n\n// packages/inputs/src/sections/boxOption.ts\nvar boxOption = createSection(\"option\", () => ({\n  $el: \"li\",\n  for: [\"option\", \"$options\"],\n  attrs: {\n    \"data-disabled\": \"$option.attrs.disabled || $disabled || undefined\"\n  }\n}));\n\n// packages/inputs/src/sections/boxOptions.ts\nvar boxOptions = createSection(\"options\", \"ul\");\n\n// packages/inputs/src/sections/boxWrapper.ts\nvar boxWrapper = createSection(\"wrapper\", () => ({\n  $el: \"label\",\n  attrs: {\n    \"data-disabled\": {\n      if: \"$options.length\",\n      then: void 0,\n      else: \"$disabled || undefined\"\n    },\n    \"data-checked\": {\n      if: \"$options == undefined\",\n      then: \"$fns.eq($_value, $onValue) || undefined\",\n      else: \"$fns.isChecked($option.value) || undefined\"\n    }\n  }\n}));\n\n// packages/inputs/src/sections/buttonInput.ts\nvar buttonInput = createSection(\"input\", () => ({\n  $el: \"button\",\n  bind: \"$attrs\",\n  attrs: {\n    type: \"$type\",\n    disabled: \"$disabled\",\n    name: \"$node.name\",\n    id: \"$id\"\n  }\n}));\n\n// packages/inputs/src/sections/buttonLabel.ts\nvar buttonLabel = createSection(\"default\", null);\n\n// packages/inputs/src/sections/decorator.ts\nvar decorator = createSection(\"decorator\", () => ({\n  $el: \"span\",\n  attrs: {\n    \"aria-hidden\": \"true\"\n  }\n}));\n\n// packages/inputs/src/sections/fieldset.ts\nvar fieldset = createSection(\"fieldset\", () => ({\n  $el: \"fieldset\",\n  attrs: {\n    id: \"$id\",\n    \"aria-describedby\": {\n      if: \"$help\",\n      then: '$: \"help-\" + $id',\n      else: void 0\n    }\n  }\n}));\n\n// packages/inputs/src/sections/fileInput.ts\nvar fileInput = createSection(\"input\", () => ({\n  $el: \"input\",\n  bind: \"$attrs\",\n  attrs: {\n    type: \"file\",\n    disabled: \"$disabled\",\n    name: \"$node.name\",\n    onChange: \"$handlers.files\",\n    onBlur: \"$handlers.blur\",\n    id: \"$id\",\n    \"aria-describedby\": \"$describedBy\",\n    \"aria-required\": \"$state.required || undefined\"\n  }\n}));\n\n// packages/inputs/src/sections/fileItem.ts\nvar fileItem = createSection(\"fileItem\", () => ({\n  $el: \"li\",\n  for: [\"file\", \"$value\"]\n}));\n\n// packages/inputs/src/sections/fileList.ts\nvar fileList = createSection(\"fileList\", () => ({\n  $el: \"ul\",\n  if: \"$value.length\",\n  attrs: {\n    \"data-has-multiple\": \"$_hasMultipleFiles\"\n  }\n}));\n\n// packages/inputs/src/sections/fileName.ts\nvar fileName = createSection(\"fileName\", () => ({\n  $el: \"span\",\n  attrs: {\n    class: \"$classes.fileName\"\n  }\n}));\n\n// packages/inputs/src/sections/fileRemove.ts\nvar fileRemove = createSection(\"fileRemove\", () => ({\n  $el: \"button\",\n  attrs: {\n    type: \"button\",\n    onClick: \"$handlers.resetFiles\"\n  }\n}));\n\n// packages/inputs/src/sections/formInput.ts\nvar formInput = createSection(\"form\", () => ({\n  $el: \"form\",\n  bind: \"$attrs\",\n  attrs: {\n    id: \"$id\",\n    name: \"$node.name\",\n    onSubmit: \"$handlers.submit\",\n    \"data-loading\": \"$state.loading || undefined\"\n  }\n}));\n\n// packages/inputs/src/sections/fragment.ts\nvar fragment = createSection(\"wrapper\", null, true);\n\n// packages/inputs/src/sections/help.ts\nvar help = createSection(\"help\", () => ({\n  $el: \"div\",\n  if: \"$help\",\n  attrs: {\n    id: '$: \"help-\" + $id'\n  }\n}));\n\n// packages/inputs/src/sections/icon.ts\nvar icon = (sectionKey, el) => {\n  return createSection(`${sectionKey}Icon`, () => {\n    const rawIconProp = `_raw${sectionKey.charAt(0).toUpperCase()}${sectionKey.slice(1)}Icon`;\n    return {\n      if: `$${sectionKey}Icon && $${rawIconProp}`,\n      $el: `${el ? el : \"span\"}`,\n      attrs: {\n        class: `$classes.${sectionKey}Icon + \" \" + $classes.icon`,\n        innerHTML: `$${rawIconProp}`,\n        onClick: `$handlers.iconClick(${sectionKey})`,\n        for: {\n          if: `${el === \"label\"}`,\n          then: \"$id\"\n        }\n      }\n    };\n  })();\n};\n\n// packages/inputs/src/sections/inner.ts\nvar inner = createSection(\"inner\", \"div\");\n\n// packages/inputs/src/sections/label.ts\nvar label = createSection(\"label\", () => ({\n  $el: \"label\",\n  if: \"$label\",\n  attrs: {\n    for: \"$id\"\n  }\n}));\n\n// packages/inputs/src/sections/legend.ts\nvar legend = createSection(\"legend\", () => ({\n  $el: \"legend\",\n  if: \"$label\"\n}));\n\n// packages/inputs/src/sections/message.ts\nvar message = createSection(\"message\", () => ({\n  $el: \"li\",\n  for: [\"message\", \"$messages\"],\n  attrs: {\n    key: \"$message.key\",\n    id: `$id + '-' + $message.key`,\n    \"data-message-type\": \"$message.type\"\n  }\n}));\n\n// packages/inputs/src/sections/messages.ts\nvar messages = createSection(\"messages\", () => ({\n  $el: \"ul\",\n  if: \"$defaultMessagePlacement && $fns.length($messages)\"\n}));\n\n// packages/inputs/src/sections/noFiles.ts\nvar noFiles = createSection(\"noFiles\", () => ({\n  $el: \"span\",\n  if: \"$value.length == 0\"\n}));\n\n// packages/inputs/src/sections/optGroup.ts\nvar optGroup = createSection(\"optGroup\", () => ({\n  $el: \"optgroup\",\n  bind: \"$option.attrs\",\n  attrs: {\n    label: \"$option.group\"\n  }\n}));\n\n// packages/inputs/src/sections/option.ts\nvar option = createSection(\"option\", () => ({\n  $el: \"option\",\n  bind: \"$option.attrs\",\n  attrs: {\n    class: \"$classes.option\",\n    value: \"$option.value\",\n    selected: \"$fns.isSelected($option)\"\n  }\n}));\n\n// packages/inputs/src/sections/optionSlot.ts\nvar optionSlot = createSection(\"options\", () => ({\n  $el: null,\n  if: \"$options.length\",\n  for: [\"option\", \"$option.options || $options\"]\n}));\n\n// packages/inputs/src/sections/outer.ts\nvar outer = createSection(\"outer\", () => ({\n  $el: \"div\",\n  attrs: {\n    key: \"$id\",\n    \"data-family\": \"$family || undefined\",\n    \"data-type\": \"$type\",\n    \"data-multiple\": '$attrs.multiple || ($type != \"select\" && $options != undefined) || undefined',\n    \"data-has-multiple\": \"$_hasMultipleFiles\",\n    \"data-disabled\": '$: ($disabled !== \"false\" && $disabled) || undefined',\n    \"data-empty\": \"$state.empty || undefined\",\n    \"data-complete\": \"$state.complete || undefined\",\n    \"data-invalid\": \"$state.valid === false && $state.validationVisible || undefined\",\n    \"data-errors\": \"$state.errors || undefined\",\n    \"data-submitted\": \"$state.submitted || undefined\",\n    \"data-prefix-icon\": \"$_rawPrefixIcon !== undefined || undefined\",\n    \"data-suffix-icon\": \"$_rawSuffixIcon !== undefined || undefined\",\n    \"data-prefix-icon-click\": \"$onPrefixIconClick !== undefined || undefined\",\n    \"data-suffix-icon-click\": \"$onSuffixIconClick !== undefined || undefined\"\n  }\n}));\n\n// packages/inputs/src/sections/prefix.ts\nvar prefix = createSection(\"prefix\", null);\n\n// packages/inputs/src/sections/selectInput.ts\nvar selectInput = createSection(\"input\", () => ({\n  $el: \"select\",\n  bind: \"$attrs\",\n  attrs: {\n    id: \"$id\",\n    \"data-placeholder\": \"$fns.showPlaceholder($_value, $placeholder)\",\n    disabled: \"$disabled\",\n    class: \"$classes.input\",\n    name: \"$node.name\",\n    onChange: \"$handlers.onChange\",\n    onInput: \"$handlers.selectInput\",\n    onBlur: \"$handlers.blur\",\n    \"aria-describedby\": \"$describedBy\",\n    \"aria-required\": \"$state.required || undefined\"\n  }\n}));\n\n// packages/inputs/src/sections/submitInput.ts\nvar submitInput = createSection(\"submit\", () => ({\n  $cmp: \"FormKit\",\n  bind: \"$submitAttrs\",\n  props: {\n    type: \"submit\",\n    label: \"$submitLabel\"\n  }\n}));\n\n// packages/inputs/src/sections/suffix.ts\nvar suffix = createSection(\"suffix\", null);\n\n// packages/inputs/src/sections/textInput.ts\nvar textInput = createSection(\"input\", () => ({\n  $el: \"input\",\n  bind: \"$attrs\",\n  attrs: {\n    type: \"$type\",\n    disabled: \"$disabled\",\n    name: \"$node.name\",\n    onInput: \"$handlers.DOMInput\",\n    onBlur: \"$handlers.blur\",\n    value: \"$_value\",\n    id: \"$id\",\n    \"aria-describedby\": \"$describedBy\",\n    \"aria-required\": \"$state.required || undefined\"\n  }\n}));\n\n// packages/inputs/src/sections/textareaInput.ts\nvar textareaInput = createSection(\"input\", () => ({\n  $el: \"textarea\",\n  bind: \"$attrs\",\n  attrs: {\n    disabled: \"$disabled\",\n    name: \"$node.name\",\n    onInput: \"$handlers.DOMInput\",\n    onBlur: \"$handlers.blur\",\n    value: \"$_value\",\n    id: \"$id\",\n    \"aria-describedby\": \"$describedBy\",\n    \"aria-required\": \"$state.required || undefined\"\n  },\n  children: \"$initialValue\"\n}));\n\n// packages/inputs/src/sections/wrapper.ts\nvar wrapper = createSection(\"wrapper\", \"div\");\nfunction normalizeBoxes(node) {\n  return function(prop, next) {\n    if (prop.prop === \"options\" && Array.isArray(prop.value)) {\n      prop.value = prop.value.map((option2) => {\n        if (!option2.attrs?.id) {\n          return extend(option2, {\n            attrs: {\n              id: `${node.props.id}-option-${slugify(String(option2.value))}`\n            }\n          });\n        }\n        return option2;\n      });\n      if (node.props.type === \"checkbox\" && !Array.isArray(node.value)) {\n        if (node.isCreated) {\n          node.input([], false);\n        } else {\n          node.on(\"created\", () => {\n            if (!Array.isArray(node.value)) {\n              node.input([], false);\n            }\n          });\n        }\n      }\n    }\n    return next(prop);\n  };\n}\n\n// packages/inputs/src/features/checkboxes.ts\nfunction toggleChecked(node, e) {\n  const el = e.target;\n  if (el instanceof HTMLInputElement) {\n    const value = Array.isArray(node.props.options) ? optionValue(node.props.options, el.value) : el.value;\n    if (Array.isArray(node.props.options) && node.props.options.length) {\n      if (!Array.isArray(node._value)) {\n        node.input([value]);\n      } else if (!node._value.some((existingValue) => shouldSelect(value, existingValue))) {\n        node.input([...node._value, value]);\n      } else {\n        node.input(\n          node._value.filter(\n            (existingValue) => !shouldSelect(value, existingValue)\n          )\n        );\n      }\n    } else {\n      if (el.checked) {\n        node.input(node.props.onValue);\n      } else {\n        node.input(node.props.offValue);\n      }\n    }\n  }\n}\nfunction isChecked(node, value) {\n  node.context?.value;\n  node.context?._value;\n  if (Array.isArray(node._value)) {\n    return node._value.some(\n      (existingValue) => shouldSelect(optionValue(node.props.options, value), existingValue)\n    );\n  }\n  return false;\n}\nfunction checkboxes(node) {\n  node.on(\"created\", () => {\n    if (node.context?.handlers) {\n      node.context.handlers.toggleChecked = toggleChecked.bind(null, node);\n    }\n    if (node.context?.fns) {\n      node.context.fns.isChecked = isChecked.bind(null, node);\n    }\n    if (!has(node.props, \"onValue\"))\n      node.props.onValue = true;\n    if (!has(node.props, \"offValue\"))\n      node.props.offValue = false;\n  });\n  node.hook.prop(normalizeBoxes(node));\n}\n\n// packages/inputs/src/features/icon.ts\nfunction defaultIcon(sectionKey, defaultIcon2) {\n  return (node) => {\n    if (node.props[`${sectionKey}Icon`] === void 0) {\n      node.props[`${sectionKey}Icon`] = defaultIcon2.startsWith(\"<svg\") ? defaultIcon2 : `default:${defaultIcon2}`;\n    }\n  };\n}\nfunction disables(node) {\n  node.on(\"created\", () => {\n    if (\"disabled\" in node.props) {\n      node.props.disabled = undefine(node.props.disabled);\n      node.config.disabled = undefine(node.props.disabled);\n    }\n  });\n  node.hook.prop(({ prop, value }, next) => {\n    value = prop === \"disabled\" ? undefine(value) : value;\n    return next({ prop, value });\n  });\n  node.on(\"prop:disabled\", ({ payload: value }) => {\n    node.config.disabled = undefine(value);\n  });\n}\nfunction localize(key, value) {\n  return (node) => {\n    node.store.set(\n      createMessage({\n        key,\n        type: \"ui\",\n        value: value || key,\n        meta: {\n          localize: true,\n          i18nArgs: [node]\n        }\n      })\n    );\n  };\n}\n\n// packages/inputs/src/features/files.ts\nvar isBrowser = typeof window !== \"undefined\";\nfunction removeHover(e) {\n  if (e.target instanceof HTMLElement && e.target.hasAttribute(\"data-file-hover\")) {\n    e.target.removeAttribute(\"data-file-hover\");\n  }\n}\nfunction preventStrayDrop(type, e) {\n  if (!(e.target instanceof HTMLInputElement)) {\n    e.preventDefault();\n  } else if (type === \"dragover\") {\n    e.target.setAttribute(\"data-file-hover\", \"true\");\n  }\n  if (type === \"drop\") {\n    removeHover(e);\n  }\n}\nfunction files(node) {\n  localize(\"noFiles\", \"Select file\")(node);\n  localize(\"removeAll\", \"Remove all\")(node);\n  localize(\"remove\")(node);\n  node.addProps([\"_hasMultipleFiles\"]);\n  if (isBrowser) {\n    if (!window._FormKit_File_Drop) {\n      window.addEventListener(\n        \"dragover\",\n        preventStrayDrop.bind(null, \"dragover\")\n      );\n      window.addEventListener(\"drop\", preventStrayDrop.bind(null, \"drop\"));\n      window.addEventListener(\"dragleave\", removeHover);\n      window._FormKit_File_Drop = true;\n    }\n  }\n  node.hook.input((value, next) => next(Array.isArray(value) ? value : []));\n  node.on(\"input\", ({ payload: value }) => {\n    node.props._hasMultipleFiles = Array.isArray(value) && value.length > 1 ? true : void 0;\n  });\n  node.on(\"reset\", () => {\n    if (node.props.id && isBrowser) {\n      const el = document.getElementById(node.props.id);\n      if (el)\n        el.value = \"\";\n    }\n  });\n  node.on(\"created\", () => {\n    if (!Array.isArray(node.value))\n      node.input([], false);\n    if (!node.context)\n      return;\n    node.context.handlers.resetFiles = (e) => {\n      e.preventDefault();\n      node.input([]);\n      if (node.props.id && isBrowser) {\n        const el = document.getElementById(node.props.id);\n        if (el)\n          el.value = \"\";\n        el?.focus();\n      }\n    };\n    node.context.handlers.files = (e) => {\n      const files2 = [];\n      if (e.target instanceof HTMLInputElement && e.target.files) {\n        for (let i = 0; i < e.target.files.length; i++) {\n          let file2;\n          if (file2 = e.target.files.item(i)) {\n            files2.push({ name: file2.name, file: file2 });\n          }\n        }\n        node.input(files2);\n      }\n      if (node.context)\n        node.context.files = files2;\n      if (typeof node.props.attrs?.onChange === \"function\") {\n        node.props.attrs?.onChange(e);\n      }\n    };\n  });\n}\nvar loading = createMessage({\n  key: \"loading\",\n  value: true,\n  visible: false\n});\nasync function handleSubmit(node, submitEvent) {\n  const submitNonce = Math.random();\n  node.props._submitNonce = submitNonce;\n  submitEvent.preventDefault();\n  await node.settled;\n  if (node.ledger.value(\"validating\")) {\n    node.store.set(loading);\n    await node.ledger.settled(\"validating\");\n    node.store.remove(\"loading\");\n    if (node.props._submitNonce !== submitNonce)\n      return;\n  }\n  const setSubmitted = (n) => n.store.set(\n    createMessage({\n      key: \"submitted\",\n      value: true,\n      visible: false\n    })\n  );\n  node.walk(setSubmitted);\n  setSubmitted(node);\n  node.emit(\"submit-raw\");\n  if (typeof node.props.onSubmitRaw === \"function\") {\n    node.props.onSubmitRaw(submitEvent, node);\n  }\n  if (node.ledger.value(\"blocking\")) {\n    if (typeof node.props.onSubmitInvalid === \"function\") {\n      node.props.onSubmitInvalid(node);\n    }\n    if (node.props.incompleteMessage !== false) {\n      setIncompleteMessage(node);\n    }\n  } else {\n    if (typeof node.props.onSubmit === \"function\") {\n      const retVal = node.props.onSubmit(\n        node.hook.submit.dispatch(clone(node.value)),\n        node\n      );\n      if (retVal instanceof Promise) {\n        const autoDisable = node.props.disabled === void 0 && node.props.submitBehavior !== \"live\";\n        if (autoDisable)\n          node.props.disabled = true;\n        node.store.set(loading);\n        await retVal;\n        if (autoDisable)\n          node.props.disabled = false;\n        node.store.remove(\"loading\");\n      }\n    } else {\n      if (submitEvent.target instanceof HTMLFormElement) {\n        submitEvent.target.submit();\n      }\n    }\n  }\n}\nfunction setIncompleteMessage(node) {\n  node.store.set(\n    createMessage({\n      blocking: false,\n      key: `incomplete`,\n      meta: {\n        localize: node.props.incompleteMessage === void 0,\n        i18nArgs: [{ node }],\n        showAsMessage: true\n      },\n      type: \"ui\",\n      value: node.props.incompleteMessage || \"Form incomplete.\"\n    })\n  );\n}\nfunction form(node) {\n  var _a;\n  node.props.isForm = true;\n  node.ledger.count(\"validating\", (m) => m.key === \"validating\");\n  (_a = node.props).submitAttrs ?? (_a.submitAttrs = {\n    disabled: node.props.disabled\n  });\n  node.on(\"prop:disabled\", ({ payload: disabled }) => {\n    node.props.submitAttrs = { ...node.props.submitAttrs, disabled };\n  });\n  node.on(\"created\", () => {\n    if (node.context?.handlers) {\n      node.context.handlers.submit = handleSubmit.bind(null, node);\n    }\n    if (!has(node.props, \"actions\")) {\n      node.props.actions = true;\n    }\n  });\n  node.on(\"prop:incompleteMessage\", () => {\n    if (node.store.incomplete)\n      setIncompleteMessage(node);\n  });\n  node.on(\"settled:blocking\", () => node.store.remove(\"incomplete\"));\n}\n\n// packages/inputs/src/features/ignores.ts\nfunction ignore(node) {\n  if (node.props.ignore === void 0) {\n    node.props.ignore = true;\n    node.parent = null;\n  }\n}\n\n// packages/inputs/src/features/initialValue.ts\nfunction initialValue(node) {\n  node.on(\"created\", () => {\n    if (node.context) {\n      node.context.initialValue = node.value || \"\";\n    }\n  });\n}\n\n// packages/inputs/src/features/casts.ts\nfunction casts(node) {\n  if (typeof node.props.number === \"undefined\")\n    return;\n  const strict = [\"number\", \"range\", \"hidden\"].includes(node.props.type);\n  node.hook.input((value, next) => {\n    if (value === \"\")\n      return next(void 0);\n    const numericValue = node.props.number === \"integer\" ? parseInt(value) : parseFloat(value);\n    if (!Number.isFinite(numericValue))\n      return strict ? next(void 0) : next(value);\n    return next(numericValue);\n  });\n}\nfunction toggleChecked2(node, event) {\n  if (event.target instanceof HTMLInputElement) {\n    node.input(optionValue(node.props.options, event.target.value));\n  }\n}\nfunction isChecked2(node, value) {\n  node.context?.value;\n  node.context?._value;\n  return shouldSelect(optionValue(node.props.options, value), node._value);\n}\nfunction radios(node) {\n  node.on(\"created\", () => {\n    if (!Array.isArray(node.props.options)) {\n      warn(350, {\n        node,\n        inputType: \"radio\"\n      });\n    }\n    if (node.context?.handlers) {\n      node.context.handlers.toggleChecked = toggleChecked2.bind(null, node);\n    }\n    if (node.context?.fns) {\n      node.context.fns.isChecked = isChecked2.bind(null, node);\n    }\n  });\n  node.hook.prop(normalizeBoxes(node));\n}\n\n// packages/inputs/src/features/renamesRadios.ts\nvar radioInstance = 0;\nfunction renamesRadios(node) {\n  if (node.type === \"group\" || node.type === \"list\") {\n    node.plugins.add(renamesRadiosPlugin);\n  }\n}\nfunction renamesRadiosPlugin(node) {\n  if (node.props.type === \"radio\") {\n    node.addProps([\"altName\"]);\n    node.props.altName = `${node.name}_${radioInstance++}`;\n  }\n}\nfunction isSelected(node, option2) {\n  if (isGroupOption(option2))\n    return false;\n  node.context && node.context.value;\n  const optionValue2 = \"__original\" in option2 ? option2.__original : option2.value;\n  return Array.isArray(node._value) ? node._value.some((optionA) => shouldSelect(optionA, optionValue2)) : (node._value === void 0 || node._value === null && !containsValue(node.props.options, null)) && option2.attrs && option2.attrs[\"data-is-placeholder\"] ? true : shouldSelect(optionValue2, node._value);\n}\nfunction containsValue(options2, value) {\n  return options2.some((option2) => {\n    if (isGroupOption(option2)) {\n      return containsValue(option2.options, value);\n    } else {\n      return (\"__original\" in option2 ? option2.__original : option2.value) === value;\n    }\n  });\n}\nasync function deferChange(node, e) {\n  if (typeof node.props.attrs?.onChange === \"function\") {\n    await new Promise((r) => setTimeout(r, 0));\n    await node.settled;\n    node.props.attrs.onChange(e);\n  }\n}\nfunction selectInput2(node, e) {\n  const target = e.target;\n  const value = target.hasAttribute(\"multiple\") ? Array.from(target.selectedOptions).map(\n    (o) => optionValue(node.props.options, o.value)\n  ) : optionValue(node.props.options, target.value);\n  node.input(value);\n}\nfunction applyPlaceholder(options2, placeholder) {\n  if (!options2.some(\n    (option2) => option2.attrs && option2.attrs[\"data-is-placeholder\"]\n  )) {\n    return [\n      {\n        label: placeholder,\n        value: \"\",\n        attrs: {\n          hidden: true,\n          disabled: true,\n          \"data-is-placeholder\": \"true\"\n        }\n      },\n      ...options2\n    ];\n  }\n  return options2;\n}\nfunction firstValue(options2) {\n  const option2 = options2.length > 0 ? options2[0] : void 0;\n  if (!option2)\n    return void 0;\n  if (isGroupOption(option2))\n    return firstValue(option2.options);\n  return \"__original\" in option2 ? option2.__original : option2.value;\n}\nfunction select(node) {\n  node.on(\"created\", () => {\n    const isMultiple = undefine(node.props.attrs?.multiple);\n    if (!isMultiple && node.props.placeholder && Array.isArray(node.props.options)) {\n      node.hook.prop(({ prop, value }, next) => {\n        if (prop === \"options\") {\n          value = applyPlaceholder(value, node.props.placeholder);\n        }\n        return next({ prop, value });\n      });\n      node.props.options = applyPlaceholder(\n        node.props.options,\n        node.props.placeholder\n      );\n    }\n    if (isMultiple) {\n      if (node.value === void 0) {\n        node.input([], false);\n      }\n    } else if (node.context && !node.context.options) {\n      node.props.attrs = Object.assign({}, node.props.attrs, {\n        value: node._value\n      });\n      node.on(\"input\", ({ payload }) => {\n        node.props.attrs = Object.assign({}, node.props.attrs, {\n          value: payload\n        });\n      });\n    }\n    if (node.context?.handlers) {\n      node.context.handlers.selectInput = selectInput2.bind(null, node);\n      node.context.handlers.onChange = deferChange.bind(null, node);\n    }\n    if (node.context?.fns) {\n      node.context.fns.isSelected = isSelected.bind(null, node);\n      node.context.fns.showPlaceholder = (value, placeholder) => {\n        if (!Array.isArray(node.props.options))\n          return false;\n        const hasMatchingValue = node.props.options.some(\n          (option2) => {\n            if (option2.attrs && \"data-is-placeholder\" in option2.attrs)\n              return false;\n            const optionValue2 = \"__original\" in option2 ? option2.__original : option2.value;\n            return eq(value, optionValue2);\n          }\n        );\n        return placeholder && !hasMatchingValue ? true : void 0;\n      };\n    }\n  });\n  node.hook.input((value, next) => {\n    if (!node.props.placeholder && value === void 0 && Array.isArray(node.props?.options) && node.props.options.length && !undefine(node.props?.attrs?.multiple)) {\n      value = firstValue(node.props.options);\n    }\n    return next(value);\n  });\n}\n\n// packages/inputs/src/compose.ts\n// @__NO_SIDE_EFFECTS__\nfunction isSlotCondition(node) {\n  if (isConditional(node) && node.if && node.if.startsWith(\"$slots.\") && typeof node.then === \"string\" && node.then.startsWith(\"$slots.\") && \"else\" in node) {\n    return true;\n  }\n  return false;\n}\n// @__NO_SIDE_EFFECTS__\nfunction findSection(schema, target) {\n  return eachSection(\n    schema,\n    (section, sectionCondition, parent) => {\n      if (section.meta?.section === target) {\n        return [parent, sectionCondition];\n      }\n      return;\n    },\n    true\n  ) ?? [false, false];\n}\nfunction eachSection(schema, callback, stopOnCallbackReturn = false, schemaParent) {\n  if (Array.isArray(schema)) {\n    for (const node of schema) {\n      const callbackReturn = eachSection(\n        node,\n        callback,\n        stopOnCallbackReturn,\n        schema\n      );\n      if (callbackReturn && stopOnCallbackReturn) {\n        return callbackReturn;\n      }\n    }\n    return;\n  }\n  if (isSection(schema)) {\n    const callbackReturn = callback(schema.else, schema, schemaParent);\n    if (callbackReturn && stopOnCallbackReturn) {\n      return callbackReturn;\n    }\n    return eachSection(schema.else, callback, stopOnCallbackReturn, schema);\n  } else if ((isComponent(schema) || isDOM(schema)) && schema.children) {\n    return eachSection(\n      schema.children,\n      callback,\n      stopOnCallbackReturn\n    );\n  } else if (isConditional(schema)) {\n    if (schema.then && typeof schema.then !== \"string\") {\n      eachSection(schema.then, callback, stopOnCallbackReturn, schema);\n    }\n    if (schema.else && typeof schema.else !== \"string\") {\n      eachSection(schema.else, callback, stopOnCallbackReturn, schema);\n    }\n  }\n}\nfunction isSection(section) {\n  if (isConditional(section) && typeof section.then === \"string\" && section.else && typeof section.else !== \"string\" && !Array.isArray(section.else) && !isConditional(section.else) && section.else.meta?.section) {\n    return true;\n  }\n  return false;\n}\n// @__NO_SIDE_EFFECTS__\nfunction useSchema(inputSection, sectionsSchema = {}) {\n  const schema = outer(\n    wrapper(\n      label(\"$label\"),\n      inner(icon(\"prefix\"), prefix(), inputSection(), suffix(), icon(\"suffix\"))\n    ),\n    help(\"$help\"),\n    messages(message(\"$message.value\"))\n  );\n  return (propSectionsSchema = {}) => schema(extend(sectionsSchema, propSectionsSchema));\n}\n// @__NO_SIDE_EFFECTS__\nfunction $attrs(attrs, section) {\n  const extendable = (extensions) => {\n    const node = section(extensions);\n    const attributes = typeof attrs === \"function\" ? attrs() : attrs;\n    if (!isObject(attributes))\n      return node;\n    if (/* @__PURE__ */ isSlotCondition(node) && isDOM(node.else)) {\n      node.else.attrs = { ...node.else.attrs, ...attributes };\n    } else if (isDOM(node)) {\n      node.attrs = { ...node.attrs, ...attributes };\n    }\n    return node;\n  };\n  extendable._s = section._s;\n  return extendable;\n}\n// @__NO_SIDE_EFFECTS__\nfunction $if(condition, then, otherwise) {\n  const extendable = (extensions) => {\n    const node = then(extensions);\n    if (otherwise || isSchemaObject(node) && \"if\" in node || /* @__PURE__ */ isSlotCondition(node)) {\n      const conditionalNode = {\n        if: condition,\n        then: node\n      };\n      if (otherwise) {\n        conditionalNode.else = otherwise(extensions);\n      }\n      return conditionalNode;\n    } else if (/* @__PURE__ */ isSlotCondition(node)) {\n      Object.assign(node.else, { if: condition });\n    } else if (isSchemaObject(node)) {\n      Object.assign(node, { if: condition });\n    }\n    return node;\n  };\n  extendable._s = token();\n  return extendable;\n}\n// @__NO_SIDE_EFFECTS__\nfunction $for(varName, inName, section) {\n  return (extensions) => {\n    const node = section(extensions);\n    if (/* @__PURE__ */ isSlotCondition(node)) {\n      Object.assign(node.else, { for: [varName, inName] });\n    } else if (isSchemaObject(node)) {\n      Object.assign(node, { for: [varName, inName] });\n    }\n    return node;\n  };\n}\n// @__NO_SIDE_EFFECTS__\nfunction $extend(section, extendWith) {\n  const extendable = (extensions) => {\n    const node = section({});\n    if (/* @__PURE__ */ isSlotCondition(node)) {\n      if (Array.isArray(node.else))\n        return node;\n      node.else = extendSchema(\n        extendSchema(node.else, extendWith),\n        section._s ? extensions[section._s] : {}\n      );\n      return node;\n    }\n    return extendSchema(\n      extendSchema(node, extendWith),\n      section._s ? extensions[section._s] : {}\n    );\n  };\n  extendable._s = section._s;\n  return extendable;\n}\n// @__NO_SIDE_EFFECTS__\nfunction $root(section) {\n  warn(800, \"$root\");\n  return createRoot(section);\n}\n\n// packages/inputs/src/inputs/button.ts\nvar button = {\n  /**\n   * The actual schema of the input, or a function that returns the schema.\n   */\n  schema: outer(\n    messages(message(\"$message.value\")),\n    wrapper(\n      buttonInput(\n        icon(\"prefix\"),\n        prefix(),\n        buttonLabel(\"$label || $ui.submit.value\"),\n        suffix(),\n        icon(\"suffix\")\n      )\n    ),\n    help(\"$help\")\n  ),\n  /**\n   * The type of node, can be a list, group, or input.\n   */\n  type: \"input\",\n  /**\n   * The family of inputs this one belongs too. For example \"text\" and \"email\"\n   * are both part of the \"text\" family. This is primary used for styling.\n   */\n  family: \"button\",\n  /**\n   * An array of extra props to accept for this input.\n   */\n  props: [],\n  /**\n   * Additional features that should be added to your input\n   */\n  features: [localize(\"submit\"), ignore],\n  /**\n   * A key to use for memoizing the schema. This is used to prevent the schema\n   * from needing to be stringified when performing a memo lookup.\n   */\n  schemaMemoKey: \"h6st4epl3j8\"\n};\n\n// packages/inputs/src/inputs/checkbox.ts\nvar checkbox = {\n  /**\n   * The actual schema of the input, or a function that returns the schema.\n   */\n  schema: outer(\n    $if(\n      \"$options == undefined\",\n      /**\n       * Single checkbox structure.\n       */\n      boxWrapper(\n        boxInner(prefix(), box(), decorator(icon(\"decorator\")), suffix()),\n        $extend(boxLabel(\"$label\"), {\n          if: \"$label\"\n        })\n      ),\n      /**\n       * Multi checkbox structure.\n       */\n      fieldset(\n        legend(\"$label\"),\n        help(\"$help\"),\n        boxOptions(\n          boxOption(\n            boxWrapper(\n              boxInner(\n                prefix(),\n                $extend(box(), {\n                  bind: \"$option.attrs\",\n                  attrs: {\n                    id: \"$option.attrs.id\",\n                    value: \"$option.value\",\n                    checked: \"$fns.isChecked($option.value)\"\n                  }\n                }),\n                decorator(icon(\"decorator\")),\n                suffix()\n              ),\n              $extend(boxLabel(\"$option.label\"), {\n                if: \"$option.label\"\n              })\n            ),\n            boxHelp(\"$option.help\")\n          )\n        )\n      )\n    ),\n    // Help text only goes under the input when it is a single.\n    $if(\"$options == undefined && $help\", help(\"$help\")),\n    messages(message(\"$message.value\"))\n  ),\n  /**\n   * The type of node, can be a list, group, or input.\n   */\n  type: \"input\",\n  /**\n   * The family of inputs this one belongs too. For example \"text\" and \"email\"\n   * are both part of the \"text\" family. This is primary used for styling.\n   */\n  family: \"box\",\n  /**\n   * An array of extra props to accept for this input.\n   */\n  props: [\"options\", \"onValue\", \"offValue\", \"optionsLoader\"],\n  /**\n   * Additional features that should be added to your input\n   */\n  features: [\n    options,\n    checkboxes,\n    defaultIcon(\"decorator\", \"checkboxDecorator\")\n  ],\n  /**\n   * The key used to memoize the schema.\n   */\n  schemaMemoKey: \"qje02tb3gu8\"\n};\n\n// packages/inputs/src/inputs/file.ts\nvar file = {\n  /**\n   * The actual schema of the input, or a function that returns the schema.\n   */\n  schema: outer(\n    wrapper(\n      label(\"$label\"),\n      inner(\n        icon(\"prefix\", \"label\"),\n        prefix(),\n        fileInput(),\n        fileList(\n          fileItem(\n            icon(\"fileItem\"),\n            fileName(\"$file.name\"),\n            $if(\n              \"$value.length === 1\",\n              fileRemove(\n                icon(\"fileRemove\"),\n                '$ui.remove.value + \" \" + $file.name'\n              )\n            )\n          )\n        ),\n        $if(\"$value.length > 1\", fileRemove(\"$ui.removeAll.value\")),\n        noFiles(icon(\"noFiles\"), \"$ui.noFiles.value\"),\n        suffix(),\n        icon(\"suffix\")\n      )\n    ),\n    help(\"$help\"),\n    messages(message(\"$message.value\"))\n  ),\n  /**\n   * The type of node, can be a list, group, or input.\n   */\n  type: \"input\",\n  /**\n   * The family of inputs this one belongs too. For example \"text\" and \"email\"\n   * are both part of the \"text\" family. This is primary used for styling.\n   */\n  family: \"text\",\n  /**\n   * An array of extra props to accept for this input.\n   */\n  props: [],\n  /**\n   * Additional features that should be added to your input\n   */\n  features: [\n    files,\n    defaultIcon(\"fileItem\", \"fileItem\"),\n    defaultIcon(\"fileRemove\", \"fileRemove\"),\n    defaultIcon(\"noFiles\", \"noFiles\")\n  ],\n  /**\n   * The key used to memoize the schema.\n   */\n  schemaMemoKey: \"9kqc4852fv8\"\n};\n\n// packages/inputs/src/inputs/form.ts\nvar form2 = {\n  /**\n   * The actual schema of the input, or a function that returns the schema.\n   */\n  schema: formInput(\n    \"$slots.default\",\n    messages(message(\"$message.value\")),\n    actions(submitInput())\n  ),\n  /**\n   * The type of node, can be a list, group, or input.\n   */\n  type: \"group\",\n  /**\n   * An array of extra props to accept for this input.\n   */\n  props: [\n    \"actions\",\n    \"submit\",\n    \"submitLabel\",\n    \"submitAttrs\",\n    \"submitBehavior\",\n    \"incompleteMessage\"\n  ],\n  /**\n   * Additional features that should be added to your input\n   */\n  features: [form, disables],\n  /**\n   * The key used to memoize the schema.\n   */\n  schemaMemoKey: \"5bg016redjo\"\n};\n\n// packages/inputs/src/inputs/group.ts\nvar group = {\n  /**\n   * The actual schema of the input, or a function that returns the schema.\n   */\n  schema: fragment(\"$slots.default\"),\n  /**\n   * The type of node, can be a list, group, or input.\n   */\n  type: \"group\",\n  /**\n   * An array of extra props to accept for this input.\n   */\n  props: [],\n  /**\n   * Additional features that should be added to your input\n   */\n  features: [disables, renamesRadios]\n};\n\n// packages/inputs/src/inputs/hidden.ts\nvar hidden = {\n  /**\n   * The actual schema of the input, or a function that returns the schema.\n   */\n  schema: textInput(),\n  /**\n   * The type of node, can be a list, group, or input.\n   */\n  type: \"input\",\n  /**\n   * An array of extra props to accept for this input.\n   */\n  props: [],\n  /**\n   * Additional features that should be added to your input\n   */\n  features: [casts]\n};\n\n// packages/inputs/src/inputs/list.ts\nvar list = {\n  /**\n   * The actual schema of the input, or a function that returns the schema.\n   */\n  schema: fragment(\"$slots.default\"),\n  /**\n   * The type of node, can be a list, group, or input.\n   */\n  type: \"list\",\n  /**\n   * An array of extra props to accept for this input.\n   */\n  props: [\"sync\", \"dynamic\"],\n  /**\n   * Additional features that should be added to your input\n   */\n  features: [disables, renamesRadios]\n};\n\n// packages/inputs/src/inputs/meta.ts\nvar meta = {\n  /**\n   * The actual schema of the input, or a function that returns the schema.\n   */\n  schema: fragment(),\n  /**\n   * The type of node, can be a list, group, or input.\n   */\n  type: \"input\",\n  /**\n   * An array of extra props to accept for this input.\n   */\n  props: [],\n  /**\n   * Additional features that should be added to your input\n   */\n  features: []\n};\n\n// packages/inputs/src/inputs/radio.ts\nvar radio = {\n  /**\n   * The actual schema of the input, or a function that returns the schema.\n   */\n  schema: outer(\n    $if(\n      \"$options == undefined\",\n      /**\n       * Single radio structure.\n       */\n      boxWrapper(\n        boxInner(prefix(), box(), decorator(icon(\"decorator\")), suffix()),\n        $extend(boxLabel(\"$label\"), {\n          if: \"$label\"\n        })\n      ),\n      /**\n       * Multi radio structure.\n       */\n      fieldset(\n        legend(\"$label\"),\n        help(\"$help\"),\n        boxOptions(\n          boxOption(\n            boxWrapper(\n              boxInner(\n                prefix(),\n                $extend(box(), {\n                  bind: \"$option.attrs\",\n                  attrs: {\n                    id: \"$option.attrs.id\",\n                    value: \"$option.value\",\n                    checked: \"$fns.isChecked($option.value)\"\n                  }\n                }),\n                decorator(icon(\"decorator\")),\n                suffix()\n              ),\n              $extend(boxLabel(\"$option.label\"), {\n                if: \"$option.label\"\n              })\n            ),\n            boxHelp(\"$option.help\")\n          )\n        )\n      )\n    ),\n    // Help text only goes under the input when it is a single.\n    $if(\"$options == undefined && $help\", help(\"$help\")),\n    messages(message(\"$message.value\"))\n  ),\n  /**\n   * The type of node, can be a list, group, or input.\n   */\n  type: \"input\",\n  /**\n   * The family of inputs this one belongs too. For example \"text\" and \"email\"\n   * are both part of the \"text\" family. This is primary used for styling.\n   */\n  family: \"box\",\n  /**\n   * An array of extra props to accept for this input.\n   */\n  props: [\"options\", \"onValue\", \"offValue\", \"optionsLoader\"],\n  /**\n   * Additional features that should be added to your input\n   */\n  features: [options, radios, defaultIcon(\"decorator\", \"radioDecorator\")],\n  /**\n   * The key used to memoize the schema.\n   */\n  schemaMemoKey: \"qje02tb3gu8\"\n};\n\n// packages/inputs/src/inputs/select.ts\nvar select2 = {\n  /**\n   * The actual schema of the input, or a function that returns the schema.\n   */\n  schema: outer(\n    wrapper(\n      label(\"$label\"),\n      inner(\n        icon(\"prefix\"),\n        prefix(),\n        selectInput(\n          $if(\n            \"$slots.default\",\n            () => \"$slots.default\",\n            optionSlot(\n              $if(\n                \"$option.group\",\n                optGroup(optionSlot(option(\"$option.label\"))),\n                option(\"$option.label\")\n              )\n            )\n          )\n        ),\n        $if(\"$attrs.multiple !== undefined\", () => \"\", icon(\"select\")),\n        suffix(),\n        icon(\"suffix\")\n      )\n    ),\n    help(\"$help\"),\n    messages(message(\"$message.value\"))\n  ),\n  /**\n   * The type of node, can be a list, group, or input.\n   */\n  type: \"input\",\n  /**\n   * An array of extra props to accept for this input.\n   */\n  props: [\"options\", \"placeholder\", \"optionsLoader\"],\n  /**\n   * Additional features that should be added to your input\n   */\n  features: [options, select, defaultIcon(\"select\", \"select\")],\n  /**\n   * The key used to memoize the schema.\n   */\n  schemaMemoKey: \"cb119h43krg\"\n};\n\n// packages/inputs/src/inputs/textarea.ts\nvar textarea = {\n  /**\n   * The actual schema of the input, or a function that returns the schema.\n   */\n  schema: outer(\n    wrapper(\n      label(\"$label\"),\n      inner(\n        icon(\"prefix\", \"label\"),\n        prefix(),\n        textareaInput(),\n        suffix(),\n        icon(\"suffix\")\n      )\n    ),\n    help(\"$help\"),\n    messages(message(\"$message.value\"))\n  ),\n  /**\n   * The type of node, can be a list, group, or input.\n   */\n  type: \"input\",\n  /**\n   * An array of extra props to accept for this input.\n   */\n  props: [],\n  /**\n   * Additional features that should be added to your input\n   */\n  features: [initialValue],\n  /**\n   * The key used to memoize the schema.\n   */\n  schemaMemoKey: \"b1n0td79m9g\"\n};\n\n// packages/inputs/src/inputs/text.ts\nvar text = {\n  /**\n   * The actual schema of the input, or a function that returns the schema.\n   */\n  schema: outer(\n    wrapper(\n      label(\"$label\"),\n      inner(\n        icon(\"prefix\", \"label\"),\n        prefix(),\n        textInput(),\n        suffix(),\n        icon(\"suffix\")\n      )\n    ),\n    help(\"$help\"),\n    messages(message(\"$message.value\"))\n  ),\n  /**\n   * The type of node, can be a list, group, or input.\n   */\n  type: \"input\",\n  /**\n   * The family of inputs this one belongs too. For example \"text\" and \"email\"\n   * are both part of the \"text\" family. This is primary used for styling.\n   */\n  family: \"text\",\n  /**\n   * An array of extra props to accept for this input.\n   */\n  props: [],\n  /**\n   * Additional features that should be added to your input\n   */\n  features: [casts],\n  /**\n   * The key used to memoize the schema.\n   */\n  schemaMemoKey: \"c3cc4kflsg\"\n};\n\n// packages/inputs/src/index.ts\nvar inputs = {\n  button,\n  submit: button,\n  checkbox,\n  file,\n  form: form2,\n  group,\n  hidden,\n  list,\n  meta,\n  radio,\n  select: select2,\n  textarea,\n  text,\n  color: text,\n  date: text,\n  datetimeLocal: text,\n  email: text,\n  month: text,\n  number: text,\n  password: text,\n  search: text,\n  tel: text,\n  time: text,\n  url: text,\n  week: text,\n  range: text\n};\n\nexport { $attrs, $extend, $for, $if, $root, actions, box, boxHelp, boxInner, boxLabel, boxOption, boxOptions, boxWrapper, button, buttonInput, buttonLabel, casts, checkbox, checkboxes, text as color, createLibraryPlugin, createSection, text as date, text as datetimeLocal, decorator, defaultIcon, disables as disablesChildren, eachSection, text as email, extendSchema, fieldset, file, fileInput, fileItem, fileList, fileName, fileRemove, files, findSection, form2 as form, formInput, form as forms, fragment, group, help, hidden, icon, ignore as ignores, initialValue, inner, inputs, isGroupOption, isSchemaObject, isSlotCondition, label, legend, list, localize, message, messages, meta, text as month, noFiles, normalizeBoxes, normalizeOptions, text as number, optGroup, option, optionSlot, options, outer, text as password, prefix, radio, radios, text as range, renamesRadios, runtimeProps, text as search, select2 as select, selectInput, select as selects, button as submit, submitInput, suffix, text as tel, text, textInput, textarea, textareaInput, text as time, text as url, useSchema, text as week, wrapper };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","import { FORMKIT_VERSION } from '@formkit/core';\n\n// packages/themes/src/index.ts\nfunction generateClasses(classes) {\n  const classesBySectionKey = {};\n  Object.keys(classes).forEach((type) => {\n    Object.keys(classes[type]).forEach((sectionKey) => {\n      if (!classesBySectionKey[sectionKey]) {\n        classesBySectionKey[sectionKey] = {\n          [type]: classes[type][sectionKey]\n        };\n      } else {\n        classesBySectionKey[sectionKey][type] = classes[type][sectionKey];\n      }\n    });\n  });\n  Object.keys(classesBySectionKey).forEach((sectionKey) => {\n    const classesObject = classesBySectionKey[sectionKey];\n    classesBySectionKey[sectionKey] = function(node, sectionKey2) {\n      return addClassesBySection(node, sectionKey2, classesObject);\n    };\n  });\n  return classesBySectionKey;\n}\nfunction addClassesBySection(node, _sectionKey, classesByType) {\n  const type = node.props.type;\n  const family = node.props.family;\n  let classList = \"\";\n  if (classesByType.global) {\n    classList += classesByType.global + \" \";\n  }\n  if (classesByType[`family:${family}`]) {\n    classList += classesByType[`family:${family}`] + \" \";\n  }\n  if (classesByType[type]) {\n    classList += classesByType[type];\n  }\n  const listParts = classList.split(\"$reset\");\n  if (listParts.length > 1) {\n    return `$reset ${listParts[listParts.length - 1].trim()}`;\n  }\n  return listParts[0].trim();\n}\nvar documentStyles = void 0;\nvar documentThemeLinkTag = null;\nvar themeDidLoad;\nvar themeHasLoaded = false;\nvar themeWasRequested = false;\nvar themeLoaded = /* @__PURE__ */ new Promise((res) => {\n  themeDidLoad = () => {\n    themeHasLoaded = true;\n    res();\n  };\n});\nvar isClient = typeof window !== \"undefined\" && typeof fetch !== \"undefined\";\ndocumentStyles = isClient ? /* @__PURE__ */ getComputedStyle(document.documentElement) : void 0;\nvar iconRegistry = {};\nvar iconRequests = {};\nfunction createThemePlugin(theme, icons, iconLoaderUrl, iconLoader) {\n  if (icons) {\n    Object.assign(iconRegistry, icons);\n  }\n  if (isClient && !themeWasRequested && documentStyles?.getPropertyValue(\"--formkit-theme\")) {\n    themeDidLoad();\n    themeWasRequested = true;\n  } else if (theme && !themeWasRequested && isClient) {\n    loadTheme(theme);\n  } else if (!themeWasRequested && isClient) {\n    themeDidLoad();\n  }\n  const themePlugin = function themePlugin2(node) {\n    node.addProps([\"iconLoader\", \"iconLoaderUrl\"]);\n    node.props.iconHandler = createIconHandler(\n      node.props?.iconLoader ? node.props.iconLoader : iconLoader,\n      node.props?.iconLoaderUrl ? node.props.iconLoaderUrl : iconLoaderUrl\n    );\n    loadIconPropIcons(node, node.props.iconHandler);\n    node.on(\"created\", () => {\n      if (node?.context?.handlers) {\n        node.context.handlers.iconClick = (sectionKey) => {\n          const clickHandlerProp = `on${sectionKey.charAt(0).toUpperCase()}${sectionKey.slice(1)}IconClick`;\n          const handlerFunction = node.props[clickHandlerProp];\n          if (handlerFunction && typeof handlerFunction === \"function\") {\n            return (e) => {\n              return handlerFunction(node, e);\n            };\n          }\n          return void 0;\n        };\n      }\n    });\n  };\n  themePlugin.iconHandler = createIconHandler(iconLoader, iconLoaderUrl);\n  return themePlugin;\n}\nfunction loadTheme(theme) {\n  if (!theme || !isClient || typeof getComputedStyle !== \"function\") {\n    return;\n  }\n  themeWasRequested = true;\n  documentThemeLinkTag = document.getElementById(\"formkit-theme\");\n  if (theme && // if we have a window object\n  isClient && // we don't have an existing theme OR the theme being set up is different\n  (!documentStyles?.getPropertyValue(\"--formkit-theme\") && !documentThemeLinkTag || documentThemeLinkTag?.getAttribute(\"data-theme\") && documentThemeLinkTag?.getAttribute(\"data-theme\") !== theme)) {\n    const formkitVersion = FORMKIT_VERSION.startsWith(\"__\") ? \"latest\" : FORMKIT_VERSION;\n    const themeUrl = `https://cdn.jsdelivr.net/npm/@formkit/themes@${formkitVersion}/dist/${theme}/theme.css`;\n    const link = document.createElement(\"link\");\n    link.type = \"text/css\";\n    link.rel = \"stylesheet\";\n    link.id = \"formkit-theme\";\n    link.setAttribute(\"data-theme\", theme);\n    link.onload = () => {\n      documentStyles = getComputedStyle(document.documentElement);\n      themeDidLoad();\n    };\n    document.head.appendChild(link);\n    link.href = themeUrl;\n    if (documentThemeLinkTag) {\n      documentThemeLinkTag.remove();\n    }\n  }\n}\nfunction createIconHandler(iconLoader, iconLoaderUrl) {\n  return (iconName) => {\n    if (typeof iconName !== \"string\")\n      return;\n    if (iconName.startsWith(\"<svg\")) {\n      return iconName;\n    }\n    const isDefault = iconName.startsWith(\"default:\");\n    iconName = isDefault ? iconName.split(\":\")[1] : iconName;\n    const iconWasAlreadyLoaded = iconName in iconRegistry;\n    let loadedIcon = void 0;\n    if (iconWasAlreadyLoaded) {\n      return iconRegistry[iconName];\n    } else if (!iconRequests[iconName]) {\n      loadedIcon = getIconFromStylesheet(iconName);\n      loadedIcon = isClient && typeof loadedIcon === \"undefined\" ? Promise.resolve(loadedIcon) : loadedIcon;\n      if (loadedIcon instanceof Promise) {\n        iconRequests[iconName] = loadedIcon.then((iconValue) => {\n          if (!iconValue && typeof iconName === \"string\" && !isDefault) {\n            return loadedIcon = typeof iconLoader === \"function\" ? iconLoader(iconName) : getRemoteIcon(iconName, iconLoaderUrl);\n          }\n          return iconValue;\n        }).then((finalIcon) => {\n          if (typeof iconName === \"string\") {\n            iconRegistry[isDefault ? `default:${iconName}` : iconName] = finalIcon;\n          }\n          return finalIcon;\n        });\n      } else if (typeof loadedIcon === \"string\") {\n        iconRegistry[isDefault ? `default:${iconName}` : iconName] = loadedIcon;\n        return loadedIcon;\n      }\n    }\n    return iconRequests[iconName];\n  };\n}\nfunction getIconFromStylesheet(iconName) {\n  if (!isClient)\n    return;\n  if (themeHasLoaded) {\n    return loadStylesheetIcon(iconName);\n  } else {\n    return themeLoaded.then(() => {\n      return loadStylesheetIcon(iconName);\n    });\n  }\n}\nfunction loadStylesheetIcon(iconName) {\n  const cssVarIcon = documentStyles?.getPropertyValue(`--fk-icon-${iconName}`);\n  if (cssVarIcon) {\n    const icon = atob(cssVarIcon);\n    if (icon.startsWith(\"<svg\")) {\n      iconRegistry[iconName] = icon;\n      return icon;\n    }\n  }\n  return void 0;\n}\nfunction getRemoteIcon(iconName, iconLoaderUrl) {\n  const formkitVersion = FORMKIT_VERSION.startsWith(\"__\") ? \"latest\" : FORMKIT_VERSION;\n  const fetchUrl = typeof iconLoaderUrl === \"function\" ? iconLoaderUrl(iconName) : `https://cdn.jsdelivr.net/npm/@formkit/icons@${formkitVersion}/dist/icons/${iconName}.svg`;\n  if (!isClient)\n    return void 0;\n  return fetch(`${fetchUrl}`).then(async (r) => {\n    const icon = await r.text();\n    if (icon.startsWith(\"<svg\")) {\n      return icon;\n    }\n    return void 0;\n  }).catch((e) => {\n    console.error(e);\n    return void 0;\n  });\n}\nfunction loadIconPropIcons(node, iconHandler) {\n  const iconRegex = /^[a-zA-Z-]+(?:-icon|Icon)$/;\n  const iconProps = Object.keys(node.props).filter((prop) => {\n    return iconRegex.test(prop);\n  });\n  iconProps.forEach((sectionKey) => {\n    return loadPropIcon(node, iconHandler, sectionKey);\n  });\n}\nfunction loadPropIcon(node, iconHandler, sectionKey) {\n  const iconName = node.props[sectionKey];\n  const loadedIcon = iconHandler(iconName);\n  const rawIconProp = `_raw${sectionKey.charAt(0).toUpperCase()}${sectionKey.slice(1)}`;\n  const clickHandlerProp = `on${sectionKey.charAt(0).toUpperCase()}${sectionKey.slice(1)}Click`;\n  node.addProps([rawIconProp, clickHandlerProp]);\n  node.on(`prop:${sectionKey}`, reloadIcon);\n  if (loadedIcon instanceof Promise) {\n    return loadedIcon.then((svg) => {\n      node.props[rawIconProp] = svg;\n    });\n  } else {\n    node.props[rawIconProp] = loadedIcon;\n  }\n  return;\n}\nfunction reloadIcon(event) {\n  const node = event.origin;\n  const iconName = event.payload;\n  const iconHandler = node?.props?.iconHandler;\n  const sectionKey = event.name.split(\":\")[1];\n  const rawIconProp = `_raw${sectionKey.charAt(0).toUpperCase()}${sectionKey.slice(1)}`;\n  if (iconHandler && typeof iconHandler === \"function\") {\n    const loadedIcon = iconHandler(iconName);\n    if (loadedIcon instanceof Promise) {\n      return loadedIcon.then((svg) => {\n        node.props[rawIconProp] = svg;\n      });\n    } else {\n      node.props[rawIconProp] = loadedIcon;\n    }\n  }\n}\n\nexport { createIconHandler, createThemePlugin, generateClasses, iconRegistry };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","import { errorHandler, warningHandler } from '@formkit/core';\n\n// packages/dev/src/index.ts\nvar errors = {\n  /**\n   * FormKit errors:\n   */\n  100: ({ data: node }) => `Only groups, lists, and forms can have children (${node.name}).`,\n  101: ({ data: node }) => `You cannot directly modify the store (${node.name}). See: https://formkit.com/advanced/core#message-store`,\n  102: ({\n    data: [node, property]\n  }) => `You cannot directly assign node.${property} (${node.name})`,\n  103: ({ data: [operator] }) => `Schema expressions cannot start with an operator (${operator})`,\n  104: ({ data: [operator, expression] }) => `Schema expressions cannot end with an operator (${operator} in \"${expression}\")`,\n  105: ({ data: expression }) => `Invalid schema expression: ${expression}`,\n  106: ({ data: name }) => `Cannot submit because (${name}) is not in a form.`,\n  107: ({ data: [node, value] }) => `Cannot set ${node.name} to non object value: ${value}`,\n  108: ({ data: [node, value] }) => `Cannot set ${node.name} to non array value: ${value}`,\n  /**\n   * Input specific errors:\n   */\n  300: ({ data: [node] }) => `Cannot set behavior prop to overscroll (on ${node.name} input) when options prop is a function.`,\n  /**\n   * FormKit vue errors:\n   */\n  600: ({ data: node }) => `Unknown input type${typeof node.props.type === \"string\" ? ' \"' + node.props.type + '\"' : \"\"} (\"${node.name}\")`,\n  601: ({ data: node }) => `Input definition${typeof node.props.type === \"string\" ? ' \"' + node.props.type + '\"' : \"\"} is missing a schema or component property (${node.name}).`\n};\nvar warnings = {\n  /**\n   * Core warnings:\n   */\n  150: ({ data: fn }) => `Schema function \"${fn}()\" is not a valid function.`,\n  151: ({ data: id }) => `No form element with id: ${id}`,\n  152: ({ data: id }) => `No input element with id: ${id}`,\n  /**\n   * Input specific warnings:\n   */\n  350: ({\n    data: { node, inputType }\n  }) => `Invalid options prop for ${node.name} input (${inputType}). See https://formkit.com/inputs/${inputType}`,\n  /**\n   * Vue warnings:\n   */\n  650: 'Schema \"$get()\" must use the id of an input to access.',\n  651: ({ data: id }) => `Cannot setErrors() on \"${id}\" because no such id exists.`,\n  652: ({ data: id }) => `Cannot clearErrors() on \"${id}\" because no such id exists.`,\n  /**\n   * Deprecation warnings:\n   */\n  800: ({ data: name }) => `${name} is deprecated.`\n};\nvar decodeErrors = (error, next) => {\n  if (error.code in errors) {\n    const err = errors[error.code];\n    error.message = typeof err === \"function\" ? err(error) : err;\n  }\n  return next(error);\n};\nvar registered = false;\nfunction register() {\n  if (!registered) {\n    errorHandler(decodeErrors);\n    warningHandler(decodeWarnings);\n    registered = true;\n  }\n}\nvar decodeWarnings = (warning, next) => {\n  if (warning.code in warnings) {\n    const warn = warnings[warning.code];\n    warning.message = typeof warn === \"function\" ? warn(warning) : warn;\n  }\n  return next(warning);\n};\n\nexport { errors, register, warnings };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","import { defineComponent, getCurrentInstance, markRaw, watch, watchEffect, reactive, onMounted, onUnmounted, ref, provide, h, inject, computed, toRef, onBeforeUnmount, KeepAlive, Suspense, nextTick, triggerRef, isRef, isReactive, createTextVNode, resolveComponent } from 'vue';\nimport { createConfig, createNode, error, createMessage, getNode, clearErrors, setErrors, submitForm, reset, createClasses, generateClassList, warn, watchRegistry, isNode, sugar, isDOM, isComponent, isConditional, compile } from '@formkit/core';\nexport { clearErrors, errorHandler, reset, resetCount, setErrors, submitForm } from '@formkit/core';\nimport { cloneAny, extend, undefine, camel, kebab, nodeProps, only, except, oncePerTick, slugify, shallowClone, eq, token, isObject, empty, has, isPojo } from '@formkit/utils';\nimport { createObserver } from '@formkit/observer';\nimport * as defaultRules from '@formkit/rules';\nimport { createValidationPlugin } from '@formkit/validation';\nimport { createI18nPlugin, en } from '@formkit/i18n';\nexport { changeLocale } from '@formkit/i18n';\nimport { createSection, useSchema, localize, createLibraryPlugin, inputs, runtimeProps } from '@formkit/inputs';\nimport { createIconHandler, createThemePlugin } from '@formkit/themes';\nimport { register } from '@formkit/dev';\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __esm = (fn, res) => function __init() {\n  return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar vueBindings, bindings_default;\nvar init_bindings = __esm({\n  \"packages/vue/src/bindings.ts\"() {\n    vueBindings = function vueBindings2(node) {\n      node.ledger.count(\"blocking\", (m) => m.blocking);\n      const isValid = ref(!node.ledger.value(\"blocking\"));\n      node.ledger.count(\"errors\", (m) => m.type === \"error\");\n      const hasErrors = ref(!!node.ledger.value(\"errors\"));\n      let hasTicked = false;\n      nextTick(() => {\n        hasTicked = true;\n      });\n      const availableMessages = reactive(\n        node.store.reduce((store, message3) => {\n          if (message3.visible) {\n            store[message3.key] = message3;\n          }\n          return store;\n        }, {})\n      );\n      const validationVisibility = ref(\n        node.props.validationVisibility || (node.props.type === \"checkbox\" ? \"dirty\" : \"blur\")\n      );\n      node.on(\"prop:validationVisibility\", ({ payload }) => {\n        validationVisibility.value = payload;\n      });\n      const hasShownErrors = ref(validationVisibility.value === \"live\");\n      const isRequired = ref(false);\n      const checkForRequired = (parsedRules) => {\n        isRequired.value = (parsedRules ?? []).some(\n          (rule) => rule.name === \"required\"\n        );\n      };\n      checkForRequired(node.props.parsedRules);\n      node.on(\"prop:parsedRules\", ({ payload }) => checkForRequired(payload));\n      const items = ref(node.children.map((child) => child.uid));\n      const validationVisible = computed(() => {\n        if (!context.state)\n          return false;\n        if (context.state.submitted)\n          return true;\n        if (!hasShownErrors.value && !context.state.settled) {\n          return false;\n        }\n        switch (validationVisibility.value) {\n          case \"live\":\n            return true;\n          case \"blur\":\n            return context.state.blurred;\n          case \"dirty\":\n            return context.state.dirty;\n          default:\n            return false;\n        }\n      });\n      const isComplete = computed(() => {\n        return context && hasValidation.value ? isValid.value && !hasErrors.value : context.state.dirty && !empty(context.value);\n      });\n      const hasValidation = ref(\n        Array.isArray(node.props.parsedRules) && node.props.parsedRules.length > 0\n      );\n      node.on(\"prop:parsedRules\", ({ payload: rules }) => {\n        hasValidation.value = Array.isArray(rules) && rules.length > 0;\n      });\n      const messages3 = computed(() => {\n        const visibleMessages = {};\n        for (const key in availableMessages) {\n          const message3 = availableMessages[key];\n          if (message3.type !== \"validation\" || validationVisible.value) {\n            visibleMessages[key] = message3;\n          }\n        }\n        return visibleMessages;\n      });\n      const ui = reactive(\n        node.store.reduce((messages4, message3) => {\n          if (message3.type === \"ui\" && message3.visible)\n            messages4[message3.key] = message3;\n          return messages4;\n        }, {})\n      );\n      const cachedClasses = reactive({});\n      const classes2 = new Proxy(cachedClasses, {\n        get(...args) {\n          const [target, property] = args;\n          let className = Reflect.get(...args);\n          if (!className && typeof property === \"string\") {\n            if (!has(target, property) && !property.startsWith(\"__v\")) {\n              const observedNode = createObserver(node);\n              observedNode.watch((node2) => {\n                const rootClasses = typeof node2.config.rootClasses === \"function\" ? node2.config.rootClasses(property, node2) : {};\n                const globalConfigClasses = node2.config.classes ? createClasses(property, node2, node2.config.classes[property]) : {};\n                const classesPropClasses = createClasses(\n                  property,\n                  node2,\n                  node2.props[`_${property}Class`]\n                );\n                const sectionPropClasses = createClasses(\n                  property,\n                  node2,\n                  node2.props[`${property}Class`]\n                );\n                className = generateClassList(\n                  node2,\n                  property,\n                  rootClasses,\n                  globalConfigClasses,\n                  classesPropClasses,\n                  sectionPropClasses\n                );\n                target[property] = className ?? \"\";\n              });\n            }\n          }\n          return className;\n        }\n      });\n      node.on(\"prop:rootClasses\", () => {\n        const keys = Object.keys(cachedClasses);\n        for (const key of keys) {\n          delete cachedClasses[key];\n        }\n      });\n      const describedBy = computed(() => {\n        const describers = [];\n        if (context.help) {\n          describers.push(`help-${node.props.id}`);\n        }\n        for (const key in messages3.value) {\n          describers.push(`${node.props.id}-${key}`);\n        }\n        return describers.length ? describers.join(\" \") : void 0;\n      });\n      const value = ref(node.value);\n      const _value = ref(node.value);\n      const context = reactive({\n        _value,\n        attrs: node.props.attrs,\n        disabled: node.props.disabled,\n        describedBy,\n        fns: {\n          length: (obj) => Object.keys(obj).length,\n          number: (value2) => Number(value2),\n          string: (value2) => String(value2),\n          json: (value2) => JSON.stringify(value2),\n          eq: eq\n        },\n        handlers: {\n          blur: (e) => {\n            if (!node)\n              return;\n            node.store.set(\n              createMessage({ key: \"blurred\", visible: false, value: true })\n            );\n            if (typeof node.props.attrs.onBlur === \"function\") {\n              node.props.attrs.onBlur(e);\n            }\n          },\n          touch: () => {\n            const doCompare = context.dirtyBehavior === \"compare\";\n            if (node.store.dirty?.value && !doCompare)\n              return;\n            const isDirty = !eq(node.props._init, node._value);\n            if (!isDirty && !doCompare)\n              return;\n            node.store.set(\n              createMessage({ key: \"dirty\", visible: false, value: isDirty })\n            );\n          },\n          DOMInput: (e) => {\n            node.input(e.target.value);\n            node.emit(\"dom-input-event\", e);\n          }\n        },\n        help: node.props.help,\n        id: node.props.id,\n        items,\n        label: node.props.label,\n        messages: messages3,\n        didMount: false,\n        node: markRaw(node),\n        options: node.props.options,\n        defaultMessagePlacement: true,\n        slots: node.props.__slots,\n        state: {\n          blurred: false,\n          complete: isComplete,\n          dirty: false,\n          empty: empty(value),\n          submitted: false,\n          settled: node.isSettled,\n          valid: isValid,\n          errors: hasErrors,\n          rules: hasValidation,\n          validationVisible,\n          required: isRequired\n        },\n        type: node.props.type,\n        family: node.props.family,\n        ui,\n        value,\n        classes: classes2\n      });\n      node.on(\"created\", () => {\n        if (!eq(context.value, node.value)) {\n          _value.value = node.value;\n          value.value = node.value;\n          triggerRef(value);\n          triggerRef(_value);\n        }\n        (async () => {\n          await node.settled;\n          if (node)\n            node.props._init = cloneAny(node.value);\n        })();\n      });\n      node.on(\"mounted\", () => {\n        context.didMount = true;\n      });\n      node.on(\"settled\", ({ payload: isSettled }) => {\n        context.state.settled = isSettled;\n      });\n      function observeProps(observe) {\n        const propNames = Array.isArray(observe) ? observe : Object.keys(observe);\n        propNames.forEach((prop) => {\n          prop = camel(prop);\n          if (!has(context, prop)) {\n            context[prop] = node.props[prop];\n          }\n          node.on(`prop:${prop}`, ({ payload }) => {\n            context[prop] = payload;\n          });\n        });\n      }\n      const rootProps = () => {\n        const props = [\n          \"__root\",\n          \"help\",\n          \"label\",\n          \"disabled\",\n          \"options\",\n          \"type\",\n          \"attrs\",\n          \"preserve\",\n          \"preserveErrors\",\n          \"id\",\n          \"dirtyBehavior\"\n        ];\n        const iconPattern = /^[a-zA-Z-]+(?:-icon|Icon)$/;\n        const matchingProps = Object.keys(node.props).filter((prop) => {\n          return iconPattern.test(prop);\n        });\n        return props.concat(matchingProps);\n      };\n      observeProps(rootProps());\n      function definedAs(definition3) {\n        if (definition3.props)\n          observeProps(definition3.props);\n      }\n      node.props.definition && definedAs(node.props.definition);\n      node.on(\"added-props\", ({ payload }) => observeProps(payload));\n      node.on(\"input\", ({ payload }) => {\n        if (node.type !== \"input\" && !isRef(payload) && !isReactive(payload)) {\n          _value.value = shallowClone(payload);\n        } else {\n          _value.value = payload;\n          triggerRef(_value);\n        }\n      });\n      node.on(\"commitRaw\", ({ payload }) => {\n        if (node.type !== \"input\" && !isRef(payload) && !isReactive(payload)) {\n          value.value = _value.value = shallowClone(payload);\n        } else {\n          value.value = _value.value = payload;\n          triggerRef(value);\n        }\n        node.emit(\"modelUpdated\");\n      });\n      node.on(\"commit\", ({ payload }) => {\n        if ((!context.state.dirty || context.dirtyBehavior === \"compare\") && node.isCreated && hasTicked) {\n          if (!node.store.validating?.value) {\n            context.handlers.touch();\n          } else {\n            const receipt = node.on(\"message-removed\", ({ payload: message3 }) => {\n              if (message3.key === \"validating\") {\n                context.handlers.touch();\n                node.off(receipt);\n              }\n            });\n          }\n        }\n        if (isComplete && node.type === \"input\" && hasErrors.value && !undefine(node.props.preserveErrors)) {\n          node.store.filter(\n            (message3) => !(message3.type === \"error\" && message3.meta?.autoClear === true)\n          );\n        }\n        if (node.type === \"list\" && node.sync) {\n          items.value = node.children.map((child) => child.uid);\n        }\n        context.state.empty = empty(payload);\n      });\n      const updateState = async (message3) => {\n        if (message3.type === \"ui\" && message3.visible && !message3.meta.showAsMessage) {\n          ui[message3.key] = message3;\n        } else if (message3.visible) {\n          availableMessages[message3.key] = message3;\n        } else if (message3.type === \"state\") {\n          context.state[message3.key] = !!message3.value;\n        }\n      };\n      node.on(\"message-added\", (e) => updateState(e.payload));\n      node.on(\"message-updated\", (e) => updateState(e.payload));\n      node.on(\"message-removed\", ({ payload: message3 }) => {\n        delete ui[message3.key];\n        delete availableMessages[message3.key];\n        delete context.state[message3.key];\n      });\n      node.on(\"settled:blocking\", () => {\n        isValid.value = true;\n      });\n      node.on(\"unsettled:blocking\", () => {\n        isValid.value = false;\n      });\n      node.on(\"settled:errors\", () => {\n        hasErrors.value = false;\n      });\n      node.on(\"unsettled:errors\", () => {\n        hasErrors.value = true;\n      });\n      watch(validationVisible, (value2) => {\n        if (value2) {\n          hasShownErrors.value = true;\n        }\n      });\n      node.context = context;\n      node.emit(\"context\", node, false);\n      node.on(\"destroyed\", () => {\n        node.context = void 0;\n        node = null;\n      });\n    };\n    bindings_default = vueBindings;\n  }\n});\n\n// packages/vue/src/defaultConfig.ts\nvar defaultConfig_exports = {};\n__export(defaultConfig_exports, {\n  defaultConfig: () => defaultConfig\n});\nvar defaultConfig;\nvar init_defaultConfig = __esm({\n  \"packages/vue/src/defaultConfig.ts\"() {\n    init_bindings();\n    defaultConfig = (options = {}) => {\n      register();\n      const {\n        rules = {},\n        locales = {},\n        inputs: inputs$1 = {},\n        messages: messages3 = {},\n        locale = void 0,\n        theme = void 0,\n        iconLoaderUrl = void 0,\n        iconLoader = void 0,\n        icons = {},\n        ...nodeOptions\n      } = options;\n      const validation = createValidationPlugin({\n        ...defaultRules,\n        ...rules || {}\n      });\n      const i18n = createI18nPlugin(\n        extend({ en, ...locales || {} }, messages3)\n      );\n      const library = createLibraryPlugin(inputs, inputs$1);\n      const themePlugin = createThemePlugin(theme, icons, iconLoaderUrl, iconLoader);\n      return extend(\n        {\n          plugins: [library, themePlugin, bindings_default, i18n, validation],\n          ...!locale ? {} : { config: { locale } }\n        },\n        nodeOptions || {},\n        true\n      );\n    };\n  }\n});\n\n// packages/vue/src/composables/onSSRComplete.ts\nvar isServer = typeof window === \"undefined\";\nvar ssrCompleteRegistry = /* @__PURE__ */ new Map();\nfunction ssrComplete(app) {\n  if (!isServer)\n    return;\n  const callbacks = ssrCompleteRegistry.get(app);\n  if (!callbacks)\n    return;\n  for (const callback of callbacks) {\n    callback();\n  }\n  callbacks.clear();\n  ssrCompleteRegistry.delete(app);\n}\nfunction onSSRComplete(app, callback) {\n  if (!isServer || !app)\n    return;\n  if (!ssrCompleteRegistry.has(app))\n    ssrCompleteRegistry.set(app, /* @__PURE__ */ new Set());\n  ssrCompleteRegistry.get(app)?.add(callback);\n}\n\n// packages/vue/src/FormKitSchema.ts\nvar isServer2 = typeof window === \"undefined\";\nvar memo = {};\nvar memoKeys = {};\nvar instanceKey;\nvar instanceScopes = /* @__PURE__ */ new WeakMap();\nvar raw = \"__raw__\";\nvar isClassProp = /[a-zA-Z0-9\\-][cC]lass$/;\nfunction getRef(token3, data) {\n  const value = ref(null);\n  if (token3 === \"get\") {\n    const nodeRefs = {};\n    value.value = get.bind(null, nodeRefs);\n    return value;\n  }\n  const path = token3.split(\".\");\n  watchEffect(() => {\n    value.value = getValue(\n      isRef(data) ? data.value : data,\n      path\n    );\n  });\n  return value;\n}\nfunction getValue(set, path) {\n  if (Array.isArray(set)) {\n    for (const subset of set) {\n      const value = subset !== false && getValue(subset, path);\n      if (value !== void 0)\n        return value;\n    }\n    return void 0;\n  }\n  let foundValue = void 0;\n  let obj = set;\n  for (const i in path) {\n    const key = path[i];\n    if (typeof obj !== \"object\" || obj === null) {\n      foundValue = void 0;\n      break;\n    }\n    const currentValue = obj[key];\n    if (Number(i) === path.length - 1 && currentValue !== void 0) {\n      foundValue = typeof currentValue === \"function\" ? currentValue.bind(obj) : currentValue;\n      break;\n    }\n    obj = currentValue;\n  }\n  return foundValue;\n}\nfunction get(nodeRefs, id) {\n  if (typeof id !== \"string\")\n    return warn(650);\n  if (!(id in nodeRefs))\n    nodeRefs[id] = ref(void 0);\n  if (nodeRefs[id].value === void 0) {\n    nodeRefs[id].value = null;\n    const root = getNode(id);\n    if (root)\n      nodeRefs[id].value = root.context;\n    watchRegistry(id, ({ payload: node }) => {\n      nodeRefs[id].value = isNode(node) ? node.context : node;\n    });\n  }\n  return nodeRefs[id].value;\n}\nfunction parseSchema(library, schema, memoKey) {\n  function parseCondition(library2, node) {\n    const condition = provider(compile(node.if), { if: true });\n    const children = createElements(library2, node.then);\n    const alternate = node.else ? createElements(library2, node.else) : null;\n    return [condition, children, alternate];\n  }\n  function parseConditionAttr(attr, _default) {\n    const condition = provider(compile(attr.if));\n    let b = () => _default;\n    let a = () => _default;\n    if (typeof attr.then === \"object\") {\n      a = parseAttrs(attr.then, void 0);\n    } else if (typeof attr.then === \"string\" && attr.then?.startsWith(\"$\")) {\n      a = provider(compile(attr.then));\n    } else {\n      a = () => attr.then;\n    }\n    if (has(attr, \"else\")) {\n      if (typeof attr.else === \"object\") {\n        b = parseAttrs(attr.else);\n      } else if (typeof attr.else === \"string\" && attr.else?.startsWith(\"$\")) {\n        b = provider(compile(attr.else));\n      } else {\n        b = () => attr.else;\n      }\n    }\n    return () => condition() ? a() : b();\n  }\n  function parseAttrs(unparsedAttrs, bindExp, _default = {}) {\n    const explicitAttrs = new Set(Object.keys(unparsedAttrs || {}));\n    const boundAttrs = bindExp ? provider(compile(bindExp)) : () => ({});\n    const setters = [\n      (attrs) => {\n        const bound = boundAttrs();\n        for (const attr in bound) {\n          if (!explicitAttrs.has(attr)) {\n            attrs[attr] = bound[attr];\n          }\n        }\n      }\n    ];\n    if (unparsedAttrs) {\n      if (isConditional(unparsedAttrs)) {\n        const condition = parseConditionAttr(\n          unparsedAttrs,\n          _default\n        );\n        return condition;\n      }\n      for (let attr in unparsedAttrs) {\n        const value = unparsedAttrs[attr];\n        let getValue2;\n        const isStr = typeof value === \"string\";\n        if (attr.startsWith(raw)) {\n          attr = attr.substring(7);\n          getValue2 = () => value;\n        } else if (isStr && value.startsWith(\"$\") && value.length > 1 && !(value.startsWith(\"$reset\") && isClassProp.test(attr))) {\n          getValue2 = provider(compile(value));\n        } else if (typeof value === \"object\" && isConditional(value)) {\n          getValue2 = parseConditionAttr(value, void 0);\n        } else if (typeof value === \"object\" && isPojo(value)) {\n          getValue2 = parseAttrs(value);\n        } else {\n          getValue2 = () => value;\n        }\n        setters.push((attrs) => {\n          attrs[attr] = getValue2();\n        });\n      }\n    }\n    return () => {\n      const attrs = Array.isArray(unparsedAttrs) ? [] : {};\n      setters.forEach((setter) => setter(attrs));\n      return attrs;\n    };\n  }\n  function parseNode(library2, _node) {\n    let element = null;\n    let attrs = () => null;\n    let condition = false;\n    let children = null;\n    let alternate = null;\n    let iterator = null;\n    let resolve = false;\n    const node = sugar(_node);\n    if (isDOM(node)) {\n      element = node.$el;\n      attrs = node.$el !== \"text\" ? parseAttrs(node.attrs, node.bind) : () => null;\n    } else if (isComponent(node)) {\n      if (typeof node.$cmp === \"string\") {\n        if (has(library2, node.$cmp)) {\n          element = library2[node.$cmp];\n        } else {\n          element = node.$cmp;\n          resolve = true;\n        }\n      } else {\n        element = node.$cmp;\n      }\n      attrs = parseAttrs(node.props, node.bind);\n    } else if (isConditional(node)) {\n      [condition, children, alternate] = parseCondition(library2, node);\n    }\n    if (!isConditional(node) && \"if\" in node) {\n      condition = provider(compile(node.if));\n    } else if (!isConditional(node) && element === null) {\n      condition = () => true;\n    }\n    if (\"children\" in node && node.children) {\n      if (typeof node.children === \"string\") {\n        if (node.children.startsWith(\"$slots.\")) {\n          element = element === \"text\" ? \"slot\" : element;\n          children = provider(compile(node.children));\n        } else if (node.children.startsWith(\"$\") && node.children.length > 1) {\n          const value = provider(compile(node.children));\n          children = () => String(value());\n        } else {\n          children = () => String(node.children);\n        }\n      } else if (Array.isArray(node.children)) {\n        children = createElements(library2, node.children);\n      } else {\n        const [childCondition, c, a] = parseCondition(library2, node.children);\n        children = (iterationData) => childCondition && childCondition() ? c && c(iterationData) : a && a(iterationData);\n      }\n    }\n    if (isComponent(node)) {\n      if (children) {\n        const produceChildren = children;\n        children = (iterationData) => {\n          return {\n            default(slotData2, key) {\n              const currentKey = instanceKey;\n              if (key)\n                instanceKey = key;\n              if (slotData2)\n                instanceScopes.get(instanceKey)?.unshift(slotData2);\n              if (iterationData)\n                instanceScopes.get(instanceKey)?.unshift(iterationData);\n              const c = produceChildren(iterationData);\n              if (slotData2)\n                instanceScopes.get(instanceKey)?.shift();\n              if (iterationData)\n                instanceScopes.get(instanceKey)?.shift();\n              instanceKey = currentKey;\n              return c;\n            }\n          };\n        };\n        children.slot = true;\n      } else {\n        children = () => ({});\n      }\n    }\n    if (\"for\" in node && node.for) {\n      const values = node.for.length === 3 ? node.for[2] : node.for[1];\n      const getValues = typeof values === \"string\" && values.startsWith(\"$\") ? provider(compile(values)) : () => values;\n      iterator = [\n        getValues,\n        node.for[0],\n        node.for.length === 3 ? String(node.for[1]) : null\n      ];\n    }\n    return [condition, element, attrs, children, alternate, iterator, resolve];\n  }\n  function createSlots(children, iterationData) {\n    const slots = children(iterationData);\n    const currentKey = instanceKey;\n    return Object.keys(slots).reduce((allSlots, slotName) => {\n      const slotFn = slots && slots[slotName];\n      allSlots[slotName] = (data) => {\n        return slotFn && slotFn(data, currentKey) || null;\n      };\n      return allSlots;\n    }, {});\n  }\n  function createElement(library2, node) {\n    const [condition, element, attrs, children, alternate, iterator, resolve] = parseNode(library2, node);\n    let createNodes = (iterationData) => {\n      if (condition && element === null && children) {\n        return condition() ? children(iterationData) : alternate && alternate(iterationData);\n      }\n      if (element && (!condition || condition())) {\n        if (element === \"text\" && children) {\n          return createTextVNode(String(children()));\n        }\n        if (element === \"slot\" && children)\n          return children(iterationData);\n        const el = resolve ? resolveComponent(element) : element;\n        const slots = children?.slot ? createSlots(children, iterationData) : null;\n        return h(\n          el,\n          attrs(),\n          slots || (children ? children(iterationData) : [])\n        );\n      }\n      return typeof alternate === \"function\" ? alternate(iterationData) : alternate;\n    };\n    if (iterator) {\n      const repeatedNode = createNodes;\n      const [getValues, valueName, keyName] = iterator;\n      createNodes = () => {\n        const _v = getValues();\n        const values = Number.isFinite(_v) ? Array(Number(_v)).fill(0).map((_, i) => i) : _v;\n        const fragment = [];\n        if (typeof values !== \"object\")\n          return null;\n        const instanceScope = instanceScopes.get(instanceKey) || [];\n        const isArray = Array.isArray(values);\n        for (const key in values) {\n          if (isArray && key in Array.prototype)\n            continue;\n          const iterationData = Object.defineProperty(\n            {\n              ...instanceScope.reduce(\n                (previousIterationData, scopedData) => {\n                  if (previousIterationData.__idata) {\n                    return { ...previousIterationData, ...scopedData };\n                  }\n                  return scopedData;\n                },\n                {}\n              ),\n              [valueName]: values[key],\n              ...keyName !== null ? { [keyName]: isArray ? Number(key) : key } : {}\n            },\n            \"__idata\",\n            { enumerable: false, value: true }\n          );\n          instanceScope.unshift(iterationData);\n          fragment.push(repeatedNode.bind(null, iterationData)());\n          instanceScope.shift();\n        }\n        return fragment;\n      };\n    }\n    return createNodes;\n  }\n  function createElements(library2, schema2) {\n    if (Array.isArray(schema2)) {\n      const els = schema2.map(createElement.bind(null, library2));\n      return (iterationData) => els.map((element2) => element2(iterationData));\n    }\n    const element = createElement(library2, schema2);\n    return (iterationData) => element(iterationData);\n  }\n  const providers = [];\n  function provider(compiled, hints = {}) {\n    const compiledFns = /* @__PURE__ */ new WeakMap();\n    providers.push((callback, key) => {\n      compiledFns.set(\n        key,\n        compiled.provide((tokens) => callback(tokens, hints))\n      );\n    });\n    return () => compiledFns.get(instanceKey)();\n  }\n  function createInstance(providerCallback, key) {\n    memoKey ?? (memoKey = toMemoKey(schema));\n    const [render, compiledProviders] = has(memo, memoKey) ? memo[memoKey] : [createElements(library, schema), providers];\n    if (!isServer2) {\n      memoKeys[memoKey] ?? (memoKeys[memoKey] = 0);\n      memoKeys[memoKey]++;\n      memo[memoKey] = [render, compiledProviders];\n    }\n    compiledProviders.forEach((compiledProvider) => {\n      compiledProvider(providerCallback, key);\n    });\n    return () => {\n      instanceKey = key;\n      return render();\n    };\n  }\n  return createInstance;\n}\nfunction useScope(token3, defaultValue) {\n  const scopedData = instanceScopes.get(instanceKey) || [];\n  let scopedValue = void 0;\n  if (scopedData.length) {\n    scopedValue = getValue(scopedData, token3.split(\".\"));\n  }\n  return scopedValue === void 0 ? defaultValue : scopedValue;\n}\nfunction slotData(data, key) {\n  return new Proxy(data, {\n    get(...args) {\n      let data2 = void 0;\n      const property = args[1];\n      if (typeof property === \"string\") {\n        const prevKey = instanceKey;\n        instanceKey = key;\n        data2 = useScope(property, void 0);\n        instanceKey = prevKey;\n      }\n      return data2 !== void 0 ? data2 : Reflect.get(...args);\n    }\n  });\n}\nfunction createRenderFn(instanceCreator, data, instanceKey2) {\n  return instanceCreator(\n    (requirements, hints = {}) => {\n      return requirements.reduce((tokens, token3) => {\n        if (token3.startsWith(\"slots.\")) {\n          const slot = token3.substring(6);\n          const hasSlot = () => data.slots && has(data.slots, slot) && typeof data.slots[slot] === \"function\";\n          if (hints.if) {\n            tokens[token3] = hasSlot;\n          } else if (data.slots) {\n            const scopedData = slotData(data, instanceKey2);\n            tokens[token3] = () => hasSlot() ? data.slots[slot](scopedData) : null;\n          }\n        } else {\n          const value = getRef(token3, data);\n          tokens[token3] = () => useScope(token3, value.value);\n        }\n        return tokens;\n      }, {});\n    },\n    instanceKey2\n  );\n}\nfunction clean(schema, memoKey, instanceKey2) {\n  memoKey ?? (memoKey = toMemoKey(schema));\n  memoKeys[memoKey]--;\n  if (memoKeys[memoKey] === 0) {\n    delete memoKeys[memoKey];\n    const [, providers] = memo[memoKey];\n    delete memo[memoKey];\n    providers.length = 0;\n  }\n  instanceScopes.delete(instanceKey2);\n}\nfunction toMemoKey(schema) {\n  return JSON.stringify(schema, (_, value) => {\n    if (typeof value === \"function\") {\n      return value.toString();\n    }\n    return value;\n  });\n}\nvar FormKitSchema = /* @__PURE__ */ defineComponent({\n  name: \"FormKitSchema\",\n  props: {\n    schema: {\n      type: [Array, Object],\n      required: true\n    },\n    data: {\n      type: Object,\n      default: () => ({})\n    },\n    library: {\n      type: Object,\n      default: () => ({})\n    },\n    memoKey: {\n      type: String,\n      required: false\n    }\n  },\n  emits: [\"mounted\"],\n  setup(props, context) {\n    const instance = getCurrentInstance();\n    let instanceKey2 = {};\n    instanceScopes.set(instanceKey2, []);\n    const library = { FormKit: markRaw(FormKit_default), ...props.library };\n    let provider = parseSchema(library, props.schema, props.memoKey);\n    let render;\n    let data;\n    if (!isServer2) {\n      watch(\n        () => props.schema,\n        (newSchema, oldSchema) => {\n          const oldKey = instanceKey2;\n          instanceKey2 = {};\n          instanceScopes.set(instanceKey2, []);\n          provider = parseSchema(library, props.schema, props.memoKey);\n          render = createRenderFn(provider, data, instanceKey2);\n          if (newSchema === oldSchema) {\n            (instance?.proxy?.$forceUpdate)();\n          }\n          clean(props.schema, props.memoKey, oldKey);\n        },\n        { deep: true }\n      );\n    }\n    watchEffect(() => {\n      data = Object.assign(reactive(props.data ?? {}), {\n        slots: context.slots\n      });\n      context.slots;\n      render = createRenderFn(provider, data, instanceKey2);\n    });\n    function cleanUp() {\n      clean(props.schema, props.memoKey, instanceKey2);\n      if (data.node)\n        data.node.destroy();\n      data.slots = null;\n      data = null;\n      render = null;\n    }\n    onMounted(() => context.emit(\"mounted\"));\n    onUnmounted(cleanUp);\n    onSSRComplete(getCurrentInstance()?.appContext.app, cleanUp);\n    return () => render ? render() : null;\n  }\n});\nvar FormKitSchema_default = FormKitSchema;\nvar isServer3 = typeof window === \"undefined\";\nvar parentSymbol = Symbol(\"FormKitParent\");\nvar componentSymbol = Symbol(\"FormKitComponentCallback\");\nvar currentSchemaNode = null;\nvar getCurrentSchemaNode = () => currentSchemaNode;\nfunction FormKit(props, context) {\n  const node = useInput(props, context);\n  if (!node.props.definition)\n    error(600, node);\n  if (node.props.definition.component) {\n    return () => h(\n      node.props.definition?.component,\n      {\n        context: node.context\n      },\n      { ...context.slots }\n    );\n  }\n  const schema = ref([]);\n  let memoKey = node.props.definition.schemaMemoKey;\n  const generateSchema = () => {\n    const schemaDefinition = node.props?.definition?.schema;\n    if (!schemaDefinition)\n      error(601, node);\n    if (typeof schemaDefinition === \"function\") {\n      currentSchemaNode = node;\n      schema.value = schemaDefinition({ ...props.sectionsSchema || {} });\n      currentSchemaNode = null;\n      if (memoKey && props.sectionsSchema || \"memoKey\" in schemaDefinition && typeof schemaDefinition.memoKey === \"string\") {\n        memoKey = (memoKey ?? schemaDefinition?.memoKey) + JSON.stringify(props.sectionsSchema);\n      }\n    } else {\n      schema.value = schemaDefinition;\n    }\n  };\n  generateSchema();\n  if (!isServer3) {\n    node.on(\"schema\", () => {\n      memoKey += \"♻️\";\n      generateSchema();\n    });\n  }\n  context.emit(\"node\", node);\n  const definitionLibrary = node.props.definition.library;\n  const library = {\n    FormKit: markRaw(formkitComponent),\n    ...definitionLibrary\n  };\n  function didMount() {\n    node.emit(\"mounted\");\n  }\n  context.expose({ node });\n  return () => h(\n    FormKitSchema,\n    {\n      schema: schema.value,\n      data: node.context,\n      onMounted: didMount,\n      library,\n      memoKey\n    },\n    { ...context.slots }\n  );\n}\nvar formkitComponent = /* @__PURE__ */ defineComponent(\n  FormKit,\n  {\n    props: runtimeProps,\n    inheritAttrs: false\n  }\n);\nvar FormKit_default = formkitComponent;\nvar rootSymbol = Symbol();\nvar FormKitRoot = /* @__PURE__ */ defineComponent((_p, context) => {\n  const boundary = ref(null);\n  const showBody = ref(false);\n  const shadowRoot = ref(void 0);\n  const stopWatch = watch(boundary, (el) => {\n    let parent = el;\n    let root = null;\n    while (parent = parent?.parentNode) {\n      root = parent;\n      if (root instanceof ShadowRoot || root instanceof Document) {\n        foundRoot(root);\n        break;\n      }\n    }\n    stopWatch();\n    showBody.value = true;\n  });\n  provide(rootSymbol, shadowRoot);\n  function foundRoot(root) {\n    shadowRoot.value = root;\n  }\n  return () => showBody.value && context.slots.default ? context.slots.default() : h(\"template\", { ref: boundary });\n});\nfunction createPlugin(app, options) {\n  app.component(options.alias || \"FormKit\", FormKit_default).component(options.schemaAlias || \"FormKitSchema\", FormKitSchema_default);\n  return {\n    get: getNode,\n    setLocale: (locale) => {\n      if (options.config?.rootConfig) {\n        options.config.rootConfig.locale = locale;\n      }\n    },\n    clearErrors,\n    setErrors,\n    submit: submitForm,\n    reset\n  };\n}\nvar optionsSymbol = Symbol.for(\"FormKitOptions\");\nvar configSymbol = Symbol.for(\"FormKitConfig\");\nvar plugin = {\n  install(app, _options) {\n    const options = Object.assign(\n      {\n        alias: \"FormKit\",\n        schemaAlias: \"FormKitSchema\"\n      },\n      typeof _options === \"function\" ? _options() : _options\n    );\n    const rootConfig = createConfig(options.config || {});\n    options.config = { rootConfig };\n    app.config.globalProperties.$formkit = createPlugin(app, options);\n    app.provide(optionsSymbol, options);\n    app.provide(configSymbol, rootConfig);\n    if (typeof window !== \"undefined\") {\n      globalThis.__FORMKIT_CONFIGS__ = (globalThis.__FORMKIT_CONFIGS__ || []).concat([rootConfig]);\n    }\n  }\n};\n\n// packages/vue/src/composables/useInput.ts\nvar isBrowser = typeof window !== \"undefined\";\nvar pseudoProps = [\n  // Boolean props\n  \"ignore\",\n  \"disabled\",\n  \"preserve\",\n  // String props\n  \"help\",\n  \"label\",\n  /^preserve(-e|E)rrors/,\n  /^[a-z]+(?:-visibility|Visibility|-behavior|Behavior)$/,\n  /^[a-zA-Z-]+(?:-class|Class)$/,\n  \"prefixIcon\",\n  \"suffixIcon\",\n  /^[a-zA-Z-]+(?:-icon|Icon)$/\n];\nvar boolProps = [\"disabled\", \"ignore\", \"preserve\"];\nfunction classesToNodeProps(node, props) {\n  if (props.classes) {\n    Object.keys(props.classes).forEach(\n      (key) => {\n        if (typeof key === \"string\") {\n          node.props[`_${key}Class`] = props.classes[key];\n          if (isObject(props.classes[key]) && key === \"inner\")\n            Object.values(props.classes[key]);\n        }\n      }\n    );\n  }\n}\nfunction onlyListeners(props) {\n  if (!props)\n    return {};\n  const knownListeners = [\"Submit\", \"SubmitRaw\", \"SubmitInvalid\"].reduce(\n    (listeners, listener) => {\n      const name = `on${listener}`;\n      if (name in props) {\n        if (typeof props[name] === \"function\") {\n          listeners[name] = props[name];\n        }\n      }\n      return listeners;\n    },\n    {}\n  );\n  return knownListeners;\n}\nfunction useInput(props, context, options = {}) {\n  const config = Object.assign({}, inject(optionsSymbol) || {}, options);\n  const __root = inject(rootSymbol, ref(isBrowser ? document : void 0));\n  const __cmpCallback = inject(componentSymbol, () => {\n  });\n  const instance = getCurrentInstance();\n  const listeners = onlyListeners(instance?.vnode.props);\n  const isVModeled = [\"modelValue\", \"model-value\"].some(\n    (prop) => prop in (instance?.vnode.props ?? {})\n  );\n  let isMounted = false;\n  onMounted(() => {\n    isMounted = true;\n  });\n  const value = props.modelValue !== void 0 ? props.modelValue : cloneAny(context.attrs.value);\n  function createInitialProps() {\n    const initialProps2 = {\n      ...nodeProps(props),\n      ...listeners,\n      type: props.type ?? \"text\",\n      __root: __root.value,\n      __slots: context.slots\n    };\n    const attrs = except(nodeProps(context.attrs), pseudoProps);\n    if (!attrs.key)\n      attrs.key = token();\n    initialProps2.attrs = attrs;\n    const propValues = only(nodeProps(context.attrs), pseudoProps);\n    for (const propName in propValues) {\n      if (boolProps.includes(propName) && propValues[propName] === \"\") {\n        propValues[propName] = true;\n      }\n      initialProps2[camel(propName)] = propValues[propName];\n    }\n    const classesProps = { props: {} };\n    classesToNodeProps(classesProps, props);\n    Object.assign(initialProps2, classesProps.props);\n    if (typeof initialProps2.type !== \"string\") {\n      initialProps2.definition = initialProps2.type;\n      delete initialProps2.type;\n    }\n    return initialProps2;\n  }\n  const initialProps = createInitialProps();\n  const parent = initialProps.ignore ? null : props.parent || inject(parentSymbol, null);\n  const node = createNode(\n    extend(\n      config || {},\n      {\n        name: props.name || void 0,\n        value,\n        parent,\n        plugins: (config.plugins || []).concat(props.plugins ?? []),\n        config: props.config || {},\n        props: initialProps,\n        index: props.index,\n        sync: !!undefine(context.attrs.sync || context.attrs.dynamic)\n      },\n      false,\n      true\n    )\n  );\n  __cmpCallback(node);\n  if (!node.props.definition)\n    error(600, node);\n  const lateBoundProps = ref(\n    new Set(\n      Array.isArray(node.props.__propDefs) ? node.props.__propDefs : Object.keys(node.props.__propDefs ?? {})\n    )\n  );\n  node.on(\n    \"added-props\",\n    ({ payload: lateProps }) => {\n      const propNames = Array.isArray(lateProps) ? lateProps : Object.keys(lateProps ?? {});\n      propNames.forEach((newProp) => lateBoundProps.value.add(newProp));\n    }\n  );\n  const pseudoPropNames = computed(\n    () => pseudoProps.concat([...lateBoundProps.value]).reduce((names, prop) => {\n      if (typeof prop === \"string\") {\n        names.push(camel(prop));\n        names.push(kebab(prop));\n      } else {\n        names.push(prop);\n      }\n      return names;\n    }, [])\n  );\n  watchEffect(() => classesToNodeProps(node, props));\n  const passThrough = nodeProps(props);\n  for (const prop in passThrough) {\n    watch(\n      () => props[prop],\n      () => {\n        if (props[prop] !== void 0) {\n          node.props[prop] = props[prop];\n        }\n      }\n    );\n  }\n  watchEffect(() => {\n    node.props.__root = __root.value;\n  });\n  const attributeWatchers = /* @__PURE__ */ new Set();\n  const possibleProps = nodeProps(context.attrs);\n  watchEffect(() => {\n    watchAttributes(only(possibleProps, pseudoPropNames.value));\n  });\n  function watchAttributes(attrProps) {\n    attributeWatchers.forEach((stop) => {\n      stop();\n      attributeWatchers.delete(stop);\n    });\n    for (const prop in attrProps) {\n      const camelName = camel(prop);\n      attributeWatchers.add(\n        watch(\n          () => context.attrs[prop],\n          () => {\n            node.props[camelName] = context.attrs[prop];\n          }\n        )\n      );\n    }\n  }\n  watchEffect(() => {\n    const attrs = except(nodeProps(context.attrs), pseudoPropNames.value);\n    if (\"multiple\" in attrs)\n      attrs.multiple = undefine(attrs.multiple);\n    if (typeof attrs.onBlur === \"function\") {\n      attrs.onBlur = oncePerTick(attrs.onBlur);\n    }\n    node.props.attrs = Object.assign({}, node.props.attrs || {}, attrs);\n  });\n  watchEffect(() => {\n    const messages3 = (props.errors ?? []).map(\n      (error3) => createMessage({\n        key: slugify(error3),\n        type: \"error\",\n        value: error3,\n        meta: { source: \"prop\" }\n      })\n    );\n    node.store.apply(\n      messages3,\n      (message3) => message3.type === \"error\" && message3.meta.source === \"prop\"\n    );\n  });\n  if (node.type !== \"input\") {\n    const sourceKey = `${node.name}-prop`;\n    watchEffect(() => {\n      const inputErrors = props.inputErrors ?? {};\n      const keys = Object.keys(inputErrors);\n      if (!keys.length)\n        node.clearErrors(true, sourceKey);\n      const messages3 = keys.reduce((messages4, key) => {\n        let value2 = inputErrors[key];\n        if (typeof value2 === \"string\")\n          value2 = [value2];\n        if (Array.isArray(value2)) {\n          messages4[key] = value2.map(\n            (error3) => createMessage({\n              key: error3,\n              type: \"error\",\n              value: error3,\n              meta: { source: sourceKey }\n            })\n          );\n        }\n        return messages4;\n      }, {});\n      node.store.apply(\n        messages3,\n        (message3) => message3.type === \"error\" && message3.meta.source === sourceKey\n      );\n    });\n  }\n  watchEffect(() => Object.assign(node.config, props.config));\n  if (node.type !== \"input\") {\n    provide(parentSymbol, node);\n  }\n  let clonedValueBeforeVmodel = void 0;\n  node.on(\"modelUpdated\", () => {\n    context.emit(\"inputRaw\", node.context?.value, node);\n    if (isMounted) {\n      context.emit(\"input\", node.context?.value, node);\n    }\n    if (isVModeled && node.context) {\n      clonedValueBeforeVmodel = cloneAny(node.value);\n      context.emit(\"update:modelValue\", shallowClone(node.value));\n    }\n  });\n  if (isVModeled) {\n    watch(\n      toRef(props, \"modelValue\"),\n      (value2) => {\n        if (!eq(clonedValueBeforeVmodel, value2)) {\n          node.input(value2, false);\n        }\n      },\n      { deep: true }\n    );\n    if (node.value !== value) {\n      node.emit(\"modelUpdated\");\n    }\n  }\n  onBeforeUnmount(() => node.destroy());\n  return node;\n}\nvar totalCreated = 1;\nfunction isComponent2(obj) {\n  return typeof obj === \"function\" && obj.length === 2 || typeof obj === \"object\" && !Array.isArray(obj) && !(\"$el\" in obj) && !(\"$cmp\" in obj) && !(\"if\" in obj);\n}\nfunction createInput(schemaOrComponent, definitionOptions = {}, sectionsSchema = {}) {\n  const definition3 = {\n    type: \"input\",\n    ...definitionOptions\n  };\n  let schema;\n  if (isComponent2(schemaOrComponent)) {\n    const cmpName = `SchemaComponent${totalCreated++}`;\n    schema = createSection(\"input\", () => ({\n      $cmp: cmpName,\n      props: {\n        context: \"$node.context\"\n      }\n    }));\n    definition3.library = { [cmpName]: markRaw(schemaOrComponent) };\n  } else if (typeof schemaOrComponent === \"function\") {\n    schema = schemaOrComponent;\n  } else {\n    schema = createSection(\"input\", () => cloneAny(schemaOrComponent));\n  }\n  definition3.schema = useSchema(schema || \"Schema undefined\", sectionsSchema);\n  if (!definition3.schemaMemoKey) {\n    definition3.schemaMemoKey = `${Math.random()}`;\n  }\n  return definition3;\n}\n\n// packages/vue/src/composables/defineFormKitConfig.ts\nfunction defineFormKitConfig(config) {\n  return () => typeof config === \"function\" ? config() : config;\n}\nvar inputList = {};\nvar schemas = {};\nvar classes = {\n  container: `\n    formkit-kitchen-sink \n    p-8\n  `,\n  tabs: `\n    formkit-tabs \n    mt-4 \n    mr-[min(350px,25vw)]\n  `,\n  tab: `\n    formkit-kitchen-sink-tab\n    inline-block\n    mb-4\n    -mr-px\n    cursor-pointer\n    px-4\n    py-2\n    border\n    border-neutral-200\n    text-neutral-800\n    data-[active]:bg-neutral-800\n    data-[active]:border-neutral-800\n    data-[active]:text-neutral-50\n    hover:bg-neutral-100\n    hover:text-neutral-900\n    dark:border-neutral-700\n    dark:text-neutral-50\n    dark:data-[active]:bg-neutral-100\n    dark:data-[active]:border-neutral-100\n    dark:data-[active]:text-neutral-800\n    dark:hover:bg-neutral-800\n    dark:hover:text-neutral-50\n  `,\n  filterContainer: `\n    formkit-filter-container\n    grid\n    grid-cols-[repeat(auto-fit,300px)]\n    mr-[min(350px,25vw)]\n    -mt-4\n    mb-8\n    px-4\n    pt-8\n    pb-4\n    border\n    relative\n    -translate-y-px\n    max-w-[1000px]\n    border-neutral-200\n    dark:border-neutral-700\n  `,\n  filterGroup: `\n    formkit-filter-group\n    mr-8\n    mb-8\n    [&_legend]:text-lg\n    [&_ul]:columns-2\n    [&_ul>li:first-child]:[column-span:all]\n    [&_ul>li:first-child]:mt-2\n    [&_ul>li:first-child]:mb-2\n    [&_ul>li:first-child]:pb-2\n    [&_ul>li:first-child]:border-b\n    [&_ul>li:first-child]:border-neutral-200\n    dark:[&_ul>li:first-child]:border-neutral-700\n  `,\n  formContainer: `\n    formkit-form-container\n    w-full\n    bg-white\n    rounded\n    border\n    border-neutral-100\n    shadow-lg\n    max-w-[800px]\n    p-[min(5vw,5rem)]\n    dark:bg-neutral-900\n    dark:border-neutral-800\n    dark:shadow-3xl\n    [&_form>h1]:text-2xl\n    [&_form>h1]:mb-4\n    [&_form>h1]:font-bold\n    [&_form>h1+p]:text-base\n    [&_form>h1+p]:mb-4\n    [&_form>h1+p]:-mt-2\n    [&_form_.double]:flex\n    [&_form_.double>*]:w-1/2\n    [&_form_.double>*:first-child]:mr-2\n    [&_form_.triple]:flex\n    [&_form_.triple>*]:w-1/3\n    [&_form_.triple>*:first-child]:mr-2\n    [&_form_.triple>*:last-child]:ml-2\n  `,\n  inputs: `formkit-inputs`,\n  specimen: `\n    formkit-specimen \n    flex \n    flex-col \n    p-2 \n    max-w-[75vw]\n  `,\n  inputSection: `\n    group/section\n    formkit-input-section \n    mr-[min(325px,25vw)]\n  `,\n  specimenGroup: `\n    formkit-specimen-group\n    grid\n    mb-16\n    grid-cols-[repeat(auto-fit,400px)]\n    group-data-[type=\"transferlist\"]/section:grid-cols-[repeat(auto-fit,650px)]\n    group-data-[type=\"multi-step\"]/section:grid-cols-[repeat(auto-fit,550px)]\n  `,\n  inputType: `\n    formkit-input-type\n    block\n    font-bold\n    text-neutral-900\n    border-b\n    border-neutral-100\n    text-3xl\n    mb-8\n    pb-2\n    capitalize\n    dark:border-neutral-800 \n    dark:text-neutral-50\n  `\n};\nasync function fetchInputList() {\n  const response = await fetch(\n    \"https://raw.githubusercontent.com/formkit/input-schemas/master/index.json\"\n  );\n  const json = await response.json();\n  return json;\n}\nasync function fetchInputSchema(input) {\n  try {\n    const response = await fetch(\n      `https://raw.githubusercontent.com/formkit/input-schemas/master/schemas/${input}.json`\n    );\n    const json = await response.json();\n    return json;\n  } catch (error3) {\n    console.error(error3);\n  }\n}\nvar FormKitKitchenSink = /* @__PURE__ */ defineComponent({\n  name: \"FormKitKitchenSink\",\n  props: {\n    schemas: {\n      type: Array,\n      required: false\n    },\n    pro: {\n      type: Boolean,\n      default: true\n    },\n    addons: {\n      type: Boolean,\n      default: true\n    },\n    forms: {\n      type: Boolean,\n      default: true\n    },\n    navigation: {\n      type: Boolean,\n      default: true\n    }\n  },\n  async setup(props) {\n    onMounted(() => {\n      const filterNode = getNode(\"filter-checkboxes\");\n      data.filters = computed(() => {\n        if (!filterNode?.context)\n          return [];\n        const filters = filterNode.context.value;\n        const filterValues = [];\n        Object.keys(filters).forEach((key) => {\n          filterValues.push(...filters[key]);\n        });\n        return filterValues;\n      });\n    });\n    inputList = Object.keys(inputList).length ? inputList : await fetchInputList();\n    const promises = [];\n    const activeTab = ref(\"\");\n    const inputCheckboxes = computed(() => {\n      const inputGroups = {\n        core: { label: \"Inputs\", name: \"core\", inputs: inputList.core }\n      };\n      if (props.pro) {\n        inputGroups.pro = {\n          label: \"Pro Inputs\",\n          name: \"pro\",\n          inputs: inputList.pro\n        };\n      }\n      if (props.addons) {\n        inputGroups.addons = {\n          label: \"Add-ons\",\n          name: \"addons\",\n          inputs: inputList.addons\n        };\n      }\n      return inputGroups;\n    });\n    if (!props.schemas) {\n      const coreInputPromises = inputList.core.map(async (schema) => {\n        const response = await fetchInputSchema(schema);\n        schemas[schema] = response;\n      });\n      promises.push(...coreInputPromises);\n      if (props.forms) {\n        const formsPromises = inputList.forms.map(async (schema) => {\n          const schemaName = `form/${schema}`;\n          const response = await fetchInputSchema(schemaName);\n          schemas[schemaName] = response;\n        });\n        promises.push(...formsPromises);\n      }\n      if (props.pro) {\n        const proInputPromises = inputList.pro.map(async (schema) => {\n          const response = await fetchInputSchema(schema);\n          schemas[schema] = response;\n        });\n        promises.push(...proInputPromises);\n      }\n      if (props.addons) {\n        const addonPromises = inputList.addons.map(async (schema) => {\n          const response = await fetchInputSchema(schema);\n          schemas[schema] = response;\n        });\n        promises.push(...addonPromises);\n      }\n    } else {\n      const schemaPromises = props.schemas.map(async (schema) => {\n        const response = await fetchInputSchema(`${schema}`);\n        schemas[`${schema}`] = response;\n      });\n      promises.push(...schemaPromises);\n    }\n    const selectAll = (node) => {\n      let previousValue = [];\n      let skip = false;\n      if (node.props.type !== \"checkbox\")\n        return;\n      node.on(\"created\", () => {\n        const currentValue = node.value;\n        if (Array.isArray(currentValue) && currentValue.length === 1 && currentValue[0] === \"all\") {\n          node.input(\n            node.props.options.map((option) => {\n              if (typeof option !== \"string\")\n                return option.value;\n              return option;\n            })\n          );\n        }\n        previousValue = Array.isArray(node.value) ? node.value : [];\n      });\n      node.on(\"commit\", ({ payload }) => {\n        if (skip) {\n          skip = false;\n          return;\n        }\n        if (!Array.isArray(payload))\n          return;\n        const previousValueHadAll = previousValue.includes(\"all\");\n        const currentValueHasAll = payload.includes(\"all\");\n        if (!previousValueHadAll && currentValueHasAll) {\n          const computedOptions = node.props.options.map(\n            (option) => {\n              if (typeof option !== \"string\")\n                return option.value;\n              return option;\n            }\n          );\n          node.input(computedOptions);\n          previousValue = computedOptions;\n          return;\n        }\n        if (previousValueHadAll && !currentValueHasAll) {\n          node.input([]);\n          previousValue = [];\n          return;\n        }\n        const valueMinusAll = payload.filter((value) => value !== \"all\");\n        if (valueMinusAll.length < node.props.options.length - 1 && currentValueHasAll) {\n          node.input(valueMinusAll);\n          previousValue = valueMinusAll;\n          skip = true;\n          return;\n        }\n        if (valueMinusAll.length === node.props.options.length - 1 && !currentValueHasAll) {\n          const computedOptions = node.props.options.map(\n            (option) => {\n              if (typeof option !== \"string\")\n                return option.value;\n              return option;\n            }\n          );\n          node.input(computedOptions);\n          previousValue = Array.isArray(node.value) ? node.value : [];\n          return;\n        }\n      });\n    };\n    const data = reactive({\n      twClasses: classes,\n      basicOptions: Array.from({ length: 15 }, (_, i) => `Option ${i + 1}`),\n      asyncLoader: async () => {\n        return await new Promise(() => {\n        });\n      },\n      paginatedLoader: async ({\n        page,\n        hasNextPage\n      }) => {\n        const base = (page - 1) * 10;\n        hasNextPage();\n        return Array.from({ length: 10 }, (_, i) => `Option ${base + i + 1}`);\n      },\n      formSubmitHandler: async (data2) => {\n        await new Promise((resolve) => setTimeout(resolve, 1e3));\n        alert(\"Form submitted (fake) — check console for data object\");\n        console.log(\"Form data:\", data2);\n      },\n      includes: (array, value) => {\n        if (!Array.isArray(array))\n          return false;\n        return array.includes(value);\n      },\n      checkboxPlugins: [selectAll],\n      filters: []\n    });\n    await Promise.all(promises);\n    const inputKeys = Object.keys(schemas);\n    const formNames = inputKeys.map((key) => {\n      if (key.startsWith(\"form/\")) {\n        switch (key) {\n          case \"form/tshirt\":\n            return {\n              id: key,\n              name: \"Order Form\"\n            };\n          default:\n            const name = key.replace(\"form/\", \"\");\n            return {\n              id: key,\n              name: name.charAt(0).toUpperCase() + name.slice(1) + \" Form\"\n            };\n        }\n      }\n      return {\n        id: key,\n        name: \"\"\n      };\n    });\n    const filteredFormNames = formNames.filter((form) => form.name !== \"\");\n    const forms = inputKeys.filter((schema) => {\n      return schema.startsWith(\"form/\");\n    });\n    const inputs = inputKeys.filter(\n      (schema) => !schema.startsWith(\"form/\")\n    );\n    const tabs = [];\n    if (inputs.length) {\n      tabs.push({\n        id: \"kitchen-sink\",\n        name: \"Kitchen Sink\"\n      });\n    }\n    if (forms.length) {\n      tabs.push(...filteredFormNames.sort((a, b) => a.name > b.name ? 1 : -1));\n    }\n    if (tabs.length) {\n      activeTab.value = tabs[0].id;\n    }\n    const kitchenSinkRenders = computed(() => {\n      inputs.sort();\n      const schemaDefinitions = inputs.reduce(\n        (schemaDefinitions2, inputName) => {\n          const schemaDefinition = schemas[inputName];\n          schemaDefinitions2.push({\n            $el: \"div\",\n            if: '$includes($filters, \"' + inputName + '\")',\n            attrs: {\n              key: inputName,\n              class: \"$twClasses.inputSection\",\n              \"data-type\": inputName\n            },\n            children: [\n              {\n                $el: \"h2\",\n                attrs: {\n                  class: \"$twClasses.inputType\"\n                },\n                children: inputName\n              },\n              {\n                $el: \"div\",\n                attrs: {\n                  class: \"$twClasses.specimenGroup\"\n                },\n                children: [\n                  ...(Array.isArray(schemaDefinition) ? schemaDefinition : [schemaDefinition]).map((specimen) => {\n                    return {\n                      $el: \"div\",\n                      attrs: {\n                        class: \"$twClasses.specimen\"\n                      },\n                      children: [specimen]\n                    };\n                  })\n                ]\n              }\n            ]\n          });\n          return schemaDefinitions2;\n        },\n        []\n      );\n      return h(\n        KeepAlive,\n        {},\n        {\n          default: () => {\n            return activeTab.value === \"kitchen-sink\" ? h(FormKitSchema, { schema: schemaDefinitions, data }) : null;\n          }\n        }\n      );\n    });\n    const formRenders = computed(() => {\n      return filteredFormNames.map((form) => {\n        const schemaDefinition = schemas[form.id];\n        return h(\n          \"div\",\n          {\n            key: form.id\n          },\n          activeTab.value === form.id ? [\n            h(\n              \"div\",\n              {\n                class: classes.formContainer\n              },\n              [\n                h(FormKitSchema, {\n                  schema: schemaDefinition[0],\n                  data\n                })\n              ]\n            )\n          ] : \"\"\n        );\n      }).filter((form) => form.children);\n    });\n    const tabBar = computed(() => {\n      return h(\n        \"div\",\n        {\n          key: \"tab-bar\",\n          class: classes.tabs\n        },\n        tabs.map((tab) => {\n          return h(\n            \"span\",\n            {\n              class: classes.tab,\n              key: tab.id,\n              \"data-tab\": tab.id,\n              \"data-active\": activeTab.value === tab.id || void 0,\n              onClick: () => {\n                activeTab.value = tab.id;\n              }\n            },\n            tab.name\n          );\n        })\n      );\n    });\n    const filterCheckboxes = computed(() => {\n      const createCheckboxSchema = (inputGroup) => {\n        return {\n          $el: \"div\",\n          attrs: {\n            class: \"$twClasses.filterGroup\"\n          },\n          children: [\n            {\n              $formkit: \"checkbox\",\n              name: inputGroup.name,\n              label: inputGroup.label,\n              plugins: \"$checkboxPlugins\",\n              value: [\"all\"],\n              options: [\n                {\n                  label: \"All\",\n                  value: \"all\"\n                },\n                ...Array.isArray(inputGroup.inputs) ? inputGroup.inputs : []\n              ]\n            }\n          ]\n        };\n      };\n      const filterSchema = h(FormKitSchema, {\n        key: \"filter-checkboxes\",\n        data,\n        schema: {\n          $formkit: \"group\",\n          id: \"filter-checkboxes\",\n          children: [\n            {\n              $el: \"div\",\n              attrs: {\n                class: \"$twClasses.filterContainer\"\n              },\n              children: Object.keys(inputCheckboxes.value).map((key) => {\n                const inputGroup = inputCheckboxes.value[key];\n                return createCheckboxSchema(inputGroup);\n              })\n            }\n          ]\n        }\n      });\n      return h(\n        KeepAlive,\n        {},\n        {\n          default: () => {\n            if (!(tabs.find((tab) => tab.id === \"kitchen-sink\") && activeTab.value === \"kitchen-sink\")) {\n              return null;\n            }\n            return filterSchema;\n          }\n        }\n      );\n    });\n    return () => {\n      return h(\n        \"div\",\n        {\n          class: classes.container\n        },\n        [\n          tabs.length > 1 ? tabBar.value : void 0,\n          filterCheckboxes.value,\n          ...formRenders.value,\n          kitchenSinkRenders.value\n        ]\n      );\n    };\n  }\n});\nvar messages = createSection(\"messages\", () => ({\n  $el: \"ul\",\n  if: \"$fns.length($messages)\"\n}));\nvar message = createSection(\"message\", () => ({\n  $el: \"li\",\n  for: [\"message\", \"$messages\"],\n  attrs: {\n    key: \"$message.key\",\n    id: `$id + '-' + $message.key`,\n    \"data-message-type\": \"$message.type\"\n  }\n}));\nvar definition = messages(message(\"$message.value\"));\nvar FormKitMessages = /* @__PURE__ */ defineComponent({\n  props: {\n    node: {\n      type: Object,\n      required: false\n    },\n    sectionsSchema: {\n      type: Object,\n      default: {}\n    },\n    defaultPosition: {\n      type: [String, Boolean],\n      default: false\n    }\n  },\n  setup(props, context) {\n    const node = computed(() => {\n      return props.node || inject(parentSymbol, void 0);\n    });\n    watch(\n      node,\n      () => {\n        if (node.value?.context && !undefine(props.defaultPosition)) {\n          node.value.context.defaultMessagePlacement = false;\n        }\n      },\n      { immediate: true }\n    );\n    const schema = definition(props.sectionsSchema || {});\n    const data = computed(() => {\n      return {\n        messages: node.value?.context?.messages || {},\n        fns: node.value?.context?.fns || {},\n        classes: node.value?.context?.classes || {}\n      };\n    });\n    return () => node.value?.context ? h(FormKitSchema_default, { schema, data: data.value }, { ...context.slots }) : null;\n  }\n});\nfunction useConfig(config) {\n  const options = Object.assign(\n    {\n      alias: \"FormKit\",\n      schemaAlias: \"FormKitSchema\"\n    },\n    typeof config === \"function\" ? config() : config\n  );\n  const rootConfig = createConfig(options.config || {});\n  options.config = { rootConfig };\n  provide(optionsSymbol, options);\n  provide(configSymbol, rootConfig);\n  if (typeof window !== \"undefined\") {\n    globalThis.__FORMKIT_CONFIGS__ = (globalThis.__FORMKIT_CONFIGS__ || []).concat([rootConfig]);\n  }\n}\nvar FormKitProvider = /* @__PURE__ */ defineComponent(\n  function FormKitProvider2(props, { slots, attrs }) {\n    const options = {};\n    if (props.config) {\n      useConfig(props.config);\n    }\n    return () => slots.default ? slots.default(options).map((vnode) => {\n      return h(vnode, {\n        ...attrs,\n        ...vnode.props\n      });\n    }) : null;\n  },\n  { props: [\"config\"], name: \"FormKitProvider\", inheritAttrs: false }\n);\nvar FormKitConfigLoader = /* @__PURE__ */ defineComponent(\n  async function FormKitConfigLoader2(props, context) {\n    let config = {};\n    if (props.configFile) {\n      const configFile = await import(\n        /*@__formkit.config.ts__*/\n        /* @vite-ignore */\n        /* webpackIgnore: true */\n        props.configFile\n      );\n      config = \"default\" in configFile ? configFile.default : configFile;\n    }\n    if (typeof config === \"function\") {\n      config = config();\n    }\n    const useDefaultConfig = props.defaultConfig ?? true;\n    if (useDefaultConfig) {\n      const { defaultConfig: defaultConfig2 } = await Promise.resolve().then(() => (init_defaultConfig(), defaultConfig_exports));\n      config = /* @__PURE__ */ defaultConfig2(config);\n    }\n    return () => h(FormKitProvider, { ...context.attrs, config }, context.slots);\n  },\n  {\n    props: [\"defaultConfig\", \"configFile\"],\n    inheritAttrs: false\n  }\n);\nvar FormKitLazyProvider = /* @__PURE__ */ defineComponent(\n  function FormKitLazyProvider2(props, context) {\n    const config = inject(optionsSymbol, null);\n    const passthru = (vnode) => {\n      return h(vnode, {\n        ...context.attrs,\n        ...vnode.props\n      });\n    };\n    if (config) {\n      return () => context.slots?.default ? context.slots.default().map(passthru) : null;\n    }\n    const instance = getCurrentInstance();\n    if (instance.suspense) {\n      return () => h(FormKitConfigLoader, props, {\n        default: () => context.slots?.default ? context.slots.default().map(passthru) : null\n      });\n    }\n    return () => h(Suspense, null, {\n      ...context.slots,\n      default: () => h(FormKitConfigLoader, { ...context.attrs, ...props }, context.slots)\n    });\n  },\n  {\n    props: [\"defaultConfig\", \"configFile\"],\n    inheritAttrs: false\n  }\n);\nvar summary = createSection(\"summary\", () => ({\n  $el: \"div\",\n  attrs: {\n    \"aria-live\": \"polite\"\n  }\n}));\nvar summaryInner = createSection(\"summaryInner\", () => ({\n  $el: \"div\",\n  if: \"$summaries.length && $showSummaries\"\n}));\nvar messages2 = createSection(\"messages\", () => ({\n  $el: \"ul\",\n  if: \"$summaries.length && $showSummaries\"\n}));\nvar message2 = createSection(\"message\", () => ({\n  $el: \"li\",\n  for: [\"summary\", \"$summaries\"],\n  attrs: {\n    key: \"$summary.key\",\n    \"data-message-type\": \"$summary.type\"\n  }\n}));\nvar summaryHeader = createSection(\"summaryHeader\", () => ({\n  $el: \"h2\",\n  attrs: {\n    id: \"$id\"\n  }\n}));\nvar messageLink = createSection(\"messageLink\", () => ({\n  $el: \"a\",\n  attrs: {\n    id: \"$summary.key\",\n    href: '$: \"#\" + $summary.id',\n    onClick: \"$jumpLink\"\n  }\n}));\nvar definition2 = summary(\n  summaryInner(\n    summaryHeader(\"$summaryHeader\"),\n    messages2(message2(messageLink(\"$summary.message\")))\n  )\n);\nvar FormKitSummary = /* @__PURE__ */ defineComponent({\n  props: {\n    node: {\n      type: Object,\n      required: false\n    },\n    forceShow: {\n      type: Boolean,\n      default: false\n    },\n    sectionsSchema: {\n      type: Object,\n      default: {}\n    }\n  },\n  emits: {\n    /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\n    show: (_summaries) => true\n  },\n  setup(props, context) {\n    const id = `summary-${token()}`;\n    const node = computed(() => {\n      return props.node || inject(parentSymbol, void 0);\n    });\n    if (!node)\n      throw new Error(\n        \"FormKitSummary must have a FormKit parent or use the node prop.\"\n      );\n    const summaryContexts = ref([]);\n    const showSummaries = ref(false);\n    const summaries = computed(() => {\n      const summarizedMessages = [];\n      summaryContexts.value.forEach((context2) => {\n        for (const idx in context2.messages) {\n          const message3 = context2.messages[idx];\n          if (typeof message3.value !== \"string\")\n            continue;\n          summarizedMessages.push({\n            message: message3.value,\n            id: context2.id,\n            key: `${context2.id}-${message3.key}`,\n            type: message3.type\n          });\n        }\n      });\n      return summarizedMessages;\n    });\n    const addContexts = () => {\n      summaryContexts.value = [];\n      node.value?.walk(\n        (child) => child.context && summaryContexts.value.push(child.context)\n      );\n    };\n    node.value?.on(\"submit-raw\", async () => {\n      addContexts();\n      if (summaries.value.length === 0)\n        return;\n      context.emit(\"show\", summaries.value);\n      showSummaries.value = true;\n      await nextTick();\n      if (typeof window !== \"undefined\") {\n        document.getElementById(id)?.scrollIntoView({ behavior: \"smooth\" });\n        if (summaries.value[0]) {\n          document.getElementById(summaries.value[0].key)?.focus();\n        }\n      }\n    });\n    node.value?.on(\"child\", addContexts);\n    function jumpLink(e) {\n      if (e.target instanceof HTMLAnchorElement) {\n        e.preventDefault();\n        const id2 = e.target.getAttribute(\"href\")?.substring(1);\n        if (id2) {\n          document.getElementById(id2)?.scrollIntoView({ behavior: \"smooth\" });\n          document.getElementById(id2)?.focus();\n        }\n      }\n    }\n    localize(\"summaryHeader\", \"There were errors in your form.\")(node.value);\n    const schema = definition2(props.sectionsSchema || {});\n    const data = computed(() => {\n      return {\n        id,\n        fns: node.value?.context?.fns || {},\n        classes: node.value?.context?.classes || {},\n        summaries: summaries.value,\n        showSummaries: props.forceShow || showSummaries.value,\n        summaryHeader: node.value?.context?.ui?.summaryHeader?.value || \"\",\n        jumpLink\n      };\n    });\n    return () => node.value?.context ? h(FormKitSchema_default, { schema, data: data.value }, { ...context.slots }) : null;\n  }\n});\n\n// packages/vue/src/index.ts\ninit_defaultConfig();\ninit_bindings();\nvar FormKitIcon = /* @__PURE__ */ defineComponent({\n  name: \"FormKitIcon\",\n  props: {\n    icon: {\n      type: String,\n      default: \"\"\n    },\n    iconLoader: {\n      type: Function,\n      default: null\n    },\n    iconLoaderUrl: {\n      type: Function,\n      default: null\n    }\n  },\n  setup(props) {\n    const icon = ref(void 0);\n    const config = inject(optionsSymbol, {});\n    const parent = inject(parentSymbol, null);\n    let iconHandler = void 0;\n    function loadIcon() {\n      if (!iconHandler || typeof iconHandler !== \"function\")\n        return;\n      const iconOrPromise = iconHandler(props.icon);\n      if (iconOrPromise instanceof Promise) {\n        iconOrPromise.then((iconValue) => {\n          icon.value = iconValue;\n        });\n      } else {\n        icon.value = iconOrPromise;\n      }\n    }\n    if (props.iconLoader && typeof props.iconLoader === \"function\") {\n      iconHandler = createIconHandler(props.iconLoader);\n    } else if (parent && parent.props?.iconLoader) {\n      iconHandler = createIconHandler(parent.props.iconLoader);\n    } else if (props.iconLoaderUrl && typeof props.iconLoaderUrl === \"function\") {\n      iconHandler = createIconHandler(iconHandler, props.iconLoaderUrl);\n    } else {\n      const iconPlugin = config?.plugins?.find((plugin2) => {\n        return typeof plugin2.iconHandler === \"function\";\n      });\n      if (iconPlugin) {\n        iconHandler = iconPlugin.iconHandler;\n      }\n    }\n    watch(\n      () => props.icon,\n      () => {\n        loadIcon();\n      },\n      { immediate: true }\n    );\n    return () => {\n      if (props.icon && icon.value) {\n        return h(\"span\", {\n          class: \"formkit-icon\",\n          innerHTML: icon.value\n        });\n      }\n      return null;\n    };\n  }\n});\n\nexport { FormKit_default as FormKit, FormKitIcon, FormKitKitchenSink, FormKitLazyProvider, FormKitMessages, FormKitProvider, FormKitRoot, FormKitSchema, FormKitSummary, bindings_default as bindings, componentSymbol, configSymbol, createInput, defaultConfig, defineFormKitConfig, getCurrentSchemaNode, onSSRComplete, optionsSymbol, parentSymbol, plugin, rootSymbol, ssrComplete, useConfig, useInput };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// packages/icons/src/icons-single.ts\nvar icons_single_exports = {};\n__export(icons_single_exports, {\n  add: () => Add_default,\n  amex: () => Amex_default,\n  android: () => Android_default,\n  apple: () => Apple_default,\n  arrowDown: () => ArrowDown_default,\n  arrowLeft: () => ArrowLeft_default,\n  arrowRight: () => ArrowRight_default,\n  arrowUp: () => ArrowUp_default,\n  avatarMan: () => AvatarMan_default,\n  avatarWoman: () => AvatarWoman_default,\n  bitcoin: () => Bitcoin_default,\n  bnb: () => Bnb_default,\n  bookmark: () => Bookmark_default,\n  button: () => Button_default,\n  cardano: () => Cardano_default,\n  caretDown: () => CaretDown_default,\n  caretLeft: () => CaretLeft_default,\n  caretRight: () => CaretRight_default,\n  caretUp: () => CaretUp_default,\n  check: () => Check_default,\n  checkbox: () => Checkbox_default,\n  circle: () => Circle_default,\n  close: () => Close_default,\n  color: () => Color_default,\n  compress: () => Compress_default,\n  date: () => Date_default,\n  datetime: () => Datetime_default,\n  discover: () => Discover_default,\n  dogecoin: () => Dogecoin_default,\n  dollar: () => Dollar_default,\n  down: () => Down_default,\n  download: () => Download_default,\n  downloadCloud: () => DownloadCloud_default,\n  dragHandle: () => DragHandle_default,\n  email: () => Email_default,\n  ethereum: () => Ethereum_default,\n  euro: () => Euro_default,\n  expand: () => Expand_default,\n  exportAction: () => Export_default,\n  eye: () => Eye_default,\n  eyeClosed: () => EyeClosed_default,\n  facebook: () => Facebook_default,\n  fastForward: () => FastForward_default,\n  file: () => File_default,\n  fileAudio: () => FileAudio_default,\n  fileDoc: () => FileDoc_default,\n  fileImage: () => FileImage_default,\n  filePdf: () => FilePdf_default,\n  fileVideo: () => FileVideo_default,\n  flag: () => Flag_default,\n  folder: () => Folder_default,\n  franc: () => Franc_default,\n  github: () => Github_default,\n  google: () => Google_default,\n  group: () => Group_default,\n  happy: () => Happy_default,\n  heart: () => Heart_default,\n  help: () => Help_default,\n  hidden: () => Hidden_default,\n  info: () => Info_default,\n  instagram: () => Instagram_default,\n  krona: () => Krona_default,\n  left: () => Left_default,\n  link: () => Link_default,\n  linkExternal: () => LinkExternal_default,\n  linkedin: () => Linkedin_default,\n  lira: () => Lira_default,\n  list: () => List_default,\n  mastercard: () => Mastercard_default,\n  medium: () => Medium_default,\n  megaphone: () => Megaphone_default,\n  minimize: () => Minimize_default,\n  month: () => Month_default,\n  multiCurrency: () => MultiCurrency_default,\n  number: () => Number_default,\n  open: () => Open_default,\n  password: () => Password_default,\n  pause: () => Pause_default,\n  paypal: () => Paypal_default,\n  people: () => People_default,\n  peso: () => Peso_default,\n  pinterest: () => Pinterest_default,\n  play: () => Play_default,\n  playCircle: () => PlayCircle_default,\n  pound: () => Pound_default,\n  radio: () => Radio_default,\n  range: () => Range_default,\n  reddit: () => Reddit_default,\n  refresh: () => Refresh_default,\n  reorder: () => Reorder_default,\n  repeater: () => Repeater_default,\n  reply: () => Reply_default,\n  rewind: () => Rewind_default,\n  right: () => Right_default,\n  ruble: () => Ruble_default,\n  rupee: () => Rupee_default,\n  sad: () => Sad_default,\n  search: () => Search_default,\n  select: () => Select_default,\n  settings: () => Settings_default,\n  share: () => Share_default,\n  shekel: () => Shekel_default,\n  skype: () => Skype_default,\n  snapchat: () => Snapchat_default,\n  solana: () => Solana_default,\n  spinner: () => Spinner_default,\n  star: () => Star_default,\n  start: () => Start_default,\n  stepBack: () => StepBack_default,\n  stepForward: () => StepForward_default,\n  stop: () => Stop_default,\n  stripe: () => Stripe_default,\n  submit: () => Submit_default,\n  tag: () => Tag_default,\n  telephone: () => Telephone_default,\n  tether: () => Tether_default,\n  text: () => Text_default,\n  textarea: () => Textarea_default,\n  tiktok: () => Tiktok_default,\n  time: () => Time_default,\n  tools: () => Tools_default,\n  trash: () => Trash_default,\n  twitter: () => Twitter_default,\n  up: () => Up_default,\n  upload: () => Upload_default,\n  uploadCloud: () => UploadCloud_default,\n  url: () => URL_default,\n  usdc: () => Usdc_default,\n  vimeo: () => Vimeo_default,\n  visa: () => Visa_default,\n  volumeDown: () => VolumeDown_default,\n  volumeUp: () => VolumeUp_default,\n  warning: () => Warning_default,\n  week: () => Week_default,\n  whatsapp: () => Whatsapp_default,\n  won: () => Won_default,\n  wordpress: () => Wordpress_default,\n  yen: () => Yen_default,\n  youtube: () => Youtube_default,\n  yuan: () => Yuan_default,\n  zip: () => Zip_default\n});\n\n// packages/icons/src/icons/application/index.ts\nvar application_exports = {};\n__export(application_exports, {\n  add: () => Add_default,\n  avatarMan: () => AvatarMan_default,\n  avatarWoman: () => AvatarWoman_default,\n  bookmark: () => Bookmark_default,\n  check: () => Check_default,\n  circle: () => Circle_default,\n  close: () => Close_default,\n  compress: () => Compress_default,\n  dragHandle: () => DragHandle_default,\n  expand: () => Expand_default,\n  exportAction: () => Export_default,\n  eye: () => Eye_default,\n  eyeClosed: () => EyeClosed_default,\n  fastForward: () => FastForward_default,\n  flag: () => Flag_default,\n  happy: () => Happy_default,\n  heart: () => Heart_default,\n  help: () => Help_default,\n  info: () => Info_default,\n  link: () => Link_default,\n  linkExternal: () => LinkExternal_default,\n  megaphone: () => Megaphone_default,\n  minimize: () => Minimize_default,\n  open: () => Open_default,\n  pause: () => Pause_default,\n  people: () => People_default,\n  play: () => Play_default,\n  playCircle: () => PlayCircle_default,\n  refresh: () => Refresh_default,\n  reorder: () => Reorder_default,\n  reply: () => Reply_default,\n  rewind: () => Rewind_default,\n  sad: () => Sad_default,\n  search: () => Search_default,\n  settings: () => Settings_default,\n  share: () => Share_default,\n  spinner: () => Spinner_default,\n  star: () => Star_default,\n  start: () => Start_default,\n  stepBack: () => StepBack_default,\n  stepForward: () => StepForward_default,\n  stop: () => Stop_default,\n  tag: () => Tag_default,\n  tools: () => Tools_default,\n  trash: () => Trash_default,\n  volumeDown: () => VolumeDown_default,\n  volumeUp: () => VolumeUp_default,\n  warning: () => Warning_default\n});\n\n// packages/icons/src/icons/application/Add.ts\nvar Add_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,15c-3.86,0-7-3.14-7-7S4.14,1,8,1s7,3.14,7,7-3.14,7-7,7Zm0-13c-3.31,0-6,2.69-6,6s2.69,6,6,6,6-2.69,6-6-2.69-6-6-6Z\" fill=\"currentColor\"/><path d=\"M8,11.5c-.28,0-.5-.22-.5-.5V5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v6c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M11,8.5H5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h6c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/AvatarMan.ts\nvar AvatarMan_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 13 16\"><path d=\"M4,10h5c1.66,0,3,1.34,3,3v2H1v-2c0-1.66,1.34-3,3-3Z\" fill=\"currentColor\"/><path d=\"M4,4h5v2.5c0,1.38-1.12,2.5-2.5,2.5h0c-1.38,0-2.5-1.12-2.5-2.5v-2.5h0Z\" fill=\"currentColor\"/><path d=\"M9,4h0c.55,0,1,.45,1,1h0c0,.55-.45,1-1,1h0v-2h0Z\" fill=\"currentColor\"/><path d=\"M3,4h0c.55,0,1,.45,1,1h0c0,.55-.45,1-1,1h0v-2h0Z\" transform=\"translate(7 10) rotate(180)\" fill=\"currentColor\"/><path d=\"M4.12,4.12h-.5c-.75-.62-.62-1.57-.62-2.37h0s.5-.26,1-.26,1,.5,1,.5c-.88,0-1-1-1-1h3c1.1,0,2,.9,2,2h.5s.25,.75-.12,1.25l-5.25-.12Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/AvatarWoman.ts\nvar AvatarWoman_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 13 16\"><path d=\"M4,10h5c1.66,0,3,1.34,3,3v2H1v-2c0-1.66,1.34-3,3-3Z\" fill=\"currentColor\"/><path d=\"M4,4h5v2.5c0,1.38-1.12,2.5-2.5,2.5h0c-1.38,0-2.5-1.12-2.5-2.5V4h0Z\" fill=\"currentColor\"/><path d=\"M9.5,3.93v-.43c0-1.1-.9-2-2-2h0l-.5-.5h-1.5c-1.1,0-2,.9-2,2v.93c0,1.33-.53,2.6-1.46,3.54l-.54,.54,.74,.37c.76,.38,1.67,.23,2.26-.37h4c.6,.6,1.51,.75,2.26,.37l.74-.37-.54-.54c-.94-.94-1.46-2.21-1.46-3.54Z\" fill=\"currentColor\"/><path d=\"M7,1s.5,0,.5,.5h-.5v-.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Bookmark.ts\nvar Bookmark_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M11.7,14.01c-.23,0-.45-.06-.66-.18l-3.29-1.94c-.16-.09-.35-.09-.51,0l-3.29,1.94c-.41,.24-.89,.24-1.3,.01-.41-.23-.65-.66-.65-1.13V3.49c0-.83,.67-1.5,1.5-1.5H11.5c.83,0,1.5,.67,1.5,1.5V12.71c0,.47-.24,.89-.65,1.13-.2,.12-.42,.17-.64,.17Zm-4.2-3.2c.26,0,.53,.07,.76,.21l3.29,1.94c.13,.08,.25,.03,.3,0,.05-.03,.15-.1,.15-.26V3.49c0-.28-.22-.5-.5-.5H3.5c-.28,0-.5,.22-.5,.5V12.71c0,.16,.1,.23,.15,.26,.05,.03,.16,.08,.3,0l3.29-1.94c.24-.14,.5-.21,.76-.21Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Check.ts\nvar Check_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 27\"><polygon fill=\"currentColor\" points=\"26.99 0 10.13 17.17 4.69 11.63 0 16.41 10.4 27 15.05 22.27 15.09 22.31 32 5.1 26.99 0\"/></svg>`;\n\n// packages/icons/src/icons/application/Circle.ts\nvar Circle_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><circle fill=\"currentColor\" cx=\"16\" cy=\"16\" r=\"16\"/></svg>`;\n\n// packages/icons/src/icons/application/Close.ts\nvar Close_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 16\"><path d=\"M10,12.5c-.13,0-.26-.05-.35-.15L1.65,4.35c-.2-.2-.2-.51,0-.71,.2-.2,.51-.2,.71,0L10.35,11.65c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/><path d=\"M2,12.5c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71L9.65,3.65c.2-.2,.51-.2,.71,0,.2,.2,.2,.51,0,.71L2.35,12.35c-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/DragHandle.ts\nvar DragHandle_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 46 80\"><path d=\"M0,72c0-4.4,3.6-8,8-8s8,3.6,8,8-3.6,8-8,8-8-3.6-8-8ZM0,40c0-4.4,3.6-8,8-8s8,3.6,8,8-3.6,8-8,8S0,44.4,0,40ZM0,8C0,3.6,3.6,0,8,0s8,3.6,8,8-3.6,8-8,8S0,12.4,0,8ZM30,72c0-4.4,3.6-8,8-8s8,3.6,8,8-3.6,8-8,8-8-3.6-8-8ZM30,40c0-4.4,3.6-8,8-8s8,3.6,8,8-3.6,8-8,8-8-3.6-8-8ZM30,8c0-4.4,3.6-8,8-8s8,3.6,8,8-3.6,8-8,8-8-3.6-8-8Z\"/></svg>`;\n\n// packages/icons/src/icons/application/Export.ts\nvar Export_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M7.5,14c-.28,0-.5-.22-.5-.5V5.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V13.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M10.5,9c-.13,0-.26-.05-.35-.15l-2.65-2.65-2.65,2.65c-.2,.2-.51,.2-.71,0s-.2-.51,0-.71l3-3c.2-.2,.51-.2,.71,0l3,3c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/><path d=\"M10.07,12.94c-.19,0-.37-.11-.45-.29-.11-.25,0-.55,.25-.66,1.91-.87,3.14-2.74,3.14-4.77,0-2.91-2.47-5.28-5.5-5.28S2,4.31,2,7.22c0,2.02,1.23,3.9,3.14,4.77,.25,.11,.36,.41,.25,.66-.11,.25-.41,.36-.66,.25-2.26-1.03-3.72-3.26-3.72-5.68C1,3.75,3.92,.94,7.5,.94s6.5,2.82,6.5,6.28c0,2.41-1.46,4.64-3.72,5.68-.07,.03-.14,.05-.21,.05Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Eye.ts\nvar Eye_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 13\"><path d=\"M8,11.5c-1.56,0-3.07-.61-4.5-1.8-1.17-.99-1.99-2.13-2.37-2.73-.18-.29-.18-.64,0-.93,.38-.6,1.2-1.75,2.37-2.73,2.84-2.39,6.15-2.39,8.99,0,1.17,.99,1.99,2.13,2.37,2.73,.18,.29,.18,.64,0,.93-.38,.6-1.2,1.75-2.37,2.73-1.42,1.2-2.93,1.8-4.5,1.8ZM2.03,6.5c.37,.57,1.1,1.57,2.12,2.43,2.47,2.08,5.23,2.08,7.7,0,1.02-.86,1.75-1.87,2.12-2.43-.37-.57-1.1-1.57-2.12-2.43-2.47-2.08-5.23-2.08-7.7,0-1.02,.86-1.75,1.87-2.12,2.43Z\" fill=\"currentColor\"/><path d=\"M8,9c-1.38,0-2.5-1.12-2.5-2.5s1.12-2.5,2.5-2.5,2.5,1.12,2.5,2.5-1.12,2.5-2.5,2.5Zm0-4c-.83,0-1.5,.67-1.5,1.5s.67,1.5,1.5,1.5,1.5-.67,1.5-1.5-.67-1.5-1.5-1.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/EyeClosed.ts\nvar EyeClosed_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,11c-1.65,0-3-1.35-3-3s1.35-3,3-3,3,1.35,3,3-1.35,3-3,3Zm0-5c-1.1,0-2,.9-2,2s.9,2,2,2,2-.9,2-2-.9-2-2-2Z\" fill=\"currentColor\"/><path d=\"M8,13c-3.19,0-5.99-1.94-6.97-4.84-.04-.1-.04-.22,0-.32,.98-2.89,3.79-4.84,6.97-4.84s5.99,1.94,6.97,4.84c.04,.1,.04,.22,0,.32-.98,2.89-3.79,4.84-6.97,4.84ZM2.03,8c.89,2.4,3.27,4,5.97,4s5.07-1.6,5.97-4c-.89-2.4-3.27-4-5.97-4s-5.07,1.6-5.97,4Z\" fill=\"currentColor\"/><path d=\"M14,14.5c-.13,0-.26-.05-.35-.15L1.65,2.35c-.2-.2-.2-.51,0-.71,.2-.2,.51-.2,.71,0L14.35,13.65c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Flag.ts\nvar Flag_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 13 16\"><path d=\"M11.36,10H1.5c-.28,0-.5-.22-.5-.5V2.5c0-.28,.22-.5,.5-.5H11.36c.19,0,.42,.14,.51,.31,.1,.19,.08,.42-.04,.59l-2.21,3.09,2.21,3.09c.11,.15,.13,.43,.04,.59-.1,.19-.29,.31-.51,.31Zm-9.36-1H10.53l-1.9-2.67c-.12-.17-.12-.49,0-.67l1.9-2.67H2v6Z\" fill=\"currentColor\"/><path d=\"M1.5,14c-.28,0-.5-.22-.5-.5V4.12c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V13.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Happy.ts\nvar Happy_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><circle cx=\"6\" cy=\"6\" r=\"1\" fill=\"currentColor\"/><circle cx=\"10\" cy=\"6\" r=\"1\" fill=\"currentColor\"/><path d=\"M8,15c-3.86,0-7-3.14-7-7S4.14,1,8,1s7,3.14,7,7-3.14,7-7,7Zm0-13c-3.31,0-6,2.69-6,6s2.69,6,6,6,6-2.69,6-6-2.69-6-6-6Z\" fill=\"currentColor\"/><path d=\"M8,11.5c-1.48,0-2.81-.94-3.3-2.33-.09-.26,.04-.55,.3-.64,.26-.09,.55,.04,.64,.3,.35,1,1.3,1.67,2.36,1.67s2.01-.67,2.36-1.67c.09-.26,.38-.4,.64-.3,.26,.09,.4,.38,.3,.64-.49,1.4-1.82,2.33-3.3,2.33Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Heart.ts\nvar Heart_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M7.5,14c-.2,0-.4-.08-.56-.23-1.06-1.04-4.58-4.59-5.49-6.34-.63-1.2-.59-2.7,.09-3.83,.61-1.01,1.67-1.59,2.9-1.59,1.56,0,2.53,.81,3.06,1.63,.53-.82,1.5-1.63,3.06-1.63,1.23,0,2.29,.58,2.9,1.59,.68,1.13,.72,2.63,.09,3.83-.92,1.76-4.43,5.3-5.49,6.34-.16,.16-.36,.23-.56,.23ZM4.44,3c-.88,0-1.61,.39-2.04,1.11-.51,.83-.53,1.95-.06,2.85,.66,1.26,3.07,3.88,5.17,5.96,2.09-2.08,4.51-4.69,5.17-5.96,.47-.9,.44-2.02-.06-2.85-.43-.72-1.16-1.11-2.04-1.11-2.12,0-2.55,1.9-2.57,1.98h-.98c-.02-.08-.47-1.98-2.57-1.98Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Help.ts\nvar Help_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,15c-3.86,0-7-3.14-7-7S4.14,1,8,1s7,3.14,7,7-3.14,7-7,7Zm0-13c-3.31,0-6,2.69-6,6s2.69,6,6,6,6-2.69,6-6-2.69-6-6-6Z\" fill=\"currentColor\"/><path d=\"M8,4.5c-1.11,0-2,.89-2,2h1c0-.55,.45-1,1-1s1,.45,1,1c0,1-1.5,.88-1.5,2.5h1c0-1.12,1.5-1.25,1.5-2.5,0-1.11-.89-2-2-2Z\" fill=\"currentColor\"/><circle cx=\"8\" cy=\"11\" r=\".62\" fill=\"currentColor\"/><circle cx=\"6.5\" cy=\"6.5\" r=\".5\" fill=\"currentColor\"/><circle cx=\"8\" cy=\"9\" r=\".5\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Info.ts\nvar Info_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,15c-3.86,0-7-3.14-7-7S4.14,1,8,1s7,3.14,7,7-3.14,7-7,7Zm0-13c-3.31,0-6,2.69-6,6s2.69,6,6,6,6-2.69,6-6-2.69-6-6-6Z\" fill=\"currentColor\"/><circle cx=\"8\" cy=\"6\" r=\".75\" fill=\"currentColor\"/><path d=\"M8,12c-.28,0-.5-.22-.5-.5v-3c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v3c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/LinkExternal.ts\nvar LinkExternal_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M6.01,10.49c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71L14.15,1.15c.2-.2,.51-.2,.71,0,.2,.2,.2,.51,0,.71L6.36,10.34c-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/><path d=\"M14.5,7c-.28,0-.5-.22-.5-.5V2h-4.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h5c.28,0,.5,.22,.5,.5V6.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M11.5,15H2.49c-.82,0-1.49-.67-1.49-1.49V4.49c0-.82,.67-1.49,1.49-1.49H7.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5H2.49c-.27,0-.49,.22-.49,.49V13.51c0,.27,.22,.49,.49,.49H11.5c.27,0,.49-.22,.49-.49v-5.01c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v5.01c0,.82-.67,1.49-1.49,1.49Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Link.ts\nvar Link_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 12\"><path d=\"M4.12,11c-.84,0-1.62-.32-2.2-.91-1.22-1.22-1.21-3.19,0-4.4l2.77-2.77c1.21-1.21,3.19-1.21,4.4,0,1.22,1.22,1.22,3.19,0,4.4-.2,.2-.51,.2-.71,0-.2-.2-.2-.51,0-.71,.82-.82,.82-2.16,0-2.99-.83-.83-2.17-.83-2.99,0l-2.77,2.77c-.82,.82-.83,2.16,0,2.99,.4,.4,.92,.63,1.5,.62,.56,0,1.09-.22,1.49-.62,.2-.2,.51-.2,.71,0,.2,.2,.2,.51,0,.71-.59,.59-1.37,.91-2.2,.91Z\" fill=\"currentColor\"/><path d=\"M9.14,9.97c-.83,0-1.62-.32-2.2-.91-1.22-1.22-1.21-3.19,0-4.4,.2-.2,.51-.19,.71,0,.2,.2,.19,.51,0,.71-.82,.82-.83,2.16,0,2.99,.4,.4,.95,.63,1.5,.62,.56,0,1.09-.22,1.49-.62l2.75-2.75c.4-.4,.62-.93,.62-1.49s-.22-1.1-.62-1.49c-.83-.83-2.17-.83-2.99,0-.2,.2-.51,.19-.71,0-.2-.2-.19-.51,0-.71,1.21-1.21,3.19-1.21,4.4,0,.59,.59,.91,1.37,.91,2.2s-.32,1.61-.91,2.2l-2.75,2.75c-.59,.59-1.37,.91-2.2,.91Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Megaphone.ts\nvar Megaphone_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M8.5,12.46c-.15,0-.3-.02-.45-.07l-6-1.87c-.63-.2-1.05-.77-1.05-1.43v-3.53c0-.66,.42-1.23,1.05-1.43l6-1.87c.46-.14,.95-.06,1.34,.22,.39,.29,.61,.73,.61,1.21v7.28c0,.48-.22,.92-.61,1.21-.26,.19-.57,.29-.88,.29Zm0-9.28c-.05,0-.1,0-.15,.02l-6,1.88c-.21,.07-.35,.26-.35,.48v3.53c0,.22,.14,.41,.35,.48l6,1.87c.15,.05,.32,.02,.45-.07,.13-.1,.2-.24,.2-.4V3.68c0-.16-.07-.31-.2-.4-.09-.06-.19-.1-.29-.1Z\" fill=\"currentColor\"/><path d=\"M13.5,8h-2c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h2c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M11,6.5c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71l1.5-1.5c.2-.2,.51-.2,.71,0,.2,.2,.2,.51,0,.71l-1.5,1.5c-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/><path d=\"M12.5,11c-.13,0-.26-.05-.35-.15l-1.5-1.5c-.2-.2-.2-.51,0-.71,.2-.2,.51-.2,.71,0l1.5,1.5c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/><path d=\"M4,13.82c-1.1,0-2-.9-2-2v-1.62h1v1.62c0,.55,.45,1,1,1s1-.45,1-1v-.4h1v.4c0,1.1-.9,2-2,2Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Open.ts\nvar Open_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 11\"><path d=\"M12.5,3H3.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5H12.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M12.5,6H3.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5H12.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M12.5,9H3.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5H12.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/People.ts\nvar People_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M7.5,7c-1.38,0-2.5-1.12-2.5-2.5s1.12-2.5,2.5-2.5,2.5,1.12,2.5,2.5-1.12,2.5-2.5,2.5Zm0-4c-.83,0-1.5,.67-1.5,1.5s.67,1.5,1.5,1.5,1.5-.67,1.5-1.5-.67-1.5-1.5-1.5Z\" fill=\"currentColor\"/><path d=\"M13.5,11c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5,.5-.22,.5-.5c0-1.38-1.12-2.5-2.5-2.5h-1c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5c.83,0,1.5-.67,1.5-1.5s-.67-1.5-1.5-1.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5c1.38,0,2.5,1.12,2.5,2.5,0,.62-.22,1.18-.6,1.62,1.49,.4,2.6,1.76,2.6,3.38,0,.83-.67,1.5-1.5,1.5Z\" fill=\"currentColor\"/><path d=\"M1.5,11c-.83,0-1.5-.67-1.5-1.5,0-1.62,1.1-2.98,2.6-3.38-.37-.44-.6-1-.6-1.62,0-1.38,1.12-2.5,2.5-2.5,.28,0,.5,.22,.5,.5s-.22,.5-.5,.5c-.83,0-1.5,.67-1.5,1.5s.67,1.5,1.5,1.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5h-1c-1.38,0-2.5,1.12-2.5,2.5,0,.28,.22,.5,.5,.5s.5,.22,.5,.5-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M10.5,14H4.5c-.83,0-1.5-.67-1.5-1.5v-1c0-1.93,1.57-3.5,3.5-3.5h2c1.93,0,3.5,1.57,3.5,3.5v1c0,.83-.67,1.5-1.5,1.5Zm-4-5c-1.38,0-2.5,1.12-2.5,2.5v1c0,.28,.22,.5,.5,.5h6c.28,0,.5-.22,.5-.5v-1c0-1.38-1.12-2.5-2.5-2.5h-2Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Refresh.ts\nvar Refresh_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 14 16\"><path d=\"M12.5,6.68h-3.68c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h3.18V2.49c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v3.68c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M7,14.01c-3.31,0-6-2.69-6-6S3.69,2.01,7,2.01c2.34,0,4.48,1.37,5.46,3.5,.12,.25,0,.55-.25,.66-.25,.12-.55,0-.66-.25-.81-1.77-2.6-2.92-4.55-2.92-2.76,0-5,2.24-5,5s2.24,5,5,5,5-2.24,5-5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5c0,3.31-2.69,6-6,6Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Reorder.ts\nvar Reorder_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 7 16\"><circle cx=\"3.5\" cy=\"3.5\" r=\"1.5\" fill=\"currentColor\"/><circle cx=\"3.5\" cy=\"8.5\" r=\"1.5\" fill=\"currentColor\"/><circle cx=\"3.5\" cy=\"13.5\" r=\"1.5\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Reply.ts\nvar Reply_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M6,12.5c-.13,0-.26-.05-.35-.15L1.15,7.85c-.09-.09-.15-.22-.15-.35s.05-.26,.15-.35L5.65,2.65c.2-.2,.51-.2,.71,0,.2,.2,.2,.51,0,.71L2.21,7.5l4.15,4.15c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/><path d=\"M13.5,14c-.28,0-.5-.22-.5-.5v-3c0-1.38-1.12-2.5-2.5-2.5H2.7c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h7.8c1.93,0,3.5,1.57,3.5,3.5v3c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Sad.ts\nvar Sad_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><circle cx=\"6\" cy=\"6\" r=\"1\" fill=\"currentColor\"/><circle cx=\"10\" cy=\"6\" r=\"1\" fill=\"currentColor\"/><path d=\"M8,15c-3.86,0-7-3.14-7-7S4.14,1,8,1s7,3.14,7,7-3.14,7-7,7Zm0-13c-3.31,0-6,2.69-6,6s2.69,6,6,6,6-2.69,6-6-2.69-6-6-6Z\" fill=\"currentColor\"/><path d=\"M10.83,11.5c-.21,0-.4-.13-.47-.33-.35-1-1.3-1.67-2.36-1.67s-2.01,.67-2.36,1.67c-.09,.26-.38,.4-.64,.3-.26-.09-.4-.38-.3-.64,.49-1.4,1.82-2.33,3.3-2.33s2.81,.94,3.3,2.33c.09,.26-.04,.55-.3,.64-.06,.02-.11,.03-.17,.03Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Search.ts\nvar Search_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M6.5,13.02c-1.41,0-2.82-.54-3.89-1.61-1.04-1.04-1.61-2.42-1.61-3.89s.57-2.85,1.61-3.89c2.14-2.14,5.63-2.14,7.78,0,1.04,1.04,1.61,2.42,1.61,3.89s-.57,2.85-1.61,3.89c-1.07,1.07-2.48,1.61-3.89,1.61Zm0-10c-1.15,0-2.3,.44-3.18,1.32-.85,.85-1.32,1.98-1.32,3.18s.47,2.33,1.32,3.18c1.75,1.75,4.61,1.75,6.36,0,.85-.85,1.32-1.98,1.32-3.18s-.47-2.33-1.32-3.18c-.88-.88-2.03-1.32-3.18-1.32Z\" fill=\"currentColor\"/><path d=\"M13.5,15c-.13,0-.26-.05-.35-.15l-3.38-3.38c-.2-.2-.2-.51,0-.71,.2-.2,.51-.2,.71,0l3.38,3.38c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Settings.ts\nvar Settings_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,10.5c-1.38,0-2.5-1.12-2.5-2.5s1.12-2.5,2.5-2.5,2.5,1.12,2.5,2.5-1.12,2.5-2.5,2.5Zm0-4c-.83,0-1.5,.67-1.5,1.5s.67,1.5,1.5,1.5,1.5-.67,1.5-1.5-.67-1.5-1.5-1.5Z\" fill=\"currentColor\"/><path d=\"M8.85,15h-1.7c-.32,0-.6-.22-.67-.53l-.41-1.79-1.56,.98c-.27,.17-.62,.13-.85-.1l-1.2-1.2c-.23-.23-.27-.58-.1-.85l.98-1.56-1.79-.41c-.31-.07-.53-.35-.53-.67v-1.7c0-.32,.22-.6,.53-.67l1.79-.41-.98-1.56c-.17-.27-.13-.62,.1-.85l1.2-1.2c.23-.23,.58-.27,.85-.1l1.56,.98,.41-1.79c.07-.31,.35-.53,.67-.53h1.7c.32,0,.6,.22,.67,.53l.41,1.79,1.56-.98c.27-.17,.62-.13,.85,.1l1.2,1.2c.23,.23,.27,.58,.1,.85l-.98,1.56,1.79,.41c.31,.07,.53,.35,.53,.67v1.7c0,.32-.22,.6-.53,.67l-1.79,.41,.98,1.56c.17,.27,.13,.62-.1,.85l-1.2,1.2c-.23,.23-.58,.27-.85,.1l-1.56-.98-.41,1.79c-.07,.31-.35,.53-.67,.53Zm-1.45-1h1.2l.67-2.92,2.54,1.59,.85-.85-1.59-2.54,2.92-.67v-1.2l-2.92-.67,1.59-2.54-.85-.85-2.54,1.59-.67-2.92h-1.2l-.67,2.92-2.54-1.59-.85,.85,1.59,2.54-2.92,.67v1.2l2.92,.67-1.59,2.54,.85,.85,2.54-1.59,.67,2.92Zm6.84-6.55h0Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Share.ts\nvar Share_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M7.5,10c-.28,0-.5-.22-.5-.5V1.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V9.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M9.5,4c-.13,0-.26-.05-.35-.15l-1.65-1.65-1.65,1.65c-.2,.2-.51,.2-.71,0-.2-.2-.2-.51,0-.71L7.15,1.15c.2-.2,.51-.2,.71,0l2,2c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/><path d=\"M12.5,15H2.5c-.83,0-1.5-.67-1.5-1.5V6.5c0-.83,.67-1.5,1.5-1.5h2c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5H2.5c-.28,0-.5,.22-.5,.5v7c0,.28,.22,.5,.5,.5H12.5c.28,0,.5-.22,.5-.5V6.5c0-.28-.22-.5-.5-.5h-2c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h2c.83,0,1.5,.67,1.5,1.5v7c0,.83-.67,1.5-1.5,1.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Spinner.ts\nvar Spinner_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 15\"><path fill=\"currentColor\" d=\"M7.56,13.88c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5c2.96,0,5.38-2.41,5.38-5.38S10.53,2.12,7.56,2.12c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5c3.52,0,6.38,2.86,6.38,6.38s-2.86,6.38-6.38,6.38Z\"/></svg>`;\n\n// packages/icons/src/icons/application/Star.ts\nvar Star_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 15\"><path fill=\"currentColor\" d=\"M11.41,8.41h0l1.14-.93,1.14-.93c.48-.39,.37-.74-.25-.77l-1.58-.09-2.5-.14-.41-1.05s0,0,0,0l-.53-1.38-.53-1.38c-.22-.58-.59-.58-.81,0l-1.07,2.75s0,0,0,0l-.41,1.05-2.5,.14-1.58,.09c-.62,.03-.73,.38-.25,.77l1.14,.93,1.14,.93h0l.87,.71-.57,2.15-.47,1.79c-.16,.6,.14,.81,.66,.48l2.48-1.6h0s.94-.61,.94-.61l.94,.61h0s1.24,.8,1.24,.8l1.24,.8c.52,.33,.82,.12,.66-.48l-.47-1.79-.57-2.15,.87-.71Z\"/></svg>`;\n\n// packages/icons/src/icons/application/Start.ts\nvar Start_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M7.5,10c-.28,0-.5-.22-.5-.5V2.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v7c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M7.5,15c-3.58,0-6.5-2.82-6.5-6.28,0-2.41,1.46-4.64,3.72-5.68,.25-.11,.55,0,.66,.25,.11,.25,0,.55-.25,.66-1.91,.87-3.14,2.74-3.14,4.77,0,2.91,2.47,5.28,5.5,5.28s5.5-2.37,5.5-5.28c0-2.02-1.23-3.9-3.14-4.77-.25-.11-.36-.41-.25-.66,.11-.25,.41-.36,.66-.25,2.26,1.03,3.72,3.26,3.72,5.68,0,3.46-2.92,6.28-6.5,6.28Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Tag.ts\nvar Tag_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M8.07,15.03c-.4,0-.77-.16-1.05-.44L1.41,8.99c-.28-.28-.44-.66-.44-1.05s.16-.77,.44-1.05L5.86,2.43c.28-.28,.66-.44,1.05-.44h4.2c.77,0,1.5,.3,2.04,.85,.55,.55,.85,1.27,.85,2.04v4.2c0,.4-.16,.77-.44,1.05l-4.45,4.45c-.28,.28-.66,.44-1.05,.44ZM6.92,2.99c-.13,0-.25,.05-.35,.14L2.12,7.59c-.09,.09-.14,.22-.14,.35s.05,.25,.14,.35l5.6,5.6c.19,.19,.5,.19,.69,0l4.45-4.45c.09-.09,.14-.22,.14-.35V4.89c0-.51-.2-.98-.55-1.34-.36-.36-.83-.55-1.34-.55H6.92Z\" fill=\"currentColor\"/><circle cx=\"10\" cy=\"6\" r=\".99\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Tools.ts\nvar Tools_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M5.09,15.07H2.5c-.83,0-1.5-.67-1.5-1.5v-2.59c0-.4,.16-.78,.44-1.06l2.21-2.21c.2-.2,.51-.2,.71,0s.2,.51,0,.71l-2.21,2.21c-.09,.09-.15,.22-.15,.35v2.59c0,.28,.22,.5,.5,.5h2.59c.13,0,.26-.05,.35-.15l2.21-2.21c.2-.2,.51-.2,.71,0,.2,.2,.2,.51,0,.71l-2.21,2.21c-.28,.28-.66,.44-1.06,.44Z\" fill=\"currentColor\"/><path d=\"M12.12,8.45c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71l2.1-2.1c.19-.19,.19-.51,0-.71l-2.59-2.59c-.19-.19-.52-.19-.71,0l-2.16,2.16c-.2,.2-.51,.2-.71,0-.2-.2-.2-.51,0-.71l2.16-2.16c.57-.57,1.55-.57,2.12,0l2.59,2.59c.58,.58,.58,1.54,0,2.12l-2.1,2.1c-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/><path d=\"M10.9,15.06c-.4,0-.78-.16-1.06-.44l-2.19-2.19c-.2-.2-.2-.51,0-.71,.2-.2,.51-.2,.71,0l2.19,2.19c.19,.19,.52,.19,.71,0l2.59-2.59c.19-.19,.19-.51,0-.71l-2.19-2.19c-.2-.2-.2-.51,0-.71,.2-.2,.51-.2,.71,0l2.19,2.19c.58,.58,.58,1.54,0,2.12l-2.59,2.59c-.28,.28-.66,.44-1.06,.44Z\" fill=\"currentColor\"/><path d=\"M8.25,12.82c-.13,0-.26-.05-.35-.15L1.36,6.14c-.58-.58-.58-1.54,0-2.12L3.95,1.43c.57-.57,1.55-.57,2.12,0l6.54,6.54c.2,.2,.2,.51,0,.71-.2,.2-.51,.2-.71,0L5.36,2.14c-.19-.19-.52-.19-.71,0l-2.59,2.59c-.19,.19-.19,.51,0,.71l6.54,6.54c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/><path d=\"M5.56,6.01c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71l1.94-1.94c.2-.2,.51-.2,.71,0,.2,.2,.2,.51,0,.71l-1.94,1.94c-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/><path d=\"M7.59,8.04c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71l1.94-1.94c.2-.2,.51-.2,.71,0,.2,.2,.2,.51,0,.71l-1.94,1.94c-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/><path d=\"M9.62,10.07c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71l1.94-1.94c.2-.2,.51-.2,.71,0,.2,.2,.2,.51,0,.71l-1.94,1.94c-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Trash.ts\nvar Trash_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M14.5,4H1.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5H14.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M11.02,3.81l-.44-1.46c-.06-.21-.26-.36-.48-.36H5.9c-.22,0-.41,.14-.48,.36l-.44,1.46-.96-.29,.44-1.46c.19-.64,.77-1.07,1.44-1.07h4.2c.67,0,1.24,.43,1.44,1.07l.44,1.46-.96,.29Z\" fill=\"currentColor\"/><path d=\"M11.53,15H4.47c-.81,0-1.47-.64-1.5-1.45l-.34-9.87,1-.03,.34,9.87c0,.27,.23,.48,.5,.48h7.07c.27,0,.49-.21,.5-.48l.34-9.87,1,.03-.34,9.87c-.03,.81-.69,1.45-1.5,1.45Z\" fill=\"currentColor\"/><path d=\"M6.5,11.62c-.28,0-.5-.22-.5-.5V7.12c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v4c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M9.5,11.62c-.28,0-.5-.22-.5-.5V7.12c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v4c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/VolumeDown.ts\nvar VolumeDown_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 13\"><path d=\"M7.5,11.46c-.33,0-.65-.11-.92-.32l-2.75-2.14h-1.33c-.83,0-1.5-.67-1.5-1.5v-2c0-.83,.67-1.5,1.5-1.5h1.33L6.58,1.86c.46-.35,1.06-.42,1.58-.16,.52,.25,.84,.77,.84,1.35v6.91c0,.58-.32,1.09-.84,1.35-.21,.1-.44,.15-.66,.15ZM2.5,5c-.28,0-.5,.22-.5,.5v2c0,.28,.22,.5,.5,.5h1.5c.11,0,.22,.04,.31,.11l2.89,2.24c.15,.12,.35,.14,.53,.05,.18-.09,.28-.25,.28-.45V3.04c0-.2-.1-.36-.28-.45-.18-.09-.37-.07-.53,.05l-2.89,2.24c-.09,.07-.2,.11-.31,.11h-1.5Z\" fill=\"currentColor\"/><path d=\"M14.5,7h-4c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h4c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/VolumeUp.ts\nvar VolumeUp_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 13\"><path d=\"M7.5,11.5c-.33,0-.65-.11-.92-.32l-2.75-2.14h-1.33c-.83,0-1.5-.67-1.5-1.5v-2c0-.83,.67-1.5,1.5-1.5h1.33L6.58,1.9c.46-.35,1.06-.42,1.58-.16,.52,.25,.84,.77,.84,1.35v6.91c0,.58-.32,1.09-.84,1.35-.21,.1-.44,.15-.66,.15ZM2.5,5.04c-.28,0-.5,.22-.5,.5v2c0,.28,.22,.5,.5,.5h1.5c.11,0,.22,.04,.31,.11l2.89,2.24c.15,.12,.35,.14,.53,.05,.18-.09,.28-.25,.28-.45V3.09c0-.2-.1-.36-.28-.45-.18-.09-.37-.07-.53,.05l-2.89,2.24c-.09,.07-.2,.11-.31,.11h-1.5Z\" fill=\"currentColor\"/><path d=\"M12.5,9.04c-.28,0-.5-.22-.5-.5V4.54c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v4c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M14.5,7.04h-4c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h4c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Warning.ts\nvar Warning_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M13.38,15H2.62c-.56,0-1.07-.28-1.36-.76s-.32-1.06-.07-1.56l.45,.22-.45-.22L6.57,1.89c.27-.55,.82-.89,1.43-.89s1.16,.34,1.43,.89l5.38,10.8c.25,.5,.22,1.08-.07,1.56-.29,.48-.8,.76-1.36,.76ZM8,2c-.23,0-.43,.12-.54,.33L2.08,13.13c-.1,.19-.09,.4,.03,.59,.11,.18,.3,.29,.51,.29H13.38c.21,0,.4-.1,.51-.29,.11-.18,.12-.39,.03-.59L8.54,2.33c-.1-.21-.31-.33-.54-.33Z\" fill=\"currentColor\"/><circle cx=\"8\" cy=\"11\" r=\".62\" fill=\"currentColor\"/><path d=\"M8,9.12c-.28,0-.5-.22-.5-.5v-3c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v3c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Compress.ts\nvar Compress_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 15\"><path d=\"M8,5.09c-.38,0-.77-.15-1.06-.44L4.15,1.85c-.2-.2-.2-.51,0-.71s.51-.2,.71,0l2.79,2.79c.19,.19,.51,.19,.71,0l2.79-2.79c.2-.2,.51-.2,.71,0,.2,.2,.2,.51,0,.71l-2.79,2.79c-.29,.29-.68,.44-1.06,.44Z\" fill=\"currentColor\"/><path d=\"M11.5,14c-.13,0-.26-.05-.35-.15l-2.79-2.79c-.19-.19-.52-.19-.71,0l-2.79,2.79c-.2,.2-.51,.2-.71,0s-.2-.51,0-.71l2.79-2.79c.57-.57,1.55-.57,2.12,0l2.79,2.79c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/><path d=\"M13.5,8H2.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5H13.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Expand.ts\nvar Expand_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M6,7c-.13,0-.26-.05-.35-.15L1.15,2.35c-.2-.2-.2-.51,0-.71s.51-.2,.71,0L6.35,6.15c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/><path d=\"M1.56,14.44c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71l4.44-4.44c.2-.2,.51-.2,.71,0s.2,.51,0,.71L1.92,14.29c-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/><path d=\"M14.31,14.31c-.13,0-.26-.05-.35-.15l-4.31-4.31c-.2-.2-.2-.51,0-.71s.51-.2,.71,0l4.31,4.31c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/><path d=\"M1,6.33c-.28,0-.5-.22-.5-.5V2.5c0-.83,.67-1.5,1.5-1.5h3.67c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5H2c-.28,0-.5,.22-.5,.5v3.33c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M5.33,15H2c-.83,0-1.5-.67-1.5-1.5v-3.67c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v3.67c0,.28,.22,.5,.5,.5h3.33c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M14,15h-3.67c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h3.67c.28,0,.5-.22,.5-.5v-3.33c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v3.33c0,.83-.67,1.5-1.5,1.5Z\" fill=\"currentColor\"/><path d=\"M15,6.67c-.28,0-.5-.22-.5-.5V2.5c0-.28-.22-.5-.5-.5h-3.33c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h3.33c.83,0,1.5,.67,1.5,1.5v3.67c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M10,7c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71L14.15,1.65c.2-.2,.51-.2,.71,0s.2,.51,0,.71l-4.5,4.5c-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/FastForward.ts\nvar FastForward_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 12\"><path d=\"M3.09,11.01c-.18,0-.36-.05-.53-.14-.35-.19-.57-.56-.57-.96V2.09c0-.4,.22-.77,.57-.96,.35-.19,.78-.18,1.12,.03l3.03,1.92c.23,.15,.3,.46,.15,.69-.15,.23-.46,.3-.69,.15l-3.03-1.92s-.07-.02-.1,0-.05,.05-.05,.09v7.82s.02,.07,.05,.09c.03,.02,.07,.02,.1,0l3.03-1.92c.23-.15,.54-.08,.69,.15,.15,.23,.08,.54-.15,.69l-3.03,1.92c-.18,.11-.38,.17-.59,.17Z\" fill=\"currentColor\"/><path d=\"M7.04,10.98c-.18,0-.36-.04-.52-.13-.36-.19-.58-.56-.58-.97V2.11c0-.41,.22-.78,.58-.97,.36-.19,.79-.17,1.13,.05l5.87,3.89c.31,.2,.49,.55,.49,.92,0,.37-.18,.71-.49,.92l-5.87,3.89c-.18,.12-.39,.18-.61,.18Zm0-8.97s-.03,0-.05,.01c-.03,.02-.05,.05-.05,.09v7.77s.02,.07,.05,.09c.03,.02,.07,.02,.1,0l5.87-3.89,.28-.58-.28,.42L7.09,2.03s-.04-.02-.05-.02Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Minimize.ts\nvar Minimize_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 14 16\"><path d=\"M5.5,10c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71L11.65,2.65c.2-.2,.51-.2,.71,0,.2,.2,.2,.51,0,.71l-6.5,6.5c-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/><path d=\"M9.5,10H5.5c-.28,0-.5-.22-.5-.5v-4c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v3.5h3.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M11.5,14H2.5c-.83,0-1.5-.67-1.5-1.5V3.5c0-.83,.67-1.5,1.5-1.5H7.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5H2.5c-.28,0-.5,.22-.5,.5V12.5c0,.28,.22,.5,.5,.5H11.5c.28,0,.5-.22,.5-.5V7.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v5c0,.83-.67,1.5-1.5,1.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Pause.ts\nvar Pause_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9.12 16\"><path d=\"M1.62,13c-.28,0-.5-.22-.5-.5V3.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V12.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M7.62,13c-.28,0-.5-.22-.5-.5V3.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V12.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/PlayCircle.ts\nvar PlayCircle_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M9.89,7.79l-3-2c-.16-.11-.39,0-.39,.21v4c0,.2,.22,.32,.39,.21l3-2c.15-.1,.15-.31,0-.41Z\" fill=\"currentColor\"/><path d=\"M8,15c-3.86,0-7-3.14-7-7S4.14,1,8,1s7,3.14,7,7-3.14,7-7,7Zm0-13c-3.31,0-6,2.69-6,6s2.69,6,6,6,6-2.69,6-6-2.69-6-6-6Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Play.ts\nvar Play_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 11 16\"><path d=\"M2.5,13.62c-.24,0-.47-.06-.69-.17-.5-.26-.81-.77-.81-1.33V3.98c0-.56,.31-1.07,.81-1.33,.5-.26,1.1-.22,1.56,.11l5.77,4.07c.4,.28,.63,.74,.63,1.23s-.24,.94-.63,1.23L3.37,13.35c-.26,.18-.56,.28-.86,.28Zm0-10.14c-.08,0-.16,.02-.23,.06-.17,.09-.27,.25-.27,.44V12.12c0,.19,.1,.36,.27,.44,.17,.09,.36,.07,.52-.04l5.77-4.07c.13-.09,.21-.24,.21-.41s-.08-.31-.21-.41L2.79,3.57c-.09-.06-.19-.09-.29-.09Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Rewind.ts\nvar Rewind_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 12\"><path d=\"M12.91,11.01c-.2,0-.41-.06-.59-.17l-3.03-1.92c-.23-.15-.3-.46-.15-.69,.15-.23,.46-.3,.69-.15l3.03,1.92s.07,.02,.1,0,.05-.05,.05-.09V2.09s-.02-.07-.05-.09c-.03-.02-.07-.02-.1,0l-3.03,1.92c-.23,.15-.54,.08-.69-.15-.15-.23-.08-.54,.15-.69l3.03-1.92c.34-.21,.77-.23,1.12-.03,.35,.19,.57,.56,.57,.96v7.82c0,.4-.22,.77-.57,.96-.17,.09-.35,.14-.53,.14Z\" fill=\"currentColor\"/><path d=\"M8.96,10.98c-.21,0-.42-.06-.61-.18L2.49,6.92c-.31-.2-.49-.55-.49-.92,0-.37,.18-.71,.49-.92L8.36,1.2c.34-.22,.77-.24,1.13-.05,.36,.19,.58,.56,.58,.97v7.77c0,.41-.22,.78-.58,.97-.16,.09-.34,.13-.52,.13ZM2.76,5.5l.28,.42s-.04,.06-.04,.08l5.92,3.97s.07,.02,.1,0c.03-.02,.05-.05,.05-.09V2.11s-.02-.07-.05-.09c-.03-.02-.07-.02-.1,0L3.04,5.92l-.28-.42Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/StepBack.ts\nvar StepBack_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 13 16\"><path d=\"M10.5,12.7c-.27,0-.55-.08-.79-.23l-5.11-3.2c-.44-.28-.71-.75-.71-1.27s.26-1,.71-1.27l.26,.42-.26-.42,5.11-3.2c.47-.29,1.04-.31,1.52-.04,.48,.27,.77,.76,.77,1.31v6.39c0,.55-.29,1.04-.77,1.31-.23,.13-.48,.19-.73,.19Zm0-8.4c-.08,0-.17,.02-.26,.08l-5.11,3.2c-.21,.13-.24,.34-.24,.42s.02,.29,.24,.42l5.11,3.2c.23,.14,.43,.06,.51,.01,.08-.04,.26-.17,.26-.44V4.8c0-.27-.18-.39-.26-.44-.05-.03-.13-.06-.25-.06Z\" fill=\"currentColor\"/><path d=\"M1.5,12.5c-.28,0-.5-.22-.5-.5V4c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V12c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/StepForward.ts\nvar StepForward_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 13 16\"><path d=\"M2.5,12.7c-.25,0-.5-.06-.73-.19-.48-.27-.77-.76-.77-1.31V4.8c0-.55,.29-1.04,.77-1.31,.48-.27,1.05-.25,1.52,.04l5.11,3.2c.44,.28,.71,.75,.71,1.27s-.26,1-.71,1.27l-5.11,3.2c-.25,.15-.52,.23-.79,.23Zm0-8.4c-.11,0-.2,.04-.25,.06-.08,.04-.26,.17-.26,.44v6.39c0,.27,.18,.39,.26,.44,.08,.04,.28,.13,.51-.01l5.11-3.2c.21-.13,.24-.34,.24-.42s-.02-.29-.24-.42L2.76,4.38c-.09-.06-.18-.08-.26-.08Z\" fill=\"currentColor\"/><path d=\"M11.5,12.5c-.28,0-.5-.22-.5-.5V4c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V12c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/application/Stop.ts\nvar Stop_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M12.5,14H3.5c-.83,0-1.5-.67-1.5-1.5V3.5c0-.83,.67-1.5,1.5-1.5H12.5c.83,0,1.5,.67,1.5,1.5V12.5c0,.83-.67,1.5-1.5,1.5ZM3.5,3c-.28,0-.5,.22-.5,.5V12.5c0,.28,.22,.5,.5,.5H12.5c.28,0,.5-.22,.5-.5V3.5c0-.28-.22-.5-.5-.5H3.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/brand/index.ts\nvar brand_exports = {};\n__export(brand_exports, {\n  android: () => Android_default,\n  apple: () => Apple_default,\n  facebook: () => Facebook_default,\n  github: () => Github_default,\n  google: () => Google_default,\n  instagram: () => Instagram_default,\n  linkedin: () => Linkedin_default,\n  medium: () => Medium_default,\n  pinterest: () => Pinterest_default,\n  reddit: () => Reddit_default,\n  skype: () => Skype_default,\n  snapchat: () => Snapchat_default,\n  tiktok: () => Tiktok_default,\n  twitter: () => Twitter_default,\n  vimeo: () => Vimeo_default,\n  whatsapp: () => Whatsapp_default,\n  wordpress: () => Wordpress_default,\n  youtube: () => Youtube_default\n});\n\n// packages/icons/src/icons/brand/Android.ts\nvar Android_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M13.14,6.25c-.47,0-.86,.39-.86,.87v3.5c0,.48,.39,.88,.86,.88s.86-.39,.86-.88v-3.5c0-.48-.39-.87-.86-.87Zm-10.29,0c-.47,0-.86,.39-.86,.87v3.5c0,.48,.39,.88,.86,.88s.86-.39,.86-.88v-3.5c0-.48-.39-.87-.86-.87Zm1.29,4.81c0,.35,.14,.68,.38,.93,.24,.25,.57,.38,.91,.38v1.75c0,.48,.39,.88,.86,.88s.86-.39,.86-.88v-1.75h1.71v1.75c0,.48,.39,.88,.86,.88s.86-.39,.86-.88v-1.75c.34,0,.67-.14,.91-.38,.24-.25,.38-.58,.38-.93V6.25H4.14v4.81Zm7.69-5.69c-.06-.58-.25-1.14-.55-1.63-.3-.5-.7-.92-1.18-1.23l.43-.88c.05-.1,.06-.22,.02-.33-.04-.11-.11-.2-.22-.25-.1-.05-.22-.06-.33-.02-.11,.04-.2,.12-.25,.22l-.43,.88-.11-.05c-.79-.27-1.64-.27-2.43,0l-.11,.05-.43-.88c-.05-.1-.14-.18-.25-.22-.11-.04-.23-.03-.33,.02-.1,.05-.18,.14-.22,.25-.04,.11-.03,.23,.02,.33l.43,.88c-.48,.32-.88,.74-1.18,1.23-.3,.5-.49,1.05-.55,1.63v.44h7.69v-.44h-.02Zm-5.12-.87c-.11,0-.22-.05-.3-.13-.08-.08-.13-.19-.13-.31,0-.12,.04-.23,.13-.31,.08-.08,.19-.13,.3-.13h0c.11,0,.22,.05,.3,.13,.08,.08,.13,.19,.13,.31,0,.12-.05,.23-.13,.31-.08,.08-.19,.13-.3,.13Zm2.57,0c-.11,0-.22-.05-.3-.13-.08-.08-.13-.19-.13-.31,0-.12,.04-.23,.13-.31,.08-.08,.19-.13,.3-.13h0c.11,0,.22,.05,.3,.13,.08,.08,.13,.19,.13,.31,0,.12-.05,.23-.13,.31-.08,.08-.19,.13-.3,.13h0Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/brand/Apple.ts\nvar Apple_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M10.74,1.01s-1.08,.01-2,1.03c-.92,1.01-.78,2.17-.76,2.2,.02,.03,1.31,.08,2.13-1.1,.82-1.18,.66-2.09,.63-2.13Zm2.86,10.27c-.04-.08-2-1.08-1.82-2.99,.18-1.92,1.44-2.44,1.46-2.5,.02-.06-.51-.69-1.08-1.01-.42-.23-.88-.36-1.35-.38-.09,0-.42-.08-1.08,.1-.44,.12-1.42,.52-1.7,.53-.27,.02-1.08-.46-1.95-.58-.56-.11-1.15,.11-1.57,.29-.42,.17-1.23,.66-1.79,1.96-.56,1.3-.27,3.35-.06,3.99,.21,.64,.54,1.68,1.1,2.45,.5,.86,1.15,1.46,1.43,1.66,.27,.2,1.05,.34,1.59,.06,.43-.27,1.21-.42,1.52-.41,.31,.01,.91,.13,1.54,.47,.49,.17,.96,.1,1.42-.09,.47-.19,1.14-.93,1.93-2.41,.3-.69,.44-1.06,.41-1.12Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/brand/Facebook.ts\nvar Facebook_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,1C4.13,1,1,4.15,1,8.04c0,3.51,2.56,6.43,5.91,6.96v-4.92h-1.78v-2.04h1.78v-1.55c0-1.77,1.05-2.74,2.64-2.74,.77,0,1.57,.14,1.57,.14v1.73h-.88c-.87,0-1.14,.54-1.14,1.1v1.32h1.94l-.31,2.04h-1.63v4.92c3.35-.53,5.91-3.44,5.91-6.96,0-3.89-3.13-7.04-7-7.04Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/brand/Github.ts\nvar Github_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,1c-3.87,0-7,3.21-7,7.18,0,3.14,1.96,5.81,4.69,6.79,.37,.09,.31-.17,.31-.36v-1.25c-2.12,.26-2.21-1.19-2.35-1.43-.29-.5-.97-.63-.76-.87,.48-.26,.98,.06,1.55,.93,.41,.63,1.22,.52,1.63,.42,.09-.38,.28-.71,.54-.98-2.2-.4-3.12-1.78-3.12-3.42,0-.8,.25-1.53,.76-2.12-.32-.97,.03-1.8,.08-1.93,.91-.08,1.85,.67,1.93,.73,.52-.14,1.11-.22,1.77-.22s1.25,.08,1.78,.22c.18-.14,1.05-.78,1.9-.71,.05,.12,.39,.94,.09,1.9,.51,.59,.76,1.33,.76,2.13,0,1.64-.92,3.02-3.13,3.42,.19,.19,.34,.42,.44,.67,.1,.25,.15,.52,.15,.79v1.81c.01,.14,0,.29,.23,.29,2.77-.96,4.76-3.65,4.76-6.81,0-3.97-3.13-7.19-7-7.19Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/brand/Google.ts\nvar Google_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 14 14\"><path d=\"m7.14,8.33v-2.6h6.69c.1.44.18.85.18,1.44,0,4-2.74,6.84-6.86,6.84S0,10.86,0,7,3.2,0,7.14,0c1.93,0,3.54.69,4.78,1.83l-2.03,1.93c-.51-.48-1.41-1.04-2.75-1.04-2.36,0-4.29,1.93-4.29,4.28s1.93,4.28,4.29,4.28c2.74,0,3.74-1.86,3.93-2.95h-3.94Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/brand/Instagram.ts\nvar Instagram_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,5.67c-1.29,0-2.33,1.05-2.33,2.33s1.05,2.33,2.33,2.33,2.33-1.05,2.33-2.33-1.05-2.33-2.33-2.33Zm7,2.33c0-.97,0-1.92-.05-2.89-.05-1.12-.31-2.12-1.13-2.93-.82-.82-1.81-1.08-2.93-1.13-.97-.05-1.92-.05-2.89-.05s-1.92,0-2.89,.05c-1.12,.05-2.12,.31-2.93,1.13-.82,.82-1.08,1.81-1.13,2.93-.05,.97-.05,1.92-.05,2.89s0,1.92,.05,2.89c.05,1.12,.31,2.12,1.13,2.93,.82,.82,1.81,1.08,2.93,1.13,.97,.05,1.92,.05,2.89,.05s1.92,0,2.89-.05c1.12-.05,2.12-.31,2.93-1.13,.82-.82,1.08-1.81,1.13-2.93,.06-.96,.05-1.92,.05-2.89Zm-7,3.59c-1.99,0-3.59-1.6-3.59-3.59s1.6-3.59,3.59-3.59,3.59,1.6,3.59,3.59-1.6,3.59-3.59,3.59Zm3.74-6.49c-.46,0-.84-.37-.84-.84s.37-.84,.84-.84,.84,.37,.84,.84c0,.11-.02,.22-.06,.32s-.1,.19-.18,.27c-.08,.08-.17,.14-.27,.18-.1,.04-.21,.06-.32,.06Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/brand/Linkedin.ts\nvar Linkedin_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M3.44,4.89c.8,0,1.44-.65,1.44-1.44s-.65-1.44-1.44-1.44-1.44,.65-1.44,1.44,.65,1.44,1.44,1.44Z\" fill=\"currentColor\"/><path d=\"M6.25,5.98V14h2.48v-3.96c0-1.05,.2-2.06,1.49-2.06s1.29,1.2,1.29,2.12v3.9h2.49v-4.4c0-2.16-.46-3.82-2.98-3.82-1.21,0-2.02,.66-2.35,1.29h-.03v-1.1h-2.38Zm-4.05,0h2.49V14H2.2V5.98Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/brand/Medium.ts\nvar Medium_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 12\"><path d=\"M2.66,3.04c0-.08,0-.15-.03-.22-.03-.07-.08-.14-.14-.19L1.18,1.21v-.21H5.24l3.14,6.19L11.13,1h3.87v.21l-1.12,.96s-.08,.08-.11,.13c-.02,.05-.03,.1-.02,.16v7.08c0,.05,0,.11,.02,.16,.02,.05,.06,.09,.11,.13l1.09,.96v.21h-5.49v-.21l1.13-.99c.11-.1,.11-.13,.11-.28V3.79l-3.14,7.18h-.42L3.5,3.79v4.82c-.03,.2,.04,.41,.2,.55l1.47,1.61v.21H1v-.21l1.47-1.61c.08-.07,.14-.16,.17-.26,.03-.1,.04-.2,.02-.3V3.04Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/brand/Pinterest.ts\nvar Pinterest_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8.34,1c-2.88,0-5.72,1.92-5.72,5.02,0,1.97,1.11,3.1,1.78,3.1,.28,0,.44-.77,.44-.99,0-.26-.66-.82-.66-1.9,0-2.26,1.72-3.85,3.94-3.85,1.91,0,3.32,1.09,3.32,3.08,0,1.49-.6,4.28-2.53,4.28-.7,0-1.3-.5-1.3-1.23,0-1.06,.74-2.09,.74-3.18,0-1.86-2.63-1.52-2.63,.72,0,.47,.06,.99,.27,1.42-.39,1.67-1.18,4.15-1.18,5.87,0,.53,.08,1.05,.13,1.58,.1,.11,.05,.1,.19,.04,1.41-1.94,1.36-2.31,2-4.85,.35,.66,1.24,1.01,1.94,1.01,2.98,0,4.32-2.9,4.32-5.52,0-2.79-2.41-4.6-5.05-4.6h0Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/brand/Reddit.ts\nvar Reddit_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M15,8c0,3.87-3.13,7-7,7S1,11.87,1,8,4.13,1,8,1s7,3.13,7,7Zm-2.52-.55c.11,.16,.18,.35,.18,.55,0,.19-.05,.38-.15,.55-.1,.16-.25,.3-.42,.38,0,.1,0,.21,0,.31,0,1.57-1.83,2.84-4.08,2.84s-4.08-1.27-4.08-2.84c0-.1,0-.21,0-.31-.13-.06-.25-.15-.35-.27-.1-.11-.16-.24-.2-.39-.04-.14-.05-.29-.02-.44,.02-.15,.08-.28,.16-.41,.08-.12,.19-.23,.32-.3,.13-.08,.27-.13,.41-.14,.15-.02,.29,0,.43,.04s.27,.12,.38,.22c.81-.55,1.76-.85,2.73-.86l.52-2.43s.02-.05,.03-.08c.02-.02,.04-.04,.06-.06,.02-.02,.05-.03,.08-.03,.03,0,.06,0,.09,0l1.72,.34c.08-.14,.22-.25,.37-.31,.16-.06,.33-.05,.48,0s.28,.17,.36,.32c.08,.15,.1,.32,.07,.48-.03,.16-.13,.31-.26,.41-.13,.1-.3,.15-.46,.14-.17,0-.32-.08-.45-.19-.12-.11-.2-.27-.22-.43l-1.5-.31-.46,2.18c.96,.02,1.9,.32,2.69,.86,.11-.1,.23-.18,.37-.23,.14-.05,.29-.07,.43-.05,.15,.01,.29,.06,.42,.13,.13,.07,.24,.18,.32,.3Zm-6.7,.86c-.05,.08-.09,.16-.1,.25-.02,.09-.02,.18,0,.27,.04,.18,.14,.34,.3,.45,.15,.1,.34,.14,.53,.1,.09-.02,.18-.05,.25-.1,.08-.05,.14-.12,.19-.19,.1-.15,.14-.34,.1-.53-.04-.18-.14-.34-.3-.45-.15-.1-.34-.14-.53-.1-.18,.04-.34,.14-.45,.3Zm2.22,2.85c.62,.03,1.23-.14,1.73-.51,.04-.04,.06-.09,.06-.14,0-.05-.02-.1-.06-.14-.02-.02-.04-.03-.06-.04-.02-.01-.05-.02-.07-.02-.05,0-.1,.02-.14,.06-.42,.3-.94,.46-1.46,.43-.52,.02-1.04-.13-1.46-.44-.04-.03-.08-.04-.13-.04-.05,0-.09,.02-.12,.06-.03,.03-.05,.08-.06,.12,0,.05,.01,.09,.04,.13,.5,.37,1.11,.56,1.73,.54Zm1.21-1.85c.12,.08,.24,.15,.38,.15,.09,0,.19-.02,.28-.05,.09-.04,.17-.09,.23-.16,.07-.07,.12-.15,.15-.24s.05-.18,.05-.28c0-.12-.03-.24-.09-.34-.06-.11-.15-.19-.25-.26-.1-.06-.22-.1-.34-.1-.12,0-.24,.03-.35,.08-.11,.06-.2,.14-.26,.24-.06,.1-.1,.22-.11,.34,0,.12,.02,.24,.07,.35,.05,.11,.14,.2,.24,.27Z\" fill=\"currentColor\" fill-rule=\"evenodd\"/></svg>`;\n\n// packages/icons/src/icons/brand/Skype.ts\nvar Skype_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M14.45,9.02c.05-.34,.08-.68,.08-1.02,0-1.73-.69-3.39-1.91-4.61-1.23-1.22-2.89-1.91-4.62-1.91-.34,0-.68,.03-1.02,.08-.76-.45-1.64-.64-2.51-.53-.87,.11-1.69,.5-2.31,1.12-.62,.62-1.02,1.43-1.13,2.3-.11,.87,.08,1.75,.53,2.51-.06,.34-.09,.69-.1,1.03,0,1.73,.69,3.39,1.91,4.61,1.23,1.22,2.89,1.91,4.62,1.91,.34,0,.68-.03,1.02-.08,.76,.45,1.64,.64,2.51,.53,.87-.11,1.69-.5,2.31-1.12,.62-.62,1.02-1.43,1.13-2.3,.11-.87-.08-1.75-.53-2.51l.02-.02Zm-3.35,1.95c-.31,.42-.73,.75-1.21,.94-.6,.24-1.24,.35-1.89,.34-.75,.03-1.5-.12-2.17-.45-.39-.21-.73-.51-.99-.88-.23-.31-.36-.69-.38-1.08,0-.1,.02-.2,.06-.29,.04-.09,.1-.18,.17-.25,.16-.14,.38-.21,.59-.2,.18,0,.35,.06,.49,.17,.15,.14,.27,.32,.34,.51,.09,.23,.21,.44,.36,.64,.14,.18,.33,.33,.54,.42,.29,.12,.6,.18,.92,.17,.45,.02,.89-.1,1.27-.34,.15-.08,.27-.21,.35-.35,.08-.14,.13-.31,.13-.48,0-.12-.02-.23-.06-.34-.04-.11-.11-.21-.2-.29-.19-.18-.43-.31-.68-.38-.28-.09-.66-.18-1.13-.29-.54-.13-1.07-.3-1.58-.53-.4-.16-.75-.42-1.02-.76-.26-.34-.39-.77-.38-1.19,0-.44,.14-.86,.4-1.21,.3-.37,.7-.66,1.16-.81,.58-.19,1.18-.28,1.79-.26,.47,0,.95,.06,1.4,.19,.36,.11,.69,.27,.99,.5,.23,.18,.43,.4,.57,.65,.12,.21,.18,.44,.18,.68,0,.1-.02,.2-.06,.29s-.1,.18-.17,.25c-.07,.08-.16,.14-.26,.19-.1,.04-.21,.06-.32,.06-.17,.01-.35-.04-.48-.15-.14-.14-.26-.3-.35-.47-.13-.28-.33-.52-.57-.71-.32-.2-.69-.28-1.06-.25-.38-.02-.76,.08-1.08,.27-.12,.06-.22,.16-.29,.27-.07,.11-.11,.24-.12,.38,0,.15,.04,.29,.14,.41,.11,.12,.24,.23,.39,.3,.16,.08,.33,.15,.5,.19,.17,.05,.46,.12,.85,.21,.5,.11,.94,.23,1.35,.36,.36,.11,.71,.27,1.03,.48,.28,.18,.51,.42,.67,.71,.16,.33,.24,.69,.22,1.06,0,.48-.14,.95-.42,1.34Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/brand/Snapchat.ts\nvar Snapchat_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M4.4,3.7c-.35,.77-.21,2.16-.16,3.13-.38,.21-.86-.16-1.14-.16s-.63,.19-.68,.46c-.04,.2,.05,.49,.7,.74,.25,.1,.85,.21,.99,.53,.19,.45-1,2.53-2.87,2.84-.07,.01-.13,.05-.18,.1-.04,.06-.07,.12-.06,.2,.03,.56,1.31,.78,1.87,.87,.06,.08,.1,.4,.18,.65,.03,.11,.12,.24,.34,.24,.29,0,.77-.22,1.6-.08,.82,.13,1.58,1.27,3.05,1.27,1.37,0,2.18-1.15,2.97-1.27,.45-.07,.84-.05,1.28,.03,.3,.06,.57,.09,.66-.2,.08-.25,.12-.57,.18-.65,.56-.09,1.84-.3,1.87-.87,0-.07-.02-.14-.06-.2-.04-.06-.11-.09-.18-.1-1.84-.3-3.07-2.37-2.87-2.84,.14-.32,.73-.43,.99-.53,.47-.18,.71-.41,.71-.67,0-.34-.42-.54-.72-.54s-.75,.36-1.11,.16c.06-.98,.19-2.36-.16-3.13-.66-1.46-2.14-2.2-3.61-2.2s-2.92,.73-3.59,2.2Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/brand/Tiktok.ts\nvar Tiktok_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8.3,1.01c.75-.01,1.5,0,2.25-.01,.05,.89,.36,1.8,1.01,2.43,.64,.65,1.55,.94,2.44,1.04v2.35c-.83-.03-1.66-.2-2.42-.56-.33-.15-.63-.34-.93-.54,0,1.7,0,3.41-.01,5.1-.04,.82-.31,1.63-.78,2.3-.75,1.12-2.06,1.85-3.4,1.87-.82,.05-1.65-.18-2.35-.6-1.16-.69-1.98-1.97-2.1-3.33-.02-.29-.02-.58,0-.87,.1-1.11,.65-2.17,1.49-2.89,.95-.84,2.29-1.24,3.54-1,.01,.86-.02,1.73-.02,2.59-.57-.19-1.24-.13-1.74,.22-.37,.24-.64,.6-.79,1.02-.12,.3-.09,.62-.08,.94,.14,.96,1.05,1.76,2.01,1.67,.64,0,1.26-.39,1.59-.94,.11-.19,.23-.39,.24-.62,.06-1.04,.03-2.08,.04-3.13,0-2.35,0-4.7,.01-7.04h0Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/brand/Twitter.ts\nvar Twitter_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 14 14\"><path class=\"cls-1\" d=\"m7,0c3.87,0,7,3.13,7,7s-3.13,7-7,7S0,10.87,0,7,3.13,0,7,0Zm-1.28,10.69c3.1,0,4.8-2.57,4.8-4.8,0-.07,0-.15,0-.22.33-.24.62-.54.84-.88-.3.13-.63.22-.97.27.35-.21.62-.54.74-.93-.33.19-.69.33-1.07.41-.31-.33-.75-.53-1.23-.53-.93,0-1.69.76-1.69,1.69,0,.13.01.26.05.38-1.4-.07-2.65-.74-3.48-1.76-.14.25-.23.54-.23.85,0,.58.3,1.1.75,1.4-.28,0-.54-.08-.76-.21v.02c0,.82.58,1.5,1.35,1.66-.14.04-.29.06-.44.06-.11,0-.21-.01-.32-.03.21.67.84,1.16,1.57,1.17-.58.45-1.31.72-2.1.72-.14,0-.27,0-.4-.02.74.48,1.63.76,2.58.76\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/brand/Vimeo.ts\nvar Vimeo_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M13.99,5.31c-.05,1.13-.87,2.67-2.45,4.62-1.63,2.04-3.01,3.06-4.14,3.06-.7,0-1.29-.62-1.77-1.87-.32-1.14-.64-2.28-.97-3.42-.36-1.24-.74-1.87-1.16-1.87-.09,0-.4,.18-.94,.54l-.57-.7c.59-.5,1.18-1,1.75-1.51,.79-.66,1.38-1,1.78-1.04,.93-.08,1.51,.53,1.73,1.85,.23,1.42,.39,2.31,.49,2.65,.27,1.18,.57,1.77,.89,1.77,.25,0,.63-.38,1.13-1.15,.5-.77,.77-1.35,.81-1.75,.07-.66-.2-.99-.81-.99-.29,0-.58,.06-.89,.19,.59-1.86,1.72-2.77,3.38-2.71,1.23,.03,1.81,.8,1.74,2.31h0Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/brand/Whatsapp.ts\nvar Whatsapp_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M13.95,4.24C11.86,1,7.58,.04,4.27,2.05,1.04,4.06,0,8.44,2.09,11.67l.17,.26-.7,2.62,2.62-.7,.26,.17c1.13,.61,2.36,.96,3.58,.96,1.31,0,2.62-.35,3.75-1.05,3.23-2.1,4.19-6.39,2.18-9.71Zm-1.83,6.74c-.35,.52-.79,.87-1.4,.96-.35,0-.79,.17-2.53-.52-1.48-.7-2.71-1.84-3.58-3.15-.52-.61-.79-1.4-.87-2.19,0-.7,.26-1.31,.7-1.75,.17-.17,.35-.26,.52-.26h.44c.17,0,.35,0,.44,.35,.17,.44,.61,1.49,.61,1.58,.09,.09,.05,.76-.35,1.14-.22,.25-.26,.26-.17,.44,.35,.52,.79,1.05,1.22,1.49,.52,.44,1.05,.79,1.66,1.05,.17,.09,.35,.09,.44-.09,.09-.17,.52-.61,.7-.79,.17-.17,.26-.17,.44-.09l1.4,.7c.17,.09,.35,.17,.44,.26,.09,.26,.09,.61-.09,.87Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/brand/Wordpress.ts\nvar Wordpress_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8.06,1c-2.76,0-5.35,1.62-6.54,4.2h3.35v.37c-1.03-.12-.94,.41-.79,.97l2.2,5.48,1.61-3.77-.74-1.77c-.27-.47-.27-1-1.38-.95l.02-.34h4.91v.39c-.57,.03-1.27-.14-.9,1.03l1.99,5.19,1.09-3.03c.36-1.27,.02-2.49-.4-3.69-.23-.8-.13-1.47,.93-1.74-1.61-1.63-3.5-2.35-5.33-2.35h0Zm6.68,4.79l-3.18,8.26c.88-.76,1.78-1.03,2.88-3.13,.73-1.74,.66-3.36,.3-5.13h0Zm-13.55,.13c-.31,2.44-.28,3.15,.49,5.14,1,1.91,1.78,2.31,2.88,3.06L1.19,5.93h0Zm7,3.09l-2.36,5.66c1.66,.47,3.14,.41,4.49-.11l-2.13-5.55h0Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/brand/Youtube.ts\nvar Youtube_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 14\"><path d=\"M8,1.5C1.12,1.5,1,2.12,1,7s.12,5.5,7,5.5,7-.62,7-5.5-.12-5.5-7-5.5Zm2.24,5.74l-3.14,1.5c-.28,.13-.5-.02-.5-.33v-2.82c0-.31,.23-.46,.5-.33l3.14,1.5c.28,.13,.28,.35,0,.48Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/crypto/index.ts\nvar crypto_exports = {};\n__export(crypto_exports, {\n  bitcoin: () => Bitcoin_default,\n  bnb: () => Bnb_default,\n  cardano: () => Cardano_default,\n  dogecoin: () => Dogecoin_default,\n  ethereum: () => Ethereum_default,\n  solana: () => Solana_default,\n  tether: () => Tether_default,\n  usdc: () => Usdc_default\n});\n\n// packages/icons/src/icons/crypto/Bitcoin.ts\nvar Bitcoin_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 13 16\"><path d=\"M10.19,7.47c.76-.39,1.24-1.07,1.13-2.21h0c-.15-1.56-1.49-2.08-3.19-2.23V1h-1.31V3h-1.05V1h-1.31V3c-.29,0-.56,.01-.84,.01H2v1.43s.77-.02,.75,0c.53,0,.71,.31,.76,.58v2.46s.08,0,.14,0h-.14v3.44c-.02,.17-.12,.44-.49,.44,.02,.01-.75,0-.75,0l-.26,1.63h1.51c.19,0,.38,0,.57,0h0c.12,0,.24,0,.36,0v2h1.31v-2h1.05v2h1.31v-2.05c2.21-.13,3.75-.68,3.95-2.76,.16-1.67-.63-2.42-1.88-2.72Zm-4.4-2.94c.08,0,.17,0,.27,0,.92-.02,2.8-.07,2.8,1.32,0,1.36-1.96,1.33-2.86,1.31-.08,0-.15,0-.22,0v-2.62Zm3.68,5.39c0,1.5-2.35,1.46-3.43,1.45h0c-.1,0-.18,0-.26,0v-2.89c.09,0,.2,0,.32,0,1.1-.03,3.36-.08,3.36,1.45h0Z\" fill=\"currentColor\" fill-rule=\"evenodd\"/></svg>`;\n\n// packages/icons/src/icons/crypto/Bnb.ts\nvar Bnb_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M5.67,7.04l2.33-2.33,2.33,2.33,1.36-1.36-3.69-3.69-3.69,3.69,1.36,1.36Zm-3.67,.96l1.36-1.36,1.36,1.36-1.36,1.36-1.36-1.36Zm6,3.29l-2.33-2.33-1.36,1.35h0l3.69,3.69,3.69-3.69h0l-1.36-1.36-2.33,2.33Zm3.29-3.29l1.36-1.36,1.36,1.36-1.36,1.36-1.36-1.36Zm-3.29-1.38l1.38,1.38h0l-1.38,1.38-1.38-1.37h0l.24-.25,.12-.12,1.02-1.02Z\" fill=\"currentColor\" fill-rule=\"evenodd\"/></svg>`;\n\n// packages/icons/src/icons/crypto/Cardano.ts\nvar Cardano_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8.34,2.03c.16-.31-.21-.68-.52-.52-.25,.1-.31,.46-.12,.65,.18,.19,.54,.12,.63-.13Zm-3.4,.14c.02-.2-.22-.38-.4-.3-.26,.07-.29,.48-.04,.58,.19,.11,.46-.06,.44-.28Zm6.32,.29c-.29-.04-.34-.5-.06-.59,.22-.11,.41,.09,.45,.3-.05,.18-.19,.34-.39,.29Zm-5.27,1.29c.05-.36-.39-.66-.7-.46-.29,.15-.33,.6-.07,.79,.27,.25,.76,.04,.77-.33Zm4.03-.25c.14-.36,.7-.37,.86-.02,.16,.27-.04,.61-.31,.7-.37,.07-.72-.33-.54-.68Zm-2.02,.1c-.29,.02-.57,.25-.57,.56-.02,.25,.16,.46,.37,.56h.06c.12,.01,.24,.02,.35-.04,.28-.12,.42-.5,.26-.77-.08-.2-.29-.28-.49-.32Zm-5.45,1.01c.28-.18,.66,.15,.56,.46-.06,.27-.42,.38-.62,.21-.22-.16-.18-.55,.06-.66Zm11.09,.33c.03-.31-.37-.52-.61-.33-.25,.15-.22,.56,.04,.68,.24,.14,.58-.07,.56-.35Zm-4.84,.22c.4-.14,.87,.03,1.09,.39,.3,.44,.14,1.1-.32,1.35-.48,.3-1.18,.05-1.36-.5-.2-.48,.09-1.09,.59-1.24Zm-1.08,.47c-.21-.45-.8-.63-1.24-.42-.47,.21-.68,.83-.44,1.29,.22,.47,.85,.67,1.29,.41,.45-.23,.64-.84,.39-1.29Zm-3.57,.38c.03-.29,.3-.47,.57-.49,.29,.04,.52,.26,.55,.56-.02,.29-.24,.58-.55,.58-.34,.03-.64-.31-.57-.65Zm7.69,.07c.02-.4-.47-.7-.82-.5-.37,.18-.4,.77-.04,.98,.35,.25,.88-.05,.86-.48Zm-6.31,1.01c.41-.11,.87,.08,1.07,.46,.22,.38,.13,.91-.21,1.19-.44,.41-1.24,.24-1.47-.31-.27-.51,.06-1.2,.61-1.33Zm5.48,.4c-.21-.36-.68-.52-1.07-.4-.56,.15-.85,.87-.56,1.37,.24,.49,.92,.65,1.36,.34,.42-.27,.55-.89,.27-1.31Zm-8.1,.07c.35-.13,.74,.26,.6,.61-.09,.32-.53,.44-.77,.2-.27-.22-.17-.72,.17-.81Zm10.03-.06c-.3,.02-.51,.28-.5,.57,.06,.14,.13,.28,.27,.35,.29,.16,.71-.07,.69-.42,.02-.26-.22-.46-.46-.5Zm-11.76,.23c.21-.09,.47,.09,.42,.33-.01,.27-.4,.37-.55,.15-.13-.16-.05-.4,.12-.48Zm13.78,.14c-.06-.18-.3-.25-.45-.15-.25,.13-.15,.6,.15,.57,.21,.03,.4-.23,.3-.42Zm-8.29,1.14c.56-.15,1.15,.32,1.16,.9,.04,.59-.55,1.1-1.12,.97-.44-.07-.79-.5-.77-.95,0-.43,.32-.83,.74-.92Zm3.38,.91c0-.59-.61-1.07-1.17-.91-.33,.08-.62,.36-.69,.71-.15,.51,.24,1.1,.77,1.17,.56,.11,1.13-.39,1.1-.96Zm-5.42-.55c.39-.07,.76,.37,.6,.75-.12,.4-.69,.51-.95,.18-.3-.31-.08-.89,.35-.93Zm7.21,.56c.03-.38-.4-.69-.75-.54-.42,.14-.49,.78-.11,1,.34,.25,.87-.04,.86-.47Zm1.06,1.29c-.14-.26,.11-.6,.39-.55,.13,0,.23,.1,.31,.19v.02l.02,.03c.02,.15,.04,.31-.08,.43-.17,.22-.55,.16-.65-.1Zm-9.77-.08c.06-.31-.32-.58-.58-.4-.25,.13-.26,.53-.02,.68,.23,.16,.57,0,.6-.28Zm4.63,.18c.35-.15,.79,.15,.75,.53,.03,.42-.52,.72-.86,.46-.38-.22-.31-.86,.1-1Zm-1.75,1.02c.03-.33-.37-.6-.66-.45-.21,.08-.29,.31-.3,.52,.07,.19,.22,.39,.44,.4,.27,.04,.53-.19,.52-.47Zm4.23-.44c.3-.19,.73,.08,.7,.44,0,.37-.48,.61-.76,.37-.27-.19-.24-.65,.06-.8Zm1.09,1.62c-.22,.05-.38,.29-.24,.5,.14,.24,.54,.15,.57-.13,.04-.21-.15-.34-.32-.38Zm-7,.32c.05-.16,.18-.33,.37-.28,.28,.02,.36,.44,.12,.57-.22,.15-.47-.05-.49-.29Zm3.83-.04c-.2-.13-.51-.01-.57,.23-.1,.24,.14,.54,.39,.51,.14,0,.25-.1,.33-.2,.02-.07,.03-.13,.05-.2h0c-.03-.13-.07-.28-.21-.34Z\" fill=\"currentColor\" fill-rule=\"evenodd\"/></svg>`;\n\n// packages/icons/src/icons/crypto/Dogecoin.ts\nvar Dogecoin_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 14\"><path d=\"M7.72,1.5h-3.72V6H2l-.04,2h2.04v4.5h3.91c1.68,0,2.08-.2,2.89-.59,.06-.03,.13-.06,.2-.1,.95-.46,1.69-1.1,2.21-1.92,.53-.83,.79-1.79,.79-2.89s-.26-2.06-.79-2.89c-.53-.83-1.26-1.47-2.21-1.93-.95-.46-2.04-.68-3.28-.68Zm-.97,6.5v2.41h.83c1.14,0,2.05-.31,2.73-.92,.68-.61,1.02-1.44,1.02-2.49s-.34-1.88-1.02-2.49c-.68-.61-1.59-.92-2.73-.92h-.83v2.41h2.58v2h-2.58Z\" fill=\"currentColor\" fill-rule=\"evenodd\"/></svg>`;\n\n// packages/icons/src/icons/crypto/Ethereum.ts\nvar Ethereum_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 10 16\"><path d=\"M5,1l-.09,.31V10.19l.09,.09,4-2.44L5,1Z\" fill=\"currentColor\"/><path d=\"M5,1L1,7.84l4,2.44V1Z\" fill=\"currentColor\"/><path d=\"M5,11.62l-.05,.06v3.17l.05,.15,4-5.81-4,2.44Z\" fill=\"currentColor\"/><path d=\"M5,15v-3.38l-4-2.44,4,5.81Z\" fill=\"currentColor\"/><path d=\"M5,10.28l4-2.44-4-1.87v4.31Z\" fill=\"currentColor\"/><path d=\"M1,7.84l4,2.44V5.97l-4,1.87Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/crypto/Solana.ts\nvar Solana_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M2.45,6.76H12.04c.12,0,.23,.05,.32,.14l1.52,1.56c.28,.29,.08,.78-.32,.78H3.97c-.12,0-.23-.05-.32-.14l-1.52-1.56c-.28-.29-.08-.78,.32-.78Zm-.32-2.07l1.52-1.56c.08-.09,.2-.14,.32-.14H13.55c.4,0,.6,.49,.32,.78l-1.51,1.56c-.08,.09-.2,.14-.32,.14H2.45c-.4,0-.6-.49-.32-.78Zm11.74,6.61l-1.52,1.56c-.09,.09-.2,.14-.32,.14H2.45c-.4,0-.6-.49-.32-.78l1.52-1.56c.08-.09,.2-.14,.32-.14H13.55c.4,0,.6,.49,.32,.78Z\" fill=\"currentColor\" fill-rule=\"evenodd\"/></svg>`;\n\n// packages/icons/src/icons/crypto/Tether.ts\nvar Tether_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><rect x=\"3\" y=\"2\" width=\"10\" height=\"2.38\" fill=\"currentColor\"/><rect x=\"5.38\" y=\"9.88\" width=\"5.25\" height=\"3\" transform=\"translate(19.38 3.38) rotate(90)\" fill=\"currentColor\"/><path d=\"M8,5.75c-3.66,0-6.62,.73-6.62,1.62s2.97,1.62,6.62,1.62,6.62-.73,6.62-1.62-2.97-1.62-6.62-1.62Zm0,2.5c-3.38,0-6.12-.5-6.12-1.12s2.74-1.12,6.12-1.12,6.12,.5,6.12,1.12-2.74,1.12-6.12,1.12Z\" fill=\"currentColor\"/><path d=\"M8,7.88c.52,0,1.02-.01,1.5-.04V3.75h-3V7.84c.48,.02,.98,.04,1.5,.04Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/crypto/Usdc.ts\nvar Usdc_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 14 16\"><path d=\"M5.5,13.47c0,.19-.15,.29-.33,.24-2.42-.77-4.17-3.04-4.17-5.71S2.75,3.06,5.17,2.29c.18-.06,.33,.05,.33,.24v.46c0,.13-.1,.27-.22,.31-1.91,.7-3.28,2.54-3.28,4.69s1.37,3.99,3.28,4.69c.12,.04,.22,.19,.22,.31v.47Z\" fill=\"currentColor\" fill-rule=\"evenodd\"/><path d=\"M7.5,11.75c0,.14-.11,.25-.25,.25h-.5c-.14,0-.25-.11-.25-.25v-.79c-1.09-.15-1.62-.76-1.77-1.59-.03-.14,.09-.27,.23-.27h.57c.12,0,.22,.08,.24,.2,.11,.5,.39,.87,1.27,.87,.65,0,1.1-.36,1.1-.9s-.27-.74-1.22-.9c-1.4-.19-2.06-.61-2.06-1.71,0-.85,.64-1.5,1.63-1.65v-.77c0-.14,.11-.25,.25-.25h.5c.14,0,.25,.11,.25,.25v.8c.81,.14,1.32,.6,1.48,1.36,.03,.14-.08,.28-.23,.28h-.53c-.11,0-.21-.08-.24-.18-.14-.48-.49-.69-1.08-.69-.66,0-1,.32-1,.77,0,.47,.19,.71,1.21,.86,1.37,.19,2.08,.58,2.08,1.75,0,.89-.66,1.61-1.69,1.77v.79h0Z\" fill=\"currentColor\" fill-rule=\"evenodd\"/><path d=\"M8.83,13.71c-.18,.06-.33-.05-.33-.24v-.46c0-.14,.08-.27,.22-.31,1.91-.7,3.28-2.54,3.28-4.69s-1.37-3.99-3.28-4.69c-.12-.04-.22-.19-.22-.31v-.46c0-.19,.15-.3,.33-.24,2.42,.77,4.17,3.04,4.17,5.71,0,2.67-1.75,4.93-4.17,5.71Z\" fill=\"currentColor\" fill-rule=\"evenodd\"/></svg>`;\n\n// packages/icons/src/icons/currency/index.ts\nvar currency_exports = {};\n__export(currency_exports, {\n  dollar: () => Dollar_default,\n  euro: () => Euro_default,\n  franc: () => Franc_default,\n  krona: () => Krona_default,\n  lira: () => Lira_default,\n  multiCurrency: () => MultiCurrency_default,\n  peso: () => Peso_default,\n  pound: () => Pound_default,\n  ruble: () => Ruble_default,\n  rupee: () => Rupee_default,\n  shekel: () => Shekel_default,\n  won: () => Won_default,\n  yen: () => Yen_default,\n  yuan: () => Yuan_default\n});\n\n// packages/icons/src/icons/currency/Dollar.ts\nvar Dollar_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,8.5s-.04,0-.07,0c-1.14-.15-2.51-.68-2.51-2.38,0-1.02,.68-2.12,2.57-2.12s2.51,1.36,2.57,2.08c.02,.28-.18,.52-.46,.54-.27,.02-.51-.18-.54-.45-.02-.19-.19-1.16-1.58-1.16-1.04,0-1.57,.38-1.57,1.12,0,.38,0,1.18,1.64,1.39,.27,.04,.47,.29,.43,.56-.03,.25-.25,.44-.5,.44Z\" fill=\"currentColor\"/><path d=\"M8,12c-1.9,0-2.51-1.36-2.57-2.08-.02-.28,.18-.52,.46-.54,.27-.02,.51,.18,.54,.45,.02,.19,.19,1.16,1.58,1.16,1.04,0,1.57-.38,1.57-1.12,0-.38,0-1.18-1.64-1.39-.27-.04-.47-.29-.43-.56,.04-.27,.29-.47,.56-.43,1.14,.15,2.51,.68,2.51,2.38,0,1.02-.68,2.12-2.57,2.12Z\" fill=\"currentColor\"/><path d=\"M8,15c-3.86,0-7-3.14-7-7S4.14,1,8,1s7,3.14,7,7-3.14,7-7,7Zm0-13c-3.31,0-6,2.69-6,6s2.69,6,6,6,6-2.69,6-6-2.69-6-6-6Z\" fill=\"currentColor\"/><path d=\"M8,13c-.28,0-.5-.22-.5-.5V3.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V12.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/currency/Euro.ts\nvar Euro_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,15c-3.86,0-7-3.14-7-7S4.14,1,8,1s7,3.14,7,7-3.14,7-7,7Zm0-13c-3.31,0-6,2.69-6,6s2.69,6,6,6,6-2.69,6-6-2.69-6-6-6Z\" fill=\"currentColor\"/><path d=\"M7.89,12c-1.35,0-2.44-1.1-2.44-2.44v-3.11c0-1.35,1.1-2.44,2.44-2.44s2.44,1.1,2.44,2.44c0,.28-.22,.5-.5,.5s-.5-.22-.5-.5c0-.8-.65-1.44-1.44-1.44s-1.44,.65-1.44,1.44v3.11c0,.8,.65,1.44,1.44,1.44s1.44-.65,1.44-1.44c0-.28,.22-.5,.5-.5s.5,.22,.5,.5c0,1.35-1.1,2.44-2.44,2.44Z\" fill=\"currentColor\"/><path d=\"M7.5,7.5h-2.33c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h2.33c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M7.5,9.5h-2.33c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h2.33c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/currency/Franc.ts\nvar Franc_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,15c-3.86,0-7-3.14-7-7S4.14,1,8,1s7,3.14,7,7-3.14,7-7,7Zm0-13c-3.31,0-6,2.69-6,6s2.69,6,6,6,6-2.69,6-6-2.69-6-6-6Z\" fill=\"currentColor\"/><path d=\"M6.5,12.12c-.28,0-.5-.22-.5-.5V4.5c0-.28,.22-.5,.5-.5h4c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5h-3.5v6.62c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M8.62,11h-3.25c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h3.25c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M9.5,8h-2.88c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h2.88c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/currency/Krona.ts\nvar Krona_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,15c-3.86,0-7-3.14-7-7S4.14,1,8,1s7,3.14,7,7-3.14,7-7,7Zm0-13c-3.31,0-6,2.69-6,6s2.69,6,6,6,6-2.69,6-6-2.69-6-6-6Z\" fill=\"currentColor\"/><rect x=\"5\" y=\"4\" width=\"1\" height=\"8\" fill=\"currentColor\"/><rect x=\"10\" y=\"6.6\" width=\"1\" height=\"5.4\" fill=\"currentColor\"/><path d=\"M11,9h-1c0-1.1,.9-2,2-2h.62v1h-.62c-.55,0-1,.45-1,1Z\" fill=\"currentColor\"/><polygon points=\"9.6 12 7.17 8.53 9.71 6 8.29 6 5.15 9.15 5.85 9.85 6.45 9.25 8.38 12 9.6 12\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/currency/Lira.ts\nvar Lira_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,15.5C3.86,15.5,.5,12.14,.5,8S3.86,.5,8,.5s7.5,3.36,7.5,7.5-3.36,7.5-7.5,7.5Zm0-14C4.42,1.5,1.5,4.42,1.5,8s2.92,6.5,6.5,6.5,6.5-2.92,6.5-6.5S11.58,1.5,8,1.5Z\" fill=\"currentColor\"/><path d=\"M7.5,13h-1c-.28,0-.5-.22-.5-.5V3.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V12h.5c1.38,0,2.5-1.12,2.5-2.5,0-.28,.22-.5,.5-.5s.5,.22,.5,.5c0,1.93-1.57,3.5-3.5,3.5Z\" fill=\"currentColor\"/><path d=\"M5,8.5c-.21,0-.4-.13-.47-.34-.09-.26,.05-.55,.32-.63l4.5-1.5c.26-.09,.55,.05,.63,.32,.09,.26-.05,.55-.32,.63l-4.5,1.5c-.05,.02-.11,.03-.16,.03Z\" fill=\"currentColor\"/><path d=\"M5,6.5c-.21,0-.4-.13-.47-.34-.09-.26,.05-.55,.32-.63l4.5-1.5c.26-.09,.55,.05,.63,.32,.09,.26-.05,.55-.32,.63l-4.5,1.5c-.05,.02-.11,.03-.16,.03Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/currency/MultiCurrency.ts\nvar MultiCurrency_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M9.73,16c-2.82,0-5.12-2.29-5.12-5.12,0-1.9,1.04-3.63,2.72-4.52,.24-.13,.55-.04,.68,.21,.13,.24,.04,.55-.21,.68-1.35,.72-2.19,2.11-2.19,3.64,0,2.27,1.85,4.12,4.12,4.12s4.12-1.85,4.12-4.12c0-.83-.25-1.63-.71-2.31-.16-.23-.1-.54,.13-.69,.23-.16,.54-.1,.69,.13,.58,.85,.89,1.85,.89,2.88,0,2.82-2.29,5.12-5.12,5.12Z\" fill=\"currentColor\"/><path d=\"M11.5,14h-3.55c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h3.55c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M10.09,12h-2.13c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h2.13c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M8.67,13.87c-.28,0-.5-.22-.5-.5v-3.46c0-.77,.43-1.45,1.11-1.8,.25-.12,.55-.02,.67,.22,.12,.25,.02,.55-.22,.67-.34,.17-.56,.52-.56,.9v3.46c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M11.32,9.37c-2.58,0-4.68-2.1-4.68-4.68S8.74,0,11.32,0s4.68,2.1,4.68,4.68-2.1,4.68-4.68,4.68Zm0-8.37c-2.03,0-3.68,1.65-3.68,3.68s1.65,3.68,3.68,3.68,3.68-1.65,3.68-3.68-1.65-3.68-3.68-3.68Z\" fill=\"currentColor\"/><path d=\"M11.25,7.43c-.97,0-1.75-.79-1.75-1.75V3.68c0-.97,.79-1.75,1.75-1.75s1.75,.79,1.75,1.75c0,.28-.22,.5-.5,.5s-.5-.22-.5-.5c0-.41-.34-.75-.75-.75s-.75,.34-.75,.75v2c0,.41,.34,.75,.75,.75s.75-.34,.75-.75c0-.28,.22-.5,.5-.5s.5,.22,.5,.5c0,.97-.79,1.75-1.75,1.75Z\" fill=\"currentColor\"/><path d=\"M11,4.46h-1.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h1.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M11,6h-1.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h1.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M5.4,13.4c-2.98,0-5.4-2.42-5.4-5.4S2.42,2.6,5.4,2.6c.72,0,1.41,.14,2.07,.41,.26,.11,.38,.4,.27,.65-.11,.26-.4,.38-.65,.27-.53-.22-1.1-.33-1.68-.33-2.43,0-4.4,1.98-4.4,4.4s1.98,4.4,4.4,4.4c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M5.47,9.5c-.28,0-.5-.22-.5-.5V4.85c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v4.15c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M5.3,8.5c-.95,0-1.73-.77-1.73-1.73s.77-1.73,1.73-1.73h.35c.95,0,1.73,.77,1.73,1.73v.18c0,.28-.22,.5-.5,.5s-.5-.22-.5-.5v-.18c0-.4-.33-.73-.73-.73h-.35c-.4,0-.73,.33-.73,.73s.33,.73,.73,.73c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M5,10.92s-.08,0-.12-.02c-.77-.19-1.31-.88-1.31-1.67v-.18c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v.18c0,.33,.23,.62,.55,.7,.27,.07,.43,.34,.36,.61-.06,.23-.26,.38-.48,.38Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/currency/Peso.ts\nvar Peso_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M11.5,7H5.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h6c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M11.5,9H5.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h6c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M8,15c-3.86,0-7-3.14-7-7S4.14,1,8,1s7,3.14,7,7-3.14,7-7,7Zm0-13c-3.31,0-6,2.69-6,6s2.69,6,6,6,6-2.69,6-6-2.69-6-6-6Z\" fill=\"currentColor\"/><path d=\"M6.5,13c-.28,0-.5-.22-.5-.5V5.5c0-.83,.67-1.5,1.5-1.5h1c1.38,0,2.5,1.12,2.5,2.5v2c0,1.38-1.12,2.5-2.5,2.5h-1.5v1.5c0,.28-.22,.5-.5,.5Zm.5-3h1.5c.83,0,1.5-.67,1.5-1.5v-2c0-.83-.67-1.5-1.5-1.5h-1c-.28,0-.5,.22-.5,.5v4.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/currency/Pound.ts\nvar Pound_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,15c-3.86,0-7-3.14-7-7S4.14,1,8,1s7,3.14,7,7-3.14,7-7,7Zm0-13c-3.31,0-6,2.69-6,6s2.69,6,6,6,6-2.69,6-6-2.69-6-6-6Z\" fill=\"currentColor\"/><path d=\"M10.5,12H5.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M8.5,9h-3c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h3c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M6.5,12c-.28,0-.5-.22-.5-.5V6.62c0-1.45,1.18-2.62,2.62-2.62,.7,0,1.36,.27,1.85,.77l.38,.38c.2,.2,.2,.51,0,.71-.2,.2-.51,.2-.71,0l-.38-.38c-.31-.31-.71-.47-1.15-.47-.89,0-1.62,.73-1.62,1.62v4.88c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/currency/Ruble.ts\nvar Ruble_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,15c-3.86,0-7-3.14-7-7S4.14,1,8,1s7,3.14,7,7-3.14,7-7,7Zm0-13c-3.31,0-6,2.69-6,6s2.69,6,6,6,6-2.69,6-6-2.69-6-6-6Z\" fill=\"currentColor\"/><path d=\"M6.5,13c-.28,0-.5-.22-.5-.5v-3.5h-1.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h1.5v-3.5c0-.28,.22-.5,.5-.5h3c1.38,0,2.5,1.12,2.5,2.5s-1.12,2.5-2.5,2.5h-2.5v3.5c0,.28-.22,.5-.5,.5Zm.5-5h2.5c.83,0,1.5-.67,1.5-1.5s-.67-1.5-1.5-1.5h-2.5v3Z\" fill=\"currentColor\"/><path d=\"M9.5,11H4.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/currency/Rupee.ts\nvar Rupee_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,15c-3.86,0-7-3.14-7-7S4.14,1,8,1s7,3.14,7,7-3.14,7-7,7Zm0-13c-3.31,0-6,2.69-6,6s2.69,6,6,6,6-2.69,6-6-2.69-6-6-6Z\" fill=\"currentColor\"/><path d=\"M6.5,9h-1c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h1c.83,0,1.5-.67,1.5-1.5s-.67-1.5-1.5-1.5h-1c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h1c1.38,0,2.5,1.12,2.5,2.5s-1.12,2.5-2.5,2.5Z\" fill=\"currentColor\"/><path d=\"M10.5,7H5.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M10.5,5H5.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M7.5,12c-.16,0-.32-.08-.42-.22l-2-3c-.15-.23-.09-.54,.14-.69,.23-.15,.54-.09,.69,.14l2,3c.15,.23,.09,.54-.14,.69-.09,.06-.18,.08-.28,.08Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/currency/Shekel.ts\nvar Shekel_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,15.5C3.86,15.5,.5,12.14,.5,8S3.86,.5,8,.5s7.5,3.36,7.5,7.5-3.36,7.5-7.5,7.5Zm0-14C4.42,1.5,1.5,4.42,1.5,8s2.92,6.5,6.5,6.5,6.5-2.92,6.5-6.5S11.58,1.5,8,1.5Z\" fill=\"currentColor\"/><path d=\"M5,12c-.28,0-.5-.22-.5-.5V4.5c0-.28,.22-.5,.5-.5h2c1.38,0,2.5,1.12,2.5,2.5v3c0,.28-.22,.5-.5,.5s-.5-.22-.5-.5v-3c0-.83-.67-1.5-1.5-1.5h-1.5v6.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M11,12h-2c-1.38,0-2.5-1.12-2.5-2.5v-3c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v3c0,.83,.67,1.5,1.5,1.5h1.5V4.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v7c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/currency/Won.ts\nvar Won_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,15c-3.86,0-7-3.14-7-7S4.14,1,8,1s7,3.14,7,7-3.14,7-7,7Zm0-13c-3.31,0-6,2.69-6,6s2.69,6,6,6,6-2.69,6-6-2.69-6-6-6Z\" fill=\"currentColor\"/><path d=\"M10,12.5h-1c-.25,0-.46-.18-.49-.42l-.51-3.29-.51,3.29c-.04,.24-.25,.42-.49,.42h-1c-.23,0-.43-.16-.49-.39l-1.5-6.5c-.06-.27,.11-.54,.37-.6,.27-.06,.54,.11,.6,.37l1.41,6.11h.17l.93-6.08c.04-.24,.25-.42,.49-.42s.46,.18,.49,.42l.93,6.08h.17l1.41-6.11c.06-.27,.33-.44,.6-.37,.27,.06,.44,.33,.37,.6l-1.5,6.5c-.05,.23-.25,.39-.49,.39Z\" fill=\"currentColor\"/><path d=\"M12.5,9H3.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5H12.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/currency/Yen.ts\nvar Yen_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,15c-3.86,0-7-3.14-7-7S4.14,1,8,1s7,3.14,7,7-3.14,7-7,7Zm0-13c-3.31,0-6,2.69-6,6s2.69,6,6,6,6-2.69,6-6-2.69-6-6-6Z\" fill=\"currentColor\"/><path d=\"M9.62,11h-3.25c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h3.25c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M9.62,9h-3.25c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h3.25c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M8,12.5c-.28,0-.5-.22-.5-.5v-3.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v3.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M8,9c-.09,0-.18-.02-.26-.08-.23-.15-.31-.45-.16-.69l2.5-4c.15-.23,.45-.31,.69-.16,.23,.15,.31,.45,.16,.69l-2.5,4c-.09,.15-.26,.24-.42,.24Z\" fill=\"currentColor\"/><path d=\"M8,9c-.17,0-.33-.08-.42-.24l-2.5-4c-.15-.23-.08-.54,.16-.69,.23-.15,.54-.08,.69,.16l2.5,4c.15,.23,.08,.54-.16,.69-.08,.05-.17,.08-.26,.08Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/currency/Yuan.ts\nvar Yuan_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,15c-3.86,0-7-3.14-7-7S4.14,1,8,1s7,3.14,7,7-3.14,7-7,7Zm0-13c-3.31,0-6,2.69-6,6s2.69,6,6,6,6-2.69,6-6-2.69-6-6-6Z\" fill=\"currentColor\"/><path d=\"M9.62,11h-3.25c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h3.25c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M9.62,9h-3.25c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h3.25c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M8,12.5c-.28,0-.5-.22-.5-.5v-3.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v3.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M8,9c-.09,0-.18-.02-.26-.08-.23-.15-.31-.45-.16-.69l2.5-4c.15-.23,.45-.31,.69-.16,.23,.15,.31,.45,.16,.69l-2.5,4c-.09,.15-.26,.24-.42,.24Z\" fill=\"currentColor\"/><path d=\"M8,9c-.17,0-.33-.08-.42-.24l-2.5-4c-.15-.23-.08-.54,.16-.69,.23-.15,.54-.08,.69,.16l2.5,4c.15,.23,.08,.54-.16,.69-.08,.05-.17,.08-.26,.08Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/directional/index.ts\nvar directional_exports = {};\n__export(directional_exports, {\n  arrowDown: () => ArrowDown_default,\n  arrowLeft: () => ArrowLeft_default,\n  arrowRight: () => ArrowRight_default,\n  arrowUp: () => ArrowUp_default,\n  caretDown: () => CaretDown_default,\n  caretLeft: () => CaretLeft_default,\n  caretRight: () => CaretRight_default,\n  caretUp: () => CaretUp_default,\n  down: () => Down_default,\n  left: () => Left_default,\n  right: () => Right_default,\n  up: () => Up_default\n});\n\n// packages/icons/src/icons/directional/ArrowDown.ts\nvar ArrowDown_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9 16\"><path d=\"M4.5,13c-.28,0-.5-.22-.5-.5V3.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V12.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M4.5,14c-.13,0-.26-.05-.35-.15L.65,10.35c-.2-.2-.2-.51,0-.71,.2-.2,.51-.2,.71,0l3.15,3.15,3.15-3.15c.2-.2,.51-.2,.71,0,.2,.2,.2,.51,0,.71l-3.5,3.5c-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/directional/ArrowLeft.ts\nvar ArrowLeft_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 9\"><path d=\"M12.5,5H3.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5H12.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M6,8.5c-.13,0-.26-.05-.35-.15l-3.5-3.5c-.2-.2-.2-.51,0-.71L5.65,.65c.2-.2,.51-.2,.71,0,.2,.2,.2,.51,0,.71l-3.15,3.15,3.15,3.15c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/directional/ArrowRight.ts\nvar ArrowRight_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 9\"><path d=\"M12.5,5H3.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5H12.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M10,8.5c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71l3.15-3.15-3.15-3.15c-.2-.2-.2-.51,0-.71,.2-.2,.51-.2,.71,0l3.5,3.5c.2,.2,.2,.51,0,.71l-3.5,3.5c-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/directional/ArrowUp.ts\nvar ArrowUp_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9 16\"><path d=\"M4.5,14c-.28,0-.5-.22-.5-.5V4.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V13.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M8,7.5c-.13,0-.26-.05-.35-.15l-3.15-3.15L1.35,7.35c-.2,.2-.51,.2-.71,0-.2-.2-.2-.51,0-.71l3.5-3.5c.2-.2,.51-.2,.71,0l3.5,3.5c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/directional/CaretDown.ts\nvar CaretDown_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 9\"><path d=\"M7.18,7.62L3.03,2.79c-.6-.7-.1-1.79,.82-1.79H12.14c.93,0,1.42,1.09,.82,1.79l-4.14,4.83c-.43,.5-1.21,.5-1.64,0Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/directional/CaretLeft.ts\nvar CaretLeft_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9 16\"><path d=\"M1.38,7.18L6.21,3.03c.7-.6,1.79-.1,1.79,.82V12.14c0,.93-1.09,1.42-1.79,.82L1.38,8.82c-.5-.43-.5-1.21,0-1.64Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/directional/CaretRight.ts\nvar CaretRight_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9 16\"><path d=\"M7.62,7.18L2.79,3.03c-.7-.6-1.79-.1-1.79,.82V12.14c0,.93,1.09,1.42,1.79,.82l4.83-4.14c.5-.43,.5-1.21,0-1.64Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/directional/CaretUp.ts\nvar CaretUp_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 9\"><path d=\"M7.18,1.38L3.03,6.21c-.6,.7-.1,1.79,.82,1.79H12.14c.93,0,1.42-1.09,.82-1.79L8.82,1.38c-.43-.5-1.21-.5-1.64,0Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/directional/Down.ts\nvar Down_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 7\"><path d=\"M8,6.5c-.13,0-.26-.05-.35-.15L3.15,1.85c-.2-.2-.2-.51,0-.71,.2-.2,.51-.2,.71,0l4.15,4.15L12.15,1.15c.2-.2,.51-.2,.71,0,.2,.2,.2,.51,0,.71l-4.5,4.5c-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/directional/Left.ts\nvar Left_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 7 16\"><path d=\"M5.5,13c-.13,0-.26-.05-.35-.15L.65,8.35c-.2-.2-.2-.51,0-.71L5.15,3.15c.2-.2,.51-.2,.71,0,.2,.2,.2,.51,0,.71L1.71,8l4.15,4.15c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/directional/Right.ts\nvar Right_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 7 16\"><path d=\"M1.5,13c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71l4.15-4.15L1.15,3.85c-.2-.2-.2-.51,0-.71,.2-.2,.51-.2,.71,0L6.35,7.65c.2,.2,.2,.51,0,.71L1.85,12.85c-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/directional/Up.ts\nvar Up_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 7\"><path d=\"M12.5,6c-.13,0-.26-.05-.35-.15L8,1.71,3.85,5.85c-.2,.2-.51,.2-.71,0-.2-.2-.2-.51,0-.71L7.65,.65c.2-.2,.51-.2,.71,0l4.5,4.5c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/file/index.ts\nvar file_exports = {};\n__export(file_exports, {\n  download: () => Download_default,\n  downloadCloud: () => DownloadCloud_default,\n  fileAudio: () => FileAudio_default,\n  fileDoc: () => FileDoc_default,\n  fileImage: () => FileImage_default,\n  filePdf: () => FilePdf_default,\n  fileVideo: () => FileVideo_default,\n  folder: () => Folder_default,\n  upload: () => Upload_default,\n  uploadCloud: () => UploadCloud_default,\n  zip: () => Zip_default\n});\n\n// packages/icons/src/icons/file/DownloadCloud.ts\nvar DownloadCloud_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 14\"><path d=\"M12,11c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5c1.65,0,3-1.35,3-3s-1.35-3-3-3h-1.05c-.18,0-.34-.09-.43-.25-.64-1.1-1.76-1.75-3.01-1.75-1.93,0-3.5,1.57-3.5,3.5,0,.28-.22,.5-.5,.5h-.5c-1.1,0-2,.9-2,2s.9,2,2,2c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5c-1.65,0-3-1.35-3-3s1.35-3,3-3h.03c.25-2.25,2.16-4,4.47-4,1.49,0,2.89,.76,3.72,2h.78c2.21,0,4,1.79,4,4s-1.79,4-4,4Z\" fill=\"currentColor\"/><path d=\"M7.5,13c-.13,0-.26-.05-.35-.15l-2.5-2.5c-.2-.2-.2-.51,0-.71,.2-.2,.51-.2,.71,0l2.15,2.15,2.15-2.15c.2-.2,.51-.2,.71,0s.2,.51,0,.71l-2.5,2.5c-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/><path d=\"M7.5,12.75c-.28,0-.5-.22-.5-.5V6.25c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v6c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/file/Download.ts\nvar Download_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M7.5,11c-.28,0-.5-.22-.5-.5V1.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V10.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M13.5,15H1.5c-.28,0-.5-.22-.5-.5v-2c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v1.5H13v-1.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v2c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M7.5,12c-.13,0-.26-.05-.35-.15l-3.5-3.5c-.2-.2-.2-.51,0-.71s.51-.2,.71,0l3.15,3.15,3.15-3.15c.2-.2,.51-.2,.71,0s.2,.51,0,.71l-3.5,3.5c-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/file/FileAudio.ts\nvar FileAudio_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M12.5,16H2.5c-.83,0-1.5-.67-1.5-1.5V1.5c0-.83,.67-1.5,1.5-1.5h7.09c.4,0,.78,.16,1.06,.44l2.91,2.91c.28,.28,.44,.66,.44,1.06V14.5c0,.83-.67,1.5-1.5,1.5ZM2.5,1c-.28,0-.5,.22-.5,.5V14.5c0,.28,.22,.5,.5,.5H12.5c.28,0,.5-.22,.5-.5V4.41c0-.13-.05-.26-.15-.35l-2.91-2.91c-.09-.09-.22-.15-.35-.15H2.5Z\" fill=\"currentColor\"/><path d=\"M13.38,5h-2.91c-.81,0-1.47-.66-1.47-1.47V.62c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V3.53c0,.26,.21,.47,.47,.47h2.91c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><rect x=\"5\" y=\"6\" width=\"5\" height=\"2\" fill=\"currentColor\"/><path d=\"M9.5,11c-.28,0-.5-.22-.5-.5v-3c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v3c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M5.5,12c-.28,0-.5-.22-.5-.5V7.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v4c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M8,10h2v1c0,.55-.45,1-1,1h-1c-.55,0-1-.45-1-1h0c0-.55,.45-1,1-1Z\" fill=\"currentColor\"/><path d=\"M4,11h2v1c0,.55-.45,1-1,1h-1c-.55,0-1-.45-1-1h0c0-.55,.45-1,1-1Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/file/FileDoc.ts\nvar FileDoc_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M12.5,16H2.5c-.83,0-1.5-.67-1.5-1.5V1.5c0-.83,.67-1.5,1.5-1.5h7.09c.4,0,.78,.16,1.06,.44l2.91,2.91c.28,.28,.44,.66,.44,1.06V14.5c0,.83-.67,1.5-1.5,1.5ZM2.5,1c-.28,0-.5,.22-.5,.5V14.5c0,.28,.22,.5,.5,.5H12.5c.28,0,.5-.22,.5-.5V4.41c0-.13-.05-.26-.15-.35l-2.91-2.91c-.09-.09-.22-.15-.35-.15H2.5Z\" fill=\"currentColor\"/><path d=\"M13.38,5h-2.91c-.81,0-1.47-.66-1.47-1.47V.62c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V3.53c0,.26,.21,.47,.47,.47h2.91c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M10,13H5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M10,10H5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M7,7h-2c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h2c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/file/FileImage.ts\nvar FileImage_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M6.22,8.14l-3.17,4.28c-.18,.24,0,.58,.29,.58h6.32c.3,0,.47-.34,.29-.58l-3.15-4.28c-.14-.2-.44-.2-.58,0Z\" fill=\"currentColor\"/><path d=\"M9.72,10.09l-1.9,2.57c-.11,.14,0,.35,.17,.35h3.79c.18,0,.28-.2,.17-.35l-1.89-2.57c-.09-.12-.26-.12-.35,0Z\" fill=\"currentColor\"/><circle cx=\"10\" cy=\"8\" r=\"1\" fill=\"currentColor\"/><path d=\"M12.5,16H2.5c-.83,0-1.5-.67-1.5-1.5V1.5c0-.83,.67-1.5,1.5-1.5h7.09c.4,0,.78,.16,1.06,.44l2.91,2.91c.28,.28,.44,.66,.44,1.06V14.5c0,.83-.67,1.5-1.5,1.5ZM2.5,1c-.28,0-.5,.22-.5,.5V14.5c0,.28,.22,.5,.5,.5H12.5c.28,0,.5-.22,.5-.5V4.41c0-.13-.05-.26-.15-.35l-2.91-2.91c-.09-.09-.22-.15-.35-.15H2.5Z\" fill=\"currentColor\"/><path d=\"M13.38,5h-2.91c-.81,0-1.47-.66-1.47-1.47V.62c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V3.53c0,.26,.21,.47,.47,.47h2.91c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/file/FilePdf.ts\nvar FilePdf_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M3,13h.86v-.9h.39c.62,0,1.14-.45,1.14-1.06s-.5-1.05-1.14-1.05h-1.25v3Zm.86-1.59v-.72h.3c.2,0,.37,.13,.37,.35s-.16,.36-.37,.36h-.3Z\" fill=\"currentColor\"/><path d=\"M6.19,13h1.19c1,0,1.62-.59,1.62-1.52,0-.87-.62-1.48-1.62-1.48h-1.19v3Zm.86-.71v-1.59h.29c.33,0,.78,.16,.78,.78,0,.65-.45,.81-.78,.81h-.29Z\" fill=\"currentColor\"/><path d=\"M10,13h.86v-1.07h1.06v-.69h-1.06v-.54h1.21v-.69h-2.06v3Z\" fill=\"currentColor\"/><path d=\"M12.5,16H2.5c-.83,0-1.5-.67-1.5-1.5V1.5c0-.83,.67-1.5,1.5-1.5h7.09c.4,0,.78,.16,1.06,.44l2.91,2.91c.28,.28,.44,.66,.44,1.06V14.5c0,.83-.67,1.5-1.5,1.5ZM2.5,1c-.28,0-.5,.22-.5,.5V14.5c0,.28,.22,.5,.5,.5H12.5c.28,0,.5-.22,.5-.5V4.41c0-.13-.05-.26-.15-.35l-2.91-2.91c-.09-.09-.22-.15-.35-.15H2.5Z\" fill=\"currentColor\"/><path d=\"M13.38,5h-2.91c-.81,0-1.47-.66-1.47-1.47V.62c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V3.53c0,.26,.21,.47,.47,.47h2.91c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/file/FileVideo.ts\nvar FileVideo_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M5.65,11.94l4.14-2.56c.28-.17,.28-.59,0-.76l-4.14-2.56c-.29-.18-.65,.04-.65,.38v5.11c0,.34,.36,.56,.65,.38Z\" fill=\"currentColor\"/><path d=\"M12.5,16H2.5c-.83,0-1.5-.67-1.5-1.5V1.5c0-.83,.67-1.5,1.5-1.5h7.09c.4,0,.78,.16,1.06,.44l2.91,2.91c.28,.28,.44,.66,.44,1.06V14.5c0,.83-.67,1.5-1.5,1.5ZM2.5,1c-.28,0-.5,.22-.5,.5V14.5c0,.28,.22,.5,.5,.5H12.5c.28,0,.5-.22,.5-.5V4.41c0-.13-.05-.26-.15-.35l-2.91-2.91c-.09-.09-.22-.15-.35-.15H2.5Z\" fill=\"currentColor\"/><path d=\"M13.38,5h-2.91c-.81,0-1.47-.66-1.47-1.47V.62c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V3.53c0,.26,.21,.47,.47,.47h2.91c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/file/Folder.ts\nvar Folder_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M13.5,5.88c-.28,0-.5-.22-.5-.5V1.5c0-.28-.22-.5-.5-.5H3.5c-.28,0-.5,.22-.5,.5V3.5c0,.28-.22,.5-.5,.5s-.5-.22-.5-.5V1.5c0-.83,.67-1.5,1.5-1.5H12.5c.83,0,1.5,.67,1.5,1.5v3.88c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M14.5,16H1.5c-.83,0-1.5-.67-1.5-1.5V4.5c0-.83,.67-1.5,1.5-1.5H6.25c.16,0,.31,.07,.4,.2l1.35,1.8h6.5c.83,0,1.5,.67,1.5,1.5V14.5c0,.83-.67,1.5-1.5,1.5ZM1.5,4c-.28,0-.5,.22-.5,.5V14.5c0,.28,.22,.5,.5,.5H14.5c.28,0,.5-.22,.5-.5V6.5c0-.28-.22-.5-.5-.5H7.75c-.16,0-.31-.07-.4-.2l-1.35-1.8H1.5Z\" fill=\"currentColor\"/><path d=\"M5.5,13H3.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h2c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/file/UploadCloud.ts\nvar UploadCloud_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 14\"><path d=\"M12,11c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5c1.65,0,3-1.35,3-3s-1.35-3-3-3h-1.05c-.18,0-.34-.09-.43-.25-.64-1.1-1.76-1.75-3.01-1.75-1.93,0-3.5,1.57-3.5,3.5,0,.28-.22,.5-.5,.5h-.5c-1.1,0-2,.9-2,2s.9,2,2,2c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5c-1.65,0-3-1.35-3-3s1.35-3,3-3h.03c.25-2.25,2.16-4,4.47-4,1.49,0,2.89,.76,3.72,2h.78c2.21,0,4,1.79,4,4s-1.79,4-4,4Z\" fill=\"currentColor\"/><path d=\"M10,9.25c-.13,0-.26-.05-.35-.15l-2.15-2.15-2.15,2.15c-.2,.2-.51,.2-.71,0s-.2-.51,0-.71l2.5-2.5c.2-.2,.51-.2,.71,0l2.5,2.5c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/><path d=\"M7.5,13c-.28,0-.5-.22-.5-.5V6.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v6c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/file/Upload.ts\nvar Upload_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M7.5,12c-.28,0-.5-.22-.5-.5V2.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V11.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M13.5,15H1.5c-.28,0-.5-.22-.5-.5v-2c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v1.5H13v-1.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v2c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M11,5.5c-.13,0-.26-.05-.35-.15l-3.15-3.15-3.15,3.15c-.2,.2-.51,.2-.71,0s-.2-.51,0-.71L7.15,1.15c.2-.2,.51-.2,.71,0l3.5,3.5c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/file/Zip.ts\nvar Zip_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><polygon points=\"6 12.25 6 13 3.75 13 3.75 12.19 4.93 10.73 4.93 10.7 3.75 10.7 3.75 10 6 10 6 10.7 4.73 12.25 6 12.25\" fill=\"currentColor\"/><path d=\"M7.12,13h.75v-3h-.75v3Z\" fill=\"currentColor\"/><path d=\"M9,13h.75v-.9h.4c.6,0,1.1-.45,1.1-1.06s-.48-1.05-1.1-1.05h-1.15v3Zm.75-1.59v-.72h.31c.2,0,.35,.13,.35,.35s-.15,.36-.35,.36h-.31Z\" fill=\"currentColor\"/><path d=\"M5.5,2c-.28,0-.5-.22-.5-.5v-.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M5.5,5c-.28,0-.5-.22-.5-.5v-1c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v1c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M12.5,16H2.5c-.83,0-1.5-.67-1.5-1.5V1.5c0-.83,.67-1.5,1.5-1.5h7.09c.4,0,.78,.16,1.06,.44l2.91,2.91c.28,.28,.44,.66,.44,1.06V14.5c0,.83-.67,1.5-1.5,1.5ZM2.5,1c-.28,0-.5,.22-.5,.5V14.5c0,.28,.22,.5,.5,.5H12.5c.28,0,.5-.22,.5-.5V4.41c0-.13-.05-.26-.15-.35l-2.91-2.91c-.09-.09-.22-.15-.35-.15H2.5Z\" fill=\"currentColor\"/><path d=\"M13.38,5h-2.91c-.81,0-1.47-.66-1.47-1.47V.62c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V3.53c0,.26,.21,.47,.47,.47h2.91c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><rect x=\"3.75\" y=\"10.38\" width=\"1.22\" height=\".38\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/index.ts\nvar input_exports = {};\n__export(input_exports, {\n  button: () => Button_default,\n  checkbox: () => Checkbox_default,\n  color: () => Color_default,\n  date: () => Date_default,\n  datetime: () => Datetime_default,\n  email: () => Email_default,\n  file: () => File_default,\n  group: () => Group_default,\n  hidden: () => Hidden_default,\n  list: () => List_default,\n  month: () => Month_default,\n  number: () => Number_default,\n  password: () => Password_default,\n  radio: () => Radio_default,\n  range: () => Range_default,\n  repeater: () => Repeater_default,\n  select: () => Select_default,\n  submit: () => Submit_default,\n  telephone: () => Telephone_default,\n  text: () => Text_default,\n  textarea: () => Textarea_default,\n  time: () => Time_default,\n  url: () => URL_default,\n  week: () => Week_default\n});\n\n// packages/icons/src/icons/input/Button.ts\nvar Button_default = `<svg viewBox=\"0 0 44 24\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 3H40C40.5523 3 41 3.44771 41 4V20C41 20.5523 40.5523 21 40 21H4C3.44772 21 3 20.5523 3 20V4C3 3.44772 3.44772 3 4 3ZM0 4C0 1.79086 1.79086 0 4 0H40C42.2091 0 44 1.79086 44 4V20C44 22.2091 42.2091 24 40 24H4C1.79086 24 0 22.2091 0 20V4ZM12 10.5C11.1716 10.5 10.5 11.1716 10.5 12C10.5 12.8284 11.1716 13.5 12 13.5H32C32.8284 13.5 33.5 12.8284 33.5 12C33.5 11.1716 32.8284 10.5 32 10.5H12Z\" fill=\"currentColor\" /></svg>`;\n\n// packages/icons/src/icons/input/Checkbox.ts\nvar Checkbox_default = `<svg viewBox=\"0 0 44 44\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"1.5\" y=\"1.5\" width=\"41\" height=\"41\" rx=\"2.5\" stroke=\"currentColor\" stroke-width=\"3\" fill=\"none\" /><path d=\"M17.758 26.2542L30.9563 13.0426L33.3151 15.4013L17.7586 30.9578L10.6875 23.8867L13.0456 21.5285L17.758 26.2542Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/Color.ts\nvar Color_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M5.5,14H2.5c-.28,0-.5-.22-.5-.5v-3c0-.13,.05-.26,.15-.35L7.15,5.15c.2-.2,.51-.2,.71,0l3,3c.2,.2,.2,.51,0,.71l-5,5c-.09,.09-.22,.15-.35,.15Zm-2.5-1h2.29l4.5-4.5-2.29-2.29L3,10.71v2.29Z\" fill=\"currentColor\"/><path d=\"M13.37,5.62l-1.38,1.38-3-3,1.38-1.38c.42-.42,.96-.62,1.5-.62s1.08,.2,1.5,.62c.83,.83,.83,2.17,0,3Z\" fill=\"currentColor\"/><path d=\"M12.5,8c-.13,0-.26-.05-.35-.15L8.15,3.85c-.2-.2-.2-.51,0-.71,.2-.2,.51-.2,.71,0l4,4c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/Date.ts\nvar Date_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M14.5,16H1.5c-.83,0-1.5-.67-1.5-1.5V2.5c0-.83,.67-1.5,1.5-1.5H14.5c.83,0,1.5,.67,1.5,1.5V14.5c0,.83-.67,1.5-1.5,1.5ZM1.5,2c-.28,0-.5,.22-.5,.5V14.5c0,.28,.22,.5,.5,.5H14.5c.28,0,.5-.22,.5-.5V2.5c0-.28-.22-.5-.5-.5H1.5Z\" fill=\"currentColor\"/><path d=\"M4.5,4c-.28,0-.5-.22-.5-.5V.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V3.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M11.5,4c-.28,0-.5-.22-.5-.5V.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V3.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M15.5,6H.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5H15.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/Datetime.ts\nvar Datetime_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M9.5,14H1.5c-.83,0-1.5-.67-1.5-1.5V2.38C0,1.55,.67,.88,1.5,.88H12.5c.83,0,1.5,.67,1.5,1.5v7.25c0,.28-.22,.5-.5,.5s-.5-.22-.5-.5V2.38c0-.28-.22-.5-.5-.5H1.5c-.28,0-.5,.22-.5,.5V12.5c0,.28,.22,.5,.5,.5H9.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M4,3.62c-.28,0-.5-.22-.5-.5V.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V3.12c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M10.12,3.62c-.28,0-.5-.22-.5-.5V.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V3.12c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M13.5,6H.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5H13.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M12.5,16c-1.93,0-3.5-1.57-3.5-3.5s1.57-3.5,3.5-3.5,3.5,1.57,3.5,3.5-1.57,3.5-3.5,3.5Zm0-6c-1.38,0-2.5,1.12-2.5,2.5s1.12,2.5,2.5,2.5,2.5-1.12,2.5-2.5-1.12-2.5-2.5-2.5Z\" fill=\"currentColor\"/><path d=\"M13.5,14c-.13,0-.26-.05-.35-.15l-1-1c-.09-.09-.15-.22-.15-.35v-1.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v1.29l.85,.85c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/Email.ts\nvar Email_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 14\"><path d=\"M14.5,13H1.5c-.83,0-1.5-.67-1.5-1.5V2.5c0-.83,.67-1.5,1.5-1.5H14.5c.83,0,1.5,.67,1.5,1.5V11.5c0,.83-.67,1.5-1.5,1.5ZM1.5,2c-.28,0-.5,.22-.5,.5V11.5c0,.28,.22,.5,.5,.5H14.5c.28,0,.5-.22,.5-.5V2.5c0-.28-.22-.5-.5-.5H1.5Z\" fill=\"currentColor\"/><path d=\"M8,8.96c-.7,0-1.34-.28-1.82-.79L.93,2.59c-.19-.2-.18-.52,.02-.71,.2-.19,.52-.18,.71,.02L6.91,7.48c.57,.61,1.61,.61,2.18,0L14.34,1.91c.19-.2,.51-.21,.71-.02,.2,.19,.21,.51,.02,.71l-5.25,5.58c-.48,.51-1.12,.79-1.82,.79Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/File.ts\nvar File_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M13.5,5.88c-.28,0-.5-.22-.5-.5V1.5c0-.28-.22-.5-.5-.5H3.5c-.28,0-.5,.22-.5,.5V3.5c0,.28-.22,.5-.5,.5s-.5-.22-.5-.5V1.5c0-.83,.67-1.5,1.5-1.5H12.5c.83,0,1.5,.67,1.5,1.5v3.88c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M14.5,16H1.5c-.83,0-1.5-.67-1.5-1.5V4.5c0-.83,.67-1.5,1.5-1.5H6.25c.16,0,.31,.07,.4,.2l1.35,1.8h6.5c.83,0,1.5,.67,1.5,1.5V14.5c0,.83-.67,1.5-1.5,1.5ZM1.5,4c-.28,0-.5,.22-.5,.5V14.5c0,.28,.22,.5,.5,.5H14.5c.28,0,.5-.22,.5-.5V6.5c0-.28-.22-.5-.5-.5H7.75c-.16,0-.31-.07-.4-.2l-1.35-1.8H1.5Z\" fill=\"currentColor\"/><path d=\"M5.5,13H3.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h2c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/Group.ts\nvar Group_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,8.5c-.08,0-.15-.02-.22-.05L1.28,5.2c-.17-.08-.28-.26-.28-.45s.11-.36,.28-.45L7.78,1.05c.14-.07,.31-.07,.45,0l6.5,3.25c.17,.08,.28,.26,.28,.45s-.11,.36-.28,.45l-6.5,3.25c-.07,.04-.15,.05-.22,.05ZM2.62,4.75l5.38,2.69,5.38-2.69-5.38-2.69L2.62,4.75Z\" fill=\"currentColor\"/><path d=\"M8,11.75c-.08,0-.15-.02-.22-.05L1.28,8.45c-.17-.08-.28-.26-.28-.45s.11-.36,.28-.45l3.25-1.62c.25-.12,.55-.02,.67,.22,.12,.25,.02,.55-.22,.67l-2.36,1.18,5.38,2.69,5.38-2.69-2.36-1.18c-.25-.12-.35-.42-.22-.67,.12-.25,.42-.35,.67-.22l3.25,1.62c.17,.08,.28,.26,.28,.45s-.11,.36-.28,.45l-6.5,3.25c-.07,.04-.15,.05-.22,.05Z\" fill=\"currentColor\"/><path d=\"M8,15c-.08,0-.15-.02-.22-.05L1.28,11.7c-.17-.08-.28-.26-.28-.45s.11-.36,.28-.45l3.25-1.62c.25-.12,.55-.02,.67,.22,.12,.25,.02,.55-.22,.67l-2.36,1.18,5.38,2.69,5.38-2.69-2.36-1.18c-.25-.12-.35-.42-.22-.67,.12-.25,.42-.35,.67-.22l3.25,1.62c.17,.08,.28,.26,.28,.45s-.11,.36-.28,.45l-6.5,3.25c-.07,.04-.15,.05-.22,.05Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/Hidden.ts\nvar Hidden_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,11c-1.65,0-3-1.35-3-3s1.35-3,3-3,3,1.35,3,3-1.35,3-3,3Zm0-5c-1.1,0-2,.9-2,2s.9,2,2,2,2-.9,2-2-.9-2-2-2Z\" fill=\"currentColor\"/><path d=\"M8,13c-3.19,0-5.99-1.94-6.97-4.84-.04-.1-.04-.22,0-.32,.98-2.89,3.79-4.84,6.97-4.84s5.99,1.94,6.97,4.84c.04,.1,.04,.22,0,.32-.98,2.89-3.79,4.84-6.97,4.84ZM2.03,8c.89,2.4,3.27,4,5.97,4s5.07-1.6,5.97-4c-.89-2.4-3.27-4-5.97-4s-5.07,1.6-5.97,4Z\" fill=\"currentColor\"/><path d=\"M14,14.5c-.13,0-.26-.05-.35-.15L1.65,2.35c-.2-.2-.2-.51,0-.71,.2-.2,.51-.2,.71,0L14.35,13.65c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/List.ts\nvar List_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 11\"><circle cx=\"3\" cy=\"2.5\" r=\"1\" fill=\"currentColor\"/><circle cx=\"3\" cy=\"5.5\" r=\"1\" fill=\"currentColor\"/><circle cx=\"3\" cy=\"8.5\" r=\"1\" fill=\"currentColor\"/><path d=\"M13.5,3H6.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h7c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M13.5,6H6.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h7c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M13.5,9H6.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h7c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/Month.ts\nvar Month_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M14.5,16H1.5c-.83,0-1.5-.67-1.5-1.5V2.5c0-.83,.67-1.5,1.5-1.5H14.5c.83,0,1.5,.67,1.5,1.5V14.5c0,.83-.67,1.5-1.5,1.5ZM1.5,2c-.28,0-.5,.22-.5,.5V14.5c0,.28,.22,.5,.5,.5H14.5c.28,0,.5-.22,.5-.5V2.5c0-.28-.22-.5-.5-.5H1.5Z\" fill=\"currentColor\"/><path d=\"M4.5,4c-.28,0-.5-.22-.5-.5V.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V3.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M11.5,4c-.28,0-.5-.22-.5-.5V.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V3.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M15.5,6H.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5H15.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M3.23,12h.88l.38-1h1.25l.38,1h.88l-1.5-4h-.73l-1.52,4Zm1.38-1.62l.5-1.5,.5,1.5h-1Z\" fill=\"currentColor\"/><path d=\"M8.19,12c.41,0,.7-.21,.82-.43h.04v.43h.69v-3h-.72v1.68c0,.37-.25,.65-.6,.65s-.57-.24-.57-.6v-1.73h-.72v1.91c0,.62,.41,1.09,1.06,1.09Z\" fill=\"currentColor\"/><path d=\"M11.62,13.02c.92,0,1.38-.54,1.38-1.27v-2.69h-.66v.35h-.04c-.08-.13-.35-.42-.83-.42-.72,0-1.25,.56-1.25,1.41s.54,1.4,1.27,1.4c.48,0,.74-.29,.81-.41h.04v.35c0,.46-.24,.72-.72,.72-.37,0-.58-.15-.63-.4h-.62c.05,.5,.47,.95,1.25,.95Zm0-1.81c-.43,0-.73-.31-.73-.8s.29-.8,.72-.8,.73,.3,.73,.8c0,.46-.28,.8-.73,.8Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/Number.ts\nvar Number_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M13.5,16H1.5c-.83,0-1.5-.67-1.5-1.5V1.5C0,.67,.67,0,1.5,0H13.5c.83,0,1.5,.67,1.5,1.5V14.5c0,.83-.67,1.5-1.5,1.5ZM1.5,1c-.28,0-.5,.22-.5,.5V14.5c0,.28,.22,.5,.5,.5H13.5c.28,0,.5-.22,.5-.5V1.5c0-.28-.22-.5-.5-.5H1.5Z\" fill=\"currentColor\"/><path d=\"M7.41,12c1.66,0,2.59-1.2,2.59-2.54s-1.07-2.36-2.39-2.4v-.07l2.09-1.99v-1H5.25v1h3.25v.12l-2,1.88v.88l.89-.03c.96,0,1.69,.65,1.69,1.64s-.68,1.66-1.67,1.66c-.91,0-1.54-.63-1.57-1.45h-.84c0,1.02,.81,2.3,2.41,2.3Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/Password.ts\nvar Password_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M13.35,16H2.65c-.91,0-1.65-.74-1.65-1.65V6.65c0-.91,.74-1.65,1.65-1.65H13.35c.91,0,1.65,.74,1.65,1.65v7.69c0,.91-.74,1.65-1.65,1.65ZM2.65,6c-.36,0-.65,.29-.65,.65v7.69c0,.36,.29,.65,.65,.65H13.35c.36,0,.65-.29,.65-.65V6.65c0-.36-.29-.65-.65-.65H2.65Z\" fill=\"currentColor\"/><path d=\"M12.54,6H3.46v-1.46C3.46,2.04,5.5,0,8,0s4.54,2.04,4.54,4.54v1.46Zm-8.08-1h7.08v-.46c0-1.95-1.59-3.54-3.54-3.54s-3.54,1.59-3.54,3.54v.46Z\" fill=\"currentColor\"/><circle cx=\"12\" cy=\"10.5\" r=\"1\" fill=\"currentColor\"/><circle cx=\"8\" cy=\"10.5\" r=\"1\" fill=\"currentColor\"/><circle cx=\"4\" cy=\"10.5\" r=\"1\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/Radio.ts\nvar Radio_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,15c-3.86,0-7-3.14-7-7S4.14,1,8,1s7,3.14,7,7-3.14,7-7,7Zm0-13c-3.31,0-6,2.69-6,6s2.69,6,6,6,6-2.69,6-6-2.69-6-6-6Z\" fill=\"currentColor\"/><circle cx=\"8\" cy=\"8\" r=\"4\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/Range.ts\nvar Range_default = `<svg viewBox=\"0 0 14 4\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"currentColor\" d=\"m2.31 2.5h-1.81c-.28 0-.5-.22-.5-.5s.22-.5.5-.5h1.81c-.04.16-.07.33-.07.5s.03.34.07.5zm11.19-1h-7.33c.04.16.07.33.07.5s-.03.34-.07.5h7.33c.28 0 .5-.22.5-.5s-.22-.5-.5-.5zm-7.33 1c-.22.86-1 1.5-1.93 1.5s-1.71-.64-1.93-1.5c-.04-.16-.07-.33-.07-.5s.03-.34.07-.5c.22-.86 1-1.5 1.93-1.5s1.71.64 1.93 1.5c.04.16.07.33.07.5s-.03.34-.07.5zm-.93-.5c0-.55-.45-1-1-1s-1 .45-1 1 .45 1 1 1 1-.45 1-1z\"/></svg>`;\n\n// packages/icons/src/icons/input/Repeater.ts\nvar Repeater_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M13.5,5H2.5c-.83,0-1.5-.67-1.5-1.5v-1c0-.83,.67-1.5,1.5-1.5H13.5c.83,0,1.5,.67,1.5,1.5v1c0,.83-.67,1.5-1.5,1.5ZM2.5,2c-.28,0-.5,.22-.5,.5v1c0,.28,.22,.5,.5,.5H13.5c.28,0,.5-.22,.5-.5v-1c0-.28-.22-.5-.5-.5H2.5Z\" fill=\"currentColor\"/><path d=\"M13.5,10H2.5c-.83,0-1.5-.67-1.5-1.5v-1c0-.83,.67-1.5,1.5-1.5H13.5c.83,0,1.5,.67,1.5,1.5v1c0,.83-.67,1.5-1.5,1.5ZM2.5,7c-.28,0-.5,.22-.5,.5v1c0,.28,.22,.5,.5,.5H13.5c.28,0,.5-.22,.5-.5v-1c0-.28-.22-.5-.5-.5H2.5Z\" fill=\"currentColor\"/><path d=\"M13.5,15H2.5c-.83,0-1.5-.67-1.5-1.5v-1c0-.83,.67-1.5,1.5-1.5H13.5c.83,0,1.5,.67,1.5,1.5v1c0,.83-.67,1.5-1.5,1.5ZM2.5,12c-.28,0-.5,.22-.5,.5v1c0,.28,.22,.5,.5,.5H13.5c.28,0,.5-.22,.5-.5v-1c0-.28-.22-.5-.5-.5H2.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/Select.ts\nvar Select_default = `<svg viewBox=\"0 0 44 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M40 3H4C3.44772 3 3 3.44772 3 4V20C3 20.5523 3.44772 21 4 21H40C40.5523 21 41 20.5523 41 20V4C41 3.44771 40.5523 3 40 3ZM4 0C1.79086 0 0 1.79086 0 4V20C0 22.2091 1.79086 24 4 24H40C42.2091 24 44 22.2091 44 20V4C44 1.79086 42.2091 0 40 0H4ZM8 11.5C8 10.6716 8.37958 10 8.84783 10H20.1522C20.6204 10 21 10.6716 21 11.5C21 12.3284 20.6204 13 20.1522 13H8.84783C8.37958 13 8 12.3284 8 11.5ZM31.7071 10.2929L31 9.58579L29.5858 11L30.2929 11.7071L32.2929 13.7071L33 14.4142L33.7071 13.7071L35.7071 11.7071L36.4142 11L35 9.58579L34.2929 10.2929L33 11.5858L31.7071 10.2929Z\" fill=\"currentColor\" /></svg>`;\n\n// packages/icons/src/icons/input/Submit.ts\nvar Submit_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M12.49,7.14L3.44,2.27c-.76-.41-1.64,.3-1.4,1.13l1.24,4.34c.05,.18,.05,.36,0,.54l-1.24,4.34c-.24,.83,.64,1.54,1.4,1.13l9.05-4.87c.68-.37,.68-1.35,0-1.72Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/Telephone.ts\nvar Telephone_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M10.38,1.52c-.44,.05-.79,.41-.85,.85l-.77,3.27c-.11,.46,.12,.94,.55,1.14l.59,.27c-.44,1.15-1.41,1.94-1.41,1.94,0,0-.8,.97-1.94,1.41l-.27-.59c-.2-.43-.67-.66-1.14-.55l-3.27,.77c-.44,.06-.8,.41-.85,.85-.1,.82-.07,2.1,.85,2.78,0,0,4.15,2.92,9.19-2.12,5.04-5.04,2.12-9.19,2.12-9.19-.69-.92-1.97-.94-2.78-.85Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/Text.ts\nvar Text_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M9.5,4H1.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5H9.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M13.5,7H7.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h6c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M5.5,14c-.28,0-.5-.22-.5-.5V3.55c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V13.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M10.5,14c-.28,0-.5-.22-.5-.5V6.55c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v6.95c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/Textarea.ts\nvar Textarea_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 15 16\"><path d=\"M12.5,2H2.5V6.5H1.5V2c0-.55,.45-1,1-1H12.5c.55,0,1,.45,1,1V6.5h-1V2Z\" fill=\"currentColor\"/><path d=\"M2.5,14H12.5v-4.5h1v4.5c0,.55-.45,1-1,1H2.5c-.55,0-1-.45-1-1v-4.5h1v4.5Z\" fill=\"currentColor\"/><path d=\"M10.5,5H4.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h6c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M7.5,12c-.28,0-.5-.22-.5-.5V4.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v7c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M2,10c-1.1,0-2-.9-2-2s.9-2,2-2,2,.9,2,2-.9,2-2,2Zm0-3c-.55,0-1,.45-1,1s.45,1,1,1,1-.45,1-1-.45-1-1-1Z\" fill=\"currentColor\"/><path d=\"M13,10c-1.1,0-2-.9-2-2s.9-2,2-2,2,.9,2,2-.9,2-2,2Zm0-3c-.55,0-1,.45-1,1s.45,1,1,1,1-.45,1-1-.45-1-1-1Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/Time.ts\nvar Time_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M8,15c-3.86,0-7-3.14-7-7S4.14,1,8,1s7,3.14,7,7-3.14,7-7,7Zm0-13c-3.31,0-6,2.69-6,6s2.69,6,6,6,6-2.69,6-6-2.69-6-6-6Z\" fill=\"currentColor\"/><path d=\"M10,10.5c-.09,0-.18-.02-.26-.07l-2.5-1.5c-.15-.09-.24-.25-.24-.43V4.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v3.72l2.26,1.35c.24,.14,.31,.45,.17,.69-.09,.16-.26,.24-.43,.24Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/URL.ts\nvar URL_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 13 16\"><circle cx=\"2\" cy=\"10\" r=\"1\" fill=\"currentColor\"/><circle cx=\"2\" cy=\"6\" r=\"1\" fill=\"currentColor\"/><path d=\"M4.5,14c-.06,0-.11,0-.17-.03-.26-.09-.39-.38-.3-.64L8.03,2.33c.09-.26,.38-.39,.64-.3,.26,.09,.39,.38,.3,.64L4.97,13.67c-.07,.2-.27,.33-.47,.33Z\" fill=\"currentColor\"/><path d=\"M7.5,14c-.06,0-.11,0-.17-.03-.26-.09-.39-.38-.3-.64L11.03,2.33c.09-.26,.38-.39,.64-.3,.26,.09,.39,.38,.3,.64L7.97,13.67c-.07,.2-.27,.33-.47,.33Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/input/Week.ts\nvar Week_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M14.5,16H1.5c-.83,0-1.5-.67-1.5-1.5V2.5c0-.83,.67-1.5,1.5-1.5H14.5c.83,0,1.5,.67,1.5,1.5V14.5c0,.83-.67,1.5-1.5,1.5ZM1.5,2c-.28,0-.5,.22-.5,.5V14.5c0,.28,.22,.5,.5,.5H14.5c.28,0,.5-.22,.5-.5V2.5c0-.28-.22-.5-.5-.5H1.5Z\" fill=\"currentColor\"/><path d=\"M4.5,4c-.28,0-.5-.22-.5-.5V.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V3.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M11.5,4c-.28,0-.5-.22-.5-.5V.5c0-.28,.22-.5,.5-.5s.5,.22,.5,.5V3.5c0,.28-.22,.5-.5,.5Z\" fill=\"currentColor\"/><path d=\"M15.5,6H.5c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5H15.5c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\" fill=\"currentColor\"/><circle cx=\"4\" cy=\"9\" r=\"1\" fill=\"currentColor\"/><circle cx=\"8\" cy=\"9\" r=\"1\" fill=\"currentColor\"/><circle cx=\"12\" cy=\"9\" r=\"1\" fill=\"currentColor\"/><circle cx=\"4\" cy=\"12\" r=\"1\" fill=\"currentColor\"/><circle cx=\"8\" cy=\"12\" r=\"1\" fill=\"currentColor\"/><circle cx=\"12\" cy=\"12\" r=\"1\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/payment/index.ts\nvar payment_exports = {};\n__export(payment_exports, {\n  amex: () => Amex_default,\n  discover: () => Discover_default,\n  mastercard: () => Mastercard_default,\n  paypal: () => Paypal_default,\n  stripe: () => Stripe_default,\n  visa: () => Visa_default\n});\n\n// packages/icons/src/icons/payment/Amex.ts\nvar Amex_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 14\"><path d=\"M14.5,13H1.5c-.83,0-1.5-.67-1.5-1.5V2.5c0-.83,.67-1.5,1.5-1.5H14.5c.83,0,1.5,.67,1.5,1.5V11.5c0,.83-.67,1.5-1.5,1.5ZM1.5,2c-.28,0-.5,.22-.5,.5V11.5c0,.28,.22,.5,.5,.5H14.5c.28,0,.5-.22,.5-.5V2.5c0-.28-.22-.5-.5-.5H1.5Z\" fill=\"currentColor\"/><path d=\"M8,10.05v-2.82h2.39v.65h-1.62v.44h1.58v.64h-1.58v.43h1.62v.66h-2.39Z\" fill=\"currentColor\" fill-rule=\"evenodd\"/><path d=\"M10.38,10.05l1.32-1.41-1.32-1.41h1.02l.81,.89,.81-.89h.98v.02l-1.29,1.39,1.29,1.37v.04h-.99l-.82-.9-.81,.9h-1Z\" fill=\"currentColor\" fill-rule=\"evenodd\"/><path d=\"M8.24,4.01l-1.24,2.78h.85l.23-.56h1.26l.23,.56h.87l-1.23-2.78h-.98Zm.11,1.6l.37-.89,.37,.89h-.74Z\" fill=\"currentColor\" fill-rule=\"evenodd\"/><path d=\"M10.43,6.79v-2.78h1.19l.61,1.71,.62-1.71h1.15v2.78h-.74v-1.9l-.7,1.9h-.67l-.71-1.91v1.91h-.75Z\" fill=\"currentColor\" fill-rule=\"evenodd\"/></svg>`;\n\n// packages/icons/src/icons/payment/Discover.ts\nvar Discover_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 14\"><path d=\"M14.5,13H1.5c-.83,0-1.5-.67-1.5-1.5V2.5c0-.83,.67-1.5,1.5-1.5H14.5c.83,0,1.5,.67,1.5,1.5V11.5c0,.83-.67,1.5-1.5,1.5ZM1.5,2c-.28,0-.5,.22-.5,.5V11.5c0,.28,.22,.5,.5,.5H14.5c.28,0,.5-.22,.5-.5V2.5c0-.28-.22-.5-.5-.5H1.5Z\" fill=\"currentColor\"/><path d=\"M9.37,6.99c0-.26-.1-.52-.29-.71-.2-.2-.45-.29-.71-.29h0c-.56,0-1.01,.44-1.01,1.01s.45,1.01,1.01,1.01,1.01-.45,1.01-1.01h0Z\" fill=\"currentColor\"/><path d=\"M7.17,7.43c-.15,.15-.29,.21-.44,.21-.36,0-.63-.27-.63-.66,0-.19,.07-.35,.19-.49,.11-.1,.25-.17,.41-.17,.17,0,.31,.06,.46,.21v-.45c-.15-.08-.29-.12-.46-.12-.25,.02-.48,.12-.66,.27-.05,.05-.1,.1-.14,.16-.13,.17-.21,.37-.21,.6,0,.56,.45,.99,1.01,.99h.02c.15,0,.29-.04,.46-.12v-.45s0,.01-.01,.02v-.02Z\" fill=\"currentColor\"/><path d=\"M10.64,6.25l-.44,1.08-.5-1.28h-.41l.79,1.95h.21l.83-1.95h-.41l-.08,.2Z\" fill=\"currentColor\"/><path d=\"M11.29,6.9v1.05h1.06v-.31h-.68v-.52h.66v-.33h-.66v-.41h.68v-.33h-1.06v.85Z\" fill=\"currentColor\"/><path d=\"M2.54,6.05h-.54v1.9h.54c.29,0,.5-.08,.68-.21,.21-.17,.35-.45,.35-.74,0-.56-.41-.95-1.03-.95Zm.45,1.43c-.12,.1-.27,.15-.5,.15h-.12v-1.26h.1c.23,0,.39,.04,.5,.15,.14,.12,.21,.29,.21,.46,.02,.17-.06,.37-.19,.48Z\" fill=\"currentColor\"/><path d=\"M4.11,6.05h-.37v1.9h.37v-1.9Z\" fill=\"currentColor\"/><path d=\"M5.04,6.79c-.23-.08-.29-.14-.29-.23,0-.12,.12-.21,.27-.21,.12,0,.21,.04,.31,.15l.19-.25c-.15-.14-.35-.21-.56-.21-.33,0-.6,.23-.6,.54,0,.27,.12,.39,.46,.52,.15,.06,.21,.08,.25,.12,.08,.04,.12,.12,.12,.19,0,.15-.12,.27-.29,.27s-.33-.1-.41-.25l-.23,.23c.17,.25,.39,.37,.66,.37,.39,0,.66-.25,.66-.62,0-.33-.12-.46-.54-.62Z\" fill=\"currentColor\"/><path d=\"M13.4,7.15c.29-.06,.45-.25,.45-.54,0-.35-.25-.56-.68-.56h-.56v1.9h.37v-.75h.06l.52,.75h.45l-.6-.79Zm-.31-.23h-.12v-.58h.12c.23,0,.37,.1,.37,.29s-.14,.29-.37,.29Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/payment/Mastercard.ts\nvar Mastercard_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 14\"><path d=\"M14.5,13H1.5c-.83,0-1.5-.67-1.5-1.5V2.5c0-.83,.67-1.5,1.5-1.5H14.5c.83,0,1.5,.67,1.5,1.5V11.5c0,.83-.67,1.5-1.5,1.5ZM1.5,2c-.28,0-.5,.22-.5,.5V11.5c0,.28,.22,.5,.5,.5H14.5c.28,0,.5-.22,.5-.5V2.5c0-.28-.22-.5-.5-.5H1.5Z\" fill=\"currentColor\"/><path d=\"M9.35,4.57h-2.7v4.86h2.7V4.57Z\" fill=\"currentColor\"/><path d=\"M6.82,7c0-.47,.11-.93,.31-1.35,.2-.42,.5-.79,.87-1.08-.46-.36-1-.58-1.58-.64-.58-.06-1.16,.04-1.68,.29-.52,.25-.96,.65-1.27,1.14-.31,.49-.47,1.06-.47,1.64s.16,1.15,.47,1.64c.31,.49,.75,.89,1.27,1.14s1.1,.35,1.68,.29c.58-.06,1.12-.28,1.58-.64-.37-.29-.67-.66-.87-1.08-.2-.42-.31-.88-.31-1.35Z\" fill=\"currentColor\"/><path d=\"M13,7c0,.58-.16,1.15-.47,1.64-.31,.49-.75,.89-1.27,1.14-.52,.25-1.1,.35-1.68,.29-.58-.06-1.12-.28-1.58-.64,.37-.29,.67-.66,.87-1.08,.2-.42,.31-.88,.31-1.35s-.11-.93-.31-1.35c-.2-.42-.5-.79-.87-1.08,.46-.36,1-.58,1.58-.64,.58-.06,1.16,.04,1.68,.29,.52,.25,.96,.65,1.27,1.14s.47,1.06,.47,1.64h0Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/payment/Paypal.ts\nvar Paypal_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 14\"><path d=\"M14.5,13H1.5c-.83,0-1.5-.67-1.5-1.5V2.5c0-.83,.67-1.5,1.5-1.5H14.5c.83,0,1.5,.67,1.5,1.5V11.5c0,.83-.67,1.5-1.5,1.5ZM1.5,2c-.28,0-.5,.22-.5,.5V11.5c0,.28,.22,.5,.5,.5H14.5c.28,0,.5-.22,.5-.5V2.5c0-.28-.22-.5-.5-.5H1.5Z\" fill=\"currentColor\"/><path d=\"M10.06,5.51s0,.06-.03,.1c-.26,1.28-1.09,1.7-2.18,1.7h-.55c-.13,0-.26,.1-.26,.22l-.29,1.8-.06,.51c0,.1,.06,.16,.13,.16h.99c.13,0,.22-.1,.22-.19v-.06l.19-1.16v-.06c.03-.13,.13-.19,.22-.19h.16c.96,0,1.7-.39,1.89-1.51,.1-.48,.03-.87-.19-1.12-.06-.06-.16-.13-.26-.19Z\" fill=\"currentColor\"/><path d=\"M9.81,5.41s-.06-.03-.13-.03c-.03,0-.1-.03-.13-.03-.16-.03-.32-.03-.48-.03h-1.48s-.06,0-.1,.03c-.06,.03-.13,.1-.13,.16l-.32,1.99v.06c.03-.13,.13-.22,.26-.22h.55c1.09,0,1.93-.45,2.18-1.7,0-.03,0-.06,.03-.1l-.19-.1s-.06-.03-.06-.03Z\" fill=\"currentColor\"/><path d=\"M7.37,5.51c0-.06,.06-.13,.13-.16,.03,0,.06-.03,.1-.03h1.48c.16,0,.35,0,.48,.03,.03,0,.1,0,.13,.03,.03,0,.06,.03,.13,.03t.06,.03l.19,.1c.06-.48,0-.8-.26-1.09-.29-.32-.8-.45-1.44-.45h-1.89c-.13,0-.26,.1-.26,.22l-.77,4.94c0,.1,.06,.19,.16,.19h1.16l.29-1.86,.32-1.99Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/icons/payment/Stripe.ts\nvar Stripe_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M14.5,14H1.5c-.83,0-1.5-.67-1.5-1.5V3.5c0-.83,.67-1.5,1.5-1.5H14.5c.83,0,1.5,.67,1.5,1.5V12.5c0,.83-.67,1.5-1.5,1.5ZM1.5,3c-.28,0-.5,.22-.5,.5V12.5c0,.28,.22,.5,.5,.5H14.5c.28,0,.5-.22,.5-.5V3.5c0-.28-.22-.5-.5-.5H1.5Z\" fill=\"currentColor\"/><path d=\"M8.5,6.18l-.84,.18v-.68l.84-.18v.68Zm1.74,.38c-.33,0-.54,.15-.65,.26l-.04-.21h-.73v3.88l.83-.18v-.94c.12,.09,.3,.21,.59,.21,.6,0,1.14-.48,1.14-1.53,0-.96-.55-1.49-1.14-1.49Zm-.2,2.29c-.2,0-.31-.07-.39-.16v-1.23c.08-.1,.2-.16,.39-.16,.3,0,.51,.34,.51,.77s-.21,.78-.51,.78Zm3.96-.77c0-.85-.41-1.52-1.2-1.52s-1.27,.67-1.27,1.52c0,1,.57,1.51,1.38,1.51,.4,0,.7-.09,.92-.22v-.67c-.23,.11-.49,.18-.82,.18s-.61-.11-.65-.51h1.63s0-.06,0-.11c0-.07,0-.14,0-.19Zm-1.65-.32c0-.38,.23-.53,.44-.53s.42,.16,.42,.53h-.86Zm-4.69-1.15h.84v2.91h-.84v-2.91Zm-.95,0l.05,.25c.2-.36,.59-.29,.69-.25v.76c-.1-.04-.44-.08-.63,.17v1.97h-.83v-2.91h.72Zm-1.61-.72l-.81,.17v2.66c0,.49,.37,.85,.86,.85,.27,0,.47-.05,.58-.11v-.68c-.11,.04-.63,.2-.63-.3v-1.18h.63v-.71h-.63v-.72Zm-1.97,1.39c-.18,0-.28,.05-.28,.18,0,.14,.18,.2,.41,.28,.37,.13,.86,.29,.86,.91,0,.6-.48,.94-1.17,.94-.29,0-.6-.06-.91-.19v-.79c.28,.15,.63,.27,.91,.27,.19,0,.32-.05,.32-.2s-.2-.23-.44-.32c-.37-.13-.83-.3-.83-.85,0-.59,.45-.94,1.13-.94,.28,0,.55,.04,.83,.15v.78c-.25-.14-.57-.21-.83-.21Z\" fill=\"currentColor\" fill-rule=\"evenodd\"/></svg>`;\n\n// packages/icons/src/icons/payment/Visa.ts\nvar Visa_default = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"M14.5,14H1.5c-.83,0-1.5-.67-1.5-1.5V3.5c0-.83,.67-1.5,1.5-1.5H14.5c.83,0,1.5,.67,1.5,1.5V12.5c0,.83-.67,1.5-1.5,1.5ZM1.5,3c-.28,0-.5,.22-.5,.5V12.5c0,.28,.22,.5,.5,.5H14.5c.28,0,.5-.22,.5-.5V3.5c0-.28-.22-.5-.5-.5H1.5Z\" fill=\"currentColor\"/><path d=\"M13.19,6.43h-.75c-.23,0-.4,.07-.51,.3l-1.44,3.28h1.02s.18-.44,.21-.54h1.25c.04,.12,.12,.53,.12,.53h.91l-.81-3.56Zm-1.19,2.3c.09-.21,.39-1,.39-1,0,.02,.09-.21,.12-.33l.07,.32s.19,.86,.23,1.04h-.81v-.02Z\" fill=\"currentColor\"/><path d=\"M10.56,8.83c0,.74-.67,1.23-1.7,1.23-.44,0-.86-.09-1.09-.19l.14-.81,.12,.05c.32,.14,.53,.19,.91,.19,.28,0,.58-.11,.58-.35,0-.16-.12-.26-.51-.44-.37-.18-.86-.46-.86-.96,0-.7,.68-1.18,1.65-1.18,.37,0,.68,.07,.88,.16l-.14,.77-.07-.07c-.18-.07-.4-.14-.74-.14-.37,.02-.54,.18-.54,.32,0,.16,.21,.28,.54,.44,.56,.26,.82,.56,.82,.98Z\" fill=\"currentColor\"/><path d=\"M2,6.46l.02-.07h1.51c.21,0,.37,.07,.42,.3l.33,1.58c-.33-.84-1.11-1.53-2.28-1.81Z\" fill=\"currentColor\"/><path d=\"M6.4,6.43l-1.53,3.56h-1.04l-.88-2.98c.63,.4,1.16,1.04,1.35,1.47l.11,.37,.95-2.44h1.04v.02Z\" fill=\"currentColor\"/><path d=\"M6.81,6.41h.96l-.61,3.58h-.96l.61-3.58Z\" fill=\"currentColor\"/></svg>`;\n\n// packages/icons/src/genesisIcons.ts\nvar genesisIcons = {\n  add: Add_default,\n  arrowDown: ArrowDown_default,\n  arrowUp: ArrowUp_default,\n  check: Check_default,\n  close: Close_default,\n  checkboxDecorator: Check_default,\n  date: Date_default,\n  dragHandle: DragHandle_default,\n  fileItem: FileDoc_default,\n  fileRemove: Close_default,\n  noFiles: FileDoc_default,\n  radioDecorator: Circle_default,\n  select: Down_default,\n  spinner: Spinner_default,\n  star: Star_default,\n  trash: Trash_default,\n  fastForward: FastForward_default,\n  right: Right_default,\n  left: Left_default,\n  rewind: Rewind_default,\n  color: Color_default\n};\nvar genesisIcons_default = genesisIcons;\n\n// packages/icons/src/index.ts\nvar src_default = icons_single_exports;\n\nexport { Add_default as add, Amex_default as amex, Android_default as android, Apple_default as apple, application_exports as applicationIcons, ArrowDown_default as arrowDown, ArrowLeft_default as arrowLeft, ArrowRight_default as arrowRight, ArrowUp_default as arrowUp, AvatarMan_default as avatarMan, AvatarWoman_default as avatarWoman, Bitcoin_default as bitcoin, Bnb_default as bnb, Bookmark_default as bookmark, brand_exports as brandIcons, Button_default as button, Cardano_default as cardano, CaretDown_default as caretDown, CaretLeft_default as caretLeft, CaretRight_default as caretRight, CaretUp_default as caretUp, Check_default as check, Checkbox_default as checkbox, Circle_default as circle, Close_default as close, Color_default as color, Compress_default as compress, crypto_exports as cryptoIcons, currency_exports as currencyIcons, Date_default as date, Datetime_default as datetime, src_default as default, directional_exports as directionalIcons, Discover_default as discover, Dogecoin_default as dogecoin, Dollar_default as dollar, Down_default as down, Download_default as download, DownloadCloud_default as downloadCloud, DragHandle_default as dragHandle, Email_default as email, Ethereum_default as ethereum, Euro_default as euro, Expand_default as expand, Export_default as exportAction, Eye_default as eye, EyeClosed_default as eyeClosed, Facebook_default as facebook, FastForward_default as fastForward, File_default as file, FileAudio_default as fileAudio, FileDoc_default as fileDoc, file_exports as fileIcons, FileImage_default as fileImage, FilePdf_default as filePdf, FileVideo_default as fileVideo, Flag_default as flag, Folder_default as folder, Franc_default as franc, genesisIcons_default as genesisIcons, Github_default as github, Google_default as google, Group_default as group, Happy_default as happy, Heart_default as heart, Help_default as help, Hidden_default as hidden, icons_single_exports as icons, Info_default as info, input_exports as inputIcons, Instagram_default as instagram, Krona_default as krona, Left_default as left, Link_default as link, LinkExternal_default as linkExternal, Linkedin_default as linkedin, Lira_default as lira, List_default as list, Mastercard_default as mastercard, Medium_default as medium, Megaphone_default as megaphone, Minimize_default as minimize, Month_default as month, MultiCurrency_default as multiCurrency, Number_default as number, Open_default as open, Password_default as password, Pause_default as pause, payment_exports as paymentIcons, Paypal_default as paypal, People_default as people, Peso_default as peso, Pinterest_default as pinterest, Play_default as play, PlayCircle_default as playCircle, Pound_default as pound, Radio_default as radio, Range_default as range, Reddit_default as reddit, Refresh_default as refresh, Reorder_default as reorder, Repeater_default as repeater, Reply_default as reply, Rewind_default as rewind, Right_default as right, Ruble_default as ruble, Rupee_default as rupee, Sad_default as sad, Search_default as search, Select_default as select, Settings_default as settings, Share_default as share, Shekel_default as shekel, Skype_default as skype, Snapchat_default as snapchat, Solana_default as solana, Spinner_default as spinner, Star_default as star, Start_default as start, StepBack_default as stepBack, StepForward_default as stepForward, Stop_default as stop, Stripe_default as stripe, Submit_default as submit, Tag_default as tag, Telephone_default as telephone, Tether_default as tether, Text_default as text, Textarea_default as textarea, Tiktok_default as tiktok, Time_default as time, Tools_default as tools, Trash_default as trash, Twitter_default as twitter, Up_default as up, Upload_default as upload, UploadCloud_default as uploadCloud, URL_default as url, Usdc_default as usdc, Vimeo_default as vimeo, Visa_default as visa, VolumeDown_default as volumeDown, VolumeUp_default as volumeUp, Warning_default as warning, Week_default as week, Whatsapp_default as whatsapp, Won_default as won, Wordpress_default as wordpress, Yen_default as yen, Youtube_default as youtube, Yuan_default as yuan, Zip_default as zip };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","// The following Tailwind theme aspires to be a reproduction of the\n// default optional Genesis CSS theme that ships with FormKit\n\nexport default {\n  // Global styles apply to _all_ inputs with matching section keys\n  global: {\n    fieldset: 'max-w-md pb-1',\n    help: 'text-xs text-gray-500 dark:text-new-gray-200',\n    inner:\n      'formkit-disabled:bg-gray-200 formkit-disabled:cursor-not-allowed formkit-disabled:pointer-events-none ring-new-gray-100 dark:ring-new-gray-800 dark:bg-new-gray-900',\n    input:\n      'appearance-none bg-transparent focus:outline-none focus:ring-0 focus:shadow-none dark:text-white text-base sm:text-sm',\n    label: 'block mb-1 font-medium text-sm',\n    legend: 'font-medium text-sm mb-2',\n    loaderIcon: 'inline-flex items-center w-4 text-gray-600 animate-spin',\n    message: 'text-error-600 mb-1 text-xs',\n    messages: 'list-none p-0 mt-1 mb-0',\n    outer: 'mb-4 formkit-disabled:opacity-50',\n    prefixIcon:\n      'w-10 flex self-stretch grow-0 shrink-0 rounded-tl rounded-bl border-r border-gray-400 bg-white bg-gradient-to-b from-transparent to-gray-200 [&>svg]:w-full [&>svg]:max-w-[1em] [&>svg]:max-h-[1em] [&>svg]:m-auto',\n    suffixIcon:\n      'w-7 flex self-stretch grow-0 shrink-0 [&>svg]:w-full [&>svg]:max-w-[1em] [&>svg]:max-h-[1em] [&>svg]:m-auto',\n  },\n\n  // Family styles apply to all inputs that share a common family\n  'family:box': {\n    decorator:\n      'block relative h-3 w-3 rounded-sm bg-white ring-1 peer-focus:ring-slate-blue-600 ring-new-gray-400 peer-checked:ring-new-green-800 peer-checked:bg-new-green-800 text-transparent peer-checked:text-white',\n    decoratorIcon:\n      'flex p-[1px] w-full h-full absolute top-1/2 left-1/2 -translate-y-1/2 -translate-x-1/2',\n    help: 'mb-3 mt-1.5',\n    input: 'absolute w-0 h-0 overflow-hidden opacity-0 pointer-events-none peer',\n    inner: '$remove:formkit-disabled:bg-new-gray-200 mr-2',\n    label: '$reset text-sm select-none',\n    wrapper: 'flex items-center mb-1',\n  },\n  'family:button': {\n    input:\n      '$reset inline-flex items-center bg-new-green-600 text-new-jungle-900 text-sm font-medium px-3.5 py-1.5 rounded focus-visible:outline-2 focus-visible:outline-new-green-600 focus-visible:outline-offset-2 formkit-disabled:bg-new-gray-100 formkit-loading:before:w-4 formkit-loading:before:h-4 formkit-loading:before:mr-2 formkit-loading:before:border formkit-loading:before:border-2 formkit-loading:before:border-r-transparent formkit-loading:before:rounded-3xl formkit-loading:before:border-white formkit-loading:before:animate-spin',\n    wrapper: 'mb-1',\n    prefixIcon: '$reset block w-4 -ml-2 mr-2 stretch',\n    suffixIcon: '$reset block w-4 ml-2 stretch',\n  },\n  'family:dropdown': {\n    dropdownWrapper: 'my-2 w-full shadow-lg rounded [&::-webkit-scrollbar]:hidden',\n    emptyMessageInner:\n      'flex items-center justify-center text-sm p-2 text-center w-full text-gray-500 [&>span]:mr-3 [&>span]:ml-0',\n    inner:\n      'max-w-md relative flex ring-1 ring-gray-400 focus-within:ring-new-green-500 focus-within:ring-2 rounded mb-2 formkit-disabled:focus-within:ring-gray-400 formkit-disabled:focus-within:ring-1 [&>span:first-child]:focus-within:text-blue-500',\n    input: 'w-full px-3 py-2',\n    listbox: 'bg-white shadow-lg rounded overflow-hidden',\n    listboxButton: 'flex w-12 self-stretch justify-center mx-auto',\n    listitem:\n      'pl-7 relative hover:bg-gray-300 data-[is-active=\"true\"]:bg-gray-300 aria-selected:bg-blue-600 aria-selected:text-white data-[is-active=\"true\"]:aria-selected:bg-blue-600 data-[is-active=\"true\"]:aria-selected:bg-blue-700',\n    loaderIcon: 'ml-auto',\n    loadMoreInner:\n      'flex items-center justify-center text-sm p-2 text-center w-full text-blue-500 formkit-loading:text-gray-500 cursor-pointer [&>span]:mr-3 [&>span]:ml-0',\n    option: 'p-2.5 asdf',\n    optionLoading: 'pl-2.5 text-gray-400',\n    placeholder: 'p-2.5 text-gray-400',\n    selector: 'flex w-full justify-between items-center min-h-[2.625em] [&u] cursor-default',\n    selection: 'flex w-full',\n    selectedIcon: 'block absolute top-1/2 left-2 w-3 -translate-y-1/2',\n    selectIcon:\n      'flex box-content w-4 px-2 self-stretch grow-0 shrink-0 [&>svg]:w-[1em] cursor-pointer',\n  },\n  'family:text': {\n    inner:\n      'flex items-center max-w-md ring-1 ring-gray-400 focus-within:ring-new-green-500 focus-within:ring-2 [&>label:first-child]:focus-within:text-blue-500 rounded mb-1 bg-white dark:bg-new-gray-900',\n    input:\n      'w-full px-3 py-2 border-none text-base text-new-gray-900 placeholder-new-gray-300 dark:placeholder-new-gray-600',\n  },\n  'family:date': {\n    inner:\n      'flex items-center max-w-md ring-1 ring-gray-400 focus-within:ring-new-green-500 focus-within:ring-2 [&>label:first-child]:focus-within:text-blue-500 rounded mb-1',\n    input: 'w-full px-3 py-2 border-none text-new-gray-900 placeholder-gray-400',\n  },\n\n  // Specific styles apply only to a given input type\n  checkbox: {\n    decorator:\n      '$remove:h-3 $remove:w-3 $remove:block $remove:peer-focus:ring-slate-blue-600 grid w-3.5 h-3.5 ring-inset peer-focus:ring-new-green-900',\n    decoratorIcon: 'place-self-inset w-3/4 h-3/4',\n    optionHelp: 'text-xs text-gray-500 dark:text-new-gray-200 ml-5 mb-1',\n  },\n  color: {\n    inner:\n      'flex max-w-[5.5em] w-full formkit-prefix-icon:max-w-[7.5em] formkit-suffix-icon:formkit-prefix-icon:max-w-[10em]',\n    input:\n      '$reset appearance-none w-full cursor-pointer border-none rounded p-0 m-0 bg-transparent [&::-webkit-color-swatch-wrapper]:p-0 [&::-webkit-color-swatch]:border-none',\n    suffixIcon: 'min-w-[2.5em] pr-0 pl-0 m-auto',\n  },\n  file: {\n    fileItem: 'flex items-center text-gray-800 mb-1 last:mb-0',\n    fileItemIcon: 'w-4 mr-2 shrink-0',\n    fileList: 'shrink grow peer px-3 py-2 formkit-multiple:data-[has-multiple=\"true\"]:mb-6',\n    fileName: 'break-all grow text-ellipsis',\n    fileRemove:\n      'relative z-[2] ml-auto text-[0px] hover:text-error-500 pl-2 peer-data-[has-multiple=true]:text-sm peer-data-[has-multiple=true]:text-blue-500 peer-data-[has-multiple=true]:ml-3 peer-data-[has-multiple=true]:mb-2 formkit-multiple:bottom-[0.15em] formkit-multiple:pl-0 formkit-multiple:ml-0 formkit-multiple:left-[1em] formkit-multiple:formkit-prefix-icon:left-[3.75em]',\n    fileRemoveIcon: 'block text-base w-3 relative z-[2]',\n    inner: 'relative max-w-md cursor-pointer formkit-multiple:[&>button]:absolute',\n    input: 'cursor-pointer text-transparent absolute top-0 right-0 left-0 bottom-0 opacity-0 z-[2]',\n    noFiles: 'flex w-full items-center px-3 py-2 text-gray-400',\n    noFilesIcon: 'w-4 mr-2',\n  },\n  radio: {\n    decorator:\n      '$reset formkit-decorator block relative h-3 w-3 bg-white ring-1 ring-inset peer-focus:ring-new-green-800 ring-new-gray-400 peer-checked:ring-new-green-900 peer-checked:bg-new-green-800 text-transparent peer-checked:text-white rounded-full',\n    decoratorIcon:\n      '$reset formkit-decorator-icon flex absolute top-1/2 left-1/2 -translate-y-1/2 -translate-x-1/2 w-1.5 ',\n    option: 'w-max',\n    wrapper: '$remove:mb-1',\n    optionHelp: 'text-xs text-gray-500 dark:text-new-gray-200',\n  },\n  range: {\n    inner: '$reset flex items-center max-w-md',\n    input: '$reset w-full mb-1 h-2 p-0 rounded-full',\n    prefixIcon:\n      '$reset w-4 mr-1 flex self-stretch grow-0 shrink-0 [&>svg]:max-w-[1em] [&>svg]:max-h-[1em] [&>svg]:m-auto',\n    suffixIcon:\n      '$reset w-4 ml-1 flex self-stretch grow-0 shrink-0 [&>svg]:max-w-[1em] [&>svg]:max-h-[1em] [&>svg]:m-auto',\n  },\n  select: {\n    inner:\n      'flex relative max-w-md items-center rounded mb-1 ring-1 ring-gray-400 focus-within:ring-new-green-500 focus-within:ring-2 [&>span:first-child]:focus-within:text-blue-500',\n    input:\n      'w-full pl-3 pr-8 py-2 border-none text-base text-gray-700 placeholder-gray-400 formkit-multiple:p-0 data-[placeholder=\"true\"]:text-gray-400 formkit-multiple:data-[placeholder=\"true\"]:text-inherit',\n    selectIcon:\n      'flex p-[3px] shrink-0 w-5 mr-2 -ml-[1.5em] h-full pointer-events-none [&>svg]:w-[1em]',\n    option: 'formkit-multiple:p-3 formkit-multiple:text-sm text-gray-700',\n  },\n  textarea: {\n    inner:\n      'flex max-w-md rounded mb-1 ring-1 ring-gray-400 focus-within:ring-new-green-500 focus-within:ring-2 [&>label:first-child]:focus-within:text-blue-500',\n    input:\n      'block w-full h-32 px-3 py-3 border-none text-base text-gray-700 placeholder-gray-400 focus:shadow-outline',\n  },\n\n  // PRO input styles\n  autocomplete: {\n    closeIcon: 'block grow-0 shrink-0 w-3 mr-3.5',\n    inner: 'relative',\n    option: 'grow text-ellipsis',\n    selectionWrapper: `\n      absolute left-0 top-0 right-0 bottom-0 flex rounded bg-gray-100\n      formkit-multiple:static formkit-multiple:mt-0 formkit-multiple:mb-2 formkit-multiple:max-w-md\n    `,\n  },\n  colorpicker: {\n    outer: `\n      group\n      formkit-disabled:cursor-not-allowed\n    `,\n    help: `\n      group-[[data-inline]]:-mt-1\n      group-[[data-inline]]:mb-2\n    `,\n    inner: `\n      relative\n      inline-flex\n      group-[[data-inline]]:shadow-none\n      group-[[data-inline]]:!ring-1\n      group-[[data-inline]]:!ring-gray-400\n    `,\n    swatchPreview: `\n      w-full\n      flex\n      justify-start\n      items-center\n      p-3\n      rounded-md\n      text-sm\n      cursor-pointer\n      outline-none\n    `,\n    canvasSwatchPreviewWrapper: `\n      relative\n      before:content-['']\n      before:absolute\n      before:top-0\n      before:left-0\n      before:w-full\n      before:h-full\n      before:rounded-sm\n      before:shadow-[inset_0_0_0_1px_rgba(0,0,0,0.2)]\n      before:z-[2]\n    `,\n    canvasSwatchPreview: `\n      rounded\n      aspect-[2/1]\n      w-10\n    `,\n    valueString: `\n      inline-block\n      ml-2\n      mr-1\n    `,\n    panel: `\n      flex\n      flex-col\n      max-w-[300px]\n      p-2\n      rounded\n      bg-white\n      touch-manipulation\n      absolute\n      w-[100vw]\n      top-full\n      left-0\n      border\n      shadow-xl\n      z-10\n      group-[[data-inline]]:static\n      group-[[data-inline]]:w-auto\n      group-[[data-inline]]:shadow-none\n      group-[[data-inline]]:z-auto\n      [@media(max-width:431px)_and_(hover:none)]:group-[&:not([data-inline])]:!fixed\n      [@media(max-width:431px)_and_(hover:none)]:group-[&:not([data-inline])]:top-auto\n      [@media(max-width:431px)_and_(hover:none)]:group-[&:not([data-inline])]:max-w-none\n      [@media(max-width:431px)_and_(hover:none)]:group-[&:not([data-inline])]:bottom-0\n      [@media(max-width:431px)_and_(hover:none)]:group-[&:not([data-inline])]:left-0\n      [@media(max-width:431px)_and_(hover:none)]:group-[&:not([data-inline])]:rounded-none\n    `,\n    panelClose: `\n      flex\n      justify-end\n      items-center\n      mb-1\n      -mt-1\n      border-none\n      bg-none\n      border-b\n      w-[calc(100%+1rem)]\n      -ml-2\n      pt-0\n      pr-2\n      pb-1\n      pl-2\n    `,\n    closeIcon: `\n      w-[2rem]\n      aspect-square\n      p-1\n      rounded-full\n      border\n      [&>svg]:w-full\n      [&>svg]:aspect-square\n      [&>svg]:max-w-none\n      [&>svg]:max-h-none\n    `,\n    controlGroup: `\n      grid\n      [grid-template-areas:'a_a_a'_'b_c_e'_'b_d_e']\n      mb-2\n    `,\n    canvas: `\n      block\n      w-full\n    `,\n    canvasLS: `\n      aspect-[2/1]\n      cursor-pointer\n      rounded-sm\n    `,\n    LS: `\n      [grid-area:a]\n      relative\n      mb-2\n    `,\n    preview: `\n      [grid-area:b]\n      w-8\n      inline-flex\n      relative\n      rounded\n      overflow-hidden\n      aspect-square\n      rounded-sm\n      after:content-['']\n      after:absolute\n      after:top-0\n      after:left-0\n      after:w-full\n      after:h-full\n      after:rounded-sm\n      after:shadow-[inset_0_0_0_1px_rgba(0,0,0,0.2)]\n    `,\n    hue: `\n      [grid-area:c]\n      relative\n      inline-flex\n      h-3/4\n      ml-2\n    `,\n    alpha: `\n      [grid-area:d]\n      relative\n      inline-flex\n      h-3/4\n      ml-2\n    `,\n    eyeDropper: `\n      [grid-area:e]\n      p-1.5\n      ml-2\n      inline-flex\n      self-center\n      justify-self-center\n      aspect-square\n      rounded-sm\n      border\n      cursor-pointer\n      content-center\n      items-center\n    `,\n    eyeDropperIcon: `\n      w-auto\n      [&>svg]:w-5\n    `,\n    control: `\n      absolute\n      bg-white\n      shadow-[0_0_0_2px_rgba(255,255,255,1),0_0_0_3px_rgba(0,0,0,0.2)]\n      -translate-x-1/2\n      -translate-y-1/2\n      pointer-events-none\n      data-[prevent-focus-style]:shadow-[0_0_0_2px_rgba(255,255,255,1),0_0_0_3px_rgba(0,0,0,0.2)]\n      focus-visible:outline-none\n      focus-visible:shadow-[0_0_0_2px_rgba(255,255,255,1),0_0_0_3px_rgba(0,0,0,0.2),0_0_0_4px_rgba(59,130,246,1),0_0_0_5px_rgba(0,0,0,1)]\n    `,\n    controlLS: `\n      w-[10px]\n      h-[10px]\n      rounded-full\n    `,\n    controlHue: `\n      w-[4px]\n      h-[calc(100%-2px)]\n      top-1/2\n      rounded-[1px]\n    `,\n    controlAlpha: `\n      w-[4px]\n      h-[calc(100%-2px)]\n      top-1/2\n      rounded-[1px]\n    `,\n    formatField: `\n      flex\n      items-center\n      justify-center\n      grow\n    `,\n    colorInputGroup: `\n      flex\n      items-center\n      justify-center\n      grow\n    `,\n    fieldGroup: `\n      flex\n      flex-col\n      items-center\n      justify-center\n      w-full\n      mr-1\n      [&>input]:p-1\n      [&>input]:text-sm\n      [&>input]:m-0\n      [&>input]:grow\n      [&>input]:shrink\n      [&>input]:w-full\n      [&>input]:border\n      [&>input]:rounded-sm\n      [&>input]:text-center\n      [&>input]:appearance-none\n      [&>input::-webkit-outer-spin-button]:appearance-none\n      [&>input::-webkit-inner-spin-button]:appearance-none\n      [&>input::-webkit-inner-spin-button]:m-0\n      [&>input:focus]:outline-none\n      [&>input:focus]:ring\n      [&>input:focus]:ring-blue-500\n      max-[431px]:[&>input]:text-base\n    `,\n    fieldLabel: `\n      text-xs\n      mt-1\n      opacity-50\n    `,\n    formatSwitcher: `\n      flex\n      justify-end\n      self-start\n      mt-1\n      uppercase\n      shrink-0\n      p-1\n      rounded-sm\n      select-none\n    `,\n    switchIcon: `\n      [&>svg]:w-3\n    `,\n    swatches: `\n      flex\n      flex-wrap\n      w[calc(100%+0.5rem)]\n      -ml-1\n      pt-2\n      pb-2\n      mt-2\n      -mb-2\n      border-t\n      overflow-auto\n      max-h-[200px]\n      select-none\n      first:-mt-2\n      first:border-t-0\n    `,\n    swatchGroup: `\n      flex\n      flex-wrap\n      w-full\n      mb-2\n      last:mb-0\n    `,\n    swatchGroupLabel: `\n      block\n      w-full\n      text-sm\n      opacity-50\n    `,\n    swatch: `\n      relative\n      w-full\n      max-w-[calc((100%/10)-0.5rem)]\n      aspect-square\n      m-1\n      cursor-pointer\n      before:content-['']\n      before:absolute\n      before:top-0\n      before:left-0\n      before:w-full\n      before:h-full\n      before:rounded-sm\n      before:shadow-[inset_0_0_0_1px_rgba(0,0,0,0.2)]\n      before:pointer-events-none\n      before:z-[2]\n      data-[active='true']:after:content-['']\n      data-[active='true']:after:block\n      data-[active='true']:after:absolute\n      data-[active='true']:after:w-1.5\n      data-[active='true']:after:h-1.5\n      data-[active='true']:after:top-1/2\n      data-[active='true']:after:left-1/2\n      data-[active='true']:after:pointer-events-none\n      data-[active='true']:after:rounded-full\n      data-[active='true']:after:-translate-x-1/2\n      data-[active='true']:after:-translate-y-1/2\n      data-[active='true']:after:bg-white\n      data-[active='true']:after:z-[2]\n      data-[active='true']:after:ring-1\n      data-[active='true']:after:ring-[rgba(0,0,0,0.33)]\n      [&>canvas]:block\n      [&>canvas]:w-full\n      [&>canvas]:aspect-square\n      [&>canvas]:rounded-sm\n      [&>canvas:focus-visible]:outline-none\n      [&>canvas:focus-visible]:shadow-[0_0_0_2px_rgba(255,255,255,1),0_0_0_4px_rgba(59,130,246,1)]\n    `,\n  },\n  datepicker: {\n    inner: 'relative',\n    panelWrapper:\n      'absolute top-[calc(100%_+_0.5em)] shadow-[0_0_1.25em_rgba(0,0,0,.25)] rounded-md p-5 bg-white z-10',\n    panelHeader:\n      'grid grid-cols-[2.5em_1fr_2.5em] justify-center items-center border-b-2 mb-4 pb-4',\n    input: 'selection:bg-blue-400',\n    monthsHeader: 'flex items-center justify-center col-start-2 col-end-2',\n    timeHeader: 'flex items-center justify-center col-start-2 col-end-2',\n    overlayPlaceholder: 'text-gray-400',\n    months: 'flex flex-wrap',\n    month: `\n      flex items-center justify-center\n      w-[calc(33%_-_1em)] m-2 p-2 rounded-md\n      bg-gray-200\n      aria-selected:bg-blue-500 aria-selected:text-white\n      focus:outline focus:outline-2 focus:outline-blue-500 focus:outline-offset-2 focus:bg-white focus:text-black\n      data-[is-extra=true]:opacity-25\n      formkit-disabled:opacity-50 formkit-disabled:cursor-default formkit-disabled:pointer-events-none\n    `,\n    yearsHeader: 'flex items-center justify-center col-start-2 col-end-2',\n    years: 'flex flex-wrap max-w-[35em]',\n    year: `\n      flex items-center justify-center\n      w-[calc(20%_-_1em)] m-2 p-2 rounded-md\n      bg-gray-200\n      aria-selected:bg-blue-500 aria-selected:text-white\n      focus:outline focus:outline-2 focus:outline-blue-500 focus:outline-offset-2 focus:bg-white focus:text-black\n      data-[is-extra=true]:opacity-25\n      formkit-disabled:opacity-50 formkit-disabled:cursor-default formkit-disabled:pointer-events-none\n    `,\n    weekDays: 'flex',\n    weekDay:\n      'flex w-[2.25em] h-[1em] m-1 items-center justify-center rounded-md font-medium lowercase',\n    week: 'flex formkit-disabled:opacity-50 formkit-disabled:cursor-default formkit-disabled:pointer-events-none',\n    dayCell: `\n      flex items-center justify-center\n      w-[2.25em] h-[2.25em] m-1 p-2 rounded-md\n      bg-gray-200\n      aria-selected:bg-blue-500 aria-selected:text-white\n      focus:outline focus:outline-2 focus:outline-blue-500 focus:outline-offset-2 focus:bg-white focus:text-black\n      data-[is-extra=true]:opacity-25\n      formkit-disabled:opacity-50 formkit-disabled:cursor-default formkit-disabled:pointer-events-none\n    `,\n    timeInput:\n      'w-full border-2 border-gray-300 rounded-md p-2 my-[2em] focus-visible:outline-blue-500',\n    daysHeader: 'flex items-center justify-center',\n    prev: 'mr-auto px-3 py-1 hover:bg-gray-100 hover:rounded-lg col-start-1 col-end-1',\n    prevLabel: 'hidden',\n    prevIcon: 'flex w-3 select-none [&>svg]:w-full',\n    dayButton:\n      'appearance-none cursor-pointer px-3 py-1 border-2 rounded-lg mx-1 hover:border-blue-500',\n    monthButton:\n      'appearance-none cursor-pointer px-3 py-1 border-2 rounded-lg mx-1 hover:border-blue-500',\n    yearButton:\n      'appearance-none cursor-pointer px-3 py-1 border-2 rounded-lg mx-1 hover:border-blue-500',\n    next: 'ml-auto px-3 py-1 hover:bg-gray-100 hover:rounded col-start-3 col-end-3',\n    nextLabel: 'hidden',\n    nextIcon: 'flex w-3 select-none [&>svg]:w-full',\n    openButton: `\n      appearance-none border-0 bg-transparent flex p-0 self-stretch cursor-pointer\n      focus-visible:outline-none focus-visible:text-white focus-visible:bg-blue-500\n    `,\n    calendarIcon:\n      'flex w-8 grow-0 shrink-0 self-stretch select-none [&>svg]:w-full [&>svg]:m-auto [&>svg]:max-h-[1em] [&>svg]:max-w-[1em]',\n  },\n  dropdown: {\n    tagsWrapper: 'max-w-[calc(100%_-_35px)]',\n    tags: 'flex items-center flex-wrap gap-1 mx-2 my-1.5',\n    tag: 'flex items-center rounded-full bg-gray-200 text-xs text-black py-1 px-2.5 cursor-default',\n    tagLabel: 'px-1',\n    selectionsWrapper: 'flex w-[calc(100%_-_35px)] overflow-hidden',\n    selections: 'inline-flex items-center px-2.5',\n    selectionsItem: 'whitespace-nowrap mr-1 last:mr-0',\n    truncationCount:\n      'flex items-center whitespace-nowrap justify-center rounded text-white bg-gray-500 font-bold text-xs px-1 py-0.5',\n    removeSelection: 'block w-2.5 my-1 cursor-pointer',\n  },\n  rating: {\n    inner: 'relative flex items-center w-[8em] formkit-disabled:bg-transparent',\n    itemsWrapper: 'w-full',\n    onItems: 'text-yellow-400',\n    onItemWrapper: '[&>*]:w-full [&>svg]:h-auto [&>svg]:max-w-none [&>svg]:max-h-none',\n    offItems: 'text-gray-500',\n    offItemWrapper: '[&>*]:w-full [&>svg]:h-auto [&>svg]:max-w-none [&>svg]:max-h-none',\n  },\n  repeater: {\n    content: 'grow p-3 flex flex-col align-center',\n    controlLabel: 'absolute opacity-0 pointer-events-none',\n    controls: 'flex flex-col items-center justify-center bg-gray-100 p-3',\n    downControl: 'hover:text-blue-500 disabled:hover:text-inherit disabled:opacity-25',\n    fieldset: 'py-4 px-5',\n    help: 'mb-2 mt-1.5',\n    item: 'flex w-full mb-1 rounded border border-gray-200',\n    moveDownIcon: 'block w-3 my-1',\n    moveUpIcon: 'block w-3 my-1',\n    removeControl: 'hover:text-blue-500 disabled:hover:text-inherit disabled:opacity-25',\n    removeIcon: 'block w-5 my-1',\n    upControl: 'hover:text-blue-500 disabled:hover:text-inherit disabled:opacity-25',\n  },\n  slider: {\n    outer: 'max-w-md',\n    help: 'mt-0 mb-1',\n    sliderInner:\n      'flex items-center py-1 [&>.formkit-max-value]:mb-0 [&>.formkit-max-value]:ml-8 [&>.formkit-max-value]:shrink [&>.formkit-max-value]:grow-0 [&>.formkit-icon]:bg-none [&>.formkit-icon]:border-none [&>.formkit-icon]:p-0 [&>.formkit-icon]:w-4 [&>.formkit-prefix-icon]:mr-2 [&>.formkit-suffix-icon]:ml-2 [&[data-has-mark-labels=\"true\"]_.formkit-track]:mb-4',\n    track: 'grow relative z-[3] py-1 user-select-none',\n    trackWrapper: 'px-[2px] rounded-full bg-gray-200',\n    trackInner: 'h-[6px] mx-[2px] relative',\n    fill: 'h-full rounded-full absolute top-0 mx-[-4px] bg-blue-500',\n    marks: 'absolute pointer-events-none left-0 right-0 top-0 bottom-0',\n    mark: 'absolute top-1/2 w-[3px] h-[3px] rounded-full -translate-x-1/2 -translate-y-1/2 bg-gray-400 data-[active=\"true\"]:bg-white',\n    markLabel:\n      'absolute top-[calc(100%+0.5em)] left-1/2 text-gray-400 text-[0.66em] -translate-x-1/2',\n    handles: 'm-0 p-0 list-none',\n    handle:\n      'group w-4 h-4 rounded-full bg-white absolute top-1/2 left-0 z-[2] -translate-x-1/2 -translate-y-1/2 shadow-[inset_0_0_0_1px_rgba(0,0,0,0.1),0_1px_2px_0_rgba(0,0,0,0.8)] focus-visible:outline-0 focus-visible:ring-2 ring-blue-500 data-[is-target=\"true\"]:z-[3]',\n    tooltip:\n      'absolute bottom-full left-1/2 -translate-x-1/2 -translate-y-[4px] bg-blue-500 text-white py-1 px-2 text-xs leading-none whitespace-nowrap rounded-sm opacity-0 pointer-events-none transition-opacity after:content-[\"\"] after:absolute after:top-full after:left-1/2 after:-translate-x-1/2 after:-translate-y-[1px] after:border-4 after:border-transparent after:border-t-blue-500 group-hover:opacity-100 group-focus-visible:opacity-100 group-data-[show-tooltip=\"true\"]:opacity-100',\n    linkedValues: 'flex items-start justify-between',\n    minValue:\n      'grow max-w-[45%] mb-0 relative [&_.formkit-inner::after]:content-[\"\"] [&_.formkit-inner::after]:absolute [&_.formkit-inner::after]:left-[105%] [&_.formkit-inner::after]:-translate-y-1/2 [&_.formkit-inner::after]:w-[10%] [&_.formkit-inner::after]:h-[1px] [&_.formkit-inner::after]:bg-gray-500',\n    maxValue: 'grow max-w-[45%] mb-0 relative',\n    chart: 'relative z-[2] mb-2 flex justify-between items-center w-full aspect-[3/1]',\n    chartBar:\n      'absolute bottom-0 h-full bg-gray-400 opacity-[.66] data-[active=\"false\"]:opacity-[.25]',\n  },\n  taglist: {\n    input: 'px-1 py-1 w-[0%] grow',\n    removeSelection: 'w-2.5 mx-1 self-center text-black leading-none',\n    tag: 'flex items-center my-1 p-1 bg-gray-200 text-xs rounded-full',\n    tagWrapper:\n      'mr-1 focus:outline-none focus:text-white [&>div]:focus:bg-blue-500 [&>div>button]:focus:text-white',\n    tagLabel: 'pl-2 pr-1',\n    tags: 'flex items-center flex-wrap w-full py-1.5 px-2',\n  },\n  toggle: {\n    altLabel: 'block w-full mb-1 font-bold text-sm',\n    inner: '$reset inline-block mr-2',\n    input: 'peer absolute opacity-0 pointer-events-none',\n    innerLabel:\n      'text-[10px] font-bold absolute left-full top-1/2 -translate-x-full -translate-y-1/2 px-1',\n    thumb: 'relative left-0 aspect-square rounded-full transition-all w-5 bg-gray-100',\n    track:\n      'p-0.5 min-w-[3em] relative rounded-full transition-all bg-gray-400 peer-checked:bg-blue-500 peer-checked:[&>div:last-child]:left-full peer-checked:[&>div:last-child]:-translate-x-full peer-checked:[&>div:first-child:not(:last-child)]:left-0 peer-checked:[&>div:first-child:not(:last-child)]:translate-x-0',\n    valueLabel: 'font-bold text-sm',\n    wrapper: 'flex flex-wrap items-center mb-1',\n  },\n  transferlist: {\n    outer: `\n      [&_.dnd-placeholder]:bg-blue-500 [&_.dnd-placeholder]:text-white\n      [&_.dnd-placeholder_svg]:text-white\n      [&_.dnd-children-hidden]:w-full [&_.dnd-children-hidden]:p-0 [&_.dnd-children-hidden]:flex [&_.dnd-children-hidden]:flex-col [&_.dnd-children-hidden]:border-none\n      [&_.dnd-children-hidden_span]:hidden\n      [&_.dnd-children-hidden_.formkit-transferlist-option]:hidden\n      [&_.dnd-multiple-selections_span]:inline-block\n      [&_.dnd-multiple-selections_.formkit-transferlist-option]:inline-block\n    `,\n    fieldset: '$reset max-w-2xl',\n    wrapper: 'flex max-h-[350px] flex-col sm:flex-row justify-between w-full max-w-none',\n    help: 'pb-2',\n    transferlist:\n      'sm:w-3/5 shadow-md flex flex-col min-h-[350px] max-h-[350px] border rounded overflow-hidden select-none bg-gray-50',\n    transferlistHeader: 'flex bg-gray-100 justify-between items-center border-b p-3',\n    transferlistHeaderItemCount: 'ml-auto text-sm',\n    transferlistListItems:\n      'list-none bg-gray-50 h-full sm:max-w-xs overflow-x-hidden overflow-y-auto',\n    transferlistListItem:\n      'pl-8 relative aria-selected:bg-blue-600 aria-selected:data-[is-active=true]:bg-blue-600 aria-selected:text-white aria-selected:data-[is-active=true]:text-white first:-mt-px first:border-t py-2 px-3 flex relative border-b bg-white data-[is-active=true]:text-blue-500 data-[is-active=true]:bg-gray-100 cursor-pointer group-data-[is-max=true]:cursor-not-allowed items-center',\n    transferlistOption: 'text-sm',\n    transferControls:\n      'flex sm:flex-col justify-center mx-auto my-2 sm:mx-2 sm:my-auto border rounded',\n    transferlistButton:\n      'text-sm disabled:cursor-not-allowed disabled:bg-gray-200 disabled:opacity-50 first:rounded-l last:rounded-r sm:first:rounded-t sm:last:rounded-b appearance-none p-2 m-0 cursor-pointer h-10 border-none rounded-none bg-gray-50 hover:outline disabled:hover:outline-none hover:outline-1 hover:outline-black hover:text-blue-500 disabled:hover:text-current hover:z-10',\n    sourceEmptyMessage:\n      'appearance-none border-none w-full p-0 m-0 text-center text-gray-500 italic',\n    sourceListItems: 'group-data-[is-max=true]:opacity-50',\n    targetEmptyMessage:\n      'appearance-none border-none w-full p-0 m-0 text-center text-gray-500 italic',\n    emptyMessageInner: 'flex items-center justify-center p-2 text-sm',\n    transferlistControls: 'bg-white px-3 py-2 border-b',\n    transferlistSearch: 'flex border rounded items-center',\n    transferlistSearchInput: 'border-none p-1 w-full bg-transparent outline-none text-sm',\n    controlLabel: 'hidden',\n    selectedIcon: 'w-3 absolute left-3 select-none',\n    fastForwardIcon:\n      'w-10 flex select-none [&>svg]:m-auto [&>svg]:w-full [&>svg]:max-w-[1rem] [&>svg]:max-h-[1rem] rotate-90 sm:rotate-0',\n    moveRightIcon:\n      'w-10 flex select-none [&>svg]:m-auto [&>svg]:w-full [&>svg]:max-w-[1rem] [&>svg]:max-h-[1rem] rotate-90 sm:rotate-0',\n    moveLeftIcon:\n      'w-10 flex select-none [&>svg]:m-auto [&>svg]:w-full [&>svg]:max-w-[1rem] [&>svg]:max-h-[1rem] rotate-90 sm:rotate-0',\n    rewindIcon:\n      'w-10 flex select-none [&>svg]:m-auto [&>svg]:w-full [&>svg]:max-w-[1rem] [&>svg]:max-h-[1rem] rotate-90 sm:rotate-0',\n  },\n};\n","import { en } from '@formkit/i18n';\nimport type { DefaultConfigOptions } from '@formkit/vue';\nimport { generateClasses } from '@formkit/themes';\nimport { genesisIcons } from '@formkit/icons';\nimport formkitTailwindTheme from './formkit-tailwind-theme';\n\nconst config: DefaultConfigOptions = {\n  locales: { en },\n  locale: 'en',\n  /*\n    TODO: This might not be needed, but adding for now because the installation\n    instructions say to add it. https://formkit.com/getting-started/installation\n   */\n  icons: {\n    ...genesisIcons,\n  },\n  config: {\n    classes: generateClasses(formkitTailwindTheme),\n  },\n};\n\nexport default config;\n","import { defaultConfig, plugin } from '@formkit/vue';\nimport config from '../../formkit.config';\nimport type { UserModule } from './user-module-type';\n\n// Setup FormKit\n// https://formkit.com/\nexport const install: UserModule = ({ app }) => {\n  app.use(plugin, defaultConfig(config));\n};\n","/* eslint-disable */\n// @ts-nocheck\nwindow.heap=window.heap||[],heap.load=function(e,t){window.heap.appid=e,window.heap.config=t=t||{};var r=document.createElement(\"script\");r.type=\"text/javascript\",r.async=!0,r.src=\"https://cdn.heapanalytics.com/js/heap-\"+e+\".js\";var a=document.getElementsByTagName(\"script\")[0];a.parentNode.insertBefore(r,a);for(var n=function(e){return function(){heap.push([e].concat(Array.prototype.slice.call(arguments,0)))}},p=[\"addEventProperties\",\"addUserProperties\",\"clearEventProperties\",\"identify\",\"resetIdentity\",\"removeEventProperty\",\"setEventProperties\",\"track\",\"unsetEventProperty\"],o=0;o<p.length;o++)heap[p[o]]=n(p[o])};\nheap.load(import.meta.env.PUBLIC_HEAP_APP_ID);\n","general:\n  last_edited: Edited\n  search_placeholder: Filter by title, tag, or description\n  search_collections_placeholder: Filter by title or description\n  preview: Preview\n  files: Files\n\nstates:\n  no_items_created:\n    title: No {noun} Yet\n    description: Create a new {noun} to get started.\n    button_text: New {noun}\n  no_search_results: No {noun} match your search query\n  noun:\n    projects: Project | Projects\n    collections: Collection | Collections\n    favorites: Favorite |Favorites\n    examples: Example | Examples\n\nerrors:\n  generic: Something went wrong. Please try again.\n\nlinks:\n  help: Help\n  privacy_policy: Privacy Policy\n  legal: Legal\n  settings: Settings\n  dashboard: Dashboard\n  profile: Profile\n  whats_new: What's New\n  docs: Documentation\n  favorites: Favorites\n\ntooltips:\n  fork: Create a copy of this project\n  fork_logged_out: Sign in to copy this project\n  grid_view: Grid view\n  list_view: List view\n  sort_options: Sort options\n\ntheme:\n  dark_mode: Dark Mode\n\neditor:\n  read_only: Read only.\n  read_only_version_uneditable: Versions are not editable.\n  clone_to_edit: Clone this project to edit.\n\nbuttons:\n  add_tag: + Add a tag\n  add_to_collection: Add to Collection\n  remove_from_collection: Remove from Collection\n  creating_project: Creating\n  delete: Delete\n  download: Download\n  duplicate: Duplicate\n  edit: Edit\n  fork_project: Clone Project\n  fork: Clone\n  forking: Cloning...\n  get_started: Get Started\n  hide_files: Hide Files\n  hide_preview: Hide Preview\n  new_file: New File\n  new_folder: New Folder\n  new_project: New Project\n  preview_markdown: Preview\n  project_settings: Settings\n  report_abuse: Report Abuse\n  rename: Rename\n  run: Run\n  save: Save\n  share: Share\n  show_files: Show Files\n  show_preview: Show Preview\n  sign_in: Sign In\n  sign_out: Sign Out\n  sign_up: Sign Up\n  support: Support\n  upload_file: Upload File\n  upload_folder: Upload Folder\n  versions: Versions\n  view_code: View Code\n  view_site: View Site\n  view_versions: View Versions\n\nabout_page:\n  heading: About PyScript.com\n  body_p1: >-\n    At PyCon US 2022, Anaconda CEO Peter Wang announced the launch of {link}, a\n    framework that empowers users to create rich applications in the browser\n    using Python alongside JavaScript and HTML. Now, Anaconda is excited to\n    unveil PyScript.com, a service that allows users to easily create, deploy,\n    share, and store PyScript apps and plugins. PyScript.com functionality\n    currently supports cron job management, webhook creation, running code on\n    GPUs, and more! This offering effectively marks a change in the way users\n    perform data science and takes a significant step towards democratizing data\n    and programming.\n  body_p2: >-\n    PyScript and PyScript.com come from {link}, the world's most popular data\n    science platform with more than 30 million users. Anaconda pioneered the use\n    of Python for data science, champions its vibrant community, and continues\n    to steward open-source projects that make tomorrow's innovations possible.\n    Anaconda's enterprise-grade tools are the leading solution for securing and\n    managing commercial uses of Python, and enable corporate, research, and\n    academic institutions around the world to harness the power of open-source\n    for competitive advantage, groundbreaking research, and building a smarter,\n    better world.\n  body_p3: >-\n    Visit {link1} for additional PyScript content, and follow {twitter_handle}\n    on {link2} to stay up to date with relevant news.\n\nprofile:\n  heading: Profile\n  projects_title: Projects\n  collections_title: Collections\n  no_projects:\n    non_owner_text: It looks like this user doesn't have any Projects yet.\n  no_collections:\n    non_owner_text: It looks like this user doesn't have any Collections yet.\n\ndashboard:\n  heading: Dashboard\n  tabs:\n    projects: My Projects\n    collections: Collections\n    examples: Examples\n\nfavorites:\n  page_heading: Favorites\n  no_favorites:\n    description: Add some Favorites by clicking the star icon on Projects to get started\n\ncollections:\n  project_count: No Projects | {count} Project | { count } Projects\n  buttons:\n    save: Save\n    create: Create\n    cancel: Cancel\n    edit_projects: Edit Projects\n    add_projects: Add Projects\n  private_collection: Private Collection\n  new_collection_heading: New Collection\n  edit_collection_heading: Edit Collection\n  collection_view_heading: \"Collection: {noun}\"\n  edit_projects_in_name_collection: Edit Projects in “{noun}” Collection\n  search_placeholder: Filter projects by name\n  projects_in_collection:\n    no_projects:\n      description: It looks like there are no Projects in this Collection.\n      button: Add Projects\n  add_project_to_collection_modal:\n    title: Add to Collection\n    search_placeholder: Filter Collections by name\n    new_collection: Add to a new Collection\n    no_projects: You have no Projects to add to this Collection.\n\nproject_settings:\n  tabs:\n    details: Details\n    versions: Versions\n    stats: Stats\n    api_proxies: API Proxies\n    permissions: Permissions\n    channels: Channels\n  api_proxies:\n    heading: Allowed API Proxies\n    description: Select the API Proxies to allow in this project.\n    success_message: Changes saved\n    submit: Save\n  channels:\n    heading: Allowed Channels\n    description: Select the Channels to allow in this project.\n    success_message: Changes saved\n    submit: Save\n  versions:\n    actions: Actions\n    create_version: Create Version\n    created: Created\n    default: Default\n    delete: Delete\n    delete_disabled:\n      latest: Cannot delete latest.\n      default_version: Cannot delete this version as it is the default for the project.\n      current_route: Cannot delete this version as it is currently being viewed.\n    last_edited: Last Edited\n    published: Published\n    tooltip_info_default_1: >-\n      Designates the default version users will see when visiting the project's\n      site.\n    tooltip_info_default_2: For example, if a user were to visit\n    tooltip_info_default_3: the user will see the version set as the default.\n    version: Version\n\naccount_settings:\n  page_title: Account Settings\n  secrets:\n    create_secret_submit_btn: Create Secret\n    update_secret_submit_btn: Save Changes\n\neditor_settings:\n  modal_title: Editor Settings\n  font_size_label: Font Size\n  font_size_help: Change the editor font size in pixels.\n  theme_label: Theme\n  theme_help: Specifies the editor theme.\n  wrapping_label: Line Wrap\n  wrapping_help: Controls if lines should wrap.\n","/*!\n  * shared v9.10.1\n  * (c) 2024 kazuya kawaguchi\n  * Released under the MIT License.\n  */\n/**\n * Original Utilities\n * written by kazuya kawaguchi\n */\nconst inBrowser = typeof window !== 'undefined';\nlet mark;\nlet measure;\nif ((process.env.NODE_ENV !== 'production')) {\n    const perf = inBrowser && window.performance;\n    if (perf &&\n        perf.mark &&\n        perf.measure &&\n        perf.clearMarks &&\n        // @ts-ignore browser compat\n        perf.clearMeasures) {\n        mark = (tag) => {\n            perf.mark(tag);\n        };\n        measure = (name, startTag, endTag) => {\n            perf.measure(name, startTag, endTag);\n            perf.clearMarks(startTag);\n            perf.clearMarks(endTag);\n        };\n    }\n}\nconst RE_ARGS = /\\{([0-9a-zA-Z]+)\\}/g;\n/* eslint-disable */\nfunction format(message, ...args) {\n    if (args.length === 1 && isObject(args[0])) {\n        args = args[0];\n    }\n    if (!args || !args.hasOwnProperty) {\n        args = {};\n    }\n    return message.replace(RE_ARGS, (match, identifier) => {\n        return args.hasOwnProperty(identifier) ? args[identifier] : '';\n    });\n}\nconst makeSymbol = (name, shareable = false) => !shareable ? Symbol(name) : Symbol.for(name);\nconst generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source });\nconst friendlyJSONstringify = (json) => JSON.stringify(json)\n    .replace(/\\u2028/g, '\\\\u2028')\n    .replace(/\\u2029/g, '\\\\u2029')\n    .replace(/\\u0027/g, '\\\\u0027');\nconst isNumber = (val) => typeof val === 'number' && isFinite(val);\nconst isDate = (val) => toTypeString(val) === '[object Date]';\nconst isRegExp = (val) => toTypeString(val) === '[object RegExp]';\nconst isEmptyObject = (val) => isPlainObject(val) && Object.keys(val).length === 0;\nconst assign = Object.assign;\nlet _globalThis;\nconst getGlobalThis = () => {\n    // prettier-ignore\n    return (_globalThis ||\n        (_globalThis =\n            typeof globalThis !== 'undefined'\n                ? globalThis\n                : typeof self !== 'undefined'\n                    ? self\n                    : typeof window !== 'undefined'\n                        ? window\n                        : typeof global !== 'undefined'\n                            ? global\n                            : {}));\n};\nfunction escapeHtml(rawText) {\n    return rawText\n        .replace(/</g, '&lt;')\n        .replace(/>/g, '&gt;')\n        .replace(/\"/g, '&quot;')\n        .replace(/'/g, '&apos;');\n}\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn(obj, key) {\n    return hasOwnProperty.call(obj, key);\n}\n/* eslint-enable */\n/**\n * Useful Utilities By Evan you\n * Modified by kazuya kawaguchi\n * MIT License\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/index.ts\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/codeframe.ts\n */\nconst isArray = Array.isArray;\nconst isFunction = (val) => typeof val === 'function';\nconst isString = (val) => typeof val === 'string';\nconst isBoolean = (val) => typeof val === 'boolean';\nconst isSymbol = (val) => typeof val === 'symbol';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isObject = (val) => val !== null && typeof val === 'object';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isPromise = (val) => {\n    return isObject(val) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst isPlainObject = (val) => {\n    if (!isObject(val))\n        return false;\n    const proto = Object.getPrototypeOf(val);\n    return proto === null || proto.constructor === Object;\n};\n// for converting list and named values to displayed strings.\nconst toDisplayString = (val) => {\n    return val == null\n        ? ''\n        : isArray(val) || (isPlainObject(val) && val.toString === objectToString)\n            ? JSON.stringify(val, null, 2)\n            : String(val);\n};\nfunction join(items, separator = '') {\n    return items.reduce((str, item, index) => (index === 0 ? str + item : str + separator + item), '');\n}\nconst RANGE = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n    const lines = source.split(/\\r?\\n/);\n    let count = 0;\n    const res = [];\n    for (let i = 0; i < lines.length; i++) {\n        count += lines[i].length + 1;\n        if (count >= start) {\n            for (let j = i - RANGE; j <= i + RANGE || end > count; j++) {\n                if (j < 0 || j >= lines.length)\n                    continue;\n                const line = j + 1;\n                res.push(`${line}${' '.repeat(3 - String(line).length)}|  ${lines[j]}`);\n                const lineLength = lines[j].length;\n                if (j === i) {\n                    // push underline\n                    const pad = start - (count - lineLength) + 1;\n                    const length = Math.max(1, end > count ? lineLength - pad : end - start);\n                    res.push(`   |  ` + ' '.repeat(pad) + '^'.repeat(length));\n                }\n                else if (j > i) {\n                    if (end > count) {\n                        const length = Math.max(Math.min(end - count, lineLength), 1);\n                        res.push(`   |  ` + '^'.repeat(length));\n                    }\n                    count += lineLength + 1;\n                }\n            }\n            break;\n        }\n    }\n    return res.join('\\n');\n}\nfunction incrementer(code) {\n    let current = code;\n    return () => ++current;\n}\n\nfunction warn(msg, err) {\n    if (typeof console !== 'undefined') {\n        console.warn(`[intlify] ` + msg);\n        /* istanbul ignore if */\n        if (err) {\n            console.warn(err.stack);\n        }\n    }\n}\nconst hasWarned = {};\nfunction warnOnce(msg) {\n    if (!hasWarned[msg]) {\n        hasWarned[msg] = true;\n        warn(msg);\n    }\n}\n\n/**\n * Event emitter, forked from the below:\n * - original repository url: https://github.com/developit/mitt\n * - code url: https://github.com/developit/mitt/blob/master/src/index.ts\n * - author: Jason Miller (https://github.com/developit)\n * - license: MIT\n */\n/**\n * Create a event emitter\n *\n * @returns An event emitter\n */\nfunction createEmitter() {\n    const events = new Map();\n    const emitter = {\n        events,\n        on(event, handler) {\n            const handlers = events.get(event);\n            const added = handlers && handlers.push(handler);\n            if (!added) {\n                events.set(event, [handler]);\n            }\n        },\n        off(event, handler) {\n            const handlers = events.get(event);\n            if (handlers) {\n                handlers.splice(handlers.indexOf(handler) >>> 0, 1);\n            }\n        },\n        emit(event, payload) {\n            (events.get(event) || [])\n                .slice()\n                .map(handler => handler(payload));\n            (events.get('*') || [])\n                .slice()\n                .map(handler => handler(event, payload));\n        }\n    };\n    return emitter;\n}\n\nconst isNotObjectOrIsArray = (val) => !isObject(val) || isArray(val);\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nfunction deepCopy(src, des) {\n    // src and des should both be objects, and none of them can be a array\n    if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {\n        throw new Error('Invalid value');\n    }\n    const stack = [{ src, des }];\n    while (stack.length) {\n        const { src, des } = stack.pop();\n        Object.keys(src).forEach(key => {\n            if (isNotObjectOrIsArray(src[key]) || isNotObjectOrIsArray(des[key])) {\n                // replace with src[key] when:\n                // src[key] or des[key] is not an object, or\n                // src[key] or des[key] is an array\n                des[key] = src[key];\n            }\n            else {\n                // src[key] and des[key] are both objects, merge them\n                stack.push({ src: src[key], des: des[key] });\n            }\n        });\n    }\n}\n\nexport { assign, createEmitter, deepCopy, escapeHtml, format, friendlyJSONstringify, generateCodeFrame, generateFormatCacheKey, getGlobalThis, hasOwn, inBrowser, incrementer, isArray, isBoolean, isDate, isEmptyObject, isFunction, isNumber, isObject, isPlainObject, isPromise, isRegExp, isString, isSymbol, join, makeSymbol, mark, measure, objectToString, toDisplayString, toTypeString, warn, warnOnce };\n","/*!\n  * message-compiler v9.10.1\n  * (c) 2024 kazuya kawaguchi\n  * Released under the MIT License.\n  */\nconst LOCATION_STUB = {\n    start: { line: 1, column: 1, offset: 0 },\n    end: { line: 1, column: 1, offset: 0 }\n};\nfunction createPosition(line, column, offset) {\n    return { line, column, offset };\n}\nfunction createLocation(start, end, source) {\n    const loc = { start, end };\n    if (source != null) {\n        loc.source = source;\n    }\n    return loc;\n}\n\n/**\n * Original Utilities\n * written by kazuya kawaguchi\n */\nconst RE_ARGS = /\\{([0-9a-zA-Z]+)\\}/g;\n/* eslint-disable */\nfunction format(message, ...args) {\n    if (args.length === 1 && isObject(args[0])) {\n        args = args[0];\n    }\n    if (!args || !args.hasOwnProperty) {\n        args = {};\n    }\n    return message.replace(RE_ARGS, (match, identifier) => {\n        return args.hasOwnProperty(identifier) ? args[identifier] : '';\n    });\n}\nconst assign = Object.assign;\nconst isString = (val) => typeof val === 'string';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isObject = (val) => val !== null && typeof val === 'object';\nfunction join(items, separator = '') {\n    return items.reduce((str, item, index) => (index === 0 ? str + item : str + separator + item), '');\n}\n\nconst CompileErrorCodes = {\n    // tokenizer error codes\n    EXPECTED_TOKEN: 1,\n    INVALID_TOKEN_IN_PLACEHOLDER: 2,\n    UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,\n    UNKNOWN_ESCAPE_SEQUENCE: 4,\n    INVALID_UNICODE_ESCAPE_SEQUENCE: 5,\n    UNBALANCED_CLOSING_BRACE: 6,\n    UNTERMINATED_CLOSING_BRACE: 7,\n    EMPTY_PLACEHOLDER: 8,\n    NOT_ALLOW_NEST_PLACEHOLDER: 9,\n    INVALID_LINKED_FORMAT: 10,\n    // parser error codes\n    MUST_HAVE_MESSAGES_IN_PLURAL: 11,\n    UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,\n    UNEXPECTED_EMPTY_LINKED_KEY: 13,\n    UNEXPECTED_LEXICAL_ANALYSIS: 14,\n    // generator error codes\n    UNHANDLED_CODEGEN_NODE_TYPE: 15,\n    // minifier error codes\n    UNHANDLED_MINIFIER_NODE_TYPE: 16,\n    // Special value for higher-order compilers to pick up the last code\n    // to avoid collision of error codes. This should always be kept as the last\n    // item.\n    __EXTEND_POINT__: 17\n};\n/** @internal */\nconst errorMessages = {\n    // tokenizer error messages\n    [CompileErrorCodes.EXPECTED_TOKEN]: `Expected token: '{0}'`,\n    [CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]: `Invalid token in placeholder: '{0}'`,\n    [CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]: `Unterminated single quote in placeholder`,\n    [CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]: `Unknown escape sequence: \\\\{0}`,\n    [CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]: `Invalid unicode escape sequence: {0}`,\n    [CompileErrorCodes.UNBALANCED_CLOSING_BRACE]: `Unbalanced closing brace`,\n    [CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]: `Unterminated closing brace`,\n    [CompileErrorCodes.EMPTY_PLACEHOLDER]: `Empty placeholder`,\n    [CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]: `Not allowed nest placeholder`,\n    [CompileErrorCodes.INVALID_LINKED_FORMAT]: `Invalid linked format`,\n    // parser error messages\n    [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,\n    [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,\n    [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,\n    [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`,\n    // generator error messages\n    [CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE]: `unhandled codegen node type: '{0}'`,\n    // minimizer error messages\n    [CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE]: `unhandled mimifier node type: '{0}'`\n};\nfunction createCompileError(code, loc, options = {}) {\n    const { domain, messages, args } = options;\n    const msg = format((messages || errorMessages)[code] || '', ...(args || []))\n        ;\n    const error = new SyntaxError(String(msg));\n    error.code = code;\n    if (loc) {\n        error.location = loc;\n    }\n    error.domain = domain;\n    return error;\n}\n/** @internal */\nfunction defaultOnError(error) {\n    throw error;\n}\n\nconst RE_HTML_TAG = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\nconst detectHtmlTag = (source) => RE_HTML_TAG.test(source);\n\nconst CHAR_SP = ' ';\nconst CHAR_CR = '\\r';\nconst CHAR_LF = '\\n';\nconst CHAR_LS = String.fromCharCode(0x2028);\nconst CHAR_PS = String.fromCharCode(0x2029);\nfunction createScanner(str) {\n    const _buf = str;\n    let _index = 0;\n    let _line = 1;\n    let _column = 1;\n    let _peekOffset = 0;\n    const isCRLF = (index) => _buf[index] === CHAR_CR && _buf[index + 1] === CHAR_LF;\n    const isLF = (index) => _buf[index] === CHAR_LF;\n    const isPS = (index) => _buf[index] === CHAR_PS;\n    const isLS = (index) => _buf[index] === CHAR_LS;\n    const isLineEnd = (index) => isCRLF(index) || isLF(index) || isPS(index) || isLS(index);\n    const index = () => _index;\n    const line = () => _line;\n    const column = () => _column;\n    const peekOffset = () => _peekOffset;\n    const charAt = (offset) => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset];\n    const currentChar = () => charAt(_index);\n    const currentPeek = () => charAt(_index + _peekOffset);\n    function next() {\n        _peekOffset = 0;\n        if (isLineEnd(_index)) {\n            _line++;\n            _column = 0;\n        }\n        if (isCRLF(_index)) {\n            _index++;\n        }\n        _index++;\n        _column++;\n        return _buf[_index];\n    }\n    function peek() {\n        if (isCRLF(_index + _peekOffset)) {\n            _peekOffset++;\n        }\n        _peekOffset++;\n        return _buf[_index + _peekOffset];\n    }\n    function reset() {\n        _index = 0;\n        _line = 1;\n        _column = 1;\n        _peekOffset = 0;\n    }\n    function resetPeek(offset = 0) {\n        _peekOffset = offset;\n    }\n    function skipToPeek() {\n        const target = _index + _peekOffset;\n        // eslint-disable-next-line no-unmodified-loop-condition\n        while (target !== _index) {\n            next();\n        }\n        _peekOffset = 0;\n    }\n    return {\n        index,\n        line,\n        column,\n        peekOffset,\n        charAt,\n        currentChar,\n        currentPeek,\n        next,\n        peek,\n        reset,\n        resetPeek,\n        skipToPeek\n    };\n}\n\nconst EOF = undefined;\nconst DOT = '.';\nconst LITERAL_DELIMITER = \"'\";\nconst ERROR_DOMAIN$3 = 'tokenizer';\nfunction createTokenizer(source, options = {}) {\n    const location = options.location !== false;\n    const _scnr = createScanner(source);\n    const currentOffset = () => _scnr.index();\n    const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index());\n    const _initLoc = currentPosition();\n    const _initOffset = currentOffset();\n    const _context = {\n        currentType: 14 /* TokenTypes.EOF */,\n        offset: _initOffset,\n        startLoc: _initLoc,\n        endLoc: _initLoc,\n        lastType: 14 /* TokenTypes.EOF */,\n        lastOffset: _initOffset,\n        lastStartLoc: _initLoc,\n        lastEndLoc: _initLoc,\n        braceNest: 0,\n        inLinked: false,\n        text: ''\n    };\n    const context = () => _context;\n    const { onError } = options;\n    function emitError(code, pos, offset, ...args) {\n        const ctx = context();\n        pos.column += offset;\n        pos.offset += offset;\n        if (onError) {\n            const loc = location ? createLocation(ctx.startLoc, pos) : null;\n            const err = createCompileError(code, loc, {\n                domain: ERROR_DOMAIN$3,\n                args\n            });\n            onError(err);\n        }\n    }\n    function getToken(context, type, value) {\n        context.endLoc = currentPosition();\n        context.currentType = type;\n        const token = { type };\n        if (location) {\n            token.loc = createLocation(context.startLoc, context.endLoc);\n        }\n        if (value != null) {\n            token.value = value;\n        }\n        return token;\n    }\n    const getEndToken = (context) => getToken(context, 14 /* TokenTypes.EOF */);\n    function eat(scnr, ch) {\n        if (scnr.currentChar() === ch) {\n            scnr.next();\n            return ch;\n        }\n        else {\n            emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\n            return '';\n        }\n    }\n    function peekSpaces(scnr) {\n        let buf = '';\n        while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) {\n            buf += scnr.currentPeek();\n            scnr.peek();\n        }\n        return buf;\n    }\n    function skipSpaces(scnr) {\n        const buf = peekSpaces(scnr);\n        scnr.skipToPeek();\n        return buf;\n    }\n    function isIdentifierStart(ch) {\n        if (ch === EOF) {\n            return false;\n        }\n        const cc = ch.charCodeAt(0);\n        return ((cc >= 97 && cc <= 122) || // a-z\n            (cc >= 65 && cc <= 90) || // A-Z\n            cc === 95 // _\n        );\n    }\n    function isNumberStart(ch) {\n        if (ch === EOF) {\n            return false;\n        }\n        const cc = ch.charCodeAt(0);\n        return cc >= 48 && cc <= 57; // 0-9\n    }\n    function isNamedIdentifierStart(scnr, context) {\n        const { currentType } = context;\n        if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n            return false;\n        }\n        peekSpaces(scnr);\n        const ret = isIdentifierStart(scnr.currentPeek());\n        scnr.resetPeek();\n        return ret;\n    }\n    function isListIdentifierStart(scnr, context) {\n        const { currentType } = context;\n        if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n            return false;\n        }\n        peekSpaces(scnr);\n        const ch = scnr.currentPeek() === '-' ? scnr.peek() : scnr.currentPeek();\n        const ret = isNumberStart(ch);\n        scnr.resetPeek();\n        return ret;\n    }\n    function isLiteralStart(scnr, context) {\n        const { currentType } = context;\n        if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n            return false;\n        }\n        peekSpaces(scnr);\n        const ret = scnr.currentPeek() === LITERAL_DELIMITER;\n        scnr.resetPeek();\n        return ret;\n    }\n    function isLinkedDotStart(scnr, context) {\n        const { currentType } = context;\n        if (currentType !== 8 /* TokenTypes.LinkedAlias */) {\n            return false;\n        }\n        peekSpaces(scnr);\n        const ret = scnr.currentPeek() === \".\" /* TokenChars.LinkedDot */;\n        scnr.resetPeek();\n        return ret;\n    }\n    function isLinkedModifierStart(scnr, context) {\n        const { currentType } = context;\n        if (currentType !== 9 /* TokenTypes.LinkedDot */) {\n            return false;\n        }\n        peekSpaces(scnr);\n        const ret = isIdentifierStart(scnr.currentPeek());\n        scnr.resetPeek();\n        return ret;\n    }\n    function isLinkedDelimiterStart(scnr, context) {\n        const { currentType } = context;\n        if (!(currentType === 8 /* TokenTypes.LinkedAlias */ ||\n            currentType === 12 /* TokenTypes.LinkedModifier */)) {\n            return false;\n        }\n        peekSpaces(scnr);\n        const ret = scnr.currentPeek() === \":\" /* TokenChars.LinkedDelimiter */;\n        scnr.resetPeek();\n        return ret;\n    }\n    function isLinkedReferStart(scnr, context) {\n        const { currentType } = context;\n        if (currentType !== 10 /* TokenTypes.LinkedDelimiter */) {\n            return false;\n        }\n        const fn = () => {\n            const ch = scnr.currentPeek();\n            if (ch === \"{\" /* TokenChars.BraceLeft */) {\n                return isIdentifierStart(scnr.peek());\n            }\n            else if (ch === \"@\" /* TokenChars.LinkedAlias */ ||\n                ch === \"%\" /* TokenChars.Modulo */ ||\n                ch === \"|\" /* TokenChars.Pipe */ ||\n                ch === \":\" /* TokenChars.LinkedDelimiter */ ||\n                ch === \".\" /* TokenChars.LinkedDot */ ||\n                ch === CHAR_SP ||\n                !ch) {\n                return false;\n            }\n            else if (ch === CHAR_LF) {\n                scnr.peek();\n                return fn();\n            }\n            else {\n                // other characters\n                return isIdentifierStart(ch);\n            }\n        };\n        const ret = fn();\n        scnr.resetPeek();\n        return ret;\n    }\n    function isPluralStart(scnr) {\n        peekSpaces(scnr);\n        const ret = scnr.currentPeek() === \"|\" /* TokenChars.Pipe */;\n        scnr.resetPeek();\n        return ret;\n    }\n    function detectModuloStart(scnr) {\n        const spaces = peekSpaces(scnr);\n        const ret = scnr.currentPeek() === \"%\" /* TokenChars.Modulo */ &&\n            scnr.peek() === \"{\" /* TokenChars.BraceLeft */;\n        scnr.resetPeek();\n        return {\n            isModulo: ret,\n            hasSpace: spaces.length > 0\n        };\n    }\n    function isTextStart(scnr, reset = true) {\n        const fn = (hasSpace = false, prev = '', detectModulo = false) => {\n            const ch = scnr.currentPeek();\n            if (ch === \"{\" /* TokenChars.BraceLeft */) {\n                return prev === \"%\" /* TokenChars.Modulo */ ? false : hasSpace;\n            }\n            else if (ch === \"@\" /* TokenChars.LinkedAlias */ || !ch) {\n                return prev === \"%\" /* TokenChars.Modulo */ ? true : hasSpace;\n            }\n            else if (ch === \"%\" /* TokenChars.Modulo */) {\n                scnr.peek();\n                return fn(hasSpace, \"%\" /* TokenChars.Modulo */, true);\n            }\n            else if (ch === \"|\" /* TokenChars.Pipe */) {\n                return prev === \"%\" /* TokenChars.Modulo */ || detectModulo\n                    ? true\n                    : !(prev === CHAR_SP || prev === CHAR_LF);\n            }\n            else if (ch === CHAR_SP) {\n                scnr.peek();\n                return fn(true, CHAR_SP, detectModulo);\n            }\n            else if (ch === CHAR_LF) {\n                scnr.peek();\n                return fn(true, CHAR_LF, detectModulo);\n            }\n            else {\n                return true;\n            }\n        };\n        const ret = fn();\n        reset && scnr.resetPeek();\n        return ret;\n    }\n    function takeChar(scnr, fn) {\n        const ch = scnr.currentChar();\n        if (ch === EOF) {\n            return EOF;\n        }\n        if (fn(ch)) {\n            scnr.next();\n            return ch;\n        }\n        return null;\n    }\n    function takeIdentifierChar(scnr) {\n        const closure = (ch) => {\n            const cc = ch.charCodeAt(0);\n            return ((cc >= 97 && cc <= 122) || // a-z\n                (cc >= 65 && cc <= 90) || // A-Z\n                (cc >= 48 && cc <= 57) || // 0-9\n                cc === 95 || // _\n                cc === 36 // $\n            );\n        };\n        return takeChar(scnr, closure);\n    }\n    function takeDigit(scnr) {\n        const closure = (ch) => {\n            const cc = ch.charCodeAt(0);\n            return cc >= 48 && cc <= 57; // 0-9\n        };\n        return takeChar(scnr, closure);\n    }\n    function takeHexDigit(scnr) {\n        const closure = (ch) => {\n            const cc = ch.charCodeAt(0);\n            return ((cc >= 48 && cc <= 57) || // 0-9\n                (cc >= 65 && cc <= 70) || // A-F\n                (cc >= 97 && cc <= 102)); // a-f\n        };\n        return takeChar(scnr, closure);\n    }\n    function getDigits(scnr) {\n        let ch = '';\n        let num = '';\n        while ((ch = takeDigit(scnr))) {\n            num += ch;\n        }\n        return num;\n    }\n    function readModulo(scnr) {\n        skipSpaces(scnr);\n        const ch = scnr.currentChar();\n        if (ch !== \"%\" /* TokenChars.Modulo */) {\n            emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\n        }\n        scnr.next();\n        return \"%\" /* TokenChars.Modulo */;\n    }\n    function readText(scnr) {\n        let buf = '';\n        while (true) {\n            const ch = scnr.currentChar();\n            if (ch === \"{\" /* TokenChars.BraceLeft */ ||\n                ch === \"}\" /* TokenChars.BraceRight */ ||\n                ch === \"@\" /* TokenChars.LinkedAlias */ ||\n                ch === \"|\" /* TokenChars.Pipe */ ||\n                !ch) {\n                break;\n            }\n            else if (ch === \"%\" /* TokenChars.Modulo */) {\n                if (isTextStart(scnr)) {\n                    buf += ch;\n                    scnr.next();\n                }\n                else {\n                    break;\n                }\n            }\n            else if (ch === CHAR_SP || ch === CHAR_LF) {\n                if (isTextStart(scnr)) {\n                    buf += ch;\n                    scnr.next();\n                }\n                else if (isPluralStart(scnr)) {\n                    break;\n                }\n                else {\n                    buf += ch;\n                    scnr.next();\n                }\n            }\n            else {\n                buf += ch;\n                scnr.next();\n            }\n        }\n        return buf;\n    }\n    function readNamedIdentifier(scnr) {\n        skipSpaces(scnr);\n        let ch = '';\n        let name = '';\n        while ((ch = takeIdentifierChar(scnr))) {\n            name += ch;\n        }\n        if (scnr.currentChar() === EOF) {\n            emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n        }\n        return name;\n    }\n    function readListIdentifier(scnr) {\n        skipSpaces(scnr);\n        let value = '';\n        if (scnr.currentChar() === '-') {\n            scnr.next();\n            value += `-${getDigits(scnr)}`;\n        }\n        else {\n            value += getDigits(scnr);\n        }\n        if (scnr.currentChar() === EOF) {\n            emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n        }\n        return value;\n    }\n    function readLiteral(scnr) {\n        skipSpaces(scnr);\n        eat(scnr, `\\'`);\n        let ch = '';\n        let literal = '';\n        const fn = (x) => x !== LITERAL_DELIMITER && x !== CHAR_LF;\n        while ((ch = takeChar(scnr, fn))) {\n            if (ch === '\\\\') {\n                literal += readEscapeSequence(scnr);\n            }\n            else {\n                literal += ch;\n            }\n        }\n        const current = scnr.currentChar();\n        if (current === CHAR_LF || current === EOF) {\n            emitError(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0);\n            // TODO: Is it correct really?\n            if (current === CHAR_LF) {\n                scnr.next();\n                eat(scnr, `\\'`);\n            }\n            return literal;\n        }\n        eat(scnr, `\\'`);\n        return literal;\n    }\n    function readEscapeSequence(scnr) {\n        const ch = scnr.currentChar();\n        switch (ch) {\n            case '\\\\':\n            case `\\'`:\n                scnr.next();\n                return `\\\\${ch}`;\n            case 'u':\n                return readUnicodeEscapeSequence(scnr, ch, 4);\n            case 'U':\n                return readUnicodeEscapeSequence(scnr, ch, 6);\n            default:\n                emitError(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch);\n                return '';\n        }\n    }\n    function readUnicodeEscapeSequence(scnr, unicode, digits) {\n        eat(scnr, unicode);\n        let sequence = '';\n        for (let i = 0; i < digits; i++) {\n            const ch = takeHexDigit(scnr);\n            if (!ch) {\n                emitError(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\\\${unicode}${sequence}${scnr.currentChar()}`);\n                break;\n            }\n            sequence += ch;\n        }\n        return `\\\\${unicode}${sequence}`;\n    }\n    function readInvalidIdentifier(scnr) {\n        skipSpaces(scnr);\n        let ch = '';\n        let identifiers = '';\n        const closure = (ch) => ch !== \"{\" /* TokenChars.BraceLeft */ &&\n            ch !== \"}\" /* TokenChars.BraceRight */ &&\n            ch !== CHAR_SP &&\n            ch !== CHAR_LF;\n        while ((ch = takeChar(scnr, closure))) {\n            identifiers += ch;\n        }\n        return identifiers;\n    }\n    function readLinkedModifier(scnr) {\n        let ch = '';\n        let name = '';\n        while ((ch = takeIdentifierChar(scnr))) {\n            name += ch;\n        }\n        return name;\n    }\n    function readLinkedRefer(scnr) {\n        const fn = (detect = false, buf) => {\n            const ch = scnr.currentChar();\n            if (ch === \"{\" /* TokenChars.BraceLeft */ ||\n                ch === \"%\" /* TokenChars.Modulo */ ||\n                ch === \"@\" /* TokenChars.LinkedAlias */ ||\n                ch === \"|\" /* TokenChars.Pipe */ ||\n                ch === \"(\" /* TokenChars.ParenLeft */ ||\n                ch === \")\" /* TokenChars.ParenRight */ ||\n                !ch) {\n                return buf;\n            }\n            else if (ch === CHAR_SP) {\n                return buf;\n            }\n            else if (ch === CHAR_LF || ch === DOT) {\n                buf += ch;\n                scnr.next();\n                return fn(detect, buf);\n            }\n            else {\n                buf += ch;\n                scnr.next();\n                return fn(true, buf);\n            }\n        };\n        return fn(false, '');\n    }\n    function readPlural(scnr) {\n        skipSpaces(scnr);\n        const plural = eat(scnr, \"|\" /* TokenChars.Pipe */);\n        skipSpaces(scnr);\n        return plural;\n    }\n    // TODO: We need refactoring of token parsing ...\n    function readTokenInPlaceholder(scnr, context) {\n        let token = null;\n        const ch = scnr.currentChar();\n        switch (ch) {\n            case \"{\" /* TokenChars.BraceLeft */:\n                if (context.braceNest >= 1) {\n                    emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);\n                }\n                scnr.next();\n                token = getToken(context, 2 /* TokenTypes.BraceLeft */, \"{\" /* TokenChars.BraceLeft */);\n                skipSpaces(scnr);\n                context.braceNest++;\n                return token;\n            case \"}\" /* TokenChars.BraceRight */:\n                if (context.braceNest > 0 &&\n                    context.currentType === 2 /* TokenTypes.BraceLeft */) {\n                    emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);\n                }\n                scnr.next();\n                token = getToken(context, 3 /* TokenTypes.BraceRight */, \"}\" /* TokenChars.BraceRight */);\n                context.braceNest--;\n                context.braceNest > 0 && skipSpaces(scnr);\n                if (context.inLinked && context.braceNest === 0) {\n                    context.inLinked = false;\n                }\n                return token;\n            case \"@\" /* TokenChars.LinkedAlias */:\n                if (context.braceNest > 0) {\n                    emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n                }\n                token = readTokenInLinked(scnr, context) || getEndToken(context);\n                context.braceNest = 0;\n                return token;\n            default:\n                let validNamedIdentifier = true;\n                let validListIdentifier = true;\n                let validLiteral = true;\n                if (isPluralStart(scnr)) {\n                    if (context.braceNest > 0) {\n                        emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n                    }\n                    token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n                    // reset\n                    context.braceNest = 0;\n                    context.inLinked = false;\n                    return token;\n                }\n                if (context.braceNest > 0 &&\n                    (context.currentType === 5 /* TokenTypes.Named */ ||\n                        context.currentType === 6 /* TokenTypes.List */ ||\n                        context.currentType === 7 /* TokenTypes.Literal */)) {\n                    emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n                    context.braceNest = 0;\n                    return readToken(scnr, context);\n                }\n                if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) {\n                    token = getToken(context, 5 /* TokenTypes.Named */, readNamedIdentifier(scnr));\n                    skipSpaces(scnr);\n                    return token;\n                }\n                if ((validListIdentifier = isListIdentifierStart(scnr, context))) {\n                    token = getToken(context, 6 /* TokenTypes.List */, readListIdentifier(scnr));\n                    skipSpaces(scnr);\n                    return token;\n                }\n                if ((validLiteral = isLiteralStart(scnr, context))) {\n                    token = getToken(context, 7 /* TokenTypes.Literal */, readLiteral(scnr));\n                    skipSpaces(scnr);\n                    return token;\n                }\n                if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {\n                    // TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...\n                    token = getToken(context, 13 /* TokenTypes.InvalidPlace */, readInvalidIdentifier(scnr));\n                    emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);\n                    skipSpaces(scnr);\n                    return token;\n                }\n                break;\n        }\n        return token;\n    }\n    // TODO: We need refactoring of token parsing ...\n    function readTokenInLinked(scnr, context) {\n        const { currentType } = context;\n        let token = null;\n        const ch = scnr.currentChar();\n        if ((currentType === 8 /* TokenTypes.LinkedAlias */ ||\n            currentType === 9 /* TokenTypes.LinkedDot */ ||\n            currentType === 12 /* TokenTypes.LinkedModifier */ ||\n            currentType === 10 /* TokenTypes.LinkedDelimiter */) &&\n            (ch === CHAR_LF || ch === CHAR_SP)) {\n            emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\n        }\n        switch (ch) {\n            case \"@\" /* TokenChars.LinkedAlias */:\n                scnr.next();\n                token = getToken(context, 8 /* TokenTypes.LinkedAlias */, \"@\" /* TokenChars.LinkedAlias */);\n                context.inLinked = true;\n                return token;\n            case \".\" /* TokenChars.LinkedDot */:\n                skipSpaces(scnr);\n                scnr.next();\n                return getToken(context, 9 /* TokenTypes.LinkedDot */, \".\" /* TokenChars.LinkedDot */);\n            case \":\" /* TokenChars.LinkedDelimiter */:\n                skipSpaces(scnr);\n                scnr.next();\n                return getToken(context, 10 /* TokenTypes.LinkedDelimiter */, \":\" /* TokenChars.LinkedDelimiter */);\n            default:\n                if (isPluralStart(scnr)) {\n                    token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n                    // reset\n                    context.braceNest = 0;\n                    context.inLinked = false;\n                    return token;\n                }\n                if (isLinkedDotStart(scnr, context) ||\n                    isLinkedDelimiterStart(scnr, context)) {\n                    skipSpaces(scnr);\n                    return readTokenInLinked(scnr, context);\n                }\n                if (isLinkedModifierStart(scnr, context)) {\n                    skipSpaces(scnr);\n                    return getToken(context, 12 /* TokenTypes.LinkedModifier */, readLinkedModifier(scnr));\n                }\n                if (isLinkedReferStart(scnr, context)) {\n                    skipSpaces(scnr);\n                    if (ch === \"{\" /* TokenChars.BraceLeft */) {\n                        // scan the placeholder\n                        return readTokenInPlaceholder(scnr, context) || token;\n                    }\n                    else {\n                        return getToken(context, 11 /* TokenTypes.LinkedKey */, readLinkedRefer(scnr));\n                    }\n                }\n                if (currentType === 8 /* TokenTypes.LinkedAlias */) {\n                    emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\n                }\n                context.braceNest = 0;\n                context.inLinked = false;\n                return readToken(scnr, context);\n        }\n    }\n    // TODO: We need refactoring of token parsing ...\n    function readToken(scnr, context) {\n        let token = { type: 14 /* TokenTypes.EOF */ };\n        if (context.braceNest > 0) {\n            return readTokenInPlaceholder(scnr, context) || getEndToken(context);\n        }\n        if (context.inLinked) {\n            return readTokenInLinked(scnr, context) || getEndToken(context);\n        }\n        const ch = scnr.currentChar();\n        switch (ch) {\n            case \"{\" /* TokenChars.BraceLeft */:\n                return readTokenInPlaceholder(scnr, context) || getEndToken(context);\n            case \"}\" /* TokenChars.BraceRight */:\n                emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);\n                scnr.next();\n                return getToken(context, 3 /* TokenTypes.BraceRight */, \"}\" /* TokenChars.BraceRight */);\n            case \"@\" /* TokenChars.LinkedAlias */:\n                return readTokenInLinked(scnr, context) || getEndToken(context);\n            default:\n                if (isPluralStart(scnr)) {\n                    token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n                    // reset\n                    context.braceNest = 0;\n                    context.inLinked = false;\n                    return token;\n                }\n                const { isModulo, hasSpace } = detectModuloStart(scnr);\n                if (isModulo) {\n                    return hasSpace\n                        ? getToken(context, 0 /* TokenTypes.Text */, readText(scnr))\n                        : getToken(context, 4 /* TokenTypes.Modulo */, readModulo(scnr));\n                }\n                if (isTextStart(scnr)) {\n                    return getToken(context, 0 /* TokenTypes.Text */, readText(scnr));\n                }\n                break;\n        }\n        return token;\n    }\n    function nextToken() {\n        const { currentType, offset, startLoc, endLoc } = _context;\n        _context.lastType = currentType;\n        _context.lastOffset = offset;\n        _context.lastStartLoc = startLoc;\n        _context.lastEndLoc = endLoc;\n        _context.offset = currentOffset();\n        _context.startLoc = currentPosition();\n        if (_scnr.currentChar() === EOF) {\n            return getToken(_context, 14 /* TokenTypes.EOF */);\n        }\n        return readToken(_scnr, _context);\n    }\n    return {\n        nextToken,\n        currentOffset,\n        currentPosition,\n        context\n    };\n}\n\nconst ERROR_DOMAIN$2 = 'parser';\n// Backslash backslash, backslash quote, uHHHH, UHHHHHH.\nconst KNOWN_ESCAPES = /(?:\\\\\\\\|\\\\'|\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{6}))/g;\nfunction fromEscapeSequence(match, codePoint4, codePoint6) {\n    switch (match) {\n        case `\\\\\\\\`:\n            return `\\\\`;\n        case `\\\\\\'`:\n            return `\\'`;\n        default: {\n            const codePoint = parseInt(codePoint4 || codePoint6, 16);\n            if (codePoint <= 0xd7ff || codePoint >= 0xe000) {\n                return String.fromCodePoint(codePoint);\n            }\n            // invalid ...\n            // Replace them with U+FFFD REPLACEMENT CHARACTER.\n            return '�';\n        }\n    }\n}\nfunction createParser(options = {}) {\n    const location = options.location !== false;\n    const { onError } = options;\n    function emitError(tokenzer, code, start, offset, ...args) {\n        const end = tokenzer.currentPosition();\n        end.offset += offset;\n        end.column += offset;\n        if (onError) {\n            const loc = location ? createLocation(start, end) : null;\n            const err = createCompileError(code, loc, {\n                domain: ERROR_DOMAIN$2,\n                args\n            });\n            onError(err);\n        }\n    }\n    function startNode(type, offset, loc) {\n        const node = { type };\n        if (location) {\n            node.start = offset;\n            node.end = offset;\n            node.loc = { start: loc, end: loc };\n        }\n        return node;\n    }\n    function endNode(node, offset, pos, type) {\n        if (type) {\n            node.type = type;\n        }\n        if (location) {\n            node.end = offset;\n            if (node.loc) {\n                node.loc.end = pos;\n            }\n        }\n    }\n    function parseText(tokenizer, value) {\n        const context = tokenizer.context();\n        const node = startNode(3 /* NodeTypes.Text */, context.offset, context.startLoc);\n        node.value = value;\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    function parseList(tokenizer, index) {\n        const context = tokenizer.context();\n        const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\n        const node = startNode(5 /* NodeTypes.List */, offset, loc);\n        node.index = parseInt(index, 10);\n        tokenizer.nextToken(); // skip brach right\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    function parseNamed(tokenizer, key) {\n        const context = tokenizer.context();\n        const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\n        const node = startNode(4 /* NodeTypes.Named */, offset, loc);\n        node.key = key;\n        tokenizer.nextToken(); // skip brach right\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    function parseLiteral(tokenizer, value) {\n        const context = tokenizer.context();\n        const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\n        const node = startNode(9 /* NodeTypes.Literal */, offset, loc);\n        node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);\n        tokenizer.nextToken(); // skip brach right\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    function parseLinkedModifier(tokenizer) {\n        const token = tokenizer.nextToken();\n        const context = tokenizer.context();\n        const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc\n        const node = startNode(8 /* NodeTypes.LinkedModifier */, offset, loc);\n        if (token.type !== 12 /* TokenTypes.LinkedModifier */) {\n            // empty modifier\n            emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);\n            node.value = '';\n            endNode(node, offset, loc);\n            return {\n                nextConsumeToken: token,\n                node\n            };\n        }\n        // check token\n        if (token.value == null) {\n            emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n        }\n        node.value = token.value || '';\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return {\n            node\n        };\n    }\n    function parseLinkedKey(tokenizer, value) {\n        const context = tokenizer.context();\n        const node = startNode(7 /* NodeTypes.LinkedKey */, context.offset, context.startLoc);\n        node.value = value;\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    function parseLinked(tokenizer) {\n        const context = tokenizer.context();\n        const linkedNode = startNode(6 /* NodeTypes.Linked */, context.offset, context.startLoc);\n        let token = tokenizer.nextToken();\n        if (token.type === 9 /* TokenTypes.LinkedDot */) {\n            const parsed = parseLinkedModifier(tokenizer);\n            linkedNode.modifier = parsed.node;\n            token = parsed.nextConsumeToken || tokenizer.nextToken();\n        }\n        // asset check token\n        if (token.type !== 10 /* TokenTypes.LinkedDelimiter */) {\n            emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n        }\n        token = tokenizer.nextToken();\n        // skip brace left\n        if (token.type === 2 /* TokenTypes.BraceLeft */) {\n            token = tokenizer.nextToken();\n        }\n        switch (token.type) {\n            case 11 /* TokenTypes.LinkedKey */:\n                if (token.value == null) {\n                    emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                }\n                linkedNode.key = parseLinkedKey(tokenizer, token.value || '');\n                break;\n            case 5 /* TokenTypes.Named */:\n                if (token.value == null) {\n                    emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                }\n                linkedNode.key = parseNamed(tokenizer, token.value || '');\n                break;\n            case 6 /* TokenTypes.List */:\n                if (token.value == null) {\n                    emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                }\n                linkedNode.key = parseList(tokenizer, token.value || '');\n                break;\n            case 7 /* TokenTypes.Literal */:\n                if (token.value == null) {\n                    emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                }\n                linkedNode.key = parseLiteral(tokenizer, token.value || '');\n                break;\n            default:\n                // empty key\n                emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);\n                const nextContext = tokenizer.context();\n                const emptyLinkedKeyNode = startNode(7 /* NodeTypes.LinkedKey */, nextContext.offset, nextContext.startLoc);\n                emptyLinkedKeyNode.value = '';\n                endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);\n                linkedNode.key = emptyLinkedKeyNode;\n                endNode(linkedNode, nextContext.offset, nextContext.startLoc);\n                return {\n                    nextConsumeToken: token,\n                    node: linkedNode\n                };\n        }\n        endNode(linkedNode, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return {\n            node: linkedNode\n        };\n    }\n    function parseMessage(tokenizer) {\n        const context = tokenizer.context();\n        const startOffset = context.currentType === 1 /* TokenTypes.Pipe */\n            ? tokenizer.currentOffset()\n            : context.offset;\n        const startLoc = context.currentType === 1 /* TokenTypes.Pipe */\n            ? context.endLoc\n            : context.startLoc;\n        const node = startNode(2 /* NodeTypes.Message */, startOffset, startLoc);\n        node.items = [];\n        let nextToken = null;\n        do {\n            const token = nextToken || tokenizer.nextToken();\n            nextToken = null;\n            switch (token.type) {\n                case 0 /* TokenTypes.Text */:\n                    if (token.value == null) {\n                        emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                    }\n                    node.items.push(parseText(tokenizer, token.value || ''));\n                    break;\n                case 6 /* TokenTypes.List */:\n                    if (token.value == null) {\n                        emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                    }\n                    node.items.push(parseList(tokenizer, token.value || ''));\n                    break;\n                case 5 /* TokenTypes.Named */:\n                    if (token.value == null) {\n                        emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                    }\n                    node.items.push(parseNamed(tokenizer, token.value || ''));\n                    break;\n                case 7 /* TokenTypes.Literal */:\n                    if (token.value == null) {\n                        emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n                    }\n                    node.items.push(parseLiteral(tokenizer, token.value || ''));\n                    break;\n                case 8 /* TokenTypes.LinkedAlias */:\n                    const parsed = parseLinked(tokenizer);\n                    node.items.push(parsed.node);\n                    nextToken = parsed.nextConsumeToken || null;\n                    break;\n            }\n        } while (context.currentType !== 14 /* TokenTypes.EOF */ &&\n            context.currentType !== 1 /* TokenTypes.Pipe */);\n        // adjust message node loc\n        const endOffset = context.currentType === 1 /* TokenTypes.Pipe */\n            ? context.lastOffset\n            : tokenizer.currentOffset();\n        const endLoc = context.currentType === 1 /* TokenTypes.Pipe */\n            ? context.lastEndLoc\n            : tokenizer.currentPosition();\n        endNode(node, endOffset, endLoc);\n        return node;\n    }\n    function parsePlural(tokenizer, offset, loc, msgNode) {\n        const context = tokenizer.context();\n        let hasEmptyMessage = msgNode.items.length === 0;\n        const node = startNode(1 /* NodeTypes.Plural */, offset, loc);\n        node.cases = [];\n        node.cases.push(msgNode);\n        do {\n            const msg = parseMessage(tokenizer);\n            if (!hasEmptyMessage) {\n                hasEmptyMessage = msg.items.length === 0;\n            }\n            node.cases.push(msg);\n        } while (context.currentType !== 14 /* TokenTypes.EOF */);\n        if (hasEmptyMessage) {\n            emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);\n        }\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    function parseResource(tokenizer) {\n        const context = tokenizer.context();\n        const { offset, startLoc } = context;\n        const msgNode = parseMessage(tokenizer);\n        if (context.currentType === 14 /* TokenTypes.EOF */) {\n            return msgNode;\n        }\n        else {\n            return parsePlural(tokenizer, offset, startLoc, msgNode);\n        }\n    }\n    function parse(source) {\n        const tokenizer = createTokenizer(source, assign({}, options));\n        const context = tokenizer.context();\n        const node = startNode(0 /* NodeTypes.Resource */, context.offset, context.startLoc);\n        if (location && node.loc) {\n            node.loc.source = source;\n        }\n        node.body = parseResource(tokenizer);\n        if (options.onCacheKey) {\n            node.cacheKey = options.onCacheKey(source);\n        }\n        // assert whether achieved to EOF\n        if (context.currentType !== 14 /* TokenTypes.EOF */) {\n            emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');\n        }\n        endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n        return node;\n    }\n    return { parse };\n}\nfunction getTokenCaption(token) {\n    if (token.type === 14 /* TokenTypes.EOF */) {\n        return 'EOF';\n    }\n    const name = (token.value || '').replace(/\\r?\\n/gu, '\\\\n');\n    return name.length > 10 ? name.slice(0, 9) + '…' : name;\n}\n\nfunction createTransformer(ast, options = {} // eslint-disable-line\n) {\n    const _context = {\n        ast,\n        helpers: new Set()\n    };\n    const context = () => _context;\n    const helper = (name) => {\n        _context.helpers.add(name);\n        return name;\n    };\n    return { context, helper };\n}\nfunction traverseNodes(nodes, transformer) {\n    for (let i = 0; i < nodes.length; i++) {\n        traverseNode(nodes[i], transformer);\n    }\n}\nfunction traverseNode(node, transformer) {\n    // TODO: if we need pre-hook of transform, should be implemented to here\n    switch (node.type) {\n        case 1 /* NodeTypes.Plural */:\n            traverseNodes(node.cases, transformer);\n            transformer.helper(\"plural\" /* HelperNameMap.PLURAL */);\n            break;\n        case 2 /* NodeTypes.Message */:\n            traverseNodes(node.items, transformer);\n            break;\n        case 6 /* NodeTypes.Linked */:\n            const linked = node;\n            traverseNode(linked.key, transformer);\n            transformer.helper(\"linked\" /* HelperNameMap.LINKED */);\n            transformer.helper(\"type\" /* HelperNameMap.TYPE */);\n            break;\n        case 5 /* NodeTypes.List */:\n            transformer.helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */);\n            transformer.helper(\"list\" /* HelperNameMap.LIST */);\n            break;\n        case 4 /* NodeTypes.Named */:\n            transformer.helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */);\n            transformer.helper(\"named\" /* HelperNameMap.NAMED */);\n            break;\n    }\n    // TODO: if we need post-hook of transform, should be implemented to here\n}\n// transform AST\nfunction transform(ast, options = {} // eslint-disable-line\n) {\n    const transformer = createTransformer(ast);\n    transformer.helper(\"normalize\" /* HelperNameMap.NORMALIZE */);\n    // traverse\n    ast.body && traverseNode(ast.body, transformer);\n    // set meta information\n    const context = transformer.context();\n    ast.helpers = Array.from(context.helpers);\n}\n\nfunction optimize(ast) {\n    const body = ast.body;\n    if (body.type === 2 /* NodeTypes.Message */) {\n        optimizeMessageNode(body);\n    }\n    else {\n        body.cases.forEach(c => optimizeMessageNode(c));\n    }\n    return ast;\n}\nfunction optimizeMessageNode(message) {\n    if (message.items.length === 1) {\n        const item = message.items[0];\n        if (item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */) {\n            message.static = item.value;\n            delete item.value; // optimization for size\n        }\n    }\n    else {\n        const values = [];\n        for (let i = 0; i < message.items.length; i++) {\n            const item = message.items[i];\n            if (!(item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */)) {\n                break;\n            }\n            if (item.value == null) {\n                break;\n            }\n            values.push(item.value);\n        }\n        if (values.length === message.items.length) {\n            message.static = join(values);\n            for (let i = 0; i < message.items.length; i++) {\n                const item = message.items[i];\n                if (item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */) {\n                    delete item.value; // optimization for size\n                }\n            }\n        }\n    }\n}\n\nconst ERROR_DOMAIN$1 = 'minifier';\n/* eslint-disable @typescript-eslint/no-explicit-any */\nfunction minify(node) {\n    node.t = node.type;\n    switch (node.type) {\n        case 0 /* NodeTypes.Resource */:\n            const resource = node;\n            minify(resource.body);\n            resource.b = resource.body;\n            delete resource.body;\n            break;\n        case 1 /* NodeTypes.Plural */:\n            const plural = node;\n            const cases = plural.cases;\n            for (let i = 0; i < cases.length; i++) {\n                minify(cases[i]);\n            }\n            plural.c = cases;\n            delete plural.cases;\n            break;\n        case 2 /* NodeTypes.Message */:\n            const message = node;\n            const items = message.items;\n            for (let i = 0; i < items.length; i++) {\n                minify(items[i]);\n            }\n            message.i = items;\n            delete message.items;\n            if (message.static) {\n                message.s = message.static;\n                delete message.static;\n            }\n            break;\n        case 3 /* NodeTypes.Text */:\n        case 9 /* NodeTypes.Literal */:\n        case 8 /* NodeTypes.LinkedModifier */:\n        case 7 /* NodeTypes.LinkedKey */:\n            const valueNode = node;\n            if (valueNode.value) {\n                valueNode.v = valueNode.value;\n                delete valueNode.value;\n            }\n            break;\n        case 6 /* NodeTypes.Linked */:\n            const linked = node;\n            minify(linked.key);\n            linked.k = linked.key;\n            delete linked.key;\n            if (linked.modifier) {\n                minify(linked.modifier);\n                linked.m = linked.modifier;\n                delete linked.modifier;\n            }\n            break;\n        case 5 /* NodeTypes.List */:\n            const list = node;\n            list.i = list.index;\n            delete list.index;\n            break;\n        case 4 /* NodeTypes.Named */:\n            const named = node;\n            named.k = named.key;\n            delete named.key;\n            break;\n        default:\n            {\n                throw createCompileError(CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE, null, {\n                    domain: ERROR_DOMAIN$1,\n                    args: [node.type]\n                });\n            }\n    }\n    delete node.type;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst ERROR_DOMAIN = 'parser';\nfunction createCodeGenerator(ast, options) {\n    const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;\n    const location = options.location !== false;\n    const _context = {\n        filename,\n        code: '',\n        column: 1,\n        line: 1,\n        offset: 0,\n        map: undefined,\n        breakLineCode,\n        needIndent: _needIndent,\n        indentLevel: 0\n    };\n    if (location && ast.loc) {\n        _context.source = ast.loc.source;\n    }\n    const context = () => _context;\n    function push(code, node) {\n        _context.code += code;\n    }\n    function _newline(n, withBreakLine = true) {\n        const _breakLineCode = withBreakLine ? breakLineCode : '';\n        push(_needIndent ? _breakLineCode + `  `.repeat(n) : _breakLineCode);\n    }\n    function indent(withNewLine = true) {\n        const level = ++_context.indentLevel;\n        withNewLine && _newline(level);\n    }\n    function deindent(withNewLine = true) {\n        const level = --_context.indentLevel;\n        withNewLine && _newline(level);\n    }\n    function newline() {\n        _newline(_context.indentLevel);\n    }\n    const helper = (key) => `_${key}`;\n    const needIndent = () => _context.needIndent;\n    return {\n        context,\n        push,\n        indent,\n        deindent,\n        newline,\n        helper,\n        needIndent\n    };\n}\nfunction generateLinkedNode(generator, node) {\n    const { helper } = generator;\n    generator.push(`${helper(\"linked\" /* HelperNameMap.LINKED */)}(`);\n    generateNode(generator, node.key);\n    if (node.modifier) {\n        generator.push(`, `);\n        generateNode(generator, node.modifier);\n        generator.push(`, _type`);\n    }\n    else {\n        generator.push(`, undefined, _type`);\n    }\n    generator.push(`)`);\n}\nfunction generateMessageNode(generator, node) {\n    const { helper, needIndent } = generator;\n    generator.push(`${helper(\"normalize\" /* HelperNameMap.NORMALIZE */)}([`);\n    generator.indent(needIndent());\n    const length = node.items.length;\n    for (let i = 0; i < length; i++) {\n        generateNode(generator, node.items[i]);\n        if (i === length - 1) {\n            break;\n        }\n        generator.push(', ');\n    }\n    generator.deindent(needIndent());\n    generator.push('])');\n}\nfunction generatePluralNode(generator, node) {\n    const { helper, needIndent } = generator;\n    if (node.cases.length > 1) {\n        generator.push(`${helper(\"plural\" /* HelperNameMap.PLURAL */)}([`);\n        generator.indent(needIndent());\n        const length = node.cases.length;\n        for (let i = 0; i < length; i++) {\n            generateNode(generator, node.cases[i]);\n            if (i === length - 1) {\n                break;\n            }\n            generator.push(', ');\n        }\n        generator.deindent(needIndent());\n        generator.push(`])`);\n    }\n}\nfunction generateResource(generator, node) {\n    if (node.body) {\n        generateNode(generator, node.body);\n    }\n    else {\n        generator.push('null');\n    }\n}\nfunction generateNode(generator, node) {\n    const { helper } = generator;\n    switch (node.type) {\n        case 0 /* NodeTypes.Resource */:\n            generateResource(generator, node);\n            break;\n        case 1 /* NodeTypes.Plural */:\n            generatePluralNode(generator, node);\n            break;\n        case 2 /* NodeTypes.Message */:\n            generateMessageNode(generator, node);\n            break;\n        case 6 /* NodeTypes.Linked */:\n            generateLinkedNode(generator, node);\n            break;\n        case 8 /* NodeTypes.LinkedModifier */:\n            generator.push(JSON.stringify(node.value), node);\n            break;\n        case 7 /* NodeTypes.LinkedKey */:\n            generator.push(JSON.stringify(node.value), node);\n            break;\n        case 5 /* NodeTypes.List */:\n            generator.push(`${helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */)}(${helper(\"list\" /* HelperNameMap.LIST */)}(${node.index}))`, node);\n            break;\n        case 4 /* NodeTypes.Named */:\n            generator.push(`${helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */)}(${helper(\"named\" /* HelperNameMap.NAMED */)}(${JSON.stringify(node.key)}))`, node);\n            break;\n        case 9 /* NodeTypes.Literal */:\n            generator.push(JSON.stringify(node.value), node);\n            break;\n        case 3 /* NodeTypes.Text */:\n            generator.push(JSON.stringify(node.value), node);\n            break;\n        default:\n            {\n                throw createCompileError(CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE, null, {\n                    domain: ERROR_DOMAIN,\n                    args: [node.type]\n                });\n            }\n    }\n}\n// generate code from AST\nconst generate = (ast, options = {} // eslint-disable-line\n) => {\n    const mode = isString(options.mode) ? options.mode : 'normal';\n    const filename = isString(options.filename)\n        ? options.filename\n        : 'message.intl';\n    const sourceMap = !!options.sourceMap;\n    // prettier-ignore\n    const breakLineCode = options.breakLineCode != null\n        ? options.breakLineCode\n        : mode === 'arrow'\n            ? ';'\n            : '\\n';\n    const needIndent = options.needIndent ? options.needIndent : mode !== 'arrow';\n    const helpers = ast.helpers || [];\n    const generator = createCodeGenerator(ast, {\n        mode,\n        filename,\n        sourceMap,\n        breakLineCode,\n        needIndent\n    });\n    generator.push(mode === 'normal' ? `function __msg__ (ctx) {` : `(ctx) => {`);\n    generator.indent(needIndent);\n    if (helpers.length > 0) {\n        generator.push(`const { ${join(helpers.map(s => `${s}: _${s}`), ', ')} } = ctx`);\n        generator.newline();\n    }\n    generator.push(`return `);\n    generateNode(generator, ast);\n    generator.deindent(needIndent);\n    generator.push(`}`);\n    delete ast.helpers;\n    const { code, map } = generator.context();\n    return {\n        ast,\n        code,\n        map: map ? map.toJSON() : undefined // eslint-disable-line @typescript-eslint/no-explicit-any\n    };\n};\n\nfunction baseCompile(source, options = {}) {\n    const assignedOptions = assign({}, options);\n    const jit = !!assignedOptions.jit;\n    const enalbeMinify = !!assignedOptions.minify;\n    const enambeOptimize = assignedOptions.optimize == null ? true : assignedOptions.optimize;\n    // parse source codes\n    const parser = createParser(assignedOptions);\n    const ast = parser.parse(source);\n    if (!jit) {\n        // transform ASTs\n        transform(ast, assignedOptions);\n        // generate javascript codes\n        return generate(ast, assignedOptions);\n    }\n    else {\n        // optimize ASTs\n        enambeOptimize && optimize(ast);\n        // minimize ASTs\n        enalbeMinify && minify(ast);\n        // In JIT mode, no ast transform, no code generation.\n        return { ast, code: '' };\n    }\n}\n\nexport { CompileErrorCodes, ERROR_DOMAIN$2 as ERROR_DOMAIN, LOCATION_STUB, baseCompile, createCompileError, createLocation, createParser, createPosition, defaultOnError, detectHtmlTag, errorMessages };\n","/*!\n  * core-base v9.10.1\n  * (c) 2024 kazuya kawaguchi\n  * Released under the MIT License.\n  */\nimport { getGlobalThis, isObject, isFunction, isString, isNumber, isPlainObject, assign, join, toDisplayString, isArray, format as format$1, incrementer, isPromise, isBoolean, warn, isRegExp, warnOnce, escapeHtml, inBrowser, mark, measure, isEmptyObject, generateCodeFrame, generateFormatCacheKey, isDate } from '@intlify/shared';\nimport { CompileErrorCodes, createCompileError, detectHtmlTag, defaultOnError, baseCompile as baseCompile$1 } from '@intlify/message-compiler';\nexport { CompileErrorCodes, createCompileError } from '@intlify/message-compiler';\n\n/**\n * This is only called in esm-bundler builds.\n * istanbul-ignore-next\n */\nfunction initFeatureFlags() {\n    if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\n        getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\n    }\n    if (typeof __INTLIFY_JIT_COMPILATION__ !== 'boolean') {\n        getGlobalThis().__INTLIFY_JIT_COMPILATION__ = false;\n    }\n    if (typeof __INTLIFY_DROP_MESSAGE_COMPILER__ !== 'boolean') {\n        getGlobalThis().__INTLIFY_DROP_MESSAGE_COMPILER__ = false;\n    }\n}\n\nconst pathStateMachine =  [];\npathStateMachine[0 /* States.BEFORE_PATH */] = {\n    [\"w\" /* PathCharTypes.WORKSPACE */]: [0 /* States.BEFORE_PATH */],\n    [\"i\" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n    [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */],\n    [\"o\" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */]\n};\npathStateMachine[1 /* States.IN_PATH */] = {\n    [\"w\" /* PathCharTypes.WORKSPACE */]: [1 /* States.IN_PATH */],\n    [\".\" /* PathCharTypes.DOT */]: [2 /* States.BEFORE_IDENT */],\n    [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */],\n    [\"o\" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */]\n};\npathStateMachine[2 /* States.BEFORE_IDENT */] = {\n    [\"w\" /* PathCharTypes.WORKSPACE */]: [2 /* States.BEFORE_IDENT */],\n    [\"i\" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n    [\"0\" /* PathCharTypes.ZERO */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */]\n};\npathStateMachine[3 /* States.IN_IDENT */] = {\n    [\"i\" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n    [\"0\" /* PathCharTypes.ZERO */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n    [\"w\" /* PathCharTypes.WORKSPACE */]: [1 /* States.IN_PATH */, 1 /* Actions.PUSH */],\n    [\".\" /* PathCharTypes.DOT */]: [2 /* States.BEFORE_IDENT */, 1 /* Actions.PUSH */],\n    [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */, 1 /* Actions.PUSH */],\n    [\"o\" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */, 1 /* Actions.PUSH */]\n};\npathStateMachine[4 /* States.IN_SUB_PATH */] = {\n    [\"'\" /* PathCharTypes.SINGLE_QUOTE */]: [5 /* States.IN_SINGLE_QUOTE */, 0 /* Actions.APPEND */],\n    [\"\\\"\" /* PathCharTypes.DOUBLE_QUOTE */]: [6 /* States.IN_DOUBLE_QUOTE */, 0 /* Actions.APPEND */],\n    [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [\n        4 /* States.IN_SUB_PATH */,\n        2 /* Actions.INC_SUB_PATH_DEPTH */\n    ],\n    [\"]\" /* PathCharTypes.RIGHT_BRACKET */]: [1 /* States.IN_PATH */, 3 /* Actions.PUSH_SUB_PATH */],\n    [\"o\" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */,\n    [\"l\" /* PathCharTypes.ELSE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */]\n};\npathStateMachine[5 /* States.IN_SINGLE_QUOTE */] = {\n    [\"'\" /* PathCharTypes.SINGLE_QUOTE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */],\n    [\"o\" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */,\n    [\"l\" /* PathCharTypes.ELSE */]: [5 /* States.IN_SINGLE_QUOTE */, 0 /* Actions.APPEND */]\n};\npathStateMachine[6 /* States.IN_DOUBLE_QUOTE */] = {\n    [\"\\\"\" /* PathCharTypes.DOUBLE_QUOTE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */],\n    [\"o\" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */,\n    [\"l\" /* PathCharTypes.ELSE */]: [6 /* States.IN_DOUBLE_QUOTE */, 0 /* Actions.APPEND */]\n};\n/**\n * Check if an expression is a literal value.\n */\nconst literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\nfunction isLiteral(exp) {\n    return literalValueRE.test(exp);\n}\n/**\n * Strip quotes from a string\n */\nfunction stripQuotes(str) {\n    const a = str.charCodeAt(0);\n    const b = str.charCodeAt(str.length - 1);\n    return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str;\n}\n/**\n * Determine the type of a character in a keypath.\n */\nfunction getPathCharType(ch) {\n    if (ch === undefined || ch === null) {\n        return \"o\" /* PathCharTypes.END_OF_FAIL */;\n    }\n    const code = ch.charCodeAt(0);\n    switch (code) {\n        case 0x5b: // [\n        case 0x5d: // ]\n        case 0x2e: // .\n        case 0x22: // \"\n        case 0x27: // '\n            return ch;\n        case 0x5f: // _\n        case 0x24: // $\n        case 0x2d: // -\n            return \"i\" /* PathCharTypes.IDENT */;\n        case 0x09: // Tab (HT)\n        case 0x0a: // Newline (LF)\n        case 0x0d: // Return (CR)\n        case 0xa0: // No-break space (NBSP)\n        case 0xfeff: // Byte Order Mark (BOM)\n        case 0x2028: // Line Separator (LS)\n        case 0x2029: // Paragraph Separator (PS)\n            return \"w\" /* PathCharTypes.WORKSPACE */;\n    }\n    return \"i\" /* PathCharTypes.IDENT */;\n}\n/**\n * Format a subPath, return its plain form if it is\n * a literal string or number. Otherwise prepend the\n * dynamic indicator (*).\n */\nfunction formatSubPath(path) {\n    const trimmed = path.trim();\n    // invalid leading 0\n    if (path.charAt(0) === '0' && isNaN(parseInt(path))) {\n        return false;\n    }\n    return isLiteral(trimmed)\n        ? stripQuotes(trimmed)\n        : \"*\" /* PathCharTypes.ASTARISK */ + trimmed;\n}\n/**\n * Parse a string path into an array of segments\n */\nfunction parse(path) {\n    const keys = [];\n    let index = -1;\n    let mode = 0 /* States.BEFORE_PATH */;\n    let subPathDepth = 0;\n    let c;\n    let key; // eslint-disable-line\n    let newChar;\n    let type;\n    let transition;\n    let action;\n    let typeMap;\n    const actions = [];\n    actions[0 /* Actions.APPEND */] = () => {\n        if (key === undefined) {\n            key = newChar;\n        }\n        else {\n            key += newChar;\n        }\n    };\n    actions[1 /* Actions.PUSH */] = () => {\n        if (key !== undefined) {\n            keys.push(key);\n            key = undefined;\n        }\n    };\n    actions[2 /* Actions.INC_SUB_PATH_DEPTH */] = () => {\n        actions[0 /* Actions.APPEND */]();\n        subPathDepth++;\n    };\n    actions[3 /* Actions.PUSH_SUB_PATH */] = () => {\n        if (subPathDepth > 0) {\n            subPathDepth--;\n            mode = 4 /* States.IN_SUB_PATH */;\n            actions[0 /* Actions.APPEND */]();\n        }\n        else {\n            subPathDepth = 0;\n            if (key === undefined) {\n                return false;\n            }\n            key = formatSubPath(key);\n            if (key === false) {\n                return false;\n            }\n            else {\n                actions[1 /* Actions.PUSH */]();\n            }\n        }\n    };\n    function maybeUnescapeQuote() {\n        const nextChar = path[index + 1];\n        if ((mode === 5 /* States.IN_SINGLE_QUOTE */ &&\n            nextChar === \"'\" /* PathCharTypes.SINGLE_QUOTE */) ||\n            (mode === 6 /* States.IN_DOUBLE_QUOTE */ &&\n                nextChar === \"\\\"\" /* PathCharTypes.DOUBLE_QUOTE */)) {\n            index++;\n            newChar = '\\\\' + nextChar;\n            actions[0 /* Actions.APPEND */]();\n            return true;\n        }\n    }\n    while (mode !== null) {\n        index++;\n        c = path[index];\n        if (c === '\\\\' && maybeUnescapeQuote()) {\n            continue;\n        }\n        type = getPathCharType(c);\n        typeMap = pathStateMachine[mode];\n        transition = typeMap[type] || typeMap[\"l\" /* PathCharTypes.ELSE */] || 8 /* States.ERROR */;\n        // check parse error\n        if (transition === 8 /* States.ERROR */) {\n            return;\n        }\n        mode = transition[0];\n        if (transition[1] !== undefined) {\n            action = actions[transition[1]];\n            if (action) {\n                newChar = c;\n                if (action() === false) {\n                    return;\n                }\n            }\n        }\n        // check parse finish\n        if (mode === 7 /* States.AFTER_PATH */) {\n            return keys;\n        }\n    }\n}\n// path token cache\nconst cache = new Map();\n/**\n * key-value message resolver\n *\n * @remarks\n * Resolves messages with the key-value structure. Note that messages with a hierarchical structure such as objects cannot be resolved\n *\n * @param obj - A target object to be resolved with path\n * @param path - A {@link Path | path} to resolve the value of message\n *\n * @returns A resolved {@link PathValue | path value}\n *\n * @VueI18nGeneral\n */\nfunction resolveWithKeyValue(obj, path) {\n    return isObject(obj) ? obj[path] : null;\n}\n/**\n * message resolver\n *\n * @remarks\n * Resolves messages. messages with a hierarchical structure such as objects can be resolved. This resolver is used in VueI18n as default.\n *\n * @param obj - A target object to be resolved with path\n * @param path - A {@link Path | path} to resolve the value of message\n *\n * @returns A resolved {@link PathValue | path value}\n *\n * @VueI18nGeneral\n */\nfunction resolveValue(obj, path) {\n    // check object\n    if (!isObject(obj)) {\n        return null;\n    }\n    // parse path\n    let hit = cache.get(path);\n    if (!hit) {\n        hit = parse(path);\n        if (hit) {\n            cache.set(path, hit);\n        }\n    }\n    // check hit\n    if (!hit) {\n        return null;\n    }\n    // resolve path value\n    const len = hit.length;\n    let last = obj;\n    let i = 0;\n    while (i < len) {\n        const val = last[hit[i]];\n        if (val === undefined) {\n            return null;\n        }\n        if (isFunction(last)) {\n            return null;\n        }\n        last = val;\n        i++;\n    }\n    return last;\n}\n\nconst DEFAULT_MODIFIER = (str) => str;\nconst DEFAULT_MESSAGE = (ctx) => ''; // eslint-disable-line\nconst DEFAULT_MESSAGE_DATA_TYPE = 'text';\nconst DEFAULT_NORMALIZE = (values) => values.length === 0 ? '' : join(values);\nconst DEFAULT_INTERPOLATE = toDisplayString;\nfunction pluralDefault(choice, choicesLength) {\n    choice = Math.abs(choice);\n    if (choicesLength === 2) {\n        // prettier-ignore\n        return choice\n            ? choice > 1\n                ? 1\n                : 0\n            : 1;\n    }\n    return choice ? Math.min(choice, 2) : 0;\n}\nfunction getPluralIndex(options) {\n    // prettier-ignore\n    const index = isNumber(options.pluralIndex)\n        ? options.pluralIndex\n        : -1;\n    // prettier-ignore\n    return options.named && (isNumber(options.named.count) || isNumber(options.named.n))\n        ? isNumber(options.named.count)\n            ? options.named.count\n            : isNumber(options.named.n)\n                ? options.named.n\n                : index\n        : index;\n}\nfunction normalizeNamed(pluralIndex, props) {\n    if (!props.count) {\n        props.count = pluralIndex;\n    }\n    if (!props.n) {\n        props.n = pluralIndex;\n    }\n}\nfunction createMessageContext(options = {}) {\n    const locale = options.locale;\n    const pluralIndex = getPluralIndex(options);\n    const pluralRule = isObject(options.pluralRules) &&\n        isString(locale) &&\n        isFunction(options.pluralRules[locale])\n        ? options.pluralRules[locale]\n        : pluralDefault;\n    const orgPluralRule = isObject(options.pluralRules) &&\n        isString(locale) &&\n        isFunction(options.pluralRules[locale])\n        ? pluralDefault\n        : undefined;\n    const plural = (messages) => {\n        return messages[pluralRule(pluralIndex, messages.length, orgPluralRule)];\n    };\n    const _list = options.list || [];\n    const list = (index) => _list[index];\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const _named = options.named || {};\n    isNumber(options.pluralIndex) && normalizeNamed(pluralIndex, _named);\n    const named = (key) => _named[key];\n    function message(key) {\n        // prettier-ignore\n        const msg = isFunction(options.messages)\n            ? options.messages(key)\n            : isObject(options.messages)\n                ? options.messages[key]\n                : false;\n        return !msg\n            ? options.parent\n                ? options.parent.message(key) // resolve from parent messages\n                : DEFAULT_MESSAGE\n            : msg;\n    }\n    const _modifier = (name) => options.modifiers\n        ? options.modifiers[name]\n        : DEFAULT_MODIFIER;\n    const normalize = isPlainObject(options.processor) && isFunction(options.processor.normalize)\n        ? options.processor.normalize\n        : DEFAULT_NORMALIZE;\n    const interpolate = isPlainObject(options.processor) &&\n        isFunction(options.processor.interpolate)\n        ? options.processor.interpolate\n        : DEFAULT_INTERPOLATE;\n    const type = isPlainObject(options.processor) && isString(options.processor.type)\n        ? options.processor.type\n        : DEFAULT_MESSAGE_DATA_TYPE;\n    const linked = (key, ...args) => {\n        const [arg1, arg2] = args;\n        let type = 'text';\n        let modifier = '';\n        if (args.length === 1) {\n            if (isObject(arg1)) {\n                modifier = arg1.modifier || modifier;\n                type = arg1.type || type;\n            }\n            else if (isString(arg1)) {\n                modifier = arg1 || modifier;\n            }\n        }\n        else if (args.length === 2) {\n            if (isString(arg1)) {\n                modifier = arg1 || modifier;\n            }\n            if (isString(arg2)) {\n                type = arg2 || type;\n            }\n        }\n        const ret = message(key)(ctx);\n        const msg = \n        // The message in vnode resolved with linked are returned as an array by processor.nomalize\n        type === 'vnode' && isArray(ret) && modifier\n            ? ret[0]\n            : ret;\n        return modifier ? _modifier(modifier)(msg, type) : msg;\n    };\n    const ctx = {\n        [\"list\" /* HelperNameMap.LIST */]: list,\n        [\"named\" /* HelperNameMap.NAMED */]: named,\n        [\"plural\" /* HelperNameMap.PLURAL */]: plural,\n        [\"linked\" /* HelperNameMap.LINKED */]: linked,\n        [\"message\" /* HelperNameMap.MESSAGE */]: message,\n        [\"type\" /* HelperNameMap.TYPE */]: type,\n        [\"interpolate\" /* HelperNameMap.INTERPOLATE */]: interpolate,\n        [\"normalize\" /* HelperNameMap.NORMALIZE */]: normalize,\n        [\"values\" /* HelperNameMap.VALUES */]: assign({}, _list, _named)\n    };\n    return ctx;\n}\n\nlet devtools = null;\nfunction setDevToolsHook(hook) {\n    devtools = hook;\n}\nfunction getDevToolsHook() {\n    return devtools;\n}\nfunction initI18nDevTools(i18n, version, meta) {\n    // TODO: queue if devtools is undefined\n    devtools &&\n        devtools.emit(\"i18n:init\" /* IntlifyDevToolsHooks.I18nInit */, {\n            timestamp: Date.now(),\n            i18n,\n            version,\n            meta\n        });\n}\nconst translateDevTools = /* #__PURE__*/ createDevToolsHook(\"function:translate\" /* IntlifyDevToolsHooks.FunctionTranslate */);\nfunction createDevToolsHook(hook) {\n    return (payloads) => devtools && devtools.emit(hook, payloads);\n}\n\nconst CoreWarnCodes = {\n    NOT_FOUND_KEY: 1,\n    FALLBACK_TO_TRANSLATE: 2,\n    CANNOT_FORMAT_NUMBER: 3,\n    FALLBACK_TO_NUMBER_FORMAT: 4,\n    CANNOT_FORMAT_DATE: 5,\n    FALLBACK_TO_DATE_FORMAT: 6,\n    EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER: 7,\n    __EXTEND_POINT__: 8\n};\n/** @internal */\nconst warnMessages = {\n    [CoreWarnCodes.NOT_FOUND_KEY]: `Not found '{key}' key in '{locale}' locale messages.`,\n    [CoreWarnCodes.FALLBACK_TO_TRANSLATE]: `Fall back to translate '{key}' key with '{target}' locale.`,\n    [CoreWarnCodes.CANNOT_FORMAT_NUMBER]: `Cannot format a number value due to not supported Intl.NumberFormat.`,\n    [CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT]: `Fall back to number format '{key}' key with '{target}' locale.`,\n    [CoreWarnCodes.CANNOT_FORMAT_DATE]: `Cannot format a date value due to not supported Intl.DateTimeFormat.`,\n    [CoreWarnCodes.FALLBACK_TO_DATE_FORMAT]: `Fall back to datetime format '{key}' key with '{target}' locale.`,\n    [CoreWarnCodes.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER]: `This project is using Custom Message Compiler, which is an experimental feature. It may receive breaking changes or be removed in the future.`\n};\nfunction getWarnMessage(code, ...args) {\n    return format$1(warnMessages[code], ...args);\n}\n\nconst code = CompileErrorCodes.__EXTEND_POINT__;\nconst inc = incrementer(code);\nconst CoreErrorCodes = {\n    INVALID_ARGUMENT: code, // 18\n    INVALID_DATE_ARGUMENT: inc(), // 19\n    INVALID_ISO_DATE_ARGUMENT: inc(), // 20\n    NOT_SUPPORT_NON_STRING_MESSAGE: inc(), // 21\n    NOT_SUPPORT_LOCALE_PROMISE_VALUE: inc(), // 22\n    NOT_SUPPORT_LOCALE_ASYNC_FUNCTION: inc(), // 23\n    NOT_SUPPORT_LOCALE_TYPE: inc(), // 24\n    __EXTEND_POINT__: inc() // 25\n};\nfunction createCoreError(code) {\n    return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages } : undefined);\n}\n/** @internal */\nconst errorMessages = {\n    [CoreErrorCodes.INVALID_ARGUMENT]: 'Invalid arguments',\n    [CoreErrorCodes.INVALID_DATE_ARGUMENT]: 'The date provided is an invalid Date object.' +\n        'Make sure your Date represents a valid date.',\n    [CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT]: 'The argument provided is not a valid ISO date string',\n    [CoreErrorCodes.NOT_SUPPORT_NON_STRING_MESSAGE]: 'Not support non-string message',\n    [CoreErrorCodes.NOT_SUPPORT_LOCALE_PROMISE_VALUE]: 'cannot support promise value',\n    [CoreErrorCodes.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION]: 'cannot support async function',\n    [CoreErrorCodes.NOT_SUPPORT_LOCALE_TYPE]: 'cannot support locale type'\n};\n\n/** @internal */\nfunction getLocale(context, options) {\n    return options.locale != null\n        ? resolveLocale(options.locale)\n        : resolveLocale(context.locale);\n}\nlet _resolveLocale;\n/** @internal */\nfunction resolveLocale(locale) {\n    if (isString(locale)) {\n        return locale;\n    }\n    else {\n        if (isFunction(locale)) {\n            if (locale.resolvedOnce && _resolveLocale != null) {\n                return _resolveLocale;\n            }\n            else if (locale.constructor.name === 'Function') {\n                const resolve = locale();\n                if (isPromise(resolve)) {\n                    throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_PROMISE_VALUE);\n                }\n                return (_resolveLocale = resolve);\n            }\n            else {\n                throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION);\n            }\n        }\n        else {\n            throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_TYPE);\n        }\n    }\n}\n/**\n * Fallback with simple implemenation\n *\n * @remarks\n * A fallback locale function implemented with a simple fallback algorithm.\n *\n * Basically, it returns the value as specified in the `fallbackLocale` props, and is processed with the fallback inside intlify.\n *\n * @param ctx - A {@link CoreContext | context}\n * @param fallback - A {@link FallbackLocale | fallback locale}\n * @param start - A starting {@link Locale | locale}\n *\n * @returns Fallback locales\n *\n * @VueI18nGeneral\n */\nfunction fallbackWithSimple(ctx, fallback, start // eslint-disable-line @typescript-eslint/no-unused-vars\n) {\n    // prettier-ignore\n    return [...new Set([\n            start,\n            ...(isArray(fallback)\n                ? fallback\n                : isObject(fallback)\n                    ? Object.keys(fallback)\n                    : isString(fallback)\n                        ? [fallback]\n                        : [start])\n        ])];\n}\n/**\n * Fallback with locale chain\n *\n * @remarks\n * A fallback locale function implemented with a fallback chain algorithm. It's used in VueI18n as default.\n *\n * @param ctx - A {@link CoreContext | context}\n * @param fallback - A {@link FallbackLocale | fallback locale}\n * @param start - A starting {@link Locale | locale}\n *\n * @returns Fallback locales\n *\n * @VueI18nSee [Fallbacking](../guide/essentials/fallback)\n *\n * @VueI18nGeneral\n */\nfunction fallbackWithLocaleChain(ctx, fallback, start) {\n    const startLocale = isString(start) ? start : DEFAULT_LOCALE;\n    const context = ctx;\n    if (!context.__localeChainCache) {\n        context.__localeChainCache = new Map();\n    }\n    let chain = context.__localeChainCache.get(startLocale);\n    if (!chain) {\n        chain = [];\n        // first block defined by start\n        let block = [start];\n        // while any intervening block found\n        while (isArray(block)) {\n            block = appendBlockToChain(chain, block, fallback);\n        }\n        // prettier-ignore\n        // last block defined by default\n        const defaults = isArray(fallback) || !isPlainObject(fallback)\n            ? fallback\n            : fallback['default']\n                ? fallback['default']\n                : null;\n        // convert defaults to array\n        block = isString(defaults) ? [defaults] : defaults;\n        if (isArray(block)) {\n            appendBlockToChain(chain, block, false);\n        }\n        context.__localeChainCache.set(startLocale, chain);\n    }\n    return chain;\n}\nfunction appendBlockToChain(chain, block, blocks) {\n    let follow = true;\n    for (let i = 0; i < block.length && isBoolean(follow); i++) {\n        const locale = block[i];\n        if (isString(locale)) {\n            follow = appendLocaleToChain(chain, block[i], blocks);\n        }\n    }\n    return follow;\n}\nfunction appendLocaleToChain(chain, locale, blocks) {\n    let follow;\n    const tokens = locale.split('-');\n    do {\n        const target = tokens.join('-');\n        follow = appendItemToChain(chain, target, blocks);\n        tokens.splice(-1, 1);\n    } while (tokens.length && follow === true);\n    return follow;\n}\nfunction appendItemToChain(chain, target, blocks) {\n    let follow = false;\n    if (!chain.includes(target)) {\n        follow = true;\n        if (target) {\n            follow = target[target.length - 1] !== '!';\n            const locale = target.replace(/!/g, '');\n            chain.push(locale);\n            if ((isArray(blocks) || isPlainObject(blocks)) &&\n                blocks[locale] // eslint-disable-line @typescript-eslint/no-explicit-any\n            ) {\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                follow = blocks[locale];\n            }\n        }\n    }\n    return follow;\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Intlify core-base version\n * @internal\n */\nconst VERSION = '9.10.1';\nconst NOT_REOSLVED = -1;\nconst DEFAULT_LOCALE = 'en-US';\nconst MISSING_RESOLVE_VALUE = '';\nconst capitalize = (str) => `${str.charAt(0).toLocaleUpperCase()}${str.substr(1)}`;\nfunction getDefaultLinkedModifiers() {\n    return {\n        upper: (val, type) => {\n            // prettier-ignore\n            return type === 'text' && isString(val)\n                ? val.toUpperCase()\n                : type === 'vnode' && isObject(val) && '__v_isVNode' in val\n                    ? val.children.toUpperCase()\n                    : val;\n        },\n        lower: (val, type) => {\n            // prettier-ignore\n            return type === 'text' && isString(val)\n                ? val.toLowerCase()\n                : type === 'vnode' && isObject(val) && '__v_isVNode' in val\n                    ? val.children.toLowerCase()\n                    : val;\n        },\n        capitalize: (val, type) => {\n            // prettier-ignore\n            return (type === 'text' && isString(val)\n                ? capitalize(val)\n                : type === 'vnode' && isObject(val) && '__v_isVNode' in val\n                    ? capitalize(val.children)\n                    : val);\n        }\n    };\n}\nlet _compiler;\nfunction registerMessageCompiler(compiler) {\n    _compiler = compiler;\n}\nlet _resolver;\n/**\n * Register the message resolver\n *\n * @param resolver - A {@link MessageResolver} function\n *\n * @VueI18nGeneral\n */\nfunction registerMessageResolver(resolver) {\n    _resolver = resolver;\n}\nlet _fallbacker;\n/**\n * Register the locale fallbacker\n *\n * @param fallbacker - A {@link LocaleFallbacker} function\n *\n * @VueI18nGeneral\n */\nfunction registerLocaleFallbacker(fallbacker) {\n    _fallbacker = fallbacker;\n}\n// Additional Meta for Intlify DevTools\nlet _additionalMeta =  null;\n/* #__NO_SIDE_EFFECTS__ */\nconst setAdditionalMeta = (meta) => {\n    _additionalMeta = meta;\n};\n/* #__NO_SIDE_EFFECTS__ */\nconst getAdditionalMeta = () => _additionalMeta;\nlet _fallbackContext = null;\nconst setFallbackContext = (context) => {\n    _fallbackContext = context;\n};\nconst getFallbackContext = () => _fallbackContext;\n// ID for CoreContext\nlet _cid = 0;\nfunction createCoreContext(options = {}) {\n    // setup options\n    const onWarn = isFunction(options.onWarn) ? options.onWarn : warn;\n    const version = isString(options.version) ? options.version : VERSION;\n    const locale = isString(options.locale) || isFunction(options.locale)\n        ? options.locale\n        : DEFAULT_LOCALE;\n    const _locale = isFunction(locale) ? DEFAULT_LOCALE : locale;\n    const fallbackLocale = isArray(options.fallbackLocale) ||\n        isPlainObject(options.fallbackLocale) ||\n        isString(options.fallbackLocale) ||\n        options.fallbackLocale === false\n        ? options.fallbackLocale\n        : _locale;\n    const messages = isPlainObject(options.messages)\n        ? options.messages\n        : { [_locale]: {} };\n    const datetimeFormats = isPlainObject(options.datetimeFormats)\n            ? options.datetimeFormats\n            : { [_locale]: {} }\n        ;\n    const numberFormats = isPlainObject(options.numberFormats)\n            ? options.numberFormats\n            : { [_locale]: {} }\n        ;\n    const modifiers = assign({}, options.modifiers || {}, getDefaultLinkedModifiers());\n    const pluralRules = options.pluralRules || {};\n    const missing = isFunction(options.missing) ? options.missing : null;\n    const missingWarn = isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\n        ? options.missingWarn\n        : true;\n    const fallbackWarn = isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\n        ? options.fallbackWarn\n        : true;\n    const fallbackFormat = !!options.fallbackFormat;\n    const unresolving = !!options.unresolving;\n    const postTranslation = isFunction(options.postTranslation)\n        ? options.postTranslation\n        : null;\n    const processor = isPlainObject(options.processor) ? options.processor : null;\n    const warnHtmlMessage = isBoolean(options.warnHtmlMessage)\n        ? options.warnHtmlMessage\n        : true;\n    const escapeParameter = !!options.escapeParameter;\n    const messageCompiler = isFunction(options.messageCompiler)\n        ? options.messageCompiler\n        : _compiler;\n    if ((process.env.NODE_ENV !== 'production') &&\n        !false &&\n        !false &&\n        isFunction(options.messageCompiler)) {\n        warnOnce(getWarnMessage(CoreWarnCodes.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER));\n    }\n    const messageResolver = isFunction(options.messageResolver)\n        ? options.messageResolver\n        : _resolver || resolveWithKeyValue;\n    const localeFallbacker = isFunction(options.localeFallbacker)\n        ? options.localeFallbacker\n        : _fallbacker || fallbackWithSimple;\n    const fallbackContext = isObject(options.fallbackContext)\n        ? options.fallbackContext\n        : undefined;\n    // setup internal options\n    const internalOptions = options;\n    const __datetimeFormatters = isObject(internalOptions.__datetimeFormatters)\n            ? internalOptions.__datetimeFormatters\n            : new Map()\n        ;\n    const __numberFormatters = isObject(internalOptions.__numberFormatters)\n            ? internalOptions.__numberFormatters\n            : new Map()\n        ;\n    const __meta = isObject(internalOptions.__meta) ? internalOptions.__meta : {};\n    _cid++;\n    const context = {\n        version,\n        cid: _cid,\n        locale,\n        fallbackLocale,\n        messages,\n        modifiers,\n        pluralRules,\n        missing,\n        missingWarn,\n        fallbackWarn,\n        fallbackFormat,\n        unresolving,\n        postTranslation,\n        processor,\n        warnHtmlMessage,\n        escapeParameter,\n        messageCompiler,\n        messageResolver,\n        localeFallbacker,\n        fallbackContext,\n        onWarn,\n        __meta\n    };\n    {\n        context.datetimeFormats = datetimeFormats;\n        context.numberFormats = numberFormats;\n        context.__datetimeFormatters = __datetimeFormatters;\n        context.__numberFormatters = __numberFormatters;\n    }\n    // for vue-devtools timeline event\n    if ((process.env.NODE_ENV !== 'production')) {\n        context.__v_emitter =\n            internalOptions.__v_emitter != null\n                ? internalOptions.__v_emitter\n                : undefined;\n    }\n    // NOTE: experimental !!\n    if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n        initI18nDevTools(context, version, __meta);\n    }\n    return context;\n}\n/** @internal */\nfunction isTranslateFallbackWarn(fallback, key) {\n    return fallback instanceof RegExp ? fallback.test(key) : fallback;\n}\n/** @internal */\nfunction isTranslateMissingWarn(missing, key) {\n    return missing instanceof RegExp ? missing.test(key) : missing;\n}\n/** @internal */\nfunction handleMissing(context, key, locale, missingWarn, type) {\n    const { missing, onWarn } = context;\n    // for vue-devtools timeline event\n    if ((process.env.NODE_ENV !== 'production')) {\n        const emitter = context.__v_emitter;\n        if (emitter) {\n            emitter.emit(\"missing\" /* VueDevToolsTimelineEvents.MISSING */, {\n                locale,\n                key,\n                type,\n                groupId: `${type}:${key}`\n            });\n        }\n    }\n    if (missing !== null) {\n        const ret = missing(context, locale, key, type);\n        return isString(ret) ? ret : key;\n    }\n    else {\n        if ((process.env.NODE_ENV !== 'production') && isTranslateMissingWarn(missingWarn, key)) {\n            onWarn(getWarnMessage(CoreWarnCodes.NOT_FOUND_KEY, { key, locale }));\n        }\n        return key;\n    }\n}\n/** @internal */\nfunction updateFallbackLocale(ctx, locale, fallback) {\n    const context = ctx;\n    context.__localeChainCache = new Map();\n    ctx.localeFallbacker(ctx, fallback, locale);\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nfunction format(ast) {\n    const msg = (ctx) => formatParts(ctx, ast);\n    return msg;\n}\nfunction formatParts(ctx, ast) {\n    const body = ast.b || ast.body;\n    if ((body.t || body.type) === 1 /* NodeTypes.Plural */) {\n        const plural = body;\n        const cases = plural.c || plural.cases;\n        return ctx.plural(cases.reduce((messages, c) => [\n            ...messages,\n            formatMessageParts(ctx, c)\n        ], []));\n    }\n    else {\n        return formatMessageParts(ctx, body);\n    }\n}\nfunction formatMessageParts(ctx, node) {\n    const _static = node.s || node.static;\n    if (_static) {\n        return ctx.type === 'text'\n            ? _static\n            : ctx.normalize([_static]);\n    }\n    else {\n        const messages = (node.i || node.items).reduce((acm, c) => [...acm, formatMessagePart(ctx, c)], []);\n        return ctx.normalize(messages);\n    }\n}\nfunction formatMessagePart(ctx, node) {\n    const type = node.t || node.type;\n    switch (type) {\n        case 3 /* NodeTypes.Text */:\n            const text = node;\n            return (text.v || text.value);\n        case 9 /* NodeTypes.Literal */:\n            const literal = node;\n            return (literal.v || literal.value);\n        case 4 /* NodeTypes.Named */:\n            const named = node;\n            return ctx.interpolate(ctx.named(named.k || named.key));\n        case 5 /* NodeTypes.List */:\n            const list = node;\n            return ctx.interpolate(ctx.list(list.i != null ? list.i : list.index));\n        case 6 /* NodeTypes.Linked */:\n            const linked = node;\n            const modifier = linked.m || linked.modifier;\n            return ctx.linked(formatMessagePart(ctx, linked.k || linked.key), modifier ? formatMessagePart(ctx, modifier) : undefined, ctx.type);\n        case 7 /* NodeTypes.LinkedKey */:\n            const linkedKey = node;\n            return (linkedKey.v || linkedKey.value);\n        case 8 /* NodeTypes.LinkedModifier */:\n            const linkedModifier = node;\n            return (linkedModifier.v || linkedModifier.value);\n        default:\n            throw new Error(`unhandled node type on format message part: ${type}`);\n    }\n}\n\nconst WARN_MESSAGE = `Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS.`;\nfunction checkHtmlMessage(source, warnHtmlMessage) {\n    if (warnHtmlMessage && detectHtmlTag(source)) {\n        warn(format$1(WARN_MESSAGE, { source }));\n    }\n}\nconst defaultOnCacheKey = (message) => message;\nlet compileCache = Object.create(null);\nfunction clearCompileCache() {\n    compileCache = Object.create(null);\n}\nconst isMessageAST = (val) => isObject(val) &&\n    (val.t === 0 || val.type === 0) &&\n    ('b' in val || 'body' in val);\nfunction baseCompile(message, options = {}) {\n    // error detecting on compile\n    let detectError = false;\n    const onError = options.onError || defaultOnError;\n    options.onError = (err) => {\n        detectError = true;\n        onError(err);\n    };\n    // compile with mesasge-compiler\n    return { ...baseCompile$1(message, options), detectError };\n}\n/* #__NO_SIDE_EFFECTS__ */\nconst compileToFunction = (message, context) => {\n    if (!isString(message)) {\n        throw createCoreError(CoreErrorCodes.NOT_SUPPORT_NON_STRING_MESSAGE);\n    }\n    {\n        // check HTML message\n        const warnHtmlMessage = isBoolean(context.warnHtmlMessage)\n            ? context.warnHtmlMessage\n            : true;\n        (process.env.NODE_ENV !== 'production') && checkHtmlMessage(message, warnHtmlMessage);\n        // check caches\n        const onCacheKey = context.onCacheKey || defaultOnCacheKey;\n        const cacheKey = onCacheKey(message);\n        const cached = compileCache[cacheKey];\n        if (cached) {\n            return cached;\n        }\n        // compile\n        const { code, detectError } = baseCompile(message, context);\n        // evaluate function\n        const msg = new Function(`return ${code}`)();\n        // if occurred compile error, don't cache\n        return !detectError\n            ? (compileCache[cacheKey] = msg)\n            : msg;\n    }\n};\nfunction compile(message, context) {\n    if (((__INTLIFY_JIT_COMPILATION__ && !__INTLIFY_DROP_MESSAGE_COMPILER__)) &&\n        isString(message)) {\n        // check HTML message\n        const warnHtmlMessage = isBoolean(context.warnHtmlMessage)\n            ? context.warnHtmlMessage\n            : true;\n        (process.env.NODE_ENV !== 'production') && checkHtmlMessage(message, warnHtmlMessage);\n        // check caches\n        const onCacheKey = context.onCacheKey || defaultOnCacheKey;\n        const cacheKey = onCacheKey(message);\n        const cached = compileCache[cacheKey];\n        if (cached) {\n            return cached;\n        }\n        // compile with JIT mode\n        const { ast, detectError } = baseCompile(message, {\n            ...context,\n            location: (process.env.NODE_ENV !== 'production'),\n            jit: true\n        });\n        // compose message function from AST\n        const msg = format(ast);\n        // if occurred compile error, don't cache\n        return !detectError\n            ? (compileCache[cacheKey] = msg)\n            : msg;\n    }\n    else {\n        if ((process.env.NODE_ENV !== 'production') && !isMessageAST(message)) {\n            warn(`the message that is resolve with key '${context.key}' is not supported for jit compilation`);\n            return (() => message);\n        }\n        // AST case (passed from bundler)\n        const cacheKey = message.cacheKey;\n        if (cacheKey) {\n            const cached = compileCache[cacheKey];\n            if (cached) {\n                return cached;\n            }\n            // compose message function from message (AST)\n            return (compileCache[cacheKey] =\n                format(message));\n        }\n        else {\n            return format(message);\n        }\n    }\n}\n\nconst NOOP_MESSAGE_FUNCTION = () => '';\nconst isMessageFunction = (val) => isFunction(val);\n// implementation of `translate` function\nfunction translate(context, ...args) {\n    const { fallbackFormat, postTranslation, unresolving, messageCompiler, fallbackLocale, messages } = context;\n    const [key, options] = parseTranslateArgs(...args);\n    const missingWarn = isBoolean(options.missingWarn)\n        ? options.missingWarn\n        : context.missingWarn;\n    const fallbackWarn = isBoolean(options.fallbackWarn)\n        ? options.fallbackWarn\n        : context.fallbackWarn;\n    const escapeParameter = isBoolean(options.escapeParameter)\n        ? options.escapeParameter\n        : context.escapeParameter;\n    const resolvedMessage = !!options.resolvedMessage;\n    // prettier-ignore\n    const defaultMsgOrKey = isString(options.default) || isBoolean(options.default) // default by function option\n        ? !isBoolean(options.default)\n            ? options.default\n            : (!messageCompiler ? () => key : key)\n        : fallbackFormat // default by `fallbackFormat` option\n            ? (!messageCompiler ? () => key : key)\n            : '';\n    const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== '';\n    const locale = getLocale(context, options);\n    // escape params\n    escapeParameter && escapeParams(options);\n    // resolve message format\n    // eslint-disable-next-line prefer-const\n    let [formatScope, targetLocale, message] = !resolvedMessage\n        ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn)\n        : [\n            key,\n            locale,\n            messages[locale] || {}\n        ];\n    // NOTE:\n    //  Fix to work around `ssrTransfrom` bug in Vite.\n    //  https://github.com/vitejs/vite/issues/4306\n    //  To get around this, use temporary variables.\n    //  https://github.com/nuxt/framework/issues/1461#issuecomment-954606243\n    let format = formatScope;\n    // if you use default message, set it as message format!\n    let cacheBaseKey = key;\n    if (!resolvedMessage &&\n        !(isString(format) ||\n            isMessageAST(format) ||\n            isMessageFunction(format))) {\n        if (enableDefaultMsg) {\n            format = defaultMsgOrKey;\n            cacheBaseKey = format;\n        }\n    }\n    // checking message format and target locale\n    if (!resolvedMessage &&\n        (!(isString(format) ||\n            isMessageAST(format) ||\n            isMessageFunction(format)) ||\n            !isString(targetLocale))) {\n        return unresolving ? NOT_REOSLVED : key;\n    }\n    // TODO: refactor\n    if ((process.env.NODE_ENV !== 'production') && isString(format) && context.messageCompiler == null) {\n        warn(`The message format compilation is not supported in this build. ` +\n            `Because message compiler isn't included. ` +\n            `You need to pre-compilation all message format. ` +\n            `So translate function return '${key}'.`);\n        return key;\n    }\n    // setup compile error detecting\n    let occurred = false;\n    const onError = () => {\n        occurred = true;\n    };\n    // compile message format\n    const msg = !isMessageFunction(format)\n        ? compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, onError)\n        : format;\n    // if occurred compile error, return the message format\n    if (occurred) {\n        return format;\n    }\n    // evaluate message with context\n    const ctxOptions = getMessageContextOptions(context, targetLocale, message, options);\n    const msgContext = createMessageContext(ctxOptions);\n    const messaged = evaluateMessage(context, msg, msgContext);\n    // if use post translation option, proceed it with handler\n    const ret = postTranslation\n        ? postTranslation(messaged, key)\n        : messaged;\n    // NOTE: experimental !!\n    if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n        // prettier-ignore\n        const payloads = {\n            timestamp: Date.now(),\n            key: isString(key)\n                ? key\n                : isMessageFunction(format)\n                    ? format.key\n                    : '',\n            locale: targetLocale || (isMessageFunction(format)\n                ? format.locale\n                : ''),\n            format: isString(format)\n                ? format\n                : isMessageFunction(format)\n                    ? format.source\n                    : '',\n            message: ret\n        };\n        payloads.meta = assign({}, context.__meta, getAdditionalMeta() || {});\n        translateDevTools(payloads);\n    }\n    return ret;\n}\nfunction escapeParams(options) {\n    if (isArray(options.list)) {\n        options.list = options.list.map(item => isString(item) ? escapeHtml(item) : item);\n    }\n    else if (isObject(options.named)) {\n        Object.keys(options.named).forEach(key => {\n            if (isString(options.named[key])) {\n                options.named[key] = escapeHtml(options.named[key]);\n            }\n        });\n    }\n}\nfunction resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) {\n    const { messages, onWarn, messageResolver: resolveValue, localeFallbacker } = context;\n    const locales = localeFallbacker(context, fallbackLocale, locale); // eslint-disable-line @typescript-eslint/no-explicit-any\n    let message = {};\n    let targetLocale;\n    let format = null;\n    let from = locale;\n    let to = null;\n    const type = 'translate';\n    for (let i = 0; i < locales.length; i++) {\n        targetLocale = to = locales[i];\n        if ((process.env.NODE_ENV !== 'production') &&\n            locale !== targetLocale &&\n            isTranslateFallbackWarn(fallbackWarn, key)) {\n            onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_TRANSLATE, {\n                key,\n                target: targetLocale\n            }));\n        }\n        // for vue-devtools timeline event\n        if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\n            const emitter = context.__v_emitter;\n            if (emitter) {\n                emitter.emit(\"fallback\" /* VueDevToolsTimelineEvents.FALBACK */, {\n                    type,\n                    key,\n                    from,\n                    to,\n                    groupId: `${type}:${key}`\n                });\n            }\n        }\n        message =\n            messages[targetLocale] || {};\n        // for vue-devtools timeline event\n        let start = null;\n        let startTag;\n        let endTag;\n        if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n            start = window.performance.now();\n            startTag = 'intlify-message-resolve-start';\n            endTag = 'intlify-message-resolve-end';\n            mark && mark(startTag);\n        }\n        if ((format = resolveValue(message, key)) === null) {\n            // if null, resolve with object key path\n            format = message[key]; // eslint-disable-line @typescript-eslint/no-explicit-any\n        }\n        // for vue-devtools timeline event\n        if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n            const end = window.performance.now();\n            const emitter = context.__v_emitter;\n            if (emitter && start && format) {\n                emitter.emit(\"message-resolve\" /* VueDevToolsTimelineEvents.MESSAGE_RESOLVE */, {\n                    type: \"message-resolve\" /* VueDevToolsTimelineEvents.MESSAGE_RESOLVE */,\n                    key,\n                    message: format,\n                    time: end - start,\n                    groupId: `${type}:${key}`\n                });\n            }\n            if (startTag && endTag && mark && measure) {\n                mark(endTag);\n                measure('intlify message resolve', startTag, endTag);\n            }\n        }\n        if (isString(format) || isMessageAST(format) || isMessageFunction(format)) {\n            break;\n        }\n        const missingRet = handleMissing(context, // eslint-disable-line @typescript-eslint/no-explicit-any\n        key, targetLocale, missingWarn, type);\n        if (missingRet !== key) {\n            format = missingRet;\n        }\n        from = to;\n    }\n    return [format, targetLocale, message];\n}\nfunction compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, onError) {\n    const { messageCompiler, warnHtmlMessage } = context;\n    if (isMessageFunction(format)) {\n        const msg = format;\n        msg.locale = msg.locale || targetLocale;\n        msg.key = msg.key || key;\n        return msg;\n    }\n    if (messageCompiler == null) {\n        const msg = (() => format);\n        msg.locale = targetLocale;\n        msg.key = key;\n        return msg;\n    }\n    // for vue-devtools timeline event\n    let start = null;\n    let startTag;\n    let endTag;\n    if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n        start = window.performance.now();\n        startTag = 'intlify-message-compilation-start';\n        endTag = 'intlify-message-compilation-end';\n        mark && mark(startTag);\n    }\n    const msg = messageCompiler(format, getCompileContext(context, targetLocale, cacheBaseKey, format, warnHtmlMessage, onError));\n    // for vue-devtools timeline event\n    if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n        const end = window.performance.now();\n        const emitter = context.__v_emitter;\n        if (emitter && start) {\n            emitter.emit(\"message-compilation\" /* VueDevToolsTimelineEvents.MESSAGE_COMPILATION */, {\n                type: \"message-compilation\" /* VueDevToolsTimelineEvents.MESSAGE_COMPILATION */,\n                message: format,\n                time: end - start,\n                groupId: `${'translate'}:${key}`\n            });\n        }\n        if (startTag && endTag && mark && measure) {\n            mark(endTag);\n            measure('intlify message compilation', startTag, endTag);\n        }\n    }\n    msg.locale = targetLocale;\n    msg.key = key;\n    msg.source = format;\n    return msg;\n}\nfunction evaluateMessage(context, msg, msgCtx) {\n    // for vue-devtools timeline event\n    let start = null;\n    let startTag;\n    let endTag;\n    if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n        start = window.performance.now();\n        startTag = 'intlify-message-evaluation-start';\n        endTag = 'intlify-message-evaluation-end';\n        mark && mark(startTag);\n    }\n    const messaged = msg(msgCtx);\n    // for vue-devtools timeline event\n    if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n        const end = window.performance.now();\n        const emitter = context.__v_emitter;\n        if (emitter && start) {\n            emitter.emit(\"message-evaluation\" /* VueDevToolsTimelineEvents.MESSAGE_EVALUATION */, {\n                type: \"message-evaluation\" /* VueDevToolsTimelineEvents.MESSAGE_EVALUATION */,\n                value: messaged,\n                time: end - start,\n                groupId: `${'translate'}:${msg.key}`\n            });\n        }\n        if (startTag && endTag && mark && measure) {\n            mark(endTag);\n            measure('intlify message evaluation', startTag, endTag);\n        }\n    }\n    return messaged;\n}\n/** @internal */\nfunction parseTranslateArgs(...args) {\n    const [arg1, arg2, arg3] = args;\n    const options = {};\n    if (!isString(arg1) &&\n        !isNumber(arg1) &&\n        !isMessageFunction(arg1) &&\n        !isMessageAST(arg1)) {\n        throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n    }\n    // prettier-ignore\n    const key = isNumber(arg1)\n        ? String(arg1)\n        : isMessageFunction(arg1)\n            ? arg1\n            : arg1;\n    if (isNumber(arg2)) {\n        options.plural = arg2;\n    }\n    else if (isString(arg2)) {\n        options.default = arg2;\n    }\n    else if (isPlainObject(arg2) && !isEmptyObject(arg2)) {\n        options.named = arg2;\n    }\n    else if (isArray(arg2)) {\n        options.list = arg2;\n    }\n    if (isNumber(arg3)) {\n        options.plural = arg3;\n    }\n    else if (isString(arg3)) {\n        options.default = arg3;\n    }\n    else if (isPlainObject(arg3)) {\n        assign(options, arg3);\n    }\n    return [key, options];\n}\nfunction getCompileContext(context, locale, key, source, warnHtmlMessage, onError) {\n    return {\n        locale,\n        key,\n        warnHtmlMessage,\n        onError: (err) => {\n            onError && onError(err);\n            if ((process.env.NODE_ENV !== 'production')) {\n                const _source = getSourceForCodeFrame(source);\n                const message = `Message compilation error: ${err.message}`;\n                const codeFrame = err.location &&\n                    _source &&\n                    generateCodeFrame(_source, err.location.start.offset, err.location.end.offset);\n                const emitter = context.__v_emitter;\n                if (emitter && _source) {\n                    emitter.emit(\"compile-error\" /* VueDevToolsTimelineEvents.COMPILE_ERROR */, {\n                        message: _source,\n                        error: err.message,\n                        start: err.location && err.location.start.offset,\n                        end: err.location && err.location.end.offset,\n                        groupId: `${'translate'}:${key}`\n                    });\n                }\n                console.error(codeFrame ? `${message}\\n${codeFrame}` : message);\n            }\n            else {\n                throw err;\n            }\n        },\n        onCacheKey: (source) => generateFormatCacheKey(locale, key, source)\n    };\n}\nfunction getSourceForCodeFrame(source) {\n    if (isString(source)) {\n        return source;\n    }\n    else {\n        if (source.loc && source.loc.source) {\n            return source.loc.source;\n        }\n    }\n}\nfunction getMessageContextOptions(context, locale, message, options) {\n    const { modifiers, pluralRules, messageResolver: resolveValue, fallbackLocale, fallbackWarn, missingWarn, fallbackContext } = context;\n    const resolveMessage = (key) => {\n        let val = resolveValue(message, key);\n        // fallback to root context\n        if (val == null && fallbackContext) {\n            const [, , message] = resolveMessageFormat(fallbackContext, key, locale, fallbackLocale, fallbackWarn, missingWarn);\n            val = resolveValue(message, key);\n        }\n        if (isString(val) || isMessageAST(val)) {\n            let occurred = false;\n            const onError = () => {\n                occurred = true;\n            };\n            const msg = compileMessageFormat(context, key, locale, val, key, onError);\n            return !occurred\n                ? msg\n                : NOOP_MESSAGE_FUNCTION;\n        }\n        else if (isMessageFunction(val)) {\n            return val;\n        }\n        else {\n            // TODO: should be implemented warning message\n            return NOOP_MESSAGE_FUNCTION;\n        }\n    };\n    const ctxOptions = {\n        locale,\n        modifiers,\n        pluralRules,\n        messages: resolveMessage\n    };\n    if (context.processor) {\n        ctxOptions.processor = context.processor;\n    }\n    if (options.list) {\n        ctxOptions.list = options.list;\n    }\n    if (options.named) {\n        ctxOptions.named = options.named;\n    }\n    if (isNumber(options.plural)) {\n        ctxOptions.pluralIndex = options.plural;\n    }\n    return ctxOptions;\n}\n\nconst intlDefined = typeof Intl !== 'undefined';\nconst Availabilities = {\n    dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\n    numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\n};\n\n// implementation of `datetime` function\nfunction datetime(context, ...args) {\n    const { datetimeFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\n    const { __datetimeFormatters } = context;\n    if ((process.env.NODE_ENV !== 'production') && !Availabilities.dateTimeFormat) {\n        onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_DATE));\n        return MISSING_RESOLVE_VALUE;\n    }\n    const [key, value, options, overrides] = parseDateTimeArgs(...args);\n    const missingWarn = isBoolean(options.missingWarn)\n        ? options.missingWarn\n        : context.missingWarn;\n    const fallbackWarn = isBoolean(options.fallbackWarn)\n        ? options.fallbackWarn\n        : context.fallbackWarn;\n    const part = !!options.part;\n    const locale = getLocale(context, options);\n    const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\n    fallbackLocale, locale);\n    if (!isString(key) || key === '') {\n        return new Intl.DateTimeFormat(locale, overrides).format(value);\n    }\n    // resolve format\n    let datetimeFormat = {};\n    let targetLocale;\n    let format = null;\n    let from = locale;\n    let to = null;\n    const type = 'datetime format';\n    for (let i = 0; i < locales.length; i++) {\n        targetLocale = to = locales[i];\n        if ((process.env.NODE_ENV !== 'production') &&\n            locale !== targetLocale &&\n            isTranslateFallbackWarn(fallbackWarn, key)) {\n            onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_DATE_FORMAT, {\n                key,\n                target: targetLocale\n            }));\n        }\n        // for vue-devtools timeline event\n        if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\n            const emitter = context.__v_emitter;\n            if (emitter) {\n                emitter.emit(\"fallback\" /* VueDevToolsTimelineEvents.FALBACK */, {\n                    type,\n                    key,\n                    from,\n                    to,\n                    groupId: `${type}:${key}`\n                });\n            }\n        }\n        datetimeFormat =\n            datetimeFormats[targetLocale] || {};\n        format = datetimeFormat[key];\n        if (isPlainObject(format))\n            break;\n        handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\n        from = to;\n    }\n    // checking format and target locale\n    if (!isPlainObject(format) || !isString(targetLocale)) {\n        return unresolving ? NOT_REOSLVED : key;\n    }\n    let id = `${targetLocale}__${key}`;\n    if (!isEmptyObject(overrides)) {\n        id = `${id}__${JSON.stringify(overrides)}`;\n    }\n    let formatter = __datetimeFormatters.get(id);\n    if (!formatter) {\n        formatter = new Intl.DateTimeFormat(targetLocale, assign({}, format, overrides));\n        __datetimeFormatters.set(id, formatter);\n    }\n    return !part ? formatter.format(value) : formatter.formatToParts(value);\n}\n/** @internal */\nconst DATETIME_FORMAT_OPTIONS_KEYS = [\n    'localeMatcher',\n    'weekday',\n    'era',\n    'year',\n    'month',\n    'day',\n    'hour',\n    'minute',\n    'second',\n    'timeZoneName',\n    'formatMatcher',\n    'hour12',\n    'timeZone',\n    'dateStyle',\n    'timeStyle',\n    'calendar',\n    'dayPeriod',\n    'numberingSystem',\n    'hourCycle',\n    'fractionalSecondDigits'\n];\n/** @internal */\nfunction parseDateTimeArgs(...args) {\n    const [arg1, arg2, arg3, arg4] = args;\n    const options = {};\n    let overrides = {};\n    let value;\n    if (isString(arg1)) {\n        // Only allow ISO strings - other date formats are often supported,\n        // but may cause different results in different browsers.\n        const matches = arg1.match(/(\\d{4}-\\d{2}-\\d{2})(T|\\s)?(.*)/);\n        if (!matches) {\n            throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\n        }\n        // Some browsers can not parse the iso datetime separated by space,\n        // this is a compromise solution by replace the 'T'/' ' with 'T'\n        const dateTime = matches[3]\n            ? matches[3].trim().startsWith('T')\n                ? `${matches[1].trim()}${matches[3].trim()}`\n                : `${matches[1].trim()}T${matches[3].trim()}`\n            : matches[1].trim();\n        value = new Date(dateTime);\n        try {\n            // This will fail if the date is not valid\n            value.toISOString();\n        }\n        catch (e) {\n            throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\n        }\n    }\n    else if (isDate(arg1)) {\n        if (isNaN(arg1.getTime())) {\n            throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT);\n        }\n        value = arg1;\n    }\n    else if (isNumber(arg1)) {\n        value = arg1;\n    }\n    else {\n        throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n    }\n    if (isString(arg2)) {\n        options.key = arg2;\n    }\n    else if (isPlainObject(arg2)) {\n        Object.keys(arg2).forEach(key => {\n            if (DATETIME_FORMAT_OPTIONS_KEYS.includes(key)) {\n                overrides[key] = arg2[key];\n            }\n            else {\n                options[key] = arg2[key];\n            }\n        });\n    }\n    if (isString(arg3)) {\n        options.locale = arg3;\n    }\n    else if (isPlainObject(arg3)) {\n        overrides = arg3;\n    }\n    if (isPlainObject(arg4)) {\n        overrides = arg4;\n    }\n    return [options.key || '', value, options, overrides];\n}\n/** @internal */\nfunction clearDateTimeFormat(ctx, locale, format) {\n    const context = ctx;\n    for (const key in format) {\n        const id = `${locale}__${key}`;\n        if (!context.__datetimeFormatters.has(id)) {\n            continue;\n        }\n        context.__datetimeFormatters.delete(id);\n    }\n}\n\n// implementation of `number` function\nfunction number(context, ...args) {\n    const { numberFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\n    const { __numberFormatters } = context;\n    if ((process.env.NODE_ENV !== 'production') && !Availabilities.numberFormat) {\n        onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_NUMBER));\n        return MISSING_RESOLVE_VALUE;\n    }\n    const [key, value, options, overrides] = parseNumberArgs(...args);\n    const missingWarn = isBoolean(options.missingWarn)\n        ? options.missingWarn\n        : context.missingWarn;\n    const fallbackWarn = isBoolean(options.fallbackWarn)\n        ? options.fallbackWarn\n        : context.fallbackWarn;\n    const part = !!options.part;\n    const locale = getLocale(context, options);\n    const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\n    fallbackLocale, locale);\n    if (!isString(key) || key === '') {\n        return new Intl.NumberFormat(locale, overrides).format(value);\n    }\n    // resolve format\n    let numberFormat = {};\n    let targetLocale;\n    let format = null;\n    let from = locale;\n    let to = null;\n    const type = 'number format';\n    for (let i = 0; i < locales.length; i++) {\n        targetLocale = to = locales[i];\n        if ((process.env.NODE_ENV !== 'production') &&\n            locale !== targetLocale &&\n            isTranslateFallbackWarn(fallbackWarn, key)) {\n            onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT, {\n                key,\n                target: targetLocale\n            }));\n        }\n        // for vue-devtools timeline event\n        if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\n            const emitter = context.__v_emitter;\n            if (emitter) {\n                emitter.emit(\"fallback\" /* VueDevToolsTimelineEvents.FALBACK */, {\n                    type,\n                    key,\n                    from,\n                    to,\n                    groupId: `${type}:${key}`\n                });\n            }\n        }\n        numberFormat =\n            numberFormats[targetLocale] || {};\n        format = numberFormat[key];\n        if (isPlainObject(format))\n            break;\n        handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\n        from = to;\n    }\n    // checking format and target locale\n    if (!isPlainObject(format) || !isString(targetLocale)) {\n        return unresolving ? NOT_REOSLVED : key;\n    }\n    let id = `${targetLocale}__${key}`;\n    if (!isEmptyObject(overrides)) {\n        id = `${id}__${JSON.stringify(overrides)}`;\n    }\n    let formatter = __numberFormatters.get(id);\n    if (!formatter) {\n        formatter = new Intl.NumberFormat(targetLocale, assign({}, format, overrides));\n        __numberFormatters.set(id, formatter);\n    }\n    return !part ? formatter.format(value) : formatter.formatToParts(value);\n}\n/** @internal */\nconst NUMBER_FORMAT_OPTIONS_KEYS = [\n    'localeMatcher',\n    'style',\n    'currency',\n    'currencyDisplay',\n    'currencySign',\n    'useGrouping',\n    'minimumIntegerDigits',\n    'minimumFractionDigits',\n    'maximumFractionDigits',\n    'minimumSignificantDigits',\n    'maximumSignificantDigits',\n    'compactDisplay',\n    'notation',\n    'signDisplay',\n    'unit',\n    'unitDisplay',\n    'roundingMode',\n    'roundingPriority',\n    'roundingIncrement',\n    'trailingZeroDisplay'\n];\n/** @internal */\nfunction parseNumberArgs(...args) {\n    const [arg1, arg2, arg3, arg4] = args;\n    const options = {};\n    let overrides = {};\n    if (!isNumber(arg1)) {\n        throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n    }\n    const value = arg1;\n    if (isString(arg2)) {\n        options.key = arg2;\n    }\n    else if (isPlainObject(arg2)) {\n        Object.keys(arg2).forEach(key => {\n            if (NUMBER_FORMAT_OPTIONS_KEYS.includes(key)) {\n                overrides[key] = arg2[key];\n            }\n            else {\n                options[key] = arg2[key];\n            }\n        });\n    }\n    if (isString(arg3)) {\n        options.locale = arg3;\n    }\n    else if (isPlainObject(arg3)) {\n        overrides = arg3;\n    }\n    if (isPlainObject(arg4)) {\n        overrides = arg4;\n    }\n    return [options.key || '', value, options, overrides];\n}\n/** @internal */\nfunction clearNumberFormat(ctx, locale, format) {\n    const context = ctx;\n    for (const key in format) {\n        const id = `${locale}__${key}`;\n        if (!context.__numberFormatters.has(id)) {\n            continue;\n        }\n        context.__numberFormatters.delete(id);\n    }\n}\n\n{\n    initFeatureFlags();\n}\n\nexport { CoreErrorCodes, CoreWarnCodes, DATETIME_FORMAT_OPTIONS_KEYS, DEFAULT_LOCALE, DEFAULT_MESSAGE_DATA_TYPE, MISSING_RESOLVE_VALUE, NOT_REOSLVED, NUMBER_FORMAT_OPTIONS_KEYS, VERSION, clearCompileCache, clearDateTimeFormat, clearNumberFormat, compile, compileToFunction, createCoreContext, createCoreError, createMessageContext, datetime, fallbackWithLocaleChain, fallbackWithSimple, getAdditionalMeta, getDevToolsHook, getFallbackContext, getLocale, getWarnMessage, handleMissing, initI18nDevTools, isMessageAST, isMessageFunction, isTranslateFallbackWarn, isTranslateMissingWarn, number, parse, parseDateTimeArgs, parseNumberArgs, parseTranslateArgs, registerLocaleFallbacker, registerMessageCompiler, registerMessageResolver, resolveLocale, resolveValue, resolveWithKeyValue, setAdditionalMeta, setDevToolsHook, setFallbackContext, translate, translateDevTools, updateFallbackLocale };\n","/*!\n  * vue-i18n v9.10.1\n  * (c) 2024 kazuya kawaguchi\n  * Released under the MIT License.\n  */\nimport { getGlobalThis, incrementer, format, makeSymbol, isPlainObject, isArray, deepCopy, isString, hasOwn, isObject, warn, warnOnce, isBoolean, isRegExp, isFunction, inBrowser, assign, isNumber, createEmitter, isEmptyObject } from '@intlify/shared';\nimport { CoreWarnCodes, CoreErrorCodes, createCompileError, DEFAULT_LOCALE, updateFallbackLocale, setFallbackContext, createCoreContext, clearDateTimeFormat, clearNumberFormat, setAdditionalMeta, getFallbackContext, NOT_REOSLVED, isTranslateFallbackWarn, isTranslateMissingWarn, parseTranslateArgs, translate, MISSING_RESOLVE_VALUE, parseDateTimeArgs, datetime, parseNumberArgs, number, isMessageAST, isMessageFunction, fallbackWithLocaleChain, NUMBER_FORMAT_OPTIONS_KEYS, DATETIME_FORMAT_OPTIONS_KEYS, registerMessageCompiler, compile, registerMessageResolver, resolveValue, registerLocaleFallbacker, setDevToolsHook } from '@intlify/core-base';\nimport { createVNode, Text, computed, watch, getCurrentInstance, ref, shallowRef, Fragment, defineComponent, h, effectScope, inject, onMounted, onUnmounted, onBeforeMount, isRef } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\n/**\n * Vue I18n Version\n *\n * @remarks\n * Semver format. Same format as the package.json `version` field.\n *\n * @VueI18nGeneral\n */\nconst VERSION = '9.10.1';\n/**\n * This is only called in esm-bundler builds.\n * istanbul-ignore-next\n */\nfunction initFeatureFlags() {\n    if (typeof __VUE_I18N_FULL_INSTALL__ !== 'boolean') {\n        getGlobalThis().__VUE_I18N_FULL_INSTALL__ = true;\n    }\n    if (typeof __VUE_I18N_LEGACY_API__ !== 'boolean') {\n        getGlobalThis().__VUE_I18N_LEGACY_API__ = true;\n    }\n    if (typeof __INTLIFY_JIT_COMPILATION__ !== 'boolean') {\n        getGlobalThis().__INTLIFY_JIT_COMPILATION__ = false;\n    }\n    if (typeof __INTLIFY_DROP_MESSAGE_COMPILER__ !== 'boolean') {\n        getGlobalThis().__INTLIFY_DROP_MESSAGE_COMPILER__ = false;\n    }\n    if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\n        getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\n    }\n}\n\nconst code$1 = CoreWarnCodes.__EXTEND_POINT__;\nconst inc$1 = incrementer(code$1);\nconst I18nWarnCodes = {\n    FALLBACK_TO_ROOT: code$1, // 9\n    NOT_SUPPORTED_PRESERVE: inc$1(), // 10\n    NOT_SUPPORTED_FORMATTER: inc$1(), // 11\n    NOT_SUPPORTED_PRESERVE_DIRECTIVE: inc$1(), // 12\n    NOT_SUPPORTED_GET_CHOICE_INDEX: inc$1(), // 13\n    COMPONENT_NAME_LEGACY_COMPATIBLE: inc$1(), // 14\n    NOT_FOUND_PARENT_SCOPE: inc$1(), // 15\n    IGNORE_OBJ_FLATTEN: inc$1(), // 16\n    NOTICE_DROP_ALLOW_COMPOSITION: inc$1(), // 17\n    NOTICE_DROP_TRANSLATE_EXIST_COMPATIBLE_FLAG: inc$1() // 18\n};\nconst warnMessages = {\n    [I18nWarnCodes.FALLBACK_TO_ROOT]: `Fall back to {type} '{key}' with root locale.`,\n    [I18nWarnCodes.NOT_SUPPORTED_PRESERVE]: `Not supported 'preserve'.`,\n    [I18nWarnCodes.NOT_SUPPORTED_FORMATTER]: `Not supported 'formatter'.`,\n    [I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE]: `Not supported 'preserveDirectiveContent'.`,\n    [I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX]: `Not supported 'getChoiceIndex'.`,\n    [I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE]: `Component name legacy compatible: '{name}' -> 'i18n'`,\n    [I18nWarnCodes.NOT_FOUND_PARENT_SCOPE]: `Not found parent scope. use the global scope.`,\n    [I18nWarnCodes.IGNORE_OBJ_FLATTEN]: `Ignore object flatten: '{key}' key has an string value`,\n    [I18nWarnCodes.NOTICE_DROP_ALLOW_COMPOSITION]: `'allowComposition' option will be dropped in the next major version. For more information, please see 👉 https://tinyurl.com/2p97mcze`,\n    [I18nWarnCodes.NOTICE_DROP_TRANSLATE_EXIST_COMPATIBLE_FLAG]: `'translateExistCompatible' option will be dropped in the next major version.`\n};\nfunction getWarnMessage(code, ...args) {\n    return format(warnMessages[code], ...args);\n}\n\nconst code = CoreErrorCodes.__EXTEND_POINT__;\nconst inc = incrementer(code);\nconst I18nErrorCodes = {\n    // composer module errors\n    UNEXPECTED_RETURN_TYPE: code, // 26\n    // legacy module errors\n    INVALID_ARGUMENT: inc(), // 27\n    // i18n module errors\n    MUST_BE_CALL_SETUP_TOP: inc(), // 28\n    NOT_INSTALLED: inc(), // 29\n    NOT_AVAILABLE_IN_LEGACY_MODE: inc(), // 30\n    // directive module errors\n    REQUIRED_VALUE: inc(), // 31\n    INVALID_VALUE: inc(), // 32\n    // vue-devtools errors\n    CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN: inc(), // 33\n    NOT_INSTALLED_WITH_PROVIDE: inc(), // 34\n    // unexpected error\n    UNEXPECTED_ERROR: inc(), // 35\n    // not compatible legacy vue-i18n constructor\n    NOT_COMPATIBLE_LEGACY_VUE_I18N: inc(), // 36\n    // bridge support vue 2.x only\n    BRIDGE_SUPPORT_VUE_2_ONLY: inc(), // 37\n    // need to define `i18n` option in `allowComposition: true` and `useScope: 'local' at `useI18n``\n    MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION: inc(), // 38\n    // Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly\n    NOT_AVAILABLE_COMPOSITION_IN_LEGACY: inc(), // 39\n    // for enhancement\n    __EXTEND_POINT__: inc() // 40\n};\nfunction createI18nError(code, ...args) {\n    return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages, args } : undefined);\n}\nconst errorMessages = {\n    [I18nErrorCodes.UNEXPECTED_RETURN_TYPE]: 'Unexpected return type in composer',\n    [I18nErrorCodes.INVALID_ARGUMENT]: 'Invalid argument',\n    [I18nErrorCodes.MUST_BE_CALL_SETUP_TOP]: 'Must be called at the top of a `setup` function',\n    [I18nErrorCodes.NOT_INSTALLED]: 'Need to install with `app.use` function',\n    [I18nErrorCodes.UNEXPECTED_ERROR]: 'Unexpected error',\n    [I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE]: 'Not available in legacy mode',\n    [I18nErrorCodes.REQUIRED_VALUE]: `Required in value: {0}`,\n    [I18nErrorCodes.INVALID_VALUE]: `Invalid value`,\n    [I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN]: `Cannot setup vue-devtools plugin`,\n    [I18nErrorCodes.NOT_INSTALLED_WITH_PROVIDE]: 'Need to install with `provide` function',\n    [I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N]: 'Not compatible legacy VueI18n.',\n    [I18nErrorCodes.BRIDGE_SUPPORT_VUE_2_ONLY]: 'vue-i18n-bridge support Vue 2.x only',\n    [I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION]: 'Must define ‘i18n’ option or custom block in Composition API with using local scope in Legacy API mode',\n    [I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY]: 'Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly'\n};\n\nconst TranslateVNodeSymbol = \n/* #__PURE__*/ makeSymbol('__translateVNode');\nconst DatetimePartsSymbol = /* #__PURE__*/ makeSymbol('__datetimeParts');\nconst NumberPartsSymbol = /* #__PURE__*/ makeSymbol('__numberParts');\nconst EnableEmitter = /* #__PURE__*/ makeSymbol('__enableEmitter');\nconst DisableEmitter = /* #__PURE__*/ makeSymbol('__disableEmitter');\nconst SetPluralRulesSymbol = makeSymbol('__setPluralRules');\nmakeSymbol('__intlifyMeta');\nconst InejctWithOptionSymbol = \n/* #__PURE__*/ makeSymbol('__injectWithOption');\nconst DisposeSymbol = /* #__PURE__*/ makeSymbol('__dispose');\nconst __VUE_I18N_BRIDGE__ =  '__VUE_I18N_BRIDGE__';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Transform flat json in obj to normal json in obj\n */\nfunction handleFlatJson(obj) {\n    // check obj\n    if (!isObject(obj)) {\n        return obj;\n    }\n    for (const key in obj) {\n        // check key\n        if (!hasOwn(obj, key)) {\n            continue;\n        }\n        // handle for normal json\n        if (!key.includes('.')) {\n            // recursive process value if value is also a object\n            if (isObject(obj[key])) {\n                handleFlatJson(obj[key]);\n            }\n        }\n        // handle for flat json, transform to normal json\n        else {\n            // go to the last object\n            const subKeys = key.split('.');\n            const lastIndex = subKeys.length - 1;\n            let currentObj = obj;\n            let hasStringValue = false;\n            for (let i = 0; i < lastIndex; i++) {\n                if (!(subKeys[i] in currentObj)) {\n                    currentObj[subKeys[i]] = {};\n                }\n                if (!isObject(currentObj[subKeys[i]])) {\n                    (process.env.NODE_ENV !== 'production') &&\n                        warn(getWarnMessage(I18nWarnCodes.IGNORE_OBJ_FLATTEN, {\n                            key: subKeys[i]\n                        }));\n                    hasStringValue = true;\n                    break;\n                }\n                currentObj = currentObj[subKeys[i]];\n            }\n            // update last object value, delete old property\n            if (!hasStringValue) {\n                currentObj[subKeys[lastIndex]] = obj[key];\n                delete obj[key];\n            }\n            // recursive process value if value is also a object\n            if (isObject(currentObj[subKeys[lastIndex]])) {\n                handleFlatJson(currentObj[subKeys[lastIndex]]);\n            }\n        }\n    }\n    return obj;\n}\nfunction getLocaleMessages(locale, options) {\n    const { messages, __i18n, messageResolver, flatJson } = options;\n    // prettier-ignore\n    const ret = (isPlainObject(messages)\n        ? messages\n        : isArray(__i18n)\n            ? {}\n            : { [locale]: {} });\n    // merge locale messages of i18n custom block\n    if (isArray(__i18n)) {\n        __i18n.forEach(custom => {\n            if ('locale' in custom && 'resource' in custom) {\n                const { locale, resource } = custom;\n                if (locale) {\n                    ret[locale] = ret[locale] || {};\n                    deepCopy(resource, ret[locale]);\n                }\n                else {\n                    deepCopy(resource, ret);\n                }\n            }\n            else {\n                isString(custom) && deepCopy(JSON.parse(custom), ret);\n            }\n        });\n    }\n    // handle messages for flat json\n    if (messageResolver == null && flatJson) {\n        for (const key in ret) {\n            if (hasOwn(ret, key)) {\n                handleFlatJson(ret[key]);\n            }\n        }\n    }\n    return ret;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getComponentOptions(instance) {\n    return instance.type ;\n}\nfunction adjustI18nResources(gl, options, componentOptions // eslint-disable-line @typescript-eslint/no-explicit-any\n) {\n    let messages = isObject(options.messages) ? options.messages : {};\n    if ('__i18nGlobal' in componentOptions) {\n        messages = getLocaleMessages(gl.locale.value, {\n            messages,\n            __i18n: componentOptions.__i18nGlobal\n        });\n    }\n    // merge locale messages\n    const locales = Object.keys(messages);\n    if (locales.length) {\n        locales.forEach(locale => {\n            gl.mergeLocaleMessage(locale, messages[locale]);\n        });\n    }\n    {\n        // merge datetime formats\n        if (isObject(options.datetimeFormats)) {\n            const locales = Object.keys(options.datetimeFormats);\n            if (locales.length) {\n                locales.forEach(locale => {\n                    gl.mergeDateTimeFormat(locale, options.datetimeFormats[locale]);\n                });\n            }\n        }\n        // merge number formats\n        if (isObject(options.numberFormats)) {\n            const locales = Object.keys(options.numberFormats);\n            if (locales.length) {\n                locales.forEach(locale => {\n                    gl.mergeNumberFormat(locale, options.numberFormats[locale]);\n                });\n            }\n        }\n    }\n}\nfunction createTextNode(key) {\n    return createVNode(Text, null, key, 0)\n        ;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// extend VNode interface\nconst DEVTOOLS_META = '__INTLIFY_META__';\nconst NOOP_RETURN_ARRAY = () => [];\nconst NOOP_RETURN_FALSE = () => false;\nlet composerID = 0;\nfunction defineCoreMissingHandler(missing) {\n    return ((ctx, locale, key, type) => {\n        return missing(locale, key, getCurrentInstance() || undefined, type);\n    });\n}\n// for Intlify DevTools\n/* #__NO_SIDE_EFFECTS__ */\nconst getMetaInfo = () => {\n    const instance = getCurrentInstance();\n    let meta = null; // eslint-disable-line @typescript-eslint/no-explicit-any\n    return instance && (meta = getComponentOptions(instance)[DEVTOOLS_META])\n        ? { [DEVTOOLS_META]: meta } // eslint-disable-line @typescript-eslint/no-explicit-any\n        : null;\n};\n/**\n * Create composer interface factory\n *\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction createComposer(options = {}, VueI18nLegacy) {\n    const { __root, __injectWithOption } = options;\n    const _isGlobal = __root === undefined;\n    const flatJson = options.flatJson;\n    const _ref = inBrowser ? ref : shallowRef;\n    const translateExistCompatible = !!options.translateExistCompatible;\n    if ((process.env.NODE_ENV !== 'production')) {\n        if (translateExistCompatible && !false) {\n            warnOnce(getWarnMessage(I18nWarnCodes.NOTICE_DROP_TRANSLATE_EXIST_COMPATIBLE_FLAG));\n        }\n    }\n    let _inheritLocale = isBoolean(options.inheritLocale)\n        ? options.inheritLocale\n        : true;\n    const _locale = _ref(\n    // prettier-ignore\n    __root && _inheritLocale\n        ? __root.locale.value\n        : isString(options.locale)\n            ? options.locale\n            : DEFAULT_LOCALE);\n    const _fallbackLocale = _ref(\n    // prettier-ignore\n    __root && _inheritLocale\n        ? __root.fallbackLocale.value\n        : isString(options.fallbackLocale) ||\n            isArray(options.fallbackLocale) ||\n            isPlainObject(options.fallbackLocale) ||\n            options.fallbackLocale === false\n            ? options.fallbackLocale\n            : _locale.value);\n    const _messages = _ref(getLocaleMessages(_locale.value, options));\n    // prettier-ignore\n    const _datetimeFormats = _ref(isPlainObject(options.datetimeFormats)\n            ? options.datetimeFormats\n            : { [_locale.value]: {} })\n        ;\n    // prettier-ignore\n    const _numberFormats = _ref(isPlainObject(options.numberFormats)\n            ? options.numberFormats\n            : { [_locale.value]: {} })\n        ;\n    // warning suppress options\n    // prettier-ignore\n    let _missingWarn = __root\n        ? __root.missingWarn\n        : isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\n            ? options.missingWarn\n            : true;\n    // prettier-ignore\n    let _fallbackWarn = __root\n        ? __root.fallbackWarn\n        : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\n            ? options.fallbackWarn\n            : true;\n    // prettier-ignore\n    let _fallbackRoot = __root\n        ? __root.fallbackRoot\n        : isBoolean(options.fallbackRoot)\n            ? options.fallbackRoot\n            : true;\n    // configure fall back to root\n    let _fallbackFormat = !!options.fallbackFormat;\n    // runtime missing\n    let _missing = isFunction(options.missing) ? options.missing : null;\n    let _runtimeMissing = isFunction(options.missing)\n        ? defineCoreMissingHandler(options.missing)\n        : null;\n    // postTranslation handler\n    let _postTranslation = isFunction(options.postTranslation)\n        ? options.postTranslation\n        : null;\n    // prettier-ignore\n    let _warnHtmlMessage = __root\n        ? __root.warnHtmlMessage\n        : isBoolean(options.warnHtmlMessage)\n            ? options.warnHtmlMessage\n            : true;\n    let _escapeParameter = !!options.escapeParameter;\n    // custom linked modifiers\n    // prettier-ignore\n    const _modifiers = __root\n        ? __root.modifiers\n        : isPlainObject(options.modifiers)\n            ? options.modifiers\n            : {};\n    // pluralRules\n    let _pluralRules = options.pluralRules || (__root && __root.pluralRules);\n    // runtime context\n    // eslint-disable-next-line prefer-const\n    let _context;\n    const getCoreContext = () => {\n        _isGlobal && setFallbackContext(null);\n        const ctxOptions = {\n            version: VERSION,\n            locale: _locale.value,\n            fallbackLocale: _fallbackLocale.value,\n            messages: _messages.value,\n            modifiers: _modifiers,\n            pluralRules: _pluralRules,\n            missing: _runtimeMissing === null ? undefined : _runtimeMissing,\n            missingWarn: _missingWarn,\n            fallbackWarn: _fallbackWarn,\n            fallbackFormat: _fallbackFormat,\n            unresolving: true,\n            postTranslation: _postTranslation === null ? undefined : _postTranslation,\n            warnHtmlMessage: _warnHtmlMessage,\n            escapeParameter: _escapeParameter,\n            messageResolver: options.messageResolver,\n            messageCompiler: options.messageCompiler,\n            __meta: { framework: 'vue' }\n        };\n        {\n            ctxOptions.datetimeFormats = _datetimeFormats.value;\n            ctxOptions.numberFormats = _numberFormats.value;\n            ctxOptions.__datetimeFormatters = isPlainObject(_context)\n                ? _context.__datetimeFormatters\n                : undefined;\n            ctxOptions.__numberFormatters = isPlainObject(_context)\n                ? _context.__numberFormatters\n                : undefined;\n        }\n        if ((process.env.NODE_ENV !== 'production')) {\n            ctxOptions.__v_emitter = isPlainObject(_context)\n                ? _context.__v_emitter\n                : undefined;\n        }\n        const ctx = createCoreContext(ctxOptions);\n        _isGlobal && setFallbackContext(ctx);\n        return ctx;\n    };\n    _context = getCoreContext();\n    updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\n    // track reactivity\n    function trackReactivityValues() {\n        return [\n                _locale.value,\n                _fallbackLocale.value,\n                _messages.value,\n                _datetimeFormats.value,\n                _numberFormats.value\n            ]\n            ;\n    }\n    // locale\n    const locale = computed({\n        get: () => _locale.value,\n        set: val => {\n            _locale.value = val;\n            _context.locale = _locale.value;\n        }\n    });\n    // fallbackLocale\n    const fallbackLocale = computed({\n        get: () => _fallbackLocale.value,\n        set: val => {\n            _fallbackLocale.value = val;\n            _context.fallbackLocale = _fallbackLocale.value;\n            updateFallbackLocale(_context, _locale.value, val);\n        }\n    });\n    // messages\n    const messages = computed(() => _messages.value);\n    // datetimeFormats\n    const datetimeFormats = /* #__PURE__*/ computed(() => _datetimeFormats.value);\n    // numberFormats\n    const numberFormats = /* #__PURE__*/ computed(() => _numberFormats.value);\n    // getPostTranslationHandler\n    function getPostTranslationHandler() {\n        return isFunction(_postTranslation) ? _postTranslation : null;\n    }\n    // setPostTranslationHandler\n    function setPostTranslationHandler(handler) {\n        _postTranslation = handler;\n        _context.postTranslation = handler;\n    }\n    // getMissingHandler\n    function getMissingHandler() {\n        return _missing;\n    }\n    // setMissingHandler\n    function setMissingHandler(handler) {\n        if (handler !== null) {\n            _runtimeMissing = defineCoreMissingHandler(handler);\n        }\n        _missing = handler;\n        _context.missing = _runtimeMissing;\n    }\n    function isResolvedTranslateMessage(type, arg // eslint-disable-line @typescript-eslint/no-explicit-any\n    ) {\n        return type !== 'translate' || !arg.resolvedMessage;\n    }\n    const wrapWithDeps = (fn, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) => {\n        trackReactivityValues(); // track reactive dependency\n        // NOTE: experimental !!\n        let ret;\n        try {\n            if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n                setAdditionalMeta(getMetaInfo());\n            }\n            if (!_isGlobal) {\n                _context.fallbackContext = __root\n                    ? getFallbackContext()\n                    : undefined;\n            }\n            ret = fn(_context);\n        }\n        finally {\n            if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n                setAdditionalMeta(null);\n            }\n            if (!_isGlobal) {\n                _context.fallbackContext = undefined;\n            }\n        }\n        if ((warnType !== 'translate exists' && // for not `te` (e.g `t`)\n            isNumber(ret) &&\n            ret === NOT_REOSLVED) ||\n            (warnType === 'translate exists' && !ret) // for `te`\n        ) {\n            const [key, arg2] = argumentParser();\n            if ((process.env.NODE_ENV !== 'production') &&\n                __root &&\n                isString(key) &&\n                isResolvedTranslateMessage(warnType, arg2)) {\n                if (_fallbackRoot &&\n                    (isTranslateFallbackWarn(_fallbackWarn, key) ||\n                        isTranslateMissingWarn(_missingWarn, key))) {\n                    warn(getWarnMessage(I18nWarnCodes.FALLBACK_TO_ROOT, {\n                        key,\n                        type: warnType\n                    }));\n                }\n                // for vue-devtools timeline event\n                if ((process.env.NODE_ENV !== 'production')) {\n                    const { __v_emitter: emitter } = _context;\n                    if (emitter && _fallbackRoot) {\n                        emitter.emit(\"fallback\" /* VueDevToolsTimelineEvents.FALBACK */, {\n                            type: warnType,\n                            key,\n                            to: 'global',\n                            groupId: `${warnType}:${key}`\n                        });\n                    }\n                }\n            }\n            return __root && _fallbackRoot\n                ? fallbackSuccess(__root)\n                : fallbackFail(key);\n        }\n        else if (successCondition(ret)) {\n            return ret;\n        }\n        else {\n            /* istanbul ignore next */\n            throw createI18nError(I18nErrorCodes.UNEXPECTED_RETURN_TYPE);\n        }\n    };\n    // t\n    function t(...args) {\n        return wrapWithDeps(context => Reflect.apply(translate, null, [context, ...args]), () => parseTranslateArgs(...args), 'translate', root => Reflect.apply(root.t, root, [...args]), key => key, val => isString(val));\n    }\n    // rt\n    function rt(...args) {\n        const [arg1, arg2, arg3] = args;\n        if (arg3 && !isObject(arg3)) {\n            throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\n        }\n        return t(...[arg1, arg2, assign({ resolvedMessage: true }, arg3 || {})]);\n    }\n    // d\n    function d(...args) {\n        return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', root => Reflect.apply(root.d, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\n    }\n    // n\n    function n(...args) {\n        return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', root => Reflect.apply(root.n, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\n    }\n    // for custom processor\n    function normalize(values) {\n        return values.map(val => isString(val) || isNumber(val) || isBoolean(val)\n            ? createTextNode(String(val))\n            : val);\n    }\n    const interpolate = (val) => val;\n    const processor = {\n        normalize,\n        interpolate,\n        type: 'vnode'\n    };\n    // translateVNode, using for `i18n-t` component\n    function translateVNode(...args) {\n        return wrapWithDeps(context => {\n            let ret;\n            const _context = context;\n            try {\n                _context.processor = processor;\n                ret = Reflect.apply(translate, null, [_context, ...args]);\n            }\n            finally {\n                _context.processor = null;\n            }\n            return ret;\n        }, () => parseTranslateArgs(...args), 'translate', \n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        root => root[TranslateVNodeSymbol](...args), key => [createTextNode(key)], val => isArray(val));\n    }\n    // numberParts, using for `i18n-n` component\n    function numberParts(...args) {\n        return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', \n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        root => root[NumberPartsSymbol](...args), NOOP_RETURN_ARRAY, val => isString(val) || isArray(val));\n    }\n    // datetimeParts, using for `i18n-d` component\n    function datetimeParts(...args) {\n        return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', \n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        root => root[DatetimePartsSymbol](...args), NOOP_RETURN_ARRAY, val => isString(val) || isArray(val));\n    }\n    function setPluralRules(rules) {\n        _pluralRules = rules;\n        _context.pluralRules = _pluralRules;\n    }\n    // te\n    function te(key, locale) {\n        return wrapWithDeps(() => {\n            if (!key) {\n                return false;\n            }\n            const targetLocale = isString(locale) ? locale : _locale.value;\n            const message = getLocaleMessage(targetLocale);\n            const resolved = _context.messageResolver(message, key);\n            return !translateExistCompatible\n                ? isMessageAST(resolved) ||\n                    isMessageFunction(resolved) ||\n                    isString(resolved)\n                : resolved != null;\n        }, () => [key], 'translate exists', root => {\n            return Reflect.apply(root.te, root, [key, locale]);\n        }, NOOP_RETURN_FALSE, val => isBoolean(val));\n    }\n    function resolveMessages(key) {\n        let messages = null;\n        const locales = fallbackWithLocaleChain(_context, _fallbackLocale.value, _locale.value);\n        for (let i = 0; i < locales.length; i++) {\n            const targetLocaleMessages = _messages.value[locales[i]] || {};\n            const messageValue = _context.messageResolver(targetLocaleMessages, key);\n            if (messageValue != null) {\n                messages = messageValue;\n                break;\n            }\n        }\n        return messages;\n    }\n    // tm\n    function tm(key) {\n        const messages = resolveMessages(key);\n        // prettier-ignore\n        return messages != null\n            ? messages\n            : __root\n                ? __root.tm(key) || {}\n                : {};\n    }\n    // getLocaleMessage\n    function getLocaleMessage(locale) {\n        return (_messages.value[locale] || {});\n    }\n    // setLocaleMessage\n    function setLocaleMessage(locale, message) {\n        if (flatJson) {\n            const _message = { [locale]: message };\n            for (const key in _message) {\n                if (hasOwn(_message, key)) {\n                    handleFlatJson(_message[key]);\n                }\n            }\n            message = _message[locale];\n        }\n        _messages.value[locale] = message;\n        _context.messages = _messages.value;\n    }\n    // mergeLocaleMessage\n    function mergeLocaleMessage(locale, message) {\n        _messages.value[locale] = _messages.value[locale] || {};\n        const _message = { [locale]: message };\n        if (flatJson) {\n            for (const key in _message) {\n                if (hasOwn(_message, key)) {\n                    handleFlatJson(_message[key]);\n                }\n            }\n        }\n        message = _message[locale];\n        deepCopy(message, _messages.value[locale]);\n        _context.messages = _messages.value;\n    }\n    // getDateTimeFormat\n    function getDateTimeFormat(locale) {\n        return _datetimeFormats.value[locale] || {};\n    }\n    // setDateTimeFormat\n    function setDateTimeFormat(locale, format) {\n        _datetimeFormats.value[locale] = format;\n        _context.datetimeFormats = _datetimeFormats.value;\n        clearDateTimeFormat(_context, locale, format);\n    }\n    // mergeDateTimeFormat\n    function mergeDateTimeFormat(locale, format) {\n        _datetimeFormats.value[locale] = assign(_datetimeFormats.value[locale] || {}, format);\n        _context.datetimeFormats = _datetimeFormats.value;\n        clearDateTimeFormat(_context, locale, format);\n    }\n    // getNumberFormat\n    function getNumberFormat(locale) {\n        return _numberFormats.value[locale] || {};\n    }\n    // setNumberFormat\n    function setNumberFormat(locale, format) {\n        _numberFormats.value[locale] = format;\n        _context.numberFormats = _numberFormats.value;\n        clearNumberFormat(_context, locale, format);\n    }\n    // mergeNumberFormat\n    function mergeNumberFormat(locale, format) {\n        _numberFormats.value[locale] = assign(_numberFormats.value[locale] || {}, format);\n        _context.numberFormats = _numberFormats.value;\n        clearNumberFormat(_context, locale, format);\n    }\n    // for debug\n    composerID++;\n    // watch root locale & fallbackLocale\n    if (__root && inBrowser) {\n        watch(__root.locale, (val) => {\n            if (_inheritLocale) {\n                _locale.value = val;\n                _context.locale = val;\n                updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\n            }\n        });\n        watch(__root.fallbackLocale, (val) => {\n            if (_inheritLocale) {\n                _fallbackLocale.value = val;\n                _context.fallbackLocale = val;\n                updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\n            }\n        });\n    }\n    // define basic composition API!\n    const composer = {\n        id: composerID,\n        locale,\n        fallbackLocale,\n        get inheritLocale() {\n            return _inheritLocale;\n        },\n        set inheritLocale(val) {\n            _inheritLocale = val;\n            if (val && __root) {\n                _locale.value = __root.locale.value;\n                _fallbackLocale.value = __root.fallbackLocale.value;\n                updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\n            }\n        },\n        get availableLocales() {\n            return Object.keys(_messages.value).sort();\n        },\n        messages,\n        get modifiers() {\n            return _modifiers;\n        },\n        get pluralRules() {\n            return _pluralRules || {};\n        },\n        get isGlobal() {\n            return _isGlobal;\n        },\n        get missingWarn() {\n            return _missingWarn;\n        },\n        set missingWarn(val) {\n            _missingWarn = val;\n            _context.missingWarn = _missingWarn;\n        },\n        get fallbackWarn() {\n            return _fallbackWarn;\n        },\n        set fallbackWarn(val) {\n            _fallbackWarn = val;\n            _context.fallbackWarn = _fallbackWarn;\n        },\n        get fallbackRoot() {\n            return _fallbackRoot;\n        },\n        set fallbackRoot(val) {\n            _fallbackRoot = val;\n        },\n        get fallbackFormat() {\n            return _fallbackFormat;\n        },\n        set fallbackFormat(val) {\n            _fallbackFormat = val;\n            _context.fallbackFormat = _fallbackFormat;\n        },\n        get warnHtmlMessage() {\n            return _warnHtmlMessage;\n        },\n        set warnHtmlMessage(val) {\n            _warnHtmlMessage = val;\n            _context.warnHtmlMessage = val;\n        },\n        get escapeParameter() {\n            return _escapeParameter;\n        },\n        set escapeParameter(val) {\n            _escapeParameter = val;\n            _context.escapeParameter = val;\n        },\n        t,\n        getLocaleMessage,\n        setLocaleMessage,\n        mergeLocaleMessage,\n        getPostTranslationHandler,\n        setPostTranslationHandler,\n        getMissingHandler,\n        setMissingHandler,\n        [SetPluralRulesSymbol]: setPluralRules\n    };\n    {\n        composer.datetimeFormats = datetimeFormats;\n        composer.numberFormats = numberFormats;\n        composer.rt = rt;\n        composer.te = te;\n        composer.tm = tm;\n        composer.d = d;\n        composer.n = n;\n        composer.getDateTimeFormat = getDateTimeFormat;\n        composer.setDateTimeFormat = setDateTimeFormat;\n        composer.mergeDateTimeFormat = mergeDateTimeFormat;\n        composer.getNumberFormat = getNumberFormat;\n        composer.setNumberFormat = setNumberFormat;\n        composer.mergeNumberFormat = mergeNumberFormat;\n        composer[InejctWithOptionSymbol] = __injectWithOption;\n        composer[TranslateVNodeSymbol] = translateVNode;\n        composer[DatetimePartsSymbol] = datetimeParts;\n        composer[NumberPartsSymbol] = numberParts;\n    }\n    // for vue-devtools timeline event\n    if ((process.env.NODE_ENV !== 'production')) {\n        composer[EnableEmitter] = (emitter) => {\n            _context.__v_emitter = emitter;\n        };\n        composer[DisableEmitter] = () => {\n            _context.__v_emitter = undefined;\n        };\n    }\n    return composer;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Convert to I18n Composer Options from VueI18n Options\n *\n * @internal\n */\nfunction convertComposerOptions(options) {\n    const locale = isString(options.locale) ? options.locale : DEFAULT_LOCALE;\n    const fallbackLocale = isString(options.fallbackLocale) ||\n        isArray(options.fallbackLocale) ||\n        isPlainObject(options.fallbackLocale) ||\n        options.fallbackLocale === false\n        ? options.fallbackLocale\n        : locale;\n    const missing = isFunction(options.missing) ? options.missing : undefined;\n    const missingWarn = isBoolean(options.silentTranslationWarn) ||\n        isRegExp(options.silentTranslationWarn)\n        ? !options.silentTranslationWarn\n        : true;\n    const fallbackWarn = isBoolean(options.silentFallbackWarn) ||\n        isRegExp(options.silentFallbackWarn)\n        ? !options.silentFallbackWarn\n        : true;\n    const fallbackRoot = isBoolean(options.fallbackRoot)\n        ? options.fallbackRoot\n        : true;\n    const fallbackFormat = !!options.formatFallbackMessages;\n    const modifiers = isPlainObject(options.modifiers) ? options.modifiers : {};\n    const pluralizationRules = options.pluralizationRules;\n    const postTranslation = isFunction(options.postTranslation)\n        ? options.postTranslation\n        : undefined;\n    const warnHtmlMessage = isString(options.warnHtmlInMessage)\n        ? options.warnHtmlInMessage !== 'off'\n        : true;\n    const escapeParameter = !!options.escapeParameterHtml;\n    const inheritLocale = isBoolean(options.sync) ? options.sync : true;\n    if ((process.env.NODE_ENV !== 'production') && options.formatter) {\n        warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\n    }\n    if ((process.env.NODE_ENV !== 'production') && options.preserveDirectiveContent) {\n        warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\n    }\n    let messages = options.messages;\n    if (isPlainObject(options.sharedMessages)) {\n        const sharedMessages = options.sharedMessages;\n        const locales = Object.keys(sharedMessages);\n        messages = locales.reduce((messages, locale) => {\n            const message = messages[locale] || (messages[locale] = {});\n            assign(message, sharedMessages[locale]);\n            return messages;\n        }, (messages || {}));\n    }\n    const { __i18n, __root, __injectWithOption } = options;\n    const datetimeFormats = options.datetimeFormats;\n    const numberFormats = options.numberFormats;\n    const flatJson = options.flatJson;\n    const translateExistCompatible = options\n        .translateExistCompatible;\n    return {\n        locale,\n        fallbackLocale,\n        messages,\n        flatJson,\n        datetimeFormats,\n        numberFormats,\n        missing,\n        missingWarn,\n        fallbackWarn,\n        fallbackRoot,\n        fallbackFormat,\n        modifiers,\n        pluralRules: pluralizationRules,\n        postTranslation,\n        warnHtmlMessage,\n        escapeParameter,\n        messageResolver: options.messageResolver,\n        inheritLocale,\n        translateExistCompatible,\n        __i18n,\n        __root,\n        __injectWithOption\n    };\n}\n/**\n * create VueI18n interface factory\n *\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction createVueI18n(options = {}, VueI18nLegacy) {\n    {\n        const composer = createComposer(convertComposerOptions(options));\n        const { __extender } = options;\n        // defines VueI18n\n        const vueI18n = {\n            // id\n            id: composer.id,\n            // locale\n            get locale() {\n                return composer.locale.value;\n            },\n            set locale(val) {\n                composer.locale.value = val;\n            },\n            // fallbackLocale\n            get fallbackLocale() {\n                return composer.fallbackLocale.value;\n            },\n            set fallbackLocale(val) {\n                composer.fallbackLocale.value = val;\n            },\n            // messages\n            get messages() {\n                return composer.messages.value;\n            },\n            // datetimeFormats\n            get datetimeFormats() {\n                return composer.datetimeFormats.value;\n            },\n            // numberFormats\n            get numberFormats() {\n                return composer.numberFormats.value;\n            },\n            // availableLocales\n            get availableLocales() {\n                return composer.availableLocales;\n            },\n            // formatter\n            get formatter() {\n                (process.env.NODE_ENV !== 'production') && warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\n                // dummy\n                return {\n                    interpolate() {\n                        return [];\n                    }\n                };\n            },\n            set formatter(val) {\n                (process.env.NODE_ENV !== 'production') && warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\n            },\n            // missing\n            get missing() {\n                return composer.getMissingHandler();\n            },\n            set missing(handler) {\n                composer.setMissingHandler(handler);\n            },\n            // silentTranslationWarn\n            get silentTranslationWarn() {\n                return isBoolean(composer.missingWarn)\n                    ? !composer.missingWarn\n                    : composer.missingWarn;\n            },\n            set silentTranslationWarn(val) {\n                composer.missingWarn = isBoolean(val) ? !val : val;\n            },\n            // silentFallbackWarn\n            get silentFallbackWarn() {\n                return isBoolean(composer.fallbackWarn)\n                    ? !composer.fallbackWarn\n                    : composer.fallbackWarn;\n            },\n            set silentFallbackWarn(val) {\n                composer.fallbackWarn = isBoolean(val) ? !val : val;\n            },\n            // modifiers\n            get modifiers() {\n                return composer.modifiers;\n            },\n            // formatFallbackMessages\n            get formatFallbackMessages() {\n                return composer.fallbackFormat;\n            },\n            set formatFallbackMessages(val) {\n                composer.fallbackFormat = val;\n            },\n            // postTranslation\n            get postTranslation() {\n                return composer.getPostTranslationHandler();\n            },\n            set postTranslation(handler) {\n                composer.setPostTranslationHandler(handler);\n            },\n            // sync\n            get sync() {\n                return composer.inheritLocale;\n            },\n            set sync(val) {\n                composer.inheritLocale = val;\n            },\n            // warnInHtmlMessage\n            get warnHtmlInMessage() {\n                return composer.warnHtmlMessage ? 'warn' : 'off';\n            },\n            set warnHtmlInMessage(val) {\n                composer.warnHtmlMessage = val !== 'off';\n            },\n            // escapeParameterHtml\n            get escapeParameterHtml() {\n                return composer.escapeParameter;\n            },\n            set escapeParameterHtml(val) {\n                composer.escapeParameter = val;\n            },\n            // preserveDirectiveContent\n            get preserveDirectiveContent() {\n                (process.env.NODE_ENV !== 'production') &&\n                    warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\n                return true;\n            },\n            set preserveDirectiveContent(val) {\n                (process.env.NODE_ENV !== 'production') &&\n                    warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\n            },\n            // pluralizationRules\n            get pluralizationRules() {\n                return composer.pluralRules || {};\n            },\n            // for internal\n            __composer: composer,\n            // t\n            t(...args) {\n                const [arg1, arg2, arg3] = args;\n                const options = {};\n                let list = null;\n                let named = null;\n                if (!isString(arg1)) {\n                    throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\n                }\n                const key = arg1;\n                if (isString(arg2)) {\n                    options.locale = arg2;\n                }\n                else if (isArray(arg2)) {\n                    list = arg2;\n                }\n                else if (isPlainObject(arg2)) {\n                    named = arg2;\n                }\n                if (isArray(arg3)) {\n                    list = arg3;\n                }\n                else if (isPlainObject(arg3)) {\n                    named = arg3;\n                }\n                // return composer.t(key, (list || named || {}) as any, options)\n                return Reflect.apply(composer.t, composer, [\n                    key,\n                    (list || named || {}),\n                    options\n                ]);\n            },\n            rt(...args) {\n                return Reflect.apply(composer.rt, composer, [...args]);\n            },\n            // tc\n            tc(...args) {\n                const [arg1, arg2, arg3] = args;\n                const options = { plural: 1 };\n                let list = null;\n                let named = null;\n                if (!isString(arg1)) {\n                    throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\n                }\n                const key = arg1;\n                if (isString(arg2)) {\n                    options.locale = arg2;\n                }\n                else if (isNumber(arg2)) {\n                    options.plural = arg2;\n                }\n                else if (isArray(arg2)) {\n                    list = arg2;\n                }\n                else if (isPlainObject(arg2)) {\n                    named = arg2;\n                }\n                if (isString(arg3)) {\n                    options.locale = arg3;\n                }\n                else if (isArray(arg3)) {\n                    list = arg3;\n                }\n                else if (isPlainObject(arg3)) {\n                    named = arg3;\n                }\n                // return composer.t(key, (list || named || {}) as any, options)\n                return Reflect.apply(composer.t, composer, [\n                    key,\n                    (list || named || {}),\n                    options\n                ]);\n            },\n            // te\n            te(key, locale) {\n                return composer.te(key, locale);\n            },\n            // tm\n            tm(key) {\n                return composer.tm(key);\n            },\n            // getLocaleMessage\n            getLocaleMessage(locale) {\n                return composer.getLocaleMessage(locale);\n            },\n            // setLocaleMessage\n            setLocaleMessage(locale, message) {\n                composer.setLocaleMessage(locale, message);\n            },\n            // mergeLocaleMessage\n            mergeLocaleMessage(locale, message) {\n                composer.mergeLocaleMessage(locale, message);\n            },\n            // d\n            d(...args) {\n                return Reflect.apply(composer.d, composer, [...args]);\n            },\n            // getDateTimeFormat\n            getDateTimeFormat(locale) {\n                return composer.getDateTimeFormat(locale);\n            },\n            // setDateTimeFormat\n            setDateTimeFormat(locale, format) {\n                composer.setDateTimeFormat(locale, format);\n            },\n            // mergeDateTimeFormat\n            mergeDateTimeFormat(locale, format) {\n                composer.mergeDateTimeFormat(locale, format);\n            },\n            // n\n            n(...args) {\n                return Reflect.apply(composer.n, composer, [...args]);\n            },\n            // getNumberFormat\n            getNumberFormat(locale) {\n                return composer.getNumberFormat(locale);\n            },\n            // setNumberFormat\n            setNumberFormat(locale, format) {\n                composer.setNumberFormat(locale, format);\n            },\n            // mergeNumberFormat\n            mergeNumberFormat(locale, format) {\n                composer.mergeNumberFormat(locale, format);\n            },\n            // getChoiceIndex\n            // eslint-disable-next-line @typescript-eslint/no-unused-vars\n            getChoiceIndex(choice, choicesLength) {\n                (process.env.NODE_ENV !== 'production') &&\n                    warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX));\n                return -1;\n            }\n        };\n        vueI18n.__extender = __extender;\n        // for vue-devtools timeline event\n        if ((process.env.NODE_ENV !== 'production')) {\n            vueI18n.__enableEmitter = (emitter) => {\n                const __composer = composer;\n                __composer[EnableEmitter] && __composer[EnableEmitter](emitter);\n            };\n            vueI18n.__disableEmitter = () => {\n                const __composer = composer;\n                __composer[DisableEmitter] && __composer[DisableEmitter]();\n            };\n        }\n        return vueI18n;\n    }\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst baseFormatProps = {\n    tag: {\n        type: [String, Object]\n    },\n    locale: {\n        type: String\n    },\n    scope: {\n        type: String,\n        // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\n        validator: (val /* ComponentI18nScope */) => val === 'parent' || val === 'global',\n        default: 'parent' /* ComponentI18nScope */\n    },\n    i18n: {\n        type: Object\n    }\n};\n\nfunction getInterpolateArg(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n{ slots }, // SetupContext,\nkeys) {\n    if (keys.length === 1 && keys[0] === 'default') {\n        // default slot with list\n        const ret = slots.default ? slots.default() : [];\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return ret.reduce((slot, current) => {\n            return [\n                ...slot,\n                // prettier-ignore\n                ...(current.type === Fragment ? current.children : [current]\n                    )\n            ];\n        }, []);\n    }\n    else {\n        // named slots\n        return keys.reduce((arg, key) => {\n            const slot = slots[key];\n            if (slot) {\n                arg[key] = slot();\n            }\n            return arg;\n        }, {});\n    }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getFragmentableTag(tag) {\n    return Fragment ;\n}\n\nconst TranslationImpl = /*#__PURE__*/ defineComponent({\n    /* eslint-disable */\n    name: 'i18n-t',\n    props: assign({\n        keypath: {\n            type: String,\n            required: true\n        },\n        plural: {\n            type: [Number, String],\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            validator: (val) => isNumber(val) || !isNaN(val)\n        }\n    }, baseFormatProps),\n    /* eslint-enable */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    setup(props, context) {\n        const { slots, attrs } = context;\n        // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\n        const i18n = props.i18n ||\n            useI18n({\n                useScope: props.scope,\n                __useComponent: true\n            });\n        return () => {\n            const keys = Object.keys(slots).filter(key => key !== '_');\n            const options = {};\n            if (props.locale) {\n                options.locale = props.locale;\n            }\n            if (props.plural !== undefined) {\n                options.plural = isString(props.plural) ? +props.plural : props.plural;\n            }\n            const arg = getInterpolateArg(context, keys);\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            const children = i18n[TranslateVNodeSymbol](props.keypath, arg, options);\n            const assignedAttrs = assign({}, attrs);\n            const tag = isString(props.tag) || isObject(props.tag)\n                ? props.tag\n                : getFragmentableTag();\n            return h(tag, assignedAttrs, children);\n        };\n    }\n});\n/**\n * export the public type for h/tsx inference\n * also to avoid inline import() in generated d.ts files\n */\n/**\n * Translation Component\n *\n * @remarks\n * See the following items for property about details\n *\n * @VueI18nSee [TranslationProps](component#translationprops)\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\n * @VueI18nSee [Component Interpolation](../guide/advanced/component)\n *\n * @example\n * ```html\n * <div id=\"app\">\n *   <!-- ... -->\n *   <i18n keypath=\"term\" tag=\"label\" for=\"tos\">\n *     <a :href=\"url\" target=\"_blank\">{{ $t('tos') }}</a>\n *   </i18n>\n *   <!-- ... -->\n * </div>\n * ```\n * ```js\n * import { createApp } from 'vue'\n * import { createI18n } from 'vue-i18n'\n *\n * const messages = {\n *   en: {\n *     tos: 'Term of Service',\n *     term: 'I accept xxx {0}.'\n *   },\n *   ja: {\n *     tos: '利用規約',\n *     term: '私は xxx の{0}に同意します。'\n *   }\n * }\n *\n * const i18n = createI18n({\n *   locale: 'en',\n *   messages\n * })\n *\n * const app = createApp({\n *   data: {\n *     url: '/term'\n *   }\n * }).use(i18n).mount('#app')\n * ```\n *\n * @VueI18nComponent\n */\nconst Translation = TranslationImpl;\nconst I18nT = Translation;\n\nfunction isVNode(target) {\n    return isArray(target) && !isString(target[0]);\n}\nfunction renderFormatter(props, context, slotKeys, partFormatter) {\n    const { slots, attrs } = context;\n    return () => {\n        const options = { part: true };\n        let overrides = {};\n        if (props.locale) {\n            options.locale = props.locale;\n        }\n        if (isString(props.format)) {\n            options.key = props.format;\n        }\n        else if (isObject(props.format)) {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            if (isString(props.format.key)) {\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                options.key = props.format.key;\n            }\n            // Filter out number format options only\n            overrides = Object.keys(props.format).reduce((options, prop) => {\n                return slotKeys.includes(prop)\n                    ? assign({}, options, { [prop]: props.format[prop] }) // eslint-disable-line @typescript-eslint/no-explicit-any\n                    : options;\n            }, {});\n        }\n        const parts = partFormatter(...[props.value, options, overrides]);\n        let children = [options.key];\n        if (isArray(parts)) {\n            children = parts.map((part, index) => {\n                const slot = slots[part.type];\n                const node = slot\n                    ? slot({ [part.type]: part.value, index, parts })\n                    : [part.value];\n                if (isVNode(node)) {\n                    node[0].key = `${part.type}-${index}`;\n                }\n                return node;\n            });\n        }\n        else if (isString(parts)) {\n            children = [parts];\n        }\n        const assignedAttrs = assign({}, attrs);\n        const tag = isString(props.tag) || isObject(props.tag)\n            ? props.tag\n            : getFragmentableTag();\n        return h(tag, assignedAttrs, children);\n    };\n}\n\nconst NumberFormatImpl = /*#__PURE__*/ defineComponent({\n    /* eslint-disable */\n    name: 'i18n-n',\n    props: assign({\n        value: {\n            type: Number,\n            required: true\n        },\n        format: {\n            type: [String, Object]\n        }\n    }, baseFormatProps),\n    /* eslint-enable */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    setup(props, context) {\n        const i18n = props.i18n ||\n            useI18n({\n                useScope: 'parent',\n                __useComponent: true\n            });\n        return renderFormatter(props, context, NUMBER_FORMAT_OPTIONS_KEYS, (...args) => \n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        i18n[NumberPartsSymbol](...args));\n    }\n});\n/**\n * export the public type for h/tsx inference\n * also to avoid inline import() in generated d.ts files\n */\n/**\n * Number Format Component\n *\n * @remarks\n * See the following items for property about details\n *\n * @VueI18nSee [FormattableProps](component#formattableprops)\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\n * @VueI18nSee [Custom Formatting](../guide/essentials/number#custom-formatting)\n *\n * @VueI18nDanger\n * Not supported IE, due to no support `Intl.NumberFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/formatToParts)\n *\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-numberformat)\n *\n * @VueI18nComponent\n */\nconst NumberFormat = NumberFormatImpl;\nconst I18nN = NumberFormat;\n\nconst DatetimeFormatImpl = /* #__PURE__*/ defineComponent({\n    /* eslint-disable */\n    name: 'i18n-d',\n    props: assign({\n        value: {\n            type: [Number, Date],\n            required: true\n        },\n        format: {\n            type: [String, Object]\n        }\n    }, baseFormatProps),\n    /* eslint-enable */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    setup(props, context) {\n        const i18n = props.i18n ||\n            useI18n({\n                useScope: 'parent',\n                __useComponent: true\n            });\n        return renderFormatter(props, context, DATETIME_FORMAT_OPTIONS_KEYS, (...args) => \n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        i18n[DatetimePartsSymbol](...args));\n    }\n});\n/**\n * Datetime Format Component\n *\n * @remarks\n * See the following items for property about details\n *\n * @VueI18nSee [FormattableProps](component#formattableprops)\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\n * @VueI18nSee [Custom Formatting](../guide/essentials/datetime#custom-formatting)\n *\n * @VueI18nDanger\n * Not supported IE, due to no support `Intl.DateTimeFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts)\n *\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-datetimeformat)\n *\n * @VueI18nComponent\n */\nconst DatetimeFormat = DatetimeFormatImpl;\nconst I18nD = DatetimeFormat;\n\nfunction getComposer$2(i18n, instance) {\n    const i18nInternal = i18n;\n    if (i18n.mode === 'composition') {\n        return (i18nInternal.__getInstance(instance) || i18n.global);\n    }\n    else {\n        const vueI18n = i18nInternal.__getInstance(instance);\n        return vueI18n != null\n            ? vueI18n.__composer\n            : i18n.global.__composer;\n    }\n}\nfunction vTDirective(i18n) {\n    const _process = (binding) => {\n        const { instance, modifiers, value } = binding;\n        /* istanbul ignore if */\n        if (!instance || !instance.$) {\n            throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n        }\n        const composer = getComposer$2(i18n, instance.$);\n        if ((process.env.NODE_ENV !== 'production') && modifiers.preserve) {\n            warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE));\n        }\n        const parsedValue = parseValue(value);\n        return [\n            Reflect.apply(composer.t, composer, [...makeParams(parsedValue)]),\n            composer\n        ];\n    };\n    const register = (el, binding) => {\n        const [textContent, composer] = _process(binding);\n        if (inBrowser && i18n.global === composer) {\n            // global scope only\n            el.__i18nWatcher = watch(composer.locale, () => {\n                binding.instance && binding.instance.$forceUpdate();\n            });\n        }\n        el.__composer = composer;\n        el.textContent = textContent;\n    };\n    const unregister = (el) => {\n        if (inBrowser && el.__i18nWatcher) {\n            el.__i18nWatcher();\n            el.__i18nWatcher = undefined;\n            delete el.__i18nWatcher;\n        }\n        if (el.__composer) {\n            el.__composer = undefined;\n            delete el.__composer;\n        }\n    };\n    const update = (el, { value }) => {\n        if (el.__composer) {\n            const composer = el.__composer;\n            const parsedValue = parseValue(value);\n            el.textContent = Reflect.apply(composer.t, composer, [\n                ...makeParams(parsedValue)\n            ]);\n        }\n    };\n    const getSSRProps = (binding) => {\n        const [textContent] = _process(binding);\n        return { textContent };\n    };\n    return {\n        created: register,\n        unmounted: unregister,\n        beforeUpdate: update,\n        getSSRProps\n    };\n}\nfunction parseValue(value) {\n    if (isString(value)) {\n        return { path: value };\n    }\n    else if (isPlainObject(value)) {\n        if (!('path' in value)) {\n            throw createI18nError(I18nErrorCodes.REQUIRED_VALUE, 'path');\n        }\n        return value;\n    }\n    else {\n        throw createI18nError(I18nErrorCodes.INVALID_VALUE);\n    }\n}\nfunction makeParams(value) {\n    const { path, locale, args, choice, plural } = value;\n    const options = {};\n    const named = args || {};\n    if (isString(locale)) {\n        options.locale = locale;\n    }\n    if (isNumber(choice)) {\n        options.plural = choice;\n    }\n    if (isNumber(plural)) {\n        options.plural = plural;\n    }\n    return [path, named, options];\n}\n\nfunction apply(app, i18n, ...options) {\n    const pluginOptions = isPlainObject(options[0])\n        ? options[0]\n        : {};\n    const useI18nComponentName = !!pluginOptions.useI18nComponentName;\n    const globalInstall = isBoolean(pluginOptions.globalInstall)\n        ? pluginOptions.globalInstall\n        : true;\n    if ((process.env.NODE_ENV !== 'production') && globalInstall && useI18nComponentName) {\n        warn(getWarnMessage(I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE, {\n            name: Translation.name\n        }));\n    }\n    if (globalInstall) {\n        [!useI18nComponentName ? Translation.name : 'i18n', 'I18nT'].forEach(name => app.component(name, Translation));\n        [NumberFormat.name, 'I18nN'].forEach(name => app.component(name, NumberFormat));\n        [DatetimeFormat.name, 'I18nD'].forEach(name => app.component(name, DatetimeFormat));\n    }\n    // install directive\n    {\n        app.directive('t', vTDirective(i18n));\n    }\n}\n\nconst VueDevToolsLabels = {\n    [\"vue-devtools-plugin-vue-i18n\" /* VueDevToolsIDs.PLUGIN */]: 'Vue I18n devtools',\n    [\"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */]: 'I18n Resources',\n    [\"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */]: 'Vue I18n'\n};\nconst VueDevToolsPlaceholders = {\n    [\"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */]: 'Search for scopes ...'\n};\nconst VueDevToolsTimelineColors = {\n    [\"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */]: 0xffcd19\n};\n\nconst VUE_I18N_COMPONENT_TYPES = 'vue-i18n: composer properties';\nlet devtoolsApi;\nasync function enableDevTools(app, i18n) {\n    return new Promise((resolve, reject) => {\n        try {\n            setupDevtoolsPlugin({\n                id: \"vue-devtools-plugin-vue-i18n\" /* VueDevToolsIDs.PLUGIN */,\n                label: VueDevToolsLabels[\"vue-devtools-plugin-vue-i18n\" /* VueDevToolsIDs.PLUGIN */],\n                packageName: 'vue-i18n',\n                homepage: 'https://vue-i18n.intlify.dev',\n                logo: 'https://vue-i18n.intlify.dev/vue-i18n-devtools-logo.png',\n                componentStateTypes: [VUE_I18N_COMPONENT_TYPES],\n                app: app // eslint-disable-line @typescript-eslint/no-explicit-any\n            }, api => {\n                devtoolsApi = api;\n                api.on.visitComponentTree(({ componentInstance, treeNode }) => {\n                    updateComponentTreeTags(componentInstance, treeNode, i18n);\n                });\n                api.on.inspectComponent(({ componentInstance, instanceData }) => {\n                    if (componentInstance.vnode.el &&\n                        componentInstance.vnode.el.__VUE_I18N__ &&\n                        instanceData) {\n                        if (i18n.mode === 'legacy') {\n                            // ignore global scope on legacy mode\n                            if (componentInstance.vnode.el.__VUE_I18N__ !==\n                                i18n.global.__composer) {\n                                inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\n                            }\n                        }\n                        else {\n                            inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\n                        }\n                    }\n                });\n                api.addInspector({\n                    id: \"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */,\n                    label: VueDevToolsLabels[\"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */],\n                    icon: 'language',\n                    treeFilterPlaceholder: VueDevToolsPlaceholders[\"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */]\n                });\n                api.on.getInspectorTree(payload => {\n                    if (payload.app === app &&\n                        payload.inspectorId === \"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */) {\n                        registerScope(payload, i18n);\n                    }\n                });\n                const roots = new Map();\n                api.on.getInspectorState(async (payload) => {\n                    if (payload.app === app &&\n                        payload.inspectorId === \"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */) {\n                        api.unhighlightElement();\n                        inspectScope(payload, i18n);\n                        if (payload.nodeId === 'global') {\n                            if (!roots.has(payload.app)) {\n                                const [root] = await api.getComponentInstances(payload.app);\n                                roots.set(payload.app, root);\n                            }\n                            api.highlightElement(roots.get(payload.app));\n                        }\n                        else {\n                            const instance = getComponentInstance(payload.nodeId, i18n);\n                            instance && api.highlightElement(instance);\n                        }\n                    }\n                });\n                api.on.editInspectorState(payload => {\n                    if (payload.app === app &&\n                        payload.inspectorId === \"vue-i18n-resource-inspector\" /* VueDevToolsIDs.CUSTOM_INSPECTOR */) {\n                        editScope(payload, i18n);\n                    }\n                });\n                api.addTimelineLayer({\n                    id: \"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */,\n                    label: VueDevToolsLabels[\"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */],\n                    color: VueDevToolsTimelineColors[\"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */]\n                });\n                resolve(true);\n            });\n        }\n        catch (e) {\n            console.error(e);\n            reject(false);\n        }\n    });\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getI18nScopeLable(instance) {\n    return (instance.type.name ||\n        instance.type.displayName ||\n        instance.type.__file ||\n        'Anonymous');\n}\nfunction updateComponentTreeTags(instance, // eslint-disable-line @typescript-eslint/no-explicit-any\ntreeNode, i18n) {\n    // prettier-ignore\n    const global = i18n.mode === 'composition'\n        ? i18n.global\n        : i18n.global.__composer;\n    if (instance && instance.vnode.el && instance.vnode.el.__VUE_I18N__) {\n        // add custom tags local scope only\n        if (instance.vnode.el.__VUE_I18N__ !== global) {\n            const tag = {\n                label: `i18n (${getI18nScopeLable(instance)} Scope)`,\n                textColor: 0x000000,\n                backgroundColor: 0xffcd19\n            };\n            treeNode.tags.push(tag);\n        }\n    }\n}\nfunction inspectComposer(instanceData, composer) {\n    const type = VUE_I18N_COMPONENT_TYPES;\n    instanceData.state.push({\n        type,\n        key: 'locale',\n        editable: true,\n        value: composer.locale.value\n    });\n    instanceData.state.push({\n        type,\n        key: 'availableLocales',\n        editable: false,\n        value: composer.availableLocales\n    });\n    instanceData.state.push({\n        type,\n        key: 'fallbackLocale',\n        editable: true,\n        value: composer.fallbackLocale.value\n    });\n    instanceData.state.push({\n        type,\n        key: 'inheritLocale',\n        editable: true,\n        value: composer.inheritLocale\n    });\n    instanceData.state.push({\n        type,\n        key: 'messages',\n        editable: false,\n        value: getLocaleMessageValue(composer.messages.value)\n    });\n    {\n        instanceData.state.push({\n            type,\n            key: 'datetimeFormats',\n            editable: false,\n            value: composer.datetimeFormats.value\n        });\n        instanceData.state.push({\n            type,\n            key: 'numberFormats',\n            editable: false,\n            value: composer.numberFormats.value\n        });\n    }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getLocaleMessageValue(messages) {\n    const value = {};\n    Object.keys(messages).forEach((key) => {\n        const v = messages[key];\n        if (isFunction(v) && 'source' in v) {\n            value[key] = getMessageFunctionDetails(v);\n        }\n        else if (isMessageAST(v) && v.loc && v.loc.source) {\n            value[key] = v.loc.source;\n        }\n        else if (isObject(v)) {\n            value[key] = getLocaleMessageValue(v);\n        }\n        else {\n            value[key] = v;\n        }\n    });\n    return value;\n}\nconst ESC = {\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    '&': '&amp;'\n};\nfunction escape(s) {\n    return s.replace(/[<>\"&]/g, escapeChar);\n}\nfunction escapeChar(a) {\n    return ESC[a] || a;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getMessageFunctionDetails(func) {\n    const argString = func.source ? `(\"${escape(func.source)}\")` : `(?)`;\n    return {\n        _custom: {\n            type: 'function',\n            display: `<span>ƒ</span> ${argString}`\n        }\n    };\n}\nfunction registerScope(payload, i18n) {\n    payload.rootNodes.push({\n        id: 'global',\n        label: 'Global Scope'\n    });\n    // prettier-ignore\n    const global = i18n.mode === 'composition'\n        ? i18n.global\n        : i18n.global.__composer;\n    for (const [keyInstance, instance] of i18n.__instances) {\n        // prettier-ignore\n        const composer = i18n.mode === 'composition'\n            ? instance\n            : instance.__composer;\n        if (global === composer) {\n            continue;\n        }\n        payload.rootNodes.push({\n            id: composer.id.toString(),\n            label: `${getI18nScopeLable(keyInstance)} Scope`\n        });\n    }\n}\nfunction getComponentInstance(nodeId, i18n) {\n    let instance = null;\n    if (nodeId !== 'global') {\n        for (const [component, composer] of i18n.__instances.entries()) {\n            if (composer.id.toString() === nodeId) {\n                instance = component;\n                break;\n            }\n        }\n    }\n    return instance;\n}\nfunction getComposer$1(nodeId, i18n) {\n    if (nodeId === 'global') {\n        return i18n.mode === 'composition'\n            ? i18n.global\n            : i18n.global.__composer;\n    }\n    else {\n        const instance = Array.from(i18n.__instances.values()).find(item => item.id.toString() === nodeId);\n        if (instance) {\n            return i18n.mode === 'composition'\n                ? instance\n                : instance.__composer;\n        }\n        else {\n            return null;\n        }\n    }\n}\nfunction inspectScope(payload, i18n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n    const composer = getComposer$1(payload.nodeId, i18n);\n    if (composer) {\n        // TODO:\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        payload.state = makeScopeInspectState(composer);\n    }\n    return null;\n}\nfunction makeScopeInspectState(composer) {\n    const state = {};\n    const localeType = 'Locale related info';\n    const localeStates = [\n        {\n            type: localeType,\n            key: 'locale',\n            editable: true,\n            value: composer.locale.value\n        },\n        {\n            type: localeType,\n            key: 'fallbackLocale',\n            editable: true,\n            value: composer.fallbackLocale.value\n        },\n        {\n            type: localeType,\n            key: 'availableLocales',\n            editable: false,\n            value: composer.availableLocales\n        },\n        {\n            type: localeType,\n            key: 'inheritLocale',\n            editable: true,\n            value: composer.inheritLocale\n        }\n    ];\n    state[localeType] = localeStates;\n    const localeMessagesType = 'Locale messages info';\n    const localeMessagesStates = [\n        {\n            type: localeMessagesType,\n            key: 'messages',\n            editable: false,\n            value: getLocaleMessageValue(composer.messages.value)\n        }\n    ];\n    state[localeMessagesType] = localeMessagesStates;\n    {\n        const datetimeFormatsType = 'Datetime formats info';\n        const datetimeFormatsStates = [\n            {\n                type: datetimeFormatsType,\n                key: 'datetimeFormats',\n                editable: false,\n                value: composer.datetimeFormats.value\n            }\n        ];\n        state[datetimeFormatsType] = datetimeFormatsStates;\n        const numberFormatsType = 'Datetime formats info';\n        const numberFormatsStates = [\n            {\n                type: numberFormatsType,\n                key: 'numberFormats',\n                editable: false,\n                value: composer.numberFormats.value\n            }\n        ];\n        state[numberFormatsType] = numberFormatsStates;\n    }\n    return state;\n}\nfunction addTimelineEvent(event, payload) {\n    if (devtoolsApi) {\n        let groupId;\n        if (payload && 'groupId' in payload) {\n            groupId = payload.groupId;\n            delete payload.groupId;\n        }\n        devtoolsApi.addTimelineEvent({\n            layerId: \"vue-i18n-timeline\" /* VueDevToolsIDs.TIMELINE */,\n            event: {\n                title: event,\n                groupId,\n                time: Date.now(),\n                meta: {},\n                data: payload || {},\n                logType: event === \"compile-error\" /* VueDevToolsTimelineEvents.COMPILE_ERROR */\n                    ? 'error'\n                    : event === \"fallback\" /* VueDevToolsTimelineEvents.FALBACK */ ||\n                        event === \"missing\" /* VueDevToolsTimelineEvents.MISSING */\n                        ? 'warning'\n                        : 'default'\n            }\n        });\n    }\n}\nfunction editScope(payload, i18n) {\n    const composer = getComposer$1(payload.nodeId, i18n);\n    if (composer) {\n        const [field] = payload.path;\n        if (field === 'locale' && isString(payload.state.value)) {\n            composer.locale.value = payload.state.value;\n        }\n        else if (field === 'fallbackLocale' &&\n            (isString(payload.state.value) ||\n                isArray(payload.state.value) ||\n                isObject(payload.state.value))) {\n            composer.fallbackLocale.value = payload.state.value;\n        }\n        else if (field === 'inheritLocale' && isBoolean(payload.state.value)) {\n            composer.inheritLocale = payload.state.value;\n        }\n    }\n}\n\n/**\n * Supports compatibility for legacy vue-i18n APIs\n * This mixin is used when we use vue-i18n@v9.x or later\n */\nfunction defineMixin(vuei18n, composer, i18n) {\n    return {\n        beforeCreate() {\n            const instance = getCurrentInstance();\n            /* istanbul ignore if */\n            if (!instance) {\n                throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n            }\n            const options = this.$options;\n            if (options.i18n) {\n                const optionsI18n = options.i18n;\n                if (options.__i18n) {\n                    optionsI18n.__i18n = options.__i18n;\n                }\n                optionsI18n.__root = composer;\n                if (this === this.$root) {\n                    // merge option and gttach global\n                    this.$i18n = mergeToGlobal(vuei18n, optionsI18n);\n                }\n                else {\n                    optionsI18n.__injectWithOption = true;\n                    optionsI18n.__extender = i18n.__vueI18nExtend;\n                    // atttach local VueI18n instance\n                    this.$i18n = createVueI18n(optionsI18n);\n                    // extend VueI18n instance\n                    const _vueI18n = this.$i18n;\n                    if (_vueI18n.__extender) {\n                        _vueI18n.__disposer = _vueI18n.__extender(this.$i18n);\n                    }\n                }\n            }\n            else if (options.__i18n) {\n                if (this === this.$root) {\n                    // merge option and gttach global\n                    this.$i18n = mergeToGlobal(vuei18n, options);\n                }\n                else {\n                    // atttach local VueI18n instance\n                    this.$i18n = createVueI18n({\n                        __i18n: options.__i18n,\n                        __injectWithOption: true,\n                        __extender: i18n.__vueI18nExtend,\n                        __root: composer\n                    });\n                    // extend VueI18n instance\n                    const _vueI18n = this.$i18n;\n                    if (_vueI18n.__extender) {\n                        _vueI18n.__disposer = _vueI18n.__extender(this.$i18n);\n                    }\n                }\n            }\n            else {\n                // attach global VueI18n instance\n                this.$i18n = vuei18n;\n            }\n            if (options.__i18nGlobal) {\n                adjustI18nResources(composer, options, options);\n            }\n            // defines vue-i18n legacy APIs\n            this.$t = (...args) => this.$i18n.t(...args);\n            this.$rt = (...args) => this.$i18n.rt(...args);\n            this.$tc = (...args) => this.$i18n.tc(...args);\n            this.$te = (key, locale) => this.$i18n.te(key, locale);\n            this.$d = (...args) => this.$i18n.d(...args);\n            this.$n = (...args) => this.$i18n.n(...args);\n            this.$tm = (key) => this.$i18n.tm(key);\n            i18n.__setInstance(instance, this.$i18n);\n        },\n        mounted() {\n            /* istanbul ignore if */\n            if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n                !false &&\n                this.$el &&\n                this.$i18n) {\n                const _vueI18n = this.$i18n;\n                this.$el.__VUE_I18N__ = _vueI18n.__composer;\n                const emitter = (this.__v_emitter =\n                    createEmitter());\n                _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\n                emitter.on('*', addTimelineEvent);\n            }\n        },\n        unmounted() {\n            const instance = getCurrentInstance();\n            /* istanbul ignore if */\n            if (!instance) {\n                throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n            }\n            const _vueI18n = this.$i18n;\n            /* istanbul ignore if */\n            if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n                !false &&\n                this.$el &&\n                this.$el.__VUE_I18N__) {\n                if (this.__v_emitter) {\n                    this.__v_emitter.off('*', addTimelineEvent);\n                    delete this.__v_emitter;\n                }\n                if (this.$i18n) {\n                    _vueI18n.__disableEmitter && _vueI18n.__disableEmitter();\n                    delete this.$el.__VUE_I18N__;\n                }\n            }\n            delete this.$t;\n            delete this.$rt;\n            delete this.$tc;\n            delete this.$te;\n            delete this.$d;\n            delete this.$n;\n            delete this.$tm;\n            if (_vueI18n.__disposer) {\n                _vueI18n.__disposer();\n                delete _vueI18n.__disposer;\n                delete _vueI18n.__extender;\n            }\n            i18n.__deleteInstance(instance);\n            delete this.$i18n;\n        }\n    };\n}\nfunction mergeToGlobal(g, options) {\n    g.locale = options.locale || g.locale;\n    g.fallbackLocale = options.fallbackLocale || g.fallbackLocale;\n    g.missing = options.missing || g.missing;\n    g.silentTranslationWarn =\n        options.silentTranslationWarn || g.silentFallbackWarn;\n    g.silentFallbackWarn = options.silentFallbackWarn || g.silentFallbackWarn;\n    g.formatFallbackMessages =\n        options.formatFallbackMessages || g.formatFallbackMessages;\n    g.postTranslation = options.postTranslation || g.postTranslation;\n    g.warnHtmlInMessage = options.warnHtmlInMessage || g.warnHtmlInMessage;\n    g.escapeParameterHtml = options.escapeParameterHtml || g.escapeParameterHtml;\n    g.sync = options.sync || g.sync;\n    g.__composer[SetPluralRulesSymbol](options.pluralizationRules || g.pluralizationRules);\n    const messages = getLocaleMessages(g.locale, {\n        messages: options.messages,\n        __i18n: options.__i18n\n    });\n    Object.keys(messages).forEach(locale => g.mergeLocaleMessage(locale, messages[locale]));\n    if (options.datetimeFormats) {\n        Object.keys(options.datetimeFormats).forEach(locale => g.mergeDateTimeFormat(locale, options.datetimeFormats[locale]));\n    }\n    if (options.numberFormats) {\n        Object.keys(options.numberFormats).forEach(locale => g.mergeNumberFormat(locale, options.numberFormats[locale]));\n    }\n    return g;\n}\n\n/**\n * Injection key for {@link useI18n}\n *\n * @remarks\n * The global injection key for I18n instances with `useI18n`. this injection key is used in Web Components.\n * Specify the i18n instance created by {@link createI18n} together with `provide` function.\n *\n * @VueI18nGeneral\n */\nconst I18nInjectionKey = \n/* #__PURE__*/ makeSymbol('global-vue-i18n');\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nfunction createI18n(options = {}, VueI18nLegacy) {\n    // prettier-ignore\n    const __legacyMode = __VUE_I18N_LEGACY_API__ && isBoolean(options.legacy)\n            ? options.legacy\n            : __VUE_I18N_LEGACY_API__;\n    // prettier-ignore\n    const __globalInjection = isBoolean(options.globalInjection)\n        ? options.globalInjection\n        : true;\n    // prettier-ignore\n    const __allowComposition = __VUE_I18N_LEGACY_API__ && __legacyMode\n            ? !!options.allowComposition\n            : true;\n    const __instances = new Map();\n    const [globalScope, __global] = createGlobal(options, __legacyMode);\n    const symbol = /* #__PURE__*/ makeSymbol((process.env.NODE_ENV !== 'production') ? 'vue-i18n' : '');\n    if ((process.env.NODE_ENV !== 'production')) {\n        if (__legacyMode && __allowComposition && !false) {\n            warn(getWarnMessage(I18nWarnCodes.NOTICE_DROP_ALLOW_COMPOSITION));\n        }\n    }\n    function __getInstance(component) {\n        return __instances.get(component) || null;\n    }\n    function __setInstance(component, instance) {\n        __instances.set(component, instance);\n    }\n    function __deleteInstance(component) {\n        __instances.delete(component);\n    }\n    {\n        const i18n = {\n            // mode\n            get mode() {\n                return __VUE_I18N_LEGACY_API__ && __legacyMode\n                    ? 'legacy'\n                    : 'composition';\n            },\n            // allowComposition\n            get allowComposition() {\n                return __allowComposition;\n            },\n            // install plugin\n            async install(app, ...options) {\n                if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n                    !false) {\n                    app.__VUE_I18N__ = i18n;\n                }\n                // setup global provider\n                app.__VUE_I18N_SYMBOL__ = symbol;\n                app.provide(app.__VUE_I18N_SYMBOL__, i18n);\n                // set composer & vuei18n extend hook options from plugin options\n                if (isPlainObject(options[0])) {\n                    const opts = options[0];\n                    i18n.__composerExtend =\n                        opts.__composerExtend;\n                    i18n.__vueI18nExtend =\n                        opts.__vueI18nExtend;\n                }\n                // global method and properties injection for Composition API\n                let globalReleaseHandler = null;\n                if (!__legacyMode && __globalInjection) {\n                    globalReleaseHandler = injectGlobalFields(app, i18n.global);\n                }\n                // install built-in components and directive\n                if (__VUE_I18N_FULL_INSTALL__) {\n                    apply(app, i18n, ...options);\n                }\n                // setup mixin for Legacy API\n                if (__VUE_I18N_LEGACY_API__ && __legacyMode) {\n                    app.mixin(defineMixin(__global, __global.__composer, i18n));\n                }\n                // release global scope\n                const unmountApp = app.unmount;\n                app.unmount = () => {\n                    globalReleaseHandler && globalReleaseHandler();\n                    i18n.dispose();\n                    unmountApp();\n                };\n                // setup vue-devtools plugin\n                if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && !false) {\n                    const ret = await enableDevTools(app, i18n);\n                    if (!ret) {\n                        throw createI18nError(I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN);\n                    }\n                    const emitter = createEmitter();\n                    if (__legacyMode) {\n                        const _vueI18n = __global;\n                        _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\n                    }\n                    else {\n                        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                        const _composer = __global;\n                        _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\n                    }\n                    emitter.on('*', addTimelineEvent);\n                }\n            },\n            // global accessor\n            get global() {\n                return __global;\n            },\n            dispose() {\n                globalScope.stop();\n            },\n            // @internal\n            __instances,\n            // @internal\n            __getInstance,\n            // @internal\n            __setInstance,\n            // @internal\n            __deleteInstance\n        };\n        return i18n;\n    }\n}\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction useI18n(options = {}) {\n    const instance = getCurrentInstance();\n    if (instance == null) {\n        throw createI18nError(I18nErrorCodes.MUST_BE_CALL_SETUP_TOP);\n    }\n    if (!instance.isCE &&\n        instance.appContext.app != null &&\n        !instance.appContext.app.__VUE_I18N_SYMBOL__) {\n        throw createI18nError(I18nErrorCodes.NOT_INSTALLED);\n    }\n    const i18n = getI18nInstance(instance);\n    const gl = getGlobalComposer(i18n);\n    const componentOptions = getComponentOptions(instance);\n    const scope = getScope(options, componentOptions);\n    if (__VUE_I18N_LEGACY_API__) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        if (i18n.mode === 'legacy' && !options.__useComponent) {\n            if (!i18n.allowComposition) {\n                throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE);\n            }\n            return useI18nForLegacy(instance, scope, gl, options);\n        }\n    }\n    if (scope === 'global') {\n        adjustI18nResources(gl, options, componentOptions);\n        return gl;\n    }\n    if (scope === 'parent') {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        let composer = getComposer(i18n, instance, options.__useComponent);\n        if (composer == null) {\n            if ((process.env.NODE_ENV !== 'production')) {\n                warn(getWarnMessage(I18nWarnCodes.NOT_FOUND_PARENT_SCOPE));\n            }\n            composer = gl;\n        }\n        return composer;\n    }\n    const i18nInternal = i18n;\n    let composer = i18nInternal.__getInstance(instance);\n    if (composer == null) {\n        const composerOptions = assign({}, options);\n        if ('__i18n' in componentOptions) {\n            composerOptions.__i18n = componentOptions.__i18n;\n        }\n        if (gl) {\n            composerOptions.__root = gl;\n        }\n        composer = createComposer(composerOptions);\n        if (i18nInternal.__composerExtend) {\n            composer[DisposeSymbol] =\n                i18nInternal.__composerExtend(composer);\n        }\n        setupLifeCycle(i18nInternal, instance, composer);\n        i18nInternal.__setInstance(instance, composer);\n    }\n    return composer;\n}\n/**\n * Cast to VueI18n legacy compatible type\n *\n * @remarks\n * This API is provided only with [vue-i18n-bridge](https://vue-i18n.intlify.dev/guide/migration/ways.html#what-is-vue-i18n-bridge).\n *\n * The purpose of this function is to convert an {@link I18n} instance created with {@link createI18n | createI18n(legacy: true)} into a `vue-i18n@v8.x` compatible instance of `new VueI18n` in a TypeScript environment.\n *\n * @param i18n - An instance of {@link I18n}\n * @returns A i18n instance which is casted to {@link VueI18n} type\n *\n * @VueI18nTip\n * :new: provided by **vue-i18n-bridge only**\n *\n * @VueI18nGeneral\n */\n/* #__NO_SIDE_EFFECTS__ */\nconst castToVueI18n = (i18n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n) => {\n    if (!(__VUE_I18N_BRIDGE__ in i18n)) {\n        throw createI18nError(I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N);\n    }\n    return i18n;\n};\nfunction createGlobal(options, legacyMode, VueI18nLegacy // eslint-disable-line @typescript-eslint/no-explicit-any\n) {\n    const scope = effectScope();\n    {\n        const obj = __VUE_I18N_LEGACY_API__ && legacyMode\n            ? scope.run(() => createVueI18n(options))\n            : scope.run(() => createComposer(options));\n        if (obj == null) {\n            throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n        }\n        return [scope, obj];\n    }\n}\nfunction getI18nInstance(instance) {\n    {\n        const i18n = inject(!instance.isCE\n            ? instance.appContext.app.__VUE_I18N_SYMBOL__\n            : I18nInjectionKey);\n        /* istanbul ignore if */\n        if (!i18n) {\n            throw createI18nError(!instance.isCE\n                ? I18nErrorCodes.UNEXPECTED_ERROR\n                : I18nErrorCodes.NOT_INSTALLED_WITH_PROVIDE);\n        }\n        return i18n;\n    }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getScope(options, componentOptions) {\n    // prettier-ignore\n    return isEmptyObject(options)\n        ? ('__i18n' in componentOptions)\n            ? 'local'\n            : 'global'\n        : !options.useScope\n            ? 'local'\n            : options.useScope;\n}\nfunction getGlobalComposer(i18n) {\n    // prettier-ignore\n    return i18n.mode === 'composition'\n            ? i18n.global\n            : i18n.global.__composer\n        ;\n}\nfunction getComposer(i18n, target, useComponent = false) {\n    let composer = null;\n    const root = target.root;\n    let current = getParentComponentInstance(target, useComponent);\n    while (current != null) {\n        const i18nInternal = i18n;\n        if (i18n.mode === 'composition') {\n            composer = i18nInternal.__getInstance(current);\n        }\n        else {\n            if (__VUE_I18N_LEGACY_API__) {\n                const vueI18n = i18nInternal.__getInstance(current);\n                if (vueI18n != null) {\n                    composer = vueI18n\n                        .__composer;\n                    if (useComponent &&\n                        composer &&\n                        !composer[InejctWithOptionSymbol] // eslint-disable-line @typescript-eslint/no-explicit-any\n                    ) {\n                        composer = null;\n                    }\n                }\n            }\n        }\n        if (composer != null) {\n            break;\n        }\n        if (root === current) {\n            break;\n        }\n        current = current.parent;\n    }\n    return composer;\n}\nfunction getParentComponentInstance(target, useComponent = false) {\n    if (target == null) {\n        return null;\n    }\n    {\n        // if `useComponent: true` will be specified, we get lexical scope owner instance for use-case slots\n        return !useComponent\n            ? target.parent\n            : target.vnode.ctx || target.parent; // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n}\nfunction setupLifeCycle(i18n, target, composer) {\n    let emitter = null;\n    {\n        onMounted(() => {\n            // inject composer instance to DOM for intlify-devtools\n            if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n                !false &&\n                target.vnode.el) {\n                target.vnode.el.__VUE_I18N__ = composer;\n                emitter = createEmitter();\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                const _composer = composer;\n                _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\n                emitter.on('*', addTimelineEvent);\n            }\n        }, target);\n        onUnmounted(() => {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            const _composer = composer;\n            // remove composer instance from DOM for intlify-devtools\n            if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n                !false &&\n                target.vnode.el &&\n                target.vnode.el.__VUE_I18N__) {\n                emitter && emitter.off('*', addTimelineEvent);\n                _composer[DisableEmitter] && _composer[DisableEmitter]();\n                delete target.vnode.el.__VUE_I18N__;\n            }\n            i18n.__deleteInstance(target);\n            // dispose extended resources\n            const dispose = _composer[DisposeSymbol];\n            if (dispose) {\n                dispose();\n                delete _composer[DisposeSymbol];\n            }\n        }, target);\n    }\n}\nfunction useI18nForLegacy(instance, scope, root, options = {} // eslint-disable-line @typescript-eslint/no-explicit-any\n) {\n    const isLocalScope = scope === 'local';\n    const _composer = shallowRef(null);\n    if (isLocalScope &&\n        instance.proxy &&\n        !(instance.proxy.$options.i18n || instance.proxy.$options.__i18n)) {\n        throw createI18nError(I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);\n    }\n    const _inheritLocale = isBoolean(options.inheritLocale)\n        ? options.inheritLocale\n        : !isString(options.locale);\n    const _locale = ref(\n    // prettier-ignore\n    !isLocalScope || _inheritLocale\n        ? root.locale.value\n        : isString(options.locale)\n            ? options.locale\n            : DEFAULT_LOCALE);\n    const _fallbackLocale = ref(\n    // prettier-ignore\n    !isLocalScope || _inheritLocale\n        ? root.fallbackLocale.value\n        : isString(options.fallbackLocale) ||\n            isArray(options.fallbackLocale) ||\n            isPlainObject(options.fallbackLocale) ||\n            options.fallbackLocale === false\n            ? options.fallbackLocale\n            : _locale.value);\n    const _messages = ref(getLocaleMessages(_locale.value, options));\n    // prettier-ignore\n    const _datetimeFormats = ref(isPlainObject(options.datetimeFormats)\n        ? options.datetimeFormats\n        : { [_locale.value]: {} });\n    // prettier-ignore\n    const _numberFormats = ref(isPlainObject(options.numberFormats)\n        ? options.numberFormats\n        : { [_locale.value]: {} });\n    // prettier-ignore\n    const _missingWarn = isLocalScope\n        ? root.missingWarn\n        : isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\n            ? options.missingWarn\n            : true;\n    // prettier-ignore\n    const _fallbackWarn = isLocalScope\n        ? root.fallbackWarn\n        : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\n            ? options.fallbackWarn\n            : true;\n    // prettier-ignore\n    const _fallbackRoot = isLocalScope\n        ? root.fallbackRoot\n        : isBoolean(options.fallbackRoot)\n            ? options.fallbackRoot\n            : true;\n    // configure fall back to root\n    const _fallbackFormat = !!options.fallbackFormat;\n    // runtime missing\n    const _missing = isFunction(options.missing) ? options.missing : null;\n    // postTranslation handler\n    const _postTranslation = isFunction(options.postTranslation)\n        ? options.postTranslation\n        : null;\n    // prettier-ignore\n    const _warnHtmlMessage = isLocalScope\n        ? root.warnHtmlMessage\n        : isBoolean(options.warnHtmlMessage)\n            ? options.warnHtmlMessage\n            : true;\n    const _escapeParameter = !!options.escapeParameter;\n    // prettier-ignore\n    const _modifiers = isLocalScope\n        ? root.modifiers\n        : isPlainObject(options.modifiers)\n            ? options.modifiers\n            : {};\n    // pluralRules\n    const _pluralRules = options.pluralRules || (isLocalScope && root.pluralRules);\n    // track reactivity\n    function trackReactivityValues() {\n        return [\n            _locale.value,\n            _fallbackLocale.value,\n            _messages.value,\n            _datetimeFormats.value,\n            _numberFormats.value\n        ];\n    }\n    // locale\n    const locale = computed({\n        get: () => {\n            return _composer.value ? _composer.value.locale.value : _locale.value;\n        },\n        set: val => {\n            if (_composer.value) {\n                _composer.value.locale.value = val;\n            }\n            _locale.value = val;\n        }\n    });\n    // fallbackLocale\n    const fallbackLocale = computed({\n        get: () => {\n            return _composer.value\n                ? _composer.value.fallbackLocale.value\n                : _fallbackLocale.value;\n        },\n        set: val => {\n            if (_composer.value) {\n                _composer.value.fallbackLocale.value = val;\n            }\n            _fallbackLocale.value = val;\n        }\n    });\n    // messages\n    const messages = computed(() => {\n        if (_composer.value) {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            return _composer.value.messages.value;\n        }\n        else {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            return _messages.value;\n        }\n    });\n    const datetimeFormats = computed(() => _datetimeFormats.value);\n    const numberFormats = computed(() => _numberFormats.value);\n    function getPostTranslationHandler() {\n        return _composer.value\n            ? _composer.value.getPostTranslationHandler()\n            : _postTranslation;\n    }\n    function setPostTranslationHandler(handler) {\n        if (_composer.value) {\n            _composer.value.setPostTranslationHandler(handler);\n        }\n    }\n    function getMissingHandler() {\n        return _composer.value ? _composer.value.getMissingHandler() : _missing;\n    }\n    function setMissingHandler(handler) {\n        if (_composer.value) {\n            _composer.value.setMissingHandler(handler);\n        }\n    }\n    function warpWithDeps(fn) {\n        trackReactivityValues();\n        return fn();\n    }\n    function t(...args) {\n        return _composer.value\n            ? warpWithDeps(() => Reflect.apply(_composer.value.t, null, [...args]))\n            : warpWithDeps(() => '');\n    }\n    function rt(...args) {\n        return _composer.value\n            ? Reflect.apply(_composer.value.rt, null, [...args])\n            : '';\n    }\n    function d(...args) {\n        return _composer.value\n            ? warpWithDeps(() => Reflect.apply(_composer.value.d, null, [...args]))\n            : warpWithDeps(() => '');\n    }\n    function n(...args) {\n        return _composer.value\n            ? warpWithDeps(() => Reflect.apply(_composer.value.n, null, [...args]))\n            : warpWithDeps(() => '');\n    }\n    function tm(key) {\n        return _composer.value ? _composer.value.tm(key) : {};\n    }\n    function te(key, locale) {\n        return _composer.value ? _composer.value.te(key, locale) : false;\n    }\n    function getLocaleMessage(locale) {\n        return _composer.value ? _composer.value.getLocaleMessage(locale) : {};\n    }\n    function setLocaleMessage(locale, message) {\n        if (_composer.value) {\n            _composer.value.setLocaleMessage(locale, message);\n            _messages.value[locale] = message;\n        }\n    }\n    function mergeLocaleMessage(locale, message) {\n        if (_composer.value) {\n            _composer.value.mergeLocaleMessage(locale, message);\n        }\n    }\n    function getDateTimeFormat(locale) {\n        return _composer.value ? _composer.value.getDateTimeFormat(locale) : {};\n    }\n    function setDateTimeFormat(locale, format) {\n        if (_composer.value) {\n            _composer.value.setDateTimeFormat(locale, format);\n            _datetimeFormats.value[locale] = format;\n        }\n    }\n    function mergeDateTimeFormat(locale, format) {\n        if (_composer.value) {\n            _composer.value.mergeDateTimeFormat(locale, format);\n        }\n    }\n    function getNumberFormat(locale) {\n        return _composer.value ? _composer.value.getNumberFormat(locale) : {};\n    }\n    function setNumberFormat(locale, format) {\n        if (_composer.value) {\n            _composer.value.setNumberFormat(locale, format);\n            _numberFormats.value[locale] = format;\n        }\n    }\n    function mergeNumberFormat(locale, format) {\n        if (_composer.value) {\n            _composer.value.mergeNumberFormat(locale, format);\n        }\n    }\n    const wrapper = {\n        get id() {\n            return _composer.value ? _composer.value.id : -1;\n        },\n        locale,\n        fallbackLocale,\n        messages,\n        datetimeFormats,\n        numberFormats,\n        get inheritLocale() {\n            return _composer.value ? _composer.value.inheritLocale : _inheritLocale;\n        },\n        set inheritLocale(val) {\n            if (_composer.value) {\n                _composer.value.inheritLocale = val;\n            }\n        },\n        get availableLocales() {\n            return _composer.value\n                ? _composer.value.availableLocales\n                : Object.keys(_messages.value);\n        },\n        get modifiers() {\n            return (_composer.value ? _composer.value.modifiers : _modifiers);\n        },\n        get pluralRules() {\n            return (_composer.value ? _composer.value.pluralRules : _pluralRules);\n        },\n        get isGlobal() {\n            return _composer.value ? _composer.value.isGlobal : false;\n        },\n        get missingWarn() {\n            return _composer.value ? _composer.value.missingWarn : _missingWarn;\n        },\n        set missingWarn(val) {\n            if (_composer.value) {\n                _composer.value.missingWarn = val;\n            }\n        },\n        get fallbackWarn() {\n            return _composer.value ? _composer.value.fallbackWarn : _fallbackWarn;\n        },\n        set fallbackWarn(val) {\n            if (_composer.value) {\n                _composer.value.missingWarn = val;\n            }\n        },\n        get fallbackRoot() {\n            return _composer.value ? _composer.value.fallbackRoot : _fallbackRoot;\n        },\n        set fallbackRoot(val) {\n            if (_composer.value) {\n                _composer.value.fallbackRoot = val;\n            }\n        },\n        get fallbackFormat() {\n            return _composer.value ? _composer.value.fallbackFormat : _fallbackFormat;\n        },\n        set fallbackFormat(val) {\n            if (_composer.value) {\n                _composer.value.fallbackFormat = val;\n            }\n        },\n        get warnHtmlMessage() {\n            return _composer.value\n                ? _composer.value.warnHtmlMessage\n                : _warnHtmlMessage;\n        },\n        set warnHtmlMessage(val) {\n            if (_composer.value) {\n                _composer.value.warnHtmlMessage = val;\n            }\n        },\n        get escapeParameter() {\n            return _composer.value\n                ? _composer.value.escapeParameter\n                : _escapeParameter;\n        },\n        set escapeParameter(val) {\n            if (_composer.value) {\n                _composer.value.escapeParameter = val;\n            }\n        },\n        t,\n        getPostTranslationHandler,\n        setPostTranslationHandler,\n        getMissingHandler,\n        setMissingHandler,\n        rt,\n        d,\n        n,\n        tm,\n        te,\n        getLocaleMessage,\n        setLocaleMessage,\n        mergeLocaleMessage,\n        getDateTimeFormat,\n        setDateTimeFormat,\n        mergeDateTimeFormat,\n        getNumberFormat,\n        setNumberFormat,\n        mergeNumberFormat\n    };\n    function sync(composer) {\n        composer.locale.value = _locale.value;\n        composer.fallbackLocale.value = _fallbackLocale.value;\n        Object.keys(_messages.value).forEach(locale => {\n            composer.mergeLocaleMessage(locale, _messages.value[locale]);\n        });\n        Object.keys(_datetimeFormats.value).forEach(locale => {\n            composer.mergeDateTimeFormat(locale, _datetimeFormats.value[locale]);\n        });\n        Object.keys(_numberFormats.value).forEach(locale => {\n            composer.mergeNumberFormat(locale, _numberFormats.value[locale]);\n        });\n        composer.escapeParameter = _escapeParameter;\n        composer.fallbackFormat = _fallbackFormat;\n        composer.fallbackRoot = _fallbackRoot;\n        composer.fallbackWarn = _fallbackWarn;\n        composer.missingWarn = _missingWarn;\n        composer.warnHtmlMessage = _warnHtmlMessage;\n    }\n    onBeforeMount(() => {\n        if (instance.proxy == null || instance.proxy.$i18n == null) {\n            throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);\n        }\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const composer = (_composer.value = instance.proxy.$i18n\n            .__composer);\n        if (scope === 'global') {\n            _locale.value = composer.locale.value;\n            _fallbackLocale.value = composer.fallbackLocale.value;\n            _messages.value = composer.messages.value;\n            _datetimeFormats.value = composer.datetimeFormats.value;\n            _numberFormats.value = composer.numberFormats.value;\n        }\n        else if (isLocalScope) {\n            sync(composer);\n        }\n    });\n    return wrapper;\n}\nconst globalExportProps = [\n    'locale',\n    'fallbackLocale',\n    'availableLocales'\n];\nconst globalExportMethods = ['t', 'rt', 'd', 'n', 'tm', 'te']\n    ;\nfunction injectGlobalFields(app, composer) {\n    const i18n = Object.create(null);\n    globalExportProps.forEach(prop => {\n        const desc = Object.getOwnPropertyDescriptor(composer, prop);\n        if (!desc) {\n            throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n        }\n        const wrap = isRef(desc.value) // check computed props\n            ? {\n                get() {\n                    return desc.value.value;\n                },\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                set(val) {\n                    desc.value.value = val;\n                }\n            }\n            : {\n                get() {\n                    return desc.get && desc.get();\n                }\n            };\n        Object.defineProperty(i18n, prop, wrap);\n    });\n    app.config.globalProperties.$i18n = i18n;\n    globalExportMethods.forEach(method => {\n        const desc = Object.getOwnPropertyDescriptor(composer, method);\n        if (!desc || !desc.value) {\n            throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n        }\n        Object.defineProperty(app.config.globalProperties, `$${method}`, desc);\n    });\n    const dispose = () => {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        delete app.config.globalProperties.$i18n;\n        globalExportMethods.forEach(method => {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            delete app.config.globalProperties[`$${method}`];\n        });\n    };\n    return dispose;\n}\n\n{\n    initFeatureFlags();\n}\n// register message compiler for jit compilation\nif (__INTLIFY_JIT_COMPILATION__) {\n    registerMessageCompiler(compile);\n}\n// register message resolver at vue-i18n\nregisterMessageResolver(resolveValue);\n// register fallback locale at vue-i18n\nregisterLocaleFallbacker(fallbackWithLocaleChain);\n// NOTE: experimental !!\nif ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n    const target = getGlobalThis();\n    target.__INTLIFY__ = true;\n    setDevToolsHook(target.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__);\n}\nif ((process.env.NODE_ENV !== 'production')) ;\n\nexport { DatetimeFormat, I18nD, I18nInjectionKey, I18nN, I18nT, NumberFormat, Translation, VERSION, castToVueI18n, createI18n, useI18n, vTDirective };\n","import { createI18n } from 'vue-i18n';\nimport type { UserModule } from './user-module-type';\n\n// Import i18n resources\n// https://vitejs.dev/guide/features.html#glob-import\nconst messages = Object.fromEntries(\n  Object.entries(\n    import.meta.glob<{ default: any }>('../../locales/*.y(a)?ml', { eager: true }),\n  ).map(([key, value]) => {\n    const yaml = key.endsWith('.yaml');\n    return [key.slice(14, yaml ? -5 : -4), value.default];\n  }),\n);\n\nexport const i18n = createI18n({\n  legacy: false,\n  locale: 'en',\n  messages,\n});\n\nexport const install: UserModule = ({ app }) => {\n  app.use(i18n);\n};\n","/*!\n * pinia v2.1.7\n * (c) 2023 Eduardo San Martin Morote\n * @license MIT\n */\nimport { hasInjectionContext, inject, toRaw, watch, unref, markRaw, effectScope, ref, isVue2, isRef, isReactive, set, getCurrentScope, onScopeDispose, getCurrentInstance, reactive, toRef, del, nextTick, computed, toRefs } from 'vue-demi';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\n/**\n * setActivePinia must be called to handle SSR at the top of functions like\n * `fetch`, `setup`, `serverPrefetch` and others\n */\nlet activePinia;\n/**\n * Sets or unsets the active pinia. Used in SSR and internally when calling\n * actions and getters\n *\n * @param pinia - Pinia instance\n */\n// @ts-expect-error: cannot constrain the type of the return\nconst setActivePinia = (pinia) => (activePinia = pinia);\n/**\n * Get the currently active pinia if there is any.\n */\nconst getActivePinia = () => (hasInjectionContext() && inject(piniaSymbol)) || activePinia;\nconst piniaSymbol = ((process.env.NODE_ENV !== 'production') ? Symbol('pinia') : /* istanbul ignore next */ Symbol());\n\nfunction isPlainObject(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\no) {\n    return (o &&\n        typeof o === 'object' &&\n        Object.prototype.toString.call(o) === '[object Object]' &&\n        typeof o.toJSON !== 'function');\n}\n// type DeepReadonly<T> = { readonly [P in keyof T]: DeepReadonly<T[P]> }\n// TODO: can we change these to numbers?\n/**\n * Possible types for SubscriptionCallback\n */\nvar MutationType;\n(function (MutationType) {\n    /**\n     * Direct mutation of the state:\n     *\n     * - `store.name = 'new name'`\n     * - `store.$state.name = 'new name'`\n     * - `store.list.push('new item')`\n     */\n    MutationType[\"direct\"] = \"direct\";\n    /**\n     * Mutated the state with `$patch` and an object\n     *\n     * - `store.$patch({ name: 'newName' })`\n     */\n    MutationType[\"patchObject\"] = \"patch object\";\n    /**\n     * Mutated the state with `$patch` and a function\n     *\n     * - `store.$patch(state => state.name = 'newName')`\n     */\n    MutationType[\"patchFunction\"] = \"patch function\";\n    // maybe reset? for $state = {} and $reset\n})(MutationType || (MutationType = {}));\n\nconst IS_CLIENT = typeof window !== 'undefined';\n/**\n * Should we add the devtools plugins.\n * - only if dev mode or forced through the prod devtools flag\n * - not in test\n * - only if window exists (could change in the future)\n */\nconst USE_DEVTOOLS = ((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test') && IS_CLIENT;\n\n/*\n * FileSaver.js A saveAs() FileSaver implementation.\n *\n * Originally by Eli Grey, adapted as an ESM module by Eduardo San Martin\n * Morote.\n *\n * License : MIT\n */\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nconst _global = /*#__PURE__*/ (() => typeof window === 'object' && window.window === window\n    ? window\n    : typeof self === 'object' && self.self === self\n        ? self\n        : typeof global === 'object' && global.global === global\n            ? global\n            : typeof globalThis === 'object'\n                ? globalThis\n                : { HTMLElement: null })();\nfunction bom(blob, { autoBom = false } = {}) {\n    // prepend BOM for UTF-8 XML and text/* types (including HTML)\n    // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n    if (autoBom &&\n        /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n        return new Blob([String.fromCharCode(0xfeff), blob], { type: blob.type });\n    }\n    return blob;\n}\nfunction download(url, name, opts) {\n    const xhr = new XMLHttpRequest();\n    xhr.open('GET', url);\n    xhr.responseType = 'blob';\n    xhr.onload = function () {\n        saveAs(xhr.response, name, opts);\n    };\n    xhr.onerror = function () {\n        console.error('could not download file');\n    };\n    xhr.send();\n}\nfunction corsEnabled(url) {\n    const xhr = new XMLHttpRequest();\n    // use sync to avoid popup blocker\n    xhr.open('HEAD', url, false);\n    try {\n        xhr.send();\n    }\n    catch (e) { }\n    return xhr.status >= 200 && xhr.status <= 299;\n}\n// `a.click()` doesn't work for all browsers (#465)\nfunction click(node) {\n    try {\n        node.dispatchEvent(new MouseEvent('click'));\n    }\n    catch (e) {\n        const evt = document.createEvent('MouseEvents');\n        evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);\n        node.dispatchEvent(evt);\n    }\n}\nconst _navigator = \n typeof navigator === 'object' ? navigator : { userAgent: '' };\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nconst isMacOSWebView = /*#__PURE__*/ (() => /Macintosh/.test(_navigator.userAgent) &&\n    /AppleWebKit/.test(_navigator.userAgent) &&\n    !/Safari/.test(_navigator.userAgent))();\nconst saveAs = !IS_CLIENT\n    ? () => { } // noop\n    : // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView or mini program\n        typeof HTMLAnchorElement !== 'undefined' &&\n            'download' in HTMLAnchorElement.prototype &&\n            !isMacOSWebView\n            ? downloadSaveAs\n            : // Use msSaveOrOpenBlob as a second approach\n                'msSaveOrOpenBlob' in _navigator\n                    ? msSaveAs\n                    : // Fallback to using FileReader and a popup\n                        fileSaverSaveAs;\nfunction downloadSaveAs(blob, name = 'download', opts) {\n    const a = document.createElement('a');\n    a.download = name;\n    a.rel = 'noopener'; // tabnabbing\n    // TODO: detect chrome extensions & packaged apps\n    // a.target = '_blank'\n    if (typeof blob === 'string') {\n        // Support regular links\n        a.href = blob;\n        if (a.origin !== location.origin) {\n            if (corsEnabled(a.href)) {\n                download(blob, name, opts);\n            }\n            else {\n                a.target = '_blank';\n                click(a);\n            }\n        }\n        else {\n            click(a);\n        }\n    }\n    else {\n        // Support blobs\n        a.href = URL.createObjectURL(blob);\n        setTimeout(function () {\n            URL.revokeObjectURL(a.href);\n        }, 4e4); // 40s\n        setTimeout(function () {\n            click(a);\n        }, 0);\n    }\n}\nfunction msSaveAs(blob, name = 'download', opts) {\n    if (typeof blob === 'string') {\n        if (corsEnabled(blob)) {\n            download(blob, name, opts);\n        }\n        else {\n            const a = document.createElement('a');\n            a.href = blob;\n            a.target = '_blank';\n            setTimeout(function () {\n                click(a);\n            });\n        }\n    }\n    else {\n        // @ts-ignore: works on windows\n        navigator.msSaveOrOpenBlob(bom(blob, opts), name);\n    }\n}\nfunction fileSaverSaveAs(blob, name, opts, popup) {\n    // Open a popup immediately do go around popup blocker\n    // Mostly only available on user interaction and the fileReader is async so...\n    popup = popup || open('', '_blank');\n    if (popup) {\n        popup.document.title = popup.document.body.innerText = 'downloading...';\n    }\n    if (typeof blob === 'string')\n        return download(blob, name, opts);\n    const force = blob.type === 'application/octet-stream';\n    const isSafari = /constructor/i.test(String(_global.HTMLElement)) || 'safari' in _global;\n    const isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent);\n    if ((isChromeIOS || (force && isSafari) || isMacOSWebView) &&\n        typeof FileReader !== 'undefined') {\n        // Safari doesn't allow downloading of blob URLs\n        const reader = new FileReader();\n        reader.onloadend = function () {\n            let url = reader.result;\n            if (typeof url !== 'string') {\n                popup = null;\n                throw new Error('Wrong reader.result type');\n            }\n            url = isChromeIOS\n                ? url\n                : url.replace(/^data:[^;]*;/, 'data:attachment/file;');\n            if (popup) {\n                popup.location.href = url;\n            }\n            else {\n                location.assign(url);\n            }\n            popup = null; // reverse-tabnabbing #460\n        };\n        reader.readAsDataURL(blob);\n    }\n    else {\n        const url = URL.createObjectURL(blob);\n        if (popup)\n            popup.location.assign(url);\n        else\n            location.href = url;\n        popup = null; // reverse-tabnabbing #460\n        setTimeout(function () {\n            URL.revokeObjectURL(url);\n        }, 4e4); // 40s\n    }\n}\n\n/**\n * Shows a toast or console.log\n *\n * @param message - message to log\n * @param type - different color of the tooltip\n */\nfunction toastMessage(message, type) {\n    const piniaMessage = '🍍 ' + message;\n    if (typeof __VUE_DEVTOOLS_TOAST__ === 'function') {\n        // No longer available :(\n        __VUE_DEVTOOLS_TOAST__(piniaMessage, type);\n    }\n    else if (type === 'error') {\n        console.error(piniaMessage);\n    }\n    else if (type === 'warn') {\n        console.warn(piniaMessage);\n    }\n    else {\n        console.log(piniaMessage);\n    }\n}\nfunction isPinia(o) {\n    return '_a' in o && 'install' in o;\n}\n\n/**\n * This file contain devtools actions, they are not Pinia actions.\n */\n// ---\nfunction checkClipboardAccess() {\n    if (!('clipboard' in navigator)) {\n        toastMessage(`Your browser doesn't support the Clipboard API`, 'error');\n        return true;\n    }\n}\nfunction checkNotFocusedError(error) {\n    if (error instanceof Error &&\n        error.message.toLowerCase().includes('document is not focused')) {\n        toastMessage('You need to activate the \"Emulate a focused page\" setting in the \"Rendering\" panel of devtools.', 'warn');\n        return true;\n    }\n    return false;\n}\nasync function actionGlobalCopyState(pinia) {\n    if (checkClipboardAccess())\n        return;\n    try {\n        await navigator.clipboard.writeText(JSON.stringify(pinia.state.value));\n        toastMessage('Global state copied to clipboard.');\n    }\n    catch (error) {\n        if (checkNotFocusedError(error))\n            return;\n        toastMessage(`Failed to serialize the state. Check the console for more details.`, 'error');\n        console.error(error);\n    }\n}\nasync function actionGlobalPasteState(pinia) {\n    if (checkClipboardAccess())\n        return;\n    try {\n        loadStoresState(pinia, JSON.parse(await navigator.clipboard.readText()));\n        toastMessage('Global state pasted from clipboard.');\n    }\n    catch (error) {\n        if (checkNotFocusedError(error))\n            return;\n        toastMessage(`Failed to deserialize the state from clipboard. Check the console for more details.`, 'error');\n        console.error(error);\n    }\n}\nasync function actionGlobalSaveState(pinia) {\n    try {\n        saveAs(new Blob([JSON.stringify(pinia.state.value)], {\n            type: 'text/plain;charset=utf-8',\n        }), 'pinia-state.json');\n    }\n    catch (error) {\n        toastMessage(`Failed to export the state as JSON. Check the console for more details.`, 'error');\n        console.error(error);\n    }\n}\nlet fileInput;\nfunction getFileOpener() {\n    if (!fileInput) {\n        fileInput = document.createElement('input');\n        fileInput.type = 'file';\n        fileInput.accept = '.json';\n    }\n    function openFile() {\n        return new Promise((resolve, reject) => {\n            fileInput.onchange = async () => {\n                const files = fileInput.files;\n                if (!files)\n                    return resolve(null);\n                const file = files.item(0);\n                if (!file)\n                    return resolve(null);\n                return resolve({ text: await file.text(), file });\n            };\n            // @ts-ignore: TODO: changed from 4.3 to 4.4\n            fileInput.oncancel = () => resolve(null);\n            fileInput.onerror = reject;\n            fileInput.click();\n        });\n    }\n    return openFile;\n}\nasync function actionGlobalOpenStateFile(pinia) {\n    try {\n        const open = getFileOpener();\n        const result = await open();\n        if (!result)\n            return;\n        const { text, file } = result;\n        loadStoresState(pinia, JSON.parse(text));\n        toastMessage(`Global state imported from \"${file.name}\".`);\n    }\n    catch (error) {\n        toastMessage(`Failed to import the state from JSON. Check the console for more details.`, 'error');\n        console.error(error);\n    }\n}\nfunction loadStoresState(pinia, state) {\n    for (const key in state) {\n        const storeState = pinia.state.value[key];\n        // store is already instantiated, patch it\n        if (storeState) {\n            Object.assign(storeState, state[key]);\n        }\n        else {\n            // store is not instantiated, set the initial state\n            pinia.state.value[key] = state[key];\n        }\n    }\n}\n\nfunction formatDisplay(display) {\n    return {\n        _custom: {\n            display,\n        },\n    };\n}\nconst PINIA_ROOT_LABEL = '🍍 Pinia (root)';\nconst PINIA_ROOT_ID = '_root';\nfunction formatStoreForInspectorTree(store) {\n    return isPinia(store)\n        ? {\n            id: PINIA_ROOT_ID,\n            label: PINIA_ROOT_LABEL,\n        }\n        : {\n            id: store.$id,\n            label: store.$id,\n        };\n}\nfunction formatStoreForInspectorState(store) {\n    if (isPinia(store)) {\n        const storeNames = Array.from(store._s.keys());\n        const storeMap = store._s;\n        const state = {\n            state: storeNames.map((storeId) => ({\n                editable: true,\n                key: storeId,\n                value: store.state.value[storeId],\n            })),\n            getters: storeNames\n                .filter((id) => storeMap.get(id)._getters)\n                .map((id) => {\n                const store = storeMap.get(id);\n                return {\n                    editable: false,\n                    key: id,\n                    value: store._getters.reduce((getters, key) => {\n                        getters[key] = store[key];\n                        return getters;\n                    }, {}),\n                };\n            }),\n        };\n        return state;\n    }\n    const state = {\n        state: Object.keys(store.$state).map((key) => ({\n            editable: true,\n            key,\n            value: store.$state[key],\n        })),\n    };\n    // avoid adding empty getters\n    if (store._getters && store._getters.length) {\n        state.getters = store._getters.map((getterName) => ({\n            editable: false,\n            key: getterName,\n            value: store[getterName],\n        }));\n    }\n    if (store._customProperties.size) {\n        state.customProperties = Array.from(store._customProperties).map((key) => ({\n            editable: true,\n            key,\n            value: store[key],\n        }));\n    }\n    return state;\n}\nfunction formatEventData(events) {\n    if (!events)\n        return {};\n    if (Array.isArray(events)) {\n        // TODO: handle add and delete for arrays and objects\n        return events.reduce((data, event) => {\n            data.keys.push(event.key);\n            data.operations.push(event.type);\n            data.oldValue[event.key] = event.oldValue;\n            data.newValue[event.key] = event.newValue;\n            return data;\n        }, {\n            oldValue: {},\n            keys: [],\n            operations: [],\n            newValue: {},\n        });\n    }\n    else {\n        return {\n            operation: formatDisplay(events.type),\n            key: formatDisplay(events.key),\n            oldValue: events.oldValue,\n            newValue: events.newValue,\n        };\n    }\n}\nfunction formatMutationType(type) {\n    switch (type) {\n        case MutationType.direct:\n            return 'mutation';\n        case MutationType.patchFunction:\n            return '$patch';\n        case MutationType.patchObject:\n            return '$patch';\n        default:\n            return 'unknown';\n    }\n}\n\n// timeline can be paused when directly changing the state\nlet isTimelineActive = true;\nconst componentStateTypes = [];\nconst MUTATIONS_LAYER_ID = 'pinia:mutations';\nconst INSPECTOR_ID = 'pinia';\nconst { assign: assign$1 } = Object;\n/**\n * Gets the displayed name of a store in devtools\n *\n * @param id - id of the store\n * @returns a formatted string\n */\nconst getStoreType = (id) => '🍍 ' + id;\n/**\n * Add the pinia plugin without any store. Allows displaying a Pinia plugin tab\n * as soon as it is added to the application.\n *\n * @param app - Vue application\n * @param pinia - pinia instance\n */\nfunction registerPiniaDevtools(app, pinia) {\n    setupDevtoolsPlugin({\n        id: 'dev.esm.pinia',\n        label: 'Pinia 🍍',\n        logo: 'https://pinia.vuejs.org/logo.svg',\n        packageName: 'pinia',\n        homepage: 'https://pinia.vuejs.org',\n        componentStateTypes,\n        app,\n    }, (api) => {\n        if (typeof api.now !== 'function') {\n            toastMessage('You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\n        }\n        api.addTimelineLayer({\n            id: MUTATIONS_LAYER_ID,\n            label: `Pinia 🍍`,\n            color: 0xe5df88,\n        });\n        api.addInspector({\n            id: INSPECTOR_ID,\n            label: 'Pinia 🍍',\n            icon: 'storage',\n            treeFilterPlaceholder: 'Search stores',\n            actions: [\n                {\n                    icon: 'content_copy',\n                    action: () => {\n                        actionGlobalCopyState(pinia);\n                    },\n                    tooltip: 'Serialize and copy the state',\n                },\n                {\n                    icon: 'content_paste',\n                    action: async () => {\n                        await actionGlobalPasteState(pinia);\n                        api.sendInspectorTree(INSPECTOR_ID);\n                        api.sendInspectorState(INSPECTOR_ID);\n                    },\n                    tooltip: 'Replace the state with the content of your clipboard',\n                },\n                {\n                    icon: 'save',\n                    action: () => {\n                        actionGlobalSaveState(pinia);\n                    },\n                    tooltip: 'Save the state as a JSON file',\n                },\n                {\n                    icon: 'folder_open',\n                    action: async () => {\n                        await actionGlobalOpenStateFile(pinia);\n                        api.sendInspectorTree(INSPECTOR_ID);\n                        api.sendInspectorState(INSPECTOR_ID);\n                    },\n                    tooltip: 'Import the state from a JSON file',\n                },\n            ],\n            nodeActions: [\n                {\n                    icon: 'restore',\n                    tooltip: 'Reset the state (with \"$reset\")',\n                    action: (nodeId) => {\n                        const store = pinia._s.get(nodeId);\n                        if (!store) {\n                            toastMessage(`Cannot reset \"${nodeId}\" store because it wasn't found.`, 'warn');\n                        }\n                        else if (typeof store.$reset !== 'function') {\n                            toastMessage(`Cannot reset \"${nodeId}\" store because it doesn't have a \"$reset\" method implemented.`, 'warn');\n                        }\n                        else {\n                            store.$reset();\n                            toastMessage(`Store \"${nodeId}\" reset.`);\n                        }\n                    },\n                },\n            ],\n        });\n        api.on.inspectComponent((payload, ctx) => {\n            const proxy = (payload.componentInstance &&\n                payload.componentInstance.proxy);\n            if (proxy && proxy._pStores) {\n                const piniaStores = payload.componentInstance.proxy._pStores;\n                Object.values(piniaStores).forEach((store) => {\n                    payload.instanceData.state.push({\n                        type: getStoreType(store.$id),\n                        key: 'state',\n                        editable: true,\n                        value: store._isOptionsAPI\n                            ? {\n                                _custom: {\n                                    value: toRaw(store.$state),\n                                    actions: [\n                                        {\n                                            icon: 'restore',\n                                            tooltip: 'Reset the state of this store',\n                                            action: () => store.$reset(),\n                                        },\n                                    ],\n                                },\n                            }\n                            : // NOTE: workaround to unwrap transferred refs\n                                Object.keys(store.$state).reduce((state, key) => {\n                                    state[key] = store.$state[key];\n                                    return state;\n                                }, {}),\n                    });\n                    if (store._getters && store._getters.length) {\n                        payload.instanceData.state.push({\n                            type: getStoreType(store.$id),\n                            key: 'getters',\n                            editable: false,\n                            value: store._getters.reduce((getters, key) => {\n                                try {\n                                    getters[key] = store[key];\n                                }\n                                catch (error) {\n                                    // @ts-expect-error: we just want to show it in devtools\n                                    getters[key] = error;\n                                }\n                                return getters;\n                            }, {}),\n                        });\n                    }\n                });\n            }\n        });\n        api.on.getInspectorTree((payload) => {\n            if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n                let stores = [pinia];\n                stores = stores.concat(Array.from(pinia._s.values()));\n                payload.rootNodes = (payload.filter\n                    ? stores.filter((store) => '$id' in store\n                        ? store.$id\n                            .toLowerCase()\n                            .includes(payload.filter.toLowerCase())\n                        : PINIA_ROOT_LABEL.toLowerCase().includes(payload.filter.toLowerCase()))\n                    : stores).map(formatStoreForInspectorTree);\n            }\n        });\n        api.on.getInspectorState((payload) => {\n            if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n                const inspectedStore = payload.nodeId === PINIA_ROOT_ID\n                    ? pinia\n                    : pinia._s.get(payload.nodeId);\n                if (!inspectedStore) {\n                    // this could be the selected store restored for a different project\n                    // so it's better not to say anything here\n                    return;\n                }\n                if (inspectedStore) {\n                    payload.state = formatStoreForInspectorState(inspectedStore);\n                }\n            }\n        });\n        api.on.editInspectorState((payload, ctx) => {\n            if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n                const inspectedStore = payload.nodeId === PINIA_ROOT_ID\n                    ? pinia\n                    : pinia._s.get(payload.nodeId);\n                if (!inspectedStore) {\n                    return toastMessage(`store \"${payload.nodeId}\" not found`, 'error');\n                }\n                const { path } = payload;\n                if (!isPinia(inspectedStore)) {\n                    // access only the state\n                    if (path.length !== 1 ||\n                        !inspectedStore._customProperties.has(path[0]) ||\n                        path[0] in inspectedStore.$state) {\n                        path.unshift('$state');\n                    }\n                }\n                else {\n                    // Root access, we can omit the `.value` because the devtools API does it for us\n                    path.unshift('state');\n                }\n                isTimelineActive = false;\n                payload.set(inspectedStore, path, payload.state.value);\n                isTimelineActive = true;\n            }\n        });\n        api.on.editComponentState((payload) => {\n            if (payload.type.startsWith('🍍')) {\n                const storeId = payload.type.replace(/^🍍\\s*/, '');\n                const store = pinia._s.get(storeId);\n                if (!store) {\n                    return toastMessage(`store \"${storeId}\" not found`, 'error');\n                }\n                const { path } = payload;\n                if (path[0] !== 'state') {\n                    return toastMessage(`Invalid path for store \"${storeId}\":\\n${path}\\nOnly state can be modified.`);\n                }\n                // rewrite the first entry to be able to directly set the state as\n                // well as any other path\n                path[0] = '$state';\n                isTimelineActive = false;\n                payload.set(store, path, payload.state.value);\n                isTimelineActive = true;\n            }\n        });\n    });\n}\nfunction addStoreToDevtools(app, store) {\n    if (!componentStateTypes.includes(getStoreType(store.$id))) {\n        componentStateTypes.push(getStoreType(store.$id));\n    }\n    setupDevtoolsPlugin({\n        id: 'dev.esm.pinia',\n        label: 'Pinia 🍍',\n        logo: 'https://pinia.vuejs.org/logo.svg',\n        packageName: 'pinia',\n        homepage: 'https://pinia.vuejs.org',\n        componentStateTypes,\n        app,\n        settings: {\n            logStoreChanges: {\n                label: 'Notify about new/deleted stores',\n                type: 'boolean',\n                defaultValue: true,\n            },\n            // useEmojis: {\n            //   label: 'Use emojis in messages ⚡️',\n            //   type: 'boolean',\n            //   defaultValue: true,\n            // },\n        },\n    }, (api) => {\n        // gracefully handle errors\n        const now = typeof api.now === 'function' ? api.now.bind(api) : Date.now;\n        store.$onAction(({ after, onError, name, args }) => {\n            const groupId = runningActionId++;\n            api.addTimelineEvent({\n                layerId: MUTATIONS_LAYER_ID,\n                event: {\n                    time: now(),\n                    title: '🛫 ' + name,\n                    subtitle: 'start',\n                    data: {\n                        store: formatDisplay(store.$id),\n                        action: formatDisplay(name),\n                        args,\n                    },\n                    groupId,\n                },\n            });\n            after((result) => {\n                activeAction = undefined;\n                api.addTimelineEvent({\n                    layerId: MUTATIONS_LAYER_ID,\n                    event: {\n                        time: now(),\n                        title: '🛬 ' + name,\n                        subtitle: 'end',\n                        data: {\n                            store: formatDisplay(store.$id),\n                            action: formatDisplay(name),\n                            args,\n                            result,\n                        },\n                        groupId,\n                    },\n                });\n            });\n            onError((error) => {\n                activeAction = undefined;\n                api.addTimelineEvent({\n                    layerId: MUTATIONS_LAYER_ID,\n                    event: {\n                        time: now(),\n                        logType: 'error',\n                        title: '💥 ' + name,\n                        subtitle: 'end',\n                        data: {\n                            store: formatDisplay(store.$id),\n                            action: formatDisplay(name),\n                            args,\n                            error,\n                        },\n                        groupId,\n                    },\n                });\n            });\n        }, true);\n        store._customProperties.forEach((name) => {\n            watch(() => unref(store[name]), (newValue, oldValue) => {\n                api.notifyComponentUpdate();\n                api.sendInspectorState(INSPECTOR_ID);\n                if (isTimelineActive) {\n                    api.addTimelineEvent({\n                        layerId: MUTATIONS_LAYER_ID,\n                        event: {\n                            time: now(),\n                            title: 'Change',\n                            subtitle: name,\n                            data: {\n                                newValue,\n                                oldValue,\n                            },\n                            groupId: activeAction,\n                        },\n                    });\n                }\n            }, { deep: true });\n        });\n        store.$subscribe(({ events, type }, state) => {\n            api.notifyComponentUpdate();\n            api.sendInspectorState(INSPECTOR_ID);\n            if (!isTimelineActive)\n                return;\n            // rootStore.state[store.id] = state\n            const eventData = {\n                time: now(),\n                title: formatMutationType(type),\n                data: assign$1({ store: formatDisplay(store.$id) }, formatEventData(events)),\n                groupId: activeAction,\n            };\n            if (type === MutationType.patchFunction) {\n                eventData.subtitle = '⤵️';\n            }\n            else if (type === MutationType.patchObject) {\n                eventData.subtitle = '🧩';\n            }\n            else if (events && !Array.isArray(events)) {\n                eventData.subtitle = events.type;\n            }\n            if (events) {\n                eventData.data['rawEvent(s)'] = {\n                    _custom: {\n                        display: 'DebuggerEvent',\n                        type: 'object',\n                        tooltip: 'raw DebuggerEvent[]',\n                        value: events,\n                    },\n                };\n            }\n            api.addTimelineEvent({\n                layerId: MUTATIONS_LAYER_ID,\n                event: eventData,\n            });\n        }, { detached: true, flush: 'sync' });\n        const hotUpdate = store._hotUpdate;\n        store._hotUpdate = markRaw((newStore) => {\n            hotUpdate(newStore);\n            api.addTimelineEvent({\n                layerId: MUTATIONS_LAYER_ID,\n                event: {\n                    time: now(),\n                    title: '🔥 ' + store.$id,\n                    subtitle: 'HMR update',\n                    data: {\n                        store: formatDisplay(store.$id),\n                        info: formatDisplay(`HMR update`),\n                    },\n                },\n            });\n            // update the devtools too\n            api.notifyComponentUpdate();\n            api.sendInspectorTree(INSPECTOR_ID);\n            api.sendInspectorState(INSPECTOR_ID);\n        });\n        const { $dispose } = store;\n        store.$dispose = () => {\n            $dispose();\n            api.notifyComponentUpdate();\n            api.sendInspectorTree(INSPECTOR_ID);\n            api.sendInspectorState(INSPECTOR_ID);\n            api.getSettings().logStoreChanges &&\n                toastMessage(`Disposed \"${store.$id}\" store 🗑`);\n        };\n        // trigger an update so it can display new registered stores\n        api.notifyComponentUpdate();\n        api.sendInspectorTree(INSPECTOR_ID);\n        api.sendInspectorState(INSPECTOR_ID);\n        api.getSettings().logStoreChanges &&\n            toastMessage(`\"${store.$id}\" store installed 🆕`);\n    });\n}\nlet runningActionId = 0;\nlet activeAction;\n/**\n * Patches a store to enable action grouping in devtools by wrapping the store with a Proxy that is passed as the\n * context of all actions, allowing us to set `runningAction` on each access and effectively associating any state\n * mutation to the action.\n *\n * @param store - store to patch\n * @param actionNames - list of actionst to patch\n */\nfunction patchActionForGrouping(store, actionNames, wrapWithProxy) {\n    // original actions of the store as they are given by pinia. We are going to override them\n    const actions = actionNames.reduce((storeActions, actionName) => {\n        // use toRaw to avoid tracking #541\n        storeActions[actionName] = toRaw(store)[actionName];\n        return storeActions;\n    }, {});\n    for (const actionName in actions) {\n        store[actionName] = function () {\n            // the running action id is incremented in a before action hook\n            const _actionId = runningActionId;\n            const trackedStore = wrapWithProxy\n                ? new Proxy(store, {\n                    get(...args) {\n                        activeAction = _actionId;\n                        return Reflect.get(...args);\n                    },\n                    set(...args) {\n                        activeAction = _actionId;\n                        return Reflect.set(...args);\n                    },\n                })\n                : store;\n            // For Setup Stores we need https://github.com/tc39/proposal-async-context\n            activeAction = _actionId;\n            const retValue = actions[actionName].apply(trackedStore, arguments);\n            // this is safer as async actions in Setup Stores would associate mutations done outside of the action\n            activeAction = undefined;\n            return retValue;\n        };\n    }\n}\n/**\n * pinia.use(devtoolsPlugin)\n */\nfunction devtoolsPlugin({ app, store, options }) {\n    // HMR module\n    if (store.$id.startsWith('__hot:')) {\n        return;\n    }\n    // detect option api vs setup api\n    store._isOptionsAPI = !!options.state;\n    patchActionForGrouping(store, Object.keys(options.actions), store._isOptionsAPI);\n    // Upgrade the HMR to also update the new actions\n    const originalHotUpdate = store._hotUpdate;\n    toRaw(store)._hotUpdate = function (newStore) {\n        originalHotUpdate.apply(this, arguments);\n        patchActionForGrouping(store, Object.keys(newStore._hmrPayload.actions), !!store._isOptionsAPI);\n    };\n    addStoreToDevtools(app, \n    // FIXME: is there a way to allow the assignment from Store<Id, S, G, A> to StoreGeneric?\n    store);\n}\n\n/**\n * Creates a Pinia instance to be used by the application\n */\nfunction createPinia() {\n    const scope = effectScope(true);\n    // NOTE: here we could check the window object for a state and directly set it\n    // if there is anything like it with Vue 3 SSR\n    const state = scope.run(() => ref({}));\n    let _p = [];\n    // plugins added before calling app.use(pinia)\n    let toBeInstalled = [];\n    const pinia = markRaw({\n        install(app) {\n            // this allows calling useStore() outside of a component setup after\n            // installing pinia's plugin\n            setActivePinia(pinia);\n            if (!isVue2) {\n                pinia._a = app;\n                app.provide(piniaSymbol, pinia);\n                app.config.globalProperties.$pinia = pinia;\n                /* istanbul ignore else */\n                if (USE_DEVTOOLS) {\n                    registerPiniaDevtools(app, pinia);\n                }\n                toBeInstalled.forEach((plugin) => _p.push(plugin));\n                toBeInstalled = [];\n            }\n        },\n        use(plugin) {\n            if (!this._a && !isVue2) {\n                toBeInstalled.push(plugin);\n            }\n            else {\n                _p.push(plugin);\n            }\n            return this;\n        },\n        _p,\n        // it's actually undefined here\n        // @ts-expect-error\n        _a: null,\n        _e: scope,\n        _s: new Map(),\n        state,\n    });\n    // pinia devtools rely on dev only features so they cannot be forced unless\n    // the dev build of Vue is used. Avoid old browsers like IE11.\n    if (USE_DEVTOOLS && typeof Proxy !== 'undefined') {\n        pinia.use(devtoolsPlugin);\n    }\n    return pinia;\n}\n\n/**\n * Checks if a function is a `StoreDefinition`.\n *\n * @param fn - object to test\n * @returns true if `fn` is a StoreDefinition\n */\nconst isUseStore = (fn) => {\n    return typeof fn === 'function' && typeof fn.$id === 'string';\n};\n/**\n * Mutates in place `newState` with `oldState` to _hot update_ it. It will\n * remove any key not existing in `newState` and recursively merge plain\n * objects.\n *\n * @param newState - new state object to be patched\n * @param oldState - old state that should be used to patch newState\n * @returns - newState\n */\nfunction patchObject(newState, oldState) {\n    // no need to go through symbols because they cannot be serialized anyway\n    for (const key in oldState) {\n        const subPatch = oldState[key];\n        // skip the whole sub tree\n        if (!(key in newState)) {\n            continue;\n        }\n        const targetValue = newState[key];\n        if (isPlainObject(targetValue) &&\n            isPlainObject(subPatch) &&\n            !isRef(subPatch) &&\n            !isReactive(subPatch)) {\n            newState[key] = patchObject(targetValue, subPatch);\n        }\n        else {\n            // objects are either a bit more complex (e.g. refs) or primitives, so we\n            // just set the whole thing\n            if (isVue2) {\n                set(newState, key, subPatch);\n            }\n            else {\n                newState[key] = subPatch;\n            }\n        }\n    }\n    return newState;\n}\n/**\n * Creates an _accept_ function to pass to `import.meta.hot` in Vite applications.\n *\n * @example\n * ```js\n * const useUser = defineStore(...)\n * if (import.meta.hot) {\n *   import.meta.hot.accept(acceptHMRUpdate(useUser, import.meta.hot))\n * }\n * ```\n *\n * @param initialUseStore - return of the defineStore to hot update\n * @param hot - `import.meta.hot`\n */\nfunction acceptHMRUpdate(initialUseStore, hot) {\n    // strip as much as possible from iife.prod\n    if (!(process.env.NODE_ENV !== 'production')) {\n        return () => { };\n    }\n    return (newModule) => {\n        const pinia = hot.data.pinia || initialUseStore._pinia;\n        if (!pinia) {\n            // this store is still not used\n            return;\n        }\n        // preserve the pinia instance across loads\n        hot.data.pinia = pinia;\n        // console.log('got data', newStore)\n        for (const exportName in newModule) {\n            const useStore = newModule[exportName];\n            // console.log('checking for', exportName)\n            if (isUseStore(useStore) && pinia._s.has(useStore.$id)) {\n                // console.log('Accepting update for', useStore.$id)\n                const id = useStore.$id;\n                if (id !== initialUseStore.$id) {\n                    console.warn(`The id of the store changed from \"${initialUseStore.$id}\" to \"${id}\". Reloading.`);\n                    // return import.meta.hot.invalidate()\n                    return hot.invalidate();\n                }\n                const existingStore = pinia._s.get(id);\n                if (!existingStore) {\n                    console.log(`[Pinia]: skipping hmr because store doesn't exist yet`);\n                    return;\n                }\n                useStore(pinia, existingStore);\n            }\n        }\n    };\n}\n\nconst noop = () => { };\nfunction addSubscription(subscriptions, callback, detached, onCleanup = noop) {\n    subscriptions.push(callback);\n    const removeSubscription = () => {\n        const idx = subscriptions.indexOf(callback);\n        if (idx > -1) {\n            subscriptions.splice(idx, 1);\n            onCleanup();\n        }\n    };\n    if (!detached && getCurrentScope()) {\n        onScopeDispose(removeSubscription);\n    }\n    return removeSubscription;\n}\nfunction triggerSubscriptions(subscriptions, ...args) {\n    subscriptions.slice().forEach((callback) => {\n        callback(...args);\n    });\n}\n\nconst fallbackRunWithContext = (fn) => fn();\nfunction mergeReactiveObjects(target, patchToApply) {\n    // Handle Map instances\n    if (target instanceof Map && patchToApply instanceof Map) {\n        patchToApply.forEach((value, key) => target.set(key, value));\n    }\n    // Handle Set instances\n    if (target instanceof Set && patchToApply instanceof Set) {\n        patchToApply.forEach(target.add, target);\n    }\n    // no need to go through symbols because they cannot be serialized anyway\n    for (const key in patchToApply) {\n        if (!patchToApply.hasOwnProperty(key))\n            continue;\n        const subPatch = patchToApply[key];\n        const targetValue = target[key];\n        if (isPlainObject(targetValue) &&\n            isPlainObject(subPatch) &&\n            target.hasOwnProperty(key) &&\n            !isRef(subPatch) &&\n            !isReactive(subPatch)) {\n            // NOTE: here I wanted to warn about inconsistent types but it's not possible because in setup stores one might\n            // start the value of a property as a certain type e.g. a Map, and then for some reason, during SSR, change that\n            // to `undefined`. When trying to hydrate, we want to override the Map with `undefined`.\n            target[key] = mergeReactiveObjects(targetValue, subPatch);\n        }\n        else {\n            // @ts-expect-error: subPatch is a valid value\n            target[key] = subPatch;\n        }\n    }\n    return target;\n}\nconst skipHydrateSymbol = (process.env.NODE_ENV !== 'production')\n    ? Symbol('pinia:skipHydration')\n    : /* istanbul ignore next */ Symbol();\nconst skipHydrateMap = /*#__PURE__*/ new WeakMap();\n/**\n * Tells Pinia to skip the hydration process of a given object. This is useful in setup stores (only) when you return a\n * stateful object in the store but it isn't really state. e.g. returning a router instance in a setup store.\n *\n * @param obj - target object\n * @returns obj\n */\nfunction skipHydrate(obj) {\n    return isVue2\n        ? // in @vue/composition-api, the refs are sealed so defineProperty doesn't work...\n            /* istanbul ignore next */ skipHydrateMap.set(obj, 1) && obj\n        : Object.defineProperty(obj, skipHydrateSymbol, {});\n}\n/**\n * Returns whether a value should be hydrated\n *\n * @param obj - target variable\n * @returns true if `obj` should be hydrated\n */\nfunction shouldHydrate(obj) {\n    return isVue2\n        ? /* istanbul ignore next */ !skipHydrateMap.has(obj)\n        : !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol);\n}\nconst { assign } = Object;\nfunction isComputed(o) {\n    return !!(isRef(o) && o.effect);\n}\nfunction createOptionsStore(id, options, pinia, hot) {\n    const { state, actions, getters } = options;\n    const initialState = pinia.state.value[id];\n    let store;\n    function setup() {\n        if (!initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\n            /* istanbul ignore if */\n            if (isVue2) {\n                set(pinia.state.value, id, state ? state() : {});\n            }\n            else {\n                pinia.state.value[id] = state ? state() : {};\n            }\n        }\n        // avoid creating a state in pinia.state.value\n        const localState = (process.env.NODE_ENV !== 'production') && hot\n            ? // use ref() to unwrap refs inside state TODO: check if this is still necessary\n                toRefs(ref(state ? state() : {}).value)\n            : toRefs(pinia.state.value[id]);\n        return assign(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name) => {\n            if ((process.env.NODE_ENV !== 'production') && name in localState) {\n                console.warn(`[🍍]: A getter cannot have the same name as another state property. Rename one of them. Found with \"${name}\" in store \"${id}\".`);\n            }\n            computedGetters[name] = markRaw(computed(() => {\n                setActivePinia(pinia);\n                // it was created just before\n                const store = pinia._s.get(id);\n                // allow cross using stores\n                /* istanbul ignore next */\n                if (isVue2 && !store._r)\n                    return;\n                // @ts-expect-error\n                // return getters![name].call(context, context)\n                // TODO: avoid reading the getter while assigning with a global variable\n                return getters[name].call(store, store);\n            }));\n            return computedGetters;\n        }, {}));\n    }\n    store = createSetupStore(id, setup, options, pinia, hot, true);\n    return store;\n}\nfunction createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore) {\n    let scope;\n    const optionsForPlugin = assign({ actions: {} }, options);\n    /* istanbul ignore if */\n    if ((process.env.NODE_ENV !== 'production') && !pinia._e.active) {\n        throw new Error('Pinia destroyed');\n    }\n    // watcher options for $subscribe\n    const $subscribeOptions = {\n        deep: true,\n        // flush: 'post',\n    };\n    /* istanbul ignore else */\n    if ((process.env.NODE_ENV !== 'production') && !isVue2) {\n        $subscribeOptions.onTrigger = (event) => {\n            /* istanbul ignore else */\n            if (isListening) {\n                debuggerEvents = event;\n                // avoid triggering this while the store is being built and the state is being set in pinia\n            }\n            else if (isListening == false && !store._hotUpdating) {\n                // let patch send all the events together later\n                /* istanbul ignore else */\n                if (Array.isArray(debuggerEvents)) {\n                    debuggerEvents.push(event);\n                }\n                else {\n                    console.error('🍍 debuggerEvents should be an array. This is most likely an internal Pinia bug.');\n                }\n            }\n        };\n    }\n    // internal state\n    let isListening; // set to true at the end\n    let isSyncListening; // set to true at the end\n    let subscriptions = [];\n    let actionSubscriptions = [];\n    let debuggerEvents;\n    const initialState = pinia.state.value[$id];\n    // avoid setting the state for option stores if it is set\n    // by the setup\n    if (!isOptionsStore && !initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\n        /* istanbul ignore if */\n        if (isVue2) {\n            set(pinia.state.value, $id, {});\n        }\n        else {\n            pinia.state.value[$id] = {};\n        }\n    }\n    const hotState = ref({});\n    // avoid triggering too many listeners\n    // https://github.com/vuejs/pinia/issues/1129\n    let activeListener;\n    function $patch(partialStateOrMutator) {\n        let subscriptionMutation;\n        isListening = isSyncListening = false;\n        // reset the debugger events since patches are sync\n        /* istanbul ignore else */\n        if ((process.env.NODE_ENV !== 'production')) {\n            debuggerEvents = [];\n        }\n        if (typeof partialStateOrMutator === 'function') {\n            partialStateOrMutator(pinia.state.value[$id]);\n            subscriptionMutation = {\n                type: MutationType.patchFunction,\n                storeId: $id,\n                events: debuggerEvents,\n            };\n        }\n        else {\n            mergeReactiveObjects(pinia.state.value[$id], partialStateOrMutator);\n            subscriptionMutation = {\n                type: MutationType.patchObject,\n                payload: partialStateOrMutator,\n                storeId: $id,\n                events: debuggerEvents,\n            };\n        }\n        const myListenerId = (activeListener = Symbol());\n        nextTick().then(() => {\n            if (activeListener === myListenerId) {\n                isListening = true;\n            }\n        });\n        isSyncListening = true;\n        // because we paused the watcher, we need to manually call the subscriptions\n        triggerSubscriptions(subscriptions, subscriptionMutation, pinia.state.value[$id]);\n    }\n    const $reset = isOptionsStore\n        ? function $reset() {\n            const { state } = options;\n            const newState = state ? state() : {};\n            // we use a patch to group all changes into one single subscription\n            this.$patch(($state) => {\n                assign($state, newState);\n            });\n        }\n        : /* istanbul ignore next */\n            (process.env.NODE_ENV !== 'production')\n                ? () => {\n                    throw new Error(`🍍: Store \"${$id}\" is built using the setup syntax and does not implement $reset().`);\n                }\n                : noop;\n    function $dispose() {\n        scope.stop();\n        subscriptions = [];\n        actionSubscriptions = [];\n        pinia._s.delete($id);\n    }\n    /**\n     * Wraps an action to handle subscriptions.\n     *\n     * @param name - name of the action\n     * @param action - action to wrap\n     * @returns a wrapped action to handle subscriptions\n     */\n    function wrapAction(name, action) {\n        return function () {\n            setActivePinia(pinia);\n            const args = Array.from(arguments);\n            const afterCallbackList = [];\n            const onErrorCallbackList = [];\n            function after(callback) {\n                afterCallbackList.push(callback);\n            }\n            function onError(callback) {\n                onErrorCallbackList.push(callback);\n            }\n            // @ts-expect-error\n            triggerSubscriptions(actionSubscriptions, {\n                args,\n                name,\n                store,\n                after,\n                onError,\n            });\n            let ret;\n            try {\n                ret = action.apply(this && this.$id === $id ? this : store, args);\n                // handle sync errors\n            }\n            catch (error) {\n                triggerSubscriptions(onErrorCallbackList, error);\n                throw error;\n            }\n            if (ret instanceof Promise) {\n                return ret\n                    .then((value) => {\n                    triggerSubscriptions(afterCallbackList, value);\n                    return value;\n                })\n                    .catch((error) => {\n                    triggerSubscriptions(onErrorCallbackList, error);\n                    return Promise.reject(error);\n                });\n            }\n            // trigger after callbacks\n            triggerSubscriptions(afterCallbackList, ret);\n            return ret;\n        };\n    }\n    const _hmrPayload = /*#__PURE__*/ markRaw({\n        actions: {},\n        getters: {},\n        state: [],\n        hotState,\n    });\n    const partialStore = {\n        _p: pinia,\n        // _s: scope,\n        $id,\n        $onAction: addSubscription.bind(null, actionSubscriptions),\n        $patch,\n        $reset,\n        $subscribe(callback, options = {}) {\n            const removeSubscription = addSubscription(subscriptions, callback, options.detached, () => stopWatcher());\n            const stopWatcher = scope.run(() => watch(() => pinia.state.value[$id], (state) => {\n                if (options.flush === 'sync' ? isSyncListening : isListening) {\n                    callback({\n                        storeId: $id,\n                        type: MutationType.direct,\n                        events: debuggerEvents,\n                    }, state);\n                }\n            }, assign({}, $subscribeOptions, options)));\n            return removeSubscription;\n        },\n        $dispose,\n    };\n    /* istanbul ignore if */\n    if (isVue2) {\n        // start as non ready\n        partialStore._r = false;\n    }\n    const store = reactive((process.env.NODE_ENV !== 'production') || USE_DEVTOOLS\n        ? assign({\n            _hmrPayload,\n            _customProperties: markRaw(new Set()), // devtools custom properties\n        }, partialStore\n        // must be added later\n        // setupStore\n        )\n        : partialStore);\n    // store the partial store now so the setup of stores can instantiate each other before they are finished without\n    // creating infinite loops.\n    pinia._s.set($id, store);\n    const runWithContext = (pinia._a && pinia._a.runWithContext) || fallbackRunWithContext;\n    // TODO: idea create skipSerialize that marks properties as non serializable and they are skipped\n    const setupStore = runWithContext(() => pinia._e.run(() => (scope = effectScope()).run(setup)));\n    // overwrite existing actions to support $onAction\n    for (const key in setupStore) {\n        const prop = setupStore[key];\n        if ((isRef(prop) && !isComputed(prop)) || isReactive(prop)) {\n            // mark it as a piece of state to be serialized\n            if ((process.env.NODE_ENV !== 'production') && hot) {\n                set(hotState.value, key, toRef(setupStore, key));\n                // createOptionStore directly sets the state in pinia.state.value so we\n                // can just skip that\n            }\n            else if (!isOptionsStore) {\n                // in setup stores we must hydrate the state and sync pinia state tree with the refs the user just created\n                if (initialState && shouldHydrate(prop)) {\n                    if (isRef(prop)) {\n                        prop.value = initialState[key];\n                    }\n                    else {\n                        // probably a reactive object, lets recursively assign\n                        // @ts-expect-error: prop is unknown\n                        mergeReactiveObjects(prop, initialState[key]);\n                    }\n                }\n                // transfer the ref to the pinia state to keep everything in sync\n                /* istanbul ignore if */\n                if (isVue2) {\n                    set(pinia.state.value[$id], key, prop);\n                }\n                else {\n                    pinia.state.value[$id][key] = prop;\n                }\n            }\n            /* istanbul ignore else */\n            if ((process.env.NODE_ENV !== 'production')) {\n                _hmrPayload.state.push(key);\n            }\n            // action\n        }\n        else if (typeof prop === 'function') {\n            // @ts-expect-error: we are overriding the function we avoid wrapping if\n            const actionValue = (process.env.NODE_ENV !== 'production') && hot ? prop : wrapAction(key, prop);\n            // this a hot module replacement store because the hotUpdate method needs\n            // to do it with the right context\n            /* istanbul ignore if */\n            if (isVue2) {\n                set(setupStore, key, actionValue);\n            }\n            else {\n                // @ts-expect-error\n                setupStore[key] = actionValue;\n            }\n            /* istanbul ignore else */\n            if ((process.env.NODE_ENV !== 'production')) {\n                _hmrPayload.actions[key] = prop;\n            }\n            // list actions so they can be used in plugins\n            // @ts-expect-error\n            optionsForPlugin.actions[key] = prop;\n        }\n        else if ((process.env.NODE_ENV !== 'production')) {\n            // add getters for devtools\n            if (isComputed(prop)) {\n                _hmrPayload.getters[key] = isOptionsStore\n                    ? // @ts-expect-error\n                        options.getters[key]\n                    : prop;\n                if (IS_CLIENT) {\n                    const getters = setupStore._getters ||\n                        // @ts-expect-error: same\n                        (setupStore._getters = markRaw([]));\n                    getters.push(key);\n                }\n            }\n        }\n    }\n    // add the state, getters, and action properties\n    /* istanbul ignore if */\n    if (isVue2) {\n        Object.keys(setupStore).forEach((key) => {\n            set(store, key, setupStore[key]);\n        });\n    }\n    else {\n        assign(store, setupStore);\n        // allows retrieving reactive objects with `storeToRefs()`. Must be called after assigning to the reactive object.\n        // Make `storeToRefs()` work with `reactive()` #799\n        assign(toRaw(store), setupStore);\n    }\n    // use this instead of a computed with setter to be able to create it anywhere\n    // without linking the computed lifespan to wherever the store is first\n    // created.\n    Object.defineProperty(store, '$state', {\n        get: () => ((process.env.NODE_ENV !== 'production') && hot ? hotState.value : pinia.state.value[$id]),\n        set: (state) => {\n            /* istanbul ignore if */\n            if ((process.env.NODE_ENV !== 'production') && hot) {\n                throw new Error('cannot set hotState');\n            }\n            $patch(($state) => {\n                assign($state, state);\n            });\n        },\n    });\n    // add the hotUpdate before plugins to allow them to override it\n    /* istanbul ignore else */\n    if ((process.env.NODE_ENV !== 'production')) {\n        store._hotUpdate = markRaw((newStore) => {\n            store._hotUpdating = true;\n            newStore._hmrPayload.state.forEach((stateKey) => {\n                if (stateKey in store.$state) {\n                    const newStateTarget = newStore.$state[stateKey];\n                    const oldStateSource = store.$state[stateKey];\n                    if (typeof newStateTarget === 'object' &&\n                        isPlainObject(newStateTarget) &&\n                        isPlainObject(oldStateSource)) {\n                        patchObject(newStateTarget, oldStateSource);\n                    }\n                    else {\n                        // transfer the ref\n                        newStore.$state[stateKey] = oldStateSource;\n                    }\n                }\n                // patch direct access properties to allow store.stateProperty to work as\n                // store.$state.stateProperty\n                set(store, stateKey, toRef(newStore.$state, stateKey));\n            });\n            // remove deleted state properties\n            Object.keys(store.$state).forEach((stateKey) => {\n                if (!(stateKey in newStore.$state)) {\n                    del(store, stateKey);\n                }\n            });\n            // avoid devtools logging this as a mutation\n            isListening = false;\n            isSyncListening = false;\n            pinia.state.value[$id] = toRef(newStore._hmrPayload, 'hotState');\n            isSyncListening = true;\n            nextTick().then(() => {\n                isListening = true;\n            });\n            for (const actionName in newStore._hmrPayload.actions) {\n                const action = newStore[actionName];\n                set(store, actionName, wrapAction(actionName, action));\n            }\n            // TODO: does this work in both setup and option store?\n            for (const getterName in newStore._hmrPayload.getters) {\n                const getter = newStore._hmrPayload.getters[getterName];\n                const getterValue = isOptionsStore\n                    ? // special handling of options api\n                        computed(() => {\n                            setActivePinia(pinia);\n                            return getter.call(store, store);\n                        })\n                    : getter;\n                set(store, getterName, getterValue);\n            }\n            // remove deleted getters\n            Object.keys(store._hmrPayload.getters).forEach((key) => {\n                if (!(key in newStore._hmrPayload.getters)) {\n                    del(store, key);\n                }\n            });\n            // remove old actions\n            Object.keys(store._hmrPayload.actions).forEach((key) => {\n                if (!(key in newStore._hmrPayload.actions)) {\n                    del(store, key);\n                }\n            });\n            // update the values used in devtools and to allow deleting new properties later on\n            store._hmrPayload = newStore._hmrPayload;\n            store._getters = newStore._getters;\n            store._hotUpdating = false;\n        });\n    }\n    if (USE_DEVTOOLS) {\n        const nonEnumerable = {\n            writable: true,\n            configurable: true,\n            // avoid warning on devtools trying to display this property\n            enumerable: false,\n        };\n        ['_p', '_hmrPayload', '_getters', '_customProperties'].forEach((p) => {\n            Object.defineProperty(store, p, assign({ value: store[p] }, nonEnumerable));\n        });\n    }\n    /* istanbul ignore if */\n    if (isVue2) {\n        // mark the store as ready before plugins\n        store._r = true;\n    }\n    // apply all plugins\n    pinia._p.forEach((extender) => {\n        /* istanbul ignore else */\n        if (USE_DEVTOOLS) {\n            const extensions = scope.run(() => extender({\n                store,\n                app: pinia._a,\n                pinia,\n                options: optionsForPlugin,\n            }));\n            Object.keys(extensions || {}).forEach((key) => store._customProperties.add(key));\n            assign(store, extensions);\n        }\n        else {\n            assign(store, scope.run(() => extender({\n                store,\n                app: pinia._a,\n                pinia,\n                options: optionsForPlugin,\n            })));\n        }\n    });\n    if ((process.env.NODE_ENV !== 'production') &&\n        store.$state &&\n        typeof store.$state === 'object' &&\n        typeof store.$state.constructor === 'function' &&\n        !store.$state.constructor.toString().includes('[native code]')) {\n        console.warn(`[🍍]: The \"state\" must be a plain object. It cannot be\\n` +\n            `\\tstate: () => new MyClass()\\n` +\n            `Found in store \"${store.$id}\".`);\n    }\n    // only apply hydrate to option stores with an initial state in pinia\n    if (initialState &&\n        isOptionsStore &&\n        options.hydrate) {\n        options.hydrate(store.$state, initialState);\n    }\n    isListening = true;\n    isSyncListening = true;\n    return store;\n}\nfunction defineStore(\n// TODO: add proper types from above\nidOrOptions, setup, setupOptions) {\n    let id;\n    let options;\n    const isSetupStore = typeof setup === 'function';\n    if (typeof idOrOptions === 'string') {\n        id = idOrOptions;\n        // the option store setup will contain the actual options in this case\n        options = isSetupStore ? setupOptions : setup;\n    }\n    else {\n        options = idOrOptions;\n        id = idOrOptions.id;\n        if ((process.env.NODE_ENV !== 'production') && typeof id !== 'string') {\n            throw new Error(`[🍍]: \"defineStore()\" must be passed a store id as its first argument.`);\n        }\n    }\n    function useStore(pinia, hot) {\n        const hasContext = hasInjectionContext();\n        pinia =\n            // in test mode, ignore the argument provided as we can always retrieve a\n            // pinia instance with getActivePinia()\n            ((process.env.NODE_ENV === 'test') && activePinia && activePinia._testing ? null : pinia) ||\n                (hasContext ? inject(piniaSymbol, null) : null);\n        if (pinia)\n            setActivePinia(pinia);\n        if ((process.env.NODE_ENV !== 'production') && !activePinia) {\n            throw new Error(`[🍍]: \"getActivePinia()\" was called but there was no active Pinia. Are you trying to use a store before calling \"app.use(pinia)\"?\\n` +\n                `See https://pinia.vuejs.org/core-concepts/outside-component-usage.html for help.\\n` +\n                `This will fail in production.`);\n        }\n        pinia = activePinia;\n        if (!pinia._s.has(id)) {\n            // creating the store registers it in `pinia._s`\n            if (isSetupStore) {\n                createSetupStore(id, setup, options, pinia);\n            }\n            else {\n                createOptionsStore(id, options, pinia);\n            }\n            /* istanbul ignore else */\n            if ((process.env.NODE_ENV !== 'production')) {\n                // @ts-expect-error: not the right inferred type\n                useStore._pinia = pinia;\n            }\n        }\n        const store = pinia._s.get(id);\n        if ((process.env.NODE_ENV !== 'production') && hot) {\n            const hotId = '__hot:' + id;\n            const newStore = isSetupStore\n                ? createSetupStore(hotId, setup, options, pinia, true)\n                : createOptionsStore(hotId, assign({}, options), pinia, true);\n            hot._hotUpdate(newStore);\n            // cleanup the state properties and the store from the cache\n            delete pinia.state.value[hotId];\n            pinia._s.delete(hotId);\n        }\n        if ((process.env.NODE_ENV !== 'production') && IS_CLIENT) {\n            const currentInstance = getCurrentInstance();\n            // save stores in instances to access them devtools\n            if (currentInstance &&\n                currentInstance.proxy &&\n                // avoid adding stores that are just built for hot module replacement\n                !hot) {\n                const vm = currentInstance.proxy;\n                const cache = '_pStores' in vm ? vm._pStores : (vm._pStores = {});\n                cache[id] = store;\n            }\n        }\n        // StoreGeneric cannot be casted towards Store\n        return store;\n    }\n    useStore.$id = id;\n    return useStore;\n}\n\nlet mapStoreSuffix = 'Store';\n/**\n * Changes the suffix added by `mapStores()`. Can be set to an empty string.\n * Defaults to `\"Store\"`. Make sure to extend the MapStoresCustomization\n * interface if you are using TypeScript.\n *\n * @param suffix - new suffix\n */\nfunction setMapStoreSuffix(suffix // could be 'Store' but that would be annoying for JS\n) {\n    mapStoreSuffix = suffix;\n}\n/**\n * Allows using stores without the composition API (`setup()`) by generating an\n * object to be spread in the `computed` field of a component. It accepts a list\n * of store definitions.\n *\n * @example\n * ```js\n * export default {\n *   computed: {\n *     // other computed properties\n *     ...mapStores(useUserStore, useCartStore)\n *   },\n *\n *   created() {\n *     this.userStore // store with id \"user\"\n *     this.cartStore // store with id \"cart\"\n *   }\n * }\n * ```\n *\n * @param stores - list of stores to map to an object\n */\nfunction mapStores(...stores) {\n    if ((process.env.NODE_ENV !== 'production') && Array.isArray(stores[0])) {\n        console.warn(`[🍍]: Directly pass all stores to \"mapStores()\" without putting them in an array:\\n` +\n            `Replace\\n` +\n            `\\tmapStores([useAuthStore, useCartStore])\\n` +\n            `with\\n` +\n            `\\tmapStores(useAuthStore, useCartStore)\\n` +\n            `This will fail in production if not fixed.`);\n        stores = stores[0];\n    }\n    return stores.reduce((reduced, useStore) => {\n        // @ts-expect-error: $id is added by defineStore\n        reduced[useStore.$id + mapStoreSuffix] = function () {\n            return useStore(this.$pinia);\n        };\n        return reduced;\n    }, {});\n}\n/**\n * Allows using state and getters from one store without using the composition\n * API (`setup()`) by generating an object to be spread in the `computed` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapState(useStore, keysOrMapper) {\n    return Array.isArray(keysOrMapper)\n        ? keysOrMapper.reduce((reduced, key) => {\n            reduced[key] = function () {\n                return useStore(this.$pinia)[key];\n            };\n            return reduced;\n        }, {})\n        : Object.keys(keysOrMapper).reduce((reduced, key) => {\n            // @ts-expect-error\n            reduced[key] = function () {\n                const store = useStore(this.$pinia);\n                const storeKey = keysOrMapper[key];\n                // for some reason TS is unable to infer the type of storeKey to be a\n                // function\n                return typeof storeKey === 'function'\n                    ? storeKey.call(this, store)\n                    : store[storeKey];\n            };\n            return reduced;\n        }, {});\n}\n/**\n * Alias for `mapState()`. You should use `mapState()` instead.\n * @deprecated use `mapState()` instead.\n */\nconst mapGetters = mapState;\n/**\n * Allows directly using actions from your store without using the composition\n * API (`setup()`) by generating an object to be spread in the `methods` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapActions(useStore, keysOrMapper) {\n    return Array.isArray(keysOrMapper)\n        ? keysOrMapper.reduce((reduced, key) => {\n            // @ts-expect-error\n            reduced[key] = function (...args) {\n                return useStore(this.$pinia)[key](...args);\n            };\n            return reduced;\n        }, {})\n        : Object.keys(keysOrMapper).reduce((reduced, key) => {\n            // @ts-expect-error\n            reduced[key] = function (...args) {\n                return useStore(this.$pinia)[keysOrMapper[key]](...args);\n            };\n            return reduced;\n        }, {});\n}\n/**\n * Allows using state and getters from one store without using the composition\n * API (`setup()`) by generating an object to be spread in the `computed` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapWritableState(useStore, keysOrMapper) {\n    return Array.isArray(keysOrMapper)\n        ? keysOrMapper.reduce((reduced, key) => {\n            // @ts-ignore\n            reduced[key] = {\n                get() {\n                    return useStore(this.$pinia)[key];\n                },\n                set(value) {\n                    // it's easier to type it here as any\n                    return (useStore(this.$pinia)[key] = value);\n                },\n            };\n            return reduced;\n        }, {})\n        : Object.keys(keysOrMapper).reduce((reduced, key) => {\n            // @ts-ignore\n            reduced[key] = {\n                get() {\n                    return useStore(this.$pinia)[keysOrMapper[key]];\n                },\n                set(value) {\n                    // it's easier to type it here as any\n                    return (useStore(this.$pinia)[keysOrMapper[key]] = value);\n                },\n            };\n            return reduced;\n        }, {});\n}\n\n/**\n * Creates an object of references with all the state, getters, and plugin-added\n * state properties of the store. Similar to `toRefs()` but specifically\n * designed for Pinia stores so methods and non reactive properties are\n * completely ignored.\n *\n * @param store - store to extract the refs from\n */\nfunction storeToRefs(store) {\n    // See https://github.com/vuejs/pinia/issues/852\n    // It's easier to just use toRefs() even if it includes more stuff\n    if (isVue2) {\n        // @ts-expect-error: toRefs include methods and others\n        return toRefs(store);\n    }\n    else {\n        store = toRaw(store);\n        const refs = {};\n        for (const key in store) {\n            const value = store[key];\n            if (isRef(value) || isReactive(value)) {\n                // @ts-expect-error: the key is state or getter\n                refs[key] =\n                    // ---\n                    toRef(store, key);\n            }\n        }\n        return refs;\n    }\n}\n\n/**\n * Vue 2 Plugin that must be installed for pinia to work. Note **you don't need\n * this plugin if you are using Nuxt.js**. Use the `buildModule` instead:\n * https://pinia.vuejs.org/ssr/nuxt.html.\n *\n * @example\n * ```js\n * import Vue from 'vue'\n * import { PiniaVuePlugin, createPinia } from 'pinia'\n *\n * Vue.use(PiniaVuePlugin)\n * const pinia = createPinia()\n *\n * new Vue({\n *   el: '#app',\n *   // ...\n *   pinia,\n * })\n * ```\n *\n * @param _Vue - `Vue` imported from 'vue'.\n */\nconst PiniaVuePlugin = function (_Vue) {\n    // Equivalent of\n    // app.config.globalProperties.$pinia = pinia\n    _Vue.mixin({\n        beforeCreate() {\n            const options = this.$options;\n            if (options.pinia) {\n                const pinia = options.pinia;\n                // HACK: taken from provide(): https://github.com/vuejs/composition-api/blob/main/src/apis/inject.ts#L31\n                /* istanbul ignore else */\n                if (!this._provided) {\n                    const provideCache = {};\n                    Object.defineProperty(this, '_provided', {\n                        get: () => provideCache,\n                        set: (v) => Object.assign(provideCache, v),\n                    });\n                }\n                this._provided[piniaSymbol] = pinia;\n                // propagate the pinia instance in an SSR friendly way\n                // avoid adding it to nuxt twice\n                /* istanbul ignore else */\n                if (!this.$pinia) {\n                    this.$pinia = pinia;\n                }\n                pinia._a = this;\n                if (IS_CLIENT) {\n                    // this allows calling useStore() outside of a component setup after\n                    // installing pinia's plugin\n                    setActivePinia(pinia);\n                }\n                if (USE_DEVTOOLS) {\n                    registerPiniaDevtools(pinia._a, pinia);\n                }\n            }\n            else if (!this.$pinia && options.parent && options.parent.$pinia) {\n                this.$pinia = options.parent.$pinia;\n            }\n        },\n        destroyed() {\n            delete this._pStores;\n        },\n    });\n};\n\nexport { MutationType, PiniaVuePlugin, acceptHMRUpdate, createPinia, defineStore, getActivePinia, mapActions, mapGetters, mapState, mapStores, mapWritableState, setActivePinia, setMapStoreSuffix, skipHydrate, storeToRefs };\n","import { createPinia } from 'pinia';\nimport type { UserModule } from './user-module-type';\n\n// Setup Pinia\n// https://pinia.vuejs.org/\nexport const install: UserModule = ({ isClient, initialState, app }) => {\n  const pinia = createPinia();\n  app.use(pinia);\n  // Refer to\n  // https://github.com/antfu/vite-ssg/blob/main/README.md#state-serialization\n  // for other serialization strategies.\n  if (isClient) pinia.state.value = initialState.pinia || {};\n  else initialState.pinia = pinia.state.value;\n};\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n  return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n  const lr = ['left', 'right'];\n  const rl = ['right', 'left'];\n  const tb = ['top', 'bottom'];\n  const bt = ['bottom', 'top'];\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rl : lr;\n      return isStart ? lr : rl;\n    case 'left':\n    case 'right':\n      return isStart ? tb : bt;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  return {\n    ...rect,\n    top: rect.y,\n    left: rect.x,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    ...rects.floating,\n    x,\n    y\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          // Try next placement and re-run the lifecycle.\n          return {\n            data: {\n              index: nextIndex,\n              overflows: overflowsData\n            },\n            reset: {\n              placement: nextPlacement\n            }\n          };\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$map$so;\n                const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: 0,\n    crossAxis: 0,\n    alignmentAxis: null,\n    ...rawValue\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = ['top', 'left'].includes(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const overflowAvailableHeight = height - overflow[heightSide];\n      const overflowAvailableWidth = width - overflow[widthSide];\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if (isYAxis) {\n        const maximumClippingWidth = width - overflow.left - overflow.right;\n        availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n      } else {\n        const maximumClippingHeight = height - overflow.top - overflow.bottom;\n        availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import{rectToClientRect as t,computePosition as e}from\"@floating-ui/core\";export{arrow,autoPlacement,detectOverflow,flip,hide,inline,limitShift,offset,shift,size}from\"@floating-ui/core\";function n(t){var e;return(null==(e=t.ownerDocument)?void 0:e.defaultView)||window}function o(t){return n(t).getComputedStyle(t)}const i=Math.min,r=Math.max,l=Math.round;function c(t){const e=o(t);let n=parseFloat(e.width),i=parseFloat(e.height);const r=t.offsetWidth,c=t.offsetHeight,s=l(n)!==r||l(i)!==c;return s&&(n=r,i=c),{width:n,height:i,fallback:s}}function s(t){return h(t)?(t.nodeName||\"\").toLowerCase():\"\"}let f;function u(){if(f)return f;const t=navigator.userAgentData;return t&&Array.isArray(t.brands)?(f=t.brands.map((t=>t.brand+\"/\"+t.version)).join(\" \"),f):navigator.userAgent}function a(t){return t instanceof n(t).HTMLElement}function d(t){return t instanceof n(t).Element}function h(t){return t instanceof n(t).Node}function p(t){if(\"undefined\"==typeof ShadowRoot)return!1;return t instanceof n(t).ShadowRoot||t instanceof ShadowRoot}function g(t){const{overflow:e,overflowX:n,overflowY:i,display:r}=o(t);return/auto|scroll|overlay|hidden|clip/.test(e+i+n)&&![\"inline\",\"contents\"].includes(r)}function m(t){return[\"table\",\"td\",\"th\"].includes(s(t))}function y(t){const e=/firefox/i.test(u()),n=o(t),i=n.backdropFilter||n.WebkitBackdropFilter;return\"none\"!==n.transform||\"none\"!==n.perspective||!!i&&\"none\"!==i||e&&\"filter\"===n.willChange||e&&!!n.filter&&\"none\"!==n.filter||[\"transform\",\"perspective\"].some((t=>n.willChange.includes(t)))||[\"paint\",\"layout\",\"strict\",\"content\"].some((t=>{const e=n.contain;return null!=e&&e.includes(t)}))}function x(){return!/^((?!chrome|android).)*safari/i.test(u())}function w(t){return[\"html\",\"body\",\"#document\"].includes(s(t))}function v(t){return d(t)?t:t.contextElement}const b={x:1,y:1};function L(t){const e=v(t);if(!a(e))return b;const n=e.getBoundingClientRect(),{width:o,height:i,fallback:r}=c(e);let s=(r?l(n.width):n.width)/o,f=(r?l(n.height):n.height)/i;return s&&Number.isFinite(s)||(s=1),f&&Number.isFinite(f)||(f=1),{x:s,y:f}}function E(t,e,o,i){var r,l;void 0===e&&(e=!1),void 0===o&&(o=!1);const c=t.getBoundingClientRect(),s=v(t);let f=b;e&&(i?d(i)&&(f=L(i)):f=L(t));const u=s?n(s):window,a=!x()&&o;let h=(c.left+(a&&(null==(r=u.visualViewport)?void 0:r.offsetLeft)||0))/f.x,p=(c.top+(a&&(null==(l=u.visualViewport)?void 0:l.offsetTop)||0))/f.y,g=c.width/f.x,m=c.height/f.y;if(s){const t=n(s),e=i&&d(i)?n(i):i;let o=t.frameElement;for(;o&&i&&e!==t;){const t=L(o),e=o.getBoundingClientRect(),i=getComputedStyle(o);e.x+=(o.clientLeft+parseFloat(i.paddingLeft))*t.x,e.y+=(o.clientTop+parseFloat(i.paddingTop))*t.y,h*=t.x,p*=t.y,g*=t.x,m*=t.y,h+=e.x,p+=e.y,o=n(o).frameElement}}return{width:g,height:m,top:p,right:h+g,bottom:p+m,left:h,x:h,y:p}}function R(t){return((h(t)?t.ownerDocument:t.document)||window.document).documentElement}function T(t){return d(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function C(t){return E(R(t)).left+T(t).scrollLeft}function F(t){if(\"html\"===s(t))return t;const e=t.assignedSlot||t.parentNode||p(t)&&t.host||R(t);return p(e)?e.host:e}function W(t){const e=F(t);return w(e)?e.ownerDocument.body:a(e)&&g(e)?e:W(e)}function D(t,e){var o;void 0===e&&(e=[]);const i=W(t),r=i===(null==(o=t.ownerDocument)?void 0:o.body),l=n(i);return r?e.concat(l,l.visualViewport||[],g(i)?i:[]):e.concat(i,D(i))}function S(e,i,l){return\"viewport\"===i?t(function(t,e){const o=n(t),i=R(t),r=o.visualViewport;let l=i.clientWidth,c=i.clientHeight,s=0,f=0;if(r){l=r.width,c=r.height;const t=x();(t||!t&&\"fixed\"===e)&&(s=r.offsetLeft,f=r.offsetTop)}return{width:l,height:c,x:s,y:f}}(e,l)):d(i)?t(function(t,e){const n=E(t,!0,\"fixed\"===e),o=n.top+t.clientTop,i=n.left+t.clientLeft,r=a(t)?L(t):{x:1,y:1};return{width:t.clientWidth*r.x,height:t.clientHeight*r.y,x:i*r.x,y:o*r.y}}(i,l)):t(function(t){const e=R(t),n=T(t),i=t.ownerDocument.body,l=r(e.scrollWidth,e.clientWidth,i.scrollWidth,i.clientWidth),c=r(e.scrollHeight,e.clientHeight,i.scrollHeight,i.clientHeight);let s=-n.scrollLeft+C(t);const f=-n.scrollTop;return\"rtl\"===o(i).direction&&(s+=r(e.clientWidth,i.clientWidth)-l),{width:l,height:c,x:s,y:f}}(R(e)))}function A(t){return a(t)&&\"fixed\"!==o(t).position?t.offsetParent:null}function H(t){const e=n(t);let i=A(t);for(;i&&m(i)&&\"static\"===o(i).position;)i=A(i);return i&&(\"html\"===s(i)||\"body\"===s(i)&&\"static\"===o(i).position&&!y(i))?e:i||function(t){let e=F(t);for(;a(e)&&!w(e);){if(y(e))return e;e=F(e)}return null}(t)||e}function O(t,e,n){const o=a(e),i=R(e),r=E(t,!0,\"fixed\"===n,e);let l={scrollLeft:0,scrollTop:0};const c={x:0,y:0};if(o||!o&&\"fixed\"!==n)if((\"body\"!==s(e)||g(i))&&(l=T(e)),a(e)){const t=E(e,!0);c.x=t.x+e.clientLeft,c.y=t.y+e.clientTop}else i&&(c.x=C(i));return{x:r.left+l.scrollLeft-c.x,y:r.top+l.scrollTop-c.y,width:r.width,height:r.height}}const P={getClippingRect:function(t){let{element:e,boundary:n,rootBoundary:l,strategy:c}=t;const f=\"clippingAncestors\"===n?function(t,e){const n=e.get(t);if(n)return n;let i=D(t).filter((t=>d(t)&&\"body\"!==s(t))),r=null;const l=\"fixed\"===o(t).position;let c=l?F(t):t;for(;d(c)&&!w(c);){const t=o(c),e=y(c);(l?e||r:e||\"static\"!==t.position||!r||![\"absolute\",\"fixed\"].includes(r.position))?r=t:i=i.filter((t=>t!==c)),c=F(c)}return e.set(t,i),i}(e,this._c):[].concat(n),u=[...f,l],a=u[0],h=u.reduce(((t,n)=>{const o=S(e,n,c);return t.top=r(o.top,t.top),t.right=i(o.right,t.right),t.bottom=i(o.bottom,t.bottom),t.left=r(o.left,t.left),t}),S(e,a,c));return{width:h.right-h.left,height:h.bottom-h.top,x:h.left,y:h.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(t){let{rect:e,offsetParent:n,strategy:o}=t;const i=a(n),r=R(n);if(n===r)return e;let l={scrollLeft:0,scrollTop:0},c={x:1,y:1};const f={x:0,y:0};if((i||!i&&\"fixed\"!==o)&&((\"body\"!==s(n)||g(r))&&(l=T(n)),a(n))){const t=E(n);c=L(n),f.x=t.x+n.clientLeft,f.y=t.y+n.clientTop}return{width:e.width*c.x,height:e.height*c.y,x:e.x*c.x-l.scrollLeft*c.x+f.x,y:e.y*c.y-l.scrollTop*c.y+f.y}},isElement:d,getDimensions:function(t){return a(t)?c(t):t.getBoundingClientRect()},getOffsetParent:H,getDocumentElement:R,getScale:L,async getElementRects(t){let{reference:e,floating:n,strategy:o}=t;const i=this.getOffsetParent||H,r=this.getDimensions;return{reference:O(e,await i(n),o),floating:{x:0,y:0,...await r(n)}}},getClientRects:t=>Array.from(t.getClientRects()),isRTL:t=>\"rtl\"===o(t).direction};function z(t,e,n,o){void 0===o&&(o={});const{ancestorScroll:i=!0,ancestorResize:r=!0,elementResize:l=!0,animationFrame:c=!1}=o,s=i&&!c,f=s||r?[...d(t)?D(t):t.contextElement?D(t.contextElement):[],...D(e)]:[];f.forEach((t=>{s&&t.addEventListener(\"scroll\",n,{passive:!0}),r&&t.addEventListener(\"resize\",n)}));let u,a=null;if(l){let o=!0;a=new ResizeObserver((()=>{o||n(),o=!1})),d(t)&&!c&&a.observe(t),d(t)||!t.contextElement||c||a.observe(t.contextElement),a.observe(e)}let h=c?E(t):null;return c&&function e(){const o=E(t);!h||o.x===h.x&&o.y===h.y&&o.width===h.width&&o.height===h.height||n();h=o,u=requestAnimationFrame(e)}(),n(),()=>{var t;f.forEach((t=>{s&&t.removeEventListener(\"scroll\",n),r&&t.removeEventListener(\"resize\",n)})),null==(t=a)||t.disconnect(),a=null,c&&cancelAnimationFrame(u)}}const B=(t,n,o)=>{const i=new Map,r={platform:P,...o},l={...r.platform,_c:i};return e(t,n,{...r,platform:l})};export{z as autoUpdate,B as computePosition,D as getOverflowAncestors,P as platform};\n","import { defineComponent as O, openBlock as f, createElementBlock as T, normalizeClass as J, renderSlot as A, normalizeProps as ke, guardReactiveProps as Le, pushScopeId as De, popScopeId as Ie, nextTick as Fe, createBlock as M, withScopeId as Re, resolveComponent as P, normalizeStyle as W, withKeys as je, createElementVNode as w, Fragment as Ve, createCommentVNode as se, mergeProps as $e, withCtx as N, createVNode as ve, toDisplayString as We, ref as U, createApp as Ge, h as qe } from \"vue\";\nimport { offset as xe, autoPlacement as Ue, shift as Ye, flip as Xe, arrow as Ke, size as Je, computePosition as Qe, getOverflowAncestors as ne } from \"@floating-ui/dom\";\nfunction ye(e, t) {\n  for (const o in t)\n    Object.prototype.hasOwnProperty.call(t, o) && (typeof t[o] == \"object\" && e[o] ? ye(e[o], t[o]) : e[o] = t[o]);\n}\nconst h = {\n  // Disable popper components\n  disabled: !1,\n  // Default position offset along main axis (px)\n  distance: 5,\n  // Default position offset along cross axis (px)\n  skidding: 0,\n  // Default container where the tooltip will be appended\n  container: \"body\",\n  // Element used to compute position and size boundaries\n  boundary: void 0,\n  // Skip delay & CSS transitions when another popper is shown, so that the popper appear to instanly move to the new position.\n  instantMove: !1,\n  // Auto destroy tooltip DOM nodes (ms)\n  disposeTimeout: 150,\n  // Triggers on the popper itself\n  popperTriggers: [],\n  // Positioning strategy\n  strategy: \"absolute\",\n  // Prevent overflow\n  preventOverflow: !0,\n  // Flip to the opposite placement if needed\n  flip: !0,\n  // Shift on the cross axis to prevent the popper from overflowing\n  shift: !0,\n  // Overflow padding (px)\n  overflowPadding: 0,\n  // Arrow padding (px)\n  arrowPadding: 0,\n  // Compute arrow overflow (useful to hide it)\n  arrowOverflow: !0,\n  /**\n   * By default, compute autohide on 'click'.\n   */\n  autoHideOnMousedown: !1,\n  // Themes\n  themes: {\n    tooltip: {\n      // Default tooltip placement relative to target element\n      placement: \"top\",\n      // Default events that trigger the tooltip\n      triggers: [\"hover\", \"focus\", \"touch\"],\n      // Close tooltip on click on tooltip target\n      hideTriggers: (e) => [...e, \"click\"],\n      // Delay (ms)\n      delay: {\n        show: 200,\n        hide: 0\n      },\n      // Update popper on content resize\n      handleResize: !1,\n      // Enable HTML content in directive\n      html: !1,\n      // Displayed when tooltip content is loading\n      loadingContent: \"...\"\n    },\n    dropdown: {\n      // Default dropdown placement relative to target element\n      placement: \"bottom\",\n      // Default events that trigger the dropdown\n      triggers: [\"click\"],\n      // Delay (ms)\n      delay: 0,\n      // Update popper on content resize\n      handleResize: !0,\n      // Hide on clock outside\n      autoHide: !0\n    },\n    menu: {\n      $extend: \"dropdown\",\n      triggers: [\"hover\", \"focus\"],\n      popperTriggers: [\"hover\"],\n      delay: {\n        show: 0,\n        hide: 400\n      }\n    }\n  }\n};\nfunction S(e, t) {\n  let o = h.themes[e] || {}, i;\n  do\n    i = o[t], typeof i > \"u\" ? o.$extend ? o = h.themes[o.$extend] || {} : (o = null, i = h[t]) : o = null;\n  while (o);\n  return i;\n}\nfunction Ze(e) {\n  const t = [e];\n  let o = h.themes[e] || {};\n  do\n    o.$extend && !o.$resetCss ? (t.push(o.$extend), o = h.themes[o.$extend] || {}) : o = null;\n  while (o);\n  return t.map((i) => `v-popper--theme-${i}`);\n}\nfunction re(e) {\n  const t = [e];\n  let o = h.themes[e] || {};\n  do\n    o.$extend ? (t.push(o.$extend), o = h.themes[o.$extend] || {}) : o = null;\n  while (o);\n  return t;\n}\nlet $ = !1;\nif (typeof window < \"u\") {\n  $ = !1;\n  try {\n    const e = Object.defineProperty({}, \"passive\", {\n      get() {\n        $ = !0;\n      }\n    });\n    window.addEventListener(\"test\", null, e);\n  } catch {\n  }\n}\nlet _e = !1;\ntypeof window < \"u\" && typeof navigator < \"u\" && (_e = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream);\nconst Te = [\"auto\", \"top\", \"bottom\", \"left\", \"right\"].reduce((e, t) => e.concat([\n  t,\n  `${t}-start`,\n  `${t}-end`\n]), []), pe = {\n  hover: \"mouseenter\",\n  focus: \"focus\",\n  click: \"click\",\n  touch: \"touchstart\",\n  pointer: \"pointerdown\"\n}, ae = {\n  hover: \"mouseleave\",\n  focus: \"blur\",\n  click: \"click\",\n  touch: \"touchend\",\n  pointer: \"pointerup\"\n};\nfunction de(e, t) {\n  const o = e.indexOf(t);\n  o !== -1 && e.splice(o, 1);\n}\nfunction G() {\n  return new Promise((e) => requestAnimationFrame(() => {\n    requestAnimationFrame(e);\n  }));\n}\nconst d = [];\nlet g = null;\nconst le = {};\nfunction he(e) {\n  let t = le[e];\n  return t || (t = le[e] = []), t;\n}\nlet Y = function() {\n};\ntypeof window < \"u\" && (Y = window.Element);\nfunction n(e) {\n  return function(t) {\n    return S(t.theme, e);\n  };\n}\nconst q = \"__floating-vue__popper\", Q = () => O({\n  name: \"VPopper\",\n  provide() {\n    return {\n      [q]: {\n        parentPopper: this\n      }\n    };\n  },\n  inject: {\n    [q]: { default: null }\n  },\n  props: {\n    theme: {\n      type: String,\n      required: !0\n    },\n    targetNodes: {\n      type: Function,\n      required: !0\n    },\n    referenceNode: {\n      type: Function,\n      default: null\n    },\n    popperNode: {\n      type: Function,\n      required: !0\n    },\n    shown: {\n      type: Boolean,\n      default: !1\n    },\n    showGroup: {\n      type: String,\n      default: null\n    },\n    // eslint-disable-next-line vue/require-prop-types\n    ariaId: {\n      default: null\n    },\n    disabled: {\n      type: Boolean,\n      default: n(\"disabled\")\n    },\n    positioningDisabled: {\n      type: Boolean,\n      default: n(\"positioningDisabled\")\n    },\n    placement: {\n      type: String,\n      default: n(\"placement\"),\n      validator: (e) => Te.includes(e)\n    },\n    delay: {\n      type: [String, Number, Object],\n      default: n(\"delay\")\n    },\n    distance: {\n      type: [Number, String],\n      default: n(\"distance\")\n    },\n    skidding: {\n      type: [Number, String],\n      default: n(\"skidding\")\n    },\n    triggers: {\n      type: Array,\n      default: n(\"triggers\")\n    },\n    showTriggers: {\n      type: [Array, Function],\n      default: n(\"showTriggers\")\n    },\n    hideTriggers: {\n      type: [Array, Function],\n      default: n(\"hideTriggers\")\n    },\n    popperTriggers: {\n      type: Array,\n      default: n(\"popperTriggers\")\n    },\n    popperShowTriggers: {\n      type: [Array, Function],\n      default: n(\"popperShowTriggers\")\n    },\n    popperHideTriggers: {\n      type: [Array, Function],\n      default: n(\"popperHideTriggers\")\n    },\n    container: {\n      type: [String, Object, Y, Boolean],\n      default: n(\"container\")\n    },\n    boundary: {\n      type: [String, Y],\n      default: n(\"boundary\")\n    },\n    strategy: {\n      type: String,\n      validator: (e) => [\"absolute\", \"fixed\"].includes(e),\n      default: n(\"strategy\")\n    },\n    autoHide: {\n      type: [Boolean, Function],\n      default: n(\"autoHide\")\n    },\n    handleResize: {\n      type: Boolean,\n      default: n(\"handleResize\")\n    },\n    instantMove: {\n      type: Boolean,\n      default: n(\"instantMove\")\n    },\n    eagerMount: {\n      type: Boolean,\n      default: n(\"eagerMount\")\n    },\n    popperClass: {\n      type: [String, Array, Object],\n      default: n(\"popperClass\")\n    },\n    computeTransformOrigin: {\n      type: Boolean,\n      default: n(\"computeTransformOrigin\")\n    },\n    /**\n     * @deprecated\n     */\n    autoMinSize: {\n      type: Boolean,\n      default: n(\"autoMinSize\")\n    },\n    autoSize: {\n      type: [Boolean, String],\n      default: n(\"autoSize\")\n    },\n    /**\n     * @deprecated\n     */\n    autoMaxSize: {\n      type: Boolean,\n      default: n(\"autoMaxSize\")\n    },\n    autoBoundaryMaxSize: {\n      type: Boolean,\n      default: n(\"autoBoundaryMaxSize\")\n    },\n    preventOverflow: {\n      type: Boolean,\n      default: n(\"preventOverflow\")\n    },\n    overflowPadding: {\n      type: [Number, String],\n      default: n(\"overflowPadding\")\n    },\n    arrowPadding: {\n      type: [Number, String],\n      default: n(\"arrowPadding\")\n    },\n    arrowOverflow: {\n      type: Boolean,\n      default: n(\"arrowOverflow\")\n    },\n    flip: {\n      type: Boolean,\n      default: n(\"flip\")\n    },\n    shift: {\n      type: Boolean,\n      default: n(\"shift\")\n    },\n    shiftCrossAxis: {\n      type: Boolean,\n      default: n(\"shiftCrossAxis\")\n    },\n    noAutoFocus: {\n      type: Boolean,\n      default: n(\"noAutoFocus\")\n    },\n    disposeTimeout: {\n      type: Number,\n      default: n(\"disposeTimeout\")\n    }\n  },\n  emits: {\n    show: () => !0,\n    hide: () => !0,\n    \"update:shown\": (e) => !0,\n    \"apply-show\": () => !0,\n    \"apply-hide\": () => !0,\n    \"close-group\": () => !0,\n    \"close-directive\": () => !0,\n    \"auto-hide\": () => !0,\n    resize: () => !0\n  },\n  data() {\n    return {\n      isShown: !1,\n      isMounted: !1,\n      skipTransition: !1,\n      classes: {\n        showFrom: !1,\n        showTo: !1,\n        hideFrom: !1,\n        hideTo: !0\n      },\n      result: {\n        x: 0,\n        y: 0,\n        placement: \"\",\n        strategy: this.strategy,\n        arrow: {\n          x: 0,\n          y: 0,\n          centerOffset: 0\n        },\n        transformOrigin: null\n      },\n      randomId: `popper_${[Math.random(), Date.now()].map((e) => e.toString(36).substring(2, 10)).join(\"_\")}`,\n      shownChildren: /* @__PURE__ */ new Set(),\n      lastAutoHide: !0,\n      pendingHide: !1,\n      containsGlobalTarget: !1,\n      isDisposed: !0,\n      mouseDownContains: !1\n    };\n  },\n  computed: {\n    popperId() {\n      return this.ariaId != null ? this.ariaId : this.randomId;\n    },\n    shouldMountContent() {\n      return this.eagerMount || this.isMounted;\n    },\n    slotData() {\n      return {\n        popperId: this.popperId,\n        isShown: this.isShown,\n        shouldMountContent: this.shouldMountContent,\n        skipTransition: this.skipTransition,\n        autoHide: typeof this.autoHide == \"function\" ? this.lastAutoHide : this.autoHide,\n        show: this.show,\n        hide: this.hide,\n        handleResize: this.handleResize,\n        onResize: this.onResize,\n        classes: {\n          ...this.classes,\n          popperClass: this.popperClass\n        },\n        result: this.positioningDisabled ? null : this.result,\n        attrs: this.$attrs\n      };\n    },\n    parentPopper() {\n      var e;\n      return (e = this[q]) == null ? void 0 : e.parentPopper;\n    },\n    hasPopperShowTriggerHover() {\n      var e, t;\n      return ((e = this.popperTriggers) == null ? void 0 : e.includes(\"hover\")) || ((t = this.popperShowTriggers) == null ? void 0 : t.includes(\"hover\"));\n    }\n  },\n  watch: {\n    shown: \"$_autoShowHide\",\n    disabled(e) {\n      e ? this.dispose() : this.init();\n    },\n    async container() {\n      this.isShown && (this.$_ensureTeleport(), await this.$_computePosition());\n    },\n    triggers: {\n      handler: \"$_refreshListeners\",\n      deep: !0\n    },\n    positioningDisabled: \"$_refreshListeners\",\n    ...[\n      \"placement\",\n      \"distance\",\n      \"skidding\",\n      \"boundary\",\n      \"strategy\",\n      \"overflowPadding\",\n      \"arrowPadding\",\n      \"preventOverflow\",\n      \"shift\",\n      \"shiftCrossAxis\",\n      \"flip\"\n    ].reduce((e, t) => (e[t] = \"$_computePosition\", e), {})\n  },\n  created() {\n    this.autoMinSize && console.warn('[floating-vue] `autoMinSize` option is deprecated. Use `autoSize=\"min\"` instead.'), this.autoMaxSize && console.warn(\"[floating-vue] `autoMaxSize` option is deprecated. Use `autoBoundaryMaxSize` instead.\");\n  },\n  mounted() {\n    this.init(), this.$_detachPopperNode();\n  },\n  activated() {\n    this.$_autoShowHide();\n  },\n  deactivated() {\n    this.hide();\n  },\n  beforeUnmount() {\n    this.dispose();\n  },\n  methods: {\n    show({ event: e = null, skipDelay: t = !1, force: o = !1 } = {}) {\n      var i, s;\n      (i = this.parentPopper) != null && i.lockedChild && this.parentPopper.lockedChild !== this || (this.pendingHide = !1, (o || !this.disabled) && (((s = this.parentPopper) == null ? void 0 : s.lockedChild) === this && (this.parentPopper.lockedChild = null), this.$_scheduleShow(e, t), this.$emit(\"show\"), this.$_showFrameLocked = !0, requestAnimationFrame(() => {\n        this.$_showFrameLocked = !1;\n      })), this.$emit(\"update:shown\", !0));\n    },\n    hide({ event: e = null, skipDelay: t = !1 } = {}) {\n      var o;\n      if (!this.$_hideInProgress) {\n        if (this.shownChildren.size > 0) {\n          this.pendingHide = !0;\n          return;\n        }\n        if (this.hasPopperShowTriggerHover && this.$_isAimingPopper()) {\n          this.parentPopper && (this.parentPopper.lockedChild = this, clearTimeout(this.parentPopper.lockedChildTimer), this.parentPopper.lockedChildTimer = setTimeout(() => {\n            this.parentPopper.lockedChild === this && (this.parentPopper.lockedChild.hide({ skipDelay: t }), this.parentPopper.lockedChild = null);\n          }, 1e3));\n          return;\n        }\n        ((o = this.parentPopper) == null ? void 0 : o.lockedChild) === this && (this.parentPopper.lockedChild = null), this.pendingHide = !1, this.$_scheduleHide(e, t), this.$emit(\"hide\"), this.$emit(\"update:shown\", !1);\n      }\n    },\n    init() {\n      var e;\n      this.isDisposed && (this.isDisposed = !1, this.isMounted = !1, this.$_events = [], this.$_preventShow = !1, this.$_referenceNode = ((e = this.referenceNode) == null ? void 0 : e.call(this)) ?? this.$el, this.$_targetNodes = this.targetNodes().filter((t) => t.nodeType === t.ELEMENT_NODE), this.$_popperNode = this.popperNode(), this.$_innerNode = this.$_popperNode.querySelector(\".v-popper__inner\"), this.$_arrowNode = this.$_popperNode.querySelector(\".v-popper__arrow-container\"), this.$_swapTargetAttrs(\"title\", \"data-original-title\"), this.$_detachPopperNode(), this.triggers.length && this.$_addEventListeners(), this.shown && this.show());\n    },\n    dispose() {\n      this.isDisposed || (this.isDisposed = !0, this.$_removeEventListeners(), this.hide({ skipDelay: !0 }), this.$_detachPopperNode(), this.isMounted = !1, this.isShown = !1, this.$_updateParentShownChildren(!1), this.$_swapTargetAttrs(\"data-original-title\", \"title\"));\n    },\n    async onResize() {\n      this.isShown && (await this.$_computePosition(), this.$emit(\"resize\"));\n    },\n    async $_computePosition() {\n      if (this.isDisposed || this.positioningDisabled)\n        return;\n      const e = {\n        strategy: this.strategy,\n        middleware: []\n      };\n      (this.distance || this.skidding) && e.middleware.push(xe({\n        mainAxis: this.distance,\n        crossAxis: this.skidding\n      }));\n      const t = this.placement.startsWith(\"auto\");\n      if (t ? e.middleware.push(Ue({\n        alignment: this.placement.split(\"-\")[1] ?? \"\"\n      })) : e.placement = this.placement, this.preventOverflow && (this.shift && e.middleware.push(Ye({\n        padding: this.overflowPadding,\n        boundary: this.boundary,\n        crossAxis: this.shiftCrossAxis\n      })), !t && this.flip && e.middleware.push(Xe({\n        padding: this.overflowPadding,\n        boundary: this.boundary\n      }))), e.middleware.push(Ke({\n        element: this.$_arrowNode,\n        padding: this.arrowPadding\n      })), this.arrowOverflow && e.middleware.push({\n        name: \"arrowOverflow\",\n        fn: ({ placement: i, rects: s, middlewareData: r }) => {\n          let p;\n          const { centerOffset: a } = r.arrow;\n          return i.startsWith(\"top\") || i.startsWith(\"bottom\") ? p = Math.abs(a) > s.reference.width / 2 : p = Math.abs(a) > s.reference.height / 2, {\n            data: {\n              overflow: p\n            }\n          };\n        }\n      }), this.autoMinSize || this.autoSize) {\n        const i = this.autoSize ? this.autoSize : this.autoMinSize ? \"min\" : null;\n        e.middleware.push({\n          name: \"autoSize\",\n          fn: ({ rects: s, placement: r, middlewareData: p }) => {\n            var u;\n            if ((u = p.autoSize) != null && u.skip)\n              return {};\n            let a, l;\n            return r.startsWith(\"top\") || r.startsWith(\"bottom\") ? a = s.reference.width : l = s.reference.height, this.$_innerNode.style[i === \"min\" ? \"minWidth\" : i === \"max\" ? \"maxWidth\" : \"width\"] = a != null ? `${a}px` : null, this.$_innerNode.style[i === \"min\" ? \"minHeight\" : i === \"max\" ? \"maxHeight\" : \"height\"] = l != null ? `${l}px` : null, {\n              data: {\n                skip: !0\n              },\n              reset: {\n                rects: !0\n              }\n            };\n          }\n        });\n      }\n      (this.autoMaxSize || this.autoBoundaryMaxSize) && (this.$_innerNode.style.maxWidth = null, this.$_innerNode.style.maxHeight = null, e.middleware.push(Je({\n        boundary: this.boundary,\n        padding: this.overflowPadding,\n        apply: ({ availableWidth: i, availableHeight: s }) => {\n          this.$_innerNode.style.maxWidth = i != null ? `${i}px` : null, this.$_innerNode.style.maxHeight = s != null ? `${s}px` : null;\n        }\n      })));\n      const o = await Qe(this.$_referenceNode, this.$_popperNode, e);\n      Object.assign(this.result, {\n        x: o.x,\n        y: o.y,\n        placement: o.placement,\n        strategy: o.strategy,\n        arrow: {\n          ...o.middlewareData.arrow,\n          ...o.middlewareData.arrowOverflow\n        }\n      });\n    },\n    $_scheduleShow(e, t = !1) {\n      if (this.$_updateParentShownChildren(!0), this.$_hideInProgress = !1, clearTimeout(this.$_scheduleTimer), g && this.instantMove && g.instantMove && g !== this.parentPopper) {\n        g.$_applyHide(!0), this.$_applyShow(!0);\n        return;\n      }\n      t ? this.$_applyShow() : this.$_scheduleTimer = setTimeout(this.$_applyShow.bind(this), this.$_computeDelay(\"show\"));\n    },\n    $_scheduleHide(e, t = !1) {\n      if (this.shownChildren.size > 0) {\n        this.pendingHide = !0;\n        return;\n      }\n      this.$_updateParentShownChildren(!1), this.$_hideInProgress = !0, clearTimeout(this.$_scheduleTimer), this.isShown && (g = this), t ? this.$_applyHide() : this.$_scheduleTimer = setTimeout(this.$_applyHide.bind(this), this.$_computeDelay(\"hide\"));\n    },\n    $_computeDelay(e) {\n      const t = this.delay;\n      return parseInt(t && t[e] || t || 0);\n    },\n    async $_applyShow(e = !1) {\n      clearTimeout(this.$_disposeTimer), clearTimeout(this.$_scheduleTimer), this.skipTransition = e, !this.isShown && (this.$_ensureTeleport(), await G(), await this.$_computePosition(), await this.$_applyShowEffect(), this.positioningDisabled || this.$_registerEventListeners([\n        ...ne(this.$_referenceNode),\n        ...ne(this.$_popperNode)\n      ], \"scroll\", () => {\n        this.$_computePosition();\n      }));\n    },\n    async $_applyShowEffect() {\n      if (this.$_hideInProgress)\n        return;\n      if (this.computeTransformOrigin) {\n        const t = this.$_referenceNode.getBoundingClientRect(), o = this.$_popperNode.querySelector(\".v-popper__wrapper\"), i = o.parentNode.getBoundingClientRect(), s = t.x + t.width / 2 - (i.left + o.offsetLeft), r = t.y + t.height / 2 - (i.top + o.offsetTop);\n        this.result.transformOrigin = `${s}px ${r}px`;\n      }\n      this.isShown = !0, this.$_applyAttrsToTarget({\n        \"aria-describedby\": this.popperId,\n        \"data-popper-shown\": \"\"\n      });\n      const e = this.showGroup;\n      if (e) {\n        let t;\n        for (let o = 0; o < d.length; o++)\n          t = d[o], t.showGroup !== e && (t.hide(), t.$emit(\"close-group\"));\n      }\n      d.push(this), document.body.classList.add(\"v-popper--some-open\");\n      for (const t of re(this.theme))\n        he(t).push(this), document.body.classList.add(`v-popper--some-open--${t}`);\n      this.$emit(\"apply-show\"), this.classes.showFrom = !0, this.classes.showTo = !1, this.classes.hideFrom = !1, this.classes.hideTo = !1, await G(), this.classes.showFrom = !1, this.classes.showTo = !0, this.noAutoFocus || this.$_popperNode.focus();\n    },\n    async $_applyHide(e = !1) {\n      if (this.shownChildren.size > 0) {\n        this.pendingHide = !0, this.$_hideInProgress = !1;\n        return;\n      }\n      if (clearTimeout(this.$_scheduleTimer), !this.isShown)\n        return;\n      this.skipTransition = e, de(d, this), d.length === 0 && document.body.classList.remove(\"v-popper--some-open\");\n      for (const o of re(this.theme)) {\n        const i = he(o);\n        de(i, this), i.length === 0 && document.body.classList.remove(`v-popper--some-open--${o}`);\n      }\n      g === this && (g = null), this.isShown = !1, this.$_applyAttrsToTarget({\n        \"aria-describedby\": void 0,\n        \"data-popper-shown\": void 0\n      }), clearTimeout(this.$_disposeTimer);\n      const t = this.disposeTimeout;\n      t !== null && (this.$_disposeTimer = setTimeout(() => {\n        this.$_popperNode && (this.$_detachPopperNode(), this.isMounted = !1);\n      }, t)), this.$_removeEventListeners(\"scroll\"), this.$emit(\"apply-hide\"), this.classes.showFrom = !1, this.classes.showTo = !1, this.classes.hideFrom = !0, this.classes.hideTo = !1, await G(), this.classes.hideFrom = !1, this.classes.hideTo = !0;\n    },\n    $_autoShowHide() {\n      this.shown ? this.show() : this.hide();\n    },\n    $_ensureTeleport() {\n      if (this.isDisposed)\n        return;\n      let e = this.container;\n      if (typeof e == \"string\" ? e = window.document.querySelector(e) : e === !1 && (e = this.$_targetNodes[0].parentNode), !e)\n        throw new Error(\"No container for popover: \" + this.container);\n      e.appendChild(this.$_popperNode), this.isMounted = !0;\n    },\n    $_addEventListeners() {\n      const e = (o) => {\n        this.isShown && !this.$_hideInProgress || (o.usedByTooltip = !0, !this.$_preventShow && this.show({ event: o }));\n      };\n      this.$_registerTriggerListeners(this.$_targetNodes, pe, this.triggers, this.showTriggers, e), this.$_registerTriggerListeners([this.$_popperNode], pe, this.popperTriggers, this.popperShowTriggers, e);\n      const t = (o) => {\n        o.usedByTooltip || this.hide({ event: o });\n      };\n      this.$_registerTriggerListeners(this.$_targetNodes, ae, this.triggers, this.hideTriggers, t), this.$_registerTriggerListeners([this.$_popperNode], ae, this.popperTriggers, this.popperHideTriggers, t);\n    },\n    $_registerEventListeners(e, t, o) {\n      this.$_events.push({ targetNodes: e, eventType: t, handler: o }), e.forEach((i) => i.addEventListener(t, o, $ ? {\n        passive: !0\n      } : void 0));\n    },\n    $_registerTriggerListeners(e, t, o, i, s) {\n      let r = o;\n      i != null && (r = typeof i == \"function\" ? i(r) : i), r.forEach((p) => {\n        const a = t[p];\n        a && this.$_registerEventListeners(e, a, s);\n      });\n    },\n    $_removeEventListeners(e) {\n      const t = [];\n      this.$_events.forEach((o) => {\n        const { targetNodes: i, eventType: s, handler: r } = o;\n        !e || e === s ? i.forEach((p) => p.removeEventListener(s, r)) : t.push(o);\n      }), this.$_events = t;\n    },\n    $_refreshListeners() {\n      this.isDisposed || (this.$_removeEventListeners(), this.$_addEventListeners());\n    },\n    $_handleGlobalClose(e, t = !1) {\n      this.$_showFrameLocked || (this.hide({ event: e }), e.closePopover ? this.$emit(\"close-directive\") : this.$emit(\"auto-hide\"), t && (this.$_preventShow = !0, setTimeout(() => {\n        this.$_preventShow = !1;\n      }, 300)));\n    },\n    $_detachPopperNode() {\n      this.$_popperNode.parentNode && this.$_popperNode.parentNode.removeChild(this.$_popperNode);\n    },\n    $_swapTargetAttrs(e, t) {\n      for (const o of this.$_targetNodes) {\n        const i = o.getAttribute(e);\n        i && (o.removeAttribute(e), o.setAttribute(t, i));\n      }\n    },\n    $_applyAttrsToTarget(e) {\n      for (const t of this.$_targetNodes)\n        for (const o in e) {\n          const i = e[o];\n          i == null ? t.removeAttribute(o) : t.setAttribute(o, i);\n        }\n    },\n    $_updateParentShownChildren(e) {\n      let t = this.parentPopper;\n      for (; t; )\n        e ? t.shownChildren.add(this.randomId) : (t.shownChildren.delete(this.randomId), t.pendingHide && t.hide()), t = t.parentPopper;\n    },\n    $_isAimingPopper() {\n      const e = this.$_referenceNode.getBoundingClientRect();\n      if (y >= e.left && y <= e.right && _ >= e.top && _ <= e.bottom) {\n        const t = this.$_popperNode.getBoundingClientRect(), o = y - c, i = _ - m, r = t.left + t.width / 2 - c + (t.top + t.height / 2) - m + t.width + t.height, p = c + o * r, a = m + i * r;\n        return C(c, m, p, a, t.left, t.top, t.left, t.bottom) || // Left edge\n        C(c, m, p, a, t.left, t.top, t.right, t.top) || // Top edge\n        C(c, m, p, a, t.right, t.top, t.right, t.bottom) || // Right edge\n        C(c, m, p, a, t.left, t.bottom, t.right, t.bottom);\n      }\n      return !1;\n    }\n  },\n  render() {\n    return this.$slots.default(this.slotData);\n  }\n});\nif (typeof document < \"u\" && typeof window < \"u\") {\n  if (_e) {\n    const e = $ ? {\n      passive: !0,\n      capture: !0\n    } : !0;\n    document.addEventListener(\"touchstart\", (t) => ue(t, !0), e), document.addEventListener(\"touchend\", (t) => fe(t, !0), e);\n  } else\n    window.addEventListener(\"mousedown\", (e) => ue(e, !1), !0), window.addEventListener(\"click\", (e) => fe(e, !1), !0);\n  window.addEventListener(\"resize\", tt);\n}\nfunction ue(e, t) {\n  if (h.autoHideOnMousedown)\n    Pe(e, t);\n  else\n    for (let o = 0; o < d.length; o++) {\n      const i = d[o];\n      try {\n        i.mouseDownContains = i.popperNode().contains(e.target);\n      } catch {\n      }\n    }\n}\nfunction fe(e, t) {\n  h.autoHideOnMousedown || Pe(e, t);\n}\nfunction Pe(e, t) {\n  const o = {};\n  for (let i = d.length - 1; i >= 0; i--) {\n    const s = d[i];\n    try {\n      const r = s.containsGlobalTarget = s.mouseDownContains || s.popperNode().contains(e.target);\n      s.pendingHide = !1, requestAnimationFrame(() => {\n        if (s.pendingHide = !1, !o[s.randomId] && ce(s, r, e)) {\n          if (s.$_handleGlobalClose(e, t), !e.closeAllPopover && e.closePopover && r) {\n            let a = s.parentPopper;\n            for (; a; )\n              o[a.randomId] = !0, a = a.parentPopper;\n            return;\n          }\n          let p = s.parentPopper;\n          for (; p && ce(p, p.containsGlobalTarget, e); ) {\n            p.$_handleGlobalClose(e, t);\n            p = p.parentPopper;\n          }\n        }\n      });\n    } catch {\n    }\n  }\n}\nfunction ce(e, t, o) {\n  return o.closeAllPopover || o.closePopover && t || et(e, o) && !t;\n}\nfunction et(e, t) {\n  if (typeof e.autoHide == \"function\") {\n    const o = e.autoHide(t);\n    return e.lastAutoHide = o, o;\n  }\n  return e.autoHide;\n}\nfunction tt() {\n  for (let e = 0; e < d.length; e++)\n    d[e].$_computePosition();\n}\nfunction Nt() {\n  for (let e = 0; e < d.length; e++)\n    d[e].hide();\n}\nlet c = 0, m = 0, y = 0, _ = 0;\ntypeof window < \"u\" && window.addEventListener(\"mousemove\", (e) => {\n  c = y, m = _, y = e.clientX, _ = e.clientY;\n}, $ ? {\n  passive: !0\n} : void 0);\nfunction C(e, t, o, i, s, r, p, a) {\n  const l = ((p - s) * (t - r) - (a - r) * (e - s)) / ((a - r) * (o - e) - (p - s) * (i - t)), u = ((o - e) * (t - r) - (i - t) * (e - s)) / ((a - r) * (o - e) - (p - s) * (i - t));\n  return l >= 0 && l <= 1 && u >= 0 && u <= 1;\n}\nconst ot = {\n  extends: Q()\n}, B = (e, t) => {\n  const o = e.__vccOpts || e;\n  for (const [i, s] of t)\n    o[i] = s;\n  return o;\n};\nfunction it(e, t, o, i, s, r) {\n  return f(), T(\"div\", {\n    ref: \"reference\",\n    class: J([\"v-popper\", {\n      \"v-popper--shown\": e.slotData.isShown\n    }])\n  }, [\n    A(e.$slots, \"default\", ke(Le(e.slotData)))\n  ], 2);\n}\nconst st = /* @__PURE__ */ B(ot, [[\"render\", it]]);\nfunction nt() {\n  var e = window.navigator.userAgent, t = e.indexOf(\"MSIE \");\n  if (t > 0)\n    return parseInt(e.substring(t + 5, e.indexOf(\".\", t)), 10);\n  var o = e.indexOf(\"Trident/\");\n  if (o > 0) {\n    var i = e.indexOf(\"rv:\");\n    return parseInt(e.substring(i + 3, e.indexOf(\".\", i)), 10);\n  }\n  var s = e.indexOf(\"Edge/\");\n  return s > 0 ? parseInt(e.substring(s + 5, e.indexOf(\".\", s)), 10) : -1;\n}\nlet z;\nfunction X() {\n  X.init || (X.init = !0, z = nt() !== -1);\n}\nvar E = {\n  name: \"ResizeObserver\",\n  props: {\n    emitOnMount: {\n      type: Boolean,\n      default: !1\n    },\n    ignoreWidth: {\n      type: Boolean,\n      default: !1\n    },\n    ignoreHeight: {\n      type: Boolean,\n      default: !1\n    }\n  },\n  emits: [\n    \"notify\"\n  ],\n  mounted() {\n    X(), Fe(() => {\n      this._w = this.$el.offsetWidth, this._h = this.$el.offsetHeight, this.emitOnMount && this.emitSize();\n    });\n    const e = document.createElement(\"object\");\n    this._resizeObject = e, e.setAttribute(\"aria-hidden\", \"true\"), e.setAttribute(\"tabindex\", -1), e.onload = this.addResizeHandlers, e.type = \"text/html\", z && this.$el.appendChild(e), e.data = \"about:blank\", z || this.$el.appendChild(e);\n  },\n  beforeUnmount() {\n    this.removeResizeHandlers();\n  },\n  methods: {\n    compareAndNotify() {\n      (!this.ignoreWidth && this._w !== this.$el.offsetWidth || !this.ignoreHeight && this._h !== this.$el.offsetHeight) && (this._w = this.$el.offsetWidth, this._h = this.$el.offsetHeight, this.emitSize());\n    },\n    emitSize() {\n      this.$emit(\"notify\", {\n        width: this._w,\n        height: this._h\n      });\n    },\n    addResizeHandlers() {\n      this._resizeObject.contentDocument.defaultView.addEventListener(\"resize\", this.compareAndNotify), this.compareAndNotify();\n    },\n    removeResizeHandlers() {\n      this._resizeObject && this._resizeObject.onload && (!z && this._resizeObject.contentDocument && this._resizeObject.contentDocument.defaultView.removeEventListener(\"resize\", this.compareAndNotify), this.$el.removeChild(this._resizeObject), this._resizeObject.onload = null, this._resizeObject = null);\n    }\n  }\n};\nconst rt = /* @__PURE__ */ Re(\"data-v-b329ee4c\");\nDe(\"data-v-b329ee4c\");\nconst pt = {\n  class: \"resize-observer\",\n  tabindex: \"-1\"\n};\nIe();\nconst at = /* @__PURE__ */ rt((e, t, o, i, s, r) => (f(), M(\"div\", pt)));\nE.render = at;\nE.__scopeId = \"data-v-b329ee4c\";\nE.__file = \"src/components/ResizeObserver.vue\";\nconst Z = (e = \"theme\") => ({\n  computed: {\n    themeClass() {\n      return Ze(this[e]);\n    }\n  }\n}), dt = O({\n  name: \"VPopperContent\",\n  components: {\n    ResizeObserver: E\n  },\n  mixins: [\n    Z()\n  ],\n  props: {\n    popperId: String,\n    theme: String,\n    shown: Boolean,\n    mounted: Boolean,\n    skipTransition: Boolean,\n    autoHide: Boolean,\n    handleResize: Boolean,\n    classes: Object,\n    result: Object\n  },\n  emits: [\n    \"hide\",\n    \"resize\"\n  ],\n  methods: {\n    toPx(e) {\n      return e != null && !isNaN(e) ? `${e}px` : null;\n    }\n  }\n}), lt = [\"id\", \"aria-hidden\", \"tabindex\", \"data-popper-placement\"], ht = {\n  ref: \"inner\",\n  class: \"v-popper__inner\"\n}, ut = /* @__PURE__ */ w(\"div\", { class: \"v-popper__arrow-outer\" }, null, -1), ft = /* @__PURE__ */ w(\"div\", { class: \"v-popper__arrow-inner\" }, null, -1), ct = [\n  ut,\n  ft\n];\nfunction mt(e, t, o, i, s, r) {\n  const p = P(\"ResizeObserver\");\n  return f(), T(\"div\", {\n    id: e.popperId,\n    ref: \"popover\",\n    class: J([\"v-popper__popper\", [\n      e.themeClass,\n      e.classes.popperClass,\n      {\n        \"v-popper__popper--shown\": e.shown,\n        \"v-popper__popper--hidden\": !e.shown,\n        \"v-popper__popper--show-from\": e.classes.showFrom,\n        \"v-popper__popper--show-to\": e.classes.showTo,\n        \"v-popper__popper--hide-from\": e.classes.hideFrom,\n        \"v-popper__popper--hide-to\": e.classes.hideTo,\n        \"v-popper__popper--skip-transition\": e.skipTransition,\n        \"v-popper__popper--arrow-overflow\": e.result && e.result.arrow.overflow,\n        \"v-popper__popper--no-positioning\": !e.result\n      }\n    ]]),\n    style: W(e.result ? {\n      position: e.result.strategy,\n      transform: `translate3d(${Math.round(e.result.x)}px,${Math.round(e.result.y)}px,0)`\n    } : void 0),\n    \"aria-hidden\": e.shown ? \"false\" : \"true\",\n    tabindex: e.autoHide ? 0 : void 0,\n    \"data-popper-placement\": e.result ? e.result.placement : void 0,\n    onKeyup: t[2] || (t[2] = je((a) => e.autoHide && e.$emit(\"hide\"), [\"esc\"]))\n  }, [\n    w(\"div\", {\n      class: \"v-popper__backdrop\",\n      onClick: t[0] || (t[0] = (a) => e.autoHide && e.$emit(\"hide\"))\n    }),\n    w(\"div\", {\n      class: \"v-popper__wrapper\",\n      style: W(e.result ? {\n        transformOrigin: e.result.transformOrigin\n      } : void 0)\n    }, [\n      w(\"div\", ht, [\n        e.mounted ? (f(), T(Ve, { key: 0 }, [\n          w(\"div\", null, [\n            A(e.$slots, \"default\")\n          ]),\n          e.handleResize ? (f(), M(p, {\n            key: 0,\n            onNotify: t[1] || (t[1] = (a) => e.$emit(\"resize\", a))\n          })) : se(\"\", !0)\n        ], 64)) : se(\"\", !0)\n      ], 512),\n      w(\"div\", {\n        ref: \"arrow\",\n        class: \"v-popper__arrow-container\",\n        style: W(e.result ? {\n          left: e.toPx(e.result.arrow.x),\n          top: e.toPx(e.result.arrow.y)\n        } : void 0)\n      }, ct, 4)\n    ], 4)\n  ], 46, lt);\n}\nconst ee = /* @__PURE__ */ B(dt, [[\"render\", mt]]), te = {\n  methods: {\n    show(...e) {\n      return this.$refs.popper.show(...e);\n    },\n    hide(...e) {\n      return this.$refs.popper.hide(...e);\n    },\n    dispose(...e) {\n      return this.$refs.popper.dispose(...e);\n    },\n    onResize(...e) {\n      return this.$refs.popper.onResize(...e);\n    }\n  }\n};\nlet K = function() {\n};\ntypeof window < \"u\" && (K = window.Element);\nconst gt = O({\n  name: \"VPopperWrapper\",\n  components: {\n    Popper: st,\n    PopperContent: ee\n  },\n  mixins: [\n    te,\n    Z(\"finalTheme\")\n  ],\n  props: {\n    theme: {\n      type: String,\n      default: null\n    },\n    referenceNode: {\n      type: Function,\n      default: null\n    },\n    shown: {\n      type: Boolean,\n      default: !1\n    },\n    showGroup: {\n      type: String,\n      default: null\n    },\n    // eslint-disable-next-line vue/require-prop-types\n    ariaId: {\n      default: null\n    },\n    disabled: {\n      type: Boolean,\n      default: void 0\n    },\n    positioningDisabled: {\n      type: Boolean,\n      default: void 0\n    },\n    placement: {\n      type: String,\n      default: void 0\n    },\n    delay: {\n      type: [String, Number, Object],\n      default: void 0\n    },\n    distance: {\n      type: [Number, String],\n      default: void 0\n    },\n    skidding: {\n      type: [Number, String],\n      default: void 0\n    },\n    triggers: {\n      type: Array,\n      default: void 0\n    },\n    showTriggers: {\n      type: [Array, Function],\n      default: void 0\n    },\n    hideTriggers: {\n      type: [Array, Function],\n      default: void 0\n    },\n    popperTriggers: {\n      type: Array,\n      default: void 0\n    },\n    popperShowTriggers: {\n      type: [Array, Function],\n      default: void 0\n    },\n    popperHideTriggers: {\n      type: [Array, Function],\n      default: void 0\n    },\n    container: {\n      type: [String, Object, K, Boolean],\n      default: void 0\n    },\n    boundary: {\n      type: [String, K],\n      default: void 0\n    },\n    strategy: {\n      type: String,\n      default: void 0\n    },\n    autoHide: {\n      type: [Boolean, Function],\n      default: void 0\n    },\n    handleResize: {\n      type: Boolean,\n      default: void 0\n    },\n    instantMove: {\n      type: Boolean,\n      default: void 0\n    },\n    eagerMount: {\n      type: Boolean,\n      default: void 0\n    },\n    popperClass: {\n      type: [String, Array, Object],\n      default: void 0\n    },\n    computeTransformOrigin: {\n      type: Boolean,\n      default: void 0\n    },\n    /**\n     * @deprecated\n     */\n    autoMinSize: {\n      type: Boolean,\n      default: void 0\n    },\n    autoSize: {\n      type: [Boolean, String],\n      default: void 0\n    },\n    /**\n     * @deprecated\n     */\n    autoMaxSize: {\n      type: Boolean,\n      default: void 0\n    },\n    autoBoundaryMaxSize: {\n      type: Boolean,\n      default: void 0\n    },\n    preventOverflow: {\n      type: Boolean,\n      default: void 0\n    },\n    overflowPadding: {\n      type: [Number, String],\n      default: void 0\n    },\n    arrowPadding: {\n      type: [Number, String],\n      default: void 0\n    },\n    arrowOverflow: {\n      type: Boolean,\n      default: void 0\n    },\n    flip: {\n      type: Boolean,\n      default: void 0\n    },\n    shift: {\n      type: Boolean,\n      default: void 0\n    },\n    shiftCrossAxis: {\n      type: Boolean,\n      default: void 0\n    },\n    noAutoFocus: {\n      type: Boolean,\n      default: void 0\n    },\n    disposeTimeout: {\n      type: Number,\n      default: void 0\n    }\n  },\n  emits: {\n    show: () => !0,\n    hide: () => !0,\n    \"update:shown\": (e) => !0,\n    \"apply-show\": () => !0,\n    \"apply-hide\": () => !0,\n    \"close-group\": () => !0,\n    \"close-directive\": () => !0,\n    \"auto-hide\": () => !0,\n    resize: () => !0\n  },\n  computed: {\n    finalTheme() {\n      return this.theme ?? this.$options.vPopperTheme;\n    }\n  },\n  methods: {\n    getTargetNodes() {\n      return Array.from(this.$el.children).filter((e) => e !== this.$refs.popperContent.$el);\n    }\n  }\n});\nfunction wt(e, t, o, i, s, r) {\n  const p = P(\"PopperContent\"), a = P(\"Popper\");\n  return f(), M(a, $e({ ref: \"popper\" }, e.$props, {\n    theme: e.finalTheme,\n    \"target-nodes\": e.getTargetNodes,\n    \"popper-node\": () => e.$refs.popperContent.$el,\n    class: [\n      e.themeClass\n    ],\n    onShow: t[0] || (t[0] = () => e.$emit(\"show\")),\n    onHide: t[1] || (t[1] = () => e.$emit(\"hide\")),\n    \"onUpdate:shown\": t[2] || (t[2] = (l) => e.$emit(\"update:shown\", l)),\n    onApplyShow: t[3] || (t[3] = () => e.$emit(\"apply-show\")),\n    onApplyHide: t[4] || (t[4] = () => e.$emit(\"apply-hide\")),\n    onCloseGroup: t[5] || (t[5] = () => e.$emit(\"close-group\")),\n    onCloseDirective: t[6] || (t[6] = () => e.$emit(\"close-directive\")),\n    onAutoHide: t[7] || (t[7] = () => e.$emit(\"auto-hide\")),\n    onResize: t[8] || (t[8] = () => e.$emit(\"resize\"))\n  }), {\n    default: N(({\n      popperId: l,\n      isShown: u,\n      shouldMountContent: L,\n      skipTransition: D,\n      autoHide: I,\n      show: F,\n      hide: v,\n      handleResize: R,\n      onResize: j,\n      classes: V,\n      result: Ee\n    }) => [\n      A(e.$slots, \"default\", {\n        shown: u,\n        show: F,\n        hide: v\n      }),\n      ve(p, {\n        ref: \"popperContent\",\n        \"popper-id\": l,\n        theme: e.finalTheme,\n        shown: u,\n        mounted: L,\n        \"skip-transition\": D,\n        \"auto-hide\": I,\n        \"handle-resize\": R,\n        classes: V,\n        result: Ee,\n        onHide: v,\n        onResize: j\n      }, {\n        default: N(() => [\n          A(e.$slots, \"popper\", {\n            shown: u,\n            hide: v\n          })\n        ]),\n        _: 2\n      }, 1032, [\"popper-id\", \"theme\", \"shown\", \"mounted\", \"skip-transition\", \"auto-hide\", \"handle-resize\", \"classes\", \"result\", \"onHide\", \"onResize\"])\n    ]),\n    _: 3\n  }, 16, [\"theme\", \"target-nodes\", \"popper-node\", \"class\"]);\n}\nconst k = /* @__PURE__ */ B(gt, [[\"render\", wt]]), Se = {\n  ...k,\n  name: \"VDropdown\",\n  vPopperTheme: \"dropdown\"\n}, be = {\n  ...k,\n  name: \"VMenu\",\n  vPopperTheme: \"menu\"\n}, Ce = {\n  ...k,\n  name: \"VTooltip\",\n  vPopperTheme: \"tooltip\"\n}, $t = O({\n  name: \"VTooltipDirective\",\n  components: {\n    Popper: Q(),\n    PopperContent: ee\n  },\n  mixins: [\n    te\n  ],\n  inheritAttrs: !1,\n  props: {\n    theme: {\n      type: String,\n      default: \"tooltip\"\n    },\n    html: {\n      type: Boolean,\n      default: (e) => S(e.theme, \"html\")\n    },\n    content: {\n      type: [String, Number, Function],\n      default: null\n    },\n    loadingContent: {\n      type: String,\n      default: (e) => S(e.theme, \"loadingContent\")\n    },\n    targetNodes: {\n      type: Function,\n      required: !0\n    }\n  },\n  data() {\n    return {\n      asyncContent: null\n    };\n  },\n  computed: {\n    isContentAsync() {\n      return typeof this.content == \"function\";\n    },\n    loading() {\n      return this.isContentAsync && this.asyncContent == null;\n    },\n    finalContent() {\n      return this.isContentAsync ? this.loading ? this.loadingContent : this.asyncContent : this.content;\n    }\n  },\n  watch: {\n    content: {\n      handler() {\n        this.fetchContent(!0);\n      },\n      immediate: !0\n    },\n    async finalContent() {\n      await this.$nextTick(), this.$refs.popper.onResize();\n    }\n  },\n  created() {\n    this.$_fetchId = 0;\n  },\n  methods: {\n    fetchContent(e) {\n      if (typeof this.content == \"function\" && this.$_isShown && (e || !this.$_loading && this.asyncContent == null)) {\n        this.asyncContent = null, this.$_loading = !0;\n        const t = ++this.$_fetchId, o = this.content(this);\n        o.then ? o.then((i) => this.onResult(t, i)) : this.onResult(t, o);\n      }\n    },\n    onResult(e, t) {\n      e === this.$_fetchId && (this.$_loading = !1, this.asyncContent = t);\n    },\n    onShow() {\n      this.$_isShown = !0, this.fetchContent();\n    },\n    onHide() {\n      this.$_isShown = !1;\n    }\n  }\n}), vt = [\"innerHTML\"], yt = [\"textContent\"];\nfunction _t(e, t, o, i, s, r) {\n  const p = P(\"PopperContent\"), a = P(\"Popper\");\n  return f(), M(a, $e({ ref: \"popper\" }, e.$attrs, {\n    theme: e.theme,\n    \"target-nodes\": e.targetNodes,\n    \"popper-node\": () => e.$refs.popperContent.$el,\n    onApplyShow: e.onShow,\n    onApplyHide: e.onHide\n  }), {\n    default: N(({\n      popperId: l,\n      isShown: u,\n      shouldMountContent: L,\n      skipTransition: D,\n      autoHide: I,\n      hide: F,\n      handleResize: v,\n      onResize: R,\n      classes: j,\n      result: V\n    }) => [\n      ve(p, {\n        ref: \"popperContent\",\n        class: J({\n          \"v-popper--tooltip-loading\": e.loading\n        }),\n        \"popper-id\": l,\n        theme: e.theme,\n        shown: u,\n        mounted: L,\n        \"skip-transition\": D,\n        \"auto-hide\": I,\n        \"handle-resize\": v,\n        classes: j,\n        result: V,\n        onHide: F,\n        onResize: R\n      }, {\n        default: N(() => [\n          e.html ? (f(), T(\"div\", {\n            key: 0,\n            innerHTML: e.finalContent\n          }, null, 8, vt)) : (f(), T(\"div\", {\n            key: 1,\n            textContent: We(e.finalContent)\n          }, null, 8, yt))\n        ]),\n        _: 2\n      }, 1032, [\"class\", \"popper-id\", \"theme\", \"shown\", \"mounted\", \"skip-transition\", \"auto-hide\", \"handle-resize\", \"classes\", \"result\", \"onHide\", \"onResize\"])\n    ]),\n    _: 1\n  }, 16, [\"theme\", \"target-nodes\", \"popper-node\", \"onApplyShow\", \"onApplyHide\"]);\n}\nconst ze = /* @__PURE__ */ B($t, [[\"render\", _t]]), Ae = \"v-popper--has-tooltip\";\nfunction Tt(e, t) {\n  let o = e.placement;\n  if (!o && t)\n    for (const i of Te)\n      t[i] && (o = i);\n  return o || (o = S(e.theme || \"tooltip\", \"placement\")), o;\n}\nfunction Ne(e, t, o) {\n  let i;\n  const s = typeof t;\n  return s === \"string\" ? i = { content: t } : t && s === \"object\" ? i = t : i = { content: !1 }, i.placement = Tt(i, o), i.targetNodes = () => [e], i.referenceNode = () => e, i;\n}\nlet x, b, Pt = 0;\nfunction St() {\n  if (x)\n    return;\n  b = U([]), x = Ge({\n    name: \"VTooltipDirectiveApp\",\n    setup() {\n      return {\n        directives: b\n      };\n    },\n    render() {\n      return this.directives.map((t) => qe(ze, {\n        ...t.options,\n        shown: t.shown || t.options.shown,\n        key: t.id\n      }));\n    },\n    devtools: {\n      hide: !0\n    }\n  });\n  const e = document.createElement(\"div\");\n  document.body.appendChild(e), x.mount(e);\n}\nfunction bt(e, t, o) {\n  St();\n  const i = U(Ne(e, t, o)), s = U(!1), r = {\n    id: Pt++,\n    options: i,\n    shown: s\n  };\n  return b.value.push(r), e.classList && e.classList.add(Ae), e.$_popper = {\n    options: i,\n    item: r,\n    show() {\n      s.value = !0;\n    },\n    hide() {\n      s.value = !1;\n    }\n  };\n}\nfunction He(e) {\n  if (e.$_popper) {\n    const t = b.value.indexOf(e.$_popper.item);\n    t !== -1 && b.value.splice(t, 1), delete e.$_popper, delete e.$_popperOldShown, delete e.$_popperMountTarget;\n  }\n  e.classList && e.classList.remove(Ae);\n}\nfunction me(e, { value: t, modifiers: o }) {\n  const i = Ne(e, t, o);\n  if (!i.content || S(i.theme || \"tooltip\", \"disabled\"))\n    He(e);\n  else {\n    let s;\n    e.$_popper ? (s = e.$_popper, s.options.value = i) : s = bt(e, t, o), typeof t.shown < \"u\" && t.shown !== e.$_popperOldShown && (e.$_popperOldShown = t.shown, t.shown ? s.show() : s.hide());\n  }\n}\nconst oe = {\n  beforeMount: me,\n  updated: me,\n  beforeUnmount(e) {\n    He(e);\n  }\n};\nfunction ge(e) {\n  e.addEventListener(\"mousedown\", H), e.addEventListener(\"click\", H), e.addEventListener(\"touchstart\", Oe, $ ? {\n    passive: !0\n  } : !1);\n}\nfunction we(e) {\n  e.removeEventListener(\"mousedown\", H), e.removeEventListener(\"click\", H), e.removeEventListener(\"touchstart\", Oe), e.removeEventListener(\"touchend\", Me), e.removeEventListener(\"touchcancel\", Be);\n}\nfunction H(e) {\n  const t = e.currentTarget;\n  e.closePopover = !t.$_vclosepopover_touch, e.closeAllPopover = t.$_closePopoverModifiers && !!t.$_closePopoverModifiers.all;\n}\nfunction Oe(e) {\n  if (e.changedTouches.length === 1) {\n    const t = e.currentTarget;\n    t.$_vclosepopover_touch = !0;\n    const o = e.changedTouches[0];\n    t.$_vclosepopover_touchPoint = o, t.addEventListener(\"touchend\", Me), t.addEventListener(\"touchcancel\", Be);\n  }\n}\nfunction Me(e) {\n  const t = e.currentTarget;\n  if (t.$_vclosepopover_touch = !1, e.changedTouches.length === 1) {\n    const o = e.changedTouches[0], i = t.$_vclosepopover_touchPoint;\n    e.closePopover = Math.abs(o.screenY - i.screenY) < 20 && Math.abs(o.screenX - i.screenX) < 20, e.closeAllPopover = t.$_closePopoverModifiers && !!t.$_closePopoverModifiers.all;\n  }\n}\nfunction Be(e) {\n  const t = e.currentTarget;\n  t.$_vclosepopover_touch = !1;\n}\nconst ie = {\n  beforeMount(e, { value: t, modifiers: o }) {\n    e.$_closePopoverModifiers = o, (typeof t > \"u\" || t) && ge(e);\n  },\n  updated(e, { value: t, oldValue: o, modifiers: i }) {\n    e.$_closePopoverModifiers = i, t !== o && (typeof t > \"u\" || t ? ge(e) : we(e));\n  },\n  beforeUnmount(e) {\n    we(e);\n  }\n}, Ht = h, Ot = oe, Mt = oe, Bt = ie, Et = ie, kt = Se, Lt = be, Dt = Q, It = ee, Ft = te, Rt = k, jt = Z, Vt = Ce, Wt = ze;\nfunction Ct(e, t = {}) {\n  e.$_vTooltipInstalled || (e.$_vTooltipInstalled = !0, ye(h, t), e.directive(\"tooltip\", oe), e.directive(\"close-popper\", ie), e.component(\"VTooltip\", Ce), e.component(\"VDropdown\", Se), e.component(\"VMenu\", be));\n}\nconst Gt = {\n  // eslint-disable-next-line no-undef\n  version: \"5.2.2\",\n  install: Ct,\n  options: h\n};\nexport {\n  kt as Dropdown,\n  ae as HIDE_EVENT_MAP,\n  Lt as Menu,\n  Dt as Popper,\n  It as PopperContent,\n  Ft as PopperMethods,\n  Rt as PopperWrapper,\n  pe as SHOW_EVENT_MAP,\n  jt as ThemeClass,\n  Vt as Tooltip,\n  Wt as TooltipDirective,\n  Bt as VClosePopper,\n  Ot as VTooltip,\n  bt as createTooltip,\n  Gt as default,\n  He as destroyTooltip,\n  Nt as hideAllPoppers,\n  Ct as install,\n  Ht as options,\n  Te as placements,\n  tt as recomputeAllPoppers,\n  Et as vClosePopper,\n  Mt as vTooltip\n};\n","import FloatingVue from 'floating-vue';\nimport type { UserModule } from './user-module-type';\n\n/**\n * Floating Vue tooltip plugin.\n * @see https://floating-vue.starpad.dev/\n *\n * To configure the default options\n * @see https://floating-vue.starpad.dev/guide/config\n */\nexport const install: UserModule = ({ app }) => {\n  FloatingVue.options.themes.tooltip.triggers = ['hover', 'touch'];\n\n  app.use(FloatingVue, {\n    distance: 8,\n  });\n};\n","/*!\n  * vue-router v4.3.0\n  * (c) 2024 Eduardo San Martin Morote\n  * @license MIT\n  */\nimport { getCurrentInstance, inject, onUnmounted, onDeactivated, onActivated, computed, unref, watchEffect, defineComponent, reactive, h, provide, ref, watch, shallowRef, shallowReactive, nextTick } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\nconst isBrowser = typeof document !== 'undefined';\n\nfunction isESModule(obj) {\n    return obj.__esModule || obj[Symbol.toStringTag] === 'Module';\n}\nconst assign = Object.assign;\nfunction applyToParams(fn, params) {\n    const newParams = {};\n    for (const key in params) {\n        const value = params[key];\n        newParams[key] = isArray(value)\n            ? value.map(fn)\n            : fn(value);\n    }\n    return newParams;\n}\nconst noop = () => { };\n/**\n * Typesafe alternative to Array.isArray\n * https://github.com/microsoft/TypeScript/pull/48228\n */\nconst isArray = Array.isArray;\n\nfunction warn(msg) {\n    // avoid using ...args as it breaks in older Edge builds\n    const args = Array.from(arguments).slice(1);\n    console.warn.apply(console, ['[Vue Router warn]: ' + msg].concat(args));\n}\n\n/**\n * Encoding Rules ␣ = Space Path: ␣ \" < > # ? { } Query: ␣ \" < > # & = Hash: ␣ \"\n * < > `\n *\n * On top of that, the RFC3986 (https://tools.ietf.org/html/rfc3986#section-2.2)\n * defines some extra characters to be encoded. Most browsers do not encode them\n * in encodeURI https://github.com/whatwg/url/issues/369, so it may be safer to\n * also encode `!'()*`. Leaving un-encoded only ASCII alphanumeric(`a-zA-Z0-9`)\n * plus `-._~`. This extra safety should be applied to query by patching the\n * string returned by encodeURIComponent encodeURI also encodes `[\\]^`. `\\`\n * should be encoded to avoid ambiguity. Browsers (IE, FF, C) transform a `\\`\n * into a `/` if directly typed in. The _backtick_ (`````) should also be\n * encoded everywhere because some browsers like FF encode it when directly\n * written while others don't. Safari and IE don't encode ``\"<>{}``` in hash.\n */\n// const EXTRA_RESERVED_RE = /[!'()*]/g\n// const encodeReservedReplacer = (c: string) => '%' + c.charCodeAt(0).toString(16)\nconst HASH_RE = /#/g; // %23\nconst AMPERSAND_RE = /&/g; // %26\nconst SLASH_RE = /\\//g; // %2F\nconst EQUAL_RE = /=/g; // %3D\nconst IM_RE = /\\?/g; // %3F\nconst PLUS_RE = /\\+/g; // %2B\n/**\n * NOTE: It's not clear to me if we should encode the + symbol in queries, it\n * seems to be less flexible than not doing so and I can't find out the legacy\n * systems requiring this for regular requests like text/html. In the standard,\n * the encoding of the plus character is only mentioned for\n * application/x-www-form-urlencoded\n * (https://url.spec.whatwg.org/#urlencoded-parsing) and most browsers seems lo\n * leave the plus character as is in queries. To be more flexible, we allow the\n * plus character on the query, but it can also be manually encoded by the user.\n *\n * Resources:\n * - https://url.spec.whatwg.org/#urlencoded-parsing\n * - https://stackoverflow.com/questions/1634271/url-encoding-the-space-character-or-20\n */\nconst ENC_BRACKET_OPEN_RE = /%5B/g; // [\nconst ENC_BRACKET_CLOSE_RE = /%5D/g; // ]\nconst ENC_CARET_RE = /%5E/g; // ^\nconst ENC_BACKTICK_RE = /%60/g; // `\nconst ENC_CURLY_OPEN_RE = /%7B/g; // {\nconst ENC_PIPE_RE = /%7C/g; // |\nconst ENC_CURLY_CLOSE_RE = /%7D/g; // }\nconst ENC_SPACE_RE = /%20/g; // }\n/**\n * Encode characters that need to be encoded on the path, search and hash\n * sections of the URL.\n *\n * @internal\n * @param text - string to encode\n * @returns encoded string\n */\nfunction commonEncode(text) {\n    return encodeURI('' + text)\n        .replace(ENC_PIPE_RE, '|')\n        .replace(ENC_BRACKET_OPEN_RE, '[')\n        .replace(ENC_BRACKET_CLOSE_RE, ']');\n}\n/**\n * Encode characters that need to be encoded on the hash section of the URL.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodeHash(text) {\n    return commonEncode(text)\n        .replace(ENC_CURLY_OPEN_RE, '{')\n        .replace(ENC_CURLY_CLOSE_RE, '}')\n        .replace(ENC_CARET_RE, '^');\n}\n/**\n * Encode characters that need to be encoded query values on the query\n * section of the URL.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodeQueryValue(text) {\n    return (commonEncode(text)\n        // Encode the space as +, encode the + to differentiate it from the space\n        .replace(PLUS_RE, '%2B')\n        .replace(ENC_SPACE_RE, '+')\n        .replace(HASH_RE, '%23')\n        .replace(AMPERSAND_RE, '%26')\n        .replace(ENC_BACKTICK_RE, '`')\n        .replace(ENC_CURLY_OPEN_RE, '{')\n        .replace(ENC_CURLY_CLOSE_RE, '}')\n        .replace(ENC_CARET_RE, '^'));\n}\n/**\n * Like `encodeQueryValue` but also encodes the `=` character.\n *\n * @param text - string to encode\n */\nfunction encodeQueryKey(text) {\n    return encodeQueryValue(text).replace(EQUAL_RE, '%3D');\n}\n/**\n * Encode characters that need to be encoded on the path section of the URL.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodePath(text) {\n    return commonEncode(text).replace(HASH_RE, '%23').replace(IM_RE, '%3F');\n}\n/**\n * Encode characters that need to be encoded on the path section of the URL as a\n * param. This function encodes everything {@link encodePath} does plus the\n * slash (`/`) character. If `text` is `null` or `undefined`, returns an empty\n * string instead.\n *\n * @param text - string to encode\n * @returns encoded string\n */\nfunction encodeParam(text) {\n    return text == null ? '' : encodePath(text).replace(SLASH_RE, '%2F');\n}\n/**\n * Decode text using `decodeURIComponent`. Returns the original text if it\n * fails.\n *\n * @param text - string to decode\n * @returns decoded string\n */\nfunction decode(text) {\n    try {\n        return decodeURIComponent('' + text);\n    }\n    catch (err) {\n        (process.env.NODE_ENV !== 'production') && warn(`Error decoding \"${text}\". Using original value`);\n    }\n    return '' + text;\n}\n\nconst TRAILING_SLASH_RE = /\\/$/;\nconst removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, '');\n/**\n * Transforms a URI into a normalized history location\n *\n * @param parseQuery\n * @param location - URI to normalize\n * @param currentLocation - current absolute location. Allows resolving relative\n * paths. Must start with `/`. Defaults to `/`\n * @returns a normalized history location\n */\nfunction parseURL(parseQuery, location, currentLocation = '/') {\n    let path, query = {}, searchString = '', hash = '';\n    // Could use URL and URLSearchParams but IE 11 doesn't support it\n    // TODO: move to new URL()\n    const hashPos = location.indexOf('#');\n    let searchPos = location.indexOf('?');\n    // the hash appears before the search, so it's not part of the search string\n    if (hashPos < searchPos && hashPos >= 0) {\n        searchPos = -1;\n    }\n    if (searchPos > -1) {\n        path = location.slice(0, searchPos);\n        searchString = location.slice(searchPos + 1, hashPos > -1 ? hashPos : location.length);\n        query = parseQuery(searchString);\n    }\n    if (hashPos > -1) {\n        path = path || location.slice(0, hashPos);\n        // keep the # character\n        hash = location.slice(hashPos, location.length);\n    }\n    // no search and no query\n    path = resolveRelativePath(path != null ? path : location, currentLocation);\n    // empty path means a relative query or hash `?foo=f`, `#thing`\n    return {\n        fullPath: path + (searchString && '?') + searchString + hash,\n        path,\n        query,\n        hash: decode(hash),\n    };\n}\n/**\n * Stringifies a URL object\n *\n * @param stringifyQuery\n * @param location\n */\nfunction stringifyURL(stringifyQuery, location) {\n    const query = location.query ? stringifyQuery(location.query) : '';\n    return location.path + (query && '?') + query + (location.hash || '');\n}\n/**\n * Strips off the base from the beginning of a location.pathname in a non-case-sensitive way.\n *\n * @param pathname - location.pathname\n * @param base - base to strip off\n */\nfunction stripBase(pathname, base) {\n    // no base or base is not found at the beginning\n    if (!base || !pathname.toLowerCase().startsWith(base.toLowerCase()))\n        return pathname;\n    return pathname.slice(base.length) || '/';\n}\n/**\n * Checks if two RouteLocation are equal. This means that both locations are\n * pointing towards the same {@link RouteRecord} and that all `params`, `query`\n * parameters and `hash` are the same\n *\n * @param stringifyQuery - A function that takes a query object of type LocationQueryRaw and returns a string representation of it.\n * @param a - first {@link RouteLocation}\n * @param b - second {@link RouteLocation}\n */\nfunction isSameRouteLocation(stringifyQuery, a, b) {\n    const aLastIndex = a.matched.length - 1;\n    const bLastIndex = b.matched.length - 1;\n    return (aLastIndex > -1 &&\n        aLastIndex === bLastIndex &&\n        isSameRouteRecord(a.matched[aLastIndex], b.matched[bLastIndex]) &&\n        isSameRouteLocationParams(a.params, b.params) &&\n        stringifyQuery(a.query) === stringifyQuery(b.query) &&\n        a.hash === b.hash);\n}\n/**\n * Check if two `RouteRecords` are equal. Takes into account aliases: they are\n * considered equal to the `RouteRecord` they are aliasing.\n *\n * @param a - first {@link RouteRecord}\n * @param b - second {@link RouteRecord}\n */\nfunction isSameRouteRecord(a, b) {\n    // since the original record has an undefined value for aliasOf\n    // but all aliases point to the original record, this will always compare\n    // the original record\n    return (a.aliasOf || a) === (b.aliasOf || b);\n}\nfunction isSameRouteLocationParams(a, b) {\n    if (Object.keys(a).length !== Object.keys(b).length)\n        return false;\n    for (const key in a) {\n        if (!isSameRouteLocationParamsValue(a[key], b[key]))\n            return false;\n    }\n    return true;\n}\nfunction isSameRouteLocationParamsValue(a, b) {\n    return isArray(a)\n        ? isEquivalentArray(a, b)\n        : isArray(b)\n            ? isEquivalentArray(b, a)\n            : a === b;\n}\n/**\n * Check if two arrays are the same or if an array with one single entry is the\n * same as another primitive value. Used to check query and parameters\n *\n * @param a - array of values\n * @param b - array of values or a single value\n */\nfunction isEquivalentArray(a, b) {\n    return isArray(b)\n        ? a.length === b.length && a.every((value, i) => value === b[i])\n        : a.length === 1 && a[0] === b;\n}\n/**\n * Resolves a relative path that starts with `.`.\n *\n * @param to - path location we are resolving\n * @param from - currentLocation.path, should start with `/`\n */\nfunction resolveRelativePath(to, from) {\n    if (to.startsWith('/'))\n        return to;\n    if ((process.env.NODE_ENV !== 'production') && !from.startsWith('/')) {\n        warn(`Cannot resolve a relative location without an absolute path. Trying to resolve \"${to}\" from \"${from}\". It should look like \"/${from}\".`);\n        return to;\n    }\n    if (!to)\n        return from;\n    const fromSegments = from.split('/');\n    const toSegments = to.split('/');\n    const lastToSegment = toSegments[toSegments.length - 1];\n    // make . and ./ the same (../ === .., ../../ === ../..)\n    // this is the same behavior as new URL()\n    if (lastToSegment === '..' || lastToSegment === '.') {\n        toSegments.push('');\n    }\n    let position = fromSegments.length - 1;\n    let toPosition;\n    let segment;\n    for (toPosition = 0; toPosition < toSegments.length; toPosition++) {\n        segment = toSegments[toPosition];\n        // we stay on the same position\n        if (segment === '.')\n            continue;\n        // go up in the from array\n        if (segment === '..') {\n            // we can't go below zero, but we still need to increment toPosition\n            if (position > 1)\n                position--;\n            // continue\n        }\n        // we reached a non-relative path, we stop here\n        else\n            break;\n    }\n    return (fromSegments.slice(0, position).join('/') +\n        '/' +\n        toSegments.slice(toPosition).join('/'));\n}\n\nvar NavigationType;\n(function (NavigationType) {\n    NavigationType[\"pop\"] = \"pop\";\n    NavigationType[\"push\"] = \"push\";\n})(NavigationType || (NavigationType = {}));\nvar NavigationDirection;\n(function (NavigationDirection) {\n    NavigationDirection[\"back\"] = \"back\";\n    NavigationDirection[\"forward\"] = \"forward\";\n    NavigationDirection[\"unknown\"] = \"\";\n})(NavigationDirection || (NavigationDirection = {}));\n/**\n * Starting location for Histories\n */\nconst START = '';\n// Generic utils\n/**\n * Normalizes a base by removing any trailing slash and reading the base tag if\n * present.\n *\n * @param base - base to normalize\n */\nfunction normalizeBase(base) {\n    if (!base) {\n        if (isBrowser) {\n            // respect <base> tag\n            const baseEl = document.querySelector('base');\n            base = (baseEl && baseEl.getAttribute('href')) || '/';\n            // strip full URL origin\n            base = base.replace(/^\\w+:\\/\\/[^\\/]+/, '');\n        }\n        else {\n            base = '/';\n        }\n    }\n    // ensure leading slash when it was removed by the regex above avoid leading\n    // slash with hash because the file could be read from the disk like file://\n    // and the leading slash would cause problems\n    if (base[0] !== '/' && base[0] !== '#')\n        base = '/' + base;\n    // remove the trailing slash so all other method can just do `base + fullPath`\n    // to build an href\n    return removeTrailingSlash(base);\n}\n// remove any character before the hash\nconst BEFORE_HASH_RE = /^[^#]+#/;\nfunction createHref(base, location) {\n    return base.replace(BEFORE_HASH_RE, '#') + location;\n}\n\nfunction getElementPosition(el, offset) {\n    const docRect = document.documentElement.getBoundingClientRect();\n    const elRect = el.getBoundingClientRect();\n    return {\n        behavior: offset.behavior,\n        left: elRect.left - docRect.left - (offset.left || 0),\n        top: elRect.top - docRect.top - (offset.top || 0),\n    };\n}\nconst computeScrollPosition = () => ({\n    left: window.scrollX,\n    top: window.scrollY,\n});\nfunction scrollToPosition(position) {\n    let scrollToOptions;\n    if ('el' in position) {\n        const positionEl = position.el;\n        const isIdSelector = typeof positionEl === 'string' && positionEl.startsWith('#');\n        /**\n         * `id`s can accept pretty much any characters, including CSS combinators\n         * like `>` or `~`. It's still possible to retrieve elements using\n         * `document.getElementById('~')` but it needs to be escaped when using\n         * `document.querySelector('#\\\\~')` for it to be valid. The only\n         * requirements for `id`s are them to be unique on the page and to not be\n         * empty (`id=\"\"`). Because of that, when passing an id selector, it should\n         * be properly escaped for it to work with `querySelector`. We could check\n         * for the id selector to be simple (no CSS combinators `+ >~`) but that\n         * would make things inconsistent since they are valid characters for an\n         * `id` but would need to be escaped when using `querySelector`, breaking\n         * their usage and ending up in no selector returned. Selectors need to be\n         * escaped:\n         *\n         * - `#1-thing` becomes `#\\31 -thing`\n         * - `#with~symbols` becomes `#with\\\\~symbols`\n         *\n         * - More information about  the topic can be found at\n         *   https://mathiasbynens.be/notes/html5-id-class.\n         * - Practical example: https://mathiasbynens.be/demo/html5-id\n         */\n        if ((process.env.NODE_ENV !== 'production') && typeof position.el === 'string') {\n            if (!isIdSelector || !document.getElementById(position.el.slice(1))) {\n                try {\n                    const foundEl = document.querySelector(position.el);\n                    if (isIdSelector && foundEl) {\n                        warn(`The selector \"${position.el}\" should be passed as \"el: document.querySelector('${position.el}')\" because it starts with \"#\".`);\n                        // return to avoid other warnings\n                        return;\n                    }\n                }\n                catch (err) {\n                    warn(`The selector \"${position.el}\" is invalid. If you are using an id selector, make sure to escape it. You can find more information about escaping characters in selectors at https://mathiasbynens.be/notes/css-escapes or use CSS.escape (https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape).`);\n                    // return to avoid other warnings\n                    return;\n                }\n            }\n        }\n        const el = typeof positionEl === 'string'\n            ? isIdSelector\n                ? document.getElementById(positionEl.slice(1))\n                : document.querySelector(positionEl)\n            : positionEl;\n        if (!el) {\n            (process.env.NODE_ENV !== 'production') &&\n                warn(`Couldn't find element using selector \"${position.el}\" returned by scrollBehavior.`);\n            return;\n        }\n        scrollToOptions = getElementPosition(el, position);\n    }\n    else {\n        scrollToOptions = position;\n    }\n    if ('scrollBehavior' in document.documentElement.style)\n        window.scrollTo(scrollToOptions);\n    else {\n        window.scrollTo(scrollToOptions.left != null ? scrollToOptions.left : window.scrollX, scrollToOptions.top != null ? scrollToOptions.top : window.scrollY);\n    }\n}\nfunction getScrollKey(path, delta) {\n    const position = history.state ? history.state.position - delta : -1;\n    return position + path;\n}\nconst scrollPositions = new Map();\nfunction saveScrollPosition(key, scrollPosition) {\n    scrollPositions.set(key, scrollPosition);\n}\nfunction getSavedScrollPosition(key) {\n    const scroll = scrollPositions.get(key);\n    // consume it so it's not used again\n    scrollPositions.delete(key);\n    return scroll;\n}\n// TODO: RFC about how to save scroll position\n/**\n * ScrollBehavior instance used by the router to compute and restore the scroll\n * position when navigating.\n */\n// export interface ScrollHandler<ScrollPositionEntry extends HistoryStateValue, ScrollPosition extends ScrollPositionEntry> {\n//   // returns a scroll position that can be saved in history\n//   compute(): ScrollPositionEntry\n//   // can take an extended ScrollPositionEntry\n//   scroll(position: ScrollPosition): void\n// }\n// export const scrollHandler: ScrollHandler<ScrollPosition> = {\n//   compute: computeScroll,\n//   scroll: scrollToPosition,\n// }\n\nlet createBaseLocation = () => location.protocol + '//' + location.host;\n/**\n * Creates a normalized history location from a window.location object\n * @param base - The base path\n * @param location - The window.location object\n */\nfunction createCurrentLocation(base, location) {\n    const { pathname, search, hash } = location;\n    // allows hash bases like #, /#, #/, #!, #!/, /#!/, or even /folder#end\n    const hashPos = base.indexOf('#');\n    if (hashPos > -1) {\n        let slicePos = hash.includes(base.slice(hashPos))\n            ? base.slice(hashPos).length\n            : 1;\n        let pathFromHash = hash.slice(slicePos);\n        // prepend the starting slash to hash so the url starts with /#\n        if (pathFromHash[0] !== '/')\n            pathFromHash = '/' + pathFromHash;\n        return stripBase(pathFromHash, '');\n    }\n    const path = stripBase(pathname, base);\n    return path + search + hash;\n}\nfunction useHistoryListeners(base, historyState, currentLocation, replace) {\n    let listeners = [];\n    let teardowns = [];\n    // TODO: should it be a stack? a Dict. Check if the popstate listener\n    // can trigger twice\n    let pauseState = null;\n    const popStateHandler = ({ state, }) => {\n        const to = createCurrentLocation(base, location);\n        const from = currentLocation.value;\n        const fromState = historyState.value;\n        let delta = 0;\n        if (state) {\n            currentLocation.value = to;\n            historyState.value = state;\n            // ignore the popstate and reset the pauseState\n            if (pauseState && pauseState === from) {\n                pauseState = null;\n                return;\n            }\n            delta = fromState ? state.position - fromState.position : 0;\n        }\n        else {\n            replace(to);\n        }\n        // Here we could also revert the navigation by calling history.go(-delta)\n        // this listener will have to be adapted to not trigger again and to wait for the url\n        // to be updated before triggering the listeners. Some kind of validation function would also\n        // need to be passed to the listeners so the navigation can be accepted\n        // call all listeners\n        listeners.forEach(listener => {\n            listener(currentLocation.value, from, {\n                delta,\n                type: NavigationType.pop,\n                direction: delta\n                    ? delta > 0\n                        ? NavigationDirection.forward\n                        : NavigationDirection.back\n                    : NavigationDirection.unknown,\n            });\n        });\n    };\n    function pauseListeners() {\n        pauseState = currentLocation.value;\n    }\n    function listen(callback) {\n        // set up the listener and prepare teardown callbacks\n        listeners.push(callback);\n        const teardown = () => {\n            const index = listeners.indexOf(callback);\n            if (index > -1)\n                listeners.splice(index, 1);\n        };\n        teardowns.push(teardown);\n        return teardown;\n    }\n    function beforeUnloadListener() {\n        const { history } = window;\n        if (!history.state)\n            return;\n        history.replaceState(assign({}, history.state, { scroll: computeScrollPosition() }), '');\n    }\n    function destroy() {\n        for (const teardown of teardowns)\n            teardown();\n        teardowns = [];\n        window.removeEventListener('popstate', popStateHandler);\n        window.removeEventListener('beforeunload', beforeUnloadListener);\n    }\n    // set up the listeners and prepare teardown callbacks\n    window.addEventListener('popstate', popStateHandler);\n    // TODO: could we use 'pagehide' or 'visibilitychange' instead?\n    // https://developer.chrome.com/blog/page-lifecycle-api/\n    window.addEventListener('beforeunload', beforeUnloadListener, {\n        passive: true,\n    });\n    return {\n        pauseListeners,\n        listen,\n        destroy,\n    };\n}\n/**\n * Creates a state object\n */\nfunction buildState(back, current, forward, replaced = false, computeScroll = false) {\n    return {\n        back,\n        current,\n        forward,\n        replaced,\n        position: window.history.length,\n        scroll: computeScroll ? computeScrollPosition() : null,\n    };\n}\nfunction useHistoryStateNavigation(base) {\n    const { history, location } = window;\n    // private variables\n    const currentLocation = {\n        value: createCurrentLocation(base, location),\n    };\n    const historyState = { value: history.state };\n    // build current history entry as this is a fresh navigation\n    if (!historyState.value) {\n        changeLocation(currentLocation.value, {\n            back: null,\n            current: currentLocation.value,\n            forward: null,\n            // the length is off by one, we need to decrease it\n            position: history.length - 1,\n            replaced: true,\n            // don't add a scroll as the user may have an anchor, and we want\n            // scrollBehavior to be triggered without a saved position\n            scroll: null,\n        }, true);\n    }\n    function changeLocation(to, state, replace) {\n        /**\n         * if a base tag is provided, and we are on a normal domain, we have to\n         * respect the provided `base` attribute because pushState() will use it and\n         * potentially erase anything before the `#` like at\n         * https://github.com/vuejs/router/issues/685 where a base of\n         * `/folder/#` but a base of `/` would erase the `/folder/` section. If\n         * there is no host, the `<base>` tag makes no sense and if there isn't a\n         * base tag we can just use everything after the `#`.\n         */\n        const hashIndex = base.indexOf('#');\n        const url = hashIndex > -1\n            ? (location.host && document.querySelector('base')\n                ? base\n                : base.slice(hashIndex)) + to\n            : createBaseLocation() + base + to;\n        try {\n            // BROWSER QUIRK\n            // NOTE: Safari throws a SecurityError when calling this function 100 times in 30 seconds\n            history[replace ? 'replaceState' : 'pushState'](state, '', url);\n            historyState.value = state;\n        }\n        catch (err) {\n            if ((process.env.NODE_ENV !== 'production')) {\n                warn('Error with push/replace State', err);\n            }\n            else {\n                console.error(err);\n            }\n            // Force the navigation, this also resets the call count\n            location[replace ? 'replace' : 'assign'](url);\n        }\n    }\n    function replace(to, data) {\n        const state = assign({}, history.state, buildState(historyState.value.back, \n        // keep back and forward entries but override current position\n        to, historyState.value.forward, true), data, { position: historyState.value.position });\n        changeLocation(to, state, true);\n        currentLocation.value = to;\n    }\n    function push(to, data) {\n        // Add to current entry the information of where we are going\n        // as well as saving the current position\n        const currentState = assign({}, \n        // use current history state to gracefully handle a wrong call to\n        // history.replaceState\n        // https://github.com/vuejs/router/issues/366\n        historyState.value, history.state, {\n            forward: to,\n            scroll: computeScrollPosition(),\n        });\n        if ((process.env.NODE_ENV !== 'production') && !history.state) {\n            warn(`history.state seems to have been manually replaced without preserving the necessary values. Make sure to preserve existing history state if you are manually calling history.replaceState:\\n\\n` +\n                `history.replaceState(history.state, '', url)\\n\\n` +\n                `You can find more information at https://next.router.vuejs.org/guide/migration/#usage-of-history-state.`);\n        }\n        changeLocation(currentState.current, currentState, true);\n        const state = assign({}, buildState(currentLocation.value, to, null), { position: currentState.position + 1 }, data);\n        changeLocation(to, state, false);\n        currentLocation.value = to;\n    }\n    return {\n        location: currentLocation,\n        state: historyState,\n        push,\n        replace,\n    };\n}\n/**\n * Creates an HTML5 history. Most common history for single page applications.\n *\n * @param base -\n */\nfunction createWebHistory(base) {\n    base = normalizeBase(base);\n    const historyNavigation = useHistoryStateNavigation(base);\n    const historyListeners = useHistoryListeners(base, historyNavigation.state, historyNavigation.location, historyNavigation.replace);\n    function go(delta, triggerListeners = true) {\n        if (!triggerListeners)\n            historyListeners.pauseListeners();\n        history.go(delta);\n    }\n    const routerHistory = assign({\n        // it's overridden right after\n        location: '',\n        base,\n        go,\n        createHref: createHref.bind(null, base),\n    }, historyNavigation, historyListeners);\n    Object.defineProperty(routerHistory, 'location', {\n        enumerable: true,\n        get: () => historyNavigation.location.value,\n    });\n    Object.defineProperty(routerHistory, 'state', {\n        enumerable: true,\n        get: () => historyNavigation.state.value,\n    });\n    return routerHistory;\n}\n\n/**\n * Creates an in-memory based history. The main purpose of this history is to handle SSR. It starts in a special location that is nowhere.\n * It's up to the user to replace that location with the starter location by either calling `router.push` or `router.replace`.\n *\n * @param base - Base applied to all urls, defaults to '/'\n * @returns a history object that can be passed to the router constructor\n */\nfunction createMemoryHistory(base = '') {\n    let listeners = [];\n    let queue = [START];\n    let position = 0;\n    base = normalizeBase(base);\n    function setLocation(location) {\n        position++;\n        if (position !== queue.length) {\n            // we are in the middle, we remove everything from here in the queue\n            queue.splice(position);\n        }\n        queue.push(location);\n    }\n    function triggerListeners(to, from, { direction, delta }) {\n        const info = {\n            direction,\n            delta,\n            type: NavigationType.pop,\n        };\n        for (const callback of listeners) {\n            callback(to, from, info);\n        }\n    }\n    const routerHistory = {\n        // rewritten by Object.defineProperty\n        location: START,\n        // TODO: should be kept in queue\n        state: {},\n        base,\n        createHref: createHref.bind(null, base),\n        replace(to) {\n            // remove current entry and decrement position\n            queue.splice(position--, 1);\n            setLocation(to);\n        },\n        push(to, data) {\n            setLocation(to);\n        },\n        listen(callback) {\n            listeners.push(callback);\n            return () => {\n                const index = listeners.indexOf(callback);\n                if (index > -1)\n                    listeners.splice(index, 1);\n            };\n        },\n        destroy() {\n            listeners = [];\n            queue = [START];\n            position = 0;\n        },\n        go(delta, shouldTrigger = true) {\n            const from = this.location;\n            const direction = \n            // we are considering delta === 0 going forward, but in abstract mode\n            // using 0 for the delta doesn't make sense like it does in html5 where\n            // it reloads the page\n            delta < 0 ? NavigationDirection.back : NavigationDirection.forward;\n            position = Math.max(0, Math.min(position + delta, queue.length - 1));\n            if (shouldTrigger) {\n                triggerListeners(this.location, from, {\n                    direction,\n                    delta,\n                });\n            }\n        },\n    };\n    Object.defineProperty(routerHistory, 'location', {\n        enumerable: true,\n        get: () => queue[position],\n    });\n    return routerHistory;\n}\n\n/**\n * Creates a hash history. Useful for web applications with no host (e.g. `file://`) or when configuring a server to\n * handle any URL is not possible.\n *\n * @param base - optional base to provide. Defaults to `location.pathname + location.search` If there is a `<base>` tag\n * in the `head`, its value will be ignored in favor of this parameter **but note it affects all the history.pushState()\n * calls**, meaning that if you use a `<base>` tag, it's `href` value **has to match this parameter** (ignoring anything\n * after the `#`).\n *\n * @example\n * ```js\n * // at https://example.com/folder\n * createWebHashHistory() // gives a url of `https://example.com/folder#`\n * createWebHashHistory('/folder/') // gives a url of `https://example.com/folder/#`\n * // if the `#` is provided in the base, it won't be added by `createWebHashHistory`\n * createWebHashHistory('/folder/#/app/') // gives a url of `https://example.com/folder/#/app/`\n * // you should avoid doing this because it changes the original url and breaks copying urls\n * createWebHashHistory('/other-folder/') // gives a url of `https://example.com/other-folder/#`\n *\n * // at file:///usr/etc/folder/index.html\n * // for locations with no `host`, the base is ignored\n * createWebHashHistory('/iAmIgnored') // gives a url of `file:///usr/etc/folder/index.html#`\n * ```\n */\nfunction createWebHashHistory(base) {\n    // Make sure this implementation is fine in terms of encoding, specially for IE11\n    // for `file://`, directly use the pathname and ignore the base\n    // location.pathname contains an initial `/` even at the root: `https://example.com`\n    base = location.host ? base || location.pathname + location.search : '';\n    // allow the user to provide a `#` in the middle: `/base/#/app`\n    if (!base.includes('#'))\n        base += '#';\n    if ((process.env.NODE_ENV !== 'production') && !base.endsWith('#/') && !base.endsWith('#')) {\n        warn(`A hash base must end with a \"#\":\\n\"${base}\" should be \"${base.replace(/#.*$/, '#')}\".`);\n    }\n    return createWebHistory(base);\n}\n\nfunction isRouteLocation(route) {\n    return typeof route === 'string' || (route && typeof route === 'object');\n}\nfunction isRouteName(name) {\n    return typeof name === 'string' || typeof name === 'symbol';\n}\n\n/**\n * Initial route location where the router is. Can be used in navigation guards\n * to differentiate the initial navigation.\n *\n * @example\n * ```js\n * import { START_LOCATION } from 'vue-router'\n *\n * router.beforeEach((to, from) => {\n *   if (from === START_LOCATION) {\n *     // initial navigation\n *   }\n * })\n * ```\n */\nconst START_LOCATION_NORMALIZED = {\n    path: '/',\n    name: undefined,\n    params: {},\n    query: {},\n    hash: '',\n    fullPath: '/',\n    matched: [],\n    meta: {},\n    redirectedFrom: undefined,\n};\n\nconst NavigationFailureSymbol = Symbol((process.env.NODE_ENV !== 'production') ? 'navigation failure' : '');\n/**\n * Enumeration with all possible types for navigation failures. Can be passed to\n * {@link isNavigationFailure} to check for specific failures.\n */\nvar NavigationFailureType;\n(function (NavigationFailureType) {\n    /**\n     * An aborted navigation is a navigation that failed because a navigation\n     * guard returned `false` or called `next(false)`\n     */\n    NavigationFailureType[NavigationFailureType[\"aborted\"] = 4] = \"aborted\";\n    /**\n     * A cancelled navigation is a navigation that failed because a more recent\n     * navigation finished started (not necessarily finished).\n     */\n    NavigationFailureType[NavigationFailureType[\"cancelled\"] = 8] = \"cancelled\";\n    /**\n     * A duplicated navigation is a navigation that failed because it was\n     * initiated while already being at the exact same location.\n     */\n    NavigationFailureType[NavigationFailureType[\"duplicated\"] = 16] = \"duplicated\";\n})(NavigationFailureType || (NavigationFailureType = {}));\n// DEV only debug messages\nconst ErrorTypeMessages = {\n    [1 /* ErrorTypes.MATCHER_NOT_FOUND */]({ location, currentLocation }) {\n        return `No match for\\n ${JSON.stringify(location)}${currentLocation\n            ? '\\nwhile being at\\n' + JSON.stringify(currentLocation)\n            : ''}`;\n    },\n    [2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */]({ from, to, }) {\n        return `Redirected from \"${from.fullPath}\" to \"${stringifyRoute(to)}\" via a navigation guard.`;\n    },\n    [4 /* ErrorTypes.NAVIGATION_ABORTED */]({ from, to }) {\n        return `Navigation aborted from \"${from.fullPath}\" to \"${to.fullPath}\" via a navigation guard.`;\n    },\n    [8 /* ErrorTypes.NAVIGATION_CANCELLED */]({ from, to }) {\n        return `Navigation cancelled from \"${from.fullPath}\" to \"${to.fullPath}\" with a new navigation.`;\n    },\n    [16 /* ErrorTypes.NAVIGATION_DUPLICATED */]({ from, to }) {\n        return `Avoided redundant navigation to current location: \"${from.fullPath}\".`;\n    },\n};\n/**\n * Creates a typed NavigationFailure object.\n * @internal\n * @param type - NavigationFailureType\n * @param params - { from, to }\n */\nfunction createRouterError(type, params) {\n    // keep full error messages in cjs versions\n    if ((process.env.NODE_ENV !== 'production') || !true) {\n        return assign(new Error(ErrorTypeMessages[type](params)), {\n            type,\n            [NavigationFailureSymbol]: true,\n        }, params);\n    }\n    else {\n        return assign(new Error(), {\n            type,\n            [NavigationFailureSymbol]: true,\n        }, params);\n    }\n}\nfunction isNavigationFailure(error, type) {\n    return (error instanceof Error &&\n        NavigationFailureSymbol in error &&\n        (type == null || !!(error.type & type)));\n}\nconst propertiesToLog = ['params', 'query', 'hash'];\nfunction stringifyRoute(to) {\n    if (typeof to === 'string')\n        return to;\n    if (to.path != null)\n        return to.path;\n    const location = {};\n    for (const key of propertiesToLog) {\n        if (key in to)\n            location[key] = to[key];\n    }\n    return JSON.stringify(location, null, 2);\n}\n\n// default pattern for a param: non-greedy everything but /\nconst BASE_PARAM_PATTERN = '[^/]+?';\nconst BASE_PATH_PARSER_OPTIONS = {\n    sensitive: false,\n    strict: false,\n    start: true,\n    end: true,\n};\n// Special Regex characters that must be escaped in static tokens\nconst REGEX_CHARS_RE = /[.+*?^${}()[\\]/\\\\]/g;\n/**\n * Creates a path parser from an array of Segments (a segment is an array of Tokens)\n *\n * @param segments - array of segments returned by tokenizePath\n * @param extraOptions - optional options for the regexp\n * @returns a PathParser\n */\nfunction tokensToParser(segments, extraOptions) {\n    const options = assign({}, BASE_PATH_PARSER_OPTIONS, extraOptions);\n    // the amount of scores is the same as the length of segments except for the root segment \"/\"\n    const score = [];\n    // the regexp as a string\n    let pattern = options.start ? '^' : '';\n    // extracted keys\n    const keys = [];\n    for (const segment of segments) {\n        // the root segment needs special treatment\n        const segmentScores = segment.length ? [] : [90 /* PathScore.Root */];\n        // allow trailing slash\n        if (options.strict && !segment.length)\n            pattern += '/';\n        for (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) {\n            const token = segment[tokenIndex];\n            // resets the score if we are inside a sub-segment /:a-other-:b\n            let subSegmentScore = 40 /* PathScore.Segment */ +\n                (options.sensitive ? 0.25 /* PathScore.BonusCaseSensitive */ : 0);\n            if (token.type === 0 /* TokenType.Static */) {\n                // prepend the slash if we are starting a new segment\n                if (!tokenIndex)\n                    pattern += '/';\n                pattern += token.value.replace(REGEX_CHARS_RE, '\\\\$&');\n                subSegmentScore += 40 /* PathScore.Static */;\n            }\n            else if (token.type === 1 /* TokenType.Param */) {\n                const { value, repeatable, optional, regexp } = token;\n                keys.push({\n                    name: value,\n                    repeatable,\n                    optional,\n                });\n                const re = regexp ? regexp : BASE_PARAM_PATTERN;\n                // the user provided a custom regexp /:id(\\\\d+)\n                if (re !== BASE_PARAM_PATTERN) {\n                    subSegmentScore += 10 /* PathScore.BonusCustomRegExp */;\n                    // make sure the regexp is valid before using it\n                    try {\n                        new RegExp(`(${re})`);\n                    }\n                    catch (err) {\n                        throw new Error(`Invalid custom RegExp for param \"${value}\" (${re}): ` +\n                            err.message);\n                    }\n                }\n                // when we repeat we must take care of the repeating leading slash\n                let subPattern = repeatable ? `((?:${re})(?:/(?:${re}))*)` : `(${re})`;\n                // prepend the slash if we are starting a new segment\n                if (!tokenIndex)\n                    subPattern =\n                        // avoid an optional / if there are more segments e.g. /:p?-static\n                        // or /:p?-:p2\n                        optional && segment.length < 2\n                            ? `(?:/${subPattern})`\n                            : '/' + subPattern;\n                if (optional)\n                    subPattern += '?';\n                pattern += subPattern;\n                subSegmentScore += 20 /* PathScore.Dynamic */;\n                if (optional)\n                    subSegmentScore += -8 /* PathScore.BonusOptional */;\n                if (repeatable)\n                    subSegmentScore += -20 /* PathScore.BonusRepeatable */;\n                if (re === '.*')\n                    subSegmentScore += -50 /* PathScore.BonusWildcard */;\n            }\n            segmentScores.push(subSegmentScore);\n        }\n        // an empty array like /home/ -> [[{home}], []]\n        // if (!segment.length) pattern += '/'\n        score.push(segmentScores);\n    }\n    // only apply the strict bonus to the last score\n    if (options.strict && options.end) {\n        const i = score.length - 1;\n        score[i][score[i].length - 1] += 0.7000000000000001 /* PathScore.BonusStrict */;\n    }\n    // TODO: dev only warn double trailing slash\n    if (!options.strict)\n        pattern += '/?';\n    if (options.end)\n        pattern += '$';\n    // allow paths like /dynamic to only match dynamic or dynamic/... but not dynamic_something_else\n    else if (options.strict)\n        pattern += '(?:/|$)';\n    const re = new RegExp(pattern, options.sensitive ? '' : 'i');\n    function parse(path) {\n        const match = path.match(re);\n        const params = {};\n        if (!match)\n            return null;\n        for (let i = 1; i < match.length; i++) {\n            const value = match[i] || '';\n            const key = keys[i - 1];\n            params[key.name] = value && key.repeatable ? value.split('/') : value;\n        }\n        return params;\n    }\n    function stringify(params) {\n        let path = '';\n        // for optional parameters to allow to be empty\n        let avoidDuplicatedSlash = false;\n        for (const segment of segments) {\n            if (!avoidDuplicatedSlash || !path.endsWith('/'))\n                path += '/';\n            avoidDuplicatedSlash = false;\n            for (const token of segment) {\n                if (token.type === 0 /* TokenType.Static */) {\n                    path += token.value;\n                }\n                else if (token.type === 1 /* TokenType.Param */) {\n                    const { value, repeatable, optional } = token;\n                    const param = value in params ? params[value] : '';\n                    if (isArray(param) && !repeatable) {\n                        throw new Error(`Provided param \"${value}\" is an array but it is not repeatable (* or + modifiers)`);\n                    }\n                    const text = isArray(param)\n                        ? param.join('/')\n                        : param;\n                    if (!text) {\n                        if (optional) {\n                            // if we have more than one optional param like /:a?-static we don't need to care about the optional param\n                            if (segment.length < 2) {\n                                // remove the last slash as we could be at the end\n                                if (path.endsWith('/'))\n                                    path = path.slice(0, -1);\n                                // do not append a slash on the next iteration\n                                else\n                                    avoidDuplicatedSlash = true;\n                            }\n                        }\n                        else\n                            throw new Error(`Missing required param \"${value}\"`);\n                    }\n                    path += text;\n                }\n            }\n        }\n        // avoid empty path when we have multiple optional params\n        return path || '/';\n    }\n    return {\n        re,\n        score,\n        keys,\n        parse,\n        stringify,\n    };\n}\n/**\n * Compares an array of numbers as used in PathParser.score and returns a\n * number. This function can be used to `sort` an array\n *\n * @param a - first array of numbers\n * @param b - second array of numbers\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\n * should be sorted first\n */\nfunction compareScoreArray(a, b) {\n    let i = 0;\n    while (i < a.length && i < b.length) {\n        const diff = b[i] - a[i];\n        // only keep going if diff === 0\n        if (diff)\n            return diff;\n        i++;\n    }\n    // if the last subsegment was Static, the shorter segments should be sorted first\n    // otherwise sort the longest segment first\n    if (a.length < b.length) {\n        return a.length === 1 && a[0] === 40 /* PathScore.Static */ + 40 /* PathScore.Segment */\n            ? -1\n            : 1;\n    }\n    else if (a.length > b.length) {\n        return b.length === 1 && b[0] === 40 /* PathScore.Static */ + 40 /* PathScore.Segment */\n            ? 1\n            : -1;\n    }\n    return 0;\n}\n/**\n * Compare function that can be used with `sort` to sort an array of PathParser\n *\n * @param a - first PathParser\n * @param b - second PathParser\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\n */\nfunction comparePathParserScore(a, b) {\n    let i = 0;\n    const aScore = a.score;\n    const bScore = b.score;\n    while (i < aScore.length && i < bScore.length) {\n        const comp = compareScoreArray(aScore[i], bScore[i]);\n        // do not return if both are equal\n        if (comp)\n            return comp;\n        i++;\n    }\n    if (Math.abs(bScore.length - aScore.length) === 1) {\n        if (isLastScoreNegative(aScore))\n            return 1;\n        if (isLastScoreNegative(bScore))\n            return -1;\n    }\n    // if a and b share the same score entries but b has more, sort b first\n    return bScore.length - aScore.length;\n    // this is the ternary version\n    // return aScore.length < bScore.length\n    //   ? 1\n    //   : aScore.length > bScore.length\n    //   ? -1\n    //   : 0\n}\n/**\n * This allows detecting splats at the end of a path: /home/:id(.*)*\n *\n * @param score - score to check\n * @returns true if the last entry is negative\n */\nfunction isLastScoreNegative(score) {\n    const last = score[score.length - 1];\n    return score.length > 0 && last[last.length - 1] < 0;\n}\n\nconst ROOT_TOKEN = {\n    type: 0 /* TokenType.Static */,\n    value: '',\n};\nconst VALID_PARAM_RE = /[a-zA-Z0-9_]/;\n// After some profiling, the cache seems to be unnecessary because tokenizePath\n// (the slowest part of adding a route) is very fast\n// const tokenCache = new Map<string, Token[][]>()\nfunction tokenizePath(path) {\n    if (!path)\n        return [[]];\n    if (path === '/')\n        return [[ROOT_TOKEN]];\n    if (!path.startsWith('/')) {\n        throw new Error((process.env.NODE_ENV !== 'production')\n            ? `Route paths should start with a \"/\": \"${path}\" should be \"/${path}\".`\n            : `Invalid path \"${path}\"`);\n    }\n    // if (tokenCache.has(path)) return tokenCache.get(path)!\n    function crash(message) {\n        throw new Error(`ERR (${state})/\"${buffer}\": ${message}`);\n    }\n    let state = 0 /* TokenizerState.Static */;\n    let previousState = state;\n    const tokens = [];\n    // the segment will always be valid because we get into the initial state\n    // with the leading /\n    let segment;\n    function finalizeSegment() {\n        if (segment)\n            tokens.push(segment);\n        segment = [];\n    }\n    // index on the path\n    let i = 0;\n    // char at index\n    let char;\n    // buffer of the value read\n    let buffer = '';\n    // custom regexp for a param\n    let customRe = '';\n    function consumeBuffer() {\n        if (!buffer)\n            return;\n        if (state === 0 /* TokenizerState.Static */) {\n            segment.push({\n                type: 0 /* TokenType.Static */,\n                value: buffer,\n            });\n        }\n        else if (state === 1 /* TokenizerState.Param */ ||\n            state === 2 /* TokenizerState.ParamRegExp */ ||\n            state === 3 /* TokenizerState.ParamRegExpEnd */) {\n            if (segment.length > 1 && (char === '*' || char === '+'))\n                crash(`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`);\n            segment.push({\n                type: 1 /* TokenType.Param */,\n                value: buffer,\n                regexp: customRe,\n                repeatable: char === '*' || char === '+',\n                optional: char === '*' || char === '?',\n            });\n        }\n        else {\n            crash('Invalid state to consume buffer');\n        }\n        buffer = '';\n    }\n    function addCharToBuffer() {\n        buffer += char;\n    }\n    while (i < path.length) {\n        char = path[i++];\n        if (char === '\\\\' && state !== 2 /* TokenizerState.ParamRegExp */) {\n            previousState = state;\n            state = 4 /* TokenizerState.EscapeNext */;\n            continue;\n        }\n        switch (state) {\n            case 0 /* TokenizerState.Static */:\n                if (char === '/') {\n                    if (buffer) {\n                        consumeBuffer();\n                    }\n                    finalizeSegment();\n                }\n                else if (char === ':') {\n                    consumeBuffer();\n                    state = 1 /* TokenizerState.Param */;\n                }\n                else {\n                    addCharToBuffer();\n                }\n                break;\n            case 4 /* TokenizerState.EscapeNext */:\n                addCharToBuffer();\n                state = previousState;\n                break;\n            case 1 /* TokenizerState.Param */:\n                if (char === '(') {\n                    state = 2 /* TokenizerState.ParamRegExp */;\n                }\n                else if (VALID_PARAM_RE.test(char)) {\n                    addCharToBuffer();\n                }\n                else {\n                    consumeBuffer();\n                    state = 0 /* TokenizerState.Static */;\n                    // go back one character if we were not modifying\n                    if (char !== '*' && char !== '?' && char !== '+')\n                        i--;\n                }\n                break;\n            case 2 /* TokenizerState.ParamRegExp */:\n                // TODO: is it worth handling nested regexp? like :p(?:prefix_([^/]+)_suffix)\n                // it already works by escaping the closing )\n                // https://paths.esm.dev/?p=AAMeJbiAwQEcDKbAoAAkP60PG2R6QAvgNaA6AFACM2ABuQBB#\n                // is this really something people need since you can also write\n                // /prefix_:p()_suffix\n                if (char === ')') {\n                    // handle the escaped )\n                    if (customRe[customRe.length - 1] == '\\\\')\n                        customRe = customRe.slice(0, -1) + char;\n                    else\n                        state = 3 /* TokenizerState.ParamRegExpEnd */;\n                }\n                else {\n                    customRe += char;\n                }\n                break;\n            case 3 /* TokenizerState.ParamRegExpEnd */:\n                // same as finalizing a param\n                consumeBuffer();\n                state = 0 /* TokenizerState.Static */;\n                // go back one character if we were not modifying\n                if (char !== '*' && char !== '?' && char !== '+')\n                    i--;\n                customRe = '';\n                break;\n            default:\n                crash('Unknown state');\n                break;\n        }\n    }\n    if (state === 2 /* TokenizerState.ParamRegExp */)\n        crash(`Unfinished custom RegExp for param \"${buffer}\"`);\n    consumeBuffer();\n    finalizeSegment();\n    // tokenCache.set(path, tokens)\n    return tokens;\n}\n\nfunction createRouteRecordMatcher(record, parent, options) {\n    const parser = tokensToParser(tokenizePath(record.path), options);\n    // warn against params with the same name\n    if ((process.env.NODE_ENV !== 'production')) {\n        const existingKeys = new Set();\n        for (const key of parser.keys) {\n            if (existingKeys.has(key.name))\n                warn(`Found duplicated params with name \"${key.name}\" for path \"${record.path}\". Only the last one will be available on \"$route.params\".`);\n            existingKeys.add(key.name);\n        }\n    }\n    const matcher = assign(parser, {\n        record,\n        parent,\n        // these needs to be populated by the parent\n        children: [],\n        alias: [],\n    });\n    if (parent) {\n        // both are aliases or both are not aliases\n        // we don't want to mix them because the order is used when\n        // passing originalRecord in Matcher.addRoute\n        if (!matcher.record.aliasOf === !parent.record.aliasOf)\n            parent.children.push(matcher);\n    }\n    return matcher;\n}\n\n/**\n * Creates a Router Matcher.\n *\n * @internal\n * @param routes - array of initial routes\n * @param globalOptions - global route options\n */\nfunction createRouterMatcher(routes, globalOptions) {\n    // normalized ordered array of matchers\n    const matchers = [];\n    const matcherMap = new Map();\n    globalOptions = mergeOptions({ strict: false, end: true, sensitive: false }, globalOptions);\n    function getRecordMatcher(name) {\n        return matcherMap.get(name);\n    }\n    function addRoute(record, parent, originalRecord) {\n        // used later on to remove by name\n        const isRootAdd = !originalRecord;\n        const mainNormalizedRecord = normalizeRouteRecord(record);\n        if ((process.env.NODE_ENV !== 'production')) {\n            checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent);\n        }\n        // we might be the child of an alias\n        mainNormalizedRecord.aliasOf = originalRecord && originalRecord.record;\n        const options = mergeOptions(globalOptions, record);\n        // generate an array of records to correctly handle aliases\n        const normalizedRecords = [\n            mainNormalizedRecord,\n        ];\n        if ('alias' in record) {\n            const aliases = typeof record.alias === 'string' ? [record.alias] : record.alias;\n            for (const alias of aliases) {\n                normalizedRecords.push(assign({}, mainNormalizedRecord, {\n                    // this allows us to hold a copy of the `components` option\n                    // so that async components cache is hold on the original record\n                    components: originalRecord\n                        ? originalRecord.record.components\n                        : mainNormalizedRecord.components,\n                    path: alias,\n                    // we might be the child of an alias\n                    aliasOf: originalRecord\n                        ? originalRecord.record\n                        : mainNormalizedRecord,\n                    // the aliases are always of the same kind as the original since they\n                    // are defined on the same record\n                }));\n            }\n        }\n        let matcher;\n        let originalMatcher;\n        for (const normalizedRecord of normalizedRecords) {\n            const { path } = normalizedRecord;\n            // Build up the path for nested routes if the child isn't an absolute\n            // route. Only add the / delimiter if the child path isn't empty and if the\n            // parent path doesn't have a trailing slash\n            if (parent && path[0] !== '/') {\n                const parentPath = parent.record.path;\n                const connectingSlash = parentPath[parentPath.length - 1] === '/' ? '' : '/';\n                normalizedRecord.path =\n                    parent.record.path + (path && connectingSlash + path);\n            }\n            if ((process.env.NODE_ENV !== 'production') && normalizedRecord.path === '*') {\n                throw new Error('Catch all routes (\"*\") must now be defined using a param with a custom regexp.\\n' +\n                    'See more at https://next.router.vuejs.org/guide/migration/#removed-star-or-catch-all-routes.');\n            }\n            // create the object beforehand, so it can be passed to children\n            matcher = createRouteRecordMatcher(normalizedRecord, parent, options);\n            if ((process.env.NODE_ENV !== 'production') && parent && path[0] === '/')\n                checkMissingParamsInAbsolutePath(matcher, parent);\n            // if we are an alias we must tell the original record that we exist,\n            // so we can be removed\n            if (originalRecord) {\n                originalRecord.alias.push(matcher);\n                if ((process.env.NODE_ENV !== 'production')) {\n                    checkSameParams(originalRecord, matcher);\n                }\n            }\n            else {\n                // otherwise, the first record is the original and others are aliases\n                originalMatcher = originalMatcher || matcher;\n                if (originalMatcher !== matcher)\n                    originalMatcher.alias.push(matcher);\n                // remove the route if named and only for the top record (avoid in nested calls)\n                // this works because the original record is the first one\n                if (isRootAdd && record.name && !isAliasRecord(matcher))\n                    removeRoute(record.name);\n            }\n            if (mainNormalizedRecord.children) {\n                const children = mainNormalizedRecord.children;\n                for (let i = 0; i < children.length; i++) {\n                    addRoute(children[i], matcher, originalRecord && originalRecord.children[i]);\n                }\n            }\n            // if there was no original record, then the first one was not an alias and all\n            // other aliases (if any) need to reference this record when adding children\n            originalRecord = originalRecord || matcher;\n            // TODO: add normalized records for more flexibility\n            // if (parent && isAliasRecord(originalRecord)) {\n            //   parent.children.push(originalRecord)\n            // }\n            // Avoid adding a record that doesn't display anything. This allows passing through records without a component to\n            // not be reached and pass through the catch all route\n            if ((matcher.record.components &&\n                Object.keys(matcher.record.components).length) ||\n                matcher.record.name ||\n                matcher.record.redirect) {\n                insertMatcher(matcher);\n            }\n        }\n        return originalMatcher\n            ? () => {\n                // since other matchers are aliases, they should be removed by the original matcher\n                removeRoute(originalMatcher);\n            }\n            : noop;\n    }\n    function removeRoute(matcherRef) {\n        if (isRouteName(matcherRef)) {\n            const matcher = matcherMap.get(matcherRef);\n            if (matcher) {\n                matcherMap.delete(matcherRef);\n                matchers.splice(matchers.indexOf(matcher), 1);\n                matcher.children.forEach(removeRoute);\n                matcher.alias.forEach(removeRoute);\n            }\n        }\n        else {\n            const index = matchers.indexOf(matcherRef);\n            if (index > -1) {\n                matchers.splice(index, 1);\n                if (matcherRef.record.name)\n                    matcherMap.delete(matcherRef.record.name);\n                matcherRef.children.forEach(removeRoute);\n                matcherRef.alias.forEach(removeRoute);\n            }\n        }\n    }\n    function getRoutes() {\n        return matchers;\n    }\n    function insertMatcher(matcher) {\n        let i = 0;\n        while (i < matchers.length &&\n            comparePathParserScore(matcher, matchers[i]) >= 0 &&\n            // Adding children with empty path should still appear before the parent\n            // https://github.com/vuejs/router/issues/1124\n            (matcher.record.path !== matchers[i].record.path ||\n                !isRecordChildOf(matcher, matchers[i])))\n            i++;\n        matchers.splice(i, 0, matcher);\n        // only add the original record to the name map\n        if (matcher.record.name && !isAliasRecord(matcher))\n            matcherMap.set(matcher.record.name, matcher);\n    }\n    function resolve(location, currentLocation) {\n        let matcher;\n        let params = {};\n        let path;\n        let name;\n        if ('name' in location && location.name) {\n            matcher = matcherMap.get(location.name);\n            if (!matcher)\n                throw createRouterError(1 /* ErrorTypes.MATCHER_NOT_FOUND */, {\n                    location,\n                });\n            // warn if the user is passing invalid params so they can debug it better when they get removed\n            if ((process.env.NODE_ENV !== 'production')) {\n                const invalidParams = Object.keys(location.params || {}).filter(paramName => !matcher.keys.find(k => k.name === paramName));\n                if (invalidParams.length) {\n                    warn(`Discarded invalid param(s) \"${invalidParams.join('\", \"')}\" when navigating. See https://github.com/vuejs/router/blob/main/packages/router/CHANGELOG.md#414-2022-08-22 for more details.`);\n                }\n            }\n            name = matcher.record.name;\n            params = assign(\n            // paramsFromLocation is a new object\n            paramsFromLocation(currentLocation.params, \n            // only keep params that exist in the resolved location\n            // only keep optional params coming from a parent record\n            matcher.keys\n                .filter(k => !k.optional)\n                .concat(matcher.parent ? matcher.parent.keys.filter(k => k.optional) : [])\n                .map(k => k.name)), \n            // discard any existing params in the current location that do not exist here\n            // #1497 this ensures better active/exact matching\n            location.params &&\n                paramsFromLocation(location.params, matcher.keys.map(k => k.name)));\n            // throws if cannot be stringified\n            path = matcher.stringify(params);\n        }\n        else if (location.path != null) {\n            // no need to resolve the path with the matcher as it was provided\n            // this also allows the user to control the encoding\n            path = location.path;\n            if ((process.env.NODE_ENV !== 'production') && !path.startsWith('/')) {\n                warn(`The Matcher cannot resolve relative paths but received \"${path}\". Unless you directly called \\`matcher.resolve(\"${path}\")\\`, this is probably a bug in vue-router. Please open an issue at https://github.com/vuejs/router/issues/new/choose.`);\n            }\n            matcher = matchers.find(m => m.re.test(path));\n            // matcher should have a value after the loop\n            if (matcher) {\n                // we know the matcher works because we tested the regexp\n                params = matcher.parse(path);\n                name = matcher.record.name;\n            }\n            // location is a relative path\n        }\n        else {\n            // match by name or path of current route\n            matcher = currentLocation.name\n                ? matcherMap.get(currentLocation.name)\n                : matchers.find(m => m.re.test(currentLocation.path));\n            if (!matcher)\n                throw createRouterError(1 /* ErrorTypes.MATCHER_NOT_FOUND */, {\n                    location,\n                    currentLocation,\n                });\n            name = matcher.record.name;\n            // since we are navigating to the same location, we don't need to pick the\n            // params like when `name` is provided\n            params = assign({}, currentLocation.params, location.params);\n            path = matcher.stringify(params);\n        }\n        const matched = [];\n        let parentMatcher = matcher;\n        while (parentMatcher) {\n            // reversed order so parents are at the beginning\n            matched.unshift(parentMatcher.record);\n            parentMatcher = parentMatcher.parent;\n        }\n        return {\n            name,\n            path,\n            params,\n            matched,\n            meta: mergeMetaFields(matched),\n        };\n    }\n    // add initial routes\n    routes.forEach(route => addRoute(route));\n    return { addRoute, resolve, removeRoute, getRoutes, getRecordMatcher };\n}\nfunction paramsFromLocation(params, keys) {\n    const newParams = {};\n    for (const key of keys) {\n        if (key in params)\n            newParams[key] = params[key];\n    }\n    return newParams;\n}\n/**\n * Normalizes a RouteRecordRaw. Creates a copy\n *\n * @param record\n * @returns the normalized version\n */\nfunction normalizeRouteRecord(record) {\n    return {\n        path: record.path,\n        redirect: record.redirect,\n        name: record.name,\n        meta: record.meta || {},\n        aliasOf: undefined,\n        beforeEnter: record.beforeEnter,\n        props: normalizeRecordProps(record),\n        children: record.children || [],\n        instances: {},\n        leaveGuards: new Set(),\n        updateGuards: new Set(),\n        enterCallbacks: {},\n        components: 'components' in record\n            ? record.components || null\n            : record.component && { default: record.component },\n    };\n}\n/**\n * Normalize the optional `props` in a record to always be an object similar to\n * components. Also accept a boolean for components.\n * @param record\n */\nfunction normalizeRecordProps(record) {\n    const propsObject = {};\n    // props does not exist on redirect records, but we can set false directly\n    const props = record.props || false;\n    if ('component' in record) {\n        propsObject.default = props;\n    }\n    else {\n        // NOTE: we could also allow a function to be applied to every component.\n        // Would need user feedback for use cases\n        for (const name in record.components)\n            propsObject[name] = typeof props === 'object' ? props[name] : props;\n    }\n    return propsObject;\n}\n/**\n * Checks if a record or any of its parent is an alias\n * @param record\n */\nfunction isAliasRecord(record) {\n    while (record) {\n        if (record.record.aliasOf)\n            return true;\n        record = record.parent;\n    }\n    return false;\n}\n/**\n * Merge meta fields of an array of records\n *\n * @param matched - array of matched records\n */\nfunction mergeMetaFields(matched) {\n    return matched.reduce((meta, record) => assign(meta, record.meta), {});\n}\nfunction mergeOptions(defaults, partialOptions) {\n    const options = {};\n    for (const key in defaults) {\n        options[key] = key in partialOptions ? partialOptions[key] : defaults[key];\n    }\n    return options;\n}\nfunction isSameParam(a, b) {\n    return (a.name === b.name &&\n        a.optional === b.optional &&\n        a.repeatable === b.repeatable);\n}\n/**\n * Check if a path and its alias have the same required params\n *\n * @param a - original record\n * @param b - alias record\n */\nfunction checkSameParams(a, b) {\n    for (const key of a.keys) {\n        if (!key.optional && !b.keys.find(isSameParam.bind(null, key)))\n            return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" must have the exact same param named \"${key.name}\"`);\n    }\n    for (const key of b.keys) {\n        if (!key.optional && !a.keys.find(isSameParam.bind(null, key)))\n            return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" must have the exact same param named \"${key.name}\"`);\n    }\n}\n/**\n * A route with a name and a child with an empty path without a name should warn when adding the route\n *\n * @param mainNormalizedRecord - RouteRecordNormalized\n * @param parent - RouteRecordMatcher\n */\nfunction checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent) {\n    if (parent &&\n        parent.record.name &&\n        !mainNormalizedRecord.name &&\n        !mainNormalizedRecord.path) {\n        warn(`The route named \"${String(parent.record.name)}\" has a child without a name and an empty path. Using that name won't render the empty path child so you probably want to move the name to the child instead. If this is intentional, add a name to the child route to remove the warning.`);\n    }\n}\nfunction checkMissingParamsInAbsolutePath(record, parent) {\n    for (const key of parent.keys) {\n        if (!record.keys.find(isSameParam.bind(null, key)))\n            return warn(`Absolute path \"${record.record.path}\" must have the exact same param named \"${key.name}\" as its parent \"${parent.record.path}\".`);\n    }\n}\nfunction isRecordChildOf(record, parent) {\n    return parent.children.some(child => child === record || isRecordChildOf(record, child));\n}\n\n/**\n * Transforms a queryString into a {@link LocationQuery} object. Accept both, a\n * version with the leading `?` and without Should work as URLSearchParams\n\n * @internal\n *\n * @param search - search string to parse\n * @returns a query object\n */\nfunction parseQuery(search) {\n    const query = {};\n    // avoid creating an object with an empty key and empty value\n    // because of split('&')\n    if (search === '' || search === '?')\n        return query;\n    const hasLeadingIM = search[0] === '?';\n    const searchParams = (hasLeadingIM ? search.slice(1) : search).split('&');\n    for (let i = 0; i < searchParams.length; ++i) {\n        // pre decode the + into space\n        const searchParam = searchParams[i].replace(PLUS_RE, ' ');\n        // allow the = character\n        const eqPos = searchParam.indexOf('=');\n        const key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));\n        const value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));\n        if (key in query) {\n            // an extra variable for ts types\n            let currentValue = query[key];\n            if (!isArray(currentValue)) {\n                currentValue = query[key] = [currentValue];\n            }\n            currentValue.push(value);\n        }\n        else {\n            query[key] = value;\n        }\n    }\n    return query;\n}\n/**\n * Stringifies a {@link LocationQueryRaw} object. Like `URLSearchParams`, it\n * doesn't prepend a `?`\n *\n * @internal\n *\n * @param query - query object to stringify\n * @returns string version of the query without the leading `?`\n */\nfunction stringifyQuery(query) {\n    let search = '';\n    for (let key in query) {\n        const value = query[key];\n        key = encodeQueryKey(key);\n        if (value == null) {\n            // only null adds the value\n            if (value !== undefined) {\n                search += (search.length ? '&' : '') + key;\n            }\n            continue;\n        }\n        // keep null values\n        const values = isArray(value)\n            ? value.map(v => v && encodeQueryValue(v))\n            : [value && encodeQueryValue(value)];\n        values.forEach(value => {\n            // skip undefined values in arrays as if they were not present\n            // smaller code than using filter\n            if (value !== undefined) {\n                // only append & with non-empty search\n                search += (search.length ? '&' : '') + key;\n                if (value != null)\n                    search += '=' + value;\n            }\n        });\n    }\n    return search;\n}\n/**\n * Transforms a {@link LocationQueryRaw} into a {@link LocationQuery} by casting\n * numbers into strings, removing keys with an undefined value and replacing\n * undefined with null in arrays\n *\n * @param query - query object to normalize\n * @returns a normalized query object\n */\nfunction normalizeQuery(query) {\n    const normalizedQuery = {};\n    for (const key in query) {\n        const value = query[key];\n        if (value !== undefined) {\n            normalizedQuery[key] = isArray(value)\n                ? value.map(v => (v == null ? null : '' + v))\n                : value == null\n                    ? value\n                    : '' + value;\n        }\n    }\n    return normalizedQuery;\n}\n\n/**\n * RouteRecord being rendered by the closest ancestor Router View. Used for\n * `onBeforeRouteUpdate` and `onBeforeRouteLeave`. rvlm stands for Router View\n * Location Matched\n *\n * @internal\n */\nconst matchedRouteKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view location matched' : '');\n/**\n * Allows overriding the router view depth to control which component in\n * `matched` is rendered. rvd stands for Router View Depth\n *\n * @internal\n */\nconst viewDepthKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view depth' : '');\n/**\n * Allows overriding the router instance returned by `useRouter` in tests. r\n * stands for router\n *\n * @internal\n */\nconst routerKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router' : '');\n/**\n * Allows overriding the current route returned by `useRoute` in tests. rl\n * stands for route location\n *\n * @internal\n */\nconst routeLocationKey = Symbol((process.env.NODE_ENV !== 'production') ? 'route location' : '');\n/**\n * Allows overriding the current route used by router-view. Internally this is\n * used when the `route` prop is passed.\n *\n * @internal\n */\nconst routerViewLocationKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view location' : '');\n\n/**\n * Create a list of callbacks that can be reset. Used to create before and after navigation guards list\n */\nfunction useCallbacks() {\n    let handlers = [];\n    function add(handler) {\n        handlers.push(handler);\n        return () => {\n            const i = handlers.indexOf(handler);\n            if (i > -1)\n                handlers.splice(i, 1);\n        };\n    }\n    function reset() {\n        handlers = [];\n    }\n    return {\n        add,\n        list: () => handlers.slice(),\n        reset,\n    };\n}\n\nfunction registerGuard(record, name, guard) {\n    const removeFromList = () => {\n        record[name].delete(guard);\n    };\n    onUnmounted(removeFromList);\n    onDeactivated(removeFromList);\n    onActivated(() => {\n        record[name].add(guard);\n    });\n    record[name].add(guard);\n}\n/**\n * Add a navigation guard that triggers whenever the component for the current\n * location is about to be left. Similar to {@link beforeRouteLeave} but can be\n * used in any component. The guard is removed when the component is unmounted.\n *\n * @param leaveGuard - {@link NavigationGuard}\n */\nfunction onBeforeRouteLeave(leaveGuard) {\n    if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\n        warn('getCurrentInstance() returned null. onBeforeRouteLeave() must be called at the top of a setup function');\n        return;\n    }\n    const activeRecord = inject(matchedRouteKey, \n    // to avoid warning\n    {}).value;\n    if (!activeRecord) {\n        (process.env.NODE_ENV !== 'production') &&\n            warn('No active route record was found when calling `onBeforeRouteLeave()`. Make sure you call this function inside a component child of <router-view>. Maybe you called it inside of App.vue?');\n        return;\n    }\n    registerGuard(activeRecord, 'leaveGuards', leaveGuard);\n}\n/**\n * Add a navigation guard that triggers whenever the current location is about\n * to be updated. Similar to {@link beforeRouteUpdate} but can be used in any\n * component. The guard is removed when the component is unmounted.\n *\n * @param updateGuard - {@link NavigationGuard}\n */\nfunction onBeforeRouteUpdate(updateGuard) {\n    if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\n        warn('getCurrentInstance() returned null. onBeforeRouteUpdate() must be called at the top of a setup function');\n        return;\n    }\n    const activeRecord = inject(matchedRouteKey, \n    // to avoid warning\n    {}).value;\n    if (!activeRecord) {\n        (process.env.NODE_ENV !== 'production') &&\n            warn('No active route record was found when calling `onBeforeRouteUpdate()`. Make sure you call this function inside a component child of <router-view>. Maybe you called it inside of App.vue?');\n        return;\n    }\n    registerGuard(activeRecord, 'updateGuards', updateGuard);\n}\nfunction guardToPromiseFn(guard, to, from, record, name, runWithContext = fn => fn()) {\n    // keep a reference to the enterCallbackArray to prevent pushing callbacks if a new navigation took place\n    const enterCallbackArray = record &&\n        // name is defined if record is because of the function overload\n        (record.enterCallbacks[name] = record.enterCallbacks[name] || []);\n    return () => new Promise((resolve, reject) => {\n        const next = (valid) => {\n            if (valid === false) {\n                reject(createRouterError(4 /* ErrorTypes.NAVIGATION_ABORTED */, {\n                    from,\n                    to,\n                }));\n            }\n            else if (valid instanceof Error) {\n                reject(valid);\n            }\n            else if (isRouteLocation(valid)) {\n                reject(createRouterError(2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */, {\n                    from: to,\n                    to: valid,\n                }));\n            }\n            else {\n                if (enterCallbackArray &&\n                    // since enterCallbackArray is truthy, both record and name also are\n                    record.enterCallbacks[name] === enterCallbackArray &&\n                    typeof valid === 'function') {\n                    enterCallbackArray.push(valid);\n                }\n                resolve();\n            }\n        };\n        // wrapping with Promise.resolve allows it to work with both async and sync guards\n        const guardReturn = runWithContext(() => guard.call(record && record.instances[name], to, from, (process.env.NODE_ENV !== 'production') ? canOnlyBeCalledOnce(next, to, from) : next));\n        let guardCall = Promise.resolve(guardReturn);\n        if (guard.length < 3)\n            guardCall = guardCall.then(next);\n        if ((process.env.NODE_ENV !== 'production') && guard.length > 2) {\n            const message = `The \"next\" callback was never called inside of ${guard.name ? '\"' + guard.name + '\"' : ''}:\\n${guard.toString()}\\n. If you are returning a value instead of calling \"next\", make sure to remove the \"next\" parameter from your function.`;\n            if (typeof guardReturn === 'object' && 'then' in guardReturn) {\n                guardCall = guardCall.then(resolvedValue => {\n                    // @ts-expect-error: _called is added at canOnlyBeCalledOnce\n                    if (!next._called) {\n                        warn(message);\n                        return Promise.reject(new Error('Invalid navigation guard'));\n                    }\n                    return resolvedValue;\n                });\n            }\n            else if (guardReturn !== undefined) {\n                // @ts-expect-error: _called is added at canOnlyBeCalledOnce\n                if (!next._called) {\n                    warn(message);\n                    reject(new Error('Invalid navigation guard'));\n                    return;\n                }\n            }\n        }\n        guardCall.catch(err => reject(err));\n    });\n}\nfunction canOnlyBeCalledOnce(next, to, from) {\n    let called = 0;\n    return function () {\n        if (called++ === 1)\n            warn(`The \"next\" callback was called more than once in one navigation guard when going from \"${from.fullPath}\" to \"${to.fullPath}\". It should be called exactly one time in each navigation guard. This will fail in production.`);\n        // @ts-expect-error: we put it in the original one because it's easier to check\n        next._called = true;\n        if (called === 1)\n            next.apply(null, arguments);\n    };\n}\nfunction extractComponentsGuards(matched, guardType, to, from, runWithContext = fn => fn()) {\n    const guards = [];\n    for (const record of matched) {\n        if ((process.env.NODE_ENV !== 'production') && !record.components && !record.children.length) {\n            warn(`Record with path \"${record.path}\" is either missing a \"component(s)\"` +\n                ` or \"children\" property.`);\n        }\n        for (const name in record.components) {\n            let rawComponent = record.components[name];\n            if ((process.env.NODE_ENV !== 'production')) {\n                if (!rawComponent ||\n                    (typeof rawComponent !== 'object' &&\n                        typeof rawComponent !== 'function')) {\n                    warn(`Component \"${name}\" in record with path \"${record.path}\" is not` +\n                        ` a valid component. Received \"${String(rawComponent)}\".`);\n                    // throw to ensure we stop here but warn to ensure the message isn't\n                    // missed by the user\n                    throw new Error('Invalid route component');\n                }\n                else if ('then' in rawComponent) {\n                    // warn if user wrote import('/component.vue') instead of () =>\n                    // import('./component.vue')\n                    warn(`Component \"${name}\" in record with path \"${record.path}\" is a ` +\n                        `Promise instead of a function that returns a Promise. Did you ` +\n                        `write \"import('./MyPage.vue')\" instead of ` +\n                        `\"() => import('./MyPage.vue')\" ? This will break in ` +\n                        `production if not fixed.`);\n                    const promise = rawComponent;\n                    rawComponent = () => promise;\n                }\n                else if (rawComponent.__asyncLoader &&\n                    // warn only once per component\n                    !rawComponent.__warnedDefineAsync) {\n                    rawComponent.__warnedDefineAsync = true;\n                    warn(`Component \"${name}\" in record with path \"${record.path}\" is defined ` +\n                        `using \"defineAsyncComponent()\". ` +\n                        `Write \"() => import('./MyPage.vue')\" instead of ` +\n                        `\"defineAsyncComponent(() => import('./MyPage.vue'))\".`);\n                }\n            }\n            // skip update and leave guards if the route component is not mounted\n            if (guardType !== 'beforeRouteEnter' && !record.instances[name])\n                continue;\n            if (isRouteComponent(rawComponent)) {\n                // __vccOpts is added by vue-class-component and contain the regular options\n                const options = rawComponent.__vccOpts || rawComponent;\n                const guard = options[guardType];\n                guard &&\n                    guards.push(guardToPromiseFn(guard, to, from, record, name, runWithContext));\n            }\n            else {\n                // start requesting the chunk already\n                let componentPromise = rawComponent();\n                if ((process.env.NODE_ENV !== 'production') && !('catch' in componentPromise)) {\n                    warn(`Component \"${name}\" in record with path \"${record.path}\" is a function that does not return a Promise. If you were passing a functional component, make sure to add a \"displayName\" to the component. This will break in production if not fixed.`);\n                    componentPromise = Promise.resolve(componentPromise);\n                }\n                guards.push(() => componentPromise.then(resolved => {\n                    if (!resolved)\n                        return Promise.reject(new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\"`));\n                    const resolvedComponent = isESModule(resolved)\n                        ? resolved.default\n                        : resolved;\n                    // replace the function with the resolved component\n                    // cannot be null or undefined because we went into the for loop\n                    record.components[name] = resolvedComponent;\n                    // __vccOpts is added by vue-class-component and contain the regular options\n                    const options = resolvedComponent.__vccOpts || resolvedComponent;\n                    const guard = options[guardType];\n                    return (guard &&\n                        guardToPromiseFn(guard, to, from, record, name, runWithContext)());\n                }));\n            }\n        }\n    }\n    return guards;\n}\n/**\n * Allows differentiating lazy components from functional components and vue-class-component\n * @internal\n *\n * @param component\n */\nfunction isRouteComponent(component) {\n    return (typeof component === 'object' ||\n        'displayName' in component ||\n        'props' in component ||\n        '__vccOpts' in component);\n}\n/**\n * Ensures a route is loaded, so it can be passed as o prop to `<RouterView>`.\n *\n * @param route - resolved route to load\n */\nfunction loadRouteLocation(route) {\n    return route.matched.every(record => record.redirect)\n        ? Promise.reject(new Error('Cannot load a route that redirects.'))\n        : Promise.all(route.matched.map(record => record.components &&\n            Promise.all(Object.keys(record.components).reduce((promises, name) => {\n                const rawComponent = record.components[name];\n                if (typeof rawComponent === 'function' &&\n                    !('displayName' in rawComponent)) {\n                    promises.push(rawComponent().then(resolved => {\n                        if (!resolved)\n                            return Promise.reject(new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\". Ensure you passed a function that returns a promise.`));\n                        const resolvedComponent = isESModule(resolved)\n                            ? resolved.default\n                            : resolved;\n                        // replace the function with the resolved component\n                        // cannot be null or undefined because we went into the for loop\n                        record.components[name] = resolvedComponent;\n                        return;\n                    }));\n                }\n                return promises;\n            }, [])))).then(() => route);\n}\n\n// TODO: we could allow currentRoute as a prop to expose `isActive` and\n// `isExactActive` behavior should go through an RFC\nfunction useLink(props) {\n    const router = inject(routerKey);\n    const currentRoute = inject(routeLocationKey);\n    const route = computed(() => router.resolve(unref(props.to)));\n    const activeRecordIndex = computed(() => {\n        const { matched } = route.value;\n        const { length } = matched;\n        const routeMatched = matched[length - 1];\n        const currentMatched = currentRoute.matched;\n        if (!routeMatched || !currentMatched.length)\n            return -1;\n        const index = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched));\n        if (index > -1)\n            return index;\n        // possible parent record\n        const parentRecordPath = getOriginalPath(matched[length - 2]);\n        return (\n        // we are dealing with nested routes\n        length > 1 &&\n            // if the parent and matched route have the same path, this link is\n            // referring to the empty child. Or we currently are on a different\n            // child of the same parent\n            getOriginalPath(routeMatched) === parentRecordPath &&\n            // avoid comparing the child with its parent\n            currentMatched[currentMatched.length - 1].path !== parentRecordPath\n            ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length - 2]))\n            : index);\n    });\n    const isActive = computed(() => activeRecordIndex.value > -1 &&\n        includesParams(currentRoute.params, route.value.params));\n    const isExactActive = computed(() => activeRecordIndex.value > -1 &&\n        activeRecordIndex.value === currentRoute.matched.length - 1 &&\n        isSameRouteLocationParams(currentRoute.params, route.value.params));\n    function navigate(e = {}) {\n        if (guardEvent(e)) {\n            return router[unref(props.replace) ? 'replace' : 'push'](unref(props.to)\n            // avoid uncaught errors are they are logged anyway\n            ).catch(noop);\n        }\n        return Promise.resolve();\n    }\n    // devtools only\n    if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\n        const instance = getCurrentInstance();\n        if (instance) {\n            const linkContextDevtools = {\n                route: route.value,\n                isActive: isActive.value,\n                isExactActive: isExactActive.value,\n            };\n            // @ts-expect-error: this is internal\n            instance.__vrl_devtools = instance.__vrl_devtools || [];\n            // @ts-expect-error: this is internal\n            instance.__vrl_devtools.push(linkContextDevtools);\n            watchEffect(() => {\n                linkContextDevtools.route = route.value;\n                linkContextDevtools.isActive = isActive.value;\n                linkContextDevtools.isExactActive = isExactActive.value;\n            }, { flush: 'post' });\n        }\n    }\n    /**\n     * NOTE: update {@link _RouterLinkI}'s `$slots` type when updating this\n     */\n    return {\n        route,\n        href: computed(() => route.value.href),\n        isActive,\n        isExactActive,\n        navigate,\n    };\n}\nconst RouterLinkImpl = /*#__PURE__*/ defineComponent({\n    name: 'RouterLink',\n    compatConfig: { MODE: 3 },\n    props: {\n        to: {\n            type: [String, Object],\n            required: true,\n        },\n        replace: Boolean,\n        activeClass: String,\n        // inactiveClass: String,\n        exactActiveClass: String,\n        custom: Boolean,\n        ariaCurrentValue: {\n            type: String,\n            default: 'page',\n        },\n    },\n    useLink,\n    setup(props, { slots }) {\n        const link = reactive(useLink(props));\n        const { options } = inject(routerKey);\n        const elClass = computed(() => ({\n            [getLinkClass(props.activeClass, options.linkActiveClass, 'router-link-active')]: link.isActive,\n            // [getLinkClass(\n            //   props.inactiveClass,\n            //   options.linkInactiveClass,\n            //   'router-link-inactive'\n            // )]: !link.isExactActive,\n            [getLinkClass(props.exactActiveClass, options.linkExactActiveClass, 'router-link-exact-active')]: link.isExactActive,\n        }));\n        return () => {\n            const children = slots.default && slots.default(link);\n            return props.custom\n                ? children\n                : h('a', {\n                    'aria-current': link.isExactActive\n                        ? props.ariaCurrentValue\n                        : null,\n                    href: link.href,\n                    // this would override user added attrs but Vue will still add\n                    // the listener, so we end up triggering both\n                    onClick: link.navigate,\n                    class: elClass.value,\n                }, children);\n        };\n    },\n});\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\n/**\n * Component to render a link that triggers a navigation on click.\n */\nconst RouterLink = RouterLinkImpl;\nfunction guardEvent(e) {\n    // don't redirect with control keys\n    if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n        return;\n    // don't redirect when preventDefault called\n    if (e.defaultPrevented)\n        return;\n    // don't redirect on right click\n    if (e.button !== undefined && e.button !== 0)\n        return;\n    // don't redirect if `target=\"_blank\"`\n    // @ts-expect-error getAttribute does exist\n    if (e.currentTarget && e.currentTarget.getAttribute) {\n        // @ts-expect-error getAttribute exists\n        const target = e.currentTarget.getAttribute('target');\n        if (/\\b_blank\\b/i.test(target))\n            return;\n    }\n    // this may be a Weex event which doesn't have this method\n    if (e.preventDefault)\n        e.preventDefault();\n    return true;\n}\nfunction includesParams(outer, inner) {\n    for (const key in inner) {\n        const innerValue = inner[key];\n        const outerValue = outer[key];\n        if (typeof innerValue === 'string') {\n            if (innerValue !== outerValue)\n                return false;\n        }\n        else {\n            if (!isArray(outerValue) ||\n                outerValue.length !== innerValue.length ||\n                innerValue.some((value, i) => value !== outerValue[i]))\n                return false;\n        }\n    }\n    return true;\n}\n/**\n * Get the original path value of a record by following its aliasOf\n * @param record\n */\nfunction getOriginalPath(record) {\n    return record ? (record.aliasOf ? record.aliasOf.path : record.path) : '';\n}\n/**\n * Utility class to get the active class based on defaults.\n * @param propClass\n * @param globalClass\n * @param defaultClass\n */\nconst getLinkClass = (propClass, globalClass, defaultClass) => propClass != null\n    ? propClass\n    : globalClass != null\n        ? globalClass\n        : defaultClass;\n\nconst RouterViewImpl = /*#__PURE__*/ defineComponent({\n    name: 'RouterView',\n    // #674 we manually inherit them\n    inheritAttrs: false,\n    props: {\n        name: {\n            type: String,\n            default: 'default',\n        },\n        route: Object,\n    },\n    // Better compat for @vue/compat users\n    // https://github.com/vuejs/router/issues/1315\n    compatConfig: { MODE: 3 },\n    setup(props, { attrs, slots }) {\n        (process.env.NODE_ENV !== 'production') && warnDeprecatedUsage();\n        const injectedRoute = inject(routerViewLocationKey);\n        const routeToDisplay = computed(() => props.route || injectedRoute.value);\n        const injectedDepth = inject(viewDepthKey, 0);\n        // The depth changes based on empty components option, which allows passthrough routes e.g. routes with children\n        // that are used to reuse the `path` property\n        const depth = computed(() => {\n            let initialDepth = unref(injectedDepth);\n            const { matched } = routeToDisplay.value;\n            let matchedRoute;\n            while ((matchedRoute = matched[initialDepth]) &&\n                !matchedRoute.components) {\n                initialDepth++;\n            }\n            return initialDepth;\n        });\n        const matchedRouteRef = computed(() => routeToDisplay.value.matched[depth.value]);\n        provide(viewDepthKey, computed(() => depth.value + 1));\n        provide(matchedRouteKey, matchedRouteRef);\n        provide(routerViewLocationKey, routeToDisplay);\n        const viewRef = ref();\n        // watch at the same time the component instance, the route record we are\n        // rendering, and the name\n        watch(() => [viewRef.value, matchedRouteRef.value, props.name], ([instance, to, name], [oldInstance, from, oldName]) => {\n            // copy reused instances\n            if (to) {\n                // this will update the instance for new instances as well as reused\n                // instances when navigating to a new route\n                to.instances[name] = instance;\n                // the component instance is reused for a different route or name, so\n                // we copy any saved update or leave guards. With async setup, the\n                // mounting component will mount before the matchedRoute changes,\n                // making instance === oldInstance, so we check if guards have been\n                // added before. This works because we remove guards when\n                // unmounting/deactivating components\n                if (from && from !== to && instance && instance === oldInstance) {\n                    if (!to.leaveGuards.size) {\n                        to.leaveGuards = from.leaveGuards;\n                    }\n                    if (!to.updateGuards.size) {\n                        to.updateGuards = from.updateGuards;\n                    }\n                }\n            }\n            // trigger beforeRouteEnter next callbacks\n            if (instance &&\n                to &&\n                // if there is no instance but to and from are the same this might be\n                // the first visit\n                (!from || !isSameRouteRecord(to, from) || !oldInstance)) {\n                (to.enterCallbacks[name] || []).forEach(callback => callback(instance));\n            }\n        }, { flush: 'post' });\n        return () => {\n            const route = routeToDisplay.value;\n            // we need the value at the time we render because when we unmount, we\n            // navigated to a different location so the value is different\n            const currentName = props.name;\n            const matchedRoute = matchedRouteRef.value;\n            const ViewComponent = matchedRoute && matchedRoute.components[currentName];\n            if (!ViewComponent) {\n                return normalizeSlot(slots.default, { Component: ViewComponent, route });\n            }\n            // props from route configuration\n            const routePropsOption = matchedRoute.props[currentName];\n            const routeProps = routePropsOption\n                ? routePropsOption === true\n                    ? route.params\n                    : typeof routePropsOption === 'function'\n                        ? routePropsOption(route)\n                        : routePropsOption\n                : null;\n            const onVnodeUnmounted = vnode => {\n                // remove the instance reference to prevent leak\n                if (vnode.component.isUnmounted) {\n                    matchedRoute.instances[currentName] = null;\n                }\n            };\n            const component = h(ViewComponent, assign({}, routeProps, attrs, {\n                onVnodeUnmounted,\n                ref: viewRef,\n            }));\n            if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n                isBrowser &&\n                component.ref) {\n                // TODO: can display if it's an alias, its props\n                const info = {\n                    depth: depth.value,\n                    name: matchedRoute.name,\n                    path: matchedRoute.path,\n                    meta: matchedRoute.meta,\n                };\n                const internalInstances = isArray(component.ref)\n                    ? component.ref.map(r => r.i)\n                    : [component.ref.i];\n                internalInstances.forEach(instance => {\n                    // @ts-expect-error\n                    instance.__vrv_devtools = info;\n                });\n            }\n            return (\n            // pass the vnode to the slot as a prop.\n            // h and <component :is=\"...\"> both accept vnodes\n            normalizeSlot(slots.default, { Component: component, route }) ||\n                component);\n        };\n    },\n});\nfunction normalizeSlot(slot, data) {\n    if (!slot)\n        return null;\n    const slotContent = slot(data);\n    return slotContent.length === 1 ? slotContent[0] : slotContent;\n}\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\n/**\n * Component to display the current route the user is at.\n */\nconst RouterView = RouterViewImpl;\n// warn against deprecated usage with <transition> & <keep-alive>\n// due to functional component being no longer eager in Vue 3\nfunction warnDeprecatedUsage() {\n    const instance = getCurrentInstance();\n    const parentName = instance.parent && instance.parent.type.name;\n    const parentSubTreeType = instance.parent && instance.parent.subTree && instance.parent.subTree.type;\n    if (parentName &&\n        (parentName === 'KeepAlive' || parentName.includes('Transition')) &&\n        typeof parentSubTreeType === 'object' &&\n        parentSubTreeType.name === 'RouterView') {\n        const comp = parentName === 'KeepAlive' ? 'keep-alive' : 'transition';\n        warn(`<router-view> can no longer be used directly inside <transition> or <keep-alive>.\\n` +\n            `Use slot props instead:\\n\\n` +\n            `<router-view v-slot=\"{ Component }\">\\n` +\n            `  <${comp}>\\n` +\n            `    <component :is=\"Component\" />\\n` +\n            `  </${comp}>\\n` +\n            `</router-view>`);\n    }\n}\n\n/**\n * Copies a route location and removes any problematic properties that cannot be shown in devtools (e.g. Vue instances).\n *\n * @param routeLocation - routeLocation to format\n * @param tooltip - optional tooltip\n * @returns a copy of the routeLocation\n */\nfunction formatRouteLocation(routeLocation, tooltip) {\n    const copy = assign({}, routeLocation, {\n        // remove variables that can contain vue instances\n        matched: routeLocation.matched.map(matched => omit(matched, ['instances', 'children', 'aliasOf'])),\n    });\n    return {\n        _custom: {\n            type: null,\n            readOnly: true,\n            display: routeLocation.fullPath,\n            tooltip,\n            value: copy,\n        },\n    };\n}\nfunction formatDisplay(display) {\n    return {\n        _custom: {\n            display,\n        },\n    };\n}\n// to support multiple router instances\nlet routerId = 0;\nfunction addDevtools(app, router, matcher) {\n    // Take over router.beforeEach and afterEach\n    // make sure we are not registering the devtool twice\n    if (router.__hasDevtools)\n        return;\n    router.__hasDevtools = true;\n    // increment to support multiple router instances\n    const id = routerId++;\n    setupDevtoolsPlugin({\n        id: 'org.vuejs.router' + (id ? '.' + id : ''),\n        label: 'Vue Router',\n        packageName: 'vue-router',\n        homepage: 'https://router.vuejs.org',\n        logo: 'https://router.vuejs.org/logo.png',\n        componentStateTypes: ['Routing'],\n        app,\n    }, api => {\n        if (typeof api.now !== 'function') {\n            console.warn('[Vue Router]: You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\n        }\n        // display state added by the router\n        api.on.inspectComponent((payload, ctx) => {\n            if (payload.instanceData) {\n                payload.instanceData.state.push({\n                    type: 'Routing',\n                    key: '$route',\n                    editable: false,\n                    value: formatRouteLocation(router.currentRoute.value, 'Current Route'),\n                });\n            }\n        });\n        // mark router-link as active and display tags on router views\n        api.on.visitComponentTree(({ treeNode: node, componentInstance }) => {\n            if (componentInstance.__vrv_devtools) {\n                const info = componentInstance.__vrv_devtools;\n                node.tags.push({\n                    label: (info.name ? `${info.name.toString()}: ` : '') + info.path,\n                    textColor: 0,\n                    tooltip: 'This component is rendered by &lt;router-view&gt;',\n                    backgroundColor: PINK_500,\n                });\n            }\n            // if multiple useLink are used\n            if (isArray(componentInstance.__vrl_devtools)) {\n                componentInstance.__devtoolsApi = api;\n                componentInstance.__vrl_devtools.forEach(devtoolsData => {\n                    let backgroundColor = ORANGE_400;\n                    let tooltip = '';\n                    if (devtoolsData.isExactActive) {\n                        backgroundColor = LIME_500;\n                        tooltip = 'This is exactly active';\n                    }\n                    else if (devtoolsData.isActive) {\n                        backgroundColor = BLUE_600;\n                        tooltip = 'This link is active';\n                    }\n                    node.tags.push({\n                        label: devtoolsData.route.path,\n                        textColor: 0,\n                        tooltip,\n                        backgroundColor,\n                    });\n                });\n            }\n        });\n        watch(router.currentRoute, () => {\n            // refresh active state\n            refreshRoutesView();\n            api.notifyComponentUpdate();\n            api.sendInspectorTree(routerInspectorId);\n            api.sendInspectorState(routerInspectorId);\n        });\n        const navigationsLayerId = 'router:navigations:' + id;\n        api.addTimelineLayer({\n            id: navigationsLayerId,\n            label: `Router${id ? ' ' + id : ''} Navigations`,\n            color: 0x40a8c4,\n        });\n        // const errorsLayerId = 'router:errors'\n        // api.addTimelineLayer({\n        //   id: errorsLayerId,\n        //   label: 'Router Errors',\n        //   color: 0xea5455,\n        // })\n        router.onError((error, to) => {\n            api.addTimelineEvent({\n                layerId: navigationsLayerId,\n                event: {\n                    title: 'Error during Navigation',\n                    subtitle: to.fullPath,\n                    logType: 'error',\n                    time: api.now(),\n                    data: { error },\n                    groupId: to.meta.__navigationId,\n                },\n            });\n        });\n        // attached to `meta` and used to group events\n        let navigationId = 0;\n        router.beforeEach((to, from) => {\n            const data = {\n                guard: formatDisplay('beforeEach'),\n                from: formatRouteLocation(from, 'Current Location during this navigation'),\n                to: formatRouteLocation(to, 'Target location'),\n            };\n            // Used to group navigations together, hide from devtools\n            Object.defineProperty(to.meta, '__navigationId', {\n                value: navigationId++,\n            });\n            api.addTimelineEvent({\n                layerId: navigationsLayerId,\n                event: {\n                    time: api.now(),\n                    title: 'Start of navigation',\n                    subtitle: to.fullPath,\n                    data,\n                    groupId: to.meta.__navigationId,\n                },\n            });\n        });\n        router.afterEach((to, from, failure) => {\n            const data = {\n                guard: formatDisplay('afterEach'),\n            };\n            if (failure) {\n                data.failure = {\n                    _custom: {\n                        type: Error,\n                        readOnly: true,\n                        display: failure ? failure.message : '',\n                        tooltip: 'Navigation Failure',\n                        value: failure,\n                    },\n                };\n                data.status = formatDisplay('❌');\n            }\n            else {\n                data.status = formatDisplay('✅');\n            }\n            // we set here to have the right order\n            data.from = formatRouteLocation(from, 'Current Location during this navigation');\n            data.to = formatRouteLocation(to, 'Target location');\n            api.addTimelineEvent({\n                layerId: navigationsLayerId,\n                event: {\n                    title: 'End of navigation',\n                    subtitle: to.fullPath,\n                    time: api.now(),\n                    data,\n                    logType: failure ? 'warning' : 'default',\n                    groupId: to.meta.__navigationId,\n                },\n            });\n        });\n        /**\n         * Inspector of Existing routes\n         */\n        const routerInspectorId = 'router-inspector:' + id;\n        api.addInspector({\n            id: routerInspectorId,\n            label: 'Routes' + (id ? ' ' + id : ''),\n            icon: 'book',\n            treeFilterPlaceholder: 'Search routes',\n        });\n        function refreshRoutesView() {\n            // the routes view isn't active\n            if (!activeRoutesPayload)\n                return;\n            const payload = activeRoutesPayload;\n            // children routes will appear as nested\n            let routes = matcher.getRoutes().filter(route => !route.parent ||\n                // these routes have a parent with no component which will not appear in the view\n                // therefore we still need to include them\n                !route.parent.record.components);\n            // reset match state to false\n            routes.forEach(resetMatchStateOnRouteRecord);\n            // apply a match state if there is a payload\n            if (payload.filter) {\n                routes = routes.filter(route => \n                // save matches state based on the payload\n                isRouteMatching(route, payload.filter.toLowerCase()));\n            }\n            // mark active routes\n            routes.forEach(route => markRouteRecordActive(route, router.currentRoute.value));\n            payload.rootNodes = routes.map(formatRouteRecordForInspector);\n        }\n        let activeRoutesPayload;\n        api.on.getInspectorTree(payload => {\n            activeRoutesPayload = payload;\n            if (payload.app === app && payload.inspectorId === routerInspectorId) {\n                refreshRoutesView();\n            }\n        });\n        /**\n         * Display information about the currently selected route record\n         */\n        api.on.getInspectorState(payload => {\n            if (payload.app === app && payload.inspectorId === routerInspectorId) {\n                const routes = matcher.getRoutes();\n                const route = routes.find(route => route.record.__vd_id === payload.nodeId);\n                if (route) {\n                    payload.state = {\n                        options: formatRouteRecordMatcherForStateInspector(route),\n                    };\n                }\n            }\n        });\n        api.sendInspectorTree(routerInspectorId);\n        api.sendInspectorState(routerInspectorId);\n    });\n}\nfunction modifierForKey(key) {\n    if (key.optional) {\n        return key.repeatable ? '*' : '?';\n    }\n    else {\n        return key.repeatable ? '+' : '';\n    }\n}\nfunction formatRouteRecordMatcherForStateInspector(route) {\n    const { record } = route;\n    const fields = [\n        { editable: false, key: 'path', value: record.path },\n    ];\n    if (record.name != null) {\n        fields.push({\n            editable: false,\n            key: 'name',\n            value: record.name,\n        });\n    }\n    fields.push({ editable: false, key: 'regexp', value: route.re });\n    if (route.keys.length) {\n        fields.push({\n            editable: false,\n            key: 'keys',\n            value: {\n                _custom: {\n                    type: null,\n                    readOnly: true,\n                    display: route.keys\n                        .map(key => `${key.name}${modifierForKey(key)}`)\n                        .join(' '),\n                    tooltip: 'Param keys',\n                    value: route.keys,\n                },\n            },\n        });\n    }\n    if (record.redirect != null) {\n        fields.push({\n            editable: false,\n            key: 'redirect',\n            value: record.redirect,\n        });\n    }\n    if (route.alias.length) {\n        fields.push({\n            editable: false,\n            key: 'aliases',\n            value: route.alias.map(alias => alias.record.path),\n        });\n    }\n    if (Object.keys(route.record.meta).length) {\n        fields.push({\n            editable: false,\n            key: 'meta',\n            value: route.record.meta,\n        });\n    }\n    fields.push({\n        key: 'score',\n        editable: false,\n        value: {\n            _custom: {\n                type: null,\n                readOnly: true,\n                display: route.score.map(score => score.join(', ')).join(' | '),\n                tooltip: 'Score used to sort routes',\n                value: route.score,\n            },\n        },\n    });\n    return fields;\n}\n/**\n * Extracted from tailwind palette\n */\nconst PINK_500 = 0xec4899;\nconst BLUE_600 = 0x2563eb;\nconst LIME_500 = 0x84cc16;\nconst CYAN_400 = 0x22d3ee;\nconst ORANGE_400 = 0xfb923c;\n// const GRAY_100 = 0xf4f4f5\nconst DARK = 0x666666;\nfunction formatRouteRecordForInspector(route) {\n    const tags = [];\n    const { record } = route;\n    if (record.name != null) {\n        tags.push({\n            label: String(record.name),\n            textColor: 0,\n            backgroundColor: CYAN_400,\n        });\n    }\n    if (record.aliasOf) {\n        tags.push({\n            label: 'alias',\n            textColor: 0,\n            backgroundColor: ORANGE_400,\n        });\n    }\n    if (route.__vd_match) {\n        tags.push({\n            label: 'matches',\n            textColor: 0,\n            backgroundColor: PINK_500,\n        });\n    }\n    if (route.__vd_exactActive) {\n        tags.push({\n            label: 'exact',\n            textColor: 0,\n            backgroundColor: LIME_500,\n        });\n    }\n    if (route.__vd_active) {\n        tags.push({\n            label: 'active',\n            textColor: 0,\n            backgroundColor: BLUE_600,\n        });\n    }\n    if (record.redirect) {\n        tags.push({\n            label: typeof record.redirect === 'string'\n                ? `redirect: ${record.redirect}`\n                : 'redirects',\n            textColor: 0xffffff,\n            backgroundColor: DARK,\n        });\n    }\n    // add an id to be able to select it. Using the `path` is not possible because\n    // empty path children would collide with their parents\n    let id = record.__vd_id;\n    if (id == null) {\n        id = String(routeRecordId++);\n        record.__vd_id = id;\n    }\n    return {\n        id,\n        label: record.path,\n        tags,\n        children: route.children.map(formatRouteRecordForInspector),\n    };\n}\n//  incremental id for route records and inspector state\nlet routeRecordId = 0;\nconst EXTRACT_REGEXP_RE = /^\\/(.*)\\/([a-z]*)$/;\nfunction markRouteRecordActive(route, currentRoute) {\n    // no route will be active if matched is empty\n    // reset the matching state\n    const isExactActive = currentRoute.matched.length &&\n        isSameRouteRecord(currentRoute.matched[currentRoute.matched.length - 1], route.record);\n    route.__vd_exactActive = route.__vd_active = isExactActive;\n    if (!isExactActive) {\n        route.__vd_active = currentRoute.matched.some(match => isSameRouteRecord(match, route.record));\n    }\n    route.children.forEach(childRoute => markRouteRecordActive(childRoute, currentRoute));\n}\nfunction resetMatchStateOnRouteRecord(route) {\n    route.__vd_match = false;\n    route.children.forEach(resetMatchStateOnRouteRecord);\n}\nfunction isRouteMatching(route, filter) {\n    const found = String(route.re).match(EXTRACT_REGEXP_RE);\n    route.__vd_match = false;\n    if (!found || found.length < 3) {\n        return false;\n    }\n    // use a regexp without $ at the end to match nested routes better\n    const nonEndingRE = new RegExp(found[1].replace(/\\$$/, ''), found[2]);\n    if (nonEndingRE.test(filter)) {\n        // mark children as matches\n        route.children.forEach(child => isRouteMatching(child, filter));\n        // exception case: `/`\n        if (route.record.path !== '/' || filter === '/') {\n            route.__vd_match = route.re.test(filter);\n            return true;\n        }\n        // hide the / route\n        return false;\n    }\n    const path = route.record.path.toLowerCase();\n    const decodedPath = decode(path);\n    // also allow partial matching on the path\n    if (!filter.startsWith('/') &&\n        (decodedPath.includes(filter) || path.includes(filter)))\n        return true;\n    if (decodedPath.startsWith(filter) || path.startsWith(filter))\n        return true;\n    if (route.record.name && String(route.record.name).includes(filter))\n        return true;\n    return route.children.some(child => isRouteMatching(child, filter));\n}\nfunction omit(obj, keys) {\n    const ret = {};\n    for (const key in obj) {\n        if (!keys.includes(key)) {\n            // @ts-expect-error\n            ret[key] = obj[key];\n        }\n    }\n    return ret;\n}\n\n/**\n * Creates a Router instance that can be used by a Vue app.\n *\n * @param options - {@link RouterOptions}\n */\nfunction createRouter(options) {\n    const matcher = createRouterMatcher(options.routes, options);\n    const parseQuery$1 = options.parseQuery || parseQuery;\n    const stringifyQuery$1 = options.stringifyQuery || stringifyQuery;\n    const routerHistory = options.history;\n    if ((process.env.NODE_ENV !== 'production') && !routerHistory)\n        throw new Error('Provide the \"history\" option when calling \"createRouter()\":' +\n            ' https://next.router.vuejs.org/api/#history.');\n    const beforeGuards = useCallbacks();\n    const beforeResolveGuards = useCallbacks();\n    const afterGuards = useCallbacks();\n    const currentRoute = shallowRef(START_LOCATION_NORMALIZED);\n    let pendingLocation = START_LOCATION_NORMALIZED;\n    // leave the scrollRestoration if no scrollBehavior is provided\n    if (isBrowser && options.scrollBehavior && 'scrollRestoration' in history) {\n        history.scrollRestoration = 'manual';\n    }\n    const normalizeParams = applyToParams.bind(null, paramValue => '' + paramValue);\n    const encodeParams = applyToParams.bind(null, encodeParam);\n    const decodeParams = \n    // @ts-expect-error: intentionally avoid the type check\n    applyToParams.bind(null, decode);\n    function addRoute(parentOrRoute, route) {\n        let parent;\n        let record;\n        if (isRouteName(parentOrRoute)) {\n            parent = matcher.getRecordMatcher(parentOrRoute);\n            record = route;\n        }\n        else {\n            record = parentOrRoute;\n        }\n        return matcher.addRoute(record, parent);\n    }\n    function removeRoute(name) {\n        const recordMatcher = matcher.getRecordMatcher(name);\n        if (recordMatcher) {\n            matcher.removeRoute(recordMatcher);\n        }\n        else if ((process.env.NODE_ENV !== 'production')) {\n            warn(`Cannot remove non-existent route \"${String(name)}\"`);\n        }\n    }\n    function getRoutes() {\n        return matcher.getRoutes().map(routeMatcher => routeMatcher.record);\n    }\n    function hasRoute(name) {\n        return !!matcher.getRecordMatcher(name);\n    }\n    function resolve(rawLocation, currentLocation) {\n        // const objectLocation = routerLocationAsObject(rawLocation)\n        // we create a copy to modify it later\n        currentLocation = assign({}, currentLocation || currentRoute.value);\n        if (typeof rawLocation === 'string') {\n            const locationNormalized = parseURL(parseQuery$1, rawLocation, currentLocation.path);\n            const matchedRoute = matcher.resolve({ path: locationNormalized.path }, currentLocation);\n            const href = routerHistory.createHref(locationNormalized.fullPath);\n            if ((process.env.NODE_ENV !== 'production')) {\n                if (href.startsWith('//'))\n                    warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\n                else if (!matchedRoute.matched.length) {\n                    warn(`No match found for location with path \"${rawLocation}\"`);\n                }\n            }\n            // locationNormalized is always a new object\n            return assign(locationNormalized, matchedRoute, {\n                params: decodeParams(matchedRoute.params),\n                hash: decode(locationNormalized.hash),\n                redirectedFrom: undefined,\n                href,\n            });\n        }\n        let matcherLocation;\n        // path could be relative in object as well\n        if (rawLocation.path != null) {\n            if ((process.env.NODE_ENV !== 'production') &&\n                'params' in rawLocation &&\n                !('name' in rawLocation) &&\n                // @ts-expect-error: the type is never\n                Object.keys(rawLocation.params).length) {\n                warn(`Path \"${rawLocation.path}\" was passed with params but they will be ignored. Use a named route alongside params instead.`);\n            }\n            matcherLocation = assign({}, rawLocation, {\n                path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path).path,\n            });\n        }\n        else {\n            // remove any nullish param\n            const targetParams = assign({}, rawLocation.params);\n            for (const key in targetParams) {\n                if (targetParams[key] == null) {\n                    delete targetParams[key];\n                }\n            }\n            // pass encoded values to the matcher, so it can produce encoded path and fullPath\n            matcherLocation = assign({}, rawLocation, {\n                params: encodeParams(targetParams),\n            });\n            // current location params are decoded, we need to encode them in case the\n            // matcher merges the params\n            currentLocation.params = encodeParams(currentLocation.params);\n        }\n        const matchedRoute = matcher.resolve(matcherLocation, currentLocation);\n        const hash = rawLocation.hash || '';\n        if ((process.env.NODE_ENV !== 'production') && hash && !hash.startsWith('#')) {\n            warn(`A \\`hash\\` should always start with the character \"#\". Replace \"${hash}\" with \"#${hash}\".`);\n        }\n        // the matcher might have merged current location params, so\n        // we need to run the decoding again\n        matchedRoute.params = normalizeParams(decodeParams(matchedRoute.params));\n        const fullPath = stringifyURL(stringifyQuery$1, assign({}, rawLocation, {\n            hash: encodeHash(hash),\n            path: matchedRoute.path,\n        }));\n        const href = routerHistory.createHref(fullPath);\n        if ((process.env.NODE_ENV !== 'production')) {\n            if (href.startsWith('//')) {\n                warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\n            }\n            else if (!matchedRoute.matched.length) {\n                warn(`No match found for location with path \"${rawLocation.path != null ? rawLocation.path : rawLocation}\"`);\n            }\n        }\n        return assign({\n            fullPath,\n            // keep the hash encoded so fullPath is effectively path + encodedQuery +\n            // hash\n            hash,\n            query: \n            // if the user is using a custom query lib like qs, we might have\n            // nested objects, so we keep the query as is, meaning it can contain\n            // numbers at `$route.query`, but at the point, the user will have to\n            // use their own type anyway.\n            // https://github.com/vuejs/router/issues/328#issuecomment-649481567\n            stringifyQuery$1 === stringifyQuery\n                ? normalizeQuery(rawLocation.query)\n                : (rawLocation.query || {}),\n        }, matchedRoute, {\n            redirectedFrom: undefined,\n            href,\n        });\n    }\n    function locationAsObject(to) {\n        return typeof to === 'string'\n            ? parseURL(parseQuery$1, to, currentRoute.value.path)\n            : assign({}, to);\n    }\n    function checkCanceledNavigation(to, from) {\n        if (pendingLocation !== to) {\n            return createRouterError(8 /* ErrorTypes.NAVIGATION_CANCELLED */, {\n                from,\n                to,\n            });\n        }\n    }\n    function push(to) {\n        return pushWithRedirect(to);\n    }\n    function replace(to) {\n        return push(assign(locationAsObject(to), { replace: true }));\n    }\n    function handleRedirectRecord(to) {\n        const lastMatched = to.matched[to.matched.length - 1];\n        if (lastMatched && lastMatched.redirect) {\n            const { redirect } = lastMatched;\n            let newTargetLocation = typeof redirect === 'function' ? redirect(to) : redirect;\n            if (typeof newTargetLocation === 'string') {\n                newTargetLocation =\n                    newTargetLocation.includes('?') || newTargetLocation.includes('#')\n                        ? (newTargetLocation = locationAsObject(newTargetLocation))\n                        : // force empty params\n                            { path: newTargetLocation };\n                // @ts-expect-error: force empty params when a string is passed to let\n                // the router parse them again\n                newTargetLocation.params = {};\n            }\n            if ((process.env.NODE_ENV !== 'production') &&\n                newTargetLocation.path == null &&\n                !('name' in newTargetLocation)) {\n                warn(`Invalid redirect found:\\n${JSON.stringify(newTargetLocation, null, 2)}\\n when navigating to \"${to.fullPath}\". A redirect must contain a name or path. This will break in production.`);\n                throw new Error('Invalid redirect');\n            }\n            return assign({\n                query: to.query,\n                hash: to.hash,\n                // avoid transferring params if the redirect has a path\n                params: newTargetLocation.path != null ? {} : to.params,\n            }, newTargetLocation);\n        }\n    }\n    function pushWithRedirect(to, redirectedFrom) {\n        const targetLocation = (pendingLocation = resolve(to));\n        const from = currentRoute.value;\n        const data = to.state;\n        const force = to.force;\n        // to could be a string where `replace` is a function\n        const replace = to.replace === true;\n        const shouldRedirect = handleRedirectRecord(targetLocation);\n        if (shouldRedirect)\n            return pushWithRedirect(assign(locationAsObject(shouldRedirect), {\n                state: typeof shouldRedirect === 'object'\n                    ? assign({}, data, shouldRedirect.state)\n                    : data,\n                force,\n                replace,\n            }), \n            // keep original redirectedFrom if it exists\n            redirectedFrom || targetLocation);\n        // if it was a redirect we already called `pushWithRedirect` above\n        const toLocation = targetLocation;\n        toLocation.redirectedFrom = redirectedFrom;\n        let failure;\n        if (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) {\n            failure = createRouterError(16 /* ErrorTypes.NAVIGATION_DUPLICATED */, { to: toLocation, from });\n            // trigger scroll to allow scrolling to the same anchor\n            handleScroll(from, from, \n            // this is a push, the only way for it to be triggered from a\n            // history.listen is with a redirect, which makes it become a push\n            true, \n            // This cannot be the first navigation because the initial location\n            // cannot be manually navigated to\n            false);\n        }\n        return (failure ? Promise.resolve(failure) : navigate(toLocation, from))\n            .catch((error) => isNavigationFailure(error)\n            ? // navigation redirects still mark the router as ready\n                isNavigationFailure(error, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)\n                    ? error\n                    : markAsReady(error) // also returns the error\n            : // reject any unknown error\n                triggerError(error, toLocation, from))\n            .then((failure) => {\n            if (failure) {\n                if (isNavigationFailure(failure, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)) {\n                    if ((process.env.NODE_ENV !== 'production') &&\n                        // we are redirecting to the same location we were already at\n                        isSameRouteLocation(stringifyQuery$1, resolve(failure.to), toLocation) &&\n                        // and we have done it a couple of times\n                        redirectedFrom &&\n                        // @ts-expect-error: added only in dev\n                        (redirectedFrom._count = redirectedFrom._count\n                            ? // @ts-expect-error\n                                redirectedFrom._count + 1\n                            : 1) > 30) {\n                        warn(`Detected a possibly infinite redirection in a navigation guard when going from \"${from.fullPath}\" to \"${toLocation.fullPath}\". Aborting to avoid a Stack Overflow.\\n Are you always returning a new location within a navigation guard? That would lead to this error. Only return when redirecting or aborting, that should fix this. This might break in production if not fixed.`);\n                        return Promise.reject(new Error('Infinite redirect in navigation guard'));\n                    }\n                    return pushWithRedirect(\n                    // keep options\n                    assign({\n                        // preserve an existing replacement but allow the redirect to override it\n                        replace,\n                    }, locationAsObject(failure.to), {\n                        state: typeof failure.to === 'object'\n                            ? assign({}, data, failure.to.state)\n                            : data,\n                        force,\n                    }), \n                    // preserve the original redirectedFrom if any\n                    redirectedFrom || toLocation);\n                }\n            }\n            else {\n                // if we fail we don't finalize the navigation\n                failure = finalizeNavigation(toLocation, from, true, replace, data);\n            }\n            triggerAfterEach(toLocation, from, failure);\n            return failure;\n        });\n    }\n    /**\n     * Helper to reject and skip all navigation guards if a new navigation happened\n     * @param to\n     * @param from\n     */\n    function checkCanceledNavigationAndReject(to, from) {\n        const error = checkCanceledNavigation(to, from);\n        return error ? Promise.reject(error) : Promise.resolve();\n    }\n    function runWithContext(fn) {\n        const app = installedApps.values().next().value;\n        // support Vue < 3.3\n        return app && typeof app.runWithContext === 'function'\n            ? app.runWithContext(fn)\n            : fn();\n    }\n    // TODO: refactor the whole before guards by internally using router.beforeEach\n    function navigate(to, from) {\n        let guards;\n        const [leavingRecords, updatingRecords, enteringRecords] = extractChangingRecords(to, from);\n        // all components here have been resolved once because we are leaving\n        guards = extractComponentsGuards(leavingRecords.reverse(), 'beforeRouteLeave', to, from);\n        // leavingRecords is already reversed\n        for (const record of leavingRecords) {\n            record.leaveGuards.forEach(guard => {\n                guards.push(guardToPromiseFn(guard, to, from));\n            });\n        }\n        const canceledNavigationCheck = checkCanceledNavigationAndReject.bind(null, to, from);\n        guards.push(canceledNavigationCheck);\n        // run the queue of per route beforeRouteLeave guards\n        return (runGuardQueue(guards)\n            .then(() => {\n            // check global guards beforeEach\n            guards = [];\n            for (const guard of beforeGuards.list()) {\n                guards.push(guardToPromiseFn(guard, to, from));\n            }\n            guards.push(canceledNavigationCheck);\n            return runGuardQueue(guards);\n        })\n            .then(() => {\n            // check in components beforeRouteUpdate\n            guards = extractComponentsGuards(updatingRecords, 'beforeRouteUpdate', to, from);\n            for (const record of updatingRecords) {\n                record.updateGuards.forEach(guard => {\n                    guards.push(guardToPromiseFn(guard, to, from));\n                });\n            }\n            guards.push(canceledNavigationCheck);\n            // run the queue of per route beforeEnter guards\n            return runGuardQueue(guards);\n        })\n            .then(() => {\n            // check the route beforeEnter\n            guards = [];\n            for (const record of enteringRecords) {\n                // do not trigger beforeEnter on reused views\n                if (record.beforeEnter) {\n                    if (isArray(record.beforeEnter)) {\n                        for (const beforeEnter of record.beforeEnter)\n                            guards.push(guardToPromiseFn(beforeEnter, to, from));\n                    }\n                    else {\n                        guards.push(guardToPromiseFn(record.beforeEnter, to, from));\n                    }\n                }\n            }\n            guards.push(canceledNavigationCheck);\n            // run the queue of per route beforeEnter guards\n            return runGuardQueue(guards);\n        })\n            .then(() => {\n            // NOTE: at this point to.matched is normalized and does not contain any () => Promise<Component>\n            // clear existing enterCallbacks, these are added by extractComponentsGuards\n            to.matched.forEach(record => (record.enterCallbacks = {}));\n            // check in-component beforeRouteEnter\n            guards = extractComponentsGuards(enteringRecords, 'beforeRouteEnter', to, from, runWithContext);\n            guards.push(canceledNavigationCheck);\n            // run the queue of per route beforeEnter guards\n            return runGuardQueue(guards);\n        })\n            .then(() => {\n            // check global guards beforeResolve\n            guards = [];\n            for (const guard of beforeResolveGuards.list()) {\n                guards.push(guardToPromiseFn(guard, to, from));\n            }\n            guards.push(canceledNavigationCheck);\n            return runGuardQueue(guards);\n        })\n            // catch any navigation canceled\n            .catch(err => isNavigationFailure(err, 8 /* ErrorTypes.NAVIGATION_CANCELLED */)\n            ? err\n            : Promise.reject(err)));\n    }\n    function triggerAfterEach(to, from, failure) {\n        // navigation is confirmed, call afterGuards\n        // TODO: wrap with error handlers\n        afterGuards\n            .list()\n            .forEach(guard => runWithContext(() => guard(to, from, failure)));\n    }\n    /**\n     * - Cleans up any navigation guards\n     * - Changes the url if necessary\n     * - Calls the scrollBehavior\n     */\n    function finalizeNavigation(toLocation, from, isPush, replace, data) {\n        // a more recent navigation took place\n        const error = checkCanceledNavigation(toLocation, from);\n        if (error)\n            return error;\n        // only consider as push if it's not the first navigation\n        const isFirstNavigation = from === START_LOCATION_NORMALIZED;\n        const state = !isBrowser ? {} : history.state;\n        // change URL only if the user did a push/replace and if it's not the initial navigation because\n        // it's just reflecting the url\n        if (isPush) {\n            // on the initial navigation, we want to reuse the scroll position from\n            // history state if it exists\n            if (replace || isFirstNavigation)\n                routerHistory.replace(toLocation.fullPath, assign({\n                    scroll: isFirstNavigation && state && state.scroll,\n                }, data));\n            else\n                routerHistory.push(toLocation.fullPath, data);\n        }\n        // accept current navigation\n        currentRoute.value = toLocation;\n        handleScroll(toLocation, from, isPush, isFirstNavigation);\n        markAsReady();\n    }\n    let removeHistoryListener;\n    // attach listener to history to trigger navigations\n    function setupListeners() {\n        // avoid setting up listeners twice due to an invalid first navigation\n        if (removeHistoryListener)\n            return;\n        removeHistoryListener = routerHistory.listen((to, _from, info) => {\n            if (!router.listening)\n                return;\n            // cannot be a redirect route because it was in history\n            const toLocation = resolve(to);\n            // due to dynamic routing, and to hash history with manual navigation\n            // (manually changing the url or calling history.hash = '#/somewhere'),\n            // there could be a redirect record in history\n            const shouldRedirect = handleRedirectRecord(toLocation);\n            if (shouldRedirect) {\n                pushWithRedirect(assign(shouldRedirect, { replace: true }), toLocation).catch(noop);\n                return;\n            }\n            pendingLocation = toLocation;\n            const from = currentRoute.value;\n            // TODO: should be moved to web history?\n            if (isBrowser) {\n                saveScrollPosition(getScrollKey(from.fullPath, info.delta), computeScrollPosition());\n            }\n            navigate(toLocation, from)\n                .catch((error) => {\n                if (isNavigationFailure(error, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | 8 /* ErrorTypes.NAVIGATION_CANCELLED */)) {\n                    return error;\n                }\n                if (isNavigationFailure(error, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)) {\n                    // Here we could call if (info.delta) routerHistory.go(-info.delta,\n                    // false) but this is bug prone as we have no way to wait the\n                    // navigation to be finished before calling pushWithRedirect. Using\n                    // a setTimeout of 16ms seems to work but there is no guarantee for\n                    // it to work on every browser. So instead we do not restore the\n                    // history entry and trigger a new navigation as requested by the\n                    // navigation guard.\n                    // the error is already handled by router.push we just want to avoid\n                    // logging the error\n                    pushWithRedirect(error.to, toLocation\n                    // avoid an uncaught rejection, let push call triggerError\n                    )\n                        .then(failure => {\n                        // manual change in hash history #916 ending up in the URL not\n                        // changing, but it was changed by the manual url change, so we\n                        // need to manually change it ourselves\n                        if (isNavigationFailure(failure, 4 /* ErrorTypes.NAVIGATION_ABORTED */ |\n                            16 /* ErrorTypes.NAVIGATION_DUPLICATED */) &&\n                            !info.delta &&\n                            info.type === NavigationType.pop) {\n                            routerHistory.go(-1, false);\n                        }\n                    })\n                        .catch(noop);\n                    // avoid the then branch\n                    return Promise.reject();\n                }\n                // do not restore history on unknown direction\n                if (info.delta) {\n                    routerHistory.go(-info.delta, false);\n                }\n                // unrecognized error, transfer to the global handler\n                return triggerError(error, toLocation, from);\n            })\n                .then((failure) => {\n                failure =\n                    failure ||\n                        finalizeNavigation(\n                        // after navigation, all matched components are resolved\n                        toLocation, from, false);\n                // revert the navigation\n                if (failure) {\n                    if (info.delta &&\n                        // a new navigation has been triggered, so we do not want to revert, that will change the current history\n                        // entry while a different route is displayed\n                        !isNavigationFailure(failure, 8 /* ErrorTypes.NAVIGATION_CANCELLED */)) {\n                        routerHistory.go(-info.delta, false);\n                    }\n                    else if (info.type === NavigationType.pop &&\n                        isNavigationFailure(failure, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | 16 /* ErrorTypes.NAVIGATION_DUPLICATED */)) {\n                        // manual change in hash history #916\n                        // it's like a push but lacks the information of the direction\n                        routerHistory.go(-1, false);\n                    }\n                }\n                triggerAfterEach(toLocation, from, failure);\n            })\n                // avoid warnings in the console about uncaught rejections, they are logged by triggerErrors\n                .catch(noop);\n        });\n    }\n    // Initialization and Errors\n    let readyHandlers = useCallbacks();\n    let errorListeners = useCallbacks();\n    let ready;\n    /**\n     * Trigger errorListeners added via onError and throws the error as well\n     *\n     * @param error - error to throw\n     * @param to - location we were navigating to when the error happened\n     * @param from - location we were navigating from when the error happened\n     * @returns the error as a rejected promise\n     */\n    function triggerError(error, to, from) {\n        markAsReady(error);\n        const list = errorListeners.list();\n        if (list.length) {\n            list.forEach(handler => handler(error, to, from));\n        }\n        else {\n            if ((process.env.NODE_ENV !== 'production')) {\n                warn('uncaught error during route navigation:');\n            }\n            console.error(error);\n        }\n        // reject the error no matter there were error listeners or not\n        return Promise.reject(error);\n    }\n    function isReady() {\n        if (ready && currentRoute.value !== START_LOCATION_NORMALIZED)\n            return Promise.resolve();\n        return new Promise((resolve, reject) => {\n            readyHandlers.add([resolve, reject]);\n        });\n    }\n    function markAsReady(err) {\n        if (!ready) {\n            // still not ready if an error happened\n            ready = !err;\n            setupListeners();\n            readyHandlers\n                .list()\n                .forEach(([resolve, reject]) => (err ? reject(err) : resolve()));\n            readyHandlers.reset();\n        }\n        return err;\n    }\n    // Scroll behavior\n    function handleScroll(to, from, isPush, isFirstNavigation) {\n        const { scrollBehavior } = options;\n        if (!isBrowser || !scrollBehavior)\n            return Promise.resolve();\n        const scrollPosition = (!isPush && getSavedScrollPosition(getScrollKey(to.fullPath, 0))) ||\n            ((isFirstNavigation || !isPush) &&\n                history.state &&\n                history.state.scroll) ||\n            null;\n        return nextTick()\n            .then(() => scrollBehavior(to, from, scrollPosition))\n            .then(position => position && scrollToPosition(position))\n            .catch(err => triggerError(err, to, from));\n    }\n    const go = (delta) => routerHistory.go(delta);\n    let started;\n    const installedApps = new Set();\n    const router = {\n        currentRoute,\n        listening: true,\n        addRoute,\n        removeRoute,\n        hasRoute,\n        getRoutes,\n        resolve,\n        options,\n        push,\n        replace,\n        go,\n        back: () => go(-1),\n        forward: () => go(1),\n        beforeEach: beforeGuards.add,\n        beforeResolve: beforeResolveGuards.add,\n        afterEach: afterGuards.add,\n        onError: errorListeners.add,\n        isReady,\n        install(app) {\n            const router = this;\n            app.component('RouterLink', RouterLink);\n            app.component('RouterView', RouterView);\n            app.config.globalProperties.$router = router;\n            Object.defineProperty(app.config.globalProperties, '$route', {\n                enumerable: true,\n                get: () => unref(currentRoute),\n            });\n            // this initial navigation is only necessary on client, on server it doesn't\n            // make sense because it will create an extra unnecessary navigation and could\n            // lead to problems\n            if (isBrowser &&\n                // used for the initial navigation client side to avoid pushing\n                // multiple times when the router is used in multiple apps\n                !started &&\n                currentRoute.value === START_LOCATION_NORMALIZED) {\n                // see above\n                started = true;\n                push(routerHistory.location).catch(err => {\n                    if ((process.env.NODE_ENV !== 'production'))\n                        warn('Unexpected error when starting the router:', err);\n                });\n            }\n            const reactiveRoute = {};\n            for (const key in START_LOCATION_NORMALIZED) {\n                Object.defineProperty(reactiveRoute, key, {\n                    get: () => currentRoute.value[key],\n                    enumerable: true,\n                });\n            }\n            app.provide(routerKey, router);\n            app.provide(routeLocationKey, shallowReactive(reactiveRoute));\n            app.provide(routerViewLocationKey, currentRoute);\n            const unmountApp = app.unmount;\n            installedApps.add(app);\n            app.unmount = function () {\n                installedApps.delete(app);\n                // the router is not attached to an app anymore\n                if (installedApps.size < 1) {\n                    // invalidate the current navigation\n                    pendingLocation = START_LOCATION_NORMALIZED;\n                    removeHistoryListener && removeHistoryListener();\n                    removeHistoryListener = null;\n                    currentRoute.value = START_LOCATION_NORMALIZED;\n                    started = false;\n                    ready = false;\n                }\n                unmountApp();\n            };\n            // TODO: this probably needs to be updated so it can be used by vue-termui\n            if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\n                addDevtools(app, router, matcher);\n            }\n        },\n    };\n    // TODO: type this as NavigationGuardReturn or similar instead of any\n    function runGuardQueue(guards) {\n        return guards.reduce((promise, guard) => promise.then(() => runWithContext(guard)), Promise.resolve());\n    }\n    return router;\n}\nfunction extractChangingRecords(to, from) {\n    const leavingRecords = [];\n    const updatingRecords = [];\n    const enteringRecords = [];\n    const len = Math.max(from.matched.length, to.matched.length);\n    for (let i = 0; i < len; i++) {\n        const recordFrom = from.matched[i];\n        if (recordFrom) {\n            if (to.matched.find(record => isSameRouteRecord(record, recordFrom)))\n                updatingRecords.push(recordFrom);\n            else\n                leavingRecords.push(recordFrom);\n        }\n        const recordTo = to.matched[i];\n        if (recordTo) {\n            // the type doesn't matter because we are comparing per reference\n            if (!from.matched.find(record => isSameRouteRecord(record, recordTo))) {\n                enteringRecords.push(recordTo);\n            }\n        }\n    }\n    return [leavingRecords, updatingRecords, enteringRecords];\n}\n\n/**\n * Returns the router instance. Equivalent to using `$router` inside\n * templates.\n */\nfunction useRouter() {\n    return inject(routerKey);\n}\n/**\n * Returns the current route location. Equivalent to using `$route` inside\n * templates.\n */\nfunction useRoute() {\n    return inject(routeLocationKey);\n}\n\nexport { NavigationFailureType, RouterLink, RouterView, START_LOCATION_NORMALIZED as START_LOCATION, createMemoryHistory, createRouter, createRouterMatcher, createWebHashHistory, createWebHistory, isNavigationFailure, loadRouteLocation, matchedRouteKey, onBeforeRouteLeave, onBeforeRouteUpdate, parseQuery, routeLocationKey, routerKey, routerViewLocationKey, stringifyQuery, useLink, useRoute, useRouter, viewDepthKey };\n","function flatHooks(configHooks, hooks = {}, parentName) {\n  for (const key in configHooks) {\n    const subHook = configHooks[key];\n    const name = parentName ? `${parentName}:${key}` : key;\n    if (typeof subHook === \"object\" && subHook !== null) {\n      flatHooks(subHook, hooks, name);\n    } else if (typeof subHook === \"function\") {\n      hooks[name] = subHook;\n    }\n  }\n  return hooks;\n}\nfunction mergeHooks(...hooks) {\n  const finalHooks = {};\n  for (const hook of hooks) {\n    const flatenHook = flatHooks(hook);\n    for (const key in flatenHook) {\n      if (finalHooks[key]) {\n        finalHooks[key].push(flatenHook[key]);\n      } else {\n        finalHooks[key] = [flatenHook[key]];\n      }\n    }\n  }\n  for (const key in finalHooks) {\n    if (finalHooks[key].length > 1) {\n      const array = finalHooks[key];\n      finalHooks[key] = (...arguments_) => serial(array, (function_) => function_(...arguments_));\n    } else {\n      finalHooks[key] = finalHooks[key][0];\n    }\n  }\n  return finalHooks;\n}\nfunction serial(tasks, function_) {\n  return tasks.reduce(\n    (promise, task) => promise.then(() => function_(task)),\n    Promise.resolve()\n  );\n}\nconst defaultTask = { run: (function_) => function_() };\nconst _createTask = () => defaultTask;\nconst createTask = typeof console.createTask !== \"undefined\" ? console.createTask : _createTask;\nfunction serialTaskCaller(hooks, args) {\n  const name = args.shift();\n  const task = createTask(name);\n  return hooks.reduce(\n    (promise, hookFunction) => promise.then(() => task.run(() => hookFunction(...args))),\n    Promise.resolve()\n  );\n}\nfunction parallelTaskCaller(hooks, args) {\n  const name = args.shift();\n  const task = createTask(name);\n  return Promise.all(hooks.map((hook) => task.run(() => hook(...args))));\n}\nfunction serialCaller(hooks, arguments_) {\n  return hooks.reduce(\n    (promise, hookFunction) => promise.then(() => hookFunction(...arguments_ || [])),\n    Promise.resolve()\n  );\n}\nfunction parallelCaller(hooks, args) {\n  return Promise.all(hooks.map((hook) => hook(...args || [])));\n}\nfunction callEachWith(callbacks, arg0) {\n  for (const callback of [...callbacks]) {\n    callback(arg0);\n  }\n}\n\nclass Hookable {\n  constructor() {\n    this._hooks = {};\n    this._before = void 0;\n    this._after = void 0;\n    this._deprecatedMessages = void 0;\n    this._deprecatedHooks = {};\n    this.hook = this.hook.bind(this);\n    this.callHook = this.callHook.bind(this);\n    this.callHookWith = this.callHookWith.bind(this);\n  }\n  hook(name, function_, options = {}) {\n    if (!name || typeof function_ !== \"function\") {\n      return () => {\n      };\n    }\n    const originalName = name;\n    let dep;\n    while (this._deprecatedHooks[name]) {\n      dep = this._deprecatedHooks[name];\n      name = dep.to;\n    }\n    if (dep && !options.allowDeprecated) {\n      let message = dep.message;\n      if (!message) {\n        message = `${originalName} hook has been deprecated` + (dep.to ? `, please use ${dep.to}` : \"\");\n      }\n      if (!this._deprecatedMessages) {\n        this._deprecatedMessages = /* @__PURE__ */ new Set();\n      }\n      if (!this._deprecatedMessages.has(message)) {\n        console.warn(message);\n        this._deprecatedMessages.add(message);\n      }\n    }\n    if (!function_.name) {\n      try {\n        Object.defineProperty(function_, \"name\", {\n          get: () => \"_\" + name.replace(/\\W+/g, \"_\") + \"_hook_cb\",\n          configurable: true\n        });\n      } catch {\n      }\n    }\n    this._hooks[name] = this._hooks[name] || [];\n    this._hooks[name].push(function_);\n    return () => {\n      if (function_) {\n        this.removeHook(name, function_);\n        function_ = void 0;\n      }\n    };\n  }\n  hookOnce(name, function_) {\n    let _unreg;\n    let _function = (...arguments_) => {\n      if (typeof _unreg === \"function\") {\n        _unreg();\n      }\n      _unreg = void 0;\n      _function = void 0;\n      return function_(...arguments_);\n    };\n    _unreg = this.hook(name, _function);\n    return _unreg;\n  }\n  removeHook(name, function_) {\n    if (this._hooks[name]) {\n      const index = this._hooks[name].indexOf(function_);\n      if (index !== -1) {\n        this._hooks[name].splice(index, 1);\n      }\n      if (this._hooks[name].length === 0) {\n        delete this._hooks[name];\n      }\n    }\n  }\n  deprecateHook(name, deprecated) {\n    this._deprecatedHooks[name] = typeof deprecated === \"string\" ? { to: deprecated } : deprecated;\n    const _hooks = this._hooks[name] || [];\n    delete this._hooks[name];\n    for (const hook of _hooks) {\n      this.hook(name, hook);\n    }\n  }\n  deprecateHooks(deprecatedHooks) {\n    Object.assign(this._deprecatedHooks, deprecatedHooks);\n    for (const name in deprecatedHooks) {\n      this.deprecateHook(name, deprecatedHooks[name]);\n    }\n  }\n  addHooks(configHooks) {\n    const hooks = flatHooks(configHooks);\n    const removeFns = Object.keys(hooks).map(\n      (key) => this.hook(key, hooks[key])\n    );\n    return () => {\n      for (const unreg of removeFns.splice(0, removeFns.length)) {\n        unreg();\n      }\n    };\n  }\n  removeHooks(configHooks) {\n    const hooks = flatHooks(configHooks);\n    for (const key in hooks) {\n      this.removeHook(key, hooks[key]);\n    }\n  }\n  removeAllHooks() {\n    for (const key in this._hooks) {\n      delete this._hooks[key];\n    }\n  }\n  callHook(name, ...arguments_) {\n    arguments_.unshift(name);\n    return this.callHookWith(serialTaskCaller, name, ...arguments_);\n  }\n  callHookParallel(name, ...arguments_) {\n    arguments_.unshift(name);\n    return this.callHookWith(parallelTaskCaller, name, ...arguments_);\n  }\n  callHookWith(caller, name, ...arguments_) {\n    const event = this._before || this._after ? { name, args: arguments_, context: {} } : void 0;\n    if (this._before) {\n      callEachWith(this._before, event);\n    }\n    const result = caller(\n      name in this._hooks ? [...this._hooks[name]] : [],\n      arguments_\n    );\n    if (result instanceof Promise) {\n      return result.finally(() => {\n        if (this._after && event) {\n          callEachWith(this._after, event);\n        }\n      });\n    }\n    if (this._after && event) {\n      callEachWith(this._after, event);\n    }\n    return result;\n  }\n  beforeEach(function_) {\n    this._before = this._before || [];\n    this._before.push(function_);\n    return () => {\n      if (this._before !== void 0) {\n        const index = this._before.indexOf(function_);\n        if (index !== -1) {\n          this._before.splice(index, 1);\n        }\n      }\n    };\n  }\n  afterEach(function_) {\n    this._after = this._after || [];\n    this._after.push(function_);\n    return () => {\n      if (this._after !== void 0) {\n        const index = this._after.indexOf(function_);\n        if (index !== -1) {\n          this._after.splice(index, 1);\n        }\n      }\n    };\n  }\n}\nfunction createHooks() {\n  return new Hookable();\n}\n\nconst isBrowser = typeof window !== \"undefined\";\nfunction createDebugger(hooks, _options = {}) {\n  const options = {\n    inspect: isBrowser,\n    group: isBrowser,\n    filter: () => true,\n    ..._options\n  };\n  const _filter = options.filter;\n  const filter = typeof _filter === \"string\" ? (name) => name.startsWith(_filter) : _filter;\n  const _tag = options.tag ? `[${options.tag}] ` : \"\";\n  const logPrefix = (event) => _tag + event.name + \"\".padEnd(event._id, \"\\0\");\n  const _idCtr = {};\n  const unsubscribeBefore = hooks.beforeEach((event) => {\n    if (filter !== void 0 && !filter(event.name)) {\n      return;\n    }\n    _idCtr[event.name] = _idCtr[event.name] || 0;\n    event._id = _idCtr[event.name]++;\n    console.time(logPrefix(event));\n  });\n  const unsubscribeAfter = hooks.afterEach((event) => {\n    if (filter !== void 0 && !filter(event.name)) {\n      return;\n    }\n    if (options.group) {\n      console.groupCollapsed(event.name);\n    }\n    if (options.inspect) {\n      console.timeLog(logPrefix(event), event.args);\n    } else {\n      console.timeEnd(logPrefix(event));\n    }\n    if (options.group) {\n      console.groupEnd();\n    }\n    _idCtr[event.name]--;\n  });\n  return {\n    /** Stop debugging and remove listeners */\n    close: () => {\n      unsubscribeBefore();\n      unsubscribeAfter();\n    }\n  };\n}\n\nexport { Hookable, createDebugger, createHooks, flatHooks, mergeHooks, parallelCaller, serial, serialCaller };\n","function asArray$1(value) {\n  return Array.isArray(value) ? value : [value];\n}\n\nconst SelfClosingTags = [\"meta\", \"link\", \"base\"];\nconst TagsWithInnerContent = [\"title\", \"titleTemplate\", \"script\", \"style\", \"noscript\"];\nconst HasElementTags = [\n  \"base\",\n  \"meta\",\n  \"link\",\n  \"style\",\n  \"script\",\n  \"noscript\"\n];\nconst ValidHeadTags = [\n  \"title\",\n  \"titleTemplate\",\n  \"templateParams\",\n  \"base\",\n  \"htmlAttrs\",\n  \"bodyAttrs\",\n  \"meta\",\n  \"link\",\n  \"style\",\n  \"script\",\n  \"noscript\"\n];\nconst UniqueTags = [\"base\", \"title\", \"titleTemplate\", \"bodyAttrs\", \"htmlAttrs\", \"templateParams\"];\nconst TagConfigKeys = [\"tagPosition\", \"tagPriority\", \"tagDuplicateStrategy\", \"children\", \"innerHTML\", \"textContent\", \"processTemplateParams\"];\nconst IsBrowser = typeof window !== \"undefined\";\nconst composableNames = [\n  \"getActiveHead\",\n  \"useHead\",\n  \"useSeoMeta\",\n  \"useHeadSafe\",\n  \"useServerHead\",\n  \"useServerSeoMeta\",\n  \"useServerHeadSafe\"\n];\n\nfunction defineHeadPlugin(plugin) {\n  return plugin;\n}\n\nfunction hashCode(s) {\n  let h = 9;\n  for (let i = 0; i < s.length; )\n    h = Math.imul(h ^ s.charCodeAt(i++), 9 ** 9);\n  return ((h ^ h >>> 9) + 65536).toString(16).substring(1, 8).toLowerCase();\n}\nfunction hashTag(tag) {\n  return tag._h || hashCode(tag._d ? tag._d : `${tag.tag}:${tag.textContent || tag.innerHTML || \"\"}:${Object.entries(tag.props).map(([key, value]) => `${key}:${String(value)}`).join(\",\")}`);\n}\n\nfunction tagDedupeKey(tag, fn) {\n  const { props, tag: tagName } = tag;\n  if (UniqueTags.includes(tagName))\n    return tagName;\n  if (tagName === \"link\" && props.rel === \"canonical\")\n    return \"canonical\";\n  if (props.charset)\n    return \"charset\";\n  const name = [\"id\"];\n  if (tagName === \"meta\")\n    name.push(...[\"name\", \"property\", \"http-equiv\"]);\n  for (const n of name) {\n    if (typeof props[n] !== \"undefined\") {\n      const val = String(props[n]);\n      if (fn && !fn(val))\n        return false;\n      return `${tagName}:${n}:${val}`;\n    }\n  }\n  return false;\n}\n\nfunction resolveTitleTemplate(template, title) {\n  if (template == null)\n    return title || null;\n  if (typeof template === \"function\")\n    return template(title);\n  return template;\n}\n\nfunction asArray(input) {\n  return Array.isArray(input) ? input : [input];\n}\nconst InternalKeySymbol = \"_$key\";\nfunction packObject(input, options) {\n  const keys = Object.keys(input);\n  let [k, v] = keys;\n  options = options || {};\n  options.key = options.key || k;\n  options.value = options.value || v;\n  options.resolveKey = options.resolveKey || ((k2) => k2);\n  const resolveKey = (index) => {\n    const arr = asArray(options?.[index]);\n    return arr.find((k2) => {\n      if (typeof k2 === \"string\" && k2.includes(\".\")) {\n        return k2;\n      }\n      return k2 && keys.includes(k2);\n    });\n  };\n  const resolveValue = (k2, input2) => {\n    if (k2.includes(\".\")) {\n      const paths = k2.split(\".\");\n      let val = input2;\n      for (const path of paths)\n        val = val[path];\n      return val;\n    }\n    return input2[k2];\n  };\n  k = resolveKey(\"key\") || k;\n  v = resolveKey(\"value\") || v;\n  const dedupeKeyPrefix = input.key ? `${InternalKeySymbol}${input.key}-` : \"\";\n  let keyValue = resolveValue(k, input);\n  keyValue = options.resolveKey(keyValue);\n  return {\n    [`${dedupeKeyPrefix}${keyValue}`]: resolveValue(v, input)\n  };\n}\n\nfunction packArray(input, options) {\n  const packed = {};\n  for (const i of input) {\n    const packedObj = packObject(i, options);\n    const pKey = Object.keys(packedObj)[0];\n    const isDedupeKey = pKey.startsWith(InternalKeySymbol);\n    if (!isDedupeKey && packed[pKey]) {\n      packed[pKey] = Array.isArray(packed[pKey]) ? packed[pKey] : [packed[pKey]];\n      packed[pKey].push(Object.values(packedObj)[0]);\n    } else {\n      packed[isDedupeKey ? pKey.split(\"-\").slice(1).join(\"-\") || pKey : pKey] = packedObj[pKey];\n    }\n  }\n  return packed;\n}\n\nfunction unpackToArray(input, options) {\n  const unpacked = [];\n  const kFn = options.resolveKeyData || ((ctx) => ctx.key);\n  const vFn = options.resolveValueData || ((ctx) => ctx.value);\n  for (const [k, v] of Object.entries(input)) {\n    unpacked.push(...(Array.isArray(v) ? v : [v]).map((i) => {\n      const ctx = { key: k, value: i };\n      const val = vFn(ctx);\n      if (typeof val === \"object\")\n        return unpackToArray(val, options);\n      if (Array.isArray(val))\n        return val;\n      return {\n        [typeof options.key === \"function\" ? options.key(ctx) : options.key]: kFn(ctx),\n        [typeof options.value === \"function\" ? options.value(ctx) : options.value]: val\n      };\n    }).flat());\n  }\n  return unpacked;\n}\n\nfunction unpackToString(value, options) {\n  return Object.entries(value).map(([key, value2]) => {\n    if (typeof value2 === \"object\")\n      value2 = unpackToString(value2, options);\n    if (options.resolve) {\n      const resolved = options.resolve({ key, value: value2 });\n      if (resolved)\n        return resolved;\n    }\n    if (typeof value2 === \"number\")\n      value2 = value2.toString();\n    if (typeof value2 === \"string\" && options.wrapValue) {\n      value2 = value2.replace(new RegExp(options.wrapValue, \"g\"), `\\\\${options.wrapValue}`);\n      value2 = `${options.wrapValue}${value2}${options.wrapValue}`;\n    }\n    return `${key}${options.keyValueSeparator || \"\"}${value2}`;\n  }).join(options.entrySeparator || \"\");\n}\n\nconst p = (p2) => ({ keyValue: p2, metaKey: \"property\" });\nconst k = (p2) => ({ keyValue: p2 });\nconst MetaPackingSchema = {\n  appleItunesApp: {\n    unpack: {\n      entrySeparator: \", \",\n      resolve({ key, value }) {\n        return `${fixKeyCase(key)}=${value}`;\n      }\n    }\n  },\n  articleExpirationTime: p(\"article:expiration_time\"),\n  articleModifiedTime: p(\"article:modified_time\"),\n  articlePublishedTime: p(\"article:published_time\"),\n  bookReleaseDate: p(\"book:release_date\"),\n  charset: {\n    metaKey: \"charset\"\n  },\n  contentSecurityPolicy: {\n    unpack: {\n      entrySeparator: \"; \",\n      resolve({ key, value }) {\n        return `${fixKeyCase(key)} ${value}`;\n      }\n    },\n    metaKey: \"http-equiv\"\n  },\n  contentType: {\n    metaKey: \"http-equiv\"\n  },\n  defaultStyle: {\n    metaKey: \"http-equiv\"\n  },\n  fbAppId: p(\"fb:app_id\"),\n  msapplicationConfig: k(\"msapplication-Config\"),\n  msapplicationTileColor: k(\"msapplication-TileColor\"),\n  msapplicationTileImage: k(\"msapplication-TileImage\"),\n  ogAudioSecureUrl: p(\"og:audio:secure_url\"),\n  ogAudioUrl: p(\"og:audio\"),\n  ogImageSecureUrl: p(\"og:image:secure_url\"),\n  ogImageUrl: p(\"og:image\"),\n  ogSiteName: p(\"og:site_name\"),\n  ogVideoSecureUrl: p(\"og:video:secure_url\"),\n  ogVideoUrl: p(\"og:video\"),\n  profileFirstName: p(\"profile:first_name\"),\n  profileLastName: p(\"profile:last_name\"),\n  profileUsername: p(\"profile:username\"),\n  refresh: {\n    metaKey: \"http-equiv\",\n    unpack: {\n      entrySeparator: \";\",\n      resolve({ key, value }) {\n        if (key === \"seconds\")\n          return `${value}`;\n      }\n    }\n  },\n  robots: {\n    unpack: {\n      entrySeparator: \", \",\n      resolve({ key, value }) {\n        if (typeof value === \"boolean\")\n          return `${fixKeyCase(key)}`;\n        else\n          return `${fixKeyCase(key)}:${value}`;\n      }\n    }\n  },\n  xUaCompatible: {\n    metaKey: \"http-equiv\"\n  }\n};\nconst openGraphNamespaces = [\n  \"og\",\n  \"book\",\n  \"article\",\n  \"profile\"\n];\nfunction resolveMetaKeyType(key) {\n  const fKey = fixKeyCase(key).split(\":\")[0];\n  if (openGraphNamespaces.includes(fKey))\n    return \"property\";\n  return MetaPackingSchema[key]?.metaKey || \"name\";\n}\nfunction resolveMetaKeyValue(key) {\n  return MetaPackingSchema[key]?.keyValue || fixKeyCase(key);\n}\nfunction fixKeyCase(key) {\n  const updated = key.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n  const fKey = updated.split(\"-\")[0];\n  if (openGraphNamespaces.includes(fKey) || fKey === \"twitter\")\n    return key.replace(/([A-Z])/g, \":$1\").toLowerCase();\n  return updated;\n}\nfunction changeKeyCasingDeep(input) {\n  if (Array.isArray(input)) {\n    return input.map((entry) => changeKeyCasingDeep(entry));\n  }\n  if (typeof input !== \"object\" || Array.isArray(input))\n    return input;\n  const output = {};\n  for (const [key, value] of Object.entries(input))\n    output[fixKeyCase(key)] = changeKeyCasingDeep(value);\n  return output;\n}\nfunction resolvePackedMetaObjectValue(value, key) {\n  const definition = MetaPackingSchema[key];\n  if (key === \"refresh\")\n    return `${value.seconds};url=${value.url}`;\n  return unpackToString(\n    changeKeyCasingDeep(value),\n    {\n      keyValueSeparator: \"=\",\n      entrySeparator: \", \",\n      resolve({ value: value2, key: key2 }) {\n        if (value2 === null)\n          return \"\";\n        if (typeof value2 === \"boolean\")\n          return `${key2}`;\n      },\n      ...definition?.unpack\n    }\n  );\n}\nconst ObjectArrayEntries = [\"og:image\", \"og:video\", \"og:audio\", \"twitter:image\"];\nfunction sanitize(input) {\n  const out = {};\n  Object.entries(input).forEach(([k2, v]) => {\n    if (String(v) !== \"false\" && k2)\n      out[k2] = v;\n  });\n  return out;\n}\nfunction handleObjectEntry(key, v) {\n  const value = sanitize(v);\n  const fKey = fixKeyCase(key);\n  const attr = resolveMetaKeyType(fKey);\n  if (ObjectArrayEntries.includes(fKey)) {\n    const input = {};\n    Object.entries(value).forEach(([k2, v2]) => {\n      input[`${key}${k2 === \"url\" ? \"\" : `${k2.charAt(0).toUpperCase()}${k2.slice(1)}`}`] = v2;\n    });\n    return unpackMeta(input).sort((a, b) => (a[attr]?.length || 0) - (b[attr]?.length || 0));\n  }\n  return [{ [attr]: fKey, ...value }];\n}\nfunction unpackMeta(input) {\n  const extras = [];\n  const primitives = {};\n  Object.entries(input).forEach(([key, value]) => {\n    if (!Array.isArray(value)) {\n      if (typeof value === \"object\" && value) {\n        if (ObjectArrayEntries.includes(fixKeyCase(key))) {\n          extras.push(...handleObjectEntry(key, value));\n          return;\n        }\n        primitives[key] = sanitize(value);\n      } else {\n        primitives[key] = value;\n      }\n      return;\n    }\n    value.forEach((v) => {\n      extras.push(...typeof v === \"string\" ? unpackMeta({ [key]: v }) : handleObjectEntry(key, v));\n    });\n  });\n  const meta = unpackToArray(primitives, {\n    key({ key }) {\n      return resolveMetaKeyType(key);\n    },\n    value({ key }) {\n      return key === \"charset\" ? \"charset\" : \"content\";\n    },\n    resolveKeyData({ key }) {\n      return resolveMetaKeyValue(key);\n    },\n    resolveValueData({ value, key }) {\n      if (value === null)\n        return \"_null\";\n      if (typeof value === \"object\")\n        return resolvePackedMetaObjectValue(value, key);\n      return typeof value === \"number\" ? value.toString() : value;\n    }\n  });\n  return [...extras, ...meta].map((m) => {\n    if (m.content === \"_null\")\n      m.content = null;\n    return m;\n  });\n}\nfunction packMeta(inputs) {\n  const mappedPackingSchema = Object.entries(MetaPackingSchema).map(([key, value]) => [key, value.keyValue]);\n  return packArray(inputs, {\n    key: [\"name\", \"property\", \"httpEquiv\", \"http-equiv\", \"charset\"],\n    value: [\"content\", \"charset\"],\n    resolveKey(k2) {\n      let key = mappedPackingSchema.filter((sk) => sk[1] === k2)?.[0]?.[0] || k2;\n      const replacer = (_, letter) => letter?.toUpperCase();\n      key = key.replace(/:([a-z])/g, replacer).replace(/-([a-z])/g, replacer);\n      return key;\n    }\n  });\n}\n\nconst WhitelistAttributes = {\n  htmlAttrs: [\"id\", \"class\", \"lang\", \"dir\"],\n  bodyAttrs: [\"id\", \"class\"],\n  meta: [\"id\", \"name\", \"property\", \"charset\", \"content\"],\n  noscript: [\"id\", \"textContent\"],\n  script: [\"id\", \"type\", \"textContent\"],\n  link: [\"id\", \"color\", \"crossorigin\", \"fetchpriority\", \"href\", \"hreflang\", \"imagesrcset\", \"imagesizes\", \"integrity\", \"media\", \"referrerpolicy\", \"rel\", \"sizes\", \"type\"]\n};\nfunction acceptDataAttrs(value) {\n  const filtered = {};\n  Object.keys(value || {}).filter((a) => a.startsWith(\"data-\")).forEach((a) => {\n    filtered[a] = value[a];\n  });\n  return filtered;\n}\nfunction whitelistSafeInput(input) {\n  const filtered = {};\n  Object.keys(input).forEach((key) => {\n    const tagValue = input[key];\n    if (!tagValue)\n      return;\n    switch (key) {\n      case \"title\":\n      case \"titleTemplate\":\n      case \"templateParams\":\n        filtered[key] = tagValue;\n        break;\n      case \"htmlAttrs\":\n      case \"bodyAttrs\":\n        filtered[key] = acceptDataAttrs(tagValue);\n        WhitelistAttributes[key].forEach((a) => {\n          if (tagValue[a])\n            filtered[key][a] = tagValue[a];\n        });\n        break;\n      case \"meta\":\n        if (Array.isArray(tagValue)) {\n          filtered[key] = tagValue.map((meta) => {\n            const safeMeta = acceptDataAttrs(meta);\n            WhitelistAttributes.meta.forEach((key2) => {\n              if (meta[key2])\n                safeMeta[key2] = meta[key2];\n            });\n            return safeMeta;\n          }).filter((meta) => Object.keys(meta).length > 0);\n        }\n        break;\n      case \"link\":\n        if (Array.isArray(tagValue)) {\n          filtered[key] = tagValue.map((meta) => {\n            const link = acceptDataAttrs(meta);\n            WhitelistAttributes.link.forEach((key2) => {\n              const val = meta[key2];\n              if (key2 === \"rel\" && [\"stylesheet\", \"canonical\", \"modulepreload\", \"prerender\", \"preload\", \"prefetch\"].includes(val))\n                return;\n              if (key2 === \"href\") {\n                if (val.includes(\"javascript:\") || val.includes(\"data:\"))\n                  return;\n                link[key2] = val;\n              } else if (val) {\n                link[key2] = val;\n              }\n            });\n            return link;\n          }).filter((link) => Object.keys(link).length > 1 && !!link.rel);\n        }\n        break;\n      case \"noscript\":\n        if (Array.isArray(tagValue)) {\n          filtered[key] = tagValue.map((meta) => {\n            const noscript = acceptDataAttrs(meta);\n            WhitelistAttributes.noscript.forEach((key2) => {\n              if (meta[key2])\n                noscript[key2] = meta[key2];\n            });\n            return noscript;\n          }).filter((meta) => Object.keys(meta).length > 0);\n        }\n        break;\n      case \"script\":\n        if (Array.isArray(tagValue)) {\n          filtered[key] = tagValue.map((script) => {\n            const safeScript = acceptDataAttrs(script);\n            WhitelistAttributes.script.forEach((s) => {\n              if (script[s]) {\n                if (s === \"textContent\") {\n                  try {\n                    const jsonVal = typeof script[s] === \"string\" ? JSON.parse(script[s]) : script[s];\n                    safeScript[s] = JSON.stringify(jsonVal, null, 0);\n                  } catch (e) {\n                  }\n                } else {\n                  safeScript[s] = script[s];\n                }\n              }\n            });\n            return safeScript;\n          }).filter((meta) => Object.keys(meta).length > 0);\n        }\n        break;\n    }\n  });\n  return filtered;\n}\n\nasync function normaliseTag(tagName, input, e) {\n  const tag = {\n    tag: tagName,\n    props: await normaliseProps(\n      // explicitly check for an object\n      // @ts-expect-error untyped\n      typeof input === \"object\" && typeof input !== \"function\" && !(input instanceof Promise) ? { ...input } : { [[\"script\", \"noscript\", \"style\"].includes(tagName) ? \"innerHTML\" : \"textContent\"]: input },\n      [\"templateParams\", \"titleTemplate\"].includes(tagName)\n    )\n  };\n  TagConfigKeys.forEach((k) => {\n    const val = typeof tag.props[k] !== \"undefined\" ? tag.props[k] : e[k];\n    if (typeof val !== \"undefined\") {\n      if (![\"innerHTML\", \"textContent\", \"children\"].includes(k) || TagsWithInnerContent.includes(tag.tag)) {\n        tag[k === \"children\" ? \"innerHTML\" : k] = val;\n      }\n      delete tag.props[k];\n    }\n  });\n  if (tag.props.body) {\n    tag.tagPosition = \"bodyClose\";\n    delete tag.props.body;\n  }\n  if (tag.tag === \"script\") {\n    if (typeof tag.innerHTML === \"object\") {\n      tag.innerHTML = JSON.stringify(tag.innerHTML);\n      tag.props.type = tag.props.type || \"application/json\";\n    }\n  }\n  return Array.isArray(tag.props.content) ? tag.props.content.map((v) => ({ ...tag, props: { ...tag.props, content: v } })) : tag;\n}\nfunction normaliseClassProp(v) {\n  if (typeof v === \"object\" && !Array.isArray(v)) {\n    v = Object.keys(v).filter((k) => v[k]);\n  }\n  return (Array.isArray(v) ? v.join(\" \") : v).split(\" \").filter((c) => c.trim()).filter(Boolean).join(\" \");\n}\nasync function normaliseProps(props, virtual) {\n  for (const k of Object.keys(props)) {\n    if (k === \"class\") {\n      props[k] = normaliseClassProp(props[k]);\n      continue;\n    }\n    if (props[k] instanceof Promise)\n      props[k] = await props[k];\n    if (!virtual && !TagConfigKeys.includes(k)) {\n      const v = String(props[k]);\n      const isDataKey = k.startsWith(\"data-\");\n      if (v === \"true\" || v === \"\") {\n        props[k] = isDataKey ? \"true\" : true;\n      } else if (!props[k]) {\n        if (isDataKey && v === \"false\")\n          props[k] = \"false\";\n        else\n          delete props[k];\n      }\n    }\n  }\n  return props;\n}\nconst TagEntityBits = 10;\nasync function normaliseEntryTags(e) {\n  const tagPromises = [];\n  Object.entries(e.resolvedInput).filter(([k, v]) => typeof v !== \"undefined\" && ValidHeadTags.includes(k)).forEach(([k, value]) => {\n    const v = asArray$1(value);\n    tagPromises.push(...v.map((props) => normaliseTag(k, props, e)).flat());\n  });\n  return (await Promise.all(tagPromises)).flat().filter(Boolean).map((t, i) => {\n    t._e = e._i;\n    e.mode && (t._m = e.mode);\n    t._p = (e._i << TagEntityBits) + i;\n    return t;\n  });\n}\n\nconst TAG_WEIGHTS = {\n  // tags\n  base: -10,\n  title: 10\n};\nconst TAG_ALIASES = {\n  // relative scores to their default values\n  critical: -80,\n  high: -10,\n  low: 20\n};\nfunction tagWeight(tag) {\n  let weight = 100;\n  const priority = tag.tagPriority;\n  if (typeof priority === \"number\")\n    return priority;\n  if (tag.tag === \"meta\") {\n    if (tag.props[\"http-equiv\"] === \"content-security-policy\")\n      weight = -30;\n    if (tag.props.charset)\n      weight = -20;\n    if (tag.props.name === \"viewport\")\n      weight = -15;\n  } else if (tag.tag === \"link\" && tag.props.rel === \"preconnect\") {\n    weight = 20;\n  } else if (tag.tag in TAG_WEIGHTS) {\n    weight = TAG_WEIGHTS[tag.tag];\n  }\n  if (typeof priority === \"string\" && priority in TAG_ALIASES) {\n    return weight + TAG_ALIASES[priority];\n  }\n  return weight;\n}\nconst SortModifiers = [{ prefix: \"before:\", offset: -1 }, { prefix: \"after:\", offset: 1 }];\n\nconst NetworkEvents = [\"onload\", \"onerror\", \"onabort\", \"onprogress\", \"onloadstart\"];\n\nconst sepSub = \"%separator\";\nfunction processTemplateParams(s, p, sep) {\n  if (typeof s !== \"string\" || !s.includes(\"%\"))\n    return s;\n  function sub(token) {\n    let val;\n    if ([\"s\", \"pageTitle\"].includes(token)) {\n      val = p.pageTitle;\n    } else if (token.includes(\".\")) {\n      val = token.split(\".\").reduce((acc, key) => acc ? acc[key] || void 0 : void 0, p);\n    } else {\n      val = p[token];\n    }\n    return typeof val !== \"undefined\" ? (val || \"\").replace(/\"/g, '\\\\\"') : false;\n  }\n  let decoded = s;\n  try {\n    decoded = decodeURI(s);\n  } catch {\n  }\n  const tokens = (decoded.match(/%(\\w+\\.+\\w+)|%(\\w+)/g) || []).sort().reverse();\n  tokens.forEach((token) => {\n    const re = sub(token.slice(1));\n    if (typeof re === \"string\") {\n      s = s.replace(new RegExp(`\\\\${token}(\\\\W|$)`, \"g\"), (_, args) => `${re}${args}`).trim();\n    }\n  });\n  if (s.includes(sepSub)) {\n    if (s.endsWith(sepSub))\n      s = s.slice(0, -sepSub.length).trim();\n    if (s.startsWith(sepSub))\n      s = s.slice(sepSub.length).trim();\n    s = s.replace(new RegExp(`\\\\${sepSub}\\\\s*\\\\${sepSub}`, \"g\"), sepSub);\n    s = processTemplateParams(s, { separator: sep }, sep);\n  }\n  return s;\n}\n\nexport { HasElementTags, IsBrowser, NetworkEvents, SelfClosingTags, SortModifiers, TAG_ALIASES, TAG_WEIGHTS, TagConfigKeys, TagEntityBits, TagsWithInnerContent, UniqueTags, ValidHeadTags, asArray$1 as asArray, composableNames, defineHeadPlugin, hashCode, hashTag, normaliseClassProp, normaliseEntryTags, normaliseProps, normaliseTag, packMeta, processTemplateParams, resolveMetaKeyType, resolveMetaKeyValue, resolvePackedMetaObjectValue, resolveTitleTemplate, tagDedupeKey, tagWeight, unpackMeta, whitelistSafeInput };\n","import { HasElementTags, hashTag, normaliseProps, tagDedupeKey, defineHeadPlugin } from '@unhead/shared';\n\nasync function elementToTag($el) {\n  const tag = {\n    tag: $el.tagName.toLowerCase(),\n    props: await normaliseProps(\n      $el.getAttributeNames().reduce((props, name) => ({ ...props, [name]: $el.getAttribute(name) }), {})\n    ),\n    innerHTML: $el.innerHTML\n  };\n  tag._d = tagDedupeKey(tag);\n  return tag;\n}\nasync function renderDOMHead(head, options = {}) {\n  const dom = options.document || head.resolvedOptions.document;\n  if (!dom)\n    return;\n  const beforeRenderCtx = { shouldRender: head.dirty, tags: [] };\n  await head.hooks.callHook(\"dom:beforeRender\", beforeRenderCtx);\n  if (!beforeRenderCtx.shouldRender)\n    return;\n  const tags = (await head.resolveTags()).map((tag) => ({\n    tag,\n    id: HasElementTags.includes(tag.tag) ? hashTag(tag) : tag.tag,\n    shouldRender: true\n  }));\n  let state = head._dom;\n  if (!state) {\n    state = {\n      elMap: { htmlAttrs: dom.documentElement, bodyAttrs: dom.body }\n    };\n    for (const key of [\"body\", \"head\"]) {\n      const children = dom?.[key]?.children;\n      for (const c of [...children].filter((c2) => HasElementTags.includes(c2.tagName.toLowerCase())))\n        state.elMap[c.getAttribute(\"data-hid\") || hashTag(await elementToTag(c))] = c;\n    }\n  }\n  state.pendingSideEffects = { ...state.sideEffects || {} };\n  state.sideEffects = {};\n  function track(id, scope, fn) {\n    const k = `${id}:${scope}`;\n    state.sideEffects[k] = fn;\n    delete state.pendingSideEffects[k];\n  }\n  function trackCtx({ id, $el, tag }) {\n    const isAttrTag = tag.tag.endsWith(\"Attrs\");\n    state.elMap[id] = $el;\n    if (!isAttrTag) {\n      [\"textContent\", \"innerHTML\"].forEach((k) => {\n        tag[k] && tag[k] !== $el[k] && ($el[k] = tag[k]);\n      });\n      track(id, \"el\", () => {\n        state.elMap[id].remove();\n        delete state.elMap[id];\n      });\n    }\n    Object.entries(tag.props).forEach(([k, value]) => {\n      const ck = `attr:${k}`;\n      if (k === \"class\") {\n        for (const c of (value || \"\").split(\" \").filter(Boolean)) {\n          isAttrTag && track(id, `${ck}:${c}`, () => $el.classList.remove(c));\n          !$el.classList.contains(c) && $el.classList.add(c);\n        }\n      } else {\n        $el.getAttribute(k) !== value && $el.setAttribute(k, value === true ? \"\" : String(value));\n        isAttrTag && track(id, ck, () => $el.removeAttribute(k));\n      }\n    });\n  }\n  const pending = [];\n  const frag = {\n    bodyClose: void 0,\n    bodyOpen: void 0,\n    head: void 0\n  };\n  for (const ctx of tags) {\n    const { tag, shouldRender, id } = ctx;\n    if (!shouldRender)\n      continue;\n    if (tag.tag === \"title\") {\n      dom.title = tag.textContent;\n      continue;\n    }\n    ctx.$el = ctx.$el || state.elMap[id];\n    if (ctx.$el)\n      trackCtx(ctx);\n    else\n      HasElementTags.includes(tag.tag) && pending.push(ctx);\n  }\n  for (const ctx of pending) {\n    const pos = ctx.tag.tagPosition || \"head\";\n    ctx.$el = dom.createElement(ctx.tag.tag);\n    trackCtx(ctx);\n    frag[pos] = frag[pos] || dom.createDocumentFragment();\n    frag[pos].appendChild(ctx.$el);\n  }\n  for (const ctx of tags)\n    await head.hooks.callHook(\"dom:renderTag\", ctx, dom, track);\n  frag.head && dom.head.appendChild(frag.head);\n  frag.bodyOpen && dom.body.insertBefore(frag.bodyOpen, dom.body.firstChild);\n  frag.bodyClose && dom.body.appendChild(frag.bodyClose);\n  Object.values(state.pendingSideEffects).forEach((fn) => fn());\n  head._dom = state;\n  head.dirty = false;\n  await head.hooks.callHook(\"dom:rendered\", { renders: tags });\n}\n\nasync function debouncedRenderDOMHead(head, options = {}) {\n  const fn = options.delayFn || ((fn2) => setTimeout(fn2, 10));\n  return head._domUpdatePromise = head._domUpdatePromise || new Promise((resolve) => fn(async () => {\n    await renderDOMHead(head, options);\n    delete head._domUpdatePromise;\n    resolve();\n  }));\n}\n\n// @__NO_SIDE_EFFECTS__\nfunction DomPlugin(options) {\n  return defineHeadPlugin((head) => {\n    const initialPayload = head.resolvedOptions.document?.head.querySelector('script[id=\"unhead:payload\"]')?.innerHTML || false;\n    initialPayload && head.push(JSON.parse(initialPayload));\n    return {\n      mode: \"client\",\n      hooks: {\n        \"entries:updated\": function(head2) {\n          debouncedRenderDOMHead(head2, options);\n        }\n      }\n    };\n  });\n}\n\nexport { DomPlugin, debouncedRenderDOMHead, renderDOMHead };\n","import { createHooks } from 'hookable';\nimport { DomPlugin } from '@unhead/dom';\nimport { defineHeadPlugin, tagDedupeKey, tagWeight, HasElementTags, hashCode, NetworkEvents, SortModifiers, processTemplateParams, resolveTitleTemplate, IsBrowser, normaliseEntryTags, composableNames, whitelistSafeInput, unpackMeta } from '@unhead/shared';\nexport { composableNames } from '@unhead/shared';\n\nconst UsesMergeStrategy = [\"templateParams\", \"htmlAttrs\", \"bodyAttrs\"];\nconst DedupePlugin = defineHeadPlugin({\n  hooks: {\n    \"tag:normalise\": function({ tag }) {\n      [\"hid\", \"vmid\", \"key\"].forEach((key) => {\n        if (tag.props[key]) {\n          tag.key = tag.props[key];\n          delete tag.props[key];\n        }\n      });\n      const generatedKey = tagDedupeKey(tag);\n      const dedupe = generatedKey || (tag.key ? `${tag.tag}:${tag.key}` : false);\n      if (dedupe)\n        tag._d = dedupe;\n    },\n    \"tags:resolve\": function(ctx) {\n      const deduping = {};\n      ctx.tags.forEach((tag) => {\n        const dedupeKey = (tag.key ? `${tag.tag}:${tag.key}` : tag._d) || tag._p;\n        const dupedTag = deduping[dedupeKey];\n        if (dupedTag) {\n          let strategy = tag?.tagDuplicateStrategy;\n          if (!strategy && UsesMergeStrategy.includes(tag.tag))\n            strategy = \"merge\";\n          if (strategy === \"merge\") {\n            const oldProps = dupedTag.props;\n            [\"class\", \"style\"].forEach((key) => {\n              if (oldProps[key]) {\n                if (tag.props[key]) {\n                  if (key === \"style\" && !oldProps[key].endsWith(\";\"))\n                    oldProps[key] += \";\";\n                  tag.props[key] = `${oldProps[key]} ${tag.props[key]}`;\n                } else {\n                  tag.props[key] = oldProps[key];\n                }\n              }\n            });\n            deduping[dedupeKey].props = {\n              ...oldProps,\n              ...tag.props\n            };\n            return;\n          } else if (tag._e === dupedTag._e) {\n            dupedTag._duped = dupedTag._duped || [];\n            tag._d = `${dupedTag._d}:${dupedTag._duped.length + 1}`;\n            dupedTag._duped.push(tag);\n            return;\n          } else if (tagWeight(tag) > tagWeight(dupedTag)) {\n            return;\n          }\n        }\n        const propCount = Object.keys(tag.props).length + (tag.innerHTML ? 1 : 0) + (tag.textContent ? 1 : 0);\n        if (HasElementTags.includes(tag.tag) && propCount === 0) {\n          delete deduping[dedupeKey];\n          return;\n        }\n        deduping[dedupeKey] = tag;\n      });\n      const newTags = [];\n      Object.values(deduping).forEach((tag) => {\n        const dupes = tag._duped;\n        delete tag._duped;\n        newTags.push(tag);\n        if (dupes)\n          newTags.push(...dupes);\n      });\n      ctx.tags = newTags;\n      ctx.tags = ctx.tags.filter((t) => !(t.tag === \"meta\" && (t.props.name || t.props.property) && !t.props.content));\n    }\n  }\n});\n\nconst PayloadPlugin = defineHeadPlugin({\n  mode: \"server\",\n  hooks: {\n    \"tags:resolve\": function(ctx) {\n      const payload = {};\n      ctx.tags.filter((tag) => [\"titleTemplate\", \"templateParams\", \"title\"].includes(tag.tag) && tag._m === \"server\").forEach((tag) => {\n        payload[tag.tag] = tag.tag.startsWith(\"title\") ? tag.textContent : tag.props;\n      });\n      Object.keys(payload).length && ctx.tags.push({\n        tag: \"script\",\n        innerHTML: JSON.stringify(payload),\n        props: { id: \"unhead:payload\", type: \"application/json\" }\n      });\n    }\n  }\n});\n\nconst ValidEventTags = [\"script\", \"link\", \"bodyAttrs\"];\nfunction stripEventHandlers(tag) {\n  const props = {};\n  const eventHandlers = {};\n  Object.entries(tag.props).forEach(([key, value]) => {\n    if (key.startsWith(\"on\") && typeof value === \"function\") {\n      if (NetworkEvents.includes(key))\n        props[key] = `this.dataset.${key} = true`;\n      eventHandlers[key] = value;\n    } else {\n      props[key] = value;\n    }\n  });\n  return { props, eventHandlers };\n}\nconst EventHandlersPlugin = defineHeadPlugin((head) => ({\n  hooks: {\n    \"tags:resolve\": function(ctx) {\n      for (const tag of ctx.tags) {\n        if (ValidEventTags.includes(tag.tag)) {\n          const { props, eventHandlers } = stripEventHandlers(tag);\n          tag.props = props;\n          if (Object.keys(eventHandlers).length) {\n            if (tag.props.src || tag.props.href)\n              tag.key = tag.key || hashCode(tag.props.src || tag.props.href);\n            tag._eventHandlers = eventHandlers;\n          }\n        }\n      }\n    },\n    \"dom:renderTag\": function(ctx, dom, track) {\n      if (!ctx.tag._eventHandlers)\n        return;\n      const $eventListenerTarget = ctx.tag.tag === \"bodyAttrs\" ? dom.defaultView : ctx.$el;\n      Object.entries(ctx.tag._eventHandlers).forEach(([k, value]) => {\n        const sdeKey = `${ctx.tag._d || ctx.tag._p}:${k}`;\n        const eventName = k.slice(2).toLowerCase();\n        const eventDedupeKey = `data-h-${eventName}`;\n        track(ctx.id, sdeKey, () => {\n        });\n        if (ctx.$el.hasAttribute(eventDedupeKey))\n          return;\n        ctx.$el.setAttribute(eventDedupeKey, \"\");\n        let observer;\n        const handler = (e) => {\n          value(e);\n          observer?.disconnect();\n        };\n        if (k in ctx.$el.dataset) {\n          handler(new Event(k.replace(\"on\", \"\")));\n        } else if (NetworkEvents.includes(k) && typeof MutationObserver !== \"undefined\") {\n          observer = new MutationObserver((e) => {\n            const hasAttr = e.some((m) => m.attributeName === `data-${k}`);\n            if (hasAttr) {\n              handler(new Event(k.replace(\"on\", \"\")));\n              observer?.disconnect();\n            }\n          });\n          observer.observe(ctx.$el, {\n            attributes: true\n          });\n        } else {\n          $eventListenerTarget.addEventListener(eventName, handler);\n        }\n        track(ctx.id, sdeKey, () => {\n          observer?.disconnect();\n          $eventListenerTarget.removeEventListener(eventName, handler);\n          ctx.$el.removeAttribute(eventDedupeKey);\n        });\n      });\n    }\n  }\n}));\n\nconst DupeableTags = [\"link\", \"style\", \"script\", \"noscript\"];\nconst HashKeyedPlugin = defineHeadPlugin({\n  hooks: {\n    \"tag:normalise\": ({ tag }) => {\n      if (tag.key && DupeableTags.includes(tag.tag)) {\n        tag.props[\"data-hid\"] = tag._h = hashCode(tag.key);\n      }\n    }\n  }\n});\n\nconst SortPlugin = defineHeadPlugin({\n  hooks: {\n    \"tags:resolve\": (ctx) => {\n      const tagPositionForKey = (key) => ctx.tags.find((tag) => tag._d === key)?._p;\n      for (const { prefix, offset } of SortModifiers) {\n        for (const tag of ctx.tags.filter((tag2) => typeof tag2.tagPriority === \"string\" && tag2.tagPriority.startsWith(prefix))) {\n          const position = tagPositionForKey(\n            tag.tagPriority.replace(prefix, \"\")\n          );\n          if (typeof position !== \"undefined\")\n            tag._p = position + offset;\n        }\n      }\n      ctx.tags.sort((a, b) => a._p - b._p).sort((a, b) => tagWeight(a) - tagWeight(b));\n    }\n  }\n});\n\nconst SupportedAttrs = {\n  meta: \"content\",\n  link: \"href\",\n  htmlAttrs: \"lang\"\n};\nconst TemplateParamsPlugin = defineHeadPlugin((head) => ({\n  hooks: {\n    \"tags:resolve\": (ctx) => {\n      const { tags } = ctx;\n      const title = tags.find((tag) => tag.tag === \"title\")?.textContent;\n      const idx = tags.findIndex((tag) => tag.tag === \"templateParams\");\n      const params = idx !== -1 ? tags[idx].props : {};\n      const sep = params.separator || \"|\";\n      delete params.separator;\n      params.pageTitle = processTemplateParams(params.pageTitle || title || \"\", params, sep);\n      for (const tag of tags.filter((t) => t.processTemplateParams !== false)) {\n        const v = SupportedAttrs[tag.tag];\n        if (v && typeof tag.props[v] === \"string\") {\n          tag.props[v] = processTemplateParams(tag.props[v], params, sep);\n        } else if (tag.processTemplateParams === true || [\"titleTemplate\", \"title\"].includes(tag.tag)) {\n          [\"innerHTML\", \"textContent\"].forEach((p) => {\n            if (typeof tag[p] === \"string\")\n              tag[p] = processTemplateParams(tag[p], params, sep);\n          });\n        }\n      }\n      head._templateParams = params;\n      head._separator = sep;\n      ctx.tags = tags.filter((tag) => tag.tag !== \"templateParams\");\n    }\n  }\n}));\n\nconst TitleTemplatePlugin = defineHeadPlugin({\n  hooks: {\n    \"tags:resolve\": (ctx) => {\n      const { tags } = ctx;\n      let titleTemplateIdx = tags.findIndex((i) => i.tag === \"titleTemplate\");\n      const titleIdx = tags.findIndex((i) => i.tag === \"title\");\n      if (titleIdx !== -1 && titleTemplateIdx !== -1) {\n        const newTitle = resolveTitleTemplate(\n          tags[titleTemplateIdx].textContent,\n          tags[titleIdx].textContent\n        );\n        if (newTitle !== null) {\n          tags[titleIdx].textContent = newTitle || tags[titleIdx].textContent;\n        } else {\n          delete tags[titleIdx];\n        }\n      } else if (titleTemplateIdx !== -1) {\n        const newTitle = resolveTitleTemplate(\n          tags[titleTemplateIdx].textContent\n        );\n        if (newTitle !== null) {\n          tags[titleTemplateIdx].textContent = newTitle;\n          tags[titleTemplateIdx].tag = \"title\";\n          titleTemplateIdx = -1;\n        }\n      }\n      if (titleTemplateIdx !== -1) {\n        delete tags[titleTemplateIdx];\n      }\n      ctx.tags = tags.filter(Boolean);\n    }\n  }\n});\n\nconst XSSPlugin = defineHeadPlugin({\n  hooks: {\n    \"tags:afterResolve\": function(ctx) {\n      for (const tag of ctx.tags) {\n        if (typeof tag.innerHTML === \"string\") {\n          if (tag.innerHTML && [\"application/ld+json\", \"application/json\"].includes(tag.props.type)) {\n            tag.innerHTML = tag.innerHTML.replace(/</g, \"\\\\u003C\");\n          } else {\n            tag.innerHTML = tag.innerHTML.replace(new RegExp(`</${tag.tag}`, \"g\"), `<\\\\/${tag.tag}`);\n          }\n        }\n      }\n    }\n  }\n});\n\nlet activeHead;\n// @__NO_SIDE_EFFECTS__\nfunction createHead(options = {}) {\n  const head = createHeadCore(options);\n  head.use(DomPlugin());\n  return activeHead = head;\n}\n// @__NO_SIDE_EFFECTS__\nfunction createServerHead(options = {}) {\n  return activeHead = createHeadCore(options);\n}\nfunction filterMode(mode, ssr) {\n  return !mode || mode === \"server\" && ssr || mode === \"client\" && !ssr;\n}\nfunction createHeadCore(options = {}) {\n  const hooks = createHooks();\n  hooks.addHooks(options.hooks || {});\n  options.document = options.document || (IsBrowser ? document : void 0);\n  const ssr = !options.document;\n  const updated = () => {\n    head.dirty = true;\n    hooks.callHook(\"entries:updated\", head);\n  };\n  let entryCount = 0;\n  let entries = [];\n  const plugins = [];\n  const head = {\n    plugins,\n    dirty: false,\n    resolvedOptions: options,\n    hooks,\n    headEntries() {\n      return entries;\n    },\n    use(p) {\n      const plugin = typeof p === \"function\" ? p(head) : p;\n      if (!plugin.key || !plugins.some((p2) => p2.key === plugin.key)) {\n        plugins.push(plugin);\n        filterMode(plugin.mode, ssr) && hooks.addHooks(plugin.hooks || {});\n      }\n    },\n    push(input, entryOptions) {\n      delete entryOptions?.head;\n      const entry = {\n        _i: entryCount++,\n        input,\n        ...entryOptions\n      };\n      if (filterMode(entry.mode, ssr)) {\n        entries.push(entry);\n        updated();\n      }\n      return {\n        dispose() {\n          entries = entries.filter((e) => e._i !== entry._i);\n          hooks.callHook(\"entries:updated\", head);\n          updated();\n        },\n        // a patch is the same as creating a new entry, just a nice DX\n        patch(input2) {\n          entries = entries.map((e) => {\n            if (e._i === entry._i) {\n              e.input = entry.input = input2;\n            }\n            return e;\n          });\n          updated();\n        }\n      };\n    },\n    async resolveTags() {\n      const resolveCtx = { tags: [], entries: [...entries] };\n      await hooks.callHook(\"entries:resolve\", resolveCtx);\n      for (const entry of resolveCtx.entries) {\n        const resolved = entry.resolvedInput || entry.input;\n        entry.resolvedInput = await (entry.transform ? entry.transform(resolved) : resolved);\n        if (entry.resolvedInput) {\n          for (const tag of await normaliseEntryTags(entry)) {\n            const tagCtx = { tag, entry, resolvedOptions: head.resolvedOptions };\n            await hooks.callHook(\"tag:normalise\", tagCtx);\n            resolveCtx.tags.push(tagCtx.tag);\n          }\n        }\n      }\n      await hooks.callHook(\"tags:beforeResolve\", resolveCtx);\n      await hooks.callHook(\"tags:resolve\", resolveCtx);\n      await hooks.callHook(\"tags:afterResolve\", resolveCtx);\n      return resolveCtx.tags;\n    },\n    ssr\n  };\n  [\n    DedupePlugin,\n    PayloadPlugin,\n    EventHandlersPlugin,\n    HashKeyedPlugin,\n    SortPlugin,\n    TemplateParamsPlugin,\n    TitleTemplatePlugin,\n    XSSPlugin,\n    ...options?.plugins || []\n  ].forEach((p) => head.use(p));\n  head.hooks.callHook(\"init\", head);\n  return head;\n}\n\n// @__NO_SIDE_EFFECTS__\nfunction HashHydrationPlugin() {\n  return defineHeadPlugin({});\n}\n\nconst importRe = /@import/;\n// @__NO_SIDE_EFFECTS__\nfunction CapoPlugin(options) {\n  return defineHeadPlugin({\n    hooks: {\n      \"tags:beforeResolve\": function({ tags }) {\n        for (const tag of tags) {\n          if (tag.tagPosition && tag.tagPosition !== \"head\")\n            continue;\n          tag.tagPriority = tag.tagPriority || tagWeight(tag);\n          if (tag.tagPriority !== 100)\n            continue;\n          const isTruthy = (val) => val === \"\" || val === true;\n          const isScript = tag.tag === \"script\";\n          const isLink = tag.tag === \"link\";\n          if (isScript && isTruthy(tag.props.async)) {\n            tag.tagPriority = 30;\n          } else if (tag.tag === \"style\" && tag.innerHTML && importRe.test(tag.innerHTML)) {\n            tag.tagPriority = 40;\n          } else if (isScript && tag.props.src && !isTruthy(tag.props.defer) && !isTruthy(tag.props.async) && tag.props.type !== \"module\" && !tag.props.type?.endsWith(\"json\")) {\n            tag.tagPriority = 50;\n          } else if (isLink && tag.props.rel === \"stylesheet\" || tag.tag === \"style\") {\n            tag.tagPriority = 60;\n          } else if (isLink && [\"preload\", \"modulepreload\"].includes(tag.props.rel)) {\n            tag.tagPriority = 70;\n          } else if (isScript && isTruthy(tag.props.defer) && tag.props.src && !isTruthy(tag.props.async)) {\n            tag.tagPriority = 80;\n          } else if (isLink && [\"prefetch\", \"dns-prefetch\", \"prerender\"].includes(tag.props.rel)) {\n            tag.tagPriority = 90;\n          }\n        }\n        options?.track && tags.push({\n          tag: \"htmlAttrs\",\n          props: {\n            \"data-capo\": \"\"\n          }\n        });\n      }\n    }\n  });\n}\n\nconst unheadComposablesImports = [\n  {\n    from: \"unhead\",\n    imports: composableNames\n  }\n];\n\nfunction getActiveHead() {\n  return activeHead;\n}\n\nfunction useHead(input, options = {}) {\n  const head = options.head || getActiveHead();\n  return head?.push(input, options);\n}\n\nfunction useHeadSafe(input, options = {}) {\n  return useHead(input, {\n    ...options || {},\n    transform: whitelistSafeInput\n  });\n}\n\nfunction useServerHead(input, options = {}) {\n  return useHead(input, { ...options, mode: \"server\" });\n}\n\nfunction useServerHeadSafe(input, options = {}) {\n  return useHeadSafe(input, { ...options, mode: \"server\" });\n}\n\nfunction useSeoMeta(input, options) {\n  const { title, titleTemplate, ...meta } = input;\n  return useHead({\n    title,\n    titleTemplate,\n    // we need to input the meta so the reactivity will be resolved\n    // @ts-expect-error runtime type\n    _flatMeta: meta\n  }, {\n    ...options,\n    transform(t) {\n      const meta2 = unpackMeta({ ...t._flatMeta });\n      delete t._flatMeta;\n      return {\n        // @ts-expect-error runtime type\n        ...t,\n        meta: meta2\n      };\n    }\n  });\n}\n\nfunction useServerSeoMeta(input, options) {\n  return useSeoMeta(input, {\n    ...options || {},\n    mode: \"server\"\n  });\n}\n\nconst UseScriptDefaults = {\n  defer: true,\n  fetchpriority: \"low\"\n};\nfunction useScript(input, _options) {\n  const options = _options || {};\n  const head = options.head || getActiveHead();\n  if (!head)\n    throw new Error(\"No active head found, please provide a head instance or use the useHead composable\");\n  const id = input.key || hashCode(input.src || (typeof input.innerHTML === \"string\" ? input.innerHTML : \"\"));\n  const key = `use-script.${id}`;\n  if (head._scripts?.[id])\n    return head._scripts[id];\n  async function transform(entry) {\n    const script2 = await (options.transform || ((input2) => input2))(entry.script[0]);\n    const ctx = { script: script2 };\n    await head.hooks.callHook(\"script:transform\", ctx);\n    return { script: [ctx.script] };\n  }\n  function maybeHintEarlyConnection(rel) {\n    if (\n      // opt-out\n      options.skipEarlyConnections || !input.src.includes(\"//\") || !head.ssr\n    )\n      return;\n    const key2 = `use-script.${id}.early-connection`;\n    head.push({\n      link: [{ key: key2, rel, href: new URL(input.src).origin }]\n    }, { mode: \"server\" });\n  }\n  const script = {\n    id,\n    status: \"awaitingLoad\",\n    loaded: false,\n    remove() {\n      if (script.status === \"loaded\") {\n        script.entry?.dispose();\n        script.status = \"removed\";\n        head.hooks.callHook(`script:updated`, hookCtx);\n        delete head._scripts?.[id];\n        return true;\n      }\n      return false;\n    },\n    waitForLoad() {\n      return new Promise((resolve) => {\n        if (script.status === \"loaded\")\n          resolve(options.use());\n        function watchForScriptLoaded({ script: script2 }) {\n          if (script2.id === id && script2.status === \"loaded\") {\n            script2.loaded = true;\n            resolve(options.use?.());\n            head.hooks.removeHook(\"script:updated\", watchForScriptLoaded);\n          }\n        }\n        head.hooks.hook(\"script:updated\", watchForScriptLoaded);\n      });\n    },\n    load() {\n      if (script.status !== \"awaitingLoad\")\n        return script.waitForLoad();\n      script.status = \"loading\";\n      head.hooks.callHook(`script:updated`, hookCtx);\n      script.entry = head.push({\n        script: [\n          // async by default\n          { ...UseScriptDefaults, ...input, key }\n        ]\n      }, {\n        ...options,\n        // @ts-expect-error untyped\n        transform,\n        head\n      });\n      return script.waitForLoad();\n    }\n  };\n  const hookCtx = { script };\n  NetworkEvents.forEach((fn) => {\n    const _fn = typeof input[fn] === \"function\" ? input[fn].bind({}) : null;\n    input[fn] = (e) => {\n      script.status = fn === \"onload\" ? \"loaded\" : fn === \"onerror\" ? \"error\" : \"loading\";\n      head.hooks.callHook(`script:updated`, hookCtx);\n      _fn && _fn(e);\n    };\n  });\n  let trigger = options.trigger;\n  if (trigger) {\n    const isIdle = trigger === \"idle\";\n    if (isIdle) {\n      if (head.ssr)\n        trigger = \"manual\";\n      else\n        trigger = new Promise((resolve) => requestIdleCallback(() => resolve()));\n    }\n    trigger === \"manual\" && (trigger = new Promise(() => {\n    }));\n    trigger instanceof Promise && trigger.then(script.load);\n    maybeHintEarlyConnection(isIdle ? \"preconnect\" : \"dns-prefetch\");\n  } else {\n    script.load();\n    maybeHintEarlyConnection(\"preconnect\");\n  }\n  function resolveInnerHtmlLoad(ctx) {\n    if (ctx.tag.key === key) {\n      if (ctx.tag.innerHTML) {\n        setTimeout(\n          () => {\n            script.status = \"loaded\";\n            head.hooks.callHook(\"script:updated\", hookCtx);\n            typeof input.onload === \"function\" && input.onload(new Event(\"load\"));\n          },\n          5\n          /* give inline script a chance to run */\n        );\n      }\n      head.hooks.removeHook(\"dom:renderTag\", resolveInnerHtmlLoad);\n    }\n  }\n  head.hooks.hook(\"dom:renderTag\", resolveInnerHtmlLoad);\n  const instance = new Proxy({}, {\n    get(_, fn) {\n      const stub = options.stub?.({ script, fn });\n      if (stub)\n        return stub;\n      if (fn === \"$script\")\n        return script;\n      return (...args) => {\n        if (head.ssr || !options.use)\n          return;\n        if (script.loaded) {\n          const api = options.use();\n          return api[fn](...args);\n        } else {\n          return script.waitForLoad().then(\n            (api) => {\n              return api[fn](...args);\n            }\n          );\n        }\n      };\n    }\n  });\n  head._scripts = head._scripts || {};\n  head._scripts[id] = instance;\n  return instance;\n}\n\nexport { CapoPlugin, HashHydrationPlugin, createHead, createHeadCore, createServerHead, getActiveHead, unheadComposablesImports, useHead, useHeadSafe, useScript, useSeoMeta, useServerHead, useServerHeadSafe, useServerSeoMeta };\n","import { version, unref, nextTick, inject } from 'vue';\nimport { createServerHead as createServerHead$1, createHead as createHead$1, getActiveHead } from 'unhead';\nimport { defineHeadPlugin } from '@unhead/shared';\n\nconst Vue3 = version.startsWith(\"3\");\n\nfunction resolveUnref(r) {\n  return typeof r === \"function\" ? r() : unref(r);\n}\nfunction resolveUnrefHeadInput(ref, lastKey = \"\") {\n  if (ref instanceof Promise)\n    return ref;\n  const root = resolveUnref(ref);\n  if (!ref || !root)\n    return root;\n  if (Array.isArray(root))\n    return root.map((r) => resolveUnrefHeadInput(r, lastKey));\n  if (typeof root === \"object\") {\n    return Object.fromEntries(\n      Object.entries(root).map(([k, v]) => {\n        if (k === \"titleTemplate\" || k.startsWith(\"on\"))\n          return [k, unref(v)];\n        return [k, resolveUnrefHeadInput(v, k)];\n      })\n    );\n  }\n  return root;\n}\n\nconst VueReactivityPlugin = defineHeadPlugin({\n  hooks: {\n    \"entries:resolve\": function(ctx) {\n      for (const entry of ctx.entries)\n        entry.resolvedInput = resolveUnrefHeadInput(entry.input);\n    }\n  }\n});\n\nconst headSymbol = \"usehead\";\nfunction vueInstall(head) {\n  const plugin = {\n    install(app) {\n      if (Vue3) {\n        app.config.globalProperties.$unhead = head;\n        app.config.globalProperties.$head = head;\n        app.provide(headSymbol, head);\n      }\n    }\n  };\n  return plugin.install;\n}\nfunction createServerHead(options = {}) {\n  const head = createServerHead$1(options);\n  head.use(VueReactivityPlugin);\n  head.install = vueInstall(head);\n  return head;\n}\nfunction createHead(options = {}) {\n  options.domDelayFn = options.domDelayFn || ((fn) => nextTick(() => setTimeout(() => fn(), 0)));\n  const head = createHead$1(options);\n  head.use(VueReactivityPlugin);\n  head.install = vueInstall(head);\n  return head;\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__unhead_injection_handler__\";\nfunction setHeadInjectionHandler(handler) {\n  _global[globalKey] = handler;\n}\nfunction injectHead() {\n  if (globalKey in _global) {\n    return _global[globalKey]();\n  }\n  const head = inject(headSymbol);\n  if (!head && process.env.NODE_ENV !== \"production\")\n    console.warn(\"Unhead is missing Vue context, falling back to shared context. This may have unexpected results.\");\n  return head || getActiveHead();\n}\n\nexport { Vue3 as V, createServerHead as a, createHead as c, headSymbol as h, injectHead as i, resolveUnrefHeadInput as r, setHeadInjectionHandler as s };\n","import { ref, watchEffect, watch, getCurrentInstance, onBeforeUnmount, onDeactivated, onActivated } from 'vue';\nimport { i as injectHead, r as resolveUnrefHeadInput } from './vue.cf295fb1.mjs';\n\nfunction useHead(input, options = {}) {\n  const head = options.head || injectHead();\n  if (head) {\n    if (!head.ssr)\n      return clientUseHead(head, input, options);\n    return head.push(input, options);\n  }\n}\nfunction clientUseHead(head, input, options = {}) {\n  const deactivated = ref(false);\n  const resolvedInput = ref({});\n  watchEffect(() => {\n    resolvedInput.value = deactivated.value ? {} : resolveUnrefHeadInput(input);\n  });\n  const entry = head.push(resolvedInput.value, options);\n  watch(resolvedInput, (e) => {\n    entry.patch(e);\n  });\n  const vm = getCurrentInstance();\n  if (vm) {\n    onBeforeUnmount(() => {\n      entry.dispose();\n    });\n    onDeactivated(() => {\n      deactivated.value = true;\n    });\n    onActivated(() => {\n      deactivated.value = false;\n    });\n  }\n  return entry;\n}\n\nexport { useHead as u };\n","const UNSAFE_CHARS_REGEXP = /[<>\\/\\u2028\\u2029]/g;\nconst ESCAPED_CHARS = {\n  \"<\": \"\\\\u003C\",\n  \">\": \"\\\\u003E\",\n  \"/\": \"\\\\u002F\",\n  \"\\u2028\": \"\\\\u2028\",\n  \"\\u2029\": \"\\\\u2029\"\n};\nfunction escapeUnsafeChars(unsafeChar) {\n  return ESCAPED_CHARS[unsafeChar];\n}\nfunction serializeState(state) {\n  if (state == null || Object.keys(state).length === 0)\n    return null;\n  try {\n    return JSON.stringify(JSON.stringify(state || {})).replace(\n      UNSAFE_CHARS_REGEXP,\n      escapeUnsafeChars\n    );\n  } catch (error) {\n    console.error(\"[SSG] On state serialization -\", error, state);\n    return null;\n  }\n}\nfunction deserializeState(state) {\n  try {\n    return JSON.parse(state || \"{}\");\n  } catch (error) {\n    console.error(\"[SSG] On state deserialization -\", error, state);\n    return {};\n  }\n}\n\nexport { deserializeState as d, serializeState as s };\n","import { defineComponent, ref, onMounted } from 'vue';\n\nfunction documentReady(_passThrough) {\n  if (document.readyState === \"loading\") {\n    return new Promise((resolve) => {\n      document.addEventListener(\"DOMContentLoaded\", () => resolve(_passThrough));\n    });\n  }\n  return Promise.resolve(_passThrough);\n}\n\nconst ClientOnly = defineComponent({\n  setup(props, { slots }) {\n    const mounted = ref(false);\n    onMounted(() => mounted.value = true);\n    return () => {\n      if (!mounted.value)\n        return slots.placeholder && slots.placeholder({});\n      return slots.default && slots.default({});\n    };\n  }\n});\n\nexport { ClientOnly as C, documentReady as d };\n","import { createApp, createSSRApp } from 'vue';\nimport { createRouter, createWebHistory, createMemoryHistory } from 'vue-router';\nimport { createHead } from '@unhead/vue';\nimport { d as deserializeState } from './shared/vite-ssg.a009fbf1.mjs';\nimport { C as ClientOnly, d as documentReady } from './shared/vite-ssg.5912142e.mjs';\n\nfunction ViteSSG(App, routerOptions, fn, options = {}) {\n  const {\n    transformState,\n    registerComponents = true,\n    useHead = true,\n    rootContainer = \"#app\"\n  } = options;\n  const isClient = typeof window !== \"undefined\";\n  async function createApp$1(client = false, routePath) {\n    const app = client ? createApp(App) : createSSRApp(App);\n    let head;\n    if (useHead) {\n      head = createHead();\n      app.use(head);\n    }\n    const router = createRouter({\n      history: client ? createWebHistory(routerOptions.base) : createMemoryHistory(routerOptions.base),\n      ...routerOptions\n    });\n    const { routes } = routerOptions;\n    if (registerComponents)\n      app.component(\"ClientOnly\", ClientOnly);\n    const appRenderCallbacks = [];\n    const onSSRAppRendered = client ? () => {\n    } : (cb) => appRenderCallbacks.push(cb);\n    const triggerOnSSRAppRendered = () => {\n      return Promise.all(appRenderCallbacks.map((cb) => cb()));\n    };\n    const context = {\n      app,\n      head,\n      isClient,\n      router,\n      routes,\n      onSSRAppRendered,\n      triggerOnSSRAppRendered,\n      initialState: {},\n      transformState,\n      routePath\n    };\n    if (client) {\n      await documentReady();\n      context.initialState = transformState?.(window.__INITIAL_STATE__ || {}) || deserializeState(window.__INITIAL_STATE__);\n    }\n    await fn?.(context);\n    app.use(router);\n    let entryRoutePath;\n    let isFirstRoute = true;\n    router.beforeEach((to, from, next) => {\n      if (isFirstRoute || entryRoutePath && entryRoutePath === to.path) {\n        isFirstRoute = false;\n        entryRoutePath = to.path;\n        to.meta.state = context.initialState;\n      }\n      next();\n    });\n    if (!client) {\n      const route = context.routePath ?? \"/\";\n      router.push(route);\n      await router.isReady();\n      context.initialState = router.currentRoute.value.meta.state || {};\n    }\n    const initialState = context.initialState;\n    return {\n      ...context,\n      initialState\n    };\n  }\n  if (isClient) {\n    (async () => {\n      const { app, router } = await createApp$1(true);\n      await router.isReady();\n      app.mount(rootContainer, true);\n    })();\n  }\n  return createApp$1;\n}\n\nexport { ViteSSG };\n","\n\n\nexport const layouts = {\n'BasicLayout': () => import('/home/runner/_work/pyscript-dot-com/pyscript-dot-com/apps/psdc/ui/src/layouts/BasicLayout.vue'),\n'DefaultLayout': () => import('/home/runner/_work/pyscript-dot-com/pyscript-dot-com/apps/psdc/ui/src/layouts/DefaultLayout.vue'),\n'DocsLayout': () => import('/home/runner/_work/pyscript-dot-com/pyscript-dot-com/apps/psdc/ui/src/layouts/DocsLayout.vue'),\n}\nexport const createGetRoutes = (router, withLayout = false) => {\n  const routes = router.getRoutes()\n  if (withLayout) {\n      return routes\n  }\n  return () => routes.filter(route => !route.meta.isLayout)\n}\n\nexport function setupLayouts(routes) {\n  function deepSetupLayout(routes, top = true) {\n    return routes.map(route => {\n      if (route.children?.length > 0) {\n        route.children = deepSetupLayout(route.children, false)\n      }\n      \n      if (top) {\n        // unplugin-vue-router adds a top-level route to the routing group, which we should skip.\n        const skipLayout = !route.component && route.children?.find(r => (r.path === '' || r.path === '/') && r.meta?.isLayout)  \n\n        if (skipLayout) {\n          return route\n        }\n\n        if (route.meta?.layout !== false) {\n          return { \n            path: route.path,\n            component: layouts[route.meta?.layout || 'DefaultLayout'],\n            children: route.path === '/' ? [route] : [{...route, path: ''}],\n            meta: {\n              isLayout: true\n            }\n          }\n        }\n      }\n\n      if (route.meta?.layout) {\n        return { \n          path: route.path,\n          component: layouts[route.meta?.layout],\n          children: [ {...route, path: ''} ],\n          meta: {\n            isLayout: true\n          }\n        }\n      }\n\n      return route\n    })\n  }\n\n    return deepSetupLayout(routes)\n\n}\n","export var TransformationType;\n(function (TransformationType) {\n    TransformationType[TransformationType[\"PLAIN_TO_CLASS\"] = 0] = \"PLAIN_TO_CLASS\";\n    TransformationType[TransformationType[\"CLASS_TO_PLAIN\"] = 1] = \"CLASS_TO_PLAIN\";\n    TransformationType[TransformationType[\"CLASS_TO_CLASS\"] = 2] = \"CLASS_TO_CLASS\";\n})(TransformationType || (TransformationType = {}));\n//# sourceMappingURL=transformation-type.enum.js.map","import { TransformationType } from './enums';\n/**\n * Storage all library metadata.\n */\nvar MetadataStorage = /** @class */ (function () {\n    function MetadataStorage() {\n        // -------------------------------------------------------------------------\n        // Properties\n        // -------------------------------------------------------------------------\n        this._typeMetadatas = new Map();\n        this._transformMetadatas = new Map();\n        this._exposeMetadatas = new Map();\n        this._excludeMetadatas = new Map();\n        this._ancestorsMap = new Map();\n    }\n    // -------------------------------------------------------------------------\n    // Adder Methods\n    // -------------------------------------------------------------------------\n    MetadataStorage.prototype.addTypeMetadata = function (metadata) {\n        if (!this._typeMetadatas.has(metadata.target)) {\n            this._typeMetadatas.set(metadata.target, new Map());\n        }\n        this._typeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n    };\n    MetadataStorage.prototype.addTransformMetadata = function (metadata) {\n        if (!this._transformMetadatas.has(metadata.target)) {\n            this._transformMetadatas.set(metadata.target, new Map());\n        }\n        if (!this._transformMetadatas.get(metadata.target).has(metadata.propertyName)) {\n            this._transformMetadatas.get(metadata.target).set(metadata.propertyName, []);\n        }\n        this._transformMetadatas.get(metadata.target).get(metadata.propertyName).push(metadata);\n    };\n    MetadataStorage.prototype.addExposeMetadata = function (metadata) {\n        if (!this._exposeMetadatas.has(metadata.target)) {\n            this._exposeMetadatas.set(metadata.target, new Map());\n        }\n        this._exposeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n    };\n    MetadataStorage.prototype.addExcludeMetadata = function (metadata) {\n        if (!this._excludeMetadatas.has(metadata.target)) {\n            this._excludeMetadatas.set(metadata.target, new Map());\n        }\n        this._excludeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n    };\n    // -------------------------------------------------------------------------\n    // Public Methods\n    // -------------------------------------------------------------------------\n    MetadataStorage.prototype.findTransformMetadatas = function (target, propertyName, transformationType) {\n        return this.findMetadatas(this._transformMetadatas, target, propertyName).filter(function (metadata) {\n            if (!metadata.options)\n                return true;\n            if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true)\n                return true;\n            if (metadata.options.toClassOnly === true) {\n                return (transformationType === TransformationType.CLASS_TO_CLASS ||\n                    transformationType === TransformationType.PLAIN_TO_CLASS);\n            }\n            if (metadata.options.toPlainOnly === true) {\n                return transformationType === TransformationType.CLASS_TO_PLAIN;\n            }\n            return true;\n        });\n    };\n    MetadataStorage.prototype.findExcludeMetadata = function (target, propertyName) {\n        return this.findMetadata(this._excludeMetadatas, target, propertyName);\n    };\n    MetadataStorage.prototype.findExposeMetadata = function (target, propertyName) {\n        return this.findMetadata(this._exposeMetadatas, target, propertyName);\n    };\n    MetadataStorage.prototype.findExposeMetadataByCustomName = function (target, name) {\n        return this.getExposedMetadatas(target).find(function (metadata) {\n            return metadata.options && metadata.options.name === name;\n        });\n    };\n    MetadataStorage.prototype.findTypeMetadata = function (target, propertyName) {\n        return this.findMetadata(this._typeMetadatas, target, propertyName);\n    };\n    MetadataStorage.prototype.getStrategy = function (target) {\n        var excludeMap = this._excludeMetadatas.get(target);\n        var exclude = excludeMap && excludeMap.get(undefined);\n        var exposeMap = this._exposeMetadatas.get(target);\n        var expose = exposeMap && exposeMap.get(undefined);\n        if ((exclude && expose) || (!exclude && !expose))\n            return 'none';\n        return exclude ? 'excludeAll' : 'exposeAll';\n    };\n    MetadataStorage.prototype.getExposedMetadatas = function (target) {\n        return this.getMetadata(this._exposeMetadatas, target);\n    };\n    MetadataStorage.prototype.getExcludedMetadatas = function (target) {\n        return this.getMetadata(this._excludeMetadatas, target);\n    };\n    MetadataStorage.prototype.getExposedProperties = function (target, transformationType) {\n        return this.getExposedMetadatas(target)\n            .filter(function (metadata) {\n            if (!metadata.options)\n                return true;\n            if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true)\n                return true;\n            if (metadata.options.toClassOnly === true) {\n                return (transformationType === TransformationType.CLASS_TO_CLASS ||\n                    transformationType === TransformationType.PLAIN_TO_CLASS);\n            }\n            if (metadata.options.toPlainOnly === true) {\n                return transformationType === TransformationType.CLASS_TO_PLAIN;\n            }\n            return true;\n        })\n            .map(function (metadata) { return metadata.propertyName; });\n    };\n    MetadataStorage.prototype.getExcludedProperties = function (target, transformationType) {\n        return this.getExcludedMetadatas(target)\n            .filter(function (metadata) {\n            if (!metadata.options)\n                return true;\n            if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true)\n                return true;\n            if (metadata.options.toClassOnly === true) {\n                return (transformationType === TransformationType.CLASS_TO_CLASS ||\n                    transformationType === TransformationType.PLAIN_TO_CLASS);\n            }\n            if (metadata.options.toPlainOnly === true) {\n                return transformationType === TransformationType.CLASS_TO_PLAIN;\n            }\n            return true;\n        })\n            .map(function (metadata) { return metadata.propertyName; });\n    };\n    MetadataStorage.prototype.clear = function () {\n        this._typeMetadatas.clear();\n        this._exposeMetadatas.clear();\n        this._excludeMetadatas.clear();\n        this._ancestorsMap.clear();\n    };\n    // -------------------------------------------------------------------------\n    // Private Methods\n    // -------------------------------------------------------------------------\n    MetadataStorage.prototype.getMetadata = function (metadatas, target) {\n        var metadataFromTargetMap = metadatas.get(target);\n        var metadataFromTarget;\n        if (metadataFromTargetMap) {\n            metadataFromTarget = Array.from(metadataFromTargetMap.values()).filter(function (meta) { return meta.propertyName !== undefined; });\n        }\n        var metadataFromAncestors = [];\n        for (var _i = 0, _a = this.getAncestors(target); _i < _a.length; _i++) {\n            var ancestor = _a[_i];\n            var ancestorMetadataMap = metadatas.get(ancestor);\n            if (ancestorMetadataMap) {\n                var metadataFromAncestor = Array.from(ancestorMetadataMap.values()).filter(function (meta) { return meta.propertyName !== undefined; });\n                metadataFromAncestors.push.apply(metadataFromAncestors, metadataFromAncestor);\n            }\n        }\n        return metadataFromAncestors.concat(metadataFromTarget || []);\n    };\n    MetadataStorage.prototype.findMetadata = function (metadatas, target, propertyName) {\n        var metadataFromTargetMap = metadatas.get(target);\n        if (metadataFromTargetMap) {\n            var metadataFromTarget = metadataFromTargetMap.get(propertyName);\n            if (metadataFromTarget) {\n                return metadataFromTarget;\n            }\n        }\n        for (var _i = 0, _a = this.getAncestors(target); _i < _a.length; _i++) {\n            var ancestor = _a[_i];\n            var ancestorMetadataMap = metadatas.get(ancestor);\n            if (ancestorMetadataMap) {\n                var ancestorResult = ancestorMetadataMap.get(propertyName);\n                if (ancestorResult) {\n                    return ancestorResult;\n                }\n            }\n        }\n        return undefined;\n    };\n    MetadataStorage.prototype.findMetadatas = function (metadatas, target, propertyName) {\n        var metadataFromTargetMap = metadatas.get(target);\n        var metadataFromTarget;\n        if (metadataFromTargetMap) {\n            metadataFromTarget = metadataFromTargetMap.get(propertyName);\n        }\n        var metadataFromAncestorsTarget = [];\n        for (var _i = 0, _a = this.getAncestors(target); _i < _a.length; _i++) {\n            var ancestor = _a[_i];\n            var ancestorMetadataMap = metadatas.get(ancestor);\n            if (ancestorMetadataMap) {\n                if (ancestorMetadataMap.has(propertyName)) {\n                    metadataFromAncestorsTarget.push.apply(metadataFromAncestorsTarget, ancestorMetadataMap.get(propertyName));\n                }\n            }\n        }\n        return metadataFromAncestorsTarget\n            .slice()\n            .reverse()\n            .concat((metadataFromTarget || []).slice().reverse());\n    };\n    MetadataStorage.prototype.getAncestors = function (target) {\n        if (!target)\n            return [];\n        if (!this._ancestorsMap.has(target)) {\n            var ancestors = [];\n            for (var baseClass = Object.getPrototypeOf(target.prototype.constructor); typeof baseClass.prototype !== 'undefined'; baseClass = Object.getPrototypeOf(baseClass.prototype.constructor)) {\n                ancestors.push(baseClass);\n            }\n            this._ancestorsMap.set(target, ancestors);\n        }\n        return this._ancestorsMap.get(target);\n    };\n    return MetadataStorage;\n}());\nexport { MetadataStorage };\n//# sourceMappingURL=MetadataStorage.js.map","import { MetadataStorage } from './MetadataStorage';\n/**\n * Default metadata storage is used as singleton and can be used to storage all metadatas.\n */\nexport var defaultMetadataStorage = new MetadataStorage();\n//# sourceMappingURL=storage.js.map","/**\n * This function returns the global object across Node and browsers.\n *\n * Note: `globalThis` is the standardized approach however it has been added to\n * Node.js in version 12. We need to include this snippet until Node 12 EOL.\n */\nexport function getGlobal() {\n    if (typeof globalThis !== 'undefined') {\n        return globalThis;\n    }\n    if (typeof global !== 'undefined') {\n        return global;\n    }\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: Cannot find name 'window'.\n    if (typeof window !== 'undefined') {\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore: Cannot find name 'window'.\n        return window;\n    }\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore: Cannot find name 'self'.\n    if (typeof self !== 'undefined') {\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore: Cannot find name 'self'.\n        return self;\n    }\n}\n//# sourceMappingURL=get-global.util.js.map","export function isPromise(p) {\n    return p !== null && typeof p === 'object' && typeof p.then === 'function';\n}\n//# sourceMappingURL=is-promise.util.js.map","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { defaultMetadataStorage } from './storage';\nimport { TransformationType } from './enums';\nimport { getGlobal, isPromise } from './utils';\nfunction instantiateArrayType(arrayType) {\n    var array = new arrayType();\n    if (!(array instanceof Set) && !('push' in array)) {\n        return [];\n    }\n    return array;\n}\nvar TransformOperationExecutor = /** @class */ (function () {\n    // -------------------------------------------------------------------------\n    // Constructor\n    // -------------------------------------------------------------------------\n    function TransformOperationExecutor(transformationType, options) {\n        this.transformationType = transformationType;\n        this.options = options;\n        // -------------------------------------------------------------------------\n        // Private Properties\n        // -------------------------------------------------------------------------\n        this.recursionStack = new Set();\n    }\n    // -------------------------------------------------------------------------\n    // Public Methods\n    // -------------------------------------------------------------------------\n    TransformOperationExecutor.prototype.transform = function (source, value, targetType, arrayType, isMap, level) {\n        var _this = this;\n        if (level === void 0) { level = 0; }\n        if (Array.isArray(value) || value instanceof Set) {\n            var newValue_1 = arrayType && this.transformationType === TransformationType.PLAIN_TO_CLASS\n                ? instantiateArrayType(arrayType)\n                : [];\n            value.forEach(function (subValue, index) {\n                var subSource = source ? source[index] : undefined;\n                if (!_this.options.enableCircularCheck || !_this.isCircular(subValue)) {\n                    var realTargetType = void 0;\n                    if (typeof targetType !== 'function' &&\n                        targetType &&\n                        targetType.options &&\n                        targetType.options.discriminator &&\n                        targetType.options.discriminator.property &&\n                        targetType.options.discriminator.subTypes) {\n                        if (_this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n                            realTargetType = targetType.options.discriminator.subTypes.find(function (subType) {\n                                return subType.name === subValue[targetType.options.discriminator.property];\n                            });\n                            var options = { newObject: newValue_1, object: subValue, property: undefined };\n                            var newType = targetType.typeFunction(options);\n                            realTargetType === undefined ? (realTargetType = newType) : (realTargetType = realTargetType.value);\n                            if (!targetType.options.keepDiscriminatorProperty)\n                                delete subValue[targetType.options.discriminator.property];\n                        }\n                        if (_this.transformationType === TransformationType.CLASS_TO_CLASS) {\n                            realTargetType = subValue.constructor;\n                        }\n                        if (_this.transformationType === TransformationType.CLASS_TO_PLAIN) {\n                            subValue[targetType.options.discriminator.property] = targetType.options.discriminator.subTypes.find(function (subType) { return subType.value === subValue.constructor; }).name;\n                        }\n                    }\n                    else {\n                        realTargetType = targetType;\n                    }\n                    var value_1 = _this.transform(subSource, subValue, realTargetType, undefined, subValue instanceof Map, level + 1);\n                    if (newValue_1 instanceof Set) {\n                        newValue_1.add(value_1);\n                    }\n                    else {\n                        newValue_1.push(value_1);\n                    }\n                }\n                else if (_this.transformationType === TransformationType.CLASS_TO_CLASS) {\n                    if (newValue_1 instanceof Set) {\n                        newValue_1.add(subValue);\n                    }\n                    else {\n                        newValue_1.push(subValue);\n                    }\n                }\n            });\n            return newValue_1;\n        }\n        else if (targetType === String && !isMap) {\n            if (value === null || value === undefined)\n                return value;\n            return String(value);\n        }\n        else if (targetType === Number && !isMap) {\n            if (value === null || value === undefined)\n                return value;\n            return Number(value);\n        }\n        else if (targetType === Boolean && !isMap) {\n            if (value === null || value === undefined)\n                return value;\n            return Boolean(value);\n        }\n        else if ((targetType === Date || value instanceof Date) && !isMap) {\n            if (value instanceof Date) {\n                return new Date(value.valueOf());\n            }\n            if (value === null || value === undefined)\n                return value;\n            return new Date(value);\n        }\n        else if (!!getGlobal().Buffer && (targetType === Buffer || value instanceof Buffer) && !isMap) {\n            if (value === null || value === undefined)\n                return value;\n            return Buffer.from(value);\n        }\n        else if (isPromise(value) && !isMap) {\n            return new Promise(function (resolve, reject) {\n                value.then(function (data) { return resolve(_this.transform(undefined, data, targetType, undefined, undefined, level + 1)); }, reject);\n            });\n        }\n        else if (!isMap && value !== null && typeof value === 'object' && typeof value.then === 'function') {\n            // Note: We should not enter this, as promise has been handled above\n            // This option simply returns the Promise preventing a JS error from happening and should be an inaccessible path.\n            return value; // skip promise transformation\n        }\n        else if (typeof value === 'object' && value !== null) {\n            // try to guess the type\n            if (!targetType && value.constructor !== Object /* && TransformationType === TransformationType.CLASS_TO_PLAIN*/)\n                if (!Array.isArray(value) && value.constructor === Array) {\n                    // Somebody attempts to convert special Array like object to Array, eg:\n                    // const evilObject = { '100000000': '100000000', __proto__: [] };\n                    // This could be used to cause Denial-of-service attack so we don't allow it.\n                    // See prevent-array-bomb.spec.ts for more details.\n                }\n                else {\n                    // We are good we can use the built-in constructor\n                    targetType = value.constructor;\n                }\n            if (!targetType && source)\n                targetType = source.constructor;\n            if (this.options.enableCircularCheck) {\n                // add transformed type to prevent circular references\n                this.recursionStack.add(value);\n            }\n            var keys = this.getKeys(targetType, value, isMap);\n            var newValue = source ? source : {};\n            if (!source &&\n                (this.transformationType === TransformationType.PLAIN_TO_CLASS ||\n                    this.transformationType === TransformationType.CLASS_TO_CLASS)) {\n                if (isMap) {\n                    newValue = new Map();\n                }\n                else if (targetType) {\n                    newValue = new targetType();\n                }\n                else {\n                    newValue = {};\n                }\n            }\n            var _loop_1 = function (key) {\n                if (key === '__proto__' || key === 'constructor') {\n                    return \"continue\";\n                }\n                var valueKey = key;\n                var newValueKey = key, propertyName = key;\n                if (!this_1.options.ignoreDecorators && targetType) {\n                    if (this_1.transformationType === TransformationType.PLAIN_TO_CLASS) {\n                        var exposeMetadata = defaultMetadataStorage.findExposeMetadataByCustomName(targetType, key);\n                        if (exposeMetadata) {\n                            propertyName = exposeMetadata.propertyName;\n                            newValueKey = exposeMetadata.propertyName;\n                        }\n                    }\n                    else if (this_1.transformationType === TransformationType.CLASS_TO_PLAIN ||\n                        this_1.transformationType === TransformationType.CLASS_TO_CLASS) {\n                        var exposeMetadata = defaultMetadataStorage.findExposeMetadata(targetType, key);\n                        if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) {\n                            newValueKey = exposeMetadata.options.name;\n                        }\n                    }\n                }\n                // get a subvalue\n                var subValue = undefined;\n                if (this_1.transformationType === TransformationType.PLAIN_TO_CLASS) {\n                    /**\n                     * This section is added for the following report:\n                     * https://github.com/typestack/class-transformer/issues/596\n                     *\n                     * We should not call functions or constructors when transforming to class.\n                     */\n                    subValue = value[valueKey];\n                }\n                else {\n                    if (value instanceof Map) {\n                        subValue = value.get(valueKey);\n                    }\n                    else if (value[valueKey] instanceof Function) {\n                        subValue = value[valueKey]();\n                    }\n                    else {\n                        subValue = value[valueKey];\n                    }\n                }\n                // determine a type\n                var type = undefined, isSubValueMap = subValue instanceof Map;\n                if (targetType && isMap) {\n                    type = targetType;\n                }\n                else if (targetType) {\n                    var metadata_1 = defaultMetadataStorage.findTypeMetadata(targetType, propertyName);\n                    if (metadata_1) {\n                        var options = { newObject: newValue, object: value, property: propertyName };\n                        var newType = metadata_1.typeFunction ? metadata_1.typeFunction(options) : metadata_1.reflectedType;\n                        if (metadata_1.options &&\n                            metadata_1.options.discriminator &&\n                            metadata_1.options.discriminator.property &&\n                            metadata_1.options.discriminator.subTypes) {\n                            if (!(value[valueKey] instanceof Array)) {\n                                if (this_1.transformationType === TransformationType.PLAIN_TO_CLASS) {\n                                    type = metadata_1.options.discriminator.subTypes.find(function (subType) {\n                                        if (subValue && subValue instanceof Object && metadata_1.options.discriminator.property in subValue) {\n                                            return subType.name === subValue[metadata_1.options.discriminator.property];\n                                        }\n                                    });\n                                    type === undefined ? (type = newType) : (type = type.value);\n                                    if (!metadata_1.options.keepDiscriminatorProperty) {\n                                        if (subValue && subValue instanceof Object && metadata_1.options.discriminator.property in subValue) {\n                                            delete subValue[metadata_1.options.discriminator.property];\n                                        }\n                                    }\n                                }\n                                if (this_1.transformationType === TransformationType.CLASS_TO_CLASS) {\n                                    type = subValue.constructor;\n                                }\n                                if (this_1.transformationType === TransformationType.CLASS_TO_PLAIN) {\n                                    if (subValue) {\n                                        subValue[metadata_1.options.discriminator.property] = metadata_1.options.discriminator.subTypes.find(function (subType) { return subType.value === subValue.constructor; }).name;\n                                    }\n                                }\n                            }\n                            else {\n                                type = metadata_1;\n                            }\n                        }\n                        else {\n                            type = newType;\n                        }\n                        isSubValueMap = isSubValueMap || metadata_1.reflectedType === Map;\n                    }\n                    else if (this_1.options.targetMaps) {\n                        // try to find a type in target maps\n                        this_1.options.targetMaps\n                            .filter(function (map) { return map.target === targetType && !!map.properties[propertyName]; })\n                            .forEach(function (map) { return (type = map.properties[propertyName]); });\n                    }\n                    else if (this_1.options.enableImplicitConversion &&\n                        this_1.transformationType === TransformationType.PLAIN_TO_CLASS) {\n                        // if we have no registererd type via the @Type() decorator then we check if we have any\n                        // type declarations in reflect-metadata (type declaration is emited only if some decorator is added to the property.)\n                        var reflectedType = Reflect.getMetadata('design:type', targetType.prototype, propertyName);\n                        if (reflectedType) {\n                            type = reflectedType;\n                        }\n                    }\n                }\n                // if value is an array try to get its custom array type\n                var arrayType_1 = Array.isArray(value[valueKey])\n                    ? this_1.getReflectedType(targetType, propertyName)\n                    : undefined;\n                // const subValueKey = TransformationType === TransformationType.PLAIN_TO_CLASS && newKeyName ? newKeyName : key;\n                var subSource = source ? source[valueKey] : undefined;\n                // if its deserialization then type if required\n                // if we uncomment this types like string[] will not work\n                // if (this.transformationType === TransformationType.PLAIN_TO_CLASS && !type && subValue instanceof Object && !(subValue instanceof Date))\n                //     throw new Error(`Cannot determine type for ${(targetType as any).name }.${propertyName}, did you forget to specify a @Type?`);\n                // if newValue is a source object that has method that match newKeyName then skip it\n                if (newValue.constructor.prototype) {\n                    var descriptor = Object.getOwnPropertyDescriptor(newValue.constructor.prototype, newValueKey);\n                    if ((this_1.transformationType === TransformationType.PLAIN_TO_CLASS ||\n                        this_1.transformationType === TransformationType.CLASS_TO_CLASS) &&\n                        // eslint-disable-next-line @typescript-eslint/unbound-method\n                        ((descriptor && !descriptor.set) || newValue[newValueKey] instanceof Function))\n                        return \"continue\";\n                }\n                if (!this_1.options.enableCircularCheck || !this_1.isCircular(subValue)) {\n                    var transformKey = this_1.transformationType === TransformationType.PLAIN_TO_CLASS ? newValueKey : key;\n                    var finalValue = void 0;\n                    if (this_1.transformationType === TransformationType.CLASS_TO_PLAIN) {\n                        // Get original value\n                        finalValue = value[transformKey];\n                        // Apply custom transformation\n                        finalValue = this_1.applyCustomTransformations(finalValue, targetType, transformKey, value, this_1.transformationType);\n                        // If nothing change, it means no custom transformation was applied, so use the subValue.\n                        finalValue = value[transformKey] === finalValue ? subValue : finalValue;\n                        // Apply the default transformation\n                        finalValue = this_1.transform(subSource, finalValue, type, arrayType_1, isSubValueMap, level + 1);\n                    }\n                    else {\n                        if (subValue === undefined && this_1.options.exposeDefaultValues) {\n                            // Set default value if nothing provided\n                            finalValue = newValue[newValueKey];\n                        }\n                        else {\n                            finalValue = this_1.transform(subSource, subValue, type, arrayType_1, isSubValueMap, level + 1);\n                            finalValue = this_1.applyCustomTransformations(finalValue, targetType, transformKey, value, this_1.transformationType);\n                        }\n                    }\n                    if (finalValue !== undefined || this_1.options.exposeUnsetFields) {\n                        if (newValue instanceof Map) {\n                            newValue.set(newValueKey, finalValue);\n                        }\n                        else {\n                            newValue[newValueKey] = finalValue;\n                        }\n                    }\n                }\n                else if (this_1.transformationType === TransformationType.CLASS_TO_CLASS) {\n                    var finalValue = subValue;\n                    finalValue = this_1.applyCustomTransformations(finalValue, targetType, key, value, this_1.transformationType);\n                    if (finalValue !== undefined || this_1.options.exposeUnsetFields) {\n                        if (newValue instanceof Map) {\n                            newValue.set(newValueKey, finalValue);\n                        }\n                        else {\n                            newValue[newValueKey] = finalValue;\n                        }\n                    }\n                }\n            };\n            var this_1 = this;\n            // traverse over keys\n            for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n                var key = keys_1[_i];\n                _loop_1(key);\n            }\n            if (this.options.enableCircularCheck) {\n                this.recursionStack.delete(value);\n            }\n            return newValue;\n        }\n        else {\n            return value;\n        }\n    };\n    TransformOperationExecutor.prototype.applyCustomTransformations = function (value, target, key, obj, transformationType) {\n        var _this = this;\n        var metadatas = defaultMetadataStorage.findTransformMetadatas(target, key, this.transformationType);\n        // apply versioning options\n        if (this.options.version !== undefined) {\n            metadatas = metadatas.filter(function (metadata) {\n                if (!metadata.options)\n                    return true;\n                return _this.checkVersion(metadata.options.since, metadata.options.until);\n            });\n        }\n        // apply grouping options\n        if (this.options.groups && this.options.groups.length) {\n            metadatas = metadatas.filter(function (metadata) {\n                if (!metadata.options)\n                    return true;\n                return _this.checkGroups(metadata.options.groups);\n            });\n        }\n        else {\n            metadatas = metadatas.filter(function (metadata) {\n                return !metadata.options || !metadata.options.groups || !metadata.options.groups.length;\n            });\n        }\n        metadatas.forEach(function (metadata) {\n            value = metadata.transformFn({ value: value, key: key, obj: obj, type: transformationType, options: _this.options });\n        });\n        return value;\n    };\n    // preventing circular references\n    TransformOperationExecutor.prototype.isCircular = function (object) {\n        return this.recursionStack.has(object);\n    };\n    TransformOperationExecutor.prototype.getReflectedType = function (target, propertyName) {\n        if (!target)\n            return undefined;\n        var meta = defaultMetadataStorage.findTypeMetadata(target, propertyName);\n        return meta ? meta.reflectedType : undefined;\n    };\n    TransformOperationExecutor.prototype.getKeys = function (target, object, isMap) {\n        var _this = this;\n        // determine exclusion strategy\n        var strategy = defaultMetadataStorage.getStrategy(target);\n        if (strategy === 'none')\n            strategy = this.options.strategy || 'exposeAll'; // exposeAll is default strategy\n        // get all keys that need to expose\n        var keys = [];\n        if (strategy === 'exposeAll' || isMap) {\n            if (object instanceof Map) {\n                keys = Array.from(object.keys());\n            }\n            else {\n                keys = Object.keys(object);\n            }\n        }\n        if (isMap) {\n            // expose & exclude do not apply for map keys only to fields\n            return keys;\n        }\n        /**\n         * If decorators are ignored but we don't want the extraneous values, then we use the\n         * metadata to decide which property is needed, but doesn't apply the decorator effect.\n         */\n        if (this.options.ignoreDecorators && this.options.excludeExtraneousValues && target) {\n            var exposedProperties = defaultMetadataStorage.getExposedProperties(target, this.transformationType);\n            var excludedProperties = defaultMetadataStorage.getExcludedProperties(target, this.transformationType);\n            keys = __spreadArray(__spreadArray([], exposedProperties, true), excludedProperties, true);\n        }\n        if (!this.options.ignoreDecorators && target) {\n            // add all exposed to list of keys\n            var exposedProperties = defaultMetadataStorage.getExposedProperties(target, this.transformationType);\n            if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n                exposedProperties = exposedProperties.map(function (key) {\n                    var exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n                    if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) {\n                        return exposeMetadata.options.name;\n                    }\n                    return key;\n                });\n            }\n            if (this.options.excludeExtraneousValues) {\n                keys = exposedProperties;\n            }\n            else {\n                keys = keys.concat(exposedProperties);\n            }\n            // exclude excluded properties\n            var excludedProperties_1 = defaultMetadataStorage.getExcludedProperties(target, this.transformationType);\n            if (excludedProperties_1.length > 0) {\n                keys = keys.filter(function (key) {\n                    return !excludedProperties_1.includes(key);\n                });\n            }\n            // apply versioning options\n            if (this.options.version !== undefined) {\n                keys = keys.filter(function (key) {\n                    var exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n                    if (!exposeMetadata || !exposeMetadata.options)\n                        return true;\n                    return _this.checkVersion(exposeMetadata.options.since, exposeMetadata.options.until);\n                });\n            }\n            // apply grouping options\n            if (this.options.groups && this.options.groups.length) {\n                keys = keys.filter(function (key) {\n                    var exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n                    if (!exposeMetadata || !exposeMetadata.options)\n                        return true;\n                    return _this.checkGroups(exposeMetadata.options.groups);\n                });\n            }\n            else {\n                keys = keys.filter(function (key) {\n                    var exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n                    return (!exposeMetadata ||\n                        !exposeMetadata.options ||\n                        !exposeMetadata.options.groups ||\n                        !exposeMetadata.options.groups.length);\n                });\n            }\n        }\n        // exclude prefixed properties\n        if (this.options.excludePrefixes && this.options.excludePrefixes.length) {\n            keys = keys.filter(function (key) {\n                return _this.options.excludePrefixes.every(function (prefix) {\n                    return key.substr(0, prefix.length) !== prefix;\n                });\n            });\n        }\n        // make sure we have unique keys\n        keys = keys.filter(function (key, index, self) {\n            return self.indexOf(key) === index;\n        });\n        return keys;\n    };\n    TransformOperationExecutor.prototype.checkVersion = function (since, until) {\n        var decision = true;\n        if (decision && since)\n            decision = this.options.version >= since;\n        if (decision && until)\n            decision = this.options.version < until;\n        return decision;\n    };\n    TransformOperationExecutor.prototype.checkGroups = function (groups) {\n        if (!groups)\n            return true;\n        return this.options.groups.some(function (optionGroup) { return groups.includes(optionGroup); });\n    };\n    return TransformOperationExecutor;\n}());\nexport { TransformOperationExecutor };\n//# sourceMappingURL=TransformOperationExecutor.js.map","/**\n * These are the default options used by any transformation operation.\n */\nexport var defaultOptions = {\n    enableCircularCheck: false,\n    enableImplicitConversion: false,\n    excludeExtraneousValues: false,\n    excludePrefixes: undefined,\n    exposeDefaultValues: false,\n    exposeUnsetFields: true,\n    groups: undefined,\n    ignoreDecorators: false,\n    strategy: undefined,\n    targetMaps: undefined,\n    version: undefined,\n};\n//# sourceMappingURL=default-options.constant.js.map","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 { TransformOperationExecutor } from './TransformOperationExecutor';\nimport { TransformationType } from './enums';\nimport { defaultOptions } from './constants/default-options.constant';\nvar ClassTransformer = /** @class */ (function () {\n    function ClassTransformer() {\n    }\n    ClassTransformer.prototype.instanceToPlain = function (object, options) {\n        var executor = new TransformOperationExecutor(TransformationType.CLASS_TO_PLAIN, __assign(__assign({}, defaultOptions), options));\n        return executor.transform(undefined, object, undefined, undefined, undefined, undefined);\n    };\n    ClassTransformer.prototype.classToPlainFromExist = function (object, plainObject, options) {\n        var executor = new TransformOperationExecutor(TransformationType.CLASS_TO_PLAIN, __assign(__assign({}, defaultOptions), options));\n        return executor.transform(plainObject, object, undefined, undefined, undefined, undefined);\n    };\n    ClassTransformer.prototype.plainToInstance = function (cls, plain, options) {\n        var executor = new TransformOperationExecutor(TransformationType.PLAIN_TO_CLASS, __assign(__assign({}, defaultOptions), options));\n        return executor.transform(undefined, plain, cls, undefined, undefined, undefined);\n    };\n    ClassTransformer.prototype.plainToClassFromExist = function (clsObject, plain, options) {\n        var executor = new TransformOperationExecutor(TransformationType.PLAIN_TO_CLASS, __assign(__assign({}, defaultOptions), options));\n        return executor.transform(clsObject, plain, undefined, undefined, undefined, undefined);\n    };\n    ClassTransformer.prototype.instanceToInstance = function (object, options) {\n        var executor = new TransformOperationExecutor(TransformationType.CLASS_TO_CLASS, __assign(__assign({}, defaultOptions), options));\n        return executor.transform(undefined, object, undefined, undefined, undefined, undefined);\n    };\n    ClassTransformer.prototype.classToClassFromExist = function (object, fromObject, options) {\n        var executor = new TransformOperationExecutor(TransformationType.CLASS_TO_CLASS, __assign(__assign({}, defaultOptions), options));\n        return executor.transform(fromObject, object, undefined, undefined, undefined, undefined);\n    };\n    ClassTransformer.prototype.serialize = function (object, options) {\n        return JSON.stringify(this.instanceToPlain(object, options));\n    };\n    /**\n     * Deserializes given JSON string to a object of the given class.\n     */\n    ClassTransformer.prototype.deserialize = function (cls, json, options) {\n        var jsonObject = JSON.parse(json);\n        return this.plainToInstance(cls, jsonObject, options);\n    };\n    /**\n     * Deserializes given JSON string to an array of objects of the given class.\n     */\n    ClassTransformer.prototype.deserializeArray = function (cls, json, options) {\n        var jsonObject = JSON.parse(json);\n        return this.plainToInstance(cls, jsonObject, options);\n    };\n    return ClassTransformer;\n}());\nexport { ClassTransformer };\n//# sourceMappingURL=ClassTransformer.js.map","import { defaultMetadataStorage } from '../storage';\n/**\n * Marks the given class or property as included. By default the property is included in both\n * constructorToPlain and plainToConstructor transformations. It can be limited to only one direction\n * via using the `toPlainOnly` or `toClassOnly` option.\n *\n * Can be applied to class definitions and properties.\n */\nexport function Expose(options) {\n    if (options === void 0) { options = {}; }\n    /**\n     * NOTE: The `propertyName` property must be marked as optional because\n     * this decorator used both as a class and a property decorator and the\n     * Typescript compiler will freak out if we make it mandatory as a class\n     * decorator only receives one parameter.\n     */\n    return function (object, propertyName) {\n        defaultMetadataStorage.addExposeMetadata({\n            target: object instanceof Function ? object : object.constructor,\n            propertyName: propertyName,\n            options: options,\n        });\n    };\n}\n//# sourceMappingURL=expose.decorator.js.map","import { defaultMetadataStorage } from '../storage';\n/**\n * Specifies a type of the property.\n * The given TypeFunction can return a constructor. A discriminator can be given in the options.\n *\n * Can be applied to properties only.\n */\nexport function Type(typeFunction, options) {\n    if (options === void 0) { options = {}; }\n    return function (target, propertyName) {\n        var reflectedType = Reflect.getMetadata('design:type', target, propertyName);\n        defaultMetadataStorage.addTypeMetadata({\n            target: target.constructor,\n            propertyName: propertyName,\n            reflectedType: reflectedType,\n            typeFunction: typeFunction,\n            options: options,\n        });\n    };\n}\n//# sourceMappingURL=type.decorator.js.map","import { ClassTransformer } from './ClassTransformer';\nexport { ClassTransformer } from './ClassTransformer';\nexport * from './decorators';\nexport * from './interfaces';\nexport * from './enums';\nvar classTransformer = new ClassTransformer();\nexport function classToPlain(object, options) {\n    return classTransformer.instanceToPlain(object, options);\n}\nexport function instanceToPlain(object, options) {\n    return classTransformer.instanceToPlain(object, options);\n}\nexport function classToPlainFromExist(object, plainObject, options) {\n    return classTransformer.classToPlainFromExist(object, plainObject, options);\n}\nexport function plainToClass(cls, plain, options) {\n    return classTransformer.plainToInstance(cls, plain, options);\n}\nexport function plainToInstance(cls, plain, options) {\n    return classTransformer.plainToInstance(cls, plain, options);\n}\nexport function plainToClassFromExist(clsObject, plain, options) {\n    return classTransformer.plainToClassFromExist(clsObject, plain, options);\n}\nexport function instanceToInstance(object, options) {\n    return classTransformer.instanceToInstance(object, options);\n}\nexport function classToClassFromExist(object, fromObject, options) {\n    return classTransformer.classToClassFromExist(object, fromObject, options);\n}\nexport function serialize(object, options) {\n    return classTransformer.serialize(object, options);\n}\n/**\n * Deserializes given JSON string to a object of the given class.\n *\n * @deprecated This function is being removed. Please use the following instead:\n * ```\n * instanceToClass(cls, JSON.parse(json), options)\n * ```\n */\nexport function deserialize(cls, json, options) {\n    return classTransformer.deserialize(cls, json, options);\n}\n/**\n * Deserializes given JSON string to an array of objects of the given class.\n *\n * @deprecated This function is being removed. Please use the following instead:\n * ```\n * JSON.parse(json).map(value => instanceToClass(cls, value, options))\n * ```\n *\n */\nexport function deserializeArray(cls, json, options) {\n    return classTransformer.deserializeArray(cls, json, options);\n}\n//# sourceMappingURL=index.js.map","/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar Reflect;\n(function (Reflect) {\n    // Metadata Proposal\n    // https://rbuckton.github.io/reflect-metadata/\n    (function (factory) {\n        var root = typeof globalThis === \"object\" ? globalThis :\n            typeof global === \"object\" ? global :\n                typeof self === \"object\" ? self :\n                    typeof this === \"object\" ? this :\n                        sloppyModeThis();\n        var exporter = makeExporter(Reflect);\n        if (typeof root.Reflect !== \"undefined\") {\n            exporter = makeExporter(root.Reflect, exporter);\n        }\n        factory(exporter, root);\n        if (typeof root.Reflect === \"undefined\") {\n            root.Reflect = Reflect;\n        }\n        function makeExporter(target, previous) {\n            return function (key, value) {\n                Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n                if (previous)\n                    previous(key, value);\n            };\n        }\n        function functionThis() {\n            try {\n                return Function(\"return this;\")();\n            }\n            catch (_) { }\n        }\n        function indirectEvalThis() {\n            try {\n                return (void 0, eval)(\"(function() { return this; })()\");\n            }\n            catch (_) { }\n        }\n        function sloppyModeThis() {\n            return functionThis() || indirectEvalThis();\n        }\n    })(function (exporter, root) {\n        var hasOwn = Object.prototype.hasOwnProperty;\n        // feature test for Symbol support\n        var supportsSymbol = typeof Symbol === \"function\";\n        var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n        var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n        var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n        var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n        var downLevel = !supportsCreate && !supportsProto;\n        var HashMap = {\n            // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n            create: supportsCreate\n                ? function () { return MakeDictionary(Object.create(null)); }\n                : supportsProto\n                    ? function () { return MakeDictionary({ __proto__: null }); }\n                    : function () { return MakeDictionary({}); },\n            has: downLevel\n                ? function (map, key) { return hasOwn.call(map, key); }\n                : function (map, key) { return key in map; },\n            get: downLevel\n                ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n                : function (map, key) { return map[key]; },\n        };\n        // Load global or shim versions of Map, Set, and WeakMap\n        var functionPrototype = Object.getPrototypeOf(Function);\n        var _Map = typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n        var _Set = typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n        var _WeakMap = typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n        var registrySymbol = supportsSymbol ? Symbol.for(\"@reflect-metadata:registry\") : undefined;\n        var metadataRegistry = GetOrCreateMetadataRegistry();\n        var metadataProvider = CreateMetadataProvider(metadataRegistry);\n        /**\n         * Applies a set of decorators to a property of a target object.\n         * @param decorators An array of decorators.\n         * @param target The target object.\n         * @param propertyKey (Optional) The property key to decorate.\n         * @param attributes (Optional) The property descriptor for the target key.\n         * @remarks Decorators are applied in reverse order.\n         * @example\n         *\n         *     class Example {\n         *         // property declarations are not part of ES6, though they are valid in TypeScript:\n         *         // static staticProperty;\n         *         // property;\n         *\n         *         constructor(p) { }\n         *         static staticMethod(p) { }\n         *         method(p) { }\n         *     }\n         *\n         *     // constructor\n         *     Example = Reflect.decorate(decoratorsArray, Example);\n         *\n         *     // property (on constructor)\n         *     Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n         *\n         *     // property (on prototype)\n         *     Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n         *\n         *     // method (on constructor)\n         *     Object.defineProperty(Example, \"staticMethod\",\n         *         Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n         *             Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n         *\n         *     // method (on prototype)\n         *     Object.defineProperty(Example.prototype, \"method\",\n         *         Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n         *             Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n         *\n         */\n        function decorate(decorators, target, propertyKey, attributes) {\n            if (!IsUndefined(propertyKey)) {\n                if (!IsArray(decorators))\n                    throw new TypeError();\n                if (!IsObject(target))\n                    throw new TypeError();\n                if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n                    throw new TypeError();\n                if (IsNull(attributes))\n                    attributes = undefined;\n                propertyKey = ToPropertyKey(propertyKey);\n                return DecorateProperty(decorators, target, propertyKey, attributes);\n            }\n            else {\n                if (!IsArray(decorators))\n                    throw new TypeError();\n                if (!IsConstructor(target))\n                    throw new TypeError();\n                return DecorateConstructor(decorators, target);\n            }\n        }\n        exporter(\"decorate\", decorate);\n        // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n        // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n        /**\n         * A default metadata decorator factory that can be used on a class, class member, or parameter.\n         * @param metadataKey The key for the metadata entry.\n         * @param metadataValue The value for the metadata entry.\n         * @returns A decorator function.\n         * @remarks\n         * If `metadataKey` is already defined for the target and target key, the\n         * metadataValue for that key will be overwritten.\n         * @example\n         *\n         *     // constructor\n         *     @Reflect.metadata(key, value)\n         *     class Example {\n         *     }\n         *\n         *     // property (on constructor, TypeScript only)\n         *     class Example {\n         *         @Reflect.metadata(key, value)\n         *         static staticProperty;\n         *     }\n         *\n         *     // property (on prototype, TypeScript only)\n         *     class Example {\n         *         @Reflect.metadata(key, value)\n         *         property;\n         *     }\n         *\n         *     // method (on constructor)\n         *     class Example {\n         *         @Reflect.metadata(key, value)\n         *         static staticMethod() { }\n         *     }\n         *\n         *     // method (on prototype)\n         *     class Example {\n         *         @Reflect.metadata(key, value)\n         *         method() { }\n         *     }\n         *\n         */\n        function metadata(metadataKey, metadataValue) {\n            function decorator(target, propertyKey) {\n                if (!IsObject(target))\n                    throw new TypeError();\n                if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n                    throw new TypeError();\n                OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n            }\n            return decorator;\n        }\n        exporter(\"metadata\", metadata);\n        /**\n         * Define a unique metadata entry on the target.\n         * @param metadataKey A key used to store and retrieve metadata.\n         * @param metadataValue A value that contains attached metadata.\n         * @param target The target object on which to define metadata.\n         * @param propertyKey (Optional) The property key for the target.\n         * @example\n         *\n         *     class Example {\n         *         // property declarations are not part of ES6, though they are valid in TypeScript:\n         *         // static staticProperty;\n         *         // property;\n         *\n         *         constructor(p) { }\n         *         static staticMethod(p) { }\n         *         method(p) { }\n         *     }\n         *\n         *     // constructor\n         *     Reflect.defineMetadata(\"custom:annotation\", options, Example);\n         *\n         *     // property (on constructor)\n         *     Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n         *\n         *     // property (on prototype)\n         *     Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n         *\n         *     // method (on constructor)\n         *     Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n         *\n         *     // method (on prototype)\n         *     Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n         *\n         *     // decorator factory as metadata-producing annotation.\n         *     function MyAnnotation(options): Decorator {\n         *         return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n         *     }\n         *\n         */\n        function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n            if (!IsObject(target))\n                throw new TypeError();\n            if (!IsUndefined(propertyKey))\n                propertyKey = ToPropertyKey(propertyKey);\n            return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n        }\n        exporter(\"defineMetadata\", defineMetadata);\n        /**\n         * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n         * @param metadataKey A key used to store and retrieve metadata.\n         * @param target The target object on which the metadata is defined.\n         * @param propertyKey (Optional) The property key for the target.\n         * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n         * @example\n         *\n         *     class Example {\n         *         // property declarations are not part of ES6, though they are valid in TypeScript:\n         *         // static staticProperty;\n         *         // property;\n         *\n         *         constructor(p) { }\n         *         static staticMethod(p) { }\n         *         method(p) { }\n         *     }\n         *\n         *     // constructor\n         *     result = Reflect.hasMetadata(\"custom:annotation\", Example);\n         *\n         *     // property (on constructor)\n         *     result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n         *\n         *     // property (on prototype)\n         *     result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n         *\n         *     // method (on constructor)\n         *     result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n         *\n         *     // method (on prototype)\n         *     result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n         *\n         */\n        function hasMetadata(metadataKey, target, propertyKey) {\n            if (!IsObject(target))\n                throw new TypeError();\n            if (!IsUndefined(propertyKey))\n                propertyKey = ToPropertyKey(propertyKey);\n            return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n        }\n        exporter(\"hasMetadata\", hasMetadata);\n        /**\n         * Gets a value indicating whether the target object has the provided metadata key defined.\n         * @param metadataKey A key used to store and retrieve metadata.\n         * @param target The target object on which the metadata is defined.\n         * @param propertyKey (Optional) The property key for the target.\n         * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n         * @example\n         *\n         *     class Example {\n         *         // property declarations are not part of ES6, though they are valid in TypeScript:\n         *         // static staticProperty;\n         *         // property;\n         *\n         *         constructor(p) { }\n         *         static staticMethod(p) { }\n         *         method(p) { }\n         *     }\n         *\n         *     // constructor\n         *     result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n         *\n         *     // property (on constructor)\n         *     result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n         *\n         *     // property (on prototype)\n         *     result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n         *\n         *     // method (on constructor)\n         *     result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n         *\n         *     // method (on prototype)\n         *     result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n         *\n         */\n        function hasOwnMetadata(metadataKey, target, propertyKey) {\n            if (!IsObject(target))\n                throw new TypeError();\n            if (!IsUndefined(propertyKey))\n                propertyKey = ToPropertyKey(propertyKey);\n            return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n        }\n        exporter(\"hasOwnMetadata\", hasOwnMetadata);\n        /**\n         * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n         * @param metadataKey A key used to store and retrieve metadata.\n         * @param target The target object on which the metadata is defined.\n         * @param propertyKey (Optional) The property key for the target.\n         * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n         * @example\n         *\n         *     class Example {\n         *         // property declarations are not part of ES6, though they are valid in TypeScript:\n         *         // static staticProperty;\n         *         // property;\n         *\n         *         constructor(p) { }\n         *         static staticMethod(p) { }\n         *         method(p) { }\n         *     }\n         *\n         *     // constructor\n         *     result = Reflect.getMetadata(\"custom:annotation\", Example);\n         *\n         *     // property (on constructor)\n         *     result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n         *\n         *     // property (on prototype)\n         *     result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n         *\n         *     // method (on constructor)\n         *     result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n         *\n         *     // method (on prototype)\n         *     result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n         *\n         */\n        function getMetadata(metadataKey, target, propertyKey) {\n            if (!IsObject(target))\n                throw new TypeError();\n            if (!IsUndefined(propertyKey))\n                propertyKey = ToPropertyKey(propertyKey);\n            return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n        }\n        exporter(\"getMetadata\", getMetadata);\n        /**\n         * Gets the metadata value for the provided metadata key on the target object.\n         * @param metadataKey A key used to store and retrieve metadata.\n         * @param target The target object on which the metadata is defined.\n         * @param propertyKey (Optional) The property key for the target.\n         * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n         * @example\n         *\n         *     class Example {\n         *         // property declarations are not part of ES6, though they are valid in TypeScript:\n         *         // static staticProperty;\n         *         // property;\n         *\n         *         constructor(p) { }\n         *         static staticMethod(p) { }\n         *         method(p) { }\n         *     }\n         *\n         *     // constructor\n         *     result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n         *\n         *     // property (on constructor)\n         *     result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n         *\n         *     // property (on prototype)\n         *     result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n         *\n         *     // method (on constructor)\n         *     result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n         *\n         *     // method (on prototype)\n         *     result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n         *\n         */\n        function getOwnMetadata(metadataKey, target, propertyKey) {\n            if (!IsObject(target))\n                throw new TypeError();\n            if (!IsUndefined(propertyKey))\n                propertyKey = ToPropertyKey(propertyKey);\n            return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n        }\n        exporter(\"getOwnMetadata\", getOwnMetadata);\n        /**\n         * Gets the metadata keys defined on the target object or its prototype chain.\n         * @param target The target object on which the metadata is defined.\n         * @param propertyKey (Optional) The property key for the target.\n         * @returns An array of unique metadata keys.\n         * @example\n         *\n         *     class Example {\n         *         // property declarations are not part of ES6, though they are valid in TypeScript:\n         *         // static staticProperty;\n         *         // property;\n         *\n         *         constructor(p) { }\n         *         static staticMethod(p) { }\n         *         method(p) { }\n         *     }\n         *\n         *     // constructor\n         *     result = Reflect.getMetadataKeys(Example);\n         *\n         *     // property (on constructor)\n         *     result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n         *\n         *     // property (on prototype)\n         *     result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n         *\n         *     // method (on constructor)\n         *     result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n         *\n         *     // method (on prototype)\n         *     result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n         *\n         */\n        function getMetadataKeys(target, propertyKey) {\n            if (!IsObject(target))\n                throw new TypeError();\n            if (!IsUndefined(propertyKey))\n                propertyKey = ToPropertyKey(propertyKey);\n            return OrdinaryMetadataKeys(target, propertyKey);\n        }\n        exporter(\"getMetadataKeys\", getMetadataKeys);\n        /**\n         * Gets the unique metadata keys defined on the target object.\n         * @param target The target object on which the metadata is defined.\n         * @param propertyKey (Optional) The property key for the target.\n         * @returns An array of unique metadata keys.\n         * @example\n         *\n         *     class Example {\n         *         // property declarations are not part of ES6, though they are valid in TypeScript:\n         *         // static staticProperty;\n         *         // property;\n         *\n         *         constructor(p) { }\n         *         static staticMethod(p) { }\n         *         method(p) { }\n         *     }\n         *\n         *     // constructor\n         *     result = Reflect.getOwnMetadataKeys(Example);\n         *\n         *     // property (on constructor)\n         *     result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n         *\n         *     // property (on prototype)\n         *     result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n         *\n         *     // method (on constructor)\n         *     result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n         *\n         *     // method (on prototype)\n         *     result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n         *\n         */\n        function getOwnMetadataKeys(target, propertyKey) {\n            if (!IsObject(target))\n                throw new TypeError();\n            if (!IsUndefined(propertyKey))\n                propertyKey = ToPropertyKey(propertyKey);\n            return OrdinaryOwnMetadataKeys(target, propertyKey);\n        }\n        exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n        /**\n         * Deletes the metadata entry from the target object with the provided key.\n         * @param metadataKey A key used to store and retrieve metadata.\n         * @param target The target object on which the metadata is defined.\n         * @param propertyKey (Optional) The property key for the target.\n         * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n         * @example\n         *\n         *     class Example {\n         *         // property declarations are not part of ES6, though they are valid in TypeScript:\n         *         // static staticProperty;\n         *         // property;\n         *\n         *         constructor(p) { }\n         *         static staticMethod(p) { }\n         *         method(p) { }\n         *     }\n         *\n         *     // constructor\n         *     result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n         *\n         *     // property (on constructor)\n         *     result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n         *\n         *     // property (on prototype)\n         *     result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n         *\n         *     // method (on constructor)\n         *     result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n         *\n         *     // method (on prototype)\n         *     result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n         *\n         */\n        function deleteMetadata(metadataKey, target, propertyKey) {\n            if (!IsObject(target))\n                throw new TypeError();\n            if (!IsUndefined(propertyKey))\n                propertyKey = ToPropertyKey(propertyKey);\n            if (!IsObject(target))\n                throw new TypeError();\n            if (!IsUndefined(propertyKey))\n                propertyKey = ToPropertyKey(propertyKey);\n            var provider = GetMetadataProvider(target, propertyKey, /*Create*/ false);\n            if (IsUndefined(provider))\n                return false;\n            return provider.OrdinaryDeleteMetadata(metadataKey, target, propertyKey);\n        }\n        exporter(\"deleteMetadata\", deleteMetadata);\n        function DecorateConstructor(decorators, target) {\n            for (var i = decorators.length - 1; i >= 0; --i) {\n                var decorator = decorators[i];\n                var decorated = decorator(target);\n                if (!IsUndefined(decorated) && !IsNull(decorated)) {\n                    if (!IsConstructor(decorated))\n                        throw new TypeError();\n                    target = decorated;\n                }\n            }\n            return target;\n        }\n        function DecorateProperty(decorators, target, propertyKey, descriptor) {\n            for (var i = decorators.length - 1; i >= 0; --i) {\n                var decorator = decorators[i];\n                var decorated = decorator(target, propertyKey, descriptor);\n                if (!IsUndefined(decorated) && !IsNull(decorated)) {\n                    if (!IsObject(decorated))\n                        throw new TypeError();\n                    descriptor = decorated;\n                }\n            }\n            return descriptor;\n        }\n        // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n        // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n        function OrdinaryHasMetadata(MetadataKey, O, P) {\n            var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n            if (hasOwn)\n                return true;\n            var parent = OrdinaryGetPrototypeOf(O);\n            if (!IsNull(parent))\n                return OrdinaryHasMetadata(MetadataKey, parent, P);\n            return false;\n        }\n        // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n        // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n        function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n            var provider = GetMetadataProvider(O, P, /*Create*/ false);\n            if (IsUndefined(provider))\n                return false;\n            return ToBoolean(provider.OrdinaryHasOwnMetadata(MetadataKey, O, P));\n        }\n        // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n        // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n        function OrdinaryGetMetadata(MetadataKey, O, P) {\n            var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n            if (hasOwn)\n                return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n            var parent = OrdinaryGetPrototypeOf(O);\n            if (!IsNull(parent))\n                return OrdinaryGetMetadata(MetadataKey, parent, P);\n            return undefined;\n        }\n        // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n        // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n        function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n            var provider = GetMetadataProvider(O, P, /*Create*/ false);\n            if (IsUndefined(provider))\n                return;\n            return provider.OrdinaryGetOwnMetadata(MetadataKey, O, P);\n        }\n        // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n        // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n        function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n            var provider = GetMetadataProvider(O, P, /*Create*/ true);\n            provider.OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P);\n        }\n        // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n        // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n        function OrdinaryMetadataKeys(O, P) {\n            var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n            var parent = OrdinaryGetPrototypeOf(O);\n            if (parent === null)\n                return ownKeys;\n            var parentKeys = OrdinaryMetadataKeys(parent, P);\n            if (parentKeys.length <= 0)\n                return ownKeys;\n            if (ownKeys.length <= 0)\n                return parentKeys;\n            var set = new _Set();\n            var keys = [];\n            for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n                var key = ownKeys_1[_i];\n                var hasKey = set.has(key);\n                if (!hasKey) {\n                    set.add(key);\n                    keys.push(key);\n                }\n            }\n            for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n                var key = parentKeys_1[_a];\n                var hasKey = set.has(key);\n                if (!hasKey) {\n                    set.add(key);\n                    keys.push(key);\n                }\n            }\n            return keys;\n        }\n        // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n        // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n        function OrdinaryOwnMetadataKeys(O, P) {\n            var provider = GetMetadataProvider(O, P, /*create*/ false);\n            if (!provider) {\n                return [];\n            }\n            return provider.OrdinaryOwnMetadataKeys(O, P);\n        }\n        // 6 ECMAScript Data Typ0es and Values\n        // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n        function Type(x) {\n            if (x === null)\n                return 1 /* Null */;\n            switch (typeof x) {\n                case \"undefined\": return 0 /* Undefined */;\n                case \"boolean\": return 2 /* Boolean */;\n                case \"string\": return 3 /* String */;\n                case \"symbol\": return 4 /* Symbol */;\n                case \"number\": return 5 /* Number */;\n                case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n                default: return 6 /* Object */;\n            }\n        }\n        // 6.1.1 The Undefined Type\n        // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n        function IsUndefined(x) {\n            return x === undefined;\n        }\n        // 6.1.2 The Null Type\n        // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n        function IsNull(x) {\n            return x === null;\n        }\n        // 6.1.5 The Symbol Type\n        // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n        function IsSymbol(x) {\n            return typeof x === \"symbol\";\n        }\n        // 6.1.7 The Object Type\n        // https://tc39.github.io/ecma262/#sec-object-type\n        function IsObject(x) {\n            return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n        }\n        // 7.1 Type Conversion\n        // https://tc39.github.io/ecma262/#sec-type-conversion\n        // 7.1.1 ToPrimitive(input [, PreferredType])\n        // https://tc39.github.io/ecma262/#sec-toprimitive\n        function ToPrimitive(input, PreferredType) {\n            switch (Type(input)) {\n                case 0 /* Undefined */: return input;\n                case 1 /* Null */: return input;\n                case 2 /* Boolean */: return input;\n                case 3 /* String */: return input;\n                case 4 /* Symbol */: return input;\n                case 5 /* Number */: return input;\n            }\n            var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n            var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n            if (exoticToPrim !== undefined) {\n                var result = exoticToPrim.call(input, hint);\n                if (IsObject(result))\n                    throw new TypeError();\n                return result;\n            }\n            return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n        }\n        // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n        // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n        function OrdinaryToPrimitive(O, hint) {\n            if (hint === \"string\") {\n                var toString_1 = O.toString;\n                if (IsCallable(toString_1)) {\n                    var result = toString_1.call(O);\n                    if (!IsObject(result))\n                        return result;\n                }\n                var valueOf = O.valueOf;\n                if (IsCallable(valueOf)) {\n                    var result = valueOf.call(O);\n                    if (!IsObject(result))\n                        return result;\n                }\n            }\n            else {\n                var valueOf = O.valueOf;\n                if (IsCallable(valueOf)) {\n                    var result = valueOf.call(O);\n                    if (!IsObject(result))\n                        return result;\n                }\n                var toString_2 = O.toString;\n                if (IsCallable(toString_2)) {\n                    var result = toString_2.call(O);\n                    if (!IsObject(result))\n                        return result;\n                }\n            }\n            throw new TypeError();\n        }\n        // 7.1.2 ToBoolean(argument)\n        // https://tc39.github.io/ecma262/2016/#sec-toboolean\n        function ToBoolean(argument) {\n            return !!argument;\n        }\n        // 7.1.12 ToString(argument)\n        // https://tc39.github.io/ecma262/#sec-tostring\n        function ToString(argument) {\n            return \"\" + argument;\n        }\n        // 7.1.14 ToPropertyKey(argument)\n        // https://tc39.github.io/ecma262/#sec-topropertykey\n        function ToPropertyKey(argument) {\n            var key = ToPrimitive(argument, 3 /* String */);\n            if (IsSymbol(key))\n                return key;\n            return ToString(key);\n        }\n        // 7.2 Testing and Comparison Operations\n        // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n        // 7.2.2 IsArray(argument)\n        // https://tc39.github.io/ecma262/#sec-isarray\n        function IsArray(argument) {\n            return Array.isArray\n                ? Array.isArray(argument)\n                : argument instanceof Object\n                    ? argument instanceof Array\n                    : Object.prototype.toString.call(argument) === \"[object Array]\";\n        }\n        // 7.2.3 IsCallable(argument)\n        // https://tc39.github.io/ecma262/#sec-iscallable\n        function IsCallable(argument) {\n            // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n            return typeof argument === \"function\";\n        }\n        // 7.2.4 IsConstructor(argument)\n        // https://tc39.github.io/ecma262/#sec-isconstructor\n        function IsConstructor(argument) {\n            // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n            return typeof argument === \"function\";\n        }\n        // 7.2.7 IsPropertyKey(argument)\n        // https://tc39.github.io/ecma262/#sec-ispropertykey\n        function IsPropertyKey(argument) {\n            switch (Type(argument)) {\n                case 3 /* String */: return true;\n                case 4 /* Symbol */: return true;\n                default: return false;\n            }\n        }\n        function SameValueZero(x, y) {\n            return x === y || x !== x && y !== y;\n        }\n        // 7.3 Operations on Objects\n        // https://tc39.github.io/ecma262/#sec-operations-on-objects\n        // 7.3.9 GetMethod(V, P)\n        // https://tc39.github.io/ecma262/#sec-getmethod\n        function GetMethod(V, P) {\n            var func = V[P];\n            if (func === undefined || func === null)\n                return undefined;\n            if (!IsCallable(func))\n                throw new TypeError();\n            return func;\n        }\n        // 7.4 Operations on Iterator Objects\n        // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n        function GetIterator(obj) {\n            var method = GetMethod(obj, iteratorSymbol);\n            if (!IsCallable(method))\n                throw new TypeError(); // from Call\n            var iterator = method.call(obj);\n            if (!IsObject(iterator))\n                throw new TypeError();\n            return iterator;\n        }\n        // 7.4.4 IteratorValue(iterResult)\n        // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n        function IteratorValue(iterResult) {\n            return iterResult.value;\n        }\n        // 7.4.5 IteratorStep(iterator)\n        // https://tc39.github.io/ecma262/#sec-iteratorstep\n        function IteratorStep(iterator) {\n            var result = iterator.next();\n            return result.done ? false : result;\n        }\n        // 7.4.6 IteratorClose(iterator, completion)\n        // https://tc39.github.io/ecma262/#sec-iteratorclose\n        function IteratorClose(iterator) {\n            var f = iterator[\"return\"];\n            if (f)\n                f.call(iterator);\n        }\n        // 9.1 Ordinary Object Internal Methods and Internal Slots\n        // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n        // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n        // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n        function OrdinaryGetPrototypeOf(O) {\n            var proto = Object.getPrototypeOf(O);\n            if (typeof O !== \"function\" || O === functionPrototype)\n                return proto;\n            // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n            // Try to determine the superclass constructor. Compatible implementations\n            // must either set __proto__ on a subclass constructor to the superclass constructor,\n            // or ensure each class has a valid `constructor` property on its prototype that\n            // points back to the constructor.\n            // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n            // This is the case when in ES6 or when using __proto__ in a compatible browser.\n            if (proto !== functionPrototype)\n                return proto;\n            // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n            var prototype = O.prototype;\n            var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n            if (prototypeProto == null || prototypeProto === Object.prototype)\n                return proto;\n            // If the constructor was not a function, then we cannot determine the heritage.\n            var constructor = prototypeProto.constructor;\n            if (typeof constructor !== \"function\")\n                return proto;\n            // If we have some kind of self-reference, then we cannot determine the heritage.\n            if (constructor === O)\n                return proto;\n            // we have a pretty good guess at the heritage.\n            return constructor;\n        }\n        // Global metadata registry\n        // - Allows `import \"reflect-metadata\"` and `import \"reflect-metadata/no-conflict\"` to interoperate.\n        // - Uses isolated metadata if `Reflect` is frozen before the registry can be installed.\n        /**\n         * Creates a registry used to allow multiple `reflect-metadata` providers.\n         */\n        function CreateMetadataRegistry() {\n            var fallback;\n            if (!IsUndefined(registrySymbol) &&\n                typeof root.Reflect !== \"undefined\" &&\n                !(registrySymbol in root.Reflect) &&\n                typeof root.Reflect.defineMetadata === \"function\") {\n                // interoperate with older version of `reflect-metadata` that did not support a registry.\n                fallback = CreateFallbackProvider(root.Reflect);\n            }\n            var first;\n            var second;\n            var rest;\n            var targetProviderMap = new _WeakMap();\n            var registry = {\n                registerProvider: registerProvider,\n                getProvider: getProvider,\n                setProvider: setProvider,\n            };\n            return registry;\n            function registerProvider(provider) {\n                if (!Object.isExtensible(registry)) {\n                    throw new Error(\"Cannot add provider to a frozen registry.\");\n                }\n                switch (true) {\n                    case fallback === provider: break;\n                    case IsUndefined(first):\n                        first = provider;\n                        break;\n                    case first === provider: break;\n                    case IsUndefined(second):\n                        second = provider;\n                        break;\n                    case second === provider: break;\n                    default:\n                        if (rest === undefined)\n                            rest = new _Set();\n                        rest.add(provider);\n                        break;\n                }\n            }\n            function getProviderNoCache(O, P) {\n                if (!IsUndefined(first)) {\n                    if (first.isProviderFor(O, P))\n                        return first;\n                    if (!IsUndefined(second)) {\n                        if (second.isProviderFor(O, P))\n                            return first;\n                        if (!IsUndefined(rest)) {\n                            var iterator = GetIterator(rest);\n                            while (true) {\n                                var next = IteratorStep(iterator);\n                                if (!next) {\n                                    return undefined;\n                                }\n                                var provider = IteratorValue(next);\n                                if (provider.isProviderFor(O, P)) {\n                                    IteratorClose(iterator);\n                                    return provider;\n                                }\n                            }\n                        }\n                    }\n                }\n                if (!IsUndefined(fallback) && fallback.isProviderFor(O, P)) {\n                    return fallback;\n                }\n                return undefined;\n            }\n            function getProvider(O, P) {\n                var providerMap = targetProviderMap.get(O);\n                var provider;\n                if (!IsUndefined(providerMap)) {\n                    provider = providerMap.get(P);\n                }\n                if (!IsUndefined(provider)) {\n                    return provider;\n                }\n                provider = getProviderNoCache(O, P);\n                if (!IsUndefined(provider)) {\n                    if (IsUndefined(providerMap)) {\n                        providerMap = new _Map();\n                        targetProviderMap.set(O, providerMap);\n                    }\n                    providerMap.set(P, provider);\n                }\n                return provider;\n            }\n            function hasProvider(provider) {\n                if (IsUndefined(provider))\n                    throw new TypeError();\n                return first === provider || second === provider || !IsUndefined(rest) && rest.has(provider);\n            }\n            function setProvider(O, P, provider) {\n                if (!hasProvider(provider)) {\n                    throw new Error(\"Metadata provider not registered.\");\n                }\n                var existingProvider = getProvider(O, P);\n                if (existingProvider !== provider) {\n                    if (!IsUndefined(existingProvider)) {\n                        return false;\n                    }\n                    var providerMap = targetProviderMap.get(O);\n                    if (IsUndefined(providerMap)) {\n                        providerMap = new _Map();\n                        targetProviderMap.set(O, providerMap);\n                    }\n                    providerMap.set(P, provider);\n                }\n                return true;\n            }\n        }\n        /**\n         * Gets or creates the shared registry of metadata providers.\n         */\n        function GetOrCreateMetadataRegistry() {\n            var metadataRegistry;\n            if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) {\n                metadataRegistry = root.Reflect[registrySymbol];\n            }\n            if (IsUndefined(metadataRegistry)) {\n                metadataRegistry = CreateMetadataRegistry();\n            }\n            if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) {\n                Object.defineProperty(root.Reflect, registrySymbol, {\n                    enumerable: false,\n                    configurable: false,\n                    writable: false,\n                    value: metadataRegistry\n                });\n            }\n            return metadataRegistry;\n        }\n        function CreateMetadataProvider(registry) {\n            // [[Metadata]] internal slot\n            // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n            var metadata = new _WeakMap();\n            var provider = {\n                isProviderFor: function (O, P) {\n                    var targetMetadata = metadata.get(O);\n                    if (IsUndefined(targetMetadata))\n                        return false;\n                    return targetMetadata.has(P);\n                },\n                OrdinaryDefineOwnMetadata: OrdinaryDefineOwnMetadata,\n                OrdinaryHasOwnMetadata: OrdinaryHasOwnMetadata,\n                OrdinaryGetOwnMetadata: OrdinaryGetOwnMetadata,\n                OrdinaryOwnMetadataKeys: OrdinaryOwnMetadataKeys,\n                OrdinaryDeleteMetadata: OrdinaryDeleteMetadata,\n            };\n            metadataRegistry.registerProvider(provider);\n            return provider;\n            function GetOrCreateMetadataMap(O, P, Create) {\n                var targetMetadata = metadata.get(O);\n                var createdTargetMetadata = false;\n                if (IsUndefined(targetMetadata)) {\n                    if (!Create)\n                        return undefined;\n                    targetMetadata = new _Map();\n                    metadata.set(O, targetMetadata);\n                    createdTargetMetadata = true;\n                }\n                var metadataMap = targetMetadata.get(P);\n                if (IsUndefined(metadataMap)) {\n                    if (!Create)\n                        return undefined;\n                    metadataMap = new _Map();\n                    targetMetadata.set(P, metadataMap);\n                    if (!registry.setProvider(O, P, provider)) {\n                        targetMetadata.delete(P);\n                        if (createdTargetMetadata) {\n                            metadata.delete(O);\n                        }\n                        throw new Error(\"Wrong provider for target.\");\n                    }\n                }\n                return metadataMap;\n            }\n            // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n            // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n            function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n                var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n                if (IsUndefined(metadataMap))\n                    return false;\n                return ToBoolean(metadataMap.has(MetadataKey));\n            }\n            // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n            // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n            function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n                var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n                if (IsUndefined(metadataMap))\n                    return undefined;\n                return metadataMap.get(MetadataKey);\n            }\n            // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n            // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n            function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n                var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n                metadataMap.set(MetadataKey, MetadataValue);\n            }\n            // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n            // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n            function OrdinaryOwnMetadataKeys(O, P) {\n                var keys = [];\n                var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n                if (IsUndefined(metadataMap))\n                    return keys;\n                var keysObj = metadataMap.keys();\n                var iterator = GetIterator(keysObj);\n                var k = 0;\n                while (true) {\n                    var next = IteratorStep(iterator);\n                    if (!next) {\n                        keys.length = k;\n                        return keys;\n                    }\n                    var nextValue = IteratorValue(next);\n                    try {\n                        keys[k] = nextValue;\n                    }\n                    catch (e) {\n                        try {\n                            IteratorClose(iterator);\n                        }\n                        finally {\n                            throw e;\n                        }\n                    }\n                    k++;\n                }\n            }\n            function OrdinaryDeleteMetadata(MetadataKey, O, P) {\n                var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n                if (IsUndefined(metadataMap))\n                    return false;\n                if (!metadataMap.delete(MetadataKey))\n                    return false;\n                if (metadataMap.size === 0) {\n                    var targetMetadata = metadata.get(O);\n                    if (!IsUndefined(targetMetadata)) {\n                        targetMetadata.delete(P);\n                        if (targetMetadata.size === 0) {\n                            metadata.delete(targetMetadata);\n                        }\n                    }\n                }\n                return true;\n            }\n        }\n        function CreateFallbackProvider(reflect) {\n            var defineMetadata = reflect.defineMetadata, hasOwnMetadata = reflect.hasOwnMetadata, getOwnMetadata = reflect.getOwnMetadata, getOwnMetadataKeys = reflect.getOwnMetadataKeys, deleteMetadata = reflect.deleteMetadata;\n            var metadataOwner = new _WeakMap();\n            var provider = {\n                isProviderFor: function (O, P) {\n                    var metadataPropertySet = metadataOwner.get(O);\n                    if (!IsUndefined(metadataPropertySet)) {\n                        return metadataPropertySet.has(P);\n                    }\n                    if (getOwnMetadataKeys(O, P).length) {\n                        if (IsUndefined(metadataPropertySet)) {\n                            metadataPropertySet = new _Set();\n                            metadataOwner.set(O, metadataPropertySet);\n                        }\n                        metadataPropertySet.add(P);\n                        return true;\n                    }\n                    return false;\n                },\n                OrdinaryDefineOwnMetadata: defineMetadata,\n                OrdinaryHasOwnMetadata: hasOwnMetadata,\n                OrdinaryGetOwnMetadata: getOwnMetadata,\n                OrdinaryOwnMetadataKeys: getOwnMetadataKeys,\n                OrdinaryDeleteMetadata: deleteMetadata,\n            };\n            return provider;\n        }\n        /**\n         * Gets the metadata provider for an object. If the object has no metadata provider and this is for a create operation,\n         * then this module's metadata provider is assigned to the object.\n         */\n        function GetMetadataProvider(O, P, Create) {\n            var registeredProvider = metadataRegistry.getProvider(O, P);\n            if (!IsUndefined(registeredProvider)) {\n                return registeredProvider;\n            }\n            if (Create) {\n                if (metadataRegistry.setProvider(O, P, metadataProvider)) {\n                    return metadataProvider;\n                }\n                throw new Error(\"Illegal state.\");\n            }\n            return undefined;\n        }\n        // naive Map shim\n        function CreateMapPolyfill() {\n            var cacheSentinel = {};\n            var arraySentinel = [];\n            var MapIterator = /** @class */ (function () {\n                function MapIterator(keys, values, selector) {\n                    this._index = 0;\n                    this._keys = keys;\n                    this._values = values;\n                    this._selector = selector;\n                }\n                MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n                MapIterator.prototype[iteratorSymbol] = function () { return this; };\n                MapIterator.prototype.next = function () {\n                    var index = this._index;\n                    if (index >= 0 && index < this._keys.length) {\n                        var result = this._selector(this._keys[index], this._values[index]);\n                        if (index + 1 >= this._keys.length) {\n                            this._index = -1;\n                            this._keys = arraySentinel;\n                            this._values = arraySentinel;\n                        }\n                        else {\n                            this._index++;\n                        }\n                        return { value: result, done: false };\n                    }\n                    return { value: undefined, done: true };\n                };\n                MapIterator.prototype.throw = function (error) {\n                    if (this._index >= 0) {\n                        this._index = -1;\n                        this._keys = arraySentinel;\n                        this._values = arraySentinel;\n                    }\n                    throw error;\n                };\n                MapIterator.prototype.return = function (value) {\n                    if (this._index >= 0) {\n                        this._index = -1;\n                        this._keys = arraySentinel;\n                        this._values = arraySentinel;\n                    }\n                    return { value: value, done: true };\n                };\n                return MapIterator;\n            }());\n            var Map = /** @class */ (function () {\n                function Map() {\n                    this._keys = [];\n                    this._values = [];\n                    this._cacheKey = cacheSentinel;\n                    this._cacheIndex = -2;\n                }\n                Object.defineProperty(Map.prototype, \"size\", {\n                    get: function () { return this._keys.length; },\n                    enumerable: true,\n                    configurable: true\n                });\n                Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n                Map.prototype.get = function (key) {\n                    var index = this._find(key, /*insert*/ false);\n                    return index >= 0 ? this._values[index] : undefined;\n                };\n                Map.prototype.set = function (key, value) {\n                    var index = this._find(key, /*insert*/ true);\n                    this._values[index] = value;\n                    return this;\n                };\n                Map.prototype.delete = function (key) {\n                    var index = this._find(key, /*insert*/ false);\n                    if (index >= 0) {\n                        var size = this._keys.length;\n                        for (var i = index + 1; i < size; i++) {\n                            this._keys[i - 1] = this._keys[i];\n                            this._values[i - 1] = this._values[i];\n                        }\n                        this._keys.length--;\n                        this._values.length--;\n                        if (SameValueZero(key, this._cacheKey)) {\n                            this._cacheKey = cacheSentinel;\n                            this._cacheIndex = -2;\n                        }\n                        return true;\n                    }\n                    return false;\n                };\n                Map.prototype.clear = function () {\n                    this._keys.length = 0;\n                    this._values.length = 0;\n                    this._cacheKey = cacheSentinel;\n                    this._cacheIndex = -2;\n                };\n                Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n                Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n                Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n                Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n                Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n                Map.prototype._find = function (key, insert) {\n                    if (!SameValueZero(this._cacheKey, key)) {\n                        this._cacheIndex = -1;\n                        for (var i = 0; i < this._keys.length; i++) {\n                            if (SameValueZero(this._keys[i], key)) {\n                                this._cacheIndex = i;\n                                break;\n                            }\n                        }\n                    }\n                    if (this._cacheIndex < 0 && insert) {\n                        this._cacheIndex = this._keys.length;\n                        this._keys.push(key);\n                        this._values.push(undefined);\n                    }\n                    return this._cacheIndex;\n                };\n                return Map;\n            }());\n            return Map;\n            function getKey(key, _) {\n                return key;\n            }\n            function getValue(_, value) {\n                return value;\n            }\n            function getEntry(key, value) {\n                return [key, value];\n            }\n        }\n        // naive Set shim\n        function CreateSetPolyfill() {\n            var Set = /** @class */ (function () {\n                function Set() {\n                    this._map = new _Map();\n                }\n                Object.defineProperty(Set.prototype, \"size\", {\n                    get: function () { return this._map.size; },\n                    enumerable: true,\n                    configurable: true\n                });\n                Set.prototype.has = function (value) { return this._map.has(value); };\n                Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n                Set.prototype.delete = function (value) { return this._map.delete(value); };\n                Set.prototype.clear = function () { this._map.clear(); };\n                Set.prototype.keys = function () { return this._map.keys(); };\n                Set.prototype.values = function () { return this._map.keys(); };\n                Set.prototype.entries = function () { return this._map.entries(); };\n                Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n                Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n                return Set;\n            }());\n            return Set;\n        }\n        // naive WeakMap shim\n        function CreateWeakMapPolyfill() {\n            var UUID_SIZE = 16;\n            var keys = HashMap.create();\n            var rootKey = CreateUniqueKey();\n            return /** @class */ (function () {\n                function WeakMap() {\n                    this._key = CreateUniqueKey();\n                }\n                WeakMap.prototype.has = function (target) {\n                    var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n                    return table !== undefined ? HashMap.has(table, this._key) : false;\n                };\n                WeakMap.prototype.get = function (target) {\n                    var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n                    return table !== undefined ? HashMap.get(table, this._key) : undefined;\n                };\n                WeakMap.prototype.set = function (target, value) {\n                    var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n                    table[this._key] = value;\n                    return this;\n                };\n                WeakMap.prototype.delete = function (target) {\n                    var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n                    return table !== undefined ? delete table[this._key] : false;\n                };\n                WeakMap.prototype.clear = function () {\n                    // NOTE: not a real clear, just makes the previous data unreachable\n                    this._key = CreateUniqueKey();\n                };\n                return WeakMap;\n            }());\n            function CreateUniqueKey() {\n                var key;\n                do\n                    key = \"@@WeakMap@@\" + CreateUUID();\n                while (HashMap.has(keys, key));\n                keys[key] = true;\n                return key;\n            }\n            function GetOrCreateWeakMapTable(target, create) {\n                if (!hasOwn.call(target, rootKey)) {\n                    if (!create)\n                        return undefined;\n                    Object.defineProperty(target, rootKey, { value: HashMap.create() });\n                }\n                return target[rootKey];\n            }\n            function FillRandomBytes(buffer, size) {\n                for (var i = 0; i < size; ++i)\n                    buffer[i] = Math.random() * 0xff | 0;\n                return buffer;\n            }\n            function GenRandomBytes(size) {\n                if (typeof Uint8Array === \"function\") {\n                    if (typeof crypto !== \"undefined\")\n                        return crypto.getRandomValues(new Uint8Array(size));\n                    if (typeof msCrypto !== \"undefined\")\n                        return msCrypto.getRandomValues(new Uint8Array(size));\n                    return FillRandomBytes(new Uint8Array(size), size);\n                }\n                return FillRandomBytes(new Array(size), size);\n            }\n            function CreateUUID() {\n                var data = GenRandomBytes(UUID_SIZE);\n                // mark as random - RFC 4122 § 4.4\n                data[6] = data[6] & 0x4f | 0x40;\n                data[8] = data[8] & 0xbf | 0x80;\n                var result = \"\";\n                for (var offset = 0; offset < UUID_SIZE; ++offset) {\n                    var byte = data[offset];\n                    if (offset === 4 || offset === 6 || offset === 8)\n                        result += \"-\";\n                    if (byte < 16)\n                        result += \"0\";\n                    result += byte.toString(16).toLowerCase();\n                }\n                return result;\n            }\n        }\n        // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n        function MakeDictionary(obj) {\n            obj.__ = undefined;\n            delete obj.__;\n            return obj;\n        }\n    });\n})(Reflect || (Reflect = {}));\n","import type { ParsedPath } from '~/utilities/path.types';\n\nconst startsWithDot = (path: string) => path.startsWith('.');\n\nfunction isValidURL(url: string): boolean {\n  let toURL;\n  try {\n    toURL = new URL(url);\n  } catch (_) {\n    return false;\n  }\n  return toURL.protocol === 'http:' || toURL.protocol === 'https:';\n}\n\n/**\n * This `path` module provides utilities for working with file and directory paths.\n * Simply `import path from '~/utilities/path';`.\n *\n * Please see unit tests for more examples.\n *\n * Inspired by NodeJS's path module.\n * @see https://nodejs.org/docs/v10.3.0/api/path.html\n */\nexport default {\n  /**\n   * Returns the last portion of a path.\n   *\n   * For example: path.basename('path/to/some/file.txt')\n   * Returns: 'file.txt'\n   */\n  basename(path: string) {\n    if (!path) return '';\n    return path.split('/').at(-1) || '';\n  },\n\n  /**\n   * Returns the extension name.\n   *\n   * For example: path.extname('path/to/some/file.txt')\n   * Returns: '.txt'\n   */\n  extname(path: string): string {\n    let filename = this.basename(path);\n\n    /**\n     * Removing first dot so we don't use it in our regex.\n     * For example, .env is just a file named .env, it has no extension.\n     * However, a file named .env.dev would result in .dev as the extension.\n     */\n    if (startsWithDot(filename)) {\n      filename = [...filename].slice(1).join('');\n    }\n\n    const regex = /\\.[0-9a-z]+$/i;\n    const m = filename.match(regex);\n    return m && m.length ? m[0] : '';\n  },\n\n  /**\n   * Returns the directory name of a file.\n   *\n   * For example: path.dirname('path/to/some/file.txt)\n   * Returns: 'path/to/some'\n   */\n  dirname(path: string): string {\n    if (!path) return '';\n    return path.split('/').slice(0, -1).join('/');\n  },\n\n  /**\n   * Parses a path.\n   *\n   * For example: path.parse('home/user/dir/file.txt');\n   * Returns: {\n   *   dir: 'home/user/dir',\n   *   base: 'file.txt',\n   *   ext: '.txt',\n   *   name: 'file'\n   * }\n   */\n  parse(path: string): ParsedPath {\n    const result = { dir: '', base: '', ext: '', name: '' };\n    if (!path) return result;\n\n    const filename = this.basename(path);\n\n    result.base = this.basename(path);\n    result.dir = this.dirname(path);\n    result.ext = this.extname(path);\n\n    const lastDotIndex = startsWithDot(filename) ? undefined : filename.lastIndexOf('.');\n    result.name = Array.from(filename).slice(0, lastDotIndex).join('');\n\n    return result;\n  },\n\n  /**\n   * Adds a URL to the front of a path.\n   * Useful for creating the Amazon S3 URL for when we GET a file's contents from S3.\n   *\n   * For example: path.toAbsoluteURL('path/to/some/file.txt, 'https://example.com/')\n   * Returns: 'https://example.com/path/to/some/file.txt'\n   */\n  toAbsoluteURL(path: string, url: string = import.meta.env.PUBLIC_APPS_HOST): string | undefined {\n    if (path === undefined || path === null) {\n      throw new Error('The \"path\" argument cannot be undefined or null');\n    }\n\n    if (url === '') {\n      throw new Error('The \"url\" argument cannot be an empty string');\n    }\n\n    // If the \"url\" arg isn't a valid URL\n    if (!isValidURL(url)) {\n      throw new Error('The \"url\" argument must be a valid URL');\n    }\n\n    // If the \"path\" arg is already a URL\n    if (isValidURL(path)) return path;\n\n    // Remove starting forward slash from \"path\" arg\n    if (path.startsWith('/')) {\n      path = [...path].slice(1).join('');\n    }\n\n    // Remove ending forward slash from \"url\" arg\n    if (url.endsWith('/')) {\n      url = [...url].slice(0, -1).join('');\n    }\n\n    return `${url}/${path}`;\n  },\n\n  /**\n   * Adds a forward slash to the beginning of the path.\n   *\n   * For example: path.toAbsolutePath('path/to/some/file.txt)\n   * Returns: '/path/to/some/file.txt'\n   */\n  toAbsolutePath(path: string): string {\n    if (!path) return '';\n    if (path === '.') return '.';\n    if (this.isAbsolutePath(path)) return path;\n\n    return `/${path}`;\n  },\n\n  /**\n   * Determines if the path starts with a leading forward slash.\n   */\n  isAbsolutePath(path: string): boolean {\n    if (!path) return false;\n    if (path === '.') return false;\n    return path.startsWith('/');\n  },\n\n  /**\n   * Takes path segments and returns the joined path.\n   *\n   * For example: path.join('/path', '/to', '/some/', '/file.txt')\n   * Returns: '/path/to/some/file.txt\n   */\n  join(...pathSegments: string[]): string {\n    // Remove falsy values and join values into one string\n    const joined = pathSegments.filter(Boolean).join('/');\n    return joined.replace(/\\/+/g, '/'); // Replace consecutive slashes with a single slash\n  },\n};\n","import 'reflect-metadata'; // Shim for Metadata Reflection API. Required by the class-transformer module.\nimport { Expose, Type } from 'class-transformer';\nimport type { SnakeCaseKeys } from '~/utilities/snake-case';\nimport path from '~/utilities/path';\nimport type { ParsedPath } from '~/utilities/path.types';\n\n/**\n * Makes a specific property optional.\n * For example: `MakeOptional<PostBodyCreateVersion, 'version`> will make the 'version' key optional.\n */\nexport type MakeOptional<Type, Key extends keyof Type> = Omit<Type, Key> & Partial<Pick<Type, Key>>;\nexport type ProjectType = 'app' | 'plugin' | 'app/invent';\nexport type ProductName = 'pyscript_founder';\n\nexport interface PutBodyUpdateProjectMetadata {\n  name?: string;\n  description?: string;\n  type?: ProjectType;\n  default_version?: string;\n  tags?: string[];\n  api_proxies_allowed?: string[];\n  auth_required?: boolean;\n  auth_users_allowed?: string[];\n  channels_allowed?: string[];\n}\n\nexport interface PostBodyForkProject {\n  /** If no name is provided, back-end will generate it by appending \"Copy\". */\n  name?: string;\n  version?: string;\n}\n\nexport interface PutBodyUpdateVersion {\n  index_file?: string;\n  published?: boolean;\n}\n\nexport interface PostBodyCreateProject {\n  name: string;\n  description: string;\n  type: ProjectType;\n}\n\nexport interface AssistantPromptResponse {\n  answer: string;\n}\n\nexport class Project {\n  api_proxies_allowed: string[];\n  channels_allowed?: string[];\n  created_at: string;\n  default_version: string;\n  description: string;\n  icon: string;\n  id: string;\n  name: string;\n  slug: string;\n  type: ProjectType;\n  updated_at: string;\n  user_id: string;\n  username: string;\n  tags: string[];\n  auth_required: boolean;\n  auth_users_allowed: string[];\n  export: boolean = false;\n\n  @Type(() => Version)\n  latest: Version;\n}\n\nexport class Version {\n  blocked: boolean;\n  created_at: string;\n  id: string;\n  index_file: string;\n  project_id: string;\n  published: boolean;\n  updated_at: string;\n  url: string;\n  user_id: string;\n  version: string;\n  version_number: number;\n  tags: string[];\n}\n\nexport interface ProjectStats {\n  viewed: number;\n  forked: number;\n  shared: number;\n}\n\nexport interface ErrorResponse {\n  detail: ErrorDetail[];\n}\n\nexport interface ErrorDetail {\n  loc: string[];\n  msg: string;\n  type: ProjectType;\n}\n\nexport class FileMetadata {\n  hash: string;\n  path: string; // `path/to/file.py`\n  name: string; // `file.py`\n  url: string; // URL to download the file\n  size: number; // File size in bytes\n  updated_at: string; // datetime\n  isGhostFile?: boolean; // Used to indicate a file is in the process of being uploaded\n  type?: string; // mimetype of the file\n\n  @Expose()\n  get parsedPath(): ParsedPath {\n    return path.parse(this.path);\n  }\n\n  // `abcd1234-abcd-abcd-abcd-abcdef123456`\n  @Expose()\n  get userId(): string {\n    return this.path.split('/').at(0) as string;\n  }\n\n  // `abcd1234-abcd-abcd-abcd-abcdef123456`\n  @Expose()\n  get projectId(): string {\n    return this.path.split('/').at(1) as string;\n  }\n\n  @Expose()\n  get version(): string | 'latest' {\n    return this.path.split('/').at(2) as string;\n  }\n}\n\nexport interface FilePathData {\n  bucketPath: string; // `{userId}/{projectId}/{version}/path/to/file.py`\n  path: string; // E.g. `path/to/file.py`\n  parsedPath: ParsedPath;\n  userId: string;\n  projectId: string;\n  version: string | 'latest';\n}\n\nexport interface Quotas {\n  'account-storage-space-quota'?: { max: number };\n  'api-proxies-quota'?: { max: number };\n  'file-size-quota'?: { max: number };\n  'private-projects-quota'?: { max: number };\n}\n\nexport interface Whoami {\n  id: string;\n  email: string;\n  username: string | null;\n  name: string;\n  avatar: string;\n  tier_id: string;\n  permit_ids: string[];\n  quotas: Quotas;\n}\n\nexport interface PydanticErrorDetail {\n  loc: string[];\n  msg: string;\n  type: string;\n}\n\nexport interface PydanticError {\n  detail: PydanticErrorDetail[];\n}\n\nexport interface RegisterData {\n  email: string;\n  password: string;\n  username: string;\n  optin: boolean;\n}\n\nexport interface GetPurchasesResponse {\n  id: string;\n  customer_id: string;\n  product_name: ProductName | string; // This may include other Anaconda products, which `| string` is needed.\n  price_id: string;\n  quantity: number;\n  user_id: string;\n  org_id: null;\n  partner_id: null;\n  created_at: string;\n  expires_at: string;\n  is_active: boolean;\n}\n\nexport interface Badge {\n  id: string;\n  name: string;\n  description: string;\n}\n\nexport interface UserBadge {\n  user_id: string;\n  badge: Badge;\n  awarded_at: string;\n}\n\nexport interface Social {\n  twitter: string;\n  github: string;\n  website: string;\n  linkedin: string;\n}\n\nexport interface GetProfileResponse {\n  id: string;\n  email: string;\n  username: string;\n  avatar: string;\n  name: string;\n  bio: string;\n  created_at: string;\n  public: boolean;\n  socials: Social;\n}\n\nexport interface GetUserStatsResponse {\n  projects_forked: number;\n  projects_created: number;\n}\n\nexport interface PutUserProfile {\n  bio?: string;\n  name?: string;\n  username?: string;\n  socials?: Social;\n  public?: boolean;\n}\n\nexport interface PsdcApiError {\n  code?: string;\n  data?: Record<string, any>;\n  message: string;\n  status: number;\n}\n\nexport interface PostCreateSecretBody {\n  name: string;\n  value: string;\n  description?: string;\n}\n\nexport interface PutCreateSecretBody extends PostCreateSecretBody {}\n\nexport interface Secret {\n  id: string;\n  name: string;\n  description: string;\n  created_at: string; // e.g. 2023-10-19T14:58:30.288Z\n  updated_at: string; // e.g. 2023-10-19T14:58:30.288Z\n  user_id?: string;\n  value?: string;\n}\n\nexport type HttpMethods =\n  | 'GET'\n  | 'POST'\n  | 'PUT'\n  | 'DELETE'\n  | 'PATCH'\n  | 'HEAD'\n  | 'CONNECT'\n  | 'OPTIONS'\n  | 'TRACE';\n\nexport interface PostCreateApiProxyBody {\n  name: string;\n  description?: string;\n  url: string;\n  methods: HttpMethods[];\n  headers: Record<string, string>;\n  timeout: number;\n}\n\nexport interface PutCreateApiProxyBody extends PostCreateApiProxyBody {}\n\nexport interface ApiProxy {\n  id: string;\n  name: string;\n  description: string;\n  url: string;\n  headers: Record<string, string>;\n  timeout: number;\n  methods: HttpMethods[];\n  created_at: string; // e.g. 2023-10-19T14:58:30.288Z\n  updated_at: string; // e.g. 2023-10-19T14:58:30.288Z\n}\n\nexport interface ApiKey {\n  id: string;\n  name: string;\n  token: string;\n  expiry: number;\n}\n\nexport interface Favorite {\n  project_id: string;\n  user_id: string;\n  created_at: string;\n}\n\nexport interface ListProjectsResponse {\n  page: number;\n  page_size: number;\n  total_pages: number;\n  total_count: number;\n  previous_page: string | null;\n  next_page: string | null;\n  results: Project[];\n}\n\nexport type ListProjectsScope = 'mine' | 'other' | 'trending' | 'featured' | 'favorites';\nexport type ListProjectsSortBy = 'created_at' | 'updated_at' | 'name';\nexport type ListProjectsSortOrder = 'asc' | 'desc';\n\nexport interface ListProjectsOptions {\n  user?: string;\n  scope?: ListProjectsScope;\n  pageSize?: number;\n  page?: number;\n  q?: string;\n  /** Defaults to `updated_at`. */\n  sortBy?: ListProjectsSortBy;\n  /** Defaults to `desc`. */\n  sortOrder?: ListProjectsSortOrder;\n}\n\nexport type ListProjectsOptionsSnakeCase = SnakeCaseKeys<ListProjectsOptions>;\n\nexport interface Collection {\n  id: string;\n  name: string;\n  description: string;\n  private: boolean;\n  projects: string[];\n  created_at: string;\n  updated_at: string;\n  user_id: string;\n  username: string;\n}\n\nexport interface ListCollectionProjectsOptions {\n  /** Username or ID */\n  user?: string;\n  q?: string;\n  /** Defaults to `updated_at`. */\n  sortBy?: ListProjectsSortBy;\n  /** Defaults to `desc`. */\n  sortOrder?: ListProjectsSortOrder;\n}\n\nexport type ListCollectionsSortBy = 'created_at' | 'updated_at' | 'name';\nexport type ListCollectionsSortOrder = 'asc' | 'desc';\n\nexport interface ListCollectionsOptions {\n  /** Username or ID */\n  user: string;\n  pageSize?: number;\n  page?: number;\n  q?: string;\n  /** Defaults to `updated_at`. */\n  sortBy?: ListCollectionsSortBy;\n  /** Defaults to `desc`. */\n  sortOrder?: ListCollectionsSortOrder;\n}\n\nexport interface PostCreateChannelBody {\n  name: string;\n  description?: string;\n}\n\nexport interface PutUpdateChannelBody {\n  name: string;\n  description?: string;\n}\n\nexport interface Channel {\n  id: string;\n  user_id: string;\n  name: string;\n  description: string;\n  created_at: string;\n  updated_at: string;\n}\n\nexport interface Banner {\n  id: string;\n  message: string;\n  level: 'info' | 'warning' | 'error';\n  url?: string;\n  created_at: string;\n  updated_at: string;\n}\n\nexport interface SystemStatus {\n  banners: Banner[];\n  maintenance_mode: boolean;\n}\n\nexport interface NotificationBanners {\n  banners: Banner[];\n}\n","/**\n * Sets the current page's path (including the hash) in `localStorage` to allow\n * the router to return the user to this path when they return.\n *\n * @example\n * - The user's session cookie expires and we want to return them to the page they were.\n * - While not logged in, the user is viewing another user's project and wants to fork\n *   it but has to log in first.\n * - User is on a landing page like the /join page and tries to purchase Founders.\n *   After they register, they'll be sent back to /join page.\n */\nexport async function setPsdcRedirect() {\n  const currentPath = `${window.location.pathname}${window.location.hash}`;\n  localStorage.setItem('psdc_redirect', currentPath);\n}\n","/**\n * Takes an object and translates it to a query string.\n *\n * If an property value is `undefined` or `null`, it will be omitted from the\n * query string. Empty strings (`''`) are kept intact.\n */\nexport function objectToQueryParams(obj: Record<string, any>) {\n  const params = Object.entries(obj).filter(\n    ([_key, value]) => value !== undefined && value !== null && value !== '',\n  );\n\n  return new URLSearchParams(params).toString();\n}\n","/**\n * Converts camelCase to snake_case.\n *\n * @example\n * type result1 = SnakeCase<\"hello\">; // => \"hello\"\n * type result2 = SnakeCase<\"userName\">; // => \"user_name\"\n * type result3 = SnakeCase<\"getElementById\">; // => \"get_element_by_id\"\n */\nexport type SnakeCase<T> = T extends `${infer A}${infer R}`\n  ? Uppercase<A> extends A\n    ? `_${Lowercase<A>}${SnakeCase<R>}`\n    : `${A}${SnakeCase<R>}`\n  : '';\n\n/**\n * Converts an object's keys from camelCase to snake_case.\n *\n * @example\n * type B = SnakeCaseKeys<{\n *   hello: string;\n *   userName: string;\n *   getElementById: string;\n * }>;\n *\n * // => {\n * //  hello: string;\n * //  user_name: string;\n * //  get_element_by_id: string;\n * // }\n */\nexport type SnakeCaseKeys<T extends object> = {\n  [key in keyof T as key extends string ? SnakeCase<key> : key]: T[key] extends object\n    ? SnakeCase<T[key]>\n    : T[key];\n};\n\nexport function toSnakeCase<T>(key: string): SnakeCase<T> {\n  return key.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`) as SnakeCase<T>;\n}\n\nexport function toSnakeCaseKeys<T extends object>(obj: T): SnakeCaseKeys<T> {\n  return Object.fromEntries(\n    Object.entries(obj).map(([key, value]) => [\n      toSnakeCase(key),\n      typeof value === 'object' ? toSnakeCaseKeys(value) : value,\n    ]),\n  ) as SnakeCaseKeys<T>;\n}\n","import { plainToInstance } from 'class-transformer';\nimport { FileMetadata, Project, Version } from '~/utilities/pyscript-api-models';\nimport type {\n  ApiKey,\n  ApiProxy,\n  Channel,\n  Collection,\n  Favorite,\n  GetProfileResponse,\n  GetPurchasesResponse,\n  GetUserStatsResponse,\n  ListCollectionProjectsOptions,\n  ListCollectionsOptions,\n  ListProjectsOptions,\n  ListProjectsResponse,\n  PostBodyCreateProject,\n  PostBodyForkProject,\n  PostCreateApiProxyBody,\n  PostCreateChannelBody,\n  PostCreateSecretBody,\n  ProductName,\n  ProjectStats,\n  PutBodyUpdateProjectMetadata,\n  PutBodyUpdateVersion,\n  PutCreateApiProxyBody,\n  PutCreateSecretBody,\n  PutUpdateChannelBody,\n  PutUserProfile,\n  SystemStatus,\n  RegisterData,\n  Secret,\n  UserBadge,\n  Whoami,\n} from '~/utilities/pyscript-api-models';\nimport { setPsdcRedirect } from '~/utilities/psdc-redirect';\nimport { objectToQueryParams } from '~/utilities/object-to-query-params';\nimport { toSnakeCaseKeys } from '~/utilities/snake-case';\n\n/**\n * // TODO: Refactor to make more DRY\n * - Handle 403/404 errors\n *  - https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#checking_that_the_fetch_was_successful\n * - Split out common code for GET/POST/PUT/DEL requests\n */\n\nconst API_HOST = import.meta.env.PUBLIC_PYSCRIPT_API_HOST;\nconst API_ACCOUNTS = import.meta.env.PUBLIC_PYSCRIPT_API_ACCOUNTS;\nconst API_ASSIST = import.meta.env.PUBLIC_PYSCRIPT_API_ASSIST;\nconst API_AUTH = import.meta.env.PUBLIC_PYSCRIPT_API_AUTH;\nconst API_PAYMENTS = import.meta.env.PUBLIC_PYSCRIPT_API_PAYMENTS;\nconst API_SYSTEM = import.meta.env.PUBLIC_PYSCRIPT_API_SYSTEM;\n\nasync function responseHandler(resp: Response) {\n  const json = await resp.json();\n  if (resp.ok) {\n    return json;\n  }\n\n  // If the session token has expired, send the user to the homepage to login again.\n  if (\n    json.error?.code === 'auth_required' ||\n    (resp.status === 403 && json.message === 'No JWT token found') ||\n    // 'Authorization required' message occurs when saving a file when the session token is expired\n    (resp.status === 403 && json.message === 'Authorization required') ||\n    (resp.status === 403 && json.message === 'Auth token is not provided or is invalid')\n  ) {\n    await setPsdcRedirect();\n    window.location.href = window.location.origin;\n  }\n\n  throw json;\n}\n\nasync function whoami(): Promise<Whoami | null> {\n  const endpoint = `${API_AUTH}/whoami`;\n  const resp = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n\n  // 403 status means not logged in.\n  if (resp.status === 403) {\n    return null;\n  }\n\n  return resp.json();\n}\n\nasync function register(data: RegisterData): Promise<Whoami> {\n  const endpoint = `${API_AUTH}/register`;\n  const resp = await fetch(endpoint, {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n    body: JSON.stringify({\n      email: data.email,\n      password: data.password,\n      username: data.username,\n      optin: data.optin,\n    }),\n  });\n\n  return await responseHandler(resp);\n}\n\n/**\n * Delete a project.\n */\nasync function deleteProject(projectId: string): Promise<null> {\n  const endpoint = `${API_HOST}/${projectId}`;\n  const response = await fetch(endpoint, {\n    method: 'DELETE',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Get project's metadata.\n */\nasync function getProject(projectId: string): Promise<Project> {\n  const endpoint = `${API_HOST}/${projectId}`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  const json = await responseHandler(response);\n  return plainToInstance(Project, json);\n}\n\n/**\n * Get the project with the specified username or id, and project slug.\n */\nasync function getProjectBySlug(usernameOrUserId: string, projectSlug: string): Promise<Project> {\n  const endpoint = `${API_HOST}/${usernameOrUserId}/${projectSlug}`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  const json = await responseHandler(response);\n  return plainToInstance(Project, json);\n}\n\n/**\n * Get project's stats.\n */\nasync function getProjectStats(projectId: string): Promise<ProjectStats> {\n  const endpoint = `${API_HOST}/${projectId}/stats`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Gets a list of projects in a paginated format. Options can be passed\n * to change pages, search, and sort. The list of projects can be from any user,\n * as well as a particular list such as 'trending', 'featured', or 'favorites'.\n * By default, if no scope is provided, it will return the logged in user's\n * projects.\n */\nasync function listProjects(\n  options: ListProjectsOptions,\n  abortSignal?: AbortSignal,\n): Promise<ListProjectsResponse> {\n  const queryParams = objectToQueryParams(toSnakeCaseKeys(options));\n  const endpoint = `${API_HOST}/?${queryParams}`;\n\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n    signal: abortSignal,\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Get project's versions.\n */\nasync function listVersions(projectId: string): Promise<Version[]> {\n  const endpoint = `${API_HOST}/${projectId}/versions`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  const json = await responseHandler(response);\n  return plainToInstance<Version, Version[]>(Version, json.results);\n}\n\n/**\n * Create a new project.\n */\nasync function createProject(body: PostBodyCreateProject): Promise<Project> {\n  const endpoint = `${API_HOST}/`;\n  const response = await fetch(endpoint, {\n    method: 'POST',\n    credentials: 'include',\n    body: JSON.stringify(body || {}),\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  const json = await responseHandler(response);\n\n  return plainToInstance(Project, json);\n}\n\n/**\n * Get a version's data, such as its status of 'published' or 'unpublished'.\n */\nasync function getVersion(projectId: string, version: string): Promise<Version> {\n  const endpoint = `${API_HOST}/${projectId}/versions/${version}`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  const json = await responseHandler(response);\n  return plainToInstance(Version, json);\n}\n\n/**\n * Update a version's data, such as its status of 'published' or 'unpublished'.\n */\nasync function updateVersion(\n  projectId: string,\n  version: string,\n  data: PutBodyUpdateVersion,\n): Promise<Version> {\n  const endpoint = `${API_HOST}/${projectId}/versions/${version}`;\n  const response = await fetch(endpoint, {\n    method: 'PUT',\n    credentials: 'include',\n    body: JSON.stringify(data || {}),\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  const json = await responseHandler(response);\n  return plainToInstance(Version, json);\n}\n\n/**\n * Creates a new version of the project.\n */\nasync function createVersion(projectId: string): Promise<Version> {\n  const endpoint = `${API_HOST}/${projectId}/versions`;\n  const response = await fetch(endpoint, {\n    method: 'POST',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  const json = await responseHandler(response);\n  return plainToInstance(Version, json);\n}\n\n/**\n * Deletes a version from a project.\n */\nasync function deleteVersion(projectId: string, versionIdOrTag: string | number): Promise<Version> {\n  const endpoint = `${API_HOST}/${projectId}/versions/${versionIdOrTag}`;\n  const response = await fetch(endpoint, {\n    method: 'DELETE',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  const json = await responseHandler(response);\n  return plainToInstance(Version, json);\n}\n\n/**\n * Fork a project.\n */\nasync function forkProject(projectId: string, data: PostBodyForkProject): Promise<Project> {\n  const endpoint = `${API_HOST}/${projectId}/forks`;\n  const response = await fetch(endpoint, {\n    method: 'POST',\n    credentials: 'include',\n    body: JSON.stringify(data || {}),\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  const json = await responseHandler(response);\n  return plainToInstance(Project, json);\n}\n\n/**\n * Fetches the contents of project's file.\n *\n * @param projectId The project's ID.\n * @param version The version of the project.\n * @param filePath E.g. `{file-name}.{extension}`\n */\nasync function getFileContent(\n  projectId: string,\n  version: string,\n  filePath: string,\n): Promise<Response> {\n  // The endpoint returns a signed URL to the file contents in S3, but we can't redirect\n  // there automatically as the browser will block it due to CORS. Instead, we fetch\n  // the signed URL and then fetch the file contents with no credentials.\n  const endpoint = `${API_HOST}/${projectId}/files/${encodeURIComponent(filePath)}?version=${version}`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    cache: 'no-store',\n    credentials: 'include',\n  });\n\n  // TODO: If we go the redirect route, we need to handle the response here.\n  // const redirectUrl = await responseHandler(response);\n  // return await fetch(redirectUrl, { method: 'GET', cache: 'no-store', credentials: 'omit' });\n\n  return response;\n}\n\n/**\n * Upload a file to a project.\n */\nasync function uploadFile(\n  projectId: string,\n  file: FormData,\n  overwrite = false,\n): Promise<FileMetadata> {\n  let endpoint = `${API_HOST}/${projectId}/files`;\n  if (overwrite) {\n    endpoint += '?overwrite=true';\n  }\n  const response = await fetch(endpoint, {\n    method: 'POST',\n    credentials: 'include',\n    body: file,\n  });\n\n  const json = await responseHandler(response);\n  return plainToInstance(FileMetadata, json);\n}\n\n/**\n * Update a file in a project. Use this when saving an existing file when the\n * content of that file changes.\n */\nasync function updateFile(projectId: string, file: FormData): Promise<FileMetadata> {\n  const endpoint = `${API_HOST}/${projectId}/files`;\n  const response = await fetch(endpoint, {\n    method: 'PUT',\n    credentials: 'include',\n    body: file,\n  });\n\n  const json = await responseHandler(response);\n  return plainToInstance(FileMetadata, json);\n}\n\n/**\n * Create an empty folder in a project.\n *\n * The `folderPath` should not end with a slash. The API will handle that addition.\n *\n * E.g. Given a `folderPath` arg of `path/to/folder`, this will result in an empty\n * directory created at `{userId}/{projectId}/{version}/path/to/folder/`.\n *\n * NOTE: Don't add a trailing slash, the API will return a 409 CONFLICT error.\n */\nasync function createFolder(projectId: string, folderPath: string): Promise<FileMetadata> {\n  const endpoint = `${API_HOST}/${projectId}/folders`;\n  const response = await fetch(endpoint, {\n    method: 'POST',\n    credentials: 'include',\n    body: JSON.stringify({ folder_path: folderPath }),\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  const json = await responseHandler(response);\n  return plainToInstance(FileMetadata, json);\n}\n\n/**\n * Delete a folder from a project.\n *\n * The `folderPath` should not end with a slash. The API will handle that addition.\n *\n * E.g. Given a `folderPath` arg of `path/to/folder`, this will result in an empty\n * directory created at `{userId}/{projectId}/{version}/path/to/folder/`.\n */\nasync function deleteFolder(projectId: string, folderPath: string): Promise<null> {\n  const endpoint = `${API_HOST}/${projectId}/folders?folder_path=${encodeURIComponent(folderPath)}`;\n  const response = await fetch(endpoint, {\n    method: 'DELETE',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Deletes a file or folder from a project.\n */\nasync function deleteFile(projectId: string, filePath: string): Promise<null> {\n  const endpoint = `${API_HOST}/${projectId}/files?file_path=${encodeURIComponent(filePath)}`;\n  const response = await fetch(endpoint, {\n    method: 'DELETE',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Get a list file metadata for a project.\n */\nasync function listFiles(projectId: string, version = 'latest'): Promise<FileMetadata[]> {\n  const endpoint = `${API_HOST}/${projectId}/files?version=${version}`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n  });\n  const json = await responseHandler(response);\n  return plainToInstance<FileMetadata, FileMetadata[]>(FileMetadata, json);\n}\n\n/**\n * Get a list file metadata for a project.\n *\n * If it's a folder, don't include the trailing slash or else the API will\n * return an 409 CONFLICT error.\n */\nasync function renameFileOrFolder(\n  projectId: string,\n  oldPath: string,\n  newPath: string,\n): Promise<null> {\n  const endpoint = `${API_HOST}/${projectId}/files`;\n  const response = await fetch(endpoint, {\n    method: 'PATCH',\n    credentials: 'include',\n    body: JSON.stringify({\n      old_path: oldPath,\n      new_path: newPath,\n    }),\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Update project.\n */\nasync function updateProject(\n  projectId: string,\n  data: PutBodyUpdateProjectMetadata,\n): Promise<Project> {\n  const endpoint = `${API_HOST}/${projectId}`;\n  const response = await fetch(endpoint, {\n    method: 'PUT',\n    credentials: 'include',\n    body: JSON.stringify(data || {}),\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Upload a project icon.\n */\nasync function uploadProjectIcon(projectId: string, data: FormData): Promise<Project> {\n  const endpoint = `${API_HOST}/${projectId}/icon`;\n  const response = await fetch(endpoint, {\n    method: 'POST',\n    credentials: 'include',\n    body: data,\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Starts the checkout flow given a list of product IDs. The product ID isn't\n * the SKU, it's the human readable name, such as \"pyscript_founder\".\n */\nasync function checkout(product_names: ProductName[]): Promise<{ url: string }> {\n  const endpoint = `${API_PAYMENTS}/checkout`;\n  const response = await fetch(endpoint, {\n    method: 'POST',\n    credentials: 'include',\n    body: JSON.stringify({ product_names }),\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\n/**\n * When this method is called, the PSDC API will redirect the user to\n * the Stripe Checkout where they can purchase the Founders Plan.\n */\nasync function checkoutFoundersPlan() {\n  const { url } = await checkout(['pyscript_founder']);\n\n  if (url) {\n    window.location.href = url;\n  }\n}\n\n/**\n * Fetch a user's purchase history.\n */\nasync function purchases(): Promise<GetPurchasesResponse[]> {\n  const endpoint = `${API_PAYMENTS}/purchases`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Fetch a user's badges.\n */\nasync function listUserBadges(user: string): Promise<UserBadge[]> {\n  const endpoint = `${API_ACCOUNTS}/${user}/badges`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Fetch a user's profile.\n */\nasync function getProfile(user: string): Promise<GetProfileResponse> {\n  const endpoint = `${API_ACCOUNTS}/${user}/profile`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\nasync function updateProfile(user: string, data: PutUserProfile): Promise<GetProfileResponse> {\n  const endpoint = `${API_ACCOUNTS}/${user}/profile`;\n  const response = await fetch(endpoint, {\n    method: 'PUT',\n    credentials: 'include',\n    body: JSON.stringify(data),\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\nasync function uploadProfilePicture(user: string, data: FormData) {\n  const endpoint = `${API_ACCOUNTS}/${user}/profile/image`;\n  const response = await fetch(endpoint, {\n    method: 'POST',\n    credentials: 'include',\n    body: data,\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Fetch a user's stats.\n */\nasync function userStats(user: string): Promise<GetUserStatsResponse> {\n  const endpoint = `${API_ACCOUNTS}/${user}/stats`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Delete a user's account.\n */\nasync function deleteAccount(user: string): Promise<null> {\n  const endpoint = `${API_ACCOUNTS}/${user}`;\n  const response = await fetch(endpoint, {\n    method: 'DELETE',\n    credentials: 'include',\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Logout a user.\n *\n * This will invalidate the session token and redirect the user to the homepage.\n */\nfunction logout() {\n  window.location.href = `${API_AUTH}/logout`;\n}\n\n/**\n * Query the PyScript Assistant.\n */\nasync function assistantPrompt(text: string) {\n  const endpoint = `${API_ASSIST}/prompt`;\n  const response = await fetch(endpoint, {\n    method: 'POST',\n    credentials: 'include',\n    body: JSON.stringify({\n      text,\n    }),\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Project shared. Used for tracking number of times a project is shared.\n */\nasync function shareProject(projectId: string, via: 'url' | 'linkedin' | 'twitter') {\n  const endpoint = `${API_HOST}/${projectId}/shares`;\n  const response = await fetch(endpoint, {\n    method: 'POST',\n    credentials: 'include',\n    body: JSON.stringify({\n      via,\n    }),\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Create an API key for the user.\n */\nasync function createApiKey(name: string, expiry: number | null): Promise<string> {\n  const endpoint = `${API_ACCOUNTS}/api-keys`;\n  const response = await fetch(endpoint, {\n    method: 'POST',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n    body: JSON.stringify({\n      name,\n      expiry,\n    }),\n  });\n  return await responseHandler(response);\n}\n\n/**\n * List the user's API keys.\n */\nasync function listApiKeys(): Promise<ApiKey[]> {\n  const endpoint = `${API_ACCOUNTS}/api-keys`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Delete an API key for the user.\n */\nasync function deleteApiKey(id: string): Promise<string> {\n  const endpoint = `${API_ACCOUNTS}/api-keys/${id}`;\n  const response = await fetch(endpoint, {\n    method: 'DELETE',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Create a secret for the user.\n */\nasync function createSecret(body: PostCreateSecretBody): Promise<Secret> {\n  const endpoint = `${API_ACCOUNTS}/secrets`;\n  const response = await fetch(endpoint, {\n    method: 'POST',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n    body: JSON.stringify(body || {}),\n  });\n  return await responseHandler(response);\n}\n\n/**\n * List the user's secrets.\n */\nasync function listSecrets(): Promise<Secret[]> {\n  const endpoint = `${API_ACCOUNTS}/secrets`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Delete a secret for the user.\n */\nasync function deleteSecret(id: string): Promise<string> {\n  const endpoint = `${API_ACCOUNTS}/secrets/${id}`;\n  const response = await fetch(endpoint, {\n    method: 'DELETE',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Get a secret for the user.\n */\nasync function getSecret(id: string): Promise<Secret> {\n  const endpoint = `${API_ACCOUNTS}/secrets/${id}`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Update a secret for the user.\n */\nasync function updateSecret(id: string, body: PutCreateSecretBody): Promise<string> {\n  const endpoint = `${API_ACCOUNTS}/secrets/${id}`;\n  const response = await fetch(endpoint, {\n    method: 'PUT',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n    body: JSON.stringify(body || {}),\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Create an API proxy for the user.\n */\nasync function createApiProxy(body: PostCreateApiProxyBody): Promise<ApiProxy> {\n  const endpoint = `${API_ACCOUNTS}/api-proxies`;\n  const response = await fetch(endpoint, {\n    method: 'POST',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n    body: JSON.stringify(body || {}),\n  });\n  return await responseHandler(response);\n}\n\n/**\n * List the user's API Proxies.\n */\nasync function listApiProxies(): Promise<ApiProxy[]> {\n  const endpoint = `${API_ACCOUNTS}/api-proxies`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Delete an API Proxy for the user.\n */\nasync function deleteApiProxy(id: string): Promise<string> {\n  const endpoint = `${API_ACCOUNTS}/api-proxies/${id}`;\n  const response = await fetch(endpoint, {\n    method: 'DELETE',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Get an API Proxy for the user.\n */\nasync function getApiProxy(id: string): Promise<ApiProxy> {\n  const endpoint = `${API_ACCOUNTS}/api-proxies/${id}`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Update an API Proxy for the user.\n */\nasync function updateApiProxy(id: string, body: PutCreateApiProxyBody): Promise<ApiProxy> {\n  const endpoint = `${API_ACCOUNTS}/api-proxies/${id}`;\n  const response = await fetch(endpoint, {\n    method: 'PUT',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n    body: JSON.stringify(body || {}),\n  });\n  return await responseHandler(response);\n}\n\n/**\n * Get a list of favorites.\n */\nasync function listFavorites(): Promise<Favorite[]> {\n  const endpoint = `${API_HOST}/favorites`;\n\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return responseHandler(response);\n}\n\n/**\n * Add a project to favorites.\n */\nasync function addFavorite(projectId: string): Promise<Project> {\n  const endpoint = `${API_HOST}/favorites`;\n  const response = await fetch(endpoint, {\n    method: 'POST',\n    credentials: 'include',\n    body: JSON.stringify({\n      project_id: projectId,\n    }),\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return responseHandler(response);\n}\n\n/**\n * Removes a project from favorites.\n */\nasync function removeFavorite(projectId: string): Promise<null> {\n  const endpoint = `${API_HOST}/favorites/${projectId}`;\n  const response = await fetch(endpoint, {\n    method: 'DELETE',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return responseHandler(response);\n}\n\n/** Gets a user's list of collections. */\nasync function listCollections(options: ListCollectionsOptions): Promise<Collection[]> {\n  const queryParams = options ? `?${objectToQueryParams(toSnakeCaseKeys(options))}` : '';\n  const endpoint = `${API_HOST}/collections${queryParams}`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return responseHandler(response);\n}\n\n/** Creates a new collection. */\nasync function createCollection(\n  name: string,\n  description: string,\n  privacy: boolean,\n): Promise<Collection> {\n  const endpoint = `${API_HOST}/collections`;\n  const response = await fetch(endpoint, {\n    method: 'POST',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n    body: JSON.stringify({\n      name: name?.trim(),\n      description: description?.trim(),\n      private: privacy,\n    }),\n  });\n  return responseHandler(response);\n}\n\n/** Update an existing collection. */\nasync function updateCollection(\n  collectionId: string,\n  name: string,\n  description: string,\n  privacy: boolean,\n): Promise<Collection> {\n  const endpoint = `${API_HOST}/collections/${collectionId}`;\n  const response = await fetch(endpoint, {\n    method: 'PUT',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n    body: JSON.stringify({\n      name: name.trim(),\n      description: description.trim(),\n      private: privacy,\n    }),\n  });\n  return responseHandler(response);\n}\n\n/** Delete's a logged-in user's collection. */\nasync function deleteCollection(collectionId: string): Promise<null> {\n  const endpoint = `${API_HOST}/collections/${collectionId}`;\n  const response = await fetch(endpoint, {\n    method: 'DELETE',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return responseHandler(response);\n}\n\n/** List projects in a collection. */\nasync function listProjectsInCollection(\n  collectionId: string,\n  options?: ListCollectionProjectsOptions,\n): Promise<ListProjectsResponse> {\n  const queryParams = options ? `?${objectToQueryParams(toSnakeCaseKeys(options))}` : '';\n  const endpoint = `${API_HOST}/collections/${collectionId}${queryParams}`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n  });\n  return responseHandler(response);\n}\n\n/** Add projects to a collection. */\nasync function addProjectsToCollection(collectionId: string, projectIds: string[]): Promise<null> {\n  const endpoint = `${API_HOST}/collections/${collectionId}`;\n  const response = await fetch(endpoint, {\n    method: 'POST',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n    body: JSON.stringify({\n      project_ids: projectIds,\n    }),\n  });\n  return responseHandler(response);\n}\n\n/** Remove projects from a collection. */\nasync function removeProjectsFromCollection(\n  collectionId: string,\n  projectIds: string[],\n): Promise<null> {\n  const endpoint = `${API_HOST}/collections/${collectionId}/remove-projects`;\n  const response = await fetch(endpoint, {\n    method: 'POST',\n    credentials: 'include',\n    headers: {\n      'Content-Type': 'application/json',\n    },\n    body: JSON.stringify({\n      project_ids: projectIds,\n    }),\n  });\n  return responseHandler(response);\n}\n\n/** Export a project. */\nasync function exportProject(projectId: string): Promise<Response> {\n  const endpoint = `${API_HOST}/${projectId}/export`;\n  return fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n  });\n}\n\n/** List the user's Channels. */\nasync function listChannels(): Promise<Channel[]> {\n  const endpoint = `${API_ACCOUNTS}/channels`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: { 'Content-Type': 'application/json' },\n  });\n  return await responseHandler(response);\n}\n\n/** Create a Channel for the user. */\nasync function createChannel(body: PostCreateChannelBody): Promise<Channel> {\n  const endpoint = `${API_ACCOUNTS}/channels`;\n  const response = await fetch(endpoint, {\n    method: 'POST',\n    credentials: 'include',\n    headers: { 'Content-Type': 'application/json' },\n    body: JSON.stringify(body || {}),\n  });\n  return await responseHandler(response);\n}\n\n/** Delete a Channel for the user. */\nasync function deleteChannel(id: string): Promise<string> {\n  const endpoint = `${API_ACCOUNTS}/channels/${id}`;\n  const response = await fetch(endpoint, {\n    method: 'DELETE',\n    credentials: 'include',\n    headers: { 'Content-Type': 'application/json' },\n  });\n  return await responseHandler(response);\n}\n\n/** Get a Channel for the user. */\nasync function getChannel(id: string): Promise<Channel> {\n  const endpoint = `${API_ACCOUNTS}/channels/${id}`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: { 'Content-Type': 'application/json' },\n  });\n  return await responseHandler(response);\n}\n\n/** Update a Channel for the user. */\nasync function updateChannel(id: string, body: PutUpdateChannelBody): Promise<Channel> {\n  const endpoint = `${API_ACCOUNTS}/channels/${id}`;\n  const response = await fetch(endpoint, {\n    method: 'PUT',\n    credentials: 'include',\n    headers: { 'Content-Type': 'application/json' },\n    body: JSON.stringify(body || {}),\n  });\n  return await responseHandler(response);\n}\n\n/** Get System status - banners, maintenance */\nasync function getSystemStatus(): Promise<SystemStatus> {\n  const endpoint = `${API_SYSTEM}/`;\n  const response = await fetch(endpoint, {\n    method: 'GET',\n    credentials: 'include',\n    headers: { 'Content-Type': 'application/json' },\n  });\n  return await responseHandler(response);\n}\n\nexport default {\n  // Favorites\n  listFavorites,\n  addFavorite,\n  removeFavorite,\n\n  // Files\n  deleteFile,\n  getFileContent,\n  listFiles,\n  renameFileOrFolder,\n  uploadFile,\n  updateFile,\n  createFolder,\n  deleteFolder,\n\n  // Projects\n  createProject,\n  deleteProject,\n  forkProject,\n  getProject,\n  getProjectBySlug,\n  getProjectStats,\n  listProjects,\n  updateProject,\n  uploadProjectIcon,\n  shareProject,\n  exportProject,\n\n  // Versions\n  createVersion,\n  deleteVersion,\n  getVersion,\n  listVersions,\n  updateVersion,\n\n  // Auth\n  whoami,\n  register,\n\n  // Checkout\n  checkout,\n  checkoutFoundersPlan,\n  purchases,\n\n  // Pyscript Assistant\n  assistantPrompt,\n\n  // Accounts.\n  getProfile,\n  listUserBadges,\n  userStats,\n  updateProfile,\n  uploadProfilePicture,\n  deleteAccount,\n  logout,\n\n  // Secrets\n  createApiKey,\n  listApiKeys,\n  deleteApiKey,\n  createSecret,\n  listSecrets,\n  deleteSecret,\n  getSecret,\n  updateSecret,\n\n  // Proxies\n  createApiProxy,\n  listApiProxies,\n  deleteApiProxy,\n  getApiProxy,\n  updateApiProxy,\n\n  // Collections\n  listCollections,\n  createCollection,\n  updateCollection,\n  deleteCollection,\n  listProjectsInCollection,\n  addProjectsToCollection,\n  removeProjectsFromCollection,\n\n  // Channels\n  listChannels,\n  createChannel,\n  deleteChannel,\n  getChannel,\n  updateChannel,\n\n  // System\n  getSystemStatus,\n};\n","import { defineStore } from 'pinia';\nimport pyscriptApi from '~/utilities/pyscript-api';\nimport type { Project, Whoami } from '~/utilities/pyscript-api-models';\n\nexport const useUserStore = defineStore('user', {\n  state: () => ({\n    user: null as Whoami | null,\n  }),\n\n  getters: {\n    canUseApiProxies(): boolean {\n      return this.quotas['api-proxies-quota']?.max !== 0;\n    },\n\n    canUsePrivateProjects(): boolean {\n      return this.quotas['private-projects-quota']?.max !== 0;\n    },\n\n    canUseAssistant(): boolean {\n      return this.permits.includes('use-assistant');\n    },\n\n    isLoggedIn(state) {\n      return Boolean(state.user);\n    },\n\n    isDeveloper(state) {\n      return state.user?.tier_id === 'developer';\n    },\n\n    permits(state) {\n      return state.user?.permit_ids || [];\n    },\n\n    quotas(state) {\n      return state.user?.quotas || {};\n    },\n\n    usernameOrId(state) {\n      return state.user?.username || state.user?.id || '';\n    },\n  },\n\n  actions: {\n    async fetchUser() {\n      const user = await pyscriptApi.whoami();\n\n      if (user && window.heap) {\n        // Note: heap is being added in the heap module.\n        // we are passing the unique user id to heap to\n        // merge anonymous data if it exists\n        window.heap.identify(user.id);\n      }\n\n      this.user = user;\n      return user;\n    },\n\n    /** Checks if the logged in user is the owner of a project. */\n    isProjectOwner(project: Project): boolean {\n      if (!this.isLoggedIn) {\n        return false;\n      }\n      return this.user?.id === project.user_id;\n    },\n  },\n});\n","export const MEGABYTE = 1000 * 1000; // Backend uses 1000 instead of 1024\nexport const MAX_FILE_SIZE = 10 * MEGABYTE;\nexport const MAX_FILE_SIZE_TEXT = '10MB';\nexport const FILE_IGNORE_LIST = ['.DS_Store'];\nexport const MARKDOWN_WRAPPER_CLASS = 'article-body';\nexport const STORAGE_KEY_PROJECTS_SORT = 'projects_sort';\nexport const STORAGE_KEY_PROJECTS_VIEW = 'projects_view';\nexport const STORAGE_KEY_EDITOR_PREFERENCES = 'editor_preferences';\nexport const STORAGE_KEY_ITEMS_PER_PAGE = 'items_per_page';\nexport const STORAGE_KEY_WHATS_NEW_NOTIFICATION_BADGE = 'has-viewed-whats-new-dec-5-2024';\nexport const STORAGE_KEY_BANNER = 'pyscript-dismissed-banners';\n","import { useStorage } from '@vueuse/core';\nimport { STORAGE_KEY_PROJECTS_SORT } from '~/utilities/constants';\nimport type { ListProjectsSortBy, ListProjectsSortOrder } from '~/utilities/pyscript-api-models';\n\nexport interface SortOptionValue {\n  sortBy: ListProjectsSortBy;\n  sortOrder: ListProjectsSortOrder;\n}\n\nexport interface SortOption {\n  id?: string;\n  text?: string;\n  value?: SortOptionValue;\n}\n\nconst sortOptions: SortOption[] = [\n  {\n    text: 'Title (A-Z)',\n    value: {\n      sortBy: 'name',\n      sortOrder: 'asc',\n    },\n  },\n  {\n    text: 'Title (Z-A)',\n    value: {\n      sortBy: 'name',\n      sortOrder: 'desc',\n    },\n  },\n  { id: 'spacer' },\n  {\n    text: 'Modified (new to old)',\n    value: {\n      sortBy: 'updated_at',\n      sortOrder: 'desc',\n    },\n  },\n  {\n    text: 'Modified (old to new)',\n    value: {\n      sortBy: 'updated_at',\n      sortOrder: 'asc',\n    },\n  },\n  { id: 'spacer' },\n  {\n    text: 'Created (new to old)',\n    value: {\n      sortBy: 'created_at',\n      sortOrder: 'desc',\n    },\n  },\n  {\n    text: 'Created (old to new)',\n    value: {\n      sortBy: 'created_at',\n      sortOrder: 'asc',\n    },\n  },\n];\n\nexport function useSortPreference() {\n  const defaultSort: SortOptionValue = {\n    sortBy: 'updated_at',\n    sortOrder: 'desc',\n  };\n  const savedSort = useStorage<SortOptionValue>(\n    STORAGE_KEY_PROJECTS_SORT,\n    defaultSort,\n    localStorage,\n    {\n      // Doing this because the value used to be a string but now it's JSON. This\n      // will update the value to the new format if it's still the old format.\n      onError: () => localStorage.setItem(STORAGE_KEY_PROJECTS_SORT, JSON.stringify(defaultSort)),\n    },\n  );\n  const updateSort = (sort: SortOptionValue) => (savedSort.value = sort);\n\n  return {\n    savedSort,\n    sortOptions,\n    updateSort,\n  };\n}\n","import { defineStore } from 'pinia';\nimport { useUserStore } from './user-store';\nimport type { Collection, Project } from '~/utilities/pyscript-api-models';\nimport pyscriptApi from '~/utilities/pyscript-api';\nimport { useSortPreference } from '~/composables/sort-preference';\n\ninterface State {\n  isInitialized: boolean;\n  collections: Collection[];\n\n  /** Shows a modal to create or edit a Collection. */\n  showCollectionModal: boolean;\n  /** Used if a collection is being edited. */\n  collectionBeingEdited: Collection | null;\n\n  /** Shows a modal to add a single project to a Collection. */\n  showAddProjectToCollectionModal: boolean;\n  /** Used when adding a single project to a Collection. */\n  projectToBeAdded: Project | null;\n}\n\n/** Store for the logged-in user's collections. */\nexport const useCollectionsStore = defineStore('collections', {\n  state: (): State => ({\n    isInitialized: false,\n    collections: [],\n    showCollectionModal: false,\n    collectionBeingEdited: null,\n    showAddProjectToCollectionModal: false,\n    projectToBeAdded: null,\n  }),\n\n  actions: {\n    /** Only be called once on page load via the `src/main.ts` file. */\n    async init() {\n      await this.fetchCollections();\n      this.isInitialized = true;\n    },\n\n    /** Fetch the logged-in user's collections. */\n    async fetchCollections() {\n      const userStore = useUserStore();\n      const { savedSort } = useSortPreference();\n\n      this.collections = await pyscriptApi.listCollections({\n        user: userStore.user!.id,\n        sortBy: savedSort.value.sortBy,\n        sortOrder: savedSort.value.sortOrder,\n      });\n\n      return this.collections;\n    },\n\n    /** Fetch Collections search results for the logged-in user. */\n    async fetchSearchResults(query?: string) {\n      const userStore = useUserStore();\n      const { savedSort } = useSortPreference();\n\n      return pyscriptApi.listCollections({\n        q: query,\n        user: userStore.user!.id,\n        sortBy: savedSort.value.sortBy,\n        sortOrder: savedSort.value.sortOrder,\n      });\n    },\n\n    /** Create a collection. */\n    async createCollection(name: string, description: string, privacy: boolean) {\n      const collection = await pyscriptApi.createCollection(name, description, privacy);\n      await this.fetchCollections();\n\n      // If a project is being added to a collection that's being created, add it now.\n      if (this.projectToBeAdded) {\n        await this.updateProjectsInCollection(collection.id, [this.projectToBeAdded.id], []);\n        this.projectToBeAdded = null;\n      }\n      return collection;\n    },\n\n    /** Delete a collection. */\n    async deleteCollection(collectionId: string) {\n      // eslint-disable-next-line no-alert\n      const confirmResult = confirm(\n        `Are you sure you want to delete this collection? This action cannot be undone.`,\n      );\n\n      if (!confirmResult) return;\n\n      await pyscriptApi.deleteCollection(collectionId);\n      await this.fetchCollections();\n    },\n\n    /** Update a collections details. */\n    async updateCollection(\n      collectionId: string,\n      name: string,\n      description: string,\n      privacy: boolean,\n    ) {\n      await pyscriptApi.updateCollection(collectionId, name, description, privacy);\n      await this.fetchCollections();\n    },\n\n    /** Update what projects are in a collection. */\n    async updateProjectsInCollection(\n      collectionId: string,\n      projectIdsToAdd: string[],\n      projectIdsToRemove: string[],\n    ) {\n      await Promise.allSettled([\n        pyscriptApi.addProjectsToCollection(collectionId, projectIdsToAdd),\n        pyscriptApi.removeProjectsFromCollection(collectionId, projectIdsToRemove),\n      ]);\n\n      // Refetch collectinos to get updated number of projects in each collection.\n      this.fetchCollections();\n    },\n\n    /** Show the collection modal to update its details. */\n    openCollectionModal(collection?: Collection) {\n      if (collection) {\n        this.collectionBeingEdited = collection;\n      }\n      this.showCollectionModal = true;\n    },\n\n    /** Close the collection modal. */\n    async closeCollectionModal() {\n      this.showCollectionModal = false;\n      this.collectionBeingEdited = null;\n    },\n\n    openAddProjectToCollectionModal(project: Project) {\n      this.projectToBeAdded = project;\n      this.showAddProjectToCollectionModal = true;\n    },\n\n    closeAddProjectToCollectionModal(isCreateCollectionFlow?: boolean) {\n      // If in a create collection flow, don't reset the project to be added.\n      if (!isCreateCollectionFlow) {\n        this.projectToBeAdded = null;\n      }\n      this.showAddProjectToCollectionModal = false;\n    },\n  },\n});\n","import{inject as n,provide as r}from\"vue\";let t=Symbol(\"headlessui.useid\"),i=0;function I(){return n(t,()=>`${++i}`)()}function l(e){r(t,e)}export{l as provideUseId,I as useId};\n","function o(e){var l;if(e==null||e.value==null)return null;let n=(l=e.value.$el)!=null?l:e.value;return n instanceof Node?n:null}export{o as dom};\n","function u(r,n,...a){if(r in n){let e=n[r];return typeof e==\"function\"?e(...a):e}let t=new Error(`Tried to handle \"${r}\" but there is no handler defined. Only defined handlers are: ${Object.keys(n).map(e=>`\"${e}\"`).join(\", \")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,u),t}export{u as match};\n","var i=Object.defineProperty;var d=(t,e,r)=>e in t?i(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var n=(t,e,r)=>(d(t,typeof e!=\"symbol\"?e+\"\":e,r),r);class s{constructor(){n(this,\"current\",this.detect());n(this,\"currentId\",0)}set(e){this.current!==e&&(this.currentId=0,this.current=e)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return this.current===\"server\"}get isClient(){return this.current===\"client\"}detect(){return typeof window==\"undefined\"||typeof document==\"undefined\"?\"server\":\"client\"}}let c=new s;export{c as env};\n","import{dom as o}from'./dom.js';import{env as t}from'./env.js';function i(r){if(t.isServer)return null;if(r instanceof Node)return r.ownerDocument;if(r!=null&&r.hasOwnProperty(\"value\")){let n=o(r);if(n)return n.ownerDocument}return document}export{i as getOwnerDocument};\n","import{nextTick as b}from\"vue\";import{match as M}from'./match.js';import{getOwnerDocument as f}from'./owner.js';let c=[\"[contentEditable=true]\",\"[tabindex]\",\"a[href]\",\"area[href]\",\"button:not([disabled])\",\"iframe\",\"input:not([disabled])\",\"select:not([disabled])\",\"textarea:not([disabled])\"].map(e=>`${e}:not([tabindex='-1'])`).join(\",\");var N=(n=>(n[n.First=1]=\"First\",n[n.Previous=2]=\"Previous\",n[n.Next=4]=\"Next\",n[n.Last=8]=\"Last\",n[n.WrapAround=16]=\"WrapAround\",n[n.NoScroll=32]=\"NoScroll\",n))(N||{}),T=(o=>(o[o.Error=0]=\"Error\",o[o.Overflow=1]=\"Overflow\",o[o.Success=2]=\"Success\",o[o.Underflow=3]=\"Underflow\",o))(T||{}),F=(t=>(t[t.Previous=-1]=\"Previous\",t[t.Next=1]=\"Next\",t))(F||{});function E(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(c)).sort((r,t)=>Math.sign((r.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER)))}var h=(t=>(t[t.Strict=0]=\"Strict\",t[t.Loose=1]=\"Loose\",t))(h||{});function w(e,r=0){var t;return e===((t=f(e))==null?void 0:t.body)?!1:M(r,{[0](){return e.matches(c)},[1](){let l=e;for(;l!==null;){if(l.matches(c))return!0;l=l.parentElement}return!1}})}function _(e){let r=f(e);b(()=>{r&&!w(r.activeElement,0)&&S(e)})}var y=(t=>(t[t.Keyboard=0]=\"Keyboard\",t[t.Mouse=1]=\"Mouse\",t))(y||{});typeof window!=\"undefined\"&&typeof document!=\"undefined\"&&(document.addEventListener(\"keydown\",e=>{e.metaKey||e.altKey||e.ctrlKey||(document.documentElement.dataset.headlessuiFocusVisible=\"\")},!0),document.addEventListener(\"click\",e=>{e.detail===1?delete document.documentElement.dataset.headlessuiFocusVisible:e.detail===0&&(document.documentElement.dataset.headlessuiFocusVisible=\"\")},!0));function S(e){e==null||e.focus({preventScroll:!0})}let H=[\"textarea\",\"input\"].join(\",\");function I(e){var r,t;return(t=(r=e==null?void 0:e.matches)==null?void 0:r.call(e,H))!=null?t:!1}function O(e,r=t=>t){return e.slice().sort((t,l)=>{let o=r(t),i=r(l);if(o===null||i===null)return 0;let n=o.compareDocumentPosition(i);return n&Node.DOCUMENT_POSITION_FOLLOWING?-1:n&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function v(e,r){return P(E(),r,{relativeTo:e})}function P(e,r,{sorted:t=!0,relativeTo:l=null,skipElements:o=[]}={}){var m;let i=(m=Array.isArray(e)?e.length>0?e[0].ownerDocument:document:e==null?void 0:e.ownerDocument)!=null?m:document,n=Array.isArray(e)?t?O(e):e:E(e);o.length>0&&n.length>1&&(n=n.filter(s=>!o.includes(s))),l=l!=null?l:i.activeElement;let x=(()=>{if(r&5)return 1;if(r&10)return-1;throw new Error(\"Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last\")})(),p=(()=>{if(r&1)return 0;if(r&2)return Math.max(0,n.indexOf(l))-1;if(r&4)return Math.max(0,n.indexOf(l))+1;if(r&8)return n.length-1;throw new Error(\"Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last\")})(),L=r&32?{preventScroll:!0}:{},a=0,d=n.length,u;do{if(a>=d||a+d<=0)return 0;let s=p+a;if(r&16)s=(s+d)%d;else{if(s<0)return 3;if(s>=d)return 1}u=n[s],u==null||u.focus(L),a+=x}while(u!==i.activeElement);return r&6&&I(u)&&u.select(),2}export{N as Focus,T as FocusResult,h as FocusableMode,S as focusElement,v as focusFrom,P as focusIn,E as getFocusableElements,w as isFocusableElement,_ as restoreFocusIfNecessary,O as sortByDomNode};\n","function t(){return/iPhone/gi.test(window.navigator.platform)||/Mac/gi.test(window.navigator.platform)&&window.navigator.maxTouchPoints>0}function i(){return/Android/gi.test(window.navigator.userAgent)}function n(){return t()||i()}export{i as isAndroid,t as isIOS,n as isMobile};\n","import{watchEffect as r}from\"vue\";import{env as m}from'../utils/env.js';function u(e,t,n){m.isServer||r(o=>{document.addEventListener(e,t,n),o(()=>document.removeEventListener(e,t,n))})}export{u as useDocumentEvent};\n","import{watchEffect as i}from\"vue\";import{env as r}from'../utils/env.js';function w(e,n,t){r.isServer||i(o=>{window.addEventListener(e,n,t),o(()=>window.removeEventListener(e,n,t))})}export{w as useWindowEvent};\n","import{computed as s,ref as E}from\"vue\";import{dom as p}from'../utils/dom.js';import{FocusableMode as d,isFocusableElement as C}from'../utils/focus-management.js';import{isMobile as T}from'../utils/platform.js';import{useDocumentEvent as i}from'./use-document-event.js';import{useWindowEvent as M}from'./use-window-event.js';function w(f,m,l=s(()=>!0)){function a(e,r){if(!l.value||e.defaultPrevented)return;let t=r(e);if(t===null||!t.getRootNode().contains(t))return;let c=function o(n){return typeof n==\"function\"?o(n()):Array.isArray(n)||n instanceof Set?n:[n]}(f);for(let o of c){if(o===null)continue;let n=o instanceof HTMLElement?o:p(o);if(n!=null&&n.contains(t)||e.composed&&e.composedPath().includes(n))return}return!C(t,d.Loose)&&t.tabIndex!==-1&&e.preventDefault(),m(e,t)}let u=E(null);i(\"pointerdown\",e=>{var r,t;l.value&&(u.value=((t=(r=e.composedPath)==null?void 0:r.call(e))==null?void 0:t[0])||e.target)},!0),i(\"mousedown\",e=>{var r,t;l.value&&(u.value=((t=(r=e.composedPath)==null?void 0:r.call(e))==null?void 0:t[0])||e.target)},!0),i(\"click\",e=>{T()||u.value&&(a(e,()=>u.value),u.value=null)},!0),i(\"touchend\",e=>a(e,()=>e.target instanceof HTMLElement?e.target:null),!0),M(\"blur\",e=>a(e,()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null),!0)}export{w as useOutsideClick};\n","import{cloneVNode as O,Fragment as x,h as k}from\"vue\";import{match as w}from'./match.js';var N=(o=>(o[o.None=0]=\"None\",o[o.RenderStrategy=1]=\"RenderStrategy\",o[o.Static=2]=\"Static\",o))(N||{}),S=(e=>(e[e.Unmount=0]=\"Unmount\",e[e.Hidden=1]=\"Hidden\",e))(S||{});function A({visible:r=!0,features:t=0,ourProps:e,theirProps:o,...i}){var a;let n=j(o,e),l=Object.assign(i,{props:n});if(r||t&2&&n.static)return y(l);if(t&1){let d=(a=n.unmount)==null||a?0:1;return w(d,{[0](){return null},[1](){return y({...i,props:{...n,hidden:!0,style:{display:\"none\"}}})}})}return y(l)}function y({props:r,attrs:t,slots:e,slot:o,name:i}){var m,h;let{as:n,...l}=T(r,[\"unmount\",\"static\"]),a=(m=e.default)==null?void 0:m.call(e,o),d={};if(o){let u=!1,c=[];for(let[p,f]of Object.entries(o))typeof f==\"boolean\"&&(u=!0),f===!0&&c.push(p);u&&(d[\"data-headlessui-state\"]=c.join(\" \"))}if(n===\"template\"){if(a=b(a!=null?a:[]),Object.keys(l).length>0||Object.keys(t).length>0){let[u,...c]=a!=null?a:[];if(!v(u)||c.length>0)throw new Error(['Passing props on \"template\"!',\"\",`The current component <${i} /> is rendering a \"template\".`,\"However we need to passthrough the following props:\",Object.keys(l).concat(Object.keys(t)).map(s=>s.trim()).filter((s,g,R)=>R.indexOf(s)===g).sort((s,g)=>s.localeCompare(g)).map(s=>`  - ${s}`).join(`\n`),\"\",\"You can apply a few solutions:\",['Add an `as=\"...\"` prop, to ensure that we render an actual element instead of a \"template\".',\"Render a single element as the child so that we can forward the props onto that element.\"].map(s=>`  - ${s}`).join(`\n`)].join(`\n`));let p=j((h=u.props)!=null?h:{},l,d),f=O(u,p,!0);for(let s in p)s.startsWith(\"on\")&&(f.props||(f.props={}),f.props[s]=p[s]);return f}return Array.isArray(a)&&a.length===1?a[0]:a}return k(n,Object.assign({},l,d),{default:()=>a})}function b(r){return r.flatMap(t=>t.type===x?b(t.children):[t])}function j(...r){var o;if(r.length===0)return{};if(r.length===1)return r[0];let t={},e={};for(let i of r)for(let n in i)n.startsWith(\"on\")&&typeof i[n]==\"function\"?((o=e[n])!=null||(e[n]=[]),e[n].push(i[n])):t[n]=i[n];if(t.disabled||t[\"aria-disabled\"])return Object.assign(t,Object.fromEntries(Object.keys(e).map(i=>[i,void 0])));for(let i in e)Object.assign(t,{[i](n,...l){let a=e[i];for(let d of a){if(n instanceof Event&&n.defaultPrevented)return;d(n,...l)}}});return t}function E(r){let t=Object.assign({},r);for(let e in t)t[e]===void 0&&delete t[e];return t}function T(r,t=[]){let e=Object.assign({},r);for(let o of t)o in e&&delete e[o];return e}function v(r){return r==null?!1:typeof r.type==\"string\"||typeof r.type==\"object\"||typeof r.type==\"function\"}export{N as Features,S as RenderStrategy,E as compact,T as omit,A as render};\n","import{defineComponent as a}from\"vue\";import{render as p}from'../utils/render.js';var s=(e=>(e[e.None=1]=\"None\",e[e.Focusable=2]=\"Focusable\",e[e.Hidden=4]=\"Hidden\",e))(s||{});let f=a({name:\"Hidden\",props:{as:{type:[Object,String],default:\"div\"},features:{type:Number,default:1}},setup(d,{slots:o,attrs:i}){return()=>{var t;let{features:e,...r}=d,n={\"aria-hidden\":(e&2)===2?!0:(t=r[\"aria-hidden\"])!=null?t:void 0,style:{position:\"fixed\",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:\"hidden\",clip:\"rect(0, 0, 0, 0)\",whiteSpace:\"nowrap\",borderWidth:\"0\",...(e&4)===4&&(e&2)!==2&&{display:\"none\"}}};return p({ourProps:n,theirProps:r,slot:{},attrs:i,slots:o,name:\"Hidden\"})}}});export{s as Features,f as Hidden};\n","import{inject as p,provide as r}from\"vue\";let n=Symbol(\"Context\");var i=(e=>(e[e.Open=1]=\"Open\",e[e.Closed=2]=\"Closed\",e[e.Closing=4]=\"Closing\",e[e.Opening=8]=\"Opening\",e))(i||{});function s(){return l()!==null}function l(){return p(n,null)}function t(o){r(n,o)}export{i as State,s as hasOpenClosed,l as useOpenClosed,t as useOpenClosedProvider};\n","var o=(r=>(r.Space=\" \",r.Enter=\"Enter\",r.Escape=\"Escape\",r.Backspace=\"Backspace\",r.Delete=\"Delete\",r.ArrowLeft=\"ArrowLeft\",r.ArrowUp=\"ArrowUp\",r.ArrowRight=\"ArrowRight\",r.ArrowDown=\"ArrowDown\",r.Home=\"Home\",r.End=\"End\",r.PageUp=\"PageUp\",r.PageDown=\"PageDown\",r.Tab=\"Tab\",r))(o||{});export{o as Keys};\n","function t(n){function e(){document.readyState!==\"loading\"&&(n(),document.removeEventListener(\"DOMContentLoaded\",e))}typeof window!=\"undefined\"&&typeof document!=\"undefined\"&&(document.addEventListener(\"DOMContentLoaded\",e),e())}export{t as onDocumentReady};\n","import{onDocumentReady as d}from'./document-ready.js';let t=[];d(()=>{function e(n){n.target instanceof HTMLElement&&n.target!==document.body&&t[0]!==n.target&&(t.unshift(n.target),t=t.filter(r=>r!=null&&r.isConnected),t.splice(10))}window.addEventListener(\"click\",e,{capture:!0}),window.addEventListener(\"mousedown\",e,{capture:!0}),window.addEventListener(\"focus\",e,{capture:!0}),document.body.addEventListener(\"click\",e,{capture:!0}),document.body.addEventListener(\"mousedown\",e,{capture:!0}),document.body.addEventListener(\"focus\",e,{capture:!0})});export{t as history};\n","function t(e){typeof queueMicrotask==\"function\"?queueMicrotask(e):Promise.resolve().then(e).catch(o=>setTimeout(()=>{throw o}))}export{t as microTask};\n","import{microTask as n}from'./micro-task.js';function o(){let a=[],s={addEventListener(e,t,r,i){return e.addEventListener(t,r,i),s.add(()=>e.removeEventListener(t,r,i))},requestAnimationFrame(...e){let t=requestAnimationFrame(...e);s.add(()=>cancelAnimationFrame(t))},nextFrame(...e){s.requestAnimationFrame(()=>{s.requestAnimationFrame(...e)})},setTimeout(...e){let t=setTimeout(...e);s.add(()=>clearTimeout(t))},microTask(...e){let t={current:!0};return n(()=>{t.current&&e[0]()}),s.add(()=>{t.current=!1})},style(e,t,r){let i=e.style.getPropertyValue(t);return Object.assign(e.style,{[t]:r}),this.add(()=>{Object.assign(e.style,{[t]:i})})},group(e){let t=o();return e(t),this.add(()=>t.dispose())},add(e){return a.push(e),()=>{let t=a.indexOf(e);if(t>=0)for(let r of a.splice(t,1))r()}},dispose(){for(let e of a.splice(0))e()}};return s}export{o as disposables};\n","import{watchEffect as i}from\"vue\";import{env as a}from'../utils/env.js';function E(n,e,o,r){a.isServer||i(t=>{n=n!=null?n:window,n.addEventListener(e,o,r),t(()=>n.removeEventListener(e,o,r))})}export{E as useEventListener};\n","import{ref as a}from\"vue\";import{useWindowEvent as t}from'./use-window-event.js';var d=(r=>(r[r.Forwards=0]=\"Forwards\",r[r.Backwards=1]=\"Backwards\",r))(d||{});function n(){let o=a(0);return t(\"keydown\",e=>{e.key===\"Tab\"&&(o.value=e.shiftKey?1:0)}),o}export{d as Direction,n as useTabDirection};\n","import{computed as L,defineComponent as I,Fragment as j,h as R,onMounted as M,onUnmounted as h,ref as E,watch as g,watchEffect as K}from\"vue\";import{useEventListener as U}from'../../hooks/use-event-listener.js';import{Direction as y,useTabDirection as _}from'../../hooks/use-tab-direction.js';import{Features as k,Hidden as D}from'../../internal/hidden.js';import{history as C}from'../../utils/active-element-history.js';import{dom as c}from'../../utils/dom.js';import{Focus as v,focusElement as p,focusIn as b,FocusResult as q}from'../../utils/focus-management.js';import{match as P}from'../../utils/match.js';import{microTask as S}from'../../utils/micro-task.js';import{getOwnerDocument as x}from'../../utils/owner.js';import{render as G}from'../../utils/render.js';function B(t){if(!t)return new Set;if(typeof t==\"function\")return new Set(t());let n=new Set;for(let r of t.value){let l=c(r);l instanceof HTMLElement&&n.add(l)}return n}var A=(e=>(e[e.None=1]=\"None\",e[e.InitialFocus=2]=\"InitialFocus\",e[e.TabLock=4]=\"TabLock\",e[e.FocusLock=8]=\"FocusLock\",e[e.RestoreFocus=16]=\"RestoreFocus\",e[e.All=30]=\"All\",e))(A||{});let ue=Object.assign(I({name:\"FocusTrap\",props:{as:{type:[Object,String],default:\"div\"},initialFocus:{type:Object,default:null},features:{type:Number,default:30},containers:{type:[Object,Function],default:E(new Set)}},inheritAttrs:!1,setup(t,{attrs:n,slots:r,expose:l}){let o=E(null);l({el:o,$el:o});let i=L(()=>x(o)),e=E(!1);M(()=>e.value=!0),h(()=>e.value=!1),$({ownerDocument:i},L(()=>e.value&&Boolean(t.features&16)));let m=z({ownerDocument:i,container:o,initialFocus:L(()=>t.initialFocus)},L(()=>e.value&&Boolean(t.features&2)));J({ownerDocument:i,container:o,containers:t.containers,previousActiveElement:m},L(()=>e.value&&Boolean(t.features&8)));let f=_();function a(u){let T=c(o);if(!T)return;(w=>w())(()=>{P(f.value,{[y.Forwards]:()=>{b(T,v.First,{skipElements:[u.relatedTarget]})},[y.Backwards]:()=>{b(T,v.Last,{skipElements:[u.relatedTarget]})}})})}let s=E(!1);function F(u){u.key===\"Tab\"&&(s.value=!0,requestAnimationFrame(()=>{s.value=!1}))}function H(u){if(!e.value)return;let T=B(t.containers);c(o)instanceof HTMLElement&&T.add(c(o));let d=u.relatedTarget;d instanceof HTMLElement&&d.dataset.headlessuiFocusGuard!==\"true\"&&(N(T,d)||(s.value?b(c(o),P(f.value,{[y.Forwards]:()=>v.Next,[y.Backwards]:()=>v.Previous})|v.WrapAround,{relativeTo:u.target}):u.target instanceof HTMLElement&&p(u.target)))}return()=>{let u={},T={ref:o,onKeydown:F,onFocusout:H},{features:d,initialFocus:w,containers:Q,...O}=t;return R(j,[Boolean(d&4)&&R(D,{as:\"button\",type:\"button\",\"data-headlessui-focus-guard\":!0,onFocus:a,features:k.Focusable}),G({ourProps:T,theirProps:{...n,...O},slot:u,attrs:n,slots:r,name:\"FocusTrap\"}),Boolean(d&4)&&R(D,{as:\"button\",type:\"button\",\"data-headlessui-focus-guard\":!0,onFocus:a,features:k.Focusable})])}}}),{features:A});function W(t){let n=E(C.slice());return g([t],([r],[l])=>{l===!0&&r===!1?S(()=>{n.value.splice(0)}):l===!1&&r===!0&&(n.value=C.slice())},{flush:\"post\"}),()=>{var r;return(r=n.value.find(l=>l!=null&&l.isConnected))!=null?r:null}}function $({ownerDocument:t},n){let r=W(n);M(()=>{K(()=>{var l,o;n.value||((l=t.value)==null?void 0:l.activeElement)===((o=t.value)==null?void 0:o.body)&&p(r())},{flush:\"post\"})}),h(()=>{n.value&&p(r())})}function z({ownerDocument:t,container:n,initialFocus:r},l){let o=E(null),i=E(!1);return M(()=>i.value=!0),h(()=>i.value=!1),M(()=>{g([n,r,l],(e,m)=>{if(e.every((a,s)=>(m==null?void 0:m[s])===a)||!l.value)return;let f=c(n);f&&S(()=>{var F,H;if(!i.value)return;let a=c(r),s=(F=t.value)==null?void 0:F.activeElement;if(a){if(a===s){o.value=s;return}}else if(f.contains(s)){o.value=s;return}a?p(a):b(f,v.First|v.NoScroll)===q.Error&&console.warn(\"There are no focusable elements inside the <FocusTrap />\"),o.value=(H=t.value)==null?void 0:H.activeElement})},{immediate:!0,flush:\"post\"})}),o}function J({ownerDocument:t,container:n,containers:r,previousActiveElement:l},o){var i;U((i=t.value)==null?void 0:i.defaultView,\"focus\",e=>{if(!o.value)return;let m=B(r);c(n)instanceof HTMLElement&&m.add(c(n));let f=l.value;if(!f)return;let a=e.target;a&&a instanceof HTMLElement?N(m,a)?(l.value=a,p(a)):(e.preventDefault(),e.stopPropagation(),p(f)):p(l.value)},!0)}function N(t,n){for(let r of t)if(r.contains(n))return!0;return!1}export{ue as FocusTrap};\n","import{onUnmounted as o,shallowRef as n}from\"vue\";function m(t){let e=n(t.getSnapshot());return o(t.subscribe(()=>{e.value=t.getSnapshot()})),e}export{m as useStore};\n","function a(o,r){let t=o(),n=new Set;return{getSnapshot(){return t},subscribe(e){return n.add(e),()=>n.delete(e)},dispatch(e,...s){let i=r[e].call(t,...s);i&&(t=i,n.forEach(c=>c()))}}}export{a as createStore};\n","function c(){let o;return{before({doc:e}){var l;let n=e.documentElement;o=((l=e.defaultView)!=null?l:window).innerWidth-n.clientWidth},after({doc:e,d:n}){let t=e.documentElement,l=t.clientWidth-t.offsetWidth,r=o-l;n.style(t,\"paddingRight\",`${r}px`)}}}export{c as adjustScrollbarPadding};\n","import{disposables as m}from'../../utils/disposables.js';import{isIOS as u}from'../../utils/platform.js';function w(){return u()?{before({doc:r,d:n,meta:c}){function o(a){return c.containers.flatMap(l=>l()).some(l=>l.contains(a))}n.microTask(()=>{var s;if(window.getComputedStyle(r.documentElement).scrollBehavior!==\"auto\"){let t=m();t.style(r.documentElement,\"scrollBehavior\",\"auto\"),n.add(()=>n.microTask(()=>t.dispose()))}let a=(s=window.scrollY)!=null?s:window.pageYOffset,l=null;n.addEventListener(r,\"click\",t=>{if(t.target instanceof HTMLElement)try{let e=t.target.closest(\"a\");if(!e)return;let{hash:f}=new URL(e.href),i=r.querySelector(f);i&&!o(i)&&(l=i)}catch{}},!0),n.addEventListener(r,\"touchstart\",t=>{if(t.target instanceof HTMLElement)if(o(t.target)){let e=t.target;for(;e.parentElement&&o(e.parentElement);)e=e.parentElement;n.style(e,\"overscrollBehavior\",\"contain\")}else n.style(t.target,\"touchAction\",\"none\")}),n.addEventListener(r,\"touchmove\",t=>{if(t.target instanceof HTMLElement)if(o(t.target)){let e=t.target;for(;e.parentElement&&e.dataset.headlessuiPortal!==\"\"&&!(e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth);)e=e.parentElement;e.dataset.headlessuiPortal===\"\"&&t.preventDefault()}else t.preventDefault()},{passive:!1}),n.add(()=>{var e;let t=(e=window.scrollY)!=null?e:window.pageYOffset;a!==t&&window.scrollTo(0,a),l&&l.isConnected&&(l.scrollIntoView({block:\"nearest\"}),l=null)})})}}:{}}export{w as handleIOSLocking};\n","function l(){return{before({doc:e,d:o}){o.style(e.documentElement,\"overflow\",\"hidden\")}}}export{l as preventScroll};\n","import{disposables as s}from'../../utils/disposables.js';import{createStore as i}from'../../utils/store.js';import{adjustScrollbarPadding as l}from'./adjust-scrollbar-padding.js';import{handleIOSLocking as d}from'./handle-ios-locking.js';import{preventScroll as p}from'./prevent-scroll.js';function m(e){let n={};for(let t of e)Object.assign(n,t(n));return n}let a=i(()=>new Map,{PUSH(e,n){var o;let t=(o=this.get(e))!=null?o:{doc:e,count:0,d:s(),meta:new Set};return t.count++,t.meta.add(n),this.set(e,t),this},POP(e,n){let t=this.get(e);return t&&(t.count--,t.meta.delete(n)),this},SCROLL_PREVENT({doc:e,d:n,meta:t}){let o={doc:e,d:n,meta:m(t)},c=[d(),l(),p()];c.forEach(({before:r})=>r==null?void 0:r(o)),c.forEach(({after:r})=>r==null?void 0:r(o))},SCROLL_ALLOW({d:e}){e.dispose()},TEARDOWN({doc:e}){this.delete(e)}});a.subscribe(()=>{let e=a.getSnapshot(),n=new Map;for(let[t]of e)n.set(t,t.documentElement.style.overflow);for(let t of e.values()){let o=n.get(t.doc)===\"hidden\",c=t.count!==0;(c&&!o||!c&&o)&&a.dispatch(t.count>0?\"SCROLL_PREVENT\":\"SCROLL_ALLOW\",t),t.count===0&&a.dispatch(\"TEARDOWN\",t)}});export{a as overflows};\n","import{computed as p,watch as s}from\"vue\";import{useStore as v}from'../../hooks/use-store.js';import{overflows as u}from'./overflow-store.js';function d(t,a,n){let i=v(u),l=p(()=>{let e=t.value?i.value.get(t.value):void 0;return e?e.count>0:!1});return s([t,a],([e,m],[r],o)=>{if(!e||!m)return;u.dispatch(\"PUSH\",e,n);let f=!1;o(()=>{f||(u.dispatch(\"POP\",r!=null?r:e,n),f=!0)})},{immediate:!0}),l}export{d as useDocumentOverflowLockedEffect};\n","import{ref as m,watchEffect as s}from\"vue\";import{dom as h}from'../utils/dom.js';let i=new Map,t=new Map;function E(d,f=m(!0)){s(o=>{var a;if(!f.value)return;let e=h(d);if(!e)return;o(function(){var u;if(!e)return;let r=(u=t.get(e))!=null?u:1;if(r===1?t.delete(e):t.set(e,r-1),r!==1)return;let n=i.get(e);n&&(n[\"aria-hidden\"]===null?e.removeAttribute(\"aria-hidden\"):e.setAttribute(\"aria-hidden\",n[\"aria-hidden\"]),e.inert=n.inert,i.delete(e))});let l=(a=t.get(e))!=null?a:0;t.set(e,l+1),l===0&&(i.set(e,{\"aria-hidden\":e.getAttribute(\"aria-hidden\"),inert:e.inert}),e.setAttribute(\"aria-hidden\",\"true\"),e.inert=!0)})}export{E as useInert};\n","import{h as m,ref as s}from\"vue\";import{Features as d,Hidden as c}from'../internal/hidden.js';import{dom as T}from'../utils/dom.js';import{getOwnerDocument as E}from'../utils/owner.js';function N({defaultContainers:o=[],portals:i,mainTreeNodeRef:H}={}){let t=s(null),r=E(t);function u(){var l,f,a;let n=[];for(let e of o)e!==null&&(e instanceof HTMLElement?n.push(e):\"value\"in e&&e.value instanceof HTMLElement&&n.push(e.value));if(i!=null&&i.value)for(let e of i.value)n.push(e);for(let e of(l=r==null?void 0:r.querySelectorAll(\"html > *, body > *\"))!=null?l:[])e!==document.body&&e!==document.head&&e instanceof HTMLElement&&e.id!==\"headlessui-portal-root\"&&(e.contains(T(t))||e.contains((a=(f=T(t))==null?void 0:f.getRootNode())==null?void 0:a.host)||n.some(M=>e.contains(M))||n.push(e));return n}return{resolveContainers:u,contains(n){return u().some(l=>l.contains(n))},mainTreeNodeRef:t,MainTreeNode(){return H!=null?null:m(c,{features:d.Hidden,ref:t})}}}function v(){let o=s(null);return{mainTreeNodeRef:o,MainTreeNode(){return m(c,{features:d.Hidden,ref:o})}}}export{v as useMainTreeNode,N as useRootContainers};\n","import{defineComponent as l,inject as a,provide as c}from\"vue\";import{render as p}from'../utils/render.js';let e=Symbol(\"ForcePortalRootContext\");function s(){return a(e,!1)}let u=l({name:\"ForcePortalRoot\",props:{as:{type:[Object,String],default:\"template\"},force:{type:Boolean,default:!1}},setup(o,{slots:t,attrs:r}){return c(e,o.force),()=>{let{force:f,...n}=o;return p({theirProps:n,ourProps:{},slot:{},slots:t,attrs:r,name:\"ForcePortalRoot\"})}}});export{u as ForcePortalRoot,s as usePortalRoot};\n","import{inject as f,onMounted as m,onUnmounted as l,provide as c,watch as p}from\"vue\";let u=Symbol(\"StackContext\");var s=(e=>(e[e.Add=0]=\"Add\",e[e.Remove=1]=\"Remove\",e))(s||{});function y(){return f(u,()=>{})}function R({type:o,enabled:r,element:e,onUpdate:i}){let a=y();function t(...n){i==null||i(...n),a(...n)}m(()=>{p(r,(n,d)=>{n?t(0,o,e):d===!0&&t(1,o,e)},{immediate:!0,flush:\"sync\"})}),l(()=>{r.value&&t(1,o,e)}),c(u,t)}export{s as StackMessage,y as useStackContext,R as useStackProvider};\n","import{computed as x,defineComponent as y,inject as R,onMounted as v,onUnmounted as D,provide as j,ref as p,unref as C}from\"vue\";import{useId as h}from'../../hooks/use-id.js';import{render as b}from'../../utils/render.js';let u=Symbol(\"DescriptionContext\");function w(){let t=R(u,null);if(t===null)throw new Error(\"Missing parent\");return t}function k({slot:t=p({}),name:o=\"Description\",props:s={}}={}){let e=p([]);function r(n){return e.value.push(n),()=>{let i=e.value.indexOf(n);i!==-1&&e.value.splice(i,1)}}return j(u,{register:r,slot:t,name:o,props:s}),x(()=>e.value.length>0?e.value.join(\" \"):void 0)}let K=y({name:\"Description\",props:{as:{type:[Object,String],default:\"p\"},id:{type:String,default:null}},setup(t,{attrs:o,slots:s}){var n;let e=(n=t.id)!=null?n:`headlessui-description-${h()}`,r=w();return v(()=>D(r.register(e))),()=>{let{name:i=\"Description\",slot:l=p({}),props:d={}}=r,{...c}=t,f={...Object.entries(d).reduce((a,[g,m])=>Object.assign(a,{[g]:C(m)}),{}),id:e};return b({ourProps:f,theirProps:c,slot:l.value,attrs:o,slots:s,name:i})}}});export{K as Description,k as useDescriptions};\n","import{computed as M,defineComponent as s,getCurrentInstance as L,h as j,inject as f,onMounted as w,onUnmounted as y,provide as T,reactive as I,ref as p,Teleport as b,watch as R,watchEffect as G}from\"vue\";import{usePortalRoot as O}from'../../internal/portal-force-root.js';import{dom as D}from'../../utils/dom.js';import{getOwnerDocument as E}from'../../utils/owner.js';import{render as h}from'../../utils/render.js';function x(r){let e=E(r);if(!e){if(r===null)return null;throw new Error(`[Headless UI]: Cannot find ownerDocument for contextElement: ${r}`)}let u=e.getElementById(\"headlessui-portal-root\");if(u)return u;let t=e.createElement(\"div\");return t.setAttribute(\"id\",\"headlessui-portal-root\"),e.body.appendChild(t)}let _=s({name:\"Portal\",props:{as:{type:[Object,String],default:\"div\"}},setup(r,{slots:e,attrs:u}){let t=p(null),i=M(()=>E(t)),l=O(),n=f(C,null),o=p(l===!0||n==null?x(t.value):n.resolveTarget()),d=p(!1);w(()=>{d.value=!0}),G(()=>{l||n!=null&&(o.value=n.resolveTarget())});let c=f(m,null),v=!1,H=L();return R(t,()=>{if(v||!c)return;let a=D(t);a&&(y(c.register(a),H),v=!0)}),y(()=>{var g,P;let a=(g=i.value)==null?void 0:g.getElementById(\"headlessui-portal-root\");a&&o.value===a&&o.value.children.length<=0&&((P=o.value.parentElement)==null||P.removeChild(o.value))}),()=>{if(!d.value||o.value===null)return null;let a={ref:t,\"data-headlessui-portal\":\"\"};return j(b,{to:o.value},h({ourProps:a,theirProps:r,slot:{},attrs:u,slots:e,name:\"Portal\"}))}}}),m=Symbol(\"PortalParentContext\");function A(){let r=f(m,null),e=p([]);function u(l){return e.value.push(l),r&&r.register(l),()=>t(l)}function t(l){let n=e.value.indexOf(l);n!==-1&&e.value.splice(n,1),r&&r.unregister(l)}let i={register:u,unregister:t,portals:e};return[e,s({name:\"PortalWrapper\",setup(l,{slots:n}){return T(m,i),()=>{var o;return(o=n.default)==null?void 0:o.call(n)}}})]}let C=Symbol(\"PortalGroupContext\"),N=s({name:\"PortalGroup\",props:{as:{type:[Object,String],default:\"template\"},target:{type:Object,default:null}},setup(r,{attrs:e,slots:u}){let t=I({resolveTarget(){return r.target}});return T(C,t),()=>{let{target:i,...l}=r;return h({theirProps:l,ourProps:{},slot:{},attrs:e,slots:u,name:\"PortalGroup\"})}}});export{_ as Portal,N as PortalGroup,A as useNestedPortals};\n","import{computed as o,defineComponent as O,h as v,inject as W,nextTick as se,onMounted as $,onUnmounted as de,provide as pe,ref as y,watchEffect as fe}from\"vue\";import{FocusTrap as P}from'../../components/focus-trap/focus-trap.js';import{useDocumentOverflowLockedEffect as ge}from'../../hooks/document-overflow/use-document-overflow.js';import{useEventListener as ce}from'../../hooks/use-event-listener.js';import{useId as b}from'../../hooks/use-id.js';import{useInert as Y}from'../../hooks/use-inert.js';import{useOutsideClick as ve}from'../../hooks/use-outside-click.js';import{useRootContainers as me}from'../../hooks/use-root-containers.js';import{State as I,useOpenClosed as De}from'../../internal/open-closed.js';import{ForcePortalRoot as F}from'../../internal/portal-force-root.js';import{StackMessage as z,useStackProvider as ye}from'../../internal/stack-context.js';import{Keys as Se}from'../../keyboard.js';import{dom as j}from'../../utils/dom.js';import{match as G}from'../../utils/match.js';import{getOwnerDocument as he}from'../../utils/owner.js';import{Features as V,render as C}from'../../utils/render.js';import{Description as Oe,useDescriptions as Pe}from'../description/description.js';import{Portal as J,PortalGroup as be,useNestedPortals as Ce}from'../portal/portal.js';var Te=(l=>(l[l.Open=0]=\"Open\",l[l.Closed=1]=\"Closed\",l))(Te||{});let H=Symbol(\"DialogContext\");function T(e){let i=W(H,null);if(i===null){let l=new Error(`<${e} /> is missing a parent <Dialog /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(l,T),l}return i}let A=\"DC8F892D-2EBD-447C-A4C8-A03058436FF4\",We=O({name:\"Dialog\",inheritAttrs:!1,props:{as:{type:[Object,String],default:\"div\"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},open:{type:[Boolean,String],default:A},initialFocus:{type:Object,default:null},id:{type:String,default:null},role:{type:String,default:\"dialog\"}},emits:{close:e=>!0},setup(e,{emit:i,attrs:l,slots:d,expose:s}){var _,q;let n=(_=e.id)!=null?_:`headlessui-dialog-${b()}`,u=y(!1);$(()=>{u.value=!0});let r=!1,g=o(()=>e.role===\"dialog\"||e.role===\"alertdialog\"?e.role:(r||(r=!0,console.warn(`Invalid role [${g}] passed to <Dialog />. Only \\`dialog\\` and and \\`alertdialog\\` are supported. Using \\`dialog\\` instead.`)),\"dialog\")),D=y(0),S=De(),R=o(()=>e.open===A&&S!==null?(S.value&I.Open)===I.Open:e.open),m=y(null),E=o(()=>he(m));if(s({el:m,$el:m}),!(e.open!==A||S!==null))throw new Error(\"You forgot to provide an `open` prop to the `Dialog`.\");if(typeof R.value!=\"boolean\")throw new Error(`You provided an \\`open\\` prop to the \\`Dialog\\`, but the value is not a boolean. Received: ${R.value===A?void 0:e.open}`);let c=o(()=>u.value&&R.value?0:1),k=o(()=>c.value===0),w=o(()=>D.value>1),N=W(H,null)!==null,[Q,X]=Ce(),{resolveContainers:B,mainTreeNodeRef:K,MainTreeNode:Z}=me({portals:Q,defaultContainers:[o(()=>{var t;return(t=h.panelRef.value)!=null?t:m.value})]}),ee=o(()=>w.value?\"parent\":\"leaf\"),U=o(()=>S!==null?(S.value&I.Closing)===I.Closing:!1),te=o(()=>N||U.value?!1:k.value),le=o(()=>{var t,a,p;return(p=Array.from((a=(t=E.value)==null?void 0:t.querySelectorAll(\"body > *\"))!=null?a:[]).find(f=>f.id===\"headlessui-portal-root\"?!1:f.contains(j(K))&&f instanceof HTMLElement))!=null?p:null});Y(le,te);let ae=o(()=>w.value?!0:k.value),oe=o(()=>{var t,a,p;return(p=Array.from((a=(t=E.value)==null?void 0:t.querySelectorAll(\"[data-headlessui-portal]\"))!=null?a:[]).find(f=>f.contains(j(K))&&f instanceof HTMLElement))!=null?p:null});Y(oe,ae),ye({type:\"Dialog\",enabled:o(()=>c.value===0),element:m,onUpdate:(t,a)=>{if(a===\"Dialog\")return G(t,{[z.Add]:()=>D.value+=1,[z.Remove]:()=>D.value-=1})}});let re=Pe({name:\"DialogDescription\",slot:o(()=>({open:R.value}))}),M=y(null),h={titleId:M,panelRef:y(null),dialogState:c,setTitleId(t){M.value!==t&&(M.value=t)},close(){i(\"close\",!1)}};pe(H,h);let ne=o(()=>!(!k.value||w.value));ve(B,(t,a)=>{h.close(),se(()=>a==null?void 0:a.focus())},ne);let ie=o(()=>!(w.value||c.value!==0));ce((q=E.value)==null?void 0:q.defaultView,\"keydown\",t=>{ie.value&&(t.defaultPrevented||t.key===Se.Escape&&(t.preventDefault(),t.stopPropagation(),h.close()))});let ue=o(()=>!(U.value||c.value!==0||N));return ge(E,ue,t=>{var a;return{containers:[...(a=t.containers)!=null?a:[],B]}}),fe(t=>{if(c.value!==0)return;let a=j(m);if(!a)return;let p=new ResizeObserver(f=>{for(let L of f){let x=L.target.getBoundingClientRect();x.x===0&&x.y===0&&x.width===0&&x.height===0&&h.close()}});p.observe(a),t(()=>p.disconnect())}),()=>{let{open:t,initialFocus:a,...p}=e,f={...l,ref:m,id:n,role:g.value,\"aria-modal\":c.value===0?!0:void 0,\"aria-labelledby\":M.value,\"aria-describedby\":re.value},L={open:c.value===0};return v(F,{force:!0},()=>[v(J,()=>v(be,{target:m.value},()=>v(F,{force:!1},()=>v(P,{initialFocus:a,containers:B,features:k.value?G(ee.value,{parent:P.features.RestoreFocus,leaf:P.features.All&~P.features.FocusLock}):P.features.None},()=>v(X,{},()=>C({ourProps:f,theirProps:{...p,...l},slot:L,attrs:l,slots:d,visible:c.value===0,features:V.RenderStrategy|V.Static,name:\"Dialog\"})))))),v(Z)])}}}),Ye=O({name:\"DialogOverlay\",props:{as:{type:[Object,String],default:\"div\"},id:{type:String,default:null}},setup(e,{attrs:i,slots:l}){var u;let d=(u=e.id)!=null?u:`headlessui-dialog-overlay-${b()}`,s=T(\"DialogOverlay\");function n(r){r.target===r.currentTarget&&(r.preventDefault(),r.stopPropagation(),s.close())}return()=>{let{...r}=e;return C({ourProps:{id:d,\"aria-hidden\":!0,onClick:n},theirProps:r,slot:{open:s.dialogState.value===0},attrs:i,slots:l,name:\"DialogOverlay\"})}}}),ze=O({name:\"DialogBackdrop\",props:{as:{type:[Object,String],default:\"div\"},id:{type:String,default:null}},inheritAttrs:!1,setup(e,{attrs:i,slots:l,expose:d}){var r;let s=(r=e.id)!=null?r:`headlessui-dialog-backdrop-${b()}`,n=T(\"DialogBackdrop\"),u=y(null);return d({el:u,$el:u}),$(()=>{if(n.panelRef.value===null)throw new Error(\"A <DialogBackdrop /> component is being used, but a <DialogPanel /> component is missing.\")}),()=>{let{...g}=e,D={id:s,ref:u,\"aria-hidden\":!0};return v(F,{force:!0},()=>v(J,()=>C({ourProps:D,theirProps:{...i,...g},slot:{open:n.dialogState.value===0},attrs:i,slots:l,name:\"DialogBackdrop\"})))}}}),Ge=O({name:\"DialogPanel\",props:{as:{type:[Object,String],default:\"div\"},id:{type:String,default:null}},setup(e,{attrs:i,slots:l,expose:d}){var r;let s=(r=e.id)!=null?r:`headlessui-dialog-panel-${b()}`,n=T(\"DialogPanel\");d({el:n.panelRef,$el:n.panelRef});function u(g){g.stopPropagation()}return()=>{let{...g}=e,D={id:s,ref:n.panelRef,onClick:u};return C({ourProps:D,theirProps:g,slot:{open:n.dialogState.value===0},attrs:i,slots:l,name:\"DialogPanel\"})}}}),Ve=O({name:\"DialogTitle\",props:{as:{type:[Object,String],default:\"h2\"},id:{type:String,default:null}},setup(e,{attrs:i,slots:l}){var n;let d=(n=e.id)!=null?n:`headlessui-dialog-title-${b()}`,s=T(\"DialogTitle\");return $(()=>{s.setTitleId(d),de(()=>s.setTitleId(null))}),()=>{let{...u}=e;return C({ourProps:{id:d},theirProps:u,slot:{open:s.dialogState.value===0},attrs:i,slots:l,name:\"DialogTitle\"})}}}),Je=Oe;export{We as Dialog,ze as DialogBackdrop,Je as DialogDescription,Ye as DialogOverlay,Ge as DialogPanel,Ve as DialogTitle};\n","function l(r){let e={called:!1};return(...t)=>{if(!e.called)return e.called=!0,r(...t)}}export{l as once};\n","import{disposables as p}from'../../../utils/disposables.js';import{once as f}from'../../../utils/once.js';function m(e,...t){e&&t.length>0&&e.classList.add(...t)}function d(e,...t){e&&t.length>0&&e.classList.remove(...t)}var g=(i=>(i.Finished=\"finished\",i.Cancelled=\"cancelled\",i))(g||{});function F(e,t){let i=p();if(!e)return i.dispose;let{transitionDuration:n,transitionDelay:a}=getComputedStyle(e),[l,s]=[n,a].map(o=>{let[u=0]=o.split(\",\").filter(Boolean).map(r=>r.includes(\"ms\")?parseFloat(r):parseFloat(r)*1e3).sort((r,c)=>c-r);return u});return l!==0?i.setTimeout(()=>t(\"finished\"),l+s):t(\"finished\"),i.add(()=>t(\"cancelled\")),i.dispose}function L(e,t,i,n,a,l){let s=p(),o=l!==void 0?f(l):()=>{};return d(e,...a),m(e,...t,...i),s.nextFrame(()=>{d(e,...i),m(e,...n),s.add(F(e,u=>(d(e,...n,...t),m(e,...a),o(u))))}),s.add(()=>d(e,...t,...i,...n,...a)),s.add(()=>o(\"cancelled\")),s.dispose}export{g as Reason,L as transition};\n","import{computed as w,defineComponent as K,h as k,inject as F,normalizeClass as ae,onMounted as C,onUnmounted as z,provide as B,ref as m,watch as le,watchEffect as x}from\"vue\";import{useId as ie}from'../../hooks/use-id.js';import{hasOpenClosed as se,State as u,useOpenClosed as oe,useOpenClosedProvider as ue}from'../../internal/open-closed.js';import{dom as $}from'../../utils/dom.js';import{env as fe}from'../../utils/env.js';import{match as O}from'../../utils/match.js';import{Features as de,omit as ve,render as q,RenderStrategy as T}from'../../utils/render.js';import{Reason as G,transition as J}from'./utils/transition.js';function g(e=\"\"){return e.split(/\\s+/).filter(t=>t.length>1)}let R=Symbol(\"TransitionContext\");var pe=(a=>(a.Visible=\"visible\",a.Hidden=\"hidden\",a))(pe||{});function me(){return F(R,null)!==null}function Te(){let e=F(R,null);if(e===null)throw new Error(\"A <TransitionChild /> is used but it is missing a parent <TransitionRoot />.\");return e}function ge(){let e=F(N,null);if(e===null)throw new Error(\"A <TransitionChild /> is used but it is missing a parent <TransitionRoot />.\");return e}let N=Symbol(\"NestingContext\");function L(e){return\"children\"in e?L(e.children):e.value.filter(({state:t})=>t===\"visible\").length>0}function Q(e){let t=m([]),a=m(!1);C(()=>a.value=!0),z(()=>a.value=!1);function s(n,r=T.Hidden){let l=t.value.findIndex(({id:f})=>f===n);l!==-1&&(O(r,{[T.Unmount](){t.value.splice(l,1)},[T.Hidden](){t.value[l].state=\"hidden\"}}),!L(t)&&a.value&&(e==null||e()))}function h(n){let r=t.value.find(({id:l})=>l===n);return r?r.state!==\"visible\"&&(r.state=\"visible\"):t.value.push({id:n,state:\"visible\"}),()=>s(n,T.Unmount)}return{children:t,register:h,unregister:s}}let W=de.RenderStrategy,he=K({props:{as:{type:[Object,String],default:\"div\"},show:{type:[Boolean],default:null},unmount:{type:[Boolean],default:!0},appear:{type:[Boolean],default:!1},enter:{type:[String],default:\"\"},enterFrom:{type:[String],default:\"\"},enterTo:{type:[String],default:\"\"},entered:{type:[String],default:\"\"},leave:{type:[String],default:\"\"},leaveFrom:{type:[String],default:\"\"},leaveTo:{type:[String],default:\"\"}},emits:{beforeEnter:()=>!0,afterEnter:()=>!0,beforeLeave:()=>!0,afterLeave:()=>!0},setup(e,{emit:t,attrs:a,slots:s,expose:h}){let n=m(0);function r(){n.value|=u.Opening,t(\"beforeEnter\")}function l(){n.value&=~u.Opening,t(\"afterEnter\")}function f(){n.value|=u.Closing,t(\"beforeLeave\")}function S(){n.value&=~u.Closing,t(\"afterLeave\")}if(!me()&&se())return()=>k(Se,{...e,onBeforeEnter:r,onAfterEnter:l,onBeforeLeave:f,onAfterLeave:S},s);let d=m(null),y=w(()=>e.unmount?T.Unmount:T.Hidden);h({el:d,$el:d});let{show:v,appear:A}=Te(),{register:D,unregister:H}=ge(),i=m(v.value?\"visible\":\"hidden\"),I={value:!0},c=ie(),b={value:!1},P=Q(()=>{!b.value&&i.value!==\"hidden\"&&(i.value=\"hidden\",H(c),S())});C(()=>{let o=D(c);z(o)}),x(()=>{if(y.value===T.Hidden&&c){if(v.value&&i.value!==\"visible\"){i.value=\"visible\";return}O(i.value,{[\"hidden\"]:()=>H(c),[\"visible\"]:()=>D(c)})}});let j=g(e.enter),M=g(e.enterFrom),X=g(e.enterTo),_=g(e.entered),Y=g(e.leave),Z=g(e.leaveFrom),ee=g(e.leaveTo);C(()=>{x(()=>{if(i.value===\"visible\"){let o=$(d);if(o instanceof Comment&&o.data===\"\")throw new Error(\"Did you forget to passthrough the `ref` to the actual DOM node?\")}})});function te(o){let E=I.value&&!A.value,p=$(d);!p||!(p instanceof HTMLElement)||E||(b.value=!0,v.value&&r(),v.value||f(),o(v.value?J(p,j,M,X,_,V=>{b.value=!1,V===G.Finished&&l()}):J(p,Y,Z,ee,_,V=>{b.value=!1,V===G.Finished&&(L(P)||(i.value=\"hidden\",H(c),S()))})))}return C(()=>{le([v],(o,E,p)=>{te(p),I.value=!1},{immediate:!0})}),B(N,P),ue(w(()=>O(i.value,{[\"visible\"]:u.Open,[\"hidden\"]:u.Closed})|n.value)),()=>{let{appear:o,show:E,enter:p,enterFrom:V,enterTo:Ce,entered:ye,leave:be,leaveFrom:Ee,leaveTo:Ve,...U}=e,ne={ref:d},re={...U,...A.value&&v.value&&fe.isServer?{class:ae([a.class,U.class,...j,...M])}:{}};return q({theirProps:re,ourProps:ne,slot:{},slots:s,attrs:a,features:W,visible:i.value===\"visible\",name:\"TransitionChild\"})}}}),ce=he,Se=K({inheritAttrs:!1,props:{as:{type:[Object,String],default:\"div\"},show:{type:[Boolean],default:null},unmount:{type:[Boolean],default:!0},appear:{type:[Boolean],default:!1},enter:{type:[String],default:\"\"},enterFrom:{type:[String],default:\"\"},enterTo:{type:[String],default:\"\"},entered:{type:[String],default:\"\"},leave:{type:[String],default:\"\"},leaveFrom:{type:[String],default:\"\"},leaveTo:{type:[String],default:\"\"}},emits:{beforeEnter:()=>!0,afterEnter:()=>!0,beforeLeave:()=>!0,afterLeave:()=>!0},setup(e,{emit:t,attrs:a,slots:s}){let h=oe(),n=w(()=>e.show===null&&h!==null?(h.value&u.Open)===u.Open:e.show);x(()=>{if(![!0,!1].includes(n.value))throw new Error('A <Transition /> is used but it is missing a `:show=\"true | false\"` prop.')});let r=m(n.value?\"visible\":\"hidden\"),l=Q(()=>{r.value=\"hidden\"}),f=m(!0),S={show:n,appear:w(()=>e.appear||!f.value)};return C(()=>{x(()=>{f.value=!1,n.value?r.value=\"visible\":L(l)||(r.value=\"hidden\")})}),B(N,l),B(R,S),()=>{let d=ve(e,[\"show\",\"appear\",\"unmount\",\"onBeforeEnter\",\"onBeforeLeave\",\"onAfterEnter\",\"onAfterLeave\"]),y={unmount:e.unmount};return q({ourProps:{...y,as:\"template\"},theirProps:{},slot:{},slots:{...s,default:()=>[k(ce,{onBeforeEnter:()=>t(\"beforeEnter\"),onAfterEnter:()=>t(\"afterEnter\"),onBeforeLeave:()=>t(\"beforeLeave\"),onAfterLeave:()=>t(\"afterLeave\"),...a,...y,...d},s.default)]},attrs:{},features:W,visible:r.value===\"visible\",name:\"Transition\"})}}});export{he as TransitionChild,Se as TransitionRoot};\n","<script setup lang=\"ts\">\nimport { useI18n } from 'vue-i18n';\nimport IconSearch from '~icons/carbon/search';\n\nconst props = defineProps<{\n  searchFn?: (event?: Event) => void;\n  modelValue: string;\n  placeholder?: string;\n}>();\n\nconst emit = defineEmits<{\n  (e: 'update:modelValue', modelValue: string): void;\n}>();\n\nconst { t } = useI18n();\n\nfunction onInput(event: Event) {\n  if (event.target instanceof HTMLInputElement) {\n    emit('update:modelValue', event.target.value);\n  }\n\n  props.searchFn && props.searchFn(event);\n}\n</script>\n\n<template>\n  <div class=\"relative\">\n    <IconSearch\n      class=\"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-sm text-new-gray-600 dark:text-white/50\"\n      aria-hidden=\"true\"\n    />\n\n    <input\n      id=\"posts-search\"\n      :value=\"modelValue\"\n      type=\"search\"\n      :placeholder=\"placeholder || `${t('general.search_placeholder')}...`\"\n      autocomplete=\"off\"\n      autocapitalize=\"off\"\n      autocorrect=\"off\"\n      spellcheck=\"false\"\n      aria-label=\"Search your projects\"\n      class=\"w-full rounded-full border border-new-gray-100 bg-white py-1.5 pl-9 pr-3 focus:border-new-gray-600 focus:bg-white focus:outline-none dark:border-new-gray-600 dark:bg-gray-675 dark:focus:border-new-gray-300 md:text-sm\"\n      @input=\"onInput\"\n    />\n  </div>\n</template>\n\n<style scoped lang=\"postcss\"></style>\n","/**\n * Fuse.js v7.0.0 - Lightweight fuzzy-search (http://fusejs.io)\n *\n * Copyright (c) 2023 Kiro Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nfunction isArray(value) {\n  return !Array.isArray\n    ? getTag(value) === '[object Array]'\n    : Array.isArray(value)\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/baseToString.js\nconst INFINITY = 1 / 0;\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value\n  }\n  let result = value + '';\n  return result == '0' && 1 / value == -INFINITY ? '-0' : result\n}\n\nfunction toString(value) {\n  return value == null ? '' : baseToString(value)\n}\n\nfunction isString(value) {\n  return typeof value === 'string'\n}\n\nfunction isNumber(value) {\n  return typeof value === 'number'\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/isBoolean.js\nfunction isBoolean(value) {\n  return (\n    value === true ||\n    value === false ||\n    (isObjectLike(value) && getTag(value) == '[object Boolean]')\n  )\n}\n\nfunction isObject(value) {\n  return typeof value === 'object'\n}\n\n// Checks if `value` is object-like.\nfunction isObjectLike(value) {\n  return isObject(value) && value !== null\n}\n\nfunction isDefined(value) {\n  return value !== undefined && value !== null\n}\n\nfunction isBlank(value) {\n  return !value.trim().length\n}\n\n// Gets the `toStringTag` of `value`.\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/getTag.js\nfunction getTag(value) {\n  return value == null\n    ? value === undefined\n      ? '[object Undefined]'\n      : '[object Null]'\n    : Object.prototype.toString.call(value)\n}\n\nconst EXTENDED_SEARCH_UNAVAILABLE = 'Extended search is not available';\n\nconst INCORRECT_INDEX_TYPE = \"Incorrect 'index' type\";\n\nconst LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY = (key) =>\n  `Invalid value for key ${key}`;\n\nconst PATTERN_LENGTH_TOO_LARGE = (max) =>\n  `Pattern length exceeds max of ${max}.`;\n\nconst MISSING_KEY_PROPERTY = (name) => `Missing ${name} property in key`;\n\nconst INVALID_KEY_WEIGHT_VALUE = (key) =>\n  `Property 'weight' in key '${key}' must be a positive integer`;\n\nconst hasOwn = Object.prototype.hasOwnProperty;\n\nclass KeyStore {\n  constructor(keys) {\n    this._keys = [];\n    this._keyMap = {};\n\n    let totalWeight = 0;\n\n    keys.forEach((key) => {\n      let obj = createKey(key);\n\n      this._keys.push(obj);\n      this._keyMap[obj.id] = obj;\n\n      totalWeight += obj.weight;\n    });\n\n    // Normalize weights so that their sum is equal to 1\n    this._keys.forEach((key) => {\n      key.weight /= totalWeight;\n    });\n  }\n  get(keyId) {\n    return this._keyMap[keyId]\n  }\n  keys() {\n    return this._keys\n  }\n  toJSON() {\n    return JSON.stringify(this._keys)\n  }\n}\n\nfunction createKey(key) {\n  let path = null;\n  let id = null;\n  let src = null;\n  let weight = 1;\n  let getFn = null;\n\n  if (isString(key) || isArray(key)) {\n    src = key;\n    path = createKeyPath(key);\n    id = createKeyId(key);\n  } else {\n    if (!hasOwn.call(key, 'name')) {\n      throw new Error(MISSING_KEY_PROPERTY('name'))\n    }\n\n    const name = key.name;\n    src = name;\n\n    if (hasOwn.call(key, 'weight')) {\n      weight = key.weight;\n\n      if (weight <= 0) {\n        throw new Error(INVALID_KEY_WEIGHT_VALUE(name))\n      }\n    }\n\n    path = createKeyPath(name);\n    id = createKeyId(name);\n    getFn = key.getFn;\n  }\n\n  return { path, id, weight, src, getFn }\n}\n\nfunction createKeyPath(key) {\n  return isArray(key) ? key : key.split('.')\n}\n\nfunction createKeyId(key) {\n  return isArray(key) ? key.join('.') : key\n}\n\nfunction get(obj, path) {\n  let list = [];\n  let arr = false;\n\n  const deepGet = (obj, path, index) => {\n    if (!isDefined(obj)) {\n      return\n    }\n    if (!path[index]) {\n      // If there's no path left, we've arrived at the object we care about.\n      list.push(obj);\n    } else {\n      let key = path[index];\n\n      const value = obj[key];\n\n      if (!isDefined(value)) {\n        return\n      }\n\n      // If we're at the last value in the path, and if it's a string/number/bool,\n      // add it to the list\n      if (\n        index === path.length - 1 &&\n        (isString(value) || isNumber(value) || isBoolean(value))\n      ) {\n        list.push(toString(value));\n      } else if (isArray(value)) {\n        arr = true;\n        // Search each item in the array.\n        for (let i = 0, len = value.length; i < len; i += 1) {\n          deepGet(value[i], path, index + 1);\n        }\n      } else if (path.length) {\n        // An object. Recurse further.\n        deepGet(value, path, index + 1);\n      }\n    }\n  };\n\n  // Backwards compatibility (since path used to be a string)\n  deepGet(obj, isString(path) ? path.split('.') : path, 0);\n\n  return arr ? list : list[0]\n}\n\nconst MatchOptions = {\n  // Whether the matches should be included in the result set. When `true`, each record in the result\n  // set will include the indices of the matched characters.\n  // These can consequently be used for highlighting purposes.\n  includeMatches: false,\n  // When `true`, the matching function will continue to the end of a search pattern even if\n  // a perfect match has already been located in the string.\n  findAllMatches: false,\n  // Minimum number of characters that must be matched before a result is considered a match\n  minMatchCharLength: 1\n};\n\nconst BasicOptions = {\n  // When `true`, the algorithm continues searching to the end of the input even if a perfect\n  // match is found before the end of the same input.\n  isCaseSensitive: false,\n  // When true, the matching function will continue to the end of a search pattern even if\n  includeScore: false,\n  // List of properties that will be searched. This also supports nested properties.\n  keys: [],\n  // Whether to sort the result list, by score\n  shouldSort: true,\n  // Default sort function: sort by ascending score, ascending index\n  sortFn: (a, b) =>\n    a.score === b.score ? (a.idx < b.idx ? -1 : 1) : a.score < b.score ? -1 : 1\n};\n\nconst FuzzyOptions = {\n  // Approximately where in the text is the pattern expected to be found?\n  location: 0,\n  // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n  // (of both letters and location), a threshold of '1.0' would match anything.\n  threshold: 0.6,\n  // Determines how close the match must be to the fuzzy location (specified above).\n  // An exact letter match which is 'distance' characters away from the fuzzy location\n  // would score as a complete mismatch. A distance of '0' requires the match be at\n  // the exact location specified, a threshold of '1000' would require a perfect match\n  // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n  distance: 100\n};\n\nconst AdvancedOptions = {\n  // When `true`, it enables the use of unix-like search commands\n  useExtendedSearch: false,\n  // The get function to use when fetching an object's properties.\n  // The default will search nested paths *ie foo.bar.baz*\n  getFn: get,\n  // When `true`, search will ignore `location` and `distance`, so it won't matter\n  // where in the string the pattern appears.\n  // More info: https://fusejs.io/concepts/scoring-theory.html#fuzziness-score\n  ignoreLocation: false,\n  // When `true`, the calculation for the relevance score (used for sorting) will\n  // ignore the field-length norm.\n  // More info: https://fusejs.io/concepts/scoring-theory.html#field-length-norm\n  ignoreFieldNorm: false,\n  // The weight to determine how much field length norm effects scoring.\n  fieldNormWeight: 1\n};\n\nvar Config = {\n  ...BasicOptions,\n  ...MatchOptions,\n  ...FuzzyOptions,\n  ...AdvancedOptions\n};\n\nconst SPACE = /[^ ]+/g;\n\n// Field-length norm: the shorter the field, the higher the weight.\n// Set to 3 decimals to reduce index size.\nfunction norm(weight = 1, mantissa = 3) {\n  const cache = new Map();\n  const m = Math.pow(10, mantissa);\n\n  return {\n    get(value) {\n      const numTokens = value.match(SPACE).length;\n\n      if (cache.has(numTokens)) {\n        return cache.get(numTokens)\n      }\n\n      // Default function is 1/sqrt(x), weight makes that variable\n      const norm = 1 / Math.pow(numTokens, 0.5 * weight);\n\n      // In place of `toFixed(mantissa)`, for faster computation\n      const n = parseFloat(Math.round(norm * m) / m);\n\n      cache.set(numTokens, n);\n\n      return n\n    },\n    clear() {\n      cache.clear();\n    }\n  }\n}\n\nclass FuseIndex {\n  constructor({\n    getFn = Config.getFn,\n    fieldNormWeight = Config.fieldNormWeight\n  } = {}) {\n    this.norm = norm(fieldNormWeight, 3);\n    this.getFn = getFn;\n    this.isCreated = false;\n\n    this.setIndexRecords();\n  }\n  setSources(docs = []) {\n    this.docs = docs;\n  }\n  setIndexRecords(records = []) {\n    this.records = records;\n  }\n  setKeys(keys = []) {\n    this.keys = keys;\n    this._keysMap = {};\n    keys.forEach((key, idx) => {\n      this._keysMap[key.id] = idx;\n    });\n  }\n  create() {\n    if (this.isCreated || !this.docs.length) {\n      return\n    }\n\n    this.isCreated = true;\n\n    // List is Array<String>\n    if (isString(this.docs[0])) {\n      this.docs.forEach((doc, docIndex) => {\n        this._addString(doc, docIndex);\n      });\n    } else {\n      // List is Array<Object>\n      this.docs.forEach((doc, docIndex) => {\n        this._addObject(doc, docIndex);\n      });\n    }\n\n    this.norm.clear();\n  }\n  // Adds a doc to the end of the index\n  add(doc) {\n    const idx = this.size();\n\n    if (isString(doc)) {\n      this._addString(doc, idx);\n    } else {\n      this._addObject(doc, idx);\n    }\n  }\n  // Removes the doc at the specified index of the index\n  removeAt(idx) {\n    this.records.splice(idx, 1);\n\n    // Change ref index of every subsquent doc\n    for (let i = idx, len = this.size(); i < len; i += 1) {\n      this.records[i].i -= 1;\n    }\n  }\n  getValueForItemAtKeyId(item, keyId) {\n    return item[this._keysMap[keyId]]\n  }\n  size() {\n    return this.records.length\n  }\n  _addString(doc, docIndex) {\n    if (!isDefined(doc) || isBlank(doc)) {\n      return\n    }\n\n    let record = {\n      v: doc,\n      i: docIndex,\n      n: this.norm.get(doc)\n    };\n\n    this.records.push(record);\n  }\n  _addObject(doc, docIndex) {\n    let record = { i: docIndex, $: {} };\n\n    // Iterate over every key (i.e, path), and fetch the value at that key\n    this.keys.forEach((key, keyIndex) => {\n      let value = key.getFn ? key.getFn(doc) : this.getFn(doc, key.path);\n\n      if (!isDefined(value)) {\n        return\n      }\n\n      if (isArray(value)) {\n        let subRecords = [];\n        const stack = [{ nestedArrIndex: -1, value }];\n\n        while (stack.length) {\n          const { nestedArrIndex, value } = stack.pop();\n\n          if (!isDefined(value)) {\n            continue\n          }\n\n          if (isString(value) && !isBlank(value)) {\n            let subRecord = {\n              v: value,\n              i: nestedArrIndex,\n              n: this.norm.get(value)\n            };\n\n            subRecords.push(subRecord);\n          } else if (isArray(value)) {\n            value.forEach((item, k) => {\n              stack.push({\n                nestedArrIndex: k,\n                value: item\n              });\n            });\n          } else ;\n        }\n        record.$[keyIndex] = subRecords;\n      } else if (isString(value) && !isBlank(value)) {\n        let subRecord = {\n          v: value,\n          n: this.norm.get(value)\n        };\n\n        record.$[keyIndex] = subRecord;\n      }\n    });\n\n    this.records.push(record);\n  }\n  toJSON() {\n    return {\n      keys: this.keys,\n      records: this.records\n    }\n  }\n}\n\nfunction createIndex(\n  keys,\n  docs,\n  { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n  const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n  myIndex.setKeys(keys.map(createKey));\n  myIndex.setSources(docs);\n  myIndex.create();\n  return myIndex\n}\n\nfunction parseIndex(\n  data,\n  { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n  const { keys, records } = data;\n  const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n  myIndex.setKeys(keys);\n  myIndex.setIndexRecords(records);\n  return myIndex\n}\n\nfunction computeScore$1(\n  pattern,\n  {\n    errors = 0,\n    currentLocation = 0,\n    expectedLocation = 0,\n    distance = Config.distance,\n    ignoreLocation = Config.ignoreLocation\n  } = {}\n) {\n  const accuracy = errors / pattern.length;\n\n  if (ignoreLocation) {\n    return accuracy\n  }\n\n  const proximity = Math.abs(expectedLocation - currentLocation);\n\n  if (!distance) {\n    // Dodge divide by zero error.\n    return proximity ? 1.0 : accuracy\n  }\n\n  return accuracy + proximity / distance\n}\n\nfunction convertMaskToIndices(\n  matchmask = [],\n  minMatchCharLength = Config.minMatchCharLength\n) {\n  let indices = [];\n  let start = -1;\n  let end = -1;\n  let i = 0;\n\n  for (let len = matchmask.length; i < len; i += 1) {\n    let match = matchmask[i];\n    if (match && start === -1) {\n      start = i;\n    } else if (!match && start !== -1) {\n      end = i - 1;\n      if (end - start + 1 >= minMatchCharLength) {\n        indices.push([start, end]);\n      }\n      start = -1;\n    }\n  }\n\n  // (i-1 - start) + 1 => i - start\n  if (matchmask[i - 1] && i - start >= minMatchCharLength) {\n    indices.push([start, i - 1]);\n  }\n\n  return indices\n}\n\n// Machine word size\nconst MAX_BITS = 32;\n\nfunction search(\n  text,\n  pattern,\n  patternAlphabet,\n  {\n    location = Config.location,\n    distance = Config.distance,\n    threshold = Config.threshold,\n    findAllMatches = Config.findAllMatches,\n    minMatchCharLength = Config.minMatchCharLength,\n    includeMatches = Config.includeMatches,\n    ignoreLocation = Config.ignoreLocation\n  } = {}\n) {\n  if (pattern.length > MAX_BITS) {\n    throw new Error(PATTERN_LENGTH_TOO_LARGE(MAX_BITS))\n  }\n\n  const patternLen = pattern.length;\n  // Set starting location at beginning text and initialize the alphabet.\n  const textLen = text.length;\n  // Handle the case when location > text.length\n  const expectedLocation = Math.max(0, Math.min(location, textLen));\n  // Highest score beyond which we give up.\n  let currentThreshold = threshold;\n  // Is there a nearby exact match? (speedup)\n  let bestLocation = expectedLocation;\n\n  // Performance: only computer matches when the minMatchCharLength > 1\n  // OR if `includeMatches` is true.\n  const computeMatches = minMatchCharLength > 1 || includeMatches;\n  // A mask of the matches, used for building the indices\n  const matchMask = computeMatches ? Array(textLen) : [];\n\n  let index;\n\n  // Get all exact matches, here for speed up\n  while ((index = text.indexOf(pattern, bestLocation)) > -1) {\n    let score = computeScore$1(pattern, {\n      currentLocation: index,\n      expectedLocation,\n      distance,\n      ignoreLocation\n    });\n\n    currentThreshold = Math.min(score, currentThreshold);\n    bestLocation = index + patternLen;\n\n    if (computeMatches) {\n      let i = 0;\n      while (i < patternLen) {\n        matchMask[index + i] = 1;\n        i += 1;\n      }\n    }\n  }\n\n  // Reset the best location\n  bestLocation = -1;\n\n  let lastBitArr = [];\n  let finalScore = 1;\n  let binMax = patternLen + textLen;\n\n  const mask = 1 << (patternLen - 1);\n\n  for (let i = 0; i < patternLen; i += 1) {\n    // Scan for the best match; each iteration allows for one more error.\n    // Run a binary search to determine how far from the match location we can stray\n    // at this error level.\n    let binMin = 0;\n    let binMid = binMax;\n\n    while (binMin < binMid) {\n      const score = computeScore$1(pattern, {\n        errors: i,\n        currentLocation: expectedLocation + binMid,\n        expectedLocation,\n        distance,\n        ignoreLocation\n      });\n\n      if (score <= currentThreshold) {\n        binMin = binMid;\n      } else {\n        binMax = binMid;\n      }\n\n      binMid = Math.floor((binMax - binMin) / 2 + binMin);\n    }\n\n    // Use the result from this iteration as the maximum for the next.\n    binMax = binMid;\n\n    let start = Math.max(1, expectedLocation - binMid + 1);\n    let finish = findAllMatches\n      ? textLen\n      : Math.min(expectedLocation + binMid, textLen) + patternLen;\n\n    // Initialize the bit array\n    let bitArr = Array(finish + 2);\n\n    bitArr[finish + 1] = (1 << i) - 1;\n\n    for (let j = finish; j >= start; j -= 1) {\n      let currentLocation = j - 1;\n      let charMatch = patternAlphabet[text.charAt(currentLocation)];\n\n      if (computeMatches) {\n        // Speed up: quick bool to int conversion (i.e, `charMatch ? 1 : 0`)\n        matchMask[currentLocation] = +!!charMatch;\n      }\n\n      // First pass: exact match\n      bitArr[j] = ((bitArr[j + 1] << 1) | 1) & charMatch;\n\n      // Subsequent passes: fuzzy match\n      if (i) {\n        bitArr[j] |=\n          ((lastBitArr[j + 1] | lastBitArr[j]) << 1) | 1 | lastBitArr[j + 1];\n      }\n\n      if (bitArr[j] & mask) {\n        finalScore = computeScore$1(pattern, {\n          errors: i,\n          currentLocation,\n          expectedLocation,\n          distance,\n          ignoreLocation\n        });\n\n        // This match will almost certainly be better than any existing match.\n        // But check anyway.\n        if (finalScore <= currentThreshold) {\n          // Indeed it is\n          currentThreshold = finalScore;\n          bestLocation = currentLocation;\n\n          // Already passed `loc`, downhill from here on in.\n          if (bestLocation <= expectedLocation) {\n            break\n          }\n\n          // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.\n          start = Math.max(1, 2 * expectedLocation - bestLocation);\n        }\n      }\n    }\n\n    // No hope for a (better) match at greater error levels.\n    const score = computeScore$1(pattern, {\n      errors: i + 1,\n      currentLocation: expectedLocation,\n      expectedLocation,\n      distance,\n      ignoreLocation\n    });\n\n    if (score > currentThreshold) {\n      break\n    }\n\n    lastBitArr = bitArr;\n  }\n\n  const result = {\n    isMatch: bestLocation >= 0,\n    // Count exact matches (those with a score of 0) to be \"almost\" exact\n    score: Math.max(0.001, finalScore)\n  };\n\n  if (computeMatches) {\n    const indices = convertMaskToIndices(matchMask, minMatchCharLength);\n    if (!indices.length) {\n      result.isMatch = false;\n    } else if (includeMatches) {\n      result.indices = indices;\n    }\n  }\n\n  return result\n}\n\nfunction createPatternAlphabet(pattern) {\n  let mask = {};\n\n  for (let i = 0, len = pattern.length; i < len; i += 1) {\n    const char = pattern.charAt(i);\n    mask[char] = (mask[char] || 0) | (1 << (len - i - 1));\n  }\n\n  return mask\n}\n\nclass BitapSearch {\n  constructor(\n    pattern,\n    {\n      location = Config.location,\n      threshold = Config.threshold,\n      distance = Config.distance,\n      includeMatches = Config.includeMatches,\n      findAllMatches = Config.findAllMatches,\n      minMatchCharLength = Config.minMatchCharLength,\n      isCaseSensitive = Config.isCaseSensitive,\n      ignoreLocation = Config.ignoreLocation\n    } = {}\n  ) {\n    this.options = {\n      location,\n      threshold,\n      distance,\n      includeMatches,\n      findAllMatches,\n      minMatchCharLength,\n      isCaseSensitive,\n      ignoreLocation\n    };\n\n    this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n\n    this.chunks = [];\n\n    if (!this.pattern.length) {\n      return\n    }\n\n    const addChunk = (pattern, startIndex) => {\n      this.chunks.push({\n        pattern,\n        alphabet: createPatternAlphabet(pattern),\n        startIndex\n      });\n    };\n\n    const len = this.pattern.length;\n\n    if (len > MAX_BITS) {\n      let i = 0;\n      const remainder = len % MAX_BITS;\n      const end = len - remainder;\n\n      while (i < end) {\n        addChunk(this.pattern.substr(i, MAX_BITS), i);\n        i += MAX_BITS;\n      }\n\n      if (remainder) {\n        const startIndex = len - MAX_BITS;\n        addChunk(this.pattern.substr(startIndex), startIndex);\n      }\n    } else {\n      addChunk(this.pattern, 0);\n    }\n  }\n\n  searchIn(text) {\n    const { isCaseSensitive, includeMatches } = this.options;\n\n    if (!isCaseSensitive) {\n      text = text.toLowerCase();\n    }\n\n    // Exact match\n    if (this.pattern === text) {\n      let result = {\n        isMatch: true,\n        score: 0\n      };\n\n      if (includeMatches) {\n        result.indices = [[0, text.length - 1]];\n      }\n\n      return result\n    }\n\n    // Otherwise, use Bitap algorithm\n    const {\n      location,\n      distance,\n      threshold,\n      findAllMatches,\n      minMatchCharLength,\n      ignoreLocation\n    } = this.options;\n\n    let allIndices = [];\n    let totalScore = 0;\n    let hasMatches = false;\n\n    this.chunks.forEach(({ pattern, alphabet, startIndex }) => {\n      const { isMatch, score, indices } = search(text, pattern, alphabet, {\n        location: location + startIndex,\n        distance,\n        threshold,\n        findAllMatches,\n        minMatchCharLength,\n        includeMatches,\n        ignoreLocation\n      });\n\n      if (isMatch) {\n        hasMatches = true;\n      }\n\n      totalScore += score;\n\n      if (isMatch && indices) {\n        allIndices = [...allIndices, ...indices];\n      }\n    });\n\n    let result = {\n      isMatch: hasMatches,\n      score: hasMatches ? totalScore / this.chunks.length : 1\n    };\n\n    if (hasMatches && includeMatches) {\n      result.indices = allIndices;\n    }\n\n    return result\n  }\n}\n\nclass BaseMatch {\n  constructor(pattern) {\n    this.pattern = pattern;\n  }\n  static isMultiMatch(pattern) {\n    return getMatch(pattern, this.multiRegex)\n  }\n  static isSingleMatch(pattern) {\n    return getMatch(pattern, this.singleRegex)\n  }\n  search(/*text*/) {}\n}\n\nfunction getMatch(pattern, exp) {\n  const matches = pattern.match(exp);\n  return matches ? matches[1] : null\n}\n\n// Token: 'file\n\nclass ExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'exact'\n  }\n  static get multiRegex() {\n    return /^=\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^=(.*)$/\n  }\n  search(text) {\n    const isMatch = text === this.pattern;\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, this.pattern.length - 1]\n    }\n  }\n}\n\n// Token: !fire\n\nclass InverseExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'inverse-exact'\n  }\n  static get multiRegex() {\n    return /^!\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^!(.*)$/\n  }\n  search(text) {\n    const index = text.indexOf(this.pattern);\n    const isMatch = index === -1;\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    }\n  }\n}\n\n// Token: ^file\n\nclass PrefixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'prefix-exact'\n  }\n  static get multiRegex() {\n    return /^\\^\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^\\^(.*)$/\n  }\n  search(text) {\n    const isMatch = text.startsWith(this.pattern);\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, this.pattern.length - 1]\n    }\n  }\n}\n\n// Token: !^fire\n\nclass InversePrefixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'inverse-prefix-exact'\n  }\n  static get multiRegex() {\n    return /^!\\^\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^!\\^(.*)$/\n  }\n  search(text) {\n    const isMatch = !text.startsWith(this.pattern);\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    }\n  }\n}\n\n// Token: .file$\n\nclass SuffixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'suffix-exact'\n  }\n  static get multiRegex() {\n    return /^\"(.*)\"\\$$/\n  }\n  static get singleRegex() {\n    return /^(.*)\\$$/\n  }\n  search(text) {\n    const isMatch = text.endsWith(this.pattern);\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [text.length - this.pattern.length, text.length - 1]\n    }\n  }\n}\n\n// Token: !.file$\n\nclass InverseSuffixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'inverse-suffix-exact'\n  }\n  static get multiRegex() {\n    return /^!\"(.*)\"\\$$/\n  }\n  static get singleRegex() {\n    return /^!(.*)\\$$/\n  }\n  search(text) {\n    const isMatch = !text.endsWith(this.pattern);\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    }\n  }\n}\n\nclass FuzzyMatch extends BaseMatch {\n  constructor(\n    pattern,\n    {\n      location = Config.location,\n      threshold = Config.threshold,\n      distance = Config.distance,\n      includeMatches = Config.includeMatches,\n      findAllMatches = Config.findAllMatches,\n      minMatchCharLength = Config.minMatchCharLength,\n      isCaseSensitive = Config.isCaseSensitive,\n      ignoreLocation = Config.ignoreLocation\n    } = {}\n  ) {\n    super(pattern);\n    this._bitapSearch = new BitapSearch(pattern, {\n      location,\n      threshold,\n      distance,\n      includeMatches,\n      findAllMatches,\n      minMatchCharLength,\n      isCaseSensitive,\n      ignoreLocation\n    });\n  }\n  static get type() {\n    return 'fuzzy'\n  }\n  static get multiRegex() {\n    return /^\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^(.*)$/\n  }\n  search(text) {\n    return this._bitapSearch.searchIn(text)\n  }\n}\n\n// Token: 'file\n\nclass IncludeMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'include'\n  }\n  static get multiRegex() {\n    return /^'\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^'(.*)$/\n  }\n  search(text) {\n    let location = 0;\n    let index;\n\n    const indices = [];\n    const patternLen = this.pattern.length;\n\n    // Get all exact matches\n    while ((index = text.indexOf(this.pattern, location)) > -1) {\n      location = index + patternLen;\n      indices.push([index, location - 1]);\n    }\n\n    const isMatch = !!indices.length;\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices\n    }\n  }\n}\n\n// ❗Order is important. DO NOT CHANGE.\nconst searchers = [\n  ExactMatch,\n  IncludeMatch,\n  PrefixExactMatch,\n  InversePrefixExactMatch,\n  InverseSuffixExactMatch,\n  SuffixExactMatch,\n  InverseExactMatch,\n  FuzzyMatch\n];\n\nconst searchersLen = searchers.length;\n\n// Regex to split by spaces, but keep anything in quotes together\nconst SPACE_RE = / +(?=(?:[^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)/;\nconst OR_TOKEN = '|';\n\n// Return a 2D array representation of the query, for simpler parsing.\n// Example:\n// \"^core go$ | rb$ | py$ xy$\" => [[\"^core\", \"go$\"], [\"rb$\"], [\"py$\", \"xy$\"]]\nfunction parseQuery(pattern, options = {}) {\n  return pattern.split(OR_TOKEN).map((item) => {\n    let query = item\n      .trim()\n      .split(SPACE_RE)\n      .filter((item) => item && !!item.trim());\n\n    let results = [];\n    for (let i = 0, len = query.length; i < len; i += 1) {\n      const queryItem = query[i];\n\n      // 1. Handle multiple query match (i.e, once that are quoted, like `\"hello world\"`)\n      let found = false;\n      let idx = -1;\n      while (!found && ++idx < searchersLen) {\n        const searcher = searchers[idx];\n        let token = searcher.isMultiMatch(queryItem);\n        if (token) {\n          results.push(new searcher(token, options));\n          found = true;\n        }\n      }\n\n      if (found) {\n        continue\n      }\n\n      // 2. Handle single query matches (i.e, once that are *not* quoted)\n      idx = -1;\n      while (++idx < searchersLen) {\n        const searcher = searchers[idx];\n        let token = searcher.isSingleMatch(queryItem);\n        if (token) {\n          results.push(new searcher(token, options));\n          break\n        }\n      }\n    }\n\n    return results\n  })\n}\n\n// These extended matchers can return an array of matches, as opposed\n// to a singl match\nconst MultiMatchSet = new Set([FuzzyMatch.type, IncludeMatch.type]);\n\n/**\n * Command-like searching\n * ======================\n *\n * Given multiple search terms delimited by spaces.e.g. `^jscript .python$ ruby !java`,\n * search in a given text.\n *\n * Search syntax:\n *\n * | Token       | Match type                 | Description                            |\n * | ----------- | -------------------------- | -------------------------------------- |\n * | `jscript`   | fuzzy-match                | Items that fuzzy match `jscript`       |\n * | `=scheme`   | exact-match                | Items that are `scheme`                |\n * | `'python`   | include-match              | Items that include `python`            |\n * | `!ruby`     | inverse-exact-match        | Items that do not include `ruby`       |\n * | `^java`     | prefix-exact-match         | Items that start with `java`           |\n * | `!^earlang` | inverse-prefix-exact-match | Items that do not start with `earlang` |\n * | `.js$`      | suffix-exact-match         | Items that end with `.js`              |\n * | `!.go$`     | inverse-suffix-exact-match | Items that do not end with `.go`       |\n *\n * A single pipe character acts as an OR operator. For example, the following\n * query matches entries that start with `core` and end with either`go`, `rb`,\n * or`py`.\n *\n * ```\n * ^core go$ | rb$ | py$\n * ```\n */\nclass ExtendedSearch {\n  constructor(\n    pattern,\n    {\n      isCaseSensitive = Config.isCaseSensitive,\n      includeMatches = Config.includeMatches,\n      minMatchCharLength = Config.minMatchCharLength,\n      ignoreLocation = Config.ignoreLocation,\n      findAllMatches = Config.findAllMatches,\n      location = Config.location,\n      threshold = Config.threshold,\n      distance = Config.distance\n    } = {}\n  ) {\n    this.query = null;\n    this.options = {\n      isCaseSensitive,\n      includeMatches,\n      minMatchCharLength,\n      findAllMatches,\n      ignoreLocation,\n      location,\n      threshold,\n      distance\n    };\n\n    this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n    this.query = parseQuery(this.pattern, this.options);\n  }\n\n  static condition(_, options) {\n    return options.useExtendedSearch\n  }\n\n  searchIn(text) {\n    const query = this.query;\n\n    if (!query) {\n      return {\n        isMatch: false,\n        score: 1\n      }\n    }\n\n    const { includeMatches, isCaseSensitive } = this.options;\n\n    text = isCaseSensitive ? text : text.toLowerCase();\n\n    let numMatches = 0;\n    let allIndices = [];\n    let totalScore = 0;\n\n    // ORs\n    for (let i = 0, qLen = query.length; i < qLen; i += 1) {\n      const searchers = query[i];\n\n      // Reset indices\n      allIndices.length = 0;\n      numMatches = 0;\n\n      // ANDs\n      for (let j = 0, pLen = searchers.length; j < pLen; j += 1) {\n        const searcher = searchers[j];\n        const { isMatch, indices, score } = searcher.search(text);\n\n        if (isMatch) {\n          numMatches += 1;\n          totalScore += score;\n          if (includeMatches) {\n            const type = searcher.constructor.type;\n            if (MultiMatchSet.has(type)) {\n              allIndices = [...allIndices, ...indices];\n            } else {\n              allIndices.push(indices);\n            }\n          }\n        } else {\n          totalScore = 0;\n          numMatches = 0;\n          allIndices.length = 0;\n          break\n        }\n      }\n\n      // OR condition, so if TRUE, return\n      if (numMatches) {\n        let result = {\n          isMatch: true,\n          score: totalScore / numMatches\n        };\n\n        if (includeMatches) {\n          result.indices = allIndices;\n        }\n\n        return result\n      }\n    }\n\n    // Nothing was matched\n    return {\n      isMatch: false,\n      score: 1\n    }\n  }\n}\n\nconst registeredSearchers = [];\n\nfunction register(...args) {\n  registeredSearchers.push(...args);\n}\n\nfunction createSearcher(pattern, options) {\n  for (let i = 0, len = registeredSearchers.length; i < len; i += 1) {\n    let searcherClass = registeredSearchers[i];\n    if (searcherClass.condition(pattern, options)) {\n      return new searcherClass(pattern, options)\n    }\n  }\n\n  return new BitapSearch(pattern, options)\n}\n\nconst LogicalOperator = {\n  AND: '$and',\n  OR: '$or'\n};\n\nconst KeyType = {\n  PATH: '$path',\n  PATTERN: '$val'\n};\n\nconst isExpression = (query) =>\n  !!(query[LogicalOperator.AND] || query[LogicalOperator.OR]);\n\nconst isPath = (query) => !!query[KeyType.PATH];\n\nconst isLeaf = (query) =>\n  !isArray(query) && isObject(query) && !isExpression(query);\n\nconst convertToExplicit = (query) => ({\n  [LogicalOperator.AND]: Object.keys(query).map((key) => ({\n    [key]: query[key]\n  }))\n});\n\n// When `auto` is `true`, the parse function will infer and initialize and add\n// the appropriate `Searcher` instance\nfunction parse(query, options, { auto = true } = {}) {\n  const next = (query) => {\n    let keys = Object.keys(query);\n\n    const isQueryPath = isPath(query);\n\n    if (!isQueryPath && keys.length > 1 && !isExpression(query)) {\n      return next(convertToExplicit(query))\n    }\n\n    if (isLeaf(query)) {\n      const key = isQueryPath ? query[KeyType.PATH] : keys[0];\n\n      const pattern = isQueryPath ? query[KeyType.PATTERN] : query[key];\n\n      if (!isString(pattern)) {\n        throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key))\n      }\n\n      const obj = {\n        keyId: createKeyId(key),\n        pattern\n      };\n\n      if (auto) {\n        obj.searcher = createSearcher(pattern, options);\n      }\n\n      return obj\n    }\n\n    let node = {\n      children: [],\n      operator: keys[0]\n    };\n\n    keys.forEach((key) => {\n      const value = query[key];\n\n      if (isArray(value)) {\n        value.forEach((item) => {\n          node.children.push(next(item));\n        });\n      }\n    });\n\n    return node\n  };\n\n  if (!isExpression(query)) {\n    query = convertToExplicit(query);\n  }\n\n  return next(query)\n}\n\n// Practical scoring function\nfunction computeScore(\n  results,\n  { ignoreFieldNorm = Config.ignoreFieldNorm }\n) {\n  results.forEach((result) => {\n    let totalScore = 1;\n\n    result.matches.forEach(({ key, norm, score }) => {\n      const weight = key ? key.weight : null;\n\n      totalScore *= Math.pow(\n        score === 0 && weight ? Number.EPSILON : score,\n        (weight || 1) * (ignoreFieldNorm ? 1 : norm)\n      );\n    });\n\n    result.score = totalScore;\n  });\n}\n\nfunction transformMatches(result, data) {\n  const matches = result.matches;\n  data.matches = [];\n\n  if (!isDefined(matches)) {\n    return\n  }\n\n  matches.forEach((match) => {\n    if (!isDefined(match.indices) || !match.indices.length) {\n      return\n    }\n\n    const { indices, value } = match;\n\n    let obj = {\n      indices,\n      value\n    };\n\n    if (match.key) {\n      obj.key = match.key.src;\n    }\n\n    if (match.idx > -1) {\n      obj.refIndex = match.idx;\n    }\n\n    data.matches.push(obj);\n  });\n}\n\nfunction transformScore(result, data) {\n  data.score = result.score;\n}\n\nfunction format(\n  results,\n  docs,\n  {\n    includeMatches = Config.includeMatches,\n    includeScore = Config.includeScore\n  } = {}\n) {\n  const transformers = [];\n\n  if (includeMatches) transformers.push(transformMatches);\n  if (includeScore) transformers.push(transformScore);\n\n  return results.map((result) => {\n    const { idx } = result;\n\n    const data = {\n      item: docs[idx],\n      refIndex: idx\n    };\n\n    if (transformers.length) {\n      transformers.forEach((transformer) => {\n        transformer(result, data);\n      });\n    }\n\n    return data\n  })\n}\n\nclass Fuse {\n  constructor(docs, options = {}, index) {\n    this.options = { ...Config, ...options };\n\n    if (\n      this.options.useExtendedSearch &&\n      !true\n    ) {\n      throw new Error(EXTENDED_SEARCH_UNAVAILABLE)\n    }\n\n    this._keyStore = new KeyStore(this.options.keys);\n\n    this.setCollection(docs, index);\n  }\n\n  setCollection(docs, index) {\n    this._docs = docs;\n\n    if (index && !(index instanceof FuseIndex)) {\n      throw new Error(INCORRECT_INDEX_TYPE)\n    }\n\n    this._myIndex =\n      index ||\n      createIndex(this.options.keys, this._docs, {\n        getFn: this.options.getFn,\n        fieldNormWeight: this.options.fieldNormWeight\n      });\n  }\n\n  add(doc) {\n    if (!isDefined(doc)) {\n      return\n    }\n\n    this._docs.push(doc);\n    this._myIndex.add(doc);\n  }\n\n  remove(predicate = (/* doc, idx */) => false) {\n    const results = [];\n\n    for (let i = 0, len = this._docs.length; i < len; i += 1) {\n      const doc = this._docs[i];\n      if (predicate(doc, i)) {\n        this.removeAt(i);\n        i -= 1;\n        len -= 1;\n\n        results.push(doc);\n      }\n    }\n\n    return results\n  }\n\n  removeAt(idx) {\n    this._docs.splice(idx, 1);\n    this._myIndex.removeAt(idx);\n  }\n\n  getIndex() {\n    return this._myIndex\n  }\n\n  search(query, { limit = -1 } = {}) {\n    const {\n      includeMatches,\n      includeScore,\n      shouldSort,\n      sortFn,\n      ignoreFieldNorm\n    } = this.options;\n\n    let results = isString(query)\n      ? isString(this._docs[0])\n        ? this._searchStringList(query)\n        : this._searchObjectList(query)\n      : this._searchLogical(query);\n\n    computeScore(results, { ignoreFieldNorm });\n\n    if (shouldSort) {\n      results.sort(sortFn);\n    }\n\n    if (isNumber(limit) && limit > -1) {\n      results = results.slice(0, limit);\n    }\n\n    return format(results, this._docs, {\n      includeMatches,\n      includeScore\n    })\n  }\n\n  _searchStringList(query) {\n    const searcher = createSearcher(query, this.options);\n    const { records } = this._myIndex;\n    const results = [];\n\n    // Iterate over every string in the index\n    records.forEach(({ v: text, i: idx, n: norm }) => {\n      if (!isDefined(text)) {\n        return\n      }\n\n      const { isMatch, score, indices } = searcher.searchIn(text);\n\n      if (isMatch) {\n        results.push({\n          item: text,\n          idx,\n          matches: [{ score, value: text, norm, indices }]\n        });\n      }\n    });\n\n    return results\n  }\n\n  _searchLogical(query) {\n\n    const expression = parse(query, this.options);\n\n    const evaluate = (node, item, idx) => {\n      if (!node.children) {\n        const { keyId, searcher } = node;\n\n        const matches = this._findMatches({\n          key: this._keyStore.get(keyId),\n          value: this._myIndex.getValueForItemAtKeyId(item, keyId),\n          searcher\n        });\n\n        if (matches && matches.length) {\n          return [\n            {\n              idx,\n              item,\n              matches\n            }\n          ]\n        }\n\n        return []\n      }\n\n      const res = [];\n      for (let i = 0, len = node.children.length; i < len; i += 1) {\n        const child = node.children[i];\n        const result = evaluate(child, item, idx);\n        if (result.length) {\n          res.push(...result);\n        } else if (node.operator === LogicalOperator.AND) {\n          return []\n        }\n      }\n      return res\n    };\n\n    const records = this._myIndex.records;\n    const resultMap = {};\n    const results = [];\n\n    records.forEach(({ $: item, i: idx }) => {\n      if (isDefined(item)) {\n        let expResults = evaluate(expression, item, idx);\n\n        if (expResults.length) {\n          // Dedupe when adding\n          if (!resultMap[idx]) {\n            resultMap[idx] = { idx, item, matches: [] };\n            results.push(resultMap[idx]);\n          }\n          expResults.forEach(({ matches }) => {\n            resultMap[idx].matches.push(...matches);\n          });\n        }\n      }\n    });\n\n    return results\n  }\n\n  _searchObjectList(query) {\n    const searcher = createSearcher(query, this.options);\n    const { keys, records } = this._myIndex;\n    const results = [];\n\n    // List is Array<Object>\n    records.forEach(({ $: item, i: idx }) => {\n      if (!isDefined(item)) {\n        return\n      }\n\n      let matches = [];\n\n      // Iterate over every key (i.e, path), and fetch the value at that key\n      keys.forEach((key, keyIndex) => {\n        matches.push(\n          ...this._findMatches({\n            key,\n            value: item[keyIndex],\n            searcher\n          })\n        );\n      });\n\n      if (matches.length) {\n        results.push({\n          idx,\n          item,\n          matches\n        });\n      }\n    });\n\n    return results\n  }\n  _findMatches({ key, value, searcher }) {\n    if (!isDefined(value)) {\n      return []\n    }\n\n    let matches = [];\n\n    if (isArray(value)) {\n      value.forEach(({ v: text, i: idx, n: norm }) => {\n        if (!isDefined(text)) {\n          return\n        }\n\n        const { isMatch, score, indices } = searcher.searchIn(text);\n\n        if (isMatch) {\n          matches.push({\n            score,\n            key,\n            value: text,\n            idx,\n            norm,\n            indices\n          });\n        }\n      });\n    } else {\n      const { v: text, n: norm } = value;\n\n      const { isMatch, score, indices } = searcher.searchIn(text);\n\n      if (isMatch) {\n        matches.push({ score, key, value: text, norm, indices });\n      }\n    }\n\n    return matches\n  }\n}\n\nFuse.version = '7.0.0';\nFuse.createIndex = createIndex;\nFuse.parseIndex = parseIndex;\nFuse.config = Config;\n\n{\n  Fuse.parseQuery = parse;\n}\n\n{\n  register(ExtendedSearch);\n}\n\nexport { Fuse as default };\n","import type { IFuseOptions } from 'fuse.js';\nimport Fuse from 'fuse.js';\n\nexport function fuzzySearch<T>(\n  searchQuery: string,\n  objectsToSearch: T[],\n  options?: IFuseOptions<T>,\n): T[] {\n  const fuse = new Fuse(objectsToSearch, {\n    keys: ['name', 'description', 'tags'], // search keys in objects\n    includeScore: true, // to sort results by relevance\n    threshold: 0.3,\n    ...options, // allow to pass additional Fuse.js options\n  });\n\n  const searchResults = fuse.search(searchQuery);\n\n  return searchResults.map((result) => result.item);\n}\n","<script setup lang=\"ts\">\nimport { computed, onUnmounted, reactive, ref } from 'vue';\nimport { Dialog, DialogPanel, DialogTitle, TransitionChild, TransitionRoot } from '@headlessui/vue';\nimport SearchProjects from '~/components/SearchProjects.vue';\nimport EmptySearchResults from '~/components/EmptySearchResults.vue';\nimport type { Collection, Project } from '~/utilities/pyscript-api-models';\nimport { fuzzySearch } from '~/utilities/fuzzy-search';\nimport { useCollectionsStore } from '~/stores/collections-store';\nimport IconCheck from '~icons/ph/check-bold';\nimport IconClose from '~icons/mdi/close';\nimport IconAdd from '~icons/carbon/add-filled';\n\nconst props = defineProps<{\n  show: boolean;\n  project: Project;\n}>();\n\nconst collectionsStore = useCollectionsStore();\n\nconst collectionsList = computed(() => {\n  return collectionsStore.collections.toSorted((a: Collection, b: Collection) =>\n    a.name.localeCompare(b.name),\n  );\n});\n\nconst shouldOpenCreateCollectionModal = ref(false);\n\nconst search = reactive({\n  query: '',\n  results: [] as Collection[],\n});\n\nfunction closeModal(isCreateCollectionFlow?: boolean) {\n  collectionsStore.closeAddProjectToCollectionModal(Boolean(isCreateCollectionFlow));\n  search.query = '';\n}\n\nfunction onSearch() {\n  search.results = fuzzySearch<Collection>(search.query, collectionsList.value, {\n    keys: ['name'],\n  });\n}\n\nasync function updateProjectsInCollection(collection: Collection) {\n  if (collection.projects.includes(props.project.id)) {\n    // Remove if it's already in the collection.\n    await collectionsStore.updateProjectsInCollection(collection.id, [], [props.project.id]);\n  } else {\n    // Add if it's not in the collection.\n    await collectionsStore.updateProjectsInCollection(collection.id, [props.project.id], []);\n  }\n}\n\nfunction onCreateNewCollection() {\n  shouldOpenCreateCollectionModal.value = true;\n  closeModal(true);\n}\n\nonUnmounted(() => {\n  if (shouldOpenCreateCollectionModal.value) {\n    collectionsStore.openCollectionModal();\n  }\n});\n</script>\n\n<template>\n  <TransitionRoot appear :show=\"show\" as=\"template\">\n    <Dialog as=\"div\" class=\"relative z-20\" @close=\"closeModal\">\n      <TransitionChild\n        as=\"template\"\n        enter=\"duration-300 ease-out\"\n        enter-from=\"opacity-0\"\n        enter-to=\"opacity-100\"\n        leave=\"duration-200 ease-in\"\n        leave-from=\"opacity-100\"\n        leave-to=\"opacity-0\"\n      >\n        <div class=\"fixed inset-0 bg-black bg-opacity-25 dark:bg-opacity-40\" />\n      </TransitionChild>\n\n      <div class=\"fixed inset-0\">\n        <div class=\"flex h-screen items-center justify-center\">\n          <TransitionChild\n            as=\"template\"\n            enter=\"duration-300 ease-out\"\n            enter-from=\"opacity-0 scale-95\"\n            enter-to=\"opacity-100 scale-100\"\n            leave=\"duration-200 ease-in\"\n            leave-from=\"opacity-100 scale-100\"\n            leave-to=\"opacity-0 scale-95\"\n          >\n            <div class=\"flex h-screen w-full items-center justify-center p-4\">\n              <DialogPanel\n                class=\"flex max-h-full w-full max-w-md transform flex-col rounded-lg bg-white shadow-xl dark:bg-new-gray-800\"\n              >\n                <DialogTitle\n                  class=\"px-8 pb-3 pt-6 text-lg font-semibold text-gray-800 dark:text-gray-200\"\n                >\n                  {{ $t('collections.add_project_to_collection_modal.title') }}\n                </DialogTitle>\n\n                <SearchProjects\n                  v-model=\"search.query\"\n                  class=\"mx-5 mb-3\"\n                  :search-fn=\"onSearch\"\n                  :placeholder=\"\n                    $t('collections.add_project_to_collection_modal.search_placeholder')\n                  \"\n                />\n                <button\n                  type=\"button\"\n                  title=\"Close modal\"\n                  class=\"absolute right-5 top-5 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\"\n                  @click=\"() => closeModal()\"\n                >\n                  <IconClose aria-hidden=\"true\" />\n                </button>\n\n                <section class=\"custom-scrollbar overflow-y-auto px-6 pb-2 text-sm\">\n                  <!-- No search results -->\n                  <EmptySearchResults\n                    v-if=\"search.query && !search.results.length\"\n                    i18n-key=\"states.noun.collections\"\n                  />\n\n                  <ul v-else>\n                    <li\n                      v-for=\"collection in search.query && search.results.length\n                        ? search.results\n                        : collectionsList\"\n                      :key=\"collection.id\"\n                      class=\"relative -mb-[1px]\"\n                    >\n                      <button\n                        class=\"group flex w-full items-center gap-2.5 rounded px-2 py-1.5 text-left hover:bg-new-gray-50 dark:hover:bg-new-gray-600\"\n                        @click=\"updateProjectsInCollection(collection)\"\n                      >\n                        <div\n                          :class=\"[\n                            collection.projects.includes(project.id)\n                              ? ''\n                              : 'opacity-0 group-hover:opacity-20',\n                          ]\"\n                        >\n                          <IconCheck class=\"text-xs\" />\n                        </div>\n\n                        <span class=\"truncate\">{{ collection.name }}</span>\n\n                        <span\n                          class=\"ml-auto whitespace-nowrap text-xs text-new-gray-500 dark:text-new-gray-200\"\n                          >{{ $t('collections.project_count', collection.projects.length) }}</span\n                        >\n                      </button>\n\n                      <hr\n                        class=\"absolute bottom-0 left-1 right-1 -z-1 border-t-new-gray-50 dark:border-t-new-gray-600\"\n                      />\n                    </li>\n\n                    <li>\n                      <button\n                        class=\"flex w-full items-center gap-2 rounded p-2 text-left hover:bg-new-gray-50 dark:hover:bg-new-gray-600\"\n                        @click=\"onCreateNewCollection\"\n                      >\n                        <IconAdd class=\"text-sm\" />\n                        {{ $t('collections.add_project_to_collection_modal.new_collection') }}\n                      </button>\n                    </li>\n                  </ul>\n                </section>\n              </DialogPanel>\n            </div>\n          </TransitionChild>\n        </div>\n      </div>\n    </Dialog>\n  </TransitionRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, onBeforeMount, reactive } from 'vue';\nimport { Dialog, DialogPanel, DialogTitle, TransitionChild, TransitionRoot } from '@headlessui/vue';\nimport { useRouter } from 'vue-router';\nimport { reset } from '@formkit/vue';\nimport { useCollectionsStore } from '~/stores/collections-store';\n\nconst collectionsStore = useCollectionsStore();\nconst router = useRouter();\n\nconst formState = reactive({\n  name: '',\n  description: '',\n  privacy: 'public',\n});\n\nonBeforeMount(() => {\n  if (collectionsStore.collectionBeingEdited) {\n    formState.name = collectionsStore.collectionBeingEdited.name;\n    formState.description = collectionsStore.collectionBeingEdited.description;\n    formState.privacy = collectionsStore.collectionBeingEdited.private ? 'private' : 'public';\n  }\n});\n\n/** Determines if a collection is being edited or created. */\nconst isEditingCollection = computed(() => Boolean(collectionsStore.collectionBeingEdited?.id));\n\nfunction closeModal() {\n  collectionsStore.closeCollectionModal();\n}\n\nfunction onCancel() {\n  closeModal();\n  reset('collection-form');\n  /**\n   * Reset the project to be added as a precaution in case it was set while\n   * creating a collection and the user cancelled.\n   */\n  collectionsStore.projectToBeAdded = null;\n}\n\nasync function submitHandler(data: any) {\n  const privacy = data.privacy === 'private';\n\n  if (isEditingCollection.value) {\n    await collectionsStore.updateCollection(\n      collectionsStore.collectionBeingEdited!.id,\n      data.name,\n      data.description,\n      privacy,\n    );\n  } else {\n    const collection = await collectionsStore.createCollection(\n      data.name,\n      data.description,\n      privacy,\n    );\n    router.push({\n      name: 'collection-projects',\n      params: {\n        collectionId: collection.id,\n        usernameOrUserId: collection.username || collection.user_id,\n      },\n    });\n  }\n  await collectionsStore.fetchCollections();\n  closeModal();\n}\n</script>\n\n<template>\n  <TransitionRoot appear :show=\"collectionsStore.showCollectionModal\" as=\"template\">\n    <Dialog as=\"div\" class=\"relative z-20\" @close=\"closeModal\">\n      <TransitionChild\n        as=\"template\"\n        enter=\"duration-300 ease-out\"\n        enter-from=\"opacity-0\"\n        enter-to=\"opacity-100\"\n        leave=\"duration-200 ease-in\"\n        leave-from=\"opacity-100\"\n        leave-to=\"opacity-0\"\n      >\n        <div class=\"fixed inset-0 bg-black bg-opacity-25 dark:bg-opacity-40\" />\n      </TransitionChild>\n\n      <div class=\"fixed inset-0 overflow-y-auto\">\n        <TransitionChild\n          as=\"template\"\n          enter=\"duration-300 ease-out\"\n          enter-from=\"opacity-0 scale-95\"\n          enter-to=\"opacity-100 scale-100\"\n          leave=\"duration-200 ease-in\"\n          leave-from=\"opacity-100 scale-100\"\n          leave-to=\"opacity-0 scale-95\"\n        >\n          <DialogPanel class=\"flex min-h-screen w-full items-center justify-center p-4\">\n            <div\n              class=\"w-full max-w-md transform overflow-hidden rounded-lg bg-white px-7 py-6 shadow-xl transition-all dark:bg-new-gray-800\"\n            >\n              <DialogTitle as=\"div\" class=\"mb-2 flex items-center justify-between\">\n                <h2 class=\"text-lg font-semibold text-gray-800 dark:text-gray-200\">\n                  {{\n                    isEditingCollection\n                      ? $t('collections.edit_collection_heading')\n                      : $t('collections.new_collection_heading')\n                  }}\n                </h2>\n              </DialogTitle>\n\n              <FormKit\n                id=\"collection-form\"\n                v-slot=\"{ disabled, state: { dirty } }\"\n                type=\"form\"\n                :actions=\"false\"\n                @submit=\"submitHandler\"\n              >\n                <FormKit\n                  v-model=\"formState.name\"\n                  data-1p-ignore\n                  type=\"text\"\n                  name=\"name\"\n                  label=\"Collection Name\"\n                  validation=\"required:trim|length:3,50\"\n                  placeholder=\"Enter collection name\"\n                  :classes=\"{\n                    outer: 'flex-1 max-w-xs',\n                    inner: 'ring-new-gray-100 dark:ring-new-gray-800',\n                  }\"\n                />\n\n                <FormKit\n                  v-model=\"formState.description\"\n                  type=\"textarea\"\n                  name=\"description\"\n                  label=\"Description\"\n                  placeholder=\"Enter collection description\"\n                  :classes=\"{\n                    outer: 'flex-1 max-w-xs',\n                    inner: 'ring-new-gray-100 dark:ring-new-gray-800',\n                  }\"\n                />\n\n                <FormKit\n                  v-model=\"formState.privacy\"\n                  type=\"radio\"\n                  name=\"privacy\"\n                  label=\"Privacy\"\n                  :options=\"[\n                    { label: 'Public', value: 'public' },\n                    { label: 'Private', value: 'private' },\n                  ]\"\n                  value=\"public\"\n                  :classes=\"{\n                    label: 'text-new-gray-700 dark:text-new-gray-200',\n                  }\"\n                />\n\n                <footer class=\"flex items-center justify-between\">\n                  <button\n                    class=\"btn --space-sm --white ml-auto mr-4 h-8 text-xs\"\n                    type=\"button\"\n                    :disabled=\"Boolean(disabled)\"\n                    @click=\"onCancel\"\n                  >\n                    {{ $t('collections.buttons.cancel') }}\n                  </button>\n\n                  <FormKit\n                    type=\"submit\"\n                    :classes=\"{ outer: '$remove:mb-4', wrapper: '$remove:mb-1' }\"\n                    :label=\"\n                      isEditingCollection\n                        ? $t('collections.buttons.save')\n                        : $t('collections.buttons.create')\n                    \"\n                    :disabled=\"Boolean(disabled) || !dirty\"\n                  />\n                </footer>\n              </FormKit>\n            </div>\n          </DialogPanel>\n        </TransitionChild>\n      </div>\n    </Dialog>\n  </TransitionRoot>\n</template>\n","<script setup lang=\"ts\">\nimport { useHead } from '@unhead/vue';\nimport { useCollectionsStore } from '~/stores/collections-store';\nimport AddProjectToCollectionModal from '~/components/collections/AddProjectToCollectionModal.vue';\nimport CollectionFormModal from '~/components/collections/CollectionFormModal.vue';\n\nconst hasDarkPreference =\n  window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;\n\nconst collectionsStore = useCollectionsStore();\n\nuseHead({\n  titleTemplate: (title) => (title ? `PyScript | ${title}` : `PyScript`),\n  meta: [\n    {\n      name: 'description',\n      content: '', // TODO: Add a meta description\n    },\n    {\n      name: 'theme-color',\n      content: hasDarkPreference ? '#00aba9' : '#ffffff',\n    },\n  ],\n  link: [\n    {\n      rel: 'icon',\n      type: 'image/svg+xml',\n      href: '/images/favicon.svg',\n    },\n  ],\n});\n</script>\n\n<template>\n  <RouterView />\n\n  <AddProjectToCollectionModal\n    v-if=\"collectionsStore.showAddProjectToCollectionModal && collectionsStore.projectToBeAdded\"\n    :show=\"collectionsStore.showAddProjectToCollectionModal\"\n    :project=\"collectionsStore.projectToBeAdded\"\n  />\n\n  <CollectionFormModal v-if=\"collectionsStore.showCollectionModal\" />\n</template>\n","import { defineStore } from 'pinia';\nimport pyscriptApi from '~/utilities/pyscript-api';\nimport type { UserBadge } from '~/utilities/pyscript-api-models';\n\nexport const useBadgesStore = defineStore('badges', {\n  state: () => ({\n    userBadges: null as UserBadge[] | null,\n  }),\n\n  getters: {\n    hasFoundersBadge(state): boolean {\n      return Boolean(state.userBadges?.some((item) => item.badge.id === 'pyscript.founder'));\n    },\n  },\n\n  actions: {\n    async fetchBadges(user: string) {\n      this.userBadges = await pyscriptApi.listUserBadges(user);\n    },\n  },\n});\n","/**\n * Sort an array of objects by date using a property containing a date value.\n * This returns a new array, it won't mutate the original array.\n */\nexport function sortByDate<T extends object>(arr: T[], key: keyof T): T[] {\n  return arr.slice().sort((a, b) => {\n    return new Date(b[key] as string).getTime() - new Date(a[key] as string).getTime();\n  });\n}\n\n/**\n * Sort an array of objects alphabetically in ascending order using a property\n * containing a string value. This returns a new array, it won't mutate\n * the original array.\n */\nexport function sortAtoZ<T extends object>(arr: T[], key: keyof T): T[] {\n  return arr.slice().sort((a, b) => (a[key] > b[key] ? 1 : -1));\n}\n\n/**\n * Sort an array of objects alphabetically in descending order using a property\n * containing a string value. This returns a new array, it won't mutate\n * the original array.\n */\nexport function sortZtoA<T extends object>(arr: T[], key: keyof T): T[] {\n  return arr.slice().sort((a, b) => (b[key] > a[key] ? 1 : -1));\n}\n","import { defineStore } from 'pinia';\nimport pyscriptApi from '~/utilities/pyscript-api';\nimport type { Favorite, Project } from '~/utilities/pyscript-api-models';\nimport { sortByDate } from '~/utilities/sort-items';\n\ninterface State {\n  isInitialized: boolean;\n  favorites: Favorite[];\n}\n\n/**\n * Store for managing the user's favorites. If the user is logged in,\n * the store is initialized via the `src/main.ts` on page load.\n */\nexport const useFavoritesStore = defineStore('favorites', {\n  state: (): State => ({\n    /**\n     * Determines if the store has initialized and fetched the user's favorites\n     * on page load. Primarily used to prevent having to `await` in the\n     * `src/main.ts` file.\n     */\n    isInitialized: false,\n\n    /** List of the user's favorite projects. Doesn't include project data. */\n    favorites: [],\n  }),\n\n  getters: {\n    /**\n     * Creates a Set of favorites project IDs, making it easy and performant\n     * to check if a project is a favorite.\n     */\n    favoritesProjectIds(state) {\n      return new Set(state.favorites.map((favorite) => favorite.project_id));\n    },\n  },\n\n  actions: {\n    /** Only be called once on page load via the `src/main.ts` file. */\n    async init() {\n      await this.fetchFavorites();\n\n      // Mark the store as initialized, indicating the store is ready for use.\n      this.isInitialized = true;\n    },\n\n    /** Fetch the logged-in user's favorite projects. */\n    async fetchFavorites() {\n      // Fetch favorites and sort based on the date they were favorited.\n      const unsortedFavorites = await pyscriptApi.listFavorites();\n      this.favorites = sortByDate(unsortedFavorites, 'created_at');\n    },\n\n    /** Add a favorite. */\n    async addFavorite(project: Project) {\n      const { id: projectId, user_id: userId } = project;\n\n      // Optimistic UI update.\n      if (!this.favoritesProjectIds.has(projectId)) {\n        this.favorites.push({\n          user_id: userId,\n          project_id: projectId,\n          created_at: '',\n        });\n      }\n\n      await pyscriptApi.addFavorite(projectId);\n    },\n\n    /** Remove a favorite. */\n    async removeFavorite(projectId: string) {\n      // Optimistic UI update.\n      this.favorites = this.favorites.filter((favorite) => favorite.project_id !== projectId);\n\n      await pyscriptApi.removeFavorite(projectId);\n    },\n\n    /** Determine if a project is a favorite project. */\n    isFavorite(projectId: string) {\n      return this.favoritesProjectIds.has(projectId);\n    },\n  },\n});\n","import { defineStore } from 'pinia';\nimport pyscriptApi from '~/utilities/pyscript-api';\nimport type { SystemStatus } from '~/utilities/pyscript-api-models';\n\nexport const useSystemStore = defineStore('system', {\n  state: (): SystemStatus => ({\n    banners: [],\n    maintenance_mode: false,\n  }),\n\n  actions: {\n    async fetchSystemStatus() {\n      try {\n        const response = await pyscriptApi.getSystemStatus();\n\n        this.banners = response.banners;\n        this.maintenance_mode = response.maintenance_mode;\n\n        return response;\n      } catch (error) {} // Probably should do something here\n    },\n  },\n});\n","import { useStorage } from '@vueuse/core';\nimport { computed } from 'vue';\nimport { STORAGE_KEY_WHATS_NEW_NOTIFICATION_BADGE } from '~/utilities/constants';\n\nexport function useWhatsNewNotification() {\n  const hasViewedWhatsNew = useStorage(STORAGE_KEY_WHATS_NEW_NOTIFICATION_BADGE, false);\n  const markWhatsNewAsViewed = () => (hasViewedWhatsNew.value = true);\n  const conditionalHash = computed(() => (hasViewedWhatsNew.value ? '' : '#latest-updates'));\n\n  return {\n    hasViewedWhatsNew,\n    markWhatsNewAsViewed,\n    conditionalHash,\n  };\n}\n","import type { RouteRecordRaw } from 'vue-router';\nimport { useWhatsNewNotification } from './composables/whats-new-notification';\n\nconst { markWhatsNewAsViewed } = useWhatsNewNotification();\n\n// Defines what options are available for the `meta` property on a route.\ndeclare module 'vue-router' {\n  interface RouteMeta {\n    requiresAuth?: boolean;\n    /** If not set, defaults to 'DefaultLayout'. */\n    layout?: 'BasicLayout' | 'DefaultLayout' | 'DocsLayout';\n    /** Used in cases where the page has its own custom header */\n    hideLayoutHeader?: boolean;\n  }\n}\n\nconst prodRoutes: RouteRecordRaw[] = [\n  /* -------------------- *\n   * General\n   * -------------------- */\n  {\n    path: '/',\n    name: 'home',\n    component: () => import('~/views/HomeView.vue'),\n    meta: { layout: 'BasicLayout' },\n  },\n  {\n    path: '/about',\n    name: 'about',\n    component: () => import('~/views/AboutView.vue'),\n  },\n  {\n    path: '/join',\n    name: 'join',\n    component: () => import('~/views/JoinView.vue'),\n    meta: { layout: 'BasicLayout' },\n  },\n  // Route used for users at PyCon to quickly and easily purchase the Founders Package\n  {\n    path: '/purchase-founders-package',\n    name: 'purchase-founders-package',\n    component: () => import('~/views/PurchaseFoundersPackageView.vue'),\n    meta: { layout: 'BasicLayout' },\n  },\n\n  /* -------------------- *\n   * Dashboard\n   * -------------------- */\n  {\n    path: '/dashboard',\n    name: 'dashboard',\n    component: () => import('~/views/DashboardView.vue'),\n    meta: {\n      requiresAuth: true,\n      hideLayoutHeader: true,\n    },\n  },\n\n  /* -------------------- *\n   * User Profile\n   * -------------------- */\n  {\n    path: '/@:usernameOrUserId',\n    name: 'profile',\n    component: () => import('~/views/ProfileView.vue'),\n    meta: {\n      // This is a public route. It does not require auth to view a project.\n      hideLayoutHeader: true,\n    },\n    props: true,\n  },\n\n  {\n    path: '/settings',\n    name: 'settings',\n    component: () => import('~/views/AccountSettingsView.vue'),\n    meta: {\n      requiresAuth: true,\n      hideLayoutHeader: true,\n    },\n  },\n\n  /* -------------------- *\n   * View or Edit Project\n   * -------------------- */\n\n  // Only used to redirect to `/latest`\n  {\n    path: '/@:usernameOrUserId/:projectSlugOrId',\n    name: 'project-without-version',\n    redirect(to) {\n      return {\n        name: 'project',\n        params: {\n          usernameOrUserId: to.params.usernameOrUserId,\n          projectSlugOrId: to.params.projectSlugOrId,\n          version: 'latest',\n        },\n      };\n    },\n  },\n  {\n    path: '/@:usernameOrUserId/:projectSlugOrId/:version',\n    name: 'project',\n    component: () => import('~/views/projects/ProjectView.vue'),\n    meta: {\n      requiresAuth: false,\n      hideLayoutHeader: true,\n    },\n    props: true,\n  },\n\n  /**\n   * This route is deprecated in favor of the new `/@:usernameOrUserId/:projectSlugOrId`.\n   * Any users visiting the old route will be redirected to the new one.\n   */\n  {\n    path: '/view/:userId/:projectId/:version',\n    name: 'view-project-source',\n    redirect(to) {\n      return {\n        name: 'project',\n        params: {\n          usernameOrUserId: to.params.userId,\n          projectSlugOrId: to.params.projectId,\n          version: to.params.version,\n        },\n      };\n    },\n  },\n\n  /* -------------------- *\n   * Favorites\n   * -------------------- */\n  {\n    path: '/favorites',\n    name: 'favorites',\n    component: () => import('~/views/FavoritesView.vue'),\n    meta: {\n      requiresAuth: true,\n      hideLayoutHeader: true,\n    },\n  },\n\n  /* -------------------- *\n   * Collections\n   * -------------------- */\n  {\n    path: '/@:usernameOrUserId/collections/:collectionId',\n    name: 'collection-projects',\n    component: () => import('~/views/CollectionView.vue'),\n    meta: {\n      hideLayoutHeader: true,\n    },\n    props: true,\n  },\n\n  /**\n   * Used to redirect to a user's profile page with the collections tab selected\n   *\n   * It's unlikely for a user to do this, but if they were editing the URL manually,\n   * they would be redirected to profile page's collections tab.\n   */\n  {\n    path: '/@:usernameOrUserId/collections',\n    name: 'collections-redirect',\n    redirect(to) {\n      return {\n        name: 'profile',\n        params: {\n          usernameOrUserId: to.params.usernameOrUserId,\n        },\n        query: {\n          tab: 'collections',\n        },\n      };\n    },\n  },\n\n  /* -------------------- *\n   * What's New\n   * -------------------- */\n  {\n    path: '/whats-new',\n    name: 'whats-new',\n    component: () => {\n      return import('~/views/docs/WhatsNewView.md');\n    },\n    meta: {\n      layout: 'DocsLayout',\n    },\n    beforeEnter() {\n      markWhatsNewAsViewed();\n    },\n  },\n\n  /* -------------------- *\n   * Documentation\n   * -------------------- */\n  {\n    path: '/docs',\n    name: 'docs',\n    component: () => import('~/views/docs/DocsView.md'),\n    meta: {\n      layout: 'DocsLayout',\n    },\n  },\n  {\n    path: '/docs/private-projects',\n    name: 'docs-private-projects',\n    component: () => import('~/views/docs/PrivateProjects.md'),\n    meta: {\n      layout: 'DocsLayout',\n    },\n  },\n  {\n    path: '/docs/projects-readme',\n    name: 'projects-readme',\n    component: () => import('~/views/docs/ProjectsReadme.md'),\n    meta: {\n      layout: 'DocsLayout',\n    },\n  },\n  {\n    path: '/docs/versions',\n    name: 'docs-versions',\n    component: () => import('~/views/docs/Versions.md'),\n    meta: {\n      layout: 'DocsLayout',\n    },\n  },\n  {\n    path: '/docs/api-proxies-and-secrets',\n    name: 'docs-api-proxies-and-secrets',\n    component: () => import('~/views/docs/ProxiesAndSecrets.md'),\n    meta: {\n      layout: 'DocsLayout',\n    },\n  },\n  {\n    path: '/docs/pwa',\n    name: 'docs-pwa',\n    component: () => import('~/views/docs/PWA.md'),\n    meta: {\n      layout: 'DocsLayout',\n    },\n  },\n\n  /* -------------------- *\n   * PyCon US 2024\n   * -------------------- */\n  {\n    path: '/pycon',\n    name: 'pycon',\n    component: () => import('~/views/docs/PyConUS2024.md'),\n    meta: {\n      layout: 'DocsLayout',\n    },\n  },\n\n  /* -------------------- *\n   * General\n   * -------------------- */\n  {\n    path: '/maintenance',\n    name: 'maintenance',\n    component: () => import('~/views/MaintenanceView.vue'),\n    meta: { layout: 'BasicLayout' },\n  },\n\n  /* -------------------- *\n   * Error\n   * -------------------- */\n  {\n    path: '/:pathMatch(.*)*',\n    name: 'not-found',\n    component: () => import('~/views/NotFoundView.vue'),\n    meta: {\n      hideLayoutHeader: true,\n    },\n  },\n];\n\nconst devRoutes: RouteRecordRaw[] = [];\n\nexport const routes: RouteRecordRaw[] = import.meta.env.DEV\n  ? [...prodRoutes, ...devRoutes]\n  : [...prodRoutes];\n","import { ViteSSG } from 'vite-ssg';\nimport { setupLayouts } from 'virtual:generated-layouts';\nimport App from '~/App.vue';\nimport type { UserModule } from '~/modules/user-module-type';\nimport { useUserStore } from '~/stores/user-store';\nimport { setPsdcRedirect } from '~/utilities/psdc-redirect';\nimport { useBadgesStore } from '~/stores/badges-store';\nimport { useFavoritesStore } from '~/stores/favorites-store';\nimport { useCollectionsStore } from '~/stores/collections-store';\nimport { useSystemStore } from '~/stores/system-store';\nimport { routes } from '~/router';\n\nimport './tailwind.css';\nimport 'floating-vue/dist/style.css';\nimport 'vue-final-modal/style.css';\n\n// https://github.com/antfu/vite-ssg\nexport const createApp = ViteSSG(\n  App,\n  {\n    routes: setupLayouts(routes),\n    base: import.meta.env.BASE_URL,\n\n    scrollBehavior: (to, _from, savedPosition) => {\n      if (savedPosition) {\n        return savedPosition;\n      } else if (to.meta.layout === 'DocsLayout' && to.hash) {\n        return {\n          el: to.hash,\n          behavior: 'instant',\n          top: 96,\n        };\n      } else {\n        return {\n          top: 0,\n        };\n      }\n    },\n  },\n  async (ctx) => {\n    // Install all modules under `modules/`\n    Object.values(\n      import.meta.glob<{ install: UserModule }>('~/modules/*.ts', { eager: true }),\n    ).forEach((i) => i.install?.(ctx));\n\n    const systemStore = useSystemStore();\n    try {\n      await systemStore.fetchSystemStatus();\n    } catch (error) {\n      console.error(error);\n    }\n\n    if (!import.meta.env.SSR) {\n      const userStore = useUserStore();\n\n      // On page load, fetch the user if not logged in and not in maintenance mode.\n      if (!userStore.user && !systemStore.maintenance_mode) {\n        await userStore.fetchUser();\n      }\n\n      // On page load, fetch badges and favorites if logged in and not in maintenance mode.\n      if (userStore.isLoggedIn && userStore.user?.id && !systemStore.maintenance_mode) {\n        const badgesStore = useBadgesStore();\n        const favoritesStore = useFavoritesStore();\n        const collectionsStore = useCollectionsStore();\n        try {\n          await badgesStore.fetchBadges(userStore.user.id);\n\n          // Don't await here to prevent blocking the page load.\n          collectionsStore.init();\n          favoritesStore.init();\n        } catch (error) {}\n      }\n\n      // Runs before every route change\n      ctx.router.beforeEach(async (to) => {\n        // If we are in maintenance mode, redirect all to maintenance page\n        if (systemStore.maintenance_mode && to.name !== 'maintenance') {\n          return { name: 'maintenance' };\n        }\n        // For pages where the user needs auth prior to visiting the page.\n        if (to?.meta?.requiresAuth && !userStore.isLoggedIn) {\n          await setPsdcRedirect();\n          return { name: 'home' };\n        }\n      });\n\n      // Workaround to get access to the router instance\n      window.routerInstance = ctx.router;\n    }\n  },\n);\n","<template>\n  <svg class=\"animate-spin\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n    <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" />\n    <path\n      class=\"opacity-75\"\n      fill=\"currentColor\"\n      d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n    />\n  </svg>\n</template>\n","export async function copyToClipboard(text: string): Promise<void> {\n  try {\n    await navigator.clipboard.writeText(text);\n  } catch (error) {\n    console.error('Failed to copy text: ', error);\n  }\n}\n","<script setup lang=\"ts\">\nimport { useI18n } from 'vue-i18n';\n\nconst { t } = useI18n();\n</script>\n\n<template>\n  <main class=\"container-spacing mx-auto mt-6 max-w-4xl\">\n    <h1 class=\"mb-8 text-2xl font-semibold md:text-4xl\">{{ t('about_page.heading') }}</h1>\n\n    <section class=\"space-y-6 md:text-lg\">\n      <i18n-t keypath=\"about_page.body_p1\" tag=\"p\">\n        <template #link>\n          <a\n            href=\"https://www.anaconda.com/blog/pyscript-python-in-the-browser\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            class=\"link\"\n            title=\"PyScript\"\n          >\n            PyScript</a\n          >\n        </template>\n      </i18n-t>\n\n      <i18n-t keypath=\"about_page.body_p2\" tag=\"p\">\n        <template #link>\n          <a\n            href=\"https://www.anaconda.com/\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            class=\"link\"\n            title=\"Anaconda\"\n          >\n            Anaconda</a\n          >\n        </template>\n      </i18n-t>\n\n      <i18n-t keypath=\"about_page.body_p3\" tag=\"p\">\n        <template #link1>\n          <a\n            href=\"https://anaconda.cloud/s/pyscript\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            class=\"link\"\n            title=\"Anaconda Nucleus\"\n          >\n            Anaconda Nucleus\n          </a>\n        </template>\n\n        <template #twitter_handle>@pyscript_dev</template>\n\n        <template #link2>\n          <a\n            href=\"https://twitter.com/pyscript_dev?lang=en\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            class=\"link\"\n            title=\"Twitter\"\n          >\n            Twitter\n          </a>\n        </template>\n      </i18n-t>\n    </section>\n  </main>\n</template>\n","<script setup lang=\"ts\">\nimport { watch } from 'vue';\nimport { useRouter } from 'vue-router';\nimport { useUserStore } from '~/stores/user-store';\nimport { useBadgesStore } from '~/stores/badges-store';\nimport pyscriptApi from '~/utilities/pyscript-api';\n\n/**\n * OVERVIEW OF CASES TO CONSIDER:\n *\n * A) User IS logged in:\n * - If the user already has an active Founders plan, redirect to the dashboard\n * - If they DON'T have an active Founders plan, redirect to checkout\n *\n * B) User NOT logged in:\n * 1. Set localStorage.psdc_redirect with a value of the current path+query params\n * 2. Redirect the user to /registration\n * 3. When the user logs in they'll be redirected back to the original page they were on\n *    - I.e. `/purchase-founders-package?utm_campaign=pycon2023&utm_medium=lp&utm_source=marketo`\n */\n\nconst router = useRouter();\nconst userStore = useUserStore();\nconst badgesStore = useBadgesStore();\n\n/**\n * If user not logged in, save the current route they're at in localStorage and\n * redirect them to the registration page. They'll be redirect back after login.\n */\nif (!userStore.isLoggedIn) {\n  localStorage.setItem('psdc_redirect', router.currentRoute.value.fullPath);\n  setTimeout(() => router.push({ name: 'registration' }), 4000);\n}\n\nwatch(\n  () => badgesStore.hasFoundersBadge,\n  (val) => {\n    if (val === true) {\n      setTimeout(() => router.push({ name: 'dashboard' }), 4000);\n    }\n\n    if (val === false) {\n      setTimeout(() => pyscriptApi.checkoutFoundersPlan(), 1000);\n    }\n  },\n  { immediate: true },\n);\n</script>\n\n<template>\n  <div class=\"flex h-screen w-screen flex-col items-center justify-center\">\n    <div class=\"flex max-w-lg flex-col items-center justify-center gap-4 px-4 text-center\">\n      <template v-if=\"userStore.isLoggedIn === false\">\n        <h2 class=\"whitespace-pre-wrap break-keep text-xl font-medium\">\n          Please register before purchasing the<br class=\"hidden lg:block\" />\n          Founders package.\n        </h2>\n        <p>Redirecting you to registration...</p>\n      </template>\n\n      <template v-else-if=\"userStore.isLoggedIn && badgesStore.hasFoundersBadge === true\">\n        <h2 class=\"text-xl font-medium\">\n          Oops! You've already purchased the<br class=\"hidden lg:block\" />\n          Founders Package.\n        </h2>\n        <p>We appreciate your support.</p>\n        <p>Redirecting you to your dashboard...</p>\n      </template>\n\n      <template v-else-if=\"userStore.isLoggedIn && badgesStore.hasFoundersBadge === false\">\n        <h2 class=\"text-xl font-medium\">\n          Redirecting you to purchase the<br class=\"hidden lg:block\" />\n          Founders Package...\n        </h2>\n      </template>\n\n      <div class=\"dot-flashing\" />\n    </div>\n  </div>\n</template>\n","/**\n * Send the user to the 404 page while preserving the route they're trying to visit.\n *\n * E.g. If the route visited is `/some/fake/route#hash?some_query=value` the 404 page\n * will appear, but the route is unchanged.\n */\nexport function show404Page() {\n  const route = window.routerInstance.currentRoute.value;\n\n  return window.routerInstance.replace({\n    name: 'not-found',\n    // preserve current path and remove the first char to avoid the target URL starting with `//`\n    params: { pathMatch: route.path.substring(1).split('/') },\n    // preserve existing query and hash if any\n    query: route.query,\n    hash: route.hash,\n  });\n}\n","/**\n * Follows the default Tailwind breakpoints.\n * @see https://tailwindcss.com/docs/responsive-design\n */\nexport function checkBreakpoint(width: number): BreakpointType {\n  if (width < 640) return 'xs';\n  if (width < 768) return 'sm';\n  if (width < 1024) return 'md';\n  if (width < 1280) return 'lg';\n  if (width < 1536) return 'xl';\n  return '2xl';\n}\n\nexport type BreakpointType = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n","export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}","export default () => [];\n"],"file":"assets/index-CVFz7N8k.js"}