{"version":3,"sources":["webpack:///./src/components/chat/Chats.vue","webpack:///./src/server/chat.js","webpack:///./src/signalr/chat.js","webpack:///src/components/chat/Chats.vue","webpack:///./src/components/chat/Chats.vue?de29","webpack:///./src/components/chat/Chats.vue?6ef9","webpack:///./node_modules/vue-advanced-chat/dist/vue-advanced-chat.es.js","webpack:///./src/components/chat/Chats.vue?3525"],"names":["render","_vm","this","_c","_self","staticClass","ref","attrs","screenHeight","JSON","stringify","styles","currentUserId","roomId","rooms","roomsLoaded","messages","messageLoaded","roomMessage","messageActions","showNewMessageDivider","singleRoom","showFooter","on","$event","fetchMessages","detail","sendMessage","deleteMessage","openFile","menuActionHandler","staticRenderFns","basePath","baseUrl","create","data","api","put","find","portalUserId","get","createMsg","SenderType","PatientId","SenderUserId","PortalUserId","DateTime","Message","Files","FilesData","Relationship","formData","FormData","append","index","length","File","config","headers","delete","id","findById","patienId","downloadUrl","SessionService","session","token","getCaseLoad","sendToMainApp","signalrAppUrl","fetch","tenantName","body","receivers","method","Authorization","getReceivers","signalRConnection","SignalRConnection","register","name","components","Layout","props","roomsLoadedCount","selectedRoom","lastLoadedMessage","previousLastLoadedMessage","typingMessageCache","title","container","borderRadius","messagesInterval","accessEntry","chatSignalRConnection","result","destroyed","methods","populateRoom","roomName","avatar","users","_id","username","typingUsers","lastMessage","caseLoad","UserId","then","response","msgs","setTimeout","formatMessage","files","size","type","audio","duration","url","senderId","message","content","seconds","timestamp","date","distributed","system","disableActions","disableReactions","new","seen","messageFiles","messageFilesData","chatServer","getFileToUpload","action","formattedFiles","extension","messageFile","file","window","computed","user","userFormatted","watch","showing","component","makeMap$2","str","expectsLowerCase","map","Object","list","split","i","val","toLowerCase","NOOP$1","extend$2","assign","hasOwnProperty$1","prototype","hasOwnProperty","hasOwn$1","key","call","isArray$2","Array","isArray","isMap$1","toTypeString$1","isFunction$2","isString$2","isSymbol","isObject$2","objectToString$1","toString","value","toRawType","slice","isIntegerKey","parseInt","hasChanged$1","oldValue","is","def$1","obj","defineProperty","configurable","enumerable","activeEffectScope","EffectScope","detached","active","effects","cleanups","parent","scopes","push","fn","currentEffectScope","fromParent","l","stop","last","pop","recordEffectScope","effect","scope","createDep","dep","Set","w","n","wasTracked","trackOpBit","newTracked","initDepMarkers","deps","finalizeDepMarkers","ptr","targetMap","WeakMap","effectTrackDepth","maxMarkerBits","activeEffect","ITERATE_KEY","Symbol","MAP_KEY_ITERATE_KEY","ReactiveEffect","scheduler","lastShouldTrack","shouldTrack","cleanupEffect","deferStop","onStop","trackStack","pauseTracking","resetTracking","track","target","depsMap","set","Map","trackEffects","debuggerEventExtraInfo","shouldTrack2","has","add","trigger","newValue","oldTarget","values","forEach","key2","triggerEffects","triggerEffect","allowRecurse","run","isNonTrackableKeys","builtInSymbols","getOwnPropertyNames","filter","get$1","createGetter","shallowGet","readonlyGet","arrayInstrumentations","createArrayInstrumentations","instrumentations","args","arr","toRaw","res","apply","isReadonly2","shallow","receiver","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","targetIsArray","Reflect","isRef","readonly","reactive","set$1","createSetter","shallowSet","isReadonly","isShallow","hadKey","Number","deleteProperty","ownKeys","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","toShallow","getProto","v","getPrototypeOf","get$1$1","isShallow2","rawTarget","rawKey","has2","wrap","toReadonly","toReactive","has$1","proto","set$1$1","get3","deleteEntry","clear","hadItems","createForEach","callback","thisArg","observed","createIterableMethod","targetIsMap","isPair","iterator","isKeyOnly","innerIterator","done","next","createReadonlyMethod","createInstrumentations","mutableInstrumentations2","shallowInstrumentations2","readonlyInstrumentations2","shallowReadonlyInstrumentations2","iteratorMethods","mutableInstrumentations","readonlyInstrumentations","shallowInstrumentations","shallowReadonlyInstrumentations","createInstrumentationGetter","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","targetTypeMap","rawType","getTargetType","isExtensible","createReactiveObject","shallowReactive","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","proxy","Proxy","isReactive","isProxy","raw","markRaw","trackRefValue","triggerRefValue","newVal","r","__v_isRef","unref","shallowUnwrapHandlers","proxyRefs","objectWithRefs","ComputedRefImpl","getter","_setter","isSSR","_dirty","_cacheable","self2","_value","computed$1","getterOrOptions","debugOptions","setter","onlyGetter","cRef","makeMap$1","normalizeStyle","isArray$1","item","normalized","isString$1","parseStringStyle","isObject$1","listDelimiterRE","propertyDelimiterRE","cssText","ret","tmp","trim","normalizeClass","normalizeProps","class","klass","style","toDisplayString","objectToString","isFunction$1","replacer","String","_key","isMap","entries","reduce","val2","isSet","isPlainObject","EMPTY_OBJ","EMPTY_ARR","NOOP","NO","onRE$1","isOn$1","test","isModelListener$1","startsWith","extend$1","remove","el","indexOf","splice","hasOwn","toTypeString","isPromise","catch","isReservedProp","cacheStringFunction$1","cache","hit","camelizeRE$1","camelize$1","replace","_","c","toUpperCase","hyphenateRE$1","hyphenate$1","capitalize$1","charAt","toHandlerKey","hasChanged","invokeArrayFns","fns","arg","def","toNumber$1","parseFloat","isNaN","_globalThis","getGlobalThis","globalThis","self","global","callWithErrorHandling","instance2","err","handleError","callWithAsyncErrorHandling","throwInDev","contextVNode","vnode","cur","exposedInstance","errorInfo","errorCapturedHooks","ec","appErrorHandler","appContext","errorHandler","logError","console","error","isFlushing","isFlushPending","queue","flushIndex","pendingPreFlushCbs","activePreFlushCbs","preFlushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","Promise","resolve","currentFlushPromise","currentPreFlushParentJob","nextTick","p2","bind","findInsertionIndex","start2","end","middle","middleJobId","getId","queueJob","job","includes","queueFlush","flushJobs","invalidateJob","queueCb","cb","activeQueue","pendingQueue","queuePreFlushCb","queuePostFlushCb","flushPreFlushCbs","parentJob","flushPostFlushCbs","deduped","sort","a","b","Infinity","emit$1","event","rawArgs","isUnmounted","isModelListener2","modelArg","modifiersKey","number","handlerName","handler","onceHandler","emitted","normalizeEmitsOptions","comp","asMixin","emitsCache","cached","emits","hasExtends","extendEmits","raw2","normalizedFromExtend","mixins","extends","isEmitListener","options2","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","prev","__scopeId","withCtx","ctx","isNonScopedSlot","_n","renderFnWithContext","_d","setBlockTracking","prevInstance","renderComponentRoot","Component","withProxy","propsOptions","slots","emit","emit2","render2","renderCache","setupState","inheritAttrs","fallthroughAttrs","shapeFlag","proxyToUse","normalizeVNode","render3","getFunctionalFallthrough","blockStack","createVNode","Comment","root","keys","some","filterModelListeners","cloneVNode","dirs","concat","transition","shouldUpdateComponent","prevVNode","nextVNode","optimized","prevProps","children","prevChildren","nextProps","nextChildren","patchFlag","emitsOptions","$stable","hasPropsChanged","dynamicProps","nextKeys","updateHOCHostEl","subTree","isSuspense","__isSuspense","queueEffectWithSuspense","suspense","pendingBranch","provide","currentInstance","provides","parentProvides","inject","defaultValue","treatDefaultAsFactory","arguments","INITIAL_WATCHER_VALUE","source","doWatch","immediate","deep","flush","flush2","onTrack","onTrigger","cleanup","forceTrigger","isMultiSource","s","traverse","onCleanup","baseGetter","isInSSRComponentSetup","queuePostRenderEffect","instanceWatch","publicThis","createPathGetter","setCurrentInstance","unsetCurrentInstance","path","segments","useTransitionState","state2","isMounted","isLeaving","isUnmounting","leavingVNodes","onMounted","onBeforeUnmount","TransitionHookValidator","Function","BaseTransitionImpl","mode","appear","Boolean","persisted","onBeforeEnter","onEnter","onAfterEnter","onEnterCancelled","onBeforeLeave","onLeave","onAfterLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAfterAppear","onAppearCancelled","getCurrentInstance","prevTransitionKey","default","getTransitionRawChildren","child","rawProps","emptyPlaceholder","innerChild","getKeepAliveChild","enterHooks","resolveTransitionHooks","setTransitionHooks","oldChild","oldInnerChild","transitionKeyChanged","getTransitionKey","isSameVNodeType","leavingHooks","afterLeave","update","delayLeave","earlyRemove","delayedLeave","leavingVNodesCache","getLeavingNodesForType","_leaveCb","BaseTransition","callHook2","hook","callAsyncHook","every","hook2","hooks","leavingVNode","afterHook","cancelHook","called","_enterCb","cancelled","remove2","vnode2","isKeepAlive","ssContent","clone","ssFallback","keepComment","parentKey","keyedFragmentCount","Fragment","defineComponent","setup","isAsyncWrapper","__asyncLoader","__isKeepAlive","onActivated","registerKeepAliveHook","onDeactivated","wrappedHook","__wdc","current","isDeactivated","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","prepend","__weh","unshift","createHook","lifecycle","onBeforeMount","onBeforeUpdate","onUpdated","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","withDirectives","directives","internalInstance","getExposeProxy","bindings","dir","modifiers","mounted","updated","instance","invokeDirectiveHook","oldBindings","binding","COMPONENTS","DIRECTIVES","resolveComponent","maybeSelfReference","resolveAsset","NULL_DYNAMIC_COMPONENT","resolveDynamicComponent","resolveDirective","warnMissing","selfName","getComponentName","registry","renderList","renderItem","from","createSlots","dynamicSlots","slot","j","renderSlot","fallback","noSlotted","isCE","openBlock","validSlotContent","ensureValidVNode","rendered","createBlock","scopeId","slotScopeIds","vnodes","isVNode","getPublicInstance","isStatefulComponent","publicPropertiesMap","$","$el","$data","$props","$attrs","$slots","$refs","refs","$parent","$root","$emit","$options","resolveMergedOptions","$forceUpdate","f","$nextTick","$watch","PublicInstanceProxyHandlers","accessCache","normalizedProps","shouldCacheAccess","publicGetter","cssModule","globalProperties","__cssModules","descriptor","applyOptions","beforeCreate","callHook$1","dataOptions","computedOptions","watchOptions","provideOptions","injectOptions","created","beforeMount","beforeMount2","beforeUpdate","updated2","activated","deactivated","beforeDestroy","beforeUnmount","unmounted","unmounted2","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","filters","checkDuplicateProperties","resolveInjections","unwrapInjectedRef","methodHandler","opt","set2","createWatcher","registerLifecycleHook","register2","_hook","exposed","unwrapRef","normalizeInject","h2","base","extendsOptions","globalMixins","optionsCache","optionMergeStrategies","resolved","m","mergeOptions","to","strats","strat","internalOptionMergeStrats","mergeDataFn","mergeObjectOptions","mergeAsArray","mergeWatchOptions","mergeInject","merged","initProps","isStateful","InternalObjectKey","propsDefaults","setFullProps","updateProps","rawPrevProps","rawCurrentProps","hasAttrsChanged","kebabKey","resolvePropValue","propsToUpdate","camelizedKey","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","normalizePropsOptions","propsCache","extendProps","normalizedKey","validatePropName","prop","booleanIndex","getTypeIndex","stringIndex","getType","ctor","match","isSameType","expectedTypes","findIndex","t","isInternalKey","normalizeSlotValue","normalizeSlot","rawSlot","normalizeObjectSlots","rawSlots","_ctx","normalizeVNodeSlots","initSlots","updateSlots","needDeletionCheck","deletionComparisonTarget","createAppContext","app","isNativeTag","performance","warnHandler","compilerOptions","uid","createAppAPI","hydrate","rootComponent","rootProps","context","installedPlugins","_uid","_component","_props","_container","_context","_instance","version","plugin","install","mixin","directive2","rootContainer","isHydrate","isSVG","__vue_app__","setRef","rawRef","oldRawRef","parentSuspense","isUnmount","refValue","owner","oldRef","_isString","_isRef","doSet","existing","k","createRenderer","baseCreateRenderer","createHydrationFns","__VUE__","insert","hostInsert","hostRemove","patchProp","hostPatchProp","createElement","hostCreateElement","createText","hostCreateText","createComment","hostCreateComment","setText","hostSetText","setElementText","hostSetElementText","parentNode","hostParentNode","nextSibling","hostNextSibling","setScopeId","hostSetScopeId","cloneNode","hostCloneNode","insertStaticContent","hostInsertStaticContent","patch","n1","n2","anchor","parentComponent","dynamicChildren","getNextHostNode","unmount","Text","processText","processCommentNode","Static","mountStaticNode","processFragment","processElement","processComponent","process","internals","moveStaticNode","next2","removeStaticNode","mountElement","patchElement","vnodeHook","mountChildren","unmountChildren","onVnodeBeforeMount","invokeVNodeHook","needCallTransitionHooks","beforeEnter","onVnodeMounted","enter","parentVNode","cloneIfMounted","oldProps","newProps","toggleRecurse","onVnodeBeforeUpdate","areChildrenSVG","patchBlockChildren","patchChildren","patchProps","onVnodeUpdated","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","fragmentSlotScopeIds","traverseStaticChildren","activate","mountComponent","updateComponent","initialVNode","createComponentInstance","renderer","setupComponent","asyncDep","registerDep","setupRenderEffect","placeholder","asyncResolved","updateComponentPreRender","componentUpdateFn","bu","u","originNext","nextTree","prevTree","bm","isAsyncWrapperVNode","hydrateNode","hydrateSubTree","scopedInitialVNode","update2","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","oldLength","newLength","commonLength","Math","min","nextChild","parentAnchor","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","getSequence","nextIndex","move","moveType","needTransition","leave","remove3","performLeave","doRemove","deactivate","shouldInvokeDirs","shouldInvokeVnodeHook","onVnodeBeforeUnmount","unmountComponent","onVnodeUnmounted","removeFragment","performRemove","bum","um","suspenseId","pendingId","_vnode","p","mt","mc","pc","pbc","o","createApp","allowed","ch1","ch2","len","arrI","isTeleport","__isTeleport","currentBlock","disableTracking","closeBlock","isBlockTreeEnabled","setupBlock","createElementBlock","createBaseVNode","__v_isVNode","normalizeKey","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","__v_skip","targetAnchor","staticCount","normalizeChildren","normalize","_createVNode","cloned","isClassComponent","__vccOpts","guardReactiveProps","extraProps","mergeRef","mergedProps","mergeProps","createTextVNode","text2","flag","createCommentVNode","asBlock","memo","slotFlag","toMerge","incoming","emptyAppContext","uid$1","exposeProxy","setupContext","bc","da","rtg","rtc","sp","ce","off","compile","setupResult","setupStatefulComponent","createSetupContext","resolvedResult","handleSetupResult","e","finishComponentSetup","__ssrInlineRender","ssrRender","skipOptions","template","isCustomElement","delimiters","componentCompilerOptions","finalCompilerOptions","createAttrsProxy","includeInferred","displayName","__name","h","propsOrChildren","makeMap","specialBooleanAttrs","isSpecialBooleanAttr","includeBooleanAttr","onRE","isOn","isModelListener","extend","isFunction","isString","isObject","cacheStringFunction","camelizeRE","camelize","hyphenateRE","hyphenate","capitalize","toNumber","svgNS","doc","document","templateContainer","nodeOps","insertBefore","removeChild","tag","createElementNS","multiple","setAttribute","createTextNode","node","nodeValue","textContent","querySelector","selector","before","previousSibling","lastChild","innerHTML","wrapper","firstChild","appendChild","patchClass","transitionClasses","_vtc","join","removeAttribute","className","patchStyle","isCssString","setStyle","currentDisplay","display","importantRE","setProperty","prefixed","autoPrefix","prefixes","prefixCache","rawName","xlinkNS","patchAttr","removeAttributeNS","setAttributeNS","isBoolean","patchDOMProp","tagName","needRemove","_getNow","skipTimestampCheck","_getNow2","Date","now","skipTimestampCheck2","createEvent","timeStamp","ffMatch","navigator","userAgent","cachedNow","reset","getNow","addEventListener$1","addEventListener","removeEventListener","patchEvent","prevValue","nextValue","invokers","_vei","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","initialValue","attached","patchStopImmediatePropagation","originalStop","stopImmediatePropagation","_stopped","nativeOnRE","shouldSetAsProp","_trueValue","_falseValue","defineCustomElement","Comp","VueCustomElement","VueElement","initialProps","super","BaseClass","HTMLElement","_def","_connected","_resolved","_numberProps","shadowRoot","attachShadow","_resolveDef","attributes","_setAttr","MutationObserver","mutations","attributeName","observe","resolve3","def2","hasOptions","rawKeys","numberProps","_setProp","_getProp","_applyStyles","_update","asyncDef","getAttribute","shouldReflect","shouldUpdate","dispatchEvent","CustomEvent","host","css","TRANSITION","ANIMATION","Transition","resolveTransitionProps","DOMTransitionPropsValidators","enterFromClass","enterActiveClass","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","TransitionPropsValidators","callHook","hasExplicitCallback","baseProps","durations","normalizeDuration","enterDuration","leaveDuration","finishEnter","isAppear","removeTransitionClass","finishLeave","_isLeaving","makeEnterHook","nextFrame","addTransitionClass","whenTransitionEnds","forceReflow","NumberOf","cls","classList","requestAnimationFrame","endId","expectedType","explicitTimeout","_endId","resolveIfNotStale","timeout","propCount","getTransitionInfo","endEvent","ended","onEnd","getComputedStyle","getStyleProperties","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","max","hasTransform","delays","d","toMs","offsetHeight","positionMap","newPositionMap","TransitionGroupImpl","moveClass","hasCSSTransform","callPendingCbs","recordPosition","movedChildren","applyTranslation","transform","webkitTransform","transitionDuration","_moveCb","propertyName","cssTransitionProps","getBoundingClientRect","TransitionGroup","oldPos","newPos","dx","left","dy","top","nodeType","systemModifiers","modifierGuards","stopPropagation","prevent","preventDefault","currentTarget","ctrl","ctrlKey","shift","shiftKey","alt","altKey","meta","metaKey","button","right","exact","withModifiers","guard","keyNames","esc","space","up","down","withKeys","eventKey","vShow","_vod","setDisplay","rendererOptions","ensureRenderer","_export_sfc","sfc","_sfc_main$q","show","infinite","required","messageId","_hoisted_1$q","_hoisted_2$n","_hoisted_3$j","_hoisted_4$h","_hoisted_5$b","_hoisted_6$7","_sfc_render$q","_cache","$setup","Loader","_sfc_main$p","param","svgItem","search","toggle","menu","close","paperclip","send","emoji","pencil","checkmark","eye","dropdown","deleted","microphone","path2","_hoisted_1$p","_hoisted_2$m","_hoisted_3$i","_sfc_render$p","xmlns","width","height","viewBox","svgId","SvgIcon","_sfc_main$o","textMessages","showSearch","showAddRoom","loadingRooms","_hoisted_1$o","_hoisted_2$l","_sfc_render$o","_component_svg_icon","showSearchBar","SEARCH","autocomplete","onInput","onClick","RoomsSearch","linkify","_class$4","inherits","extended","constructor","__esModule","options$1","_typeof","defaults","defaultProtocol","events","format","noop$1","formatHref","nl2br","typeToTarget","validate","ignoreTags","Options","opts","linkAttributes","linkClass","ignoredTags","contains","href","toHref","formatted","formattedHref","getObject","check","operator","optionValue","option","scanner$1","state","stateify","TokenState","CharacterState","_class$3","createStateClass","tClass","T","BaseState","defaultTransition","symbol","jump2","accepts","character","charOrRegExp","RegExp","jump","tokenClass","endToken","defaultToken","newStates","nextState","text$1","createTokenClass$1","createTokenClass","AMPERSAND","CLOSEPAREN","CLOSEANGLEBRACKET","CLOSEBRACKET","CLOSEBRACE","OPENPAREN","OPENANGLEBRACKET","OPENBRACKET","OPENBRACE","WS","TLD","SYM","UNDERSCORE","SLASH","MAILTO","PROTOCOL","QUERY","POUND","PLUS","NUM","NL","LOCALHOST","PUNCTUATION","DOT","COLON","AT","DOMAIN","Base","_createTokenClass$1","_class$2","TextToken","inheritsToken","NL$1","start","TOKENS","State","_state$1","_text$2","_interopRequireWildcard$2","newObj","tlds","NUMBERS","ALPHANUM","WHITESPACE","domainStates","makeState$1","S_START$1","S_NUM","S_DOMAIN$1","S_DOMAIN_HYPHEN","S_WS","partialProtocolFileStates","partialProtocolFtpStates","partialProtocolHttpStates","partialProtocolMailtoStates","S_PROTOCOL_FILE","S_PROTOCOL_FTP","S_PROTOCOL_HTTP","S_MAILTO$1","S_PROTOCOL_SECURE","S_FULL_PROTOCOL","S_FULL_MAILTO","partialLocalhostStates","_i","run$2","lowerStr","tokens","cursor","tokenLength","latestAccepting","sinceAccepts","TOKEN","substr","parser$1","multi","URL","TEXT","EMAIL","MAILTOEMAIL","_createTokenClass","_class$1","_text$1","isDomainToken","MultiToken","isLink","toObject","protocol","URL$1","hasProtocol2","hasSlashSlash","hasProtocol","_state","_multi","MULTI_TOKENS","_interopRequireWildcard$1","_text","makeState2","S_START","S_PROTOCOL","S_MAILTO","S_PROTOCOL_SLASH","S_PROTOCOL_SLASH_SLASH","S_DOMAIN","S_DOMAIN_DOT","S_TLD","S_TLD_COLON","S_TLD_PORT","S_URL","S_URL_NON_ACCEPTING","S_URL_OPENBRACE","S_URL_OPENBRACKET","S_URL_OPENANGLEBRACKET","S_URL_OPENPAREN","S_URL_OPENBRACE_Q","S_URL_OPENBRACKET_Q","S_URL_OPENANGLEBRACKET_Q","S_URL_OPENPAREN_Q","S_URL_OPENBRACE_SYMS","S_URL_OPENBRACKET_SYMS","S_URL_OPENANGLEBRACKET_SYMS","S_URL_OPENPAREN_SYMS","S_EMAIL_DOMAIN","S_EMAIL_DOMAIN_DOT","S_EMAIL","S_EMAIL_COLON","S_EMAIL_PORT","S_MAILTO_EMAIL","S_MAILTO_EMAIL_NON_ACCEPTING","S_LOCALPART","S_LOCALPART_AT","S_LOCALPART_DOT","S_NL","qsAccepting","qsNonAccepting","localpartAccepting","run$1","multis","textTokens","secondState","multiLength","MULTI","tokenize","scanner","parser","options","_class","_options","_interopRequireWildcard","_scanner","_parser","filtered","test4","linkifyjs","formatString$1","doLinkify","textFormatting","typeMarkdown","bold","italic","strike","underline","multilineCode","inlineCode","pseudoMarkdown","allowed_chars","json","compileToJSON","html","compileToHTML","linkifyResult","minIndexOf","minIndexOfKey","links","minIndexFromLink","startingValue","io","strLeft","strLink","strRight","char","object","types","parseContent","iterateContent","it","removeDuplicates","items","array","spaces","IMAGE_TYPES","VIDEO_TYPES","AUDIO_TYPES","_sfc_main$n","roomList","singleLine","reply","linkOptions","MESSAGE_DELETED","formatTags","disabled","checkType","inline","multiline","image","checkImageType","replaceEmojiByElement","lastIndexOf","slashIndex","substring","isMedia","setImageSize","Image","onLoad","img","ratio","round","src","firstTag","secondTag","usertags","matchAll","initialContent","userId","user2","replaceAll","emojiSize","onlyEmojis","containsOnlyEmojis","visibleChars","_hoisted_1$n","_hoisted_2$k","_hoisted_3$h","_hoisted_4$g","_sfc_render$n","formattedContent","linkifiedMessage","rel","openTag","FormatMessage","HANDLERS_PROPERTY","HAS_WINDOWS","HAS_NAVIGATOR","IS_TOUCH","msMaxTouchPoints","EVENTS","processDirectiveArguments","bindingValue","isFunction2","Error","middleware","isActive","detectIframe","capture","execHandler","onFauxIframeClick","activeElement","onEvent","composedPath","isClickOutside","eventName","srcTarget","documentElement","detectIframeEvent","thisHandler","handlers","directive","vClickOutside","typingText","room","status","IS_TYPING","checkMediaType","isImageFile","isVideoFile","isImageVideoFile","isAudioFile","_sfc_main$m","clickOutside","roomActions","roomMenuOpened","isTyping","saved","_a","_b","floor","closeRoomMenu","_hoisted_1$m","_hoisted_2$j","_hoisted_3$g","_hoisted_4$f","_hoisted_5$a","_hoisted_6$6","_hoisted_7$6","_hoisted_8$4","_hoisted_9$4","_hoisted_10$4","_hoisted_11$3","_hoisted_12$3","_hoisted_13$1","_sfc_render$m","_component_format_message","_directive_click_outside","userStatus","isMessageCheckmarkVisible","isAudio","formattedDuration","getLastMessage","idx","unreadCount","roomActionHandler","RoomContent","filteredItems","formatString","string","_sfc_main$l","showRoomsList","isMobile","customSearchRoomEnabled","scrollDistance","filteredRooms","observer","showLoader","loadingMoreRooms","selectedRoomId","oldVal","initIntersectionObserver","disconnect","loader","rootMargin","threshold","IntersectionObserver","isIntersecting","loadMoreRooms","ev","_hoisted_1$l","_hoisted_2$i","_hoisted_3$f","_hoisted_4$e","_sfc_render$l","_component_rooms_search","_component_loader","_component_room_content","onSearchRoom","searchRoom","onAddRoom","ROOMS_EMPTY","fRoom","openRoom","onRoomActionHandler","RoomsList","_sfc_main$k","roomInfoEnabled","menuActions","messageSelectionEnabled","messageSelectionActions","selectedMessagesTotal","menuOpened","messageSelectionAnimationEnded","IS_ONLINE","lastChanged","LAST_SEEN","closeMenu","_hoisted_1$k","_hoisted_2$h","_hoisted_3$e","_hoisted_4$d","_hoisted_5$9","_hoisted_6$5","_hoisted_7$5","_hoisted_8$3","_hoisted_9$3","_hoisted_10$3","_hoisted_11$2","_hoisted_12$2","_hoisted_13","_sfc_render$k","messageSelectionActionHandler","CANCEL_SELECT_MESSAGE","RoomHeader","assertNonEmptyString","assertNumber","DB_VERSION_CURRENT","DB_VERSION_INITIAL","STORE_EMOJI","STORE_KEYVALUE","STORE_FAVORITES","FIELD_TOKENS","INDEX_TOKENS","FIELD_UNICODE","INDEX_COUNT","FIELD_GROUP","FIELD_ORDER","INDEX_GROUP_AND_ORDER","KEY_ETAG","KEY_URL","KEY_PREFERRED_SKINTONE","MODE_READONLY","MODE_READWRITE","INDEX_SKIN_UNICODE","FIELD_SKIN_UNICODE","DEFAULT_DATA_SOURCE$1","DEFAULT_LOCALE$1","uniqBy$1","func","uniqEmoji","emojis","unicode","initialMigration","db","createObjectStore","keyPath","indexes","store","indexName","keyPath2","multiEntry","createIndex","openReqs","databaseCache","onCloseListeners","handleOpenOrDeleteReq","reject","req","onerror","onblocked","onsuccess","async","createDatabase","dbName","indexedDB","open","onupgradeneeded","oldVersion","onclose","closeDatabase","openDatabase","dbPromise","storeName","readOnlyOrReadWrite","txn","transaction","durability","objectStore","oncomplete","listeners","listener","deleteDatabase","addOnCloseListener","irregularEmoticons","extractTokens","word","MIN_SEARCH_TEXT_LENGTH$1","normalizeTokens","transformEmojiData","emojiData","annotation","emoticon","group","order","shortcodes","skins","tags","version2","flat","res2","skinTones","skinUnicodes","skinVersions","tone","emoji2","version3","callStore","getIDB","getAllIDB","commit","minBy","minItem","findCommonMembers","arrays","uniqByFunc","shortestArray","results","isEmpty","get2","hasData","eTag","oldETag","oldUrl","all","doFullDatabaseScanForSingleResult","predicate","BATCH_SIZE","emojiStore","lastKey","processNextBatch","getAll","IDBKeyRange","lowerBound","loadData","transformedData","metaStore","todo","checkFetched","onFetched","getEmojiByGroup","range","bound","getEmojiBySearchQuery","query","intermediateResults","checkDone","onDone","only","getEmojiByShortcode","shortcode","lowerShortcodes","_2","getEmojiByUnicode","result2","incrementFavoriteEmojiCount","getTopFavoriteEmoji","customEmojiIndex2","limit","favoritesStore","openCursor","addResult","continue","unicodeOrName","primaryKey","custom","byName","CODA_MARKER","trie","itemToTokens","currentMap","nextMap","valuesAtCoda","results2","queue2","currentMap2","entriesSortedByKey","requiredKeys$1","assertCustomEmojis","customEmojis","isArray2","firstItemIsFaulty","customEmojiIndex","sortByName","emojiToTokens","searchTrie","searchByExactMatch","searchByPrefix","shortcodeToEmoji","nameToEmoji","customEmoji","byShortcode","cleanEmoji","warnETag","warn","requiredKeys","assertEmojiData","assertStatus","dataSource","getETag","getETagAndData","arrayBufferToBinaryString","buffer","binary","bytes","Uint8Array","byteLength","fromCharCode","binaryStringToArrayBuffer","buf","ArrayBuffer","charCodeAt","jsonChecksum","inString","inBuffer","outBuffer","crypto","subtle","digest","outBinString","btoa","checkForUpdates","eTagAndData","loadDataForFirstTime","Database","locale","_dbName","_db","_lazyUpdate","_custom","_clear","_ready","_init","empty","checkReady","ready","customs","natives","skinTone","_shutdown","noop","run3","blank_object","run_all","is_function","thing","safe_not_equal","src_url_equal_anchor","current_component","src_url_equal","element_src","is_empty","action_destroyer","action_result","destroy","detach","element","text","listen","attr","attribute","set_data","wholeText","set_input_value","input","set_style","important","removeProperty","set_current_component","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","update_scheduled","schedule_update","tick","add_render_callback","seen_callbacks","flushidx","saved_component","$$","fragment","before_update","dirty","after_update","outroing","transition_in","block","local","globals","destroy_block","lookup","update_keyed_each","old_blocks","get_key","dynamic","create_each_block2","get_context","old_indexes","new_blocks","new_lookup","deltas","child_ctx","abs","will_move","did_move","insert2","first","new_block","old_block","new_key","old_key","mount_component","customElement","on_mount","on_destroy","new_on_destroy","destroy_component","detaching","make_dirty","fill","init","create_fragment2","not_equal","append_styles","parent_component","on_disconnect","callbacks","skip_bound","rest","SvelteComponent","$destroy","$$props","$$set","allGroups","groups","customGroup","MIN_SEARCH_TEXT_LENGTH","NUM_SKIN_TONES","rIC","requestIdleCallback","hasZwj","versionsAndTestEmoji","TIMEOUT_BEFORE_LOADING_MESSAGE","DEFAULT_SKIN_TONE_EMOJI","DEFAULT_NUM_COLUMNS","MOST_COMMONLY_USED_EMOJI","FONT_FAMILY","DEFAULT_CATEGORY_SORTING","getTextFeature","color","canvas","getContext","textBaseline","font","fillStyle","scale","fillText","getImageData","compareFeatures","feature1","feature2","feature1Str","feature2Str","testColorEmojiSupported","determineEmojiSupportLevel","emojiSupportLevelPromise","supportedZwjEmojis","VARIATION_SELECTOR","SKINTONE_MODIFIER","ZWJ","LIGHT_SKIN_TONE","LIGHT_SKIN_TONE_MODIFIER","applySkinTone","zwjIndex","fromCodePoint","endsWith","halt","incrementOrDecrement","decrement","uniqBy","summarizeEmojisForUI","emojiSupportLevel","toSimpleSkinsMap","skin","category","rAF","baselineEmojiWidth","resizeObserverSupported","ResizeObserver","calculateWidth","onUpdate","resizeObserver","contentRect","calculateTextWidth","createRange","selectNode","checkZwjSupport","zwjEmojisToCheck","baselineEmoji","emojiToDomNode","domNode","emojiWidth","supported","uniq","Map_1","get_each_context","get_each_context_1","get_each_context_2","get_each_context_3","get_each_context_4","create_each_block_4","key_1","div","div_id_value","div_class_value","div_aria_selected_value","div_title_value","div_aria_label_value","t_value","new_ctx","create_each_block_3","button_aria_controls_value","button_aria_label_value","button_aria_selected_value","button_title_value","dispose","click_handler","categories","create_else_block_1","img_src_value","ctx2","create_if_block_1","create_each_block_2","button_role_value","button_class_value","button_id_value","select_block_type","current_block_type","if_block","create_each_block_1","div0","div0_id_value","div0_class_value","div1","div1_role_value","div1_aria_labelledby_value","div1_id_value","searchResultsLabel","each_blocks","each_1_lookup","each_value_2","create_else_block","create_if_block","create_each_block","select_block_type_1","create_fragment","section","div4","input_placeholder_value","input_aria_expanded_value","input_aria_activedescendant_value","label","t0","span0","t1","div2","button0","t2","button0_class_value","div2_class_value","span1","t3","div3","div3_class_value","div3_aria_label_value","div3_aria_activedescendant_value","div3_aria_hidden_value","div5","div5_aria_label_value","div7","div6","div8","t4","div8_class_value","div10","div9","div10_class_value","div10_role_value","div10_aria_label_value","div10_id_value","div11","div11_class_value","div11_aria_label_value","button1","section_aria_label_value","t0_value","searchLabel","t1_value","searchDescription","t3_value","skinToneDescription","each_blocks_3","each0_lookup","each_blocks_2","each1_lookup","each_blocks_1","each2_lookup","each3_lookup","each_value_4","each_value_3","get_key_1","each_value_1","get_key_2","each_value","get_key_3","skinTonesLabel","categoriesLabel","favoritesLabel","regionLabel","$$self","$$invalidate","rootElement","tabpanelElement","skinToneDropdown","skinToneButtonText","pickerStyle","defaultFavoriteEmojis","currentGroup","activeSearchItemId","skinToneEmoji","i18n","database","customCategorySorting","initialLoad","currentEmojis","currentEmojisWithCategories","rawSearchText","searchText","searchMode","activeSearchItem","skinTonePickerExpanded","skinTonePickerExpandedAfterAnimation","currentSkinTone","activeSkinTone","skinToneButtonLabel","currentFavorites","numColumns","isRtl","scrollbarWidth","currentGroupIndex","groups$1","databaseLoaded","focus","getRootNode","getElementById","fireEvent","bubbles","composed","unicodeWithSkin","currentSkinTone2","labelWithSkin","isSkinToneOption","element2","calculateEmojiGridStyle","newNumColumns","getPropertyValue","newIsRtl","parentWidth","parentElement","newScrollbarWidth","checkZwjSupportAndUpdate","rootNode","isZwjSupported","filterEmojisByVersion","summarizeEmojis","getEmojisByGroup","getEmojisBySearchQuery","onSearchKeydown","goToNextOrPrevious","previous","clickEmoji","onNavClick","onNavKeydown","doFocus","getEmojiByUnicodeOrName","emojiSummary","skinTonedUnicode","onEmojiClick","onSkinToneOptionsClick","setPreferredSkinTone","onClickSkinToneButton","onSkinToneOptionsKeydown","changeActiveSkinTone","nextSkinTone","onSkinToneOptionsKeyup","onSkinToneOptionsFocusOut","relatedTarget","input_input_handler","div3_binding","$$value","level","emojiUnsupportedMessage","div10_binding","button1_binding","section_binding","$$props2","handleDatabaseLoading","showingLoadingMessage","timeoutHandle","loadingMessage","networkErrorMessage","clearTimeout","updateEmojis","currentSearchText","newEmojis","currentGroupId","updatePreferredSkinTone","getPreferredSkinTone","skinToneLabel","updateDefaultFavoriteEmojis","updateFavorites","dbFavorites","favorites","scrollTop","calculateCurrentEmojisWithCategories","categoriesToEmoji","once","Picker","DEFAULT_DATA_SOURCE","DEFAULT_LOCALE","enI18n","activities","objects","symbols","flags","PROPS","PickerElement","_dbFlush","_cmp","attrName","_set","$set","_dbCreate","definitions","findParentBySelector","defineProperties","customElements","define","_sfc_main$j","emojiOpened","emojiReaction","positionTop","positionRight","emojiDataSource","emojiPickerHeight","emojiPickerTop","emojiPickerRight","addCustomStyling","emojiPicker","picker","nav","searchBox","setEmojiPickerPosition","clientY","view","innerWidth","innerHeight","mobileSize","roomFooterRef","roomFooterTop","pickerTopPosition","_hoisted_1$j","_sfc_render$j","_component_emoji_picker","openEmoji","EmojiPickerContainer","_sfc_main$i","_hoisted_1$i","_hoisted_2$g","_hoisted_3$d","_hoisted_4$c","_sfc_render$i","loading","isImage","localUrl","isVideo","controls","RoomFile","_sfc_main$h","_hoisted_1$h","_hoisted_2$f","_hoisted_3$c","_sfc_render$h","_component_room_file","onRemoveFile","RoomFiles","_sfc_main$g","percentage","isMouseDown","seekPos","calculateLineHeadPosition","progress","onMouseMove","onMouseUp","progressWidth","leftPosition","pos","clientX","_hoisted_1$g","_hoisted_2$e","_sfc_render$g","onMousedown","onMouseDown","onMouseover","onMouseout","AudioControl","_sfc_main$f","isPlaying","convertTimeMMSS","playedTime","resetProgress","player","playerUniqId","updateProgressTime","onTimeUpdate","toISOString","audioSource","pause","play","currentTime","_hoisted_1$f","_hoisted_2$d","_sfc_render$f","_component_audio_control","playback","onChangeLinehead","onUpdateProgress","onHoverAudioProgress","AudioPlayer","_sfc_main$e","messageReply","firstFile","_hoisted_1$e","_hoisted_2$c","_hoisted_3$b","_hoisted_4$b","_hoisted_5$8","_hoisted_6$4","_hoisted_7$4","_hoisted_8$2","_hoisted_9$2","_hoisted_10$2","_hoisted_11$1","_hoisted_12$1","_sfc_render$e","_component_audio_player","isOtherFile","RoomMessageReply","_sfc_main$d","filteredUsersTag","selectItem","activeUpOrDown","activeItem","_hoisted_1$d","_hoisted_2$b","_hoisted_3$a","_hoisted_4$a","_sfc_render$d","RoomUsersTag","_sfc_main$c","filteredEmojis","_hoisted_1$c","_hoisted_2$a","_sfc_render$c","RoomEmojis","_sfc_main$b","filteredTemplatesText","_hoisted_1$b","_hoisted_2$9","_hoisted_3$9","_hoisted_4$9","_hoisted_5$7","_sfc_render$b","RoomTemplatesText","new_byte$4","count","Int8Array","new_short","Int16Array","new_int$d","Int32Array","new_float$f","Float32Array","new_double$1","Float64Array","new_float_n$6","sz","A","new_int_n$2","new_short_n$1","new_array_n$1","Arrays$7","fromIndex","toIndex","System$a","srcPos","dest","destPos","srcEnd","out","println","log","printf","Util$5","ShortBlock$3","ordinal","SQRT2","FAST_LOG10","x","log10","FAST_LOG10_X","y","short_block_allowed","short_block_coupled","short_block_dispensed","short_block_forced","Float$2","VbrMode$7","MAX_VALUE","vbr_off","vbr_mt","vbr_rh","vbr_abr","vbr_mtrh","vbr_default","assert$b","common","System","VbrMode","Float","ShortBlock","Util","Arrays","new_array_n","new_byte","new_double","new_float","new_float_n","new_int","new_int_n","new_short_n","assert","System$9","Util$4","Arrays$6","new_float$e","NewMDCT","enwindow","NS","NL2","win","tantab_l","Encoder","SHORT_TYPE","cx","ca","cs","window_subband","x1","x1Pos","xr","wp","x2","mdct_short","inout","inoutPos","tc0","tc1","tc2","ts0","ts1","ts2","mdct_long","outPos","_in","ct","st","tc3","tc4","ts5","ts6","ts7","ts8","ts3","ts4","tc5","tc6","tc7","tc8","mdct_sub48","gfc","w0","w1","wk","wkPos","ch","channels_out","gr","mode_gr","band","gi","l3_side","tt","mdct_enc","mdct_encPos","samp","sb_sample","sampPos","block_type","band0","band1","mixed_block_flag","amp_filter","work","bd","arraycopy","System$8","new_float$d","new_float_n$5","III_psy_xmin","SBMAX_l","SBMAX_s","iii_psy_xmin","III_psy_ratio","thm","en","MPEGMode","_ordinal","STEREO","JOINT_STEREO","DUAL_CHANNEL","MONO","NOT_SET","System$7","VbrMode$6","new_float$c","new_float_n$4","new_int$c","assert$a","FFTOFFSET","MPG_MD_MS_LR","bs","psy","vbr","qupvt","setModules","_bs","_psy","_qupvt","_vbr","newMDCT","adjust_ATH","gr2_max","max_pow","ATH","useAdjust","loudness_sq","aaSensitivityP","adjust","adjustLimit","adj_lim_new","updateStats","bitrate_index","mode_ext","bitrate_stereoMode_Hist","bt","bitrate_blockType_Hist","lame_encode_frame_init","gfp","inbuf","internal_flags","primebuff0","primebuff1","mf_size","BLKSIZE","framesize","lame_encode_mp3_frame","inbuf_l","inbuf_r","mp3buf","mp3bufPos","mp3buf_size","mp3count","masking_LR","masking","masking_MS","pe_use","tot_ener","ms_ener_ratio","pe","pe_MS","padding","slot_lag","frac_SpF","out_samplerate","psymodel","bufp","bufpPos","blocktype","VBR","L3psycho_anal_vbr","L3psycho_anal_ns","cod_info","NORM_TYPE","MPG_MD_LR_LR","force_ms","sum_pe_MS","sum_pe_LR","gi0","gi1","analysis","pinfo","ms_ratio","ers","energy","nsPsy","pefirbuf","fircoef","iteration_loop","format_bitstream","copy_buffer","bWriteVbrTag","addVbrFrame","pcmdata","set_frame_pinfo","ENCDELAY","POSTDELAY","MDCTDELAY","DECDELAY","SBLIMIT","CBANDS","SBPSY_l","SBPSY_s","PSFB21","PSFB12","HBLKSIZE","BLKSIZE_s","HBLKSIZE_s","START_TYPE","STOP_TYPE","MPG_MD_LR_I","MPG_MD_MS_I","Util$3","new_float$b","FFT","window2","window_s","costab","fht","fz","fzPos","k4","fi","tri","k1","k2","k3","kx","f1","f0","f3","f2","g0","g1","g2","g3","rv_tbl","fft_short","x_real","chn","bufPos","fft_long","jj","init_fft","cos","PI","VbrMode$5","Float$1","ShortBlock$2","Util$2","Arrays$5","new_float$a","new_float_n$3","new_int$b","assert$9","PsyModel","fft","LOG10","rpelev","rpelev2","rpelev_s","rpelev2_s","DELBARK","VO_SCALE","temporalmask_sustain_sec","NS_PREECHO_ATT0","NS_PREECHO_ATT1","NS_PREECHO_ATT2","NS_MSFIX","NSFIRLEN","LN_TO_LOG10","NON_LINEAR_SCALE_ENERGY","psycho_loudness_approx","loudness_power","eql_w","compute_ffts","fftenergy","fftenergy_s","wsamp_l","wsamp_lPos","wsamp_s","wsamp_sPos","gr_out","re","im","totalenergy","energy_save","athaa_loudapprox","loudness_sq_save","ma_max_i1","ma_max_i2","ma_max_m","I1LIMIT","I2LIMIT","MLIMIT","tab","init_mask_add_max_values","pow","table1","table2","table3","mask_add","m1","m2","kk","shortblock","cb_s","cb_l","table2_","vbrpsy_mask_add","calc_interchannel_masking","sb","sblock","msfix1","mld","mld_l","rmid","rside","mld_s","ns_msfix","msfix","athadjust","msfix2","athlower","ath","bm_l","thmLR","thmM","thmS","bm_s","convert_partition2scalefac_s","eb","thr","enn","thmm","bo_s_sb","bo_s","npart_s","b_lim","w_curr","PSY","bo_s_weight","w_next","convert_partition2scalefac_l","bo_l_sb","bo_l","npart_l","bo_l_weight","compute_masking_s","ebb","numlines_s","s3ind_s","ecb","s3_ss","nb_s1","blocktype_old","nb_s2","block_type_set","uselongblock","blocktype_d","short_blocks","NS_INTERP","regcoef_s","pecalc_s","mr","masking_lower","pe_s","regcoef_l","pecalc_l","pe_l","calc_energy","avg","numlines_l","rnumlines_l","calc_mask_index_l","mask_idx","last_tab_entry","vbrpsy_compute_fft_l","vbrpsy_compute_fft_s","vbrpsy_compute_loudness_approximation_l","masking_ratio","masking_MS_ratio","percep_entropy","percep_MS_entropy","numchn","pcfact","wsamp_L","wsamp_S","eb_l","eb_s","ns_hpfsmpl","mask_idx_l","mask_idx_s","ResvMax","ResvSize","firbuf2","firbufPos","sum1","sum2","attackThreshold","en_subshort","en_short","attack_intensity","ns_uselongblock","ns_attacks","last_en_subshort","pf","pfPos","pfe","ers_save","attackthre_s","attackthre","lastAttacks","s3ind","eb2","s3_ll","nb_1","nb_2","interChRatio","ATHlower","ppe","ppePos","fircoef_","vbrpsy_attack_detection","sub_short_factor","n_chn_out","n_chn_psy","firbuf","factor","vbrpsy_skip_masking_s","vbrpsy_skip_masking_l","psyvbr_calc_mask_index_s","vbrpsy_compute_masking_s","float","int","dd","dd_n","avg_mask","minval_s","vbrpsy_compute_masking_l","ecb_limit","ecb_limit_2","ecb_limit_1","minval_l","vbrpsy_compute_block_type","vbrpsy_apply_block_type","vbrpsy_compute_MS_thresholds","cb_mld","ath_cb","ebM","ebS","thmL","thmR","mld_m","thmMS","s3_func_x","bark","hf_slope","tempy","tempx","exp","norm_s3_func_x","lim_a","lim_b","sum","norm","s3_func","temp","sqrt","freq2bark","freq","atan","init_numline","numlines","bo","bval","bval_width","bo_w","sfreq","blksize","scalepos","deltafreq","sbmax","b_frq","sample_freq_frac","partition","ni","j2","bark1","sfb","i1","i2","f_tmp","bark2","init_s3_values","npart","use_old_s3","s3","numberOfNoneZero","s3_x_norm","stereo_demask","ATHformula_GB","ch01","mld_cb_l","mld_cb_s","new_thmm","psymodel_init","useOldS3","bvl_a","bvl_b","snr_l_a","snr_l_b","snr_s_a","snr_s_b","experimentalZ","ms_ener_ratio_old","scalefac_band","snr","ATHformula","decay","exp_nspsytune","frame_duration","ATHtype","freq_inc","eql_balance","ATHcurve","LameGlobalFlags","class_id","num_samples","num_channels","in_samplerate","scale_left","scale_right","decode_only","quality","free_format","findReplayGain","decode_on_the_fly","write_id3tag_automatic","brate","compression_ratio","copyright","original","emphasis","error_protection","strict_ISO","disable_reservoir","quant_comp","quant_comp_short","experimentalY","preset","VBR_q_frac","VBR_q","VBR_mean_bitrate_kbps","VBR_min_bitrate_kbps","VBR_max_bitrate_kbps","VBR_hard_min","lowpassfreq","highpassfreq","lowpasswidth","highpasswidth","maskingadjust","maskingadjust_short","ATHonly","ATHshort","noATH","athaa_type","athaa_sensitivity","useTemporal","tune","tune_value_a","encoder_delay","encoder_padding","frameNum","lame_allocated_gfp","L3Side$1","SFBMAX","new_float$9","new_int$a","GrInfo","l3_enc","scalefac","xrpow_max","part2_3_length","big_values","count1","global_gain","scalefac_compress","table_select","subblock_gain","region0_count","region1_count","preflag","scalefac_scale","count1table_select","part2_length","sfb_lmax","sfb_smin","psy_lmax","sfbmax","psymax","sfbdivide","count1bits","sfb_partition_table","slen","max_nonzero_coeff","clone_int","clone_float","other","new_int$9","IIISideInfo","main_data_begin","private_bits","resvDrain_pre","resvDrain_post","scfsi","System$6","new_int$8","ScaleFac","arrL","arrS","arr21","arr12","psfb21","psfb12","new_float$8","new_float_n$2","new_int$7","NsPsy","longfact","shortfact","VBRSeekInfo","want","bag","nVbrNumFrames","nBytesWritten","TotalFrameSize","new_byte$3","new_float$7","new_float_n$1","new_int$6","new_int_n$1","LameInternalFlags$1","MAX_HEADER_LEN","Header","write_timing","Class_ID","iteration_init_init","fill_buffer_resample_init","mfbuf","MFSIZE","channels_in","resample_ratio","mf_samples_to_encode","VBR_min_bitrate","VBR_max_bitrate","samplerate_index","lowpass1","lowpass2","highpass1","highpass2","noise_shaping","noise_shaping_amp","substep_shaping","noise_shaping_stop","use_best_huffman","full_outer_loop","tag_spec","nMusicCRC","OldValue","CurrentStep","bv_scf","pseudohalf","sfb21_extra","inbuf_old","blackfilt","BPC","itime","sideinfo_len","header","MAX_HEADER_BUF","h_ptr","w_ptr","ancillary_flag","numlines_s_num1","numlines_l_num1","ms_ratio_s_old","ms_ratio_l_old","VBR_seek_table","nogap_total","nogap_current","findPeakSample","PeakSample","RadioGain","AudiophileGain","rgdata","noclipGainChange","noclipScale","hip","in_buffer_nsamples","in_buffer_0","in_buffer_1","MAX_BITS_PER_CHANNEL","MAX_BITS_PER_GRANULE","new_float$6","System$5","Arrays$4","GainAnalysis$1","PINK_REF","RMS_PERCENTILE","RMS_WINDOW_TIME_NUMERATOR","RMS_WINDOW_TIME_DENOMINATOR","ABYule","ABButter","filterYule","inputPos","output","outputPos","nSamples","kernel","filterButter","ResetSampleFrequency","rgData","samplefreq","MAX_ORDER","linprebuf","lstepbuf","loutbuf","rinprebuf","rstepbuf","routbuf","reqindex","INIT_GAIN_ANALYSIS_ERROR","sampleWindow","lsum","rsum","totsamp","ill","INIT_GAIN_ANALYSIS_OK","fsqr","analyzeResult","Array2","elems","GAIN_NOT_ENOUGH_SAMPLES","upper","ceil","STEPS_per_dB","InitGainAnalysis","linpre","rinpre","lstep","rstep","lout","rout","B","AnalyzeSamples","left_samples","left_samplesPos","right_samples","right_samplesPos","curleft","curleftBase","curright","currightBase","batchsamples","cursamples","cursamplepos","GAIN_ANALYSIS_OK","GAIN_ANALYSIS_ERROR","ival","GetTitleGain","retval","MAX_dB","YULE_ORDER","MAX_SAMP_FREQ","MAX_SAMPLES_PER_WINDOW","new_float$5","new_int$5","ReplayGain","freqindex","MeanBits$1","meanBits","bits","new_float$4","new_int$4","assert$8","CBRNewIterationLoop","_quantize","quantize","max_bits","l3_xmin","xrpow","targ_bits","mean_bits","mb","rv","ResvFrameBegin","on_pe","ms_convert","reduce_side","masking_lower_db","mask_adjust","mask_adjust_short","init_outer_loop","init_xrpow","calc_xmin","outer_loop","iteration_finish_one","ResvFrameEnd","HuffCodeTab","hl","xlen","linmax","table","hlen","Tables$1","ht","t1HB","t1l","t2HB","t2l","t3HB","t3l","t5HB","t5l","t6HB","t6l","t7HB","t7l","t8HB","t8l","t9HB","t9l","t10HB","t10l","t11HB","t11l","t12HB","t12l","t13HB","t13l","t16_5l","t15HB","t15l","t16HB","t16l","t24HB","t24l","t32HB","t32l","t33HB","t33l","largetbl","table23","table56","bitrate_table","samplerate_table","scfsi_band","VbrMode$4","Util$1","new_float$3","new_int$3","assert$7","QuantizePVT","tak","POW20","pow20","Q_MAX2","_tk","_rv","IPOW20","ipow20","DBL_EPSILON","IXMAX_VAL","PRECALC_SIZE","Q_MAX","NSATHSCALE","nr_of_sfb_block","pretab","sfBandIndex","pow43","adj43","ATHmdct","compute_ath","ATH_l","ATH_psfb21","ATH_s","ATH_psfb12","samp_freq","ATH_f","StartLine","iteration_init","bass","alto","treble","sfb21","huffman_init","cbr","tbits","add_bits","extra_bits","ResvMaxBits","fac","move_bits","athAdjust","athFloor","pxmin","gsfb","pxminPos","ath_over","ATH2","enable_athaa_fix","xmin","rh1","rh2","en0","xa","xb","max_nonzero","BitStream$1","EQ","tmpATH","calc_noise_core","startline","step","noise","ix","ix01","calc_noise","distort","prev_noise","distortPos","l3_xminPos","over","over_noise_db","tot_noise_db","max_noise","scalefacPos","over_SSD","noise_log","usefullsize","sl","over_count","tot_noise","over_noise","set_pinfo","sfb2","en1","ifqstep","L3Side","xfsf","CalcNoiseResult","bw","LAMEsfb","en_s","xfsf_s","thr_s","LAMEsfb_s","LAMEqss","LAMEmainbits","LAMEsfbits","LARGE_BITS","System$4","Arrays$3","new_int$2","assert$6","Takehiro","Bits","subdv_table","quantize_lines_xrpow_01","istep","xrPos","ixPos","compareval0","quantize_lines_xrpow","remaining","x0","x3","rx0","rx1","rx2","rx3","quantize_xrpow","xp","pi","codInfo","prevNoise","prev_data_use","accumulate","accumulate01","xpPos","iData","iDataPos","acc_iData","acc_iDataPos","acc_xp","acc_xpPos","sfb_count1","ix_max","endPos","max1","max2","count_bit_ESC","linbits","count_bit_noESC","hlen1","count_bit_noESC_from2","count_bit_noESC_from3","sum3","hlen2","hlen3","huf_tbl_noESC","choose_table","choice2","choice","recalc_divide_init","r01_bits","r01_div","r0_tbl","r1_tbl","bigv","r0","a1","r0bits","bi","r0t","r1","a2","r1t","recalc_divide_sub","cod_info2","r2","r2t","noquant_count_bits","best_huffman_divide","count_bits","gain","roundfac","slen1_n","slen2_n","slen1_tab","slen2_tab","scfsi_calc","all_scalefactors_not_negative","best_scalefac_store","recalc","scale_bitcount","scale_bitcount_lsf","scale_short","scale_mixed","scale_long","max_slen1","max_slen2","max_range_sfac_tab","table_number","row_in_table","nr_sfb","max_sfac","partition_table","slen1","slen2","slen3","slen4","log2tab","bv_index","scfb_anz","System$3","Arrays$2","new_byte$2","new_int$1","assert$5","CRC16_POLYNOMIAL","ga","mpg","ver","_ga","_mpg","_ver","totbit","bufByteIdx","bufBitIdx","putheader_bits","putbits2","putbits_noheaders","drain_into_ancillary","remainingBits","getLameShortVersion","writeheader","CRC_update","crc","encodeSideInfo2","bitsPerFrame","CRC_writeheader","old","huffman_coder_count1","huffbits","Huffmancode","tableindex","cbits","xbits","ext","linbits_x1","linbits_x2","ShortHuffmancodebits","region1Start","LongHuffmancodebits","bigvalues","region2Start","writeMainData","data_bits","tot_bits","sfb_partition","scale_bits","sfbs","TotalBytes","total","compute_flushbits","total_bytes_output","flushbits","remaining_headers","last_ptr","first_ptr","getframebits","bit_rate","byte","flush_bitstream","NEQ","GainAnalysis","add_dummy_byte","bufferPos","size2","mp3data","minimum","updateMusicCRC","pcm_buf","mp3_in","samples_out","hip_decode1_unclipped","init_bit_stream_w","Lame$1","LAME_MAXMP3BUFFER","System$2","VbrMode$3","ShortBlock$1","new_float$2","assert$4","LAME_MAXALBUMART","V9","V8","V7","V6","V5","V4","V3","V2","V1","V0","R3MIX","STANDARD","EXTREME","INSANE","STANDARD_FAST","EXTREME_FAST","MEDIUM","MEDIUM_FAST","qu","id3","mpglib","LowPassHighPass","lowerlimit","BandPass","bitrate","lPass","lowpass","enc","_p","_qu","_id3","_mpglib","LAME_ID","lame_init_old","filter_coef","optimum_samplefreq","input_samplefreq","suggested_samplefreq","SmpFrqIndex","sample_freq","gpf","FindNearestBitrate","bRate","samplerate","BitrateIndex","optimum_bandwidth","lh","freq_map","table_index","nearestBitrateFullIndex","lame_init_params_ppflt","lowpass_band","highpass_band","minband","maxband","fc1","fc2","lame_init_qval","lame_init_bitstream","id3tag_write_v2","InitVbrTag","update_inbuffer_size","nsamples","calcNeeded","mf_needed","lame_encode_buffer_sample","buffer_l","buffer_r","mp3out","mp3size","in_buffer","in_bufferPos","in_buffer_ptr","n_in","n_out","inOut","InOut","fill_buffer","buf_size","lame_encode_frame","NumUsed","num_used","gcd","blackman","fcn","wcn","bkwn","sin","fill_buffer_resample","outbuf","outbufPos","desired_len","bpc","intratio","filter_l","BLACKSIZE","offset","time0","joff","xvalue","n_shift","numUsed","lame_init","full_bitrate_table","lower_range","lower_range_kbps","upper_range","upper_range_kbps","lame_init_params","map2MP3Frequency","linear_int","hip_decode_exit","hip_decode_init","cmp","apply_preset","LAME_DEFAULT_QUALITY","VBRNewIterationLoop","VBROldIterationLoop","vbrmode","ABRIterationLoop","NSATTACKTHRE","NSATTACKTHRE_S","lame_encode_flush","mp3buffer","mp3bufferPos","mp3buffer_size","mp3buffer_size_remaining","end_padding","frames_left","imp3","samples_to_encode","bunch","frame_num","lame_encode_buffer","id3tag_write_v1","VbrMode$2","Presets","VBRPresets","qual","compS","shThreshold","shThresholdS","adj","adjShort","lower","curve","sens","inter","joint","mod","fix","vbr_q","quant_comp_s","expY","st_lrm","st_s","masking_adj","masking_adj_short","ath_lower","ath_curve","ath_sensitivity","interch","safejoint","sfb21mod","ABRPresets","kbps","sc","mask","interCh","sfScale","nsmsfix","nsbass","sfscale","lame","_lame","vbr_old_switch_map","vbr_psy_switch_map","apply_vbr_preset","enforce","vbr_preset","q","lame_set_VBR_q","abr_switch_map","apply_abr_preset","actual_bitrate","VBRQuantize","CalcNoiseResult$1","new_float$1","CalcNoiseData","System$1","VbrMode$1","Arrays$1","assert$3","Quantize","tk","init_xrpow_core","psfb21_analogsilence","ath21","ath12","BinSearchDirection","bin_search_StepSize","desired_rate","nBits","flagGoneOver","Direction","BINSEARCH_NONE","BINSEARCH_DOWN","BINSEARCH_UP","loop_break","penalties","get_klemm_noise","klemm_noise","quant_compare","best","calc","better","BitStream","amp_scalefac_bands","bRefine","ifqstep34","trigger2","inc_scalefac_scale","inc_subblock_gain","amp","balance_noise","ixwork","trancate_smallspectrums","allowedNoise","trancateThreshold","nsame","cod_info_w","save_xrpow","best_noise_info","best_part2_3_length","bEndOfSearch","best_ggain_pass1","age","search_limit","noise_info","maxggain","huff_bits","ResvAdjust","VBR_encode_granule","min_bits","dbits","bst_cod_info","bst_xrpow","Max_bits","real_bits","this_bits","found","LameInternalFlags","get_framebits","frameBits","MeanBits","VBR_old_prepare","bands","analog_silence","mxb","bitpressure_strategy","VBR_new_prepare","maximum_framebits","calc_target_bits","analog_silence_bits","max_frame_bits","res_factor","totbits","assert$2","Reservoir","maxmp3buf","frameLength","resvLimit","fullFrameBits","resvsize","over_bits","stuffingBits","mdb_bytes","Version","LAME_URL","LAME_MAJOR_VERSION","LAME_MINOR_VERSION","LAME_PATCH_VERSION","PSY_MAJOR_VERSION","PSY_MINOR_VERSION","getLameVersion","getLameVeryShortVersion","getPsyVersion","getLameUrl","getLameOsBitness","new_byte$1","assert$1","VBRTag","_v","FRAMES_FLAG","BYTES_FLAG","TOC_FLAG","VBR_SCALE_FLAG","NUMTOCENTRIES","MAXFRAMESIZE","VBRHEADERSIZE","LAMEHEADERSIZE","XING_BITRATE1","XING_BITRATE2","XING_BITRATE25","ISO_8859_1","VBRTag0","VBRTag1","crc16Lookup","addVbr","v2","xingSeekTable","act","indx","seek_point","extractInteger","createInteger","createShort","isVbrTag","equals","shiftInBitsValue","setLameTagFrameHeader","bbyte","abyte","crcUpdateLookup","putLameVBR","musicLength","streamBuffer","streamBufferPos","revMethod","abrBitrate","bytesWritten","encDelay","encPadding","revision","vbrTypeTranslator","peakSignalAmplitude","radioReplayGain","audiophileReplayGain","noiseShaping","stereoMode","nonOptimal","sourceFreq","misc","musicCRC","expNPsyTune","safeJoint","noGapMore","noGapPrevious","noGapCount","noGapCurr","athType","skipId3v2","fpStream","seek","id3v2TagSize","id3v2Header","readFully","Tables","getVbrTag","pTagData","VBRTagData","hId","hSrIndex","hMode","hBitrate","samprate","head_flags","frames","toc","vbrScale","headersize","kbps_header","totalFrameSize","headerSize","getLameTagFrame","Lame","streamIndex","streamSize","putVbrTag","stream","write","GetAudio","parse2","mpg2","Parse","ver2","id32","pre2","MPGLib","ID3Tag","_bits","Mp3Encoder$1","channels","gaud","parse","maxSamples","encodeBuffer","_sz","subarray","fourccToInt","fourcc","Mp3Encoder","bitRate","sampleRate","dataBuffer","encoder","arrayBuffer","samples","_convertBuffer","blob","Blob","createObjectURL","_floatTo16BitPCM","Recorder","beforeRecording","pauseRecording","afterRecording","micFailed","encoderOptions","bufferSize","records","isPause","isRecording","volume","_duration","constraints","video","channelCount","echoCancellation","mediaDevices","getUserMedia","_micCaptured","_micError","lameEncoder","getTracks","track2","processor","record","finish","AudioContext","webkitAudioContext","createMediaStreamSource","createScriptProcessor","onaudioprocess","sample","inputBuffer","getChannelData","encode","toFixed","connect","destination","detectMobile","getUserAgent","userAgentPart","vendor","opera","_sfc_main$a","showSendIcon","showFiles","showAudio","showEmojis","acceptedFiles","textareaActionEnabled","textareaAutoFocus","userTagsEnabled","emojisSuggestionEnabled","templatesText","audioBitRate","audioSampleRate","initReplyMessage","initEditMessage","droppedFiles","editedMessage","cursorRangePosition","fileDialog","selectUsersTagItem","selectEmojiItem","selectTemplatesTextItem","activeUpOrDownEmojis","activeUpOrDownUsersTag","activeUpOrDownTemplatesText","emojisDB","keepKeyboardOpen","selectedUsersTag","recorder","initRecorder","resetMessage","onChangeInput","getTextareaRef","replyMessage","editMessage","onFileChange","isComposed","isComposing","updateFooterLists","resetFooterList","stopRecorder","roomTextarea","disableMobileFocus","setSelectionRange","resizeTextarea","scrollHeight","pasteEvent","clipboardData","getAsFile","direction","position","endPosition","getCharPosition","focusTextarea","click","fileURL","typeIndex","blobFile","loadedFile","file2","recording","isFileLoading","newContent","usersTag","messageContent","selectUserTag","updateFooterList","tagChar","textareaCursorPosition","selectionStart","beforeTag","notLetterNumber","updateShowUsersTag","updateShowTemplatesText","editMode","cursorPosition","selectionEnd","initRoom","resetTextareaSize","preventKeyboardFromClosing","_hoisted_1$a","_hoisted_2$8","_hoisted_3$8","_hoisted_4$8","_hoisted_5$6","_hoisted_6$3","_hoisted_7$3","_sfc_render$a","_component_room_emojis","_component_room_users_tag","_component_room_templates_text","_component_room_message_reply","_component_room_files","_component_emoji_picker_container","shadowFooter","onSelectEmoji","selectEmoji","onActivateItem","onSelectUserTag","onSelectTemplateText","selectTemplateText","onResetMessage","removeFile","recordedTime","toggleRecorder","TYPE_MESSAGE","onKeydown","escapeTextarea","updateActiveUpOrDown","onPaste","onPasteImage","addEmoji","onAddEmoji","onOpenEmoji","launchFilePicker","textareaActionHandler","accept","onChange","isMessageEmpty","RoomFooter","_sfc_main$9","roomUsers","replyUser","_hoisted_1$9","_hoisted_2$7","_hoisted_3$7","_hoisted_4$7","_hoisted_5$5","_hoisted_6$2","_hoisted_7$2","_hoisted_8$1","_hoisted_9$1","_hoisted_10$1","_sfc_render$9","replyUsername","onUpdateProgressTime","progressTime","hoverAudioProgress","MessageReply","_sfc_main$8","radius","stroke","normalizedRadius","circumference","_hoisted_1$8","_hoisted_2$6","_hoisted_3$6","_hoisted_4$6","_hoisted_5$4","_sfc_render$8","strokeDashoffset","strokeLinecap","cy","ProgressBar","_sfc_main$7","imageResponsive","imageLoading","imageHover","checkImgLoad","maxHeight","clientWidth","loaderTop","clientHeight","_hoisted_1$7","_hoisted_2$5","_hoisted_3$5","_hoisted_4$5","_sfc_render$7","_component_progress_bar","onMouseleave","isImageLoading","preview","MessageFile","_sfc_main$6","_hoisted_1$6","_hoisted_2$4","_hoisted_3$4","_hoisted_4$4","_hoisted_5$3","_sfc_render$6","_component_message_file","imageVideoFiles","onOpenFile","otherFiles","onOpenUserTag","MessageFiles","_sfc_main$5","showReactionEmojis","messageHover","hoverMessageId","menuOptionsTop","optionsOpened","optionsClosing","filteredMessageActions","onlyMe","menuOptions","actionIcon","actionIconTop","optionsTopPosition","updateMessageHover","closeOptions","reaction","closeEmoji","_hoisted_1$5","_hoisted_2$3","_hoisted_3$3","_hoisted_4$3","_sfc_render$5","isMessageActions","isMessageReactions","openOptions","sendMessageReaction","messageActionHandler","MessageActions","_sfc_main$4","_hoisted_1$4","_sfc_render$4","reactions","MessageReactions","roomsValidation","roomsValidate","obj2","validType","checkObjectValid","partcipantsValidation","participantsValidate","messagesValidation","messagesValidate","_sfc_main$3","editedMessageId","newMessages","showNewMessagesDivider","usernameOptions","selectedMessages","newMessage","currentUser","minUsers","resetMessageHover","canEditMessage","isMessageSelected","_hoisted_1$3","_hoisted_2$2","_hoisted_3$2","_hoisted_4$2","_hoisted_5$2","_hoisted_6$1","_hoisted_7$1","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_sfc_render$3","_component_message_reply","_component_message_files","_component_message_actions","_component_message_reactions","showDate","NEW_MESSAGES","openUserTag","selectMessage","hasSenderUserAvatar","messageOffset","isMessageHover","onHoverMessage","onLeaveMessage","showUsername","edited","isCheckmarkVisible","onUpdateMessageHover","onUpdateOptionsOpened","onUpdateEmojiOpened","onMessageActionHandler","onSendMessageReaction","failure","hasCurrentUserAvatar","RoomMessage","_sfc_main$2","loadFirstRoom","messagesLoaded","autoScroll","loadingMessages","loadingMoreMessages","scrollIcon","scrollMessagesCount","noRoomSelected","updateLoadingMessages","onRoomChanged","loadMoreMessages","scrollContainer","prevScrollHeight","scrollTo","touchEvent","changedTouches","posXStart","posYStart","touchEvent2","touchEnd","posXEnd","posYEnd","swippedRight","swippedVertically","resetMessageSelection","unwatch","autoScrollOffset","scrolledUp","getBottomScroll","newAfterScrollUp","scrollToBottom","receive","bottomScroll","preventTopScroll","messageReaction","behavior","dataTransfer","_hoisted_1$2","_hoisted_2$1","_hoisted_3$1","_hoisted_4$1","_hoisted_5$1","_hoisted_6","_hoisted_7","_sfc_render$2","_component_room_header","_component_room_message","_component_room_footer","onDrop","onDropFiles","onDragenter","onDragover","onDragleave","onTouchstart","touchStart","showNoRoom","ROOM_EMPTY","onToggleRoomsList","onRoomInfo","onMenuActionHandler","onMessageSelectionActionHandler","onCancelMessageSelection","onScroll","onContainerScroll","showNoMessages","MESSAGES_EMPTY","showMessagesStarted","CONVERSATION_STARTED","indexId","onMessageAdded","onOpenFailedMessage","onSelectMessage","onUnselectMessage","unselectMessage","onUpdateEditedMessageId","onEditMessage","onSendMessage","onTypingMessage","onTextareaActionHandler","Room","_sfc_main$1","modal","_hoisted_1$1","_hoisted_2","_hoisted_3","autoplay","_hoisted_4","_hoisted_5","_sfc_render$1","tabindex","closeModal","MediaPreview","locales","defaultThemeStyles","light","general","colorButtonClear","colorButton","backgroundColorButton","backgroundInput","colorPlaceholder","colorCaret","colorSpinner","borderStyle","backgroundScrollIcon","border","boxShadow","background","colorRoomName","colorRoomInfo","footer","borderStyleInput","borderInputSelected","backgroundReply","backgroundTagActive","backgroundTag","sidemenu","backgroundHover","backgroundActive","colorActive","borderColorSearch","backgroundMe","colorStarted","backgroundDeleted","backgroundSelected","colorDeleted","colorUsername","colorTimestamp","backgroundDate","colorDate","backgroundSystem","colorSystem","backgroundMedia","colorReplyUsername","colorReply","colorTag","backgroundImage","colorNewMessages","backgroundScrollCounter","colorScrollCounter","backgroundReaction","borderStyleReaction","backgroundReactionHover","borderStyleReactionHover","colorReactionCounter","backgroundReactionMe","borderStyleReactionMe","backgroundReactionHoverMe","borderStyleReactionHoverMe","colorReactionCounterMe","backgroundAudioRecord","backgroundAudioLine","backgroundAudioProgress","backgroundAudioProgressSelector","colorFileExtension","markdown","colorMulti","colorMessage","colorStateOnline","colorStateOffline","backgroundCounterBadge","colorCounterBadge","icons","closeImage","closeOutline","closePreview","sendDisabled","checkmarkSeen","dropdownMessage","dropdownMessageBackground","dropdownRoom","dropdownScroll","audioPlay","audioPause","audioCancel","audioConfirm","dark","cssThemeVars","_style_0","_sfc_main","theme","responsiveBreakpoint","roomsListOpened","roomsOrder","mediaPreviewEnabled","showMediaPreview","previewFile","textMessagesCasted","defaultStyles","customStyles","stylesCasted","roomsCasted","aVal","bVal","castBoolean","castArray","castObject","loadFirstRoomCasted","fetchRoom","singleRoomCasted","orderedRooms","loadingRoomsCasted","roomsListOpenedCasted","updateResponsive","isTrusted","querySelectorAll","opened","mediaPreviewEnabledCasted","_hoisted_1","_sfc_render","_component_rooms_list","_component_room","_component_media_preview","cssVars","roomsLoadedCasted","roomActionsCasted","showSearchCasted","showAddRoomCasted","textFormattingCasted","linkOptionsCasted","onFetchRoom","onFetchMoreRooms","fetchMoreRooms","onLoadingMoreRooms","addRoom","messagesCasted","messagesLoadedCasted","menuActionsCasted","messageActionsCasted","messageSelectionActionsCasted","autoScrollCasted","showSendIconCasted","showFilesCasted","showAudioCasted","showEmojisCasted","showReactionEmojisCasted","showNewMessagesDividerCasted","showFooterCasted","roomInfoEnabledCasted","textareaActionEnabledCasted","textareaAutoFocusCasted","userTagsEnabledCasted","emojisSuggestionEnabledCasted","templatesTextCasted","usernameOptionsCasted","toggleRoomsList","roomInfo","onFetchMessages","onDeleteMessage","openFailedMessage","typingMessage","onCloseMediaPreview","ChatWindow","VueAdvancedChat","PACKAGE_NAME"],"mappings":"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DAGAA,UAEAA,0CAEA,oCACAC,4CACAA,gDAEA,wBAIAC,YACAF,SACA,oBAGAG,SACAC,eACA,mBACA,cAEA,YACA,CACArF,cACAsF,YACAC,UACAC,OACA,CACAC,iBACAC,0BAGAC,2BACAC,mBAGA,iCACA,wCAEA,oBAEA,iCACA,4BACA,kCAEA,iBACAC,+BACA,UACA/D,8BACAE,iDACA8D,sBAKA,sBACA,uBACA,8DAIA,EACA9C,kEACA+C,SACA,WACA,kBACAC,mBACA,8BACAC,eAGA,yBACA,uDAEA,0CACAD,0BAIAE,gBACA,kCACA,wBACA,KAGA,iDACA,uBA5BA,wBA8BAC,iBAAA,QACA,KACA,aACA,yDACA,0BACAC,GACA,CACAjC,YACAkC,YACAC,iBACAC,yBACAC,iCACAC,QAIA,YACA,EAEAC,SACAC,2BACAA,gBACAA,QADAA,EACAA,sCACAlB,SACAmB,kBACAC,gDACAC,0CACAC,qCACArB,SACAiB,2BACAA,kBACAA,aACA,8BACA,GACAK,eACApB,gBACA,cACAc,SACAC,2BACAA,gBACAA,QADAA,EACAA,uCAEAM,UACAC,kBACAC,oBACAf,QACAgB,OACAC,aAIA,UAEA,2BAAAT,QAAAR,IACA,OACAvE,aACAC,8BACAC,kBACAC,iDACAE,UACAD,kCACAI,iDAGA,6CACA,SACA,KACA,2BACAiF,mCAEAC,yCACAZ,UACAA,oBAGA,qBACA,gCACA,+BACAa,gBACA,CACA9D,qCACAE,kBAEA,iCAEA,sBAEA6D,mBACA,OACAnB,aAEA,oDAEArF,0BAAAyG,UAAAf,IACA,eACA,aACA,sBACA,QAGA,6BACA,gBACA,wBAEAgB,kBACA,WAeA,OAdAvB,cACA,SACAjC,YACAkC,YACAC,YACAsB,8BACAnB,uBAEA,UACAoB,WACAA,uBAEAF,YAEA,GAEA3G,eAAA8G,IACAC,mCAIAC,aACA,0BACApF,2BACAqF,iBAEAC,gBACA,gDAEAvI,eACA,8BAGAwI,OACAC,0BACA,SACA,0BCjU8V,I,wBCQ1VC,EAAY,eACd,EACAlJ,EACA+B,GACA,EACA,KACA,KACA,MAIa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gB,EACAC,EACAC,EACAjB,EACAmB,EACA3b,EACA8b,EACAI,EACAC,EACAvB,EACAwB,EACAhB,EACAd,EACA3H,EACAxrE,EACAu0E,EACAE,EACAnB,EACAC,EACAmB,EACAG,EACAC,EACApB,EACA8B,EACAE,EACAG,EACAc,EACAI,EACAC,EACAK,GACAC,GACAE,GACAC,GACAG,GACAC,GACAhE,EACAF,EACArV,EACAwV,EACAC,EACAI,EACAX,EACAoB,EACAmD,GACAC,GACA5K,GACAgL,GACAC,GACAC,IAGJ,MAAMuB,WAAe1S,GACnB,YAAYrsD,GACVkwB,QACA07B,GACEhuE,KACAoiB,EACAmN,GACAgnD,GACAnN,GACA,CACE6R,cAAe,GACfC,KAAM,EACNC,SAAU,GACVvV,YAAa,GACbwV,sBAAuB,IAEzB,KACA,EAAE,GAAI,GAAI,KAIhB,MAAMgG,GAAsB,mFACtBC,GAAiB,KACvB,IAAIC,GAAS,CACXlH,gBAAiB,aACjBqF,wBAAyB,6CACzBpF,eAAgB,YAChB4F,eAAgB,WAChBC,oBAAqB,wBACrB5F,YAAa,eACbpB,kBAAmB,qFACnBF,YAAa,SACbjD,mBAAoB,iBACpBqD,oBAAqB,iEACrBsH,cAAe,4CACfvG,eAAgB,aAChBha,UAAW,CACT,UACA,QACA,eACA,SACA,cACA,QAEFwU,WAAY,CACVxQ,OAAQ,SACR,kBAAmB,wBACnB,cAAe,kBACf,iBAAkB,qBAClB,aAAc,iBACd,gBAAiB,oBACjBod,WAAY,aACZC,QAAS,UACTC,QAAS,UACTC,MAAO,UAGX,MAAMC,GAAQ,CACZ,cACA,wBACA,WACA,aACA,OACA,SACA,iBAEF,MAAMC,WAAsBpvC,YAC1B,YAAYvtC,GACVqtC,QACAtyC,KAAK8yC,aAAa,CAAE9pB,KAAM,SAC1B,MAAM/P,EAAQ2zB,SAAS1P,cAAc,SACrCjkB,EAAMu0B,YAAc,28KACpBxtC,KAAK6yC,WAAW5E,YAAYh1B,GAC5BjZ,KAAK05B,KAAO,CACVquC,OAAQsZ,GACRjb,WAAYgb,GACZnG,cAAe1L,GACf6L,sBAAuBzL,GACvB/J,YAAa,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AYpD,GACZqD,UAAWvD,GACXwD,YAAapD,GACbqD,QAAS3D,GACT4D,UAAWnD,GACXX,aACA+D,YAAanD,GACboD,OAAQhB,IAENiB,GAAWhB,GAAOC,OAClBgB,GAASjB,GAAOK,KAChBa,GAAWlB,GAAOM,OAClBa,GAAcnB,GAAOU,UACzB,SAASU,KACP,IAAIC,EAAW,EACb,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,iBACA,kBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,mBACA,kBACA,kBACA,mBACA,kBACA,mBACA,mBACA,oBACA,oBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,oBACA,oBACA,kBACA,kBACA,mBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,kBACA,oBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,mBACA,oBACA,oBACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,kBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,iBACA,kBACA,mBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,oBACA,mBACA,oBACA,oBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBACA,mBACA,mBACA,mBACA,kBACA,mBACA,kBACA,iBACA,oBACA,kBACA,mBACA,mBACA,kBACA,mBACA,kBACA,kBACA,mBACA,oBACA,oBACA,oBACA,iBACA,mBACA,kBACA,kBACA,kBACA,kBACA,oBACA,kBACA,kBACA,mBACA,kBACA,mBACA,oBACA,iBACA,kBACA,mBACA,oBACA,oBACA,mBACA,kBACA,kBACA,kBACA,kBACA,kBACA,oBACA,kBACA,mBACA,mBACA,kBACA,mBACA,oBACA,mBACA,mBACA,oBACA,oBACA,oBACA,oBACA,kBACA,iBACA,mBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,mBACA,mBACA,oBACA,oBACA,mBACA,mBACA,kBACA,kBACA,mBACA,kBACA,iBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBACA,mBACA,mBACA,mBACA,oBACA,oBACA,mBACA,kBACA,mBACA,mBACA,iBACA,kBACA,oBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,oBACA,oBACA,oBACA,kBACA,mBACA,kBACA,WAAcJ,GAAOrC,MAAQ,GAAM,QACnC,WAAcqC,GAAOrC,MAAQ,GAAM,QACnC,WAAaqC,GAAOrC,MAAQ,GAAM,QAClC,WAAaqC,GAAOrC,MAAQ,GAAM,QAClC,UAAYqC,GAAOrC,MAAQ,GAAM,QACjC,UAAYqC,GAAOrC,MAAQ,GAAM,QACjC,UAAYqC,GAAOrC,MAAQ,GAAM,QACjC,SAAWqC,GAAOrC,MAAQ,GAAM,QAChC,mBACA,mBACA,kBACA,mBACA,mBACA,mBACA,mBAEE0C,EAAK,GACLC,EAAM,GACNC,EAAM,CACR,CACE,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,oBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBACC,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,qBACA,sBAEH,CACE,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBACC,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,qBACA,qBACD,EACA,EACA,EACA,EACA,EACA,GACC,sBACA,sBACA,sBAEH,CACE,kBACA,iBACA,kBACA,kBACA,kBACA,iBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,iBACA,kBACA,kBACA,mBACC,mBACA,kBACD,kBACA,IACC,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,oBACA,oBACD,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,iBACA,mBAEF,CACE,EACA,EACA,EACA,EACA,EACA,EACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,oBACA,sBACC,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,uBAGDC,EAAWD,EAAIE,GAAQC,YACvBC,EAAKJ,EAAIE,GAAQC,YACjBE,EAAKL,EAAIE,GAAQC,YACjBG,EAAKN,EAAIE,GAAQC,YACjBnwB,EAAQ,CACV,EACA,EACA,GACA,GACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,IAEF,SAASuwB,EAAeC,EAAIC,EAAO7vE,GAGjC,IAFA,IA6DYiiB,EAAG9vB,EA2BT29E,EAxFFC,EAAK,GACLC,EAAKH,EAAQ,IAAM,GAAK,IACnB7mF,GAAK,GAAIA,EAAI,EAAGA,IAAK,CAC5B,IAAI0D,EAAGsa,EAAG2R,EACVjsB,EAAIuiF,EAASc,GAAM,IACnB/oE,EAAI4oE,EAAGI,GAAM,KAAOtjF,EACpBisB,EAAIi3D,EAAGC,EAAQ,KAAOnjF,EACtBA,EAAIuiF,EAASc,GAAM,GACnB/oE,GAAK4oE,EAA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IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,EACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,EACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,EACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,KAEFp9F,KAAKq9F,UAAY,SAASjL,EAAKkL,EAAQC,EAAK/2B,EAAQg3B,GAClD,IAAK,IAAI/8E,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAIysE,EAAI4C,GAAQwL,UAAY,EACxB9+D,EAAI,MAAQ,KAAW/b,EAAI,GAC3BoQ,EAAIi/D,GAAQwL,UAAY,EAAI,EAChC,EAAG,CACD,IAAIuB,EAAID,EAAIG,EAAID,EAAI5vF,EAChB1D,EAAqB,IAAjB4zF,EAAOvsE,GAAK,GACpBgsE,EAAKb,EAASxyF,GAAKg9D,EAAO+2B,GAAKC,EAASh0F,EAAIgzB,GAC5CtvB,EAAI8uF,EAAS,IAAMxyF,GAAKg9D,EAAO+2B,GAAKC,EAASh0F,EAAIgzB,EAAI,KACrDogE,EAAKC,EAAK3vF,EACV2vF,GAAU3vF,EACV6vF,EAAKf,EAASxyF,EAAI,IAAMg9D,EAAO+2B,GAAKC,EAASh0F,EAAIgzB,EAAI,IACrDtvB,EAAI8uF,EAAS,GAAKxyF,GAAKg9D,EAAO+2B,GAAKC,EAASh0F,EAAIgzB,EAAI,KACpDsgE,EAAKC,EAAK7vF,EACV6vF,GAAU7vF,EACVggF,GA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IijB,GAAWrsB,GAAOC,OAClBqsB,GAAWtsB,GAAOM,OActB,SAASisB,KACP,IAAIC,EAAW,MACXC,EAAiB,IACjBC,EAA4BH,GAAeG,0BAC3CC,EAA8BJ,GAAeI,4BAC7CC,EAAS,CACX,CACE,eACC,kBACA,gBACD,kBACC,iBACA,mBACA,eACD,mBACC,iBACA,kBACD,gBACA,iBACC,iBACA,iBACD,gBACA,iBACA,iBACC,gBACD,gBACA,gBACA,iBAEF,CACE,gBACC,kBACA,gBACD,kBACC,iBACA,kBACA,gBACD,iBACC,iBACA,iBACD,gBACA,kBACC,iBACA,iBACD,gBACA,kBACC,iBACA,gBACD,gBACA,iBACC,iBAEH,CACE,iBACC,kBACA,gBACD,kBACC,iBACA,iBACD,gBACA,kBACC,iBACA,iBACD,gBACA,iBACA,iBACC,gBACD,gBACA,iBACC,iBACA,gBACD,gBACA,gBACC,iBAEH,CACE,iBACC,kBACA,gBACD,iBACC,iBACA,eACD,iBACC,gBACA,iBACA,iBACA,gBACD,iBACC,iBACA,gBACD,gBACA,iBACC,cACD,gBACA,gBACA,iBACC,iBAEH,CACE,iBACC,kBACA,eACD,iBACC,gBACD,gBACA,iBACC,iBACA,gBACD,iBACC,gBACA,iBACA,gBACA,gBACD,gBACA,gBACA,iBACC,iBACA,eACD,iBACC,gBAEH,CACE,gBACC,iBACA,gBACD,iBACC,iBACA,eACA,gBACD,gBACA,iBACC,iBACA,gBACD,gBACA,gBACA,gBACA,gBACA,iBACC,gBACD,iBACC,gBACD,gBACA,iBAEF,CACE,iBACC,kBACA,gBACD,gBACA,gBACC,gBACD,gBACA,iBACC,gBACD,gBACA,gBACC,iBACA,gBACD,eACA,iBACC,gBACD,gBACA,iBACC,eACD,iBACC,iBAEH,CACE,iBACC,iBACA,iBACA,iBACA,iBACA,gBACD,gBACA,eACA,gBACA,gBACA,iBACC,iBACA,iBACA,gBACD,iBACC,gBACD,gBACA,iBACC,gBACD,iBACC,iBAEH,CACE,iBACC,gBACA,iB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B,KAGlDzyF,KAAK4/G,SAASO,GAAGa,aAAa5uB,EAAK6tB,IAGvC,SAASgB,GAAYn6E,EAAKiR,EAAKgpD,EAAKmgB,GAClClhH,KAAKmhH,KAAOr6E,EACZ9mC,KAAKohH,OAASrpE,EACd/3C,KAAKqhH,MAAQtgB,EACb/gG,KAAKshH,KAAOJ,EAEd,IAAIK,GAAW,CACf,KAAgB,CAAC,EAAG,EAAG,EAAG,GAC1B,KAAgB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACzC,KAAgB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACzC,KAAgB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC9D,KAAgB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC9D,KAAgB,CACd,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEF,KAAgB,CACd,EACA,EACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GAEF,KAAgB,CACd,EACA,EACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GAEF,MAAiB,CACf,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEF,MAAiB,CACf,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEF,MAAiB,CACf,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,GAEF,MAAiB,CACf,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GAEF,MAAiB,CACf,EACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GAEF,MAAiB,CACf,EACA,EACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IACA,KACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,KACA,IACA,IACA,EACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GAEF,MAAiB,CACf,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEF,MAAiB,CACf,EACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,IAEF,MAAiB,CACf,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GAEF,IAAe,CAAC,EAAG,EAAG,EAAG,GACzB,IAAe,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACxC,IAAe,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACxC,IAAe,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAC9D,IAAe,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC7D,IAAe,CACb,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,IAEF,IAAe,CACb,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEF,IAAe,CACb,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,IAEF,KAAgB,CACd,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEF,KAAgB,CACd,EACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,IAEF,KAAgB,CACd,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEF,KAAgB,CACd,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEF,KAAgB,CACd,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEF,OAAkB,CAChB,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEF,KAAgB,CACd,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEF,KAAgB,CACd,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GA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,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QAEFrC,GAASsC,QAAU,CACjB,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QAEFtC,GAASuC,QAAU,CACjB,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QAEFvC,GAASwC,cAAgB,CACvB,CACE,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,KACC,GAEH,CACE,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,KACC,GAEH,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAE9DxC,GAASyC,iBAAmB,CAC1B,CAAC,MAAO,KAAM,MAAO,GACrB,CAAC,MAAO,KAAM,MAAO,GACrB,CAAC,MAAO,KAAM,KAAM,IAEtBzC,GAAS0C,WAAa,CAAC,EAAG,EAAG,GAAI,GAAI,IACrC,IAAIC,GAAY91B,GAAOE,QACnBC,GAAQH,GAAOG,MACf41B,GAAS/1B,GAAOK,KAChB21B,GAAch2B,GAAOU,UACrBu1B,GAAYj2B,GAAOY,QACnBs1B,GAAWl2B,GAAOe,OAKtB,SAASo1B,KACP,IAAIC,EAAM,KACNrE,EAAK,KACL3qB,EAAM,KAMV,SAASivB,EAAMv3B,GACb,OAAOw3B,EAAMx3B,EAAIq3B,GAAYI,QAN/B3kH,KAAK21F,WAAa,SAASivB,EAAKC,EAAKhvB,GACnC2uB,EAAMI,EACNzE,EAAK0E,EACLrvB,EAAMK,GAKR71F,KAAK8kH,OAAS,SAAS53B,GACrB,OAAO63B,EAAO73B,IAEhB,IAAI83B,EAAc,qBACdC,EAAYV,GAAYU,UACxBC,EAAeD,EAAY,EAC3BE,EAAQZ,GAAYY,MACpBR,EAASJ,GAAYI,OACrBS,EAAa,IACjBplH,KAAKqlH,gBAAkB,CACrB,CACE,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,IAEZ,CACE,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,GAAI,GACX,CAAC,EAAG,EAAG,GAAI,IAEb,CACE,CAAC,GAAI,GAAI,EAAG,GACZ,CAAC,GAAI,GAAI,EAAG,GACZ,CAAC,GAAI,GAAI,EAAG,IAEd,CACE,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,GAAI,GAAI,GAAI,GACb,CAAC,EAAG,GAAI,GAAI,IAEd,CACE,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,GAAI,EAAG,EAAG,GACX,CAAC,EAAG,GAAI,EAAG,IAEb,CACE,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,GAAI,GAAI,EAAG,GACZ,CAAC,EAAG,GAAI,EAAG,KAGf,IAAIC,EAAS,CACX,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEFtlH,KAAKslH,OAASA,EACdtlH,KAAKulH,YAAc,CACjB,IAAIrQ,GACF,CACE,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KACrD,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAErB,IAAIA,GACF,CACE,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KACrD,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAErB,IAAIA,GACF,CACE,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KACrD,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAErB,IAAIA,GACF,CACE,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,KACpD,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAErB,IAAIA,GACF,CACE,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,KACpD,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAErB,IAAIA,GACF,CACE,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,KACrD,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAErB,IAAIA,GACF,CACE,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEF,CACE,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,KAEF,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAErB,IAAIA,GACF,CACE,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IAC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K21F,WAAa,SAASsrC,GACzBD,EAAOC,GAET,IAAIC,EAAqB,CACvB,IAAItC,EACF,EACA,EACA,EACA,EACA,IACA,KACC,KACA,IACD,IACA,EACA,EACA,EACA,EACA,GACA,KAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,KACC,KACA,IACD,IACA,IACA,EACA,EACA,EACA,GACA,MAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,KACC,KACA,IACD,IACA,EACA,EACA,EACA,EACA,GACA,MAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,KACC,KACA,IACD,IACA,GACC,EACD,EACA,EACA,GACA,MAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,EACA,KACC,IACA,IACD,IACA,KACC,EACD,EACA,EACA,EACA,MAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACA,GACA,IACC,IACD,GACC,GACD,KACA,EACA,EACA,MAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACA,IACA,KACC,KACD,KACC,GACD,KACA,EACA,EACA,KAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACA,GACA,KACC,KACD,GACC,GACD,KACA,EACA,EACA,KAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACA,IACA,MACC,KACD,IACC,GACD,KACA,EACA,EACA,GAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACA,IACA,KACC,GACD,IACC,GACD,KACA,EACA,EACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,IACA,IACA,EACA,GACC,GACD,IACC,GACD,KACA,EACA,EACA,IAGAuC,EAAqB,CACvB,IAAIvC,EACF,EACA,EACA,EACA,EACA,IACA,IACC,GACA,EACD,IACA,EACA,EACA,EACA,EACA,GACA,KAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACC,KACA,IACD,IACA,IACA,EACA,EACA,EACA,GACA,MAEF,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,KAAM,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,MACnE,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACC,KACA,KACD,IACA,GACC,EACD,EACA,EACA,GACA,MAEF,IAAIA,EAAW,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAK,EAAG,KAAM,EAAG,EAAG,EAAG,EAAG,MACpE,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACC,EACD,MACC,IACD,GACC,GACD,KACA,EACA,EACA,MAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,IACC,EACD,MACC,IACD,KACC,GACD,KACA,EACA,EACA,GAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,GACA,GACA,GACC,KACD,GACC,GACD,KACA,EACA,EACA,GAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,GACA,EACA,KACC,GACD,IACC,GACD,KACA,EACA,EACA,GAEF,IAAIA,EACF,EACA,EACA,EACA,EACA,IACA,GACA,IACA,MACC,GACD,IACC,GACD,KACA,EACA,EACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,IACA,GACA,EACA,MACC,GACD,IACC,GACD,KACA,EACA,EACA,IAGJ,SAASwC,EAAiBlqC,EAAK12E,EAAG6gH,GAChC,IAAIC,EAAapqC,EAAI+B,KAAOylC,GAAU3wC,OAASmzC,EAAqBC,EAChEj0C,EAAIgK,EAAI6Z,WACRhyF,EAAKuiH,EAAW9gH,GAChB+gH,EAAID,EAAW9gH,EAAI,GACnB8U,EAAOvW,EACXA,EAAG8gH,OAAS9gH,EAAG8gH,OAAS3yC,GAAKq0C,EAAE1B,OAAS9gH,EAAG8gH,QAC3C9gH,EAAG+gH,KAAO/gH,EAAG+gH,KAAO5yC,GAAKq0C,EAAEzB,KAAO/gH,EAAG+gH,MACrC/gH,EAAGghH,YAAchhH,EAAGghH,YAAc7yC,GAAKq0C,EAAExB,YAAchhH,EAAGghH,aAC1DhhH,EAAGihH,kBAAoBjhH,EAAGihH,kBAAoB9y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GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,GACD,GACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,GACD,GACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,GACD,GACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,EACD,GACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,GACC,EACD,GACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,EACA,IACA,IACA,EACA,IACA,EACA,EACA,EACA,KACA,GAEF,IAAIA,EACF,GACA,EACA,EACA,EACA,IACA,IACA,IACA,EACA,IACA,EACA,EACA,IACA,KACA,GAEF,IAAIA,EACF,IACA,EACA,EACA,EACA,KACA,IACA,IACA,EACA,IACA,EACA,EACA,IACA,KACA,GAEF,IAAIA,EACF,IACA,EACA,EACA,EACA,KACA,IACA,IACA,EACA,IACA,EACA,EACA,EACA,KACA,GAEF,IAAIA,EACF,IACA,EACA,EACA,EACA,KACA,EACA,IACA,EACA,KACC,EACD,EACA,IACA,EACA,GAEF,IAAIA,EACF,IACA,EACA,EACA,EACA,KACA,IACA,IACA,EACA,KACC,EACD,EACA,EACA,EACA,GAEF,IAAIA,EACF,IACA,EACA,EACA,EACA,KACA,IACA,IACA,EACA,KACC,EACD,EACA,EACA,EACA,GAEF,IAAIA,EACF,IACA,EACA,EACA,EACA,IACA,IACA,IACA,EACA,GACC,EACD,GACA,EACA,EACA,GAEF,IAAIA,EACF,IACA,EACA,EACA,EACA,GACA,IACA,IACA,EACA,GACC,GACD,GACA,EACA,EACA,IAGJ,SAASmB,EAAiBxqC,EAAK4Z,EAAQuwB,GACrC,IAAIM,EAAiB7wB,EACjBn6F,EAAIqqH,EAAK5H,w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GAE/D5nI,KAAKsyH,oBAAsB,WACzB,OAAOoV,EAAqB,IAAMC,EAAqB,IAAMC,GAE/D5nI,KAAKgoI,wBAA0B,WAC7B,MAAO,OAASN,EAAqB,IAAMC,EAAqB,KAElE3nI,KAAKioI,cAAgB,WACnB,OAAOJ,EAAoB,IAAMC,GAEnC9nI,KAAKkoI,WAAa,WAChB,OAAOT,GAETznI,KAAKmoI,iBAAmB,WACtB,MAAO,UAGX,IAAI95C,GAASD,GAAOC,OAChBC,GAAUF,GAAOE,QACjBE,GAAaJ,GAAOI,WACpBE,GAASN,GAAOM,OAChB05C,GAAah6C,GAAOQ,SACpBy5C,GAAWj6C,GAAOe,OAGtB,SAASm5C,KACP,IAAItH,EACAzrC,EACA5iF,EACJ3S,KAAK21F,WAAa,SAASsrC,EAAOrrC,EAAK2yC,GACrCvH,EAAOC,EACP1rC,EAAKK,EACLjjF,EAAI41H,GAEN,IAAIC,EAAc,EACdC,EAAa,EACbC,EAAW,EACXC,EAAiB,EACjBC,EAAgBN,GAAOM,cACvBC,EAAeP,GAAOO,aACtBC,EAAgBF,EAAgB,EAAI,EAAI,EAAI,EAAI,EAChDG,EAAiBD,EAAgB,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EACjFE,EAAgB,IAChBC,EAAgB,GAChBC,EAAiB,GACjBC,EAAa,KACbC,EAAU,OACVC,EAAU,OACVC,EAAc,CAChB,EACA,MACA,MACA,IACA,MACA,IACA,IACA,MACA,MACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,KACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,MACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,KACA,MACA,MACA,IACA,MACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,MACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,KACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEF,SAASC,EAAOC,EAAI7R,GAIlB,GAHA6R,EAAGtzB,gBACHszB,EAAGh+B,KAAOmsB,EACV6R,EAAGxhI,SACCwhI,EAAGxhI,KAAOwhI,EAAGxzB,QAGbwzB,EAAGtjD,IAAMsjD,EAAGxiI,OACdwiI,EAAGvzB,IAAIuzB,EAAGtjD,KAAOsjD,EAAGh+B,IACpBg+B,EAAGtjD,MACHsjD,EAAGxhI,KAAO,GAERwhI,EAAGtjD,KAAOsjD,EAAGxiI,MAAM,CACrB,IAAK,IAAIwC,EAAI,EAAGA,EAAIggI,EAAGxiI,KAAMwC,GAAK,EACh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","file":"chunk-60109118.15ab4bf7.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('layout',[_c('div',{staticClass:\"container mt-4 mb-4\"},[_c('vue-advanced-chat',{ref:\"chatWindow\",attrs:{\"height\":_vm.screenHeight,\"styles\":JSON.stringify(_vm.styles),\"current-user-id\":_vm.currentUserId,\"room-id\":_vm.roomId,\"rooms\":JSON.stringify(_vm.rooms),\"rooms-loaded\":_vm.roomsLoaded,\"messages\":JSON.stringify(_vm.messages),\"messages-loaded\":_vm.messageLoaded,\"room-message\":_vm.roomMessage,\"message-actions\":JSON.stringify(_vm.messageActions),\"show-new-messages-divider\":_vm.showNewMessageDivider,\"single-room\":_vm.singleRoom,\"show-footer\":_vm.showFooter},on:{\"fetch-messages\":function($event){return _vm.fetchMessages($event.detail[0])},\"send-message\":function($event){return _vm.sendMessage($event.detail[0])},\"delete-message\":function($event){return _vm.deleteMessage($event.detail[0])},\"open-file\":function($event){return _vm.openFile($event.detail[0])},\"room-action-handler\":function($event){return _vm.menuActionHandler($event.detail[0])},\"menu-action-handler\":function($event){return _vm.menuActionHandler($event.detail[0])},\"message-action-handler\":function($event){return _vm.menuActionHandler($event.detail[0])}}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import api from \"./core\";\nimport SessionService from \"./session\";\n\nconst basePath = \"api/portal/Chats\";\nconst baseUrl =\n process.env.VUE_APP_IS_STANDALONE === \"false\"\n ? \"/\"\n : process.env.VUE_APP_BASE_URL;\n\nexport default {\n create(data) {\n return api.put(`${basePath}`, data, {\n \"Hide-Loading\": true\n });\n },\n find(portalUserId) {\n return api.get(`${basePath}/FindRoom/${portalUserId}`, {\n \"Hide-Loading\": true\n });\n },\n createMsg(data) {\n const {\n SenderType,\n PatientId,\n SenderUserId,\n PortalUserId,\n DateTime,\n Message,\n Files,\n FilesData,\n Relationship\n } = data;\n var formData = new FormData();\n formData.append(\"SenderType\", SenderType);\n formData.append(\"PatientId\", PatientId);\n if (SenderUserId) formData.append(\"SenderUserId\", SenderUserId);\n formData.append(\"PortalUserId\", PortalUserId);\n formData.append(\"DateTime\", DateTime);\n formData.append(\"Message\", Message);\n formData.append(\"Relationship\", Relationship);\n if (Files) {\n for (let index = 0; index < Files.length; index++) {\n const File = Files[index];\n formData.append(\"Files\", File);\n }\n formData.append(\"FilesData\", FilesData);\n }\n\n const config = {\n headers: {\n \"Hide-Loading\": true,\n \"content-type\": \"multipart/form-data\"\n }\n };\n return api.put(`${basePath}/CreateMsg`, formData, config);\n },\n delete(id) {\n return api.delete(`${basePath}/${id}`, {\n \"Hide-Loading\": true\n });\n },\n findById(id, patienId) {\n return api.get(`${basePath}/FindMsg/${id}/${patienId}`, {\n \"Hide-Loading\": true\n });\n },\n downloadUrl(id) {\n return `${baseUrl}${basePath}/Download/${\n SessionService.session().token\n }/${id}`;\n },\n getCaseLoad(id) {\n return api.get(`${basePath}/GetCaseLoad/${id}`, {\n \"Hide-Loading\": true\n });\n },\n sendToMainApp(data, signalrAppUrl) {\n return fetch(\n `${signalrAppUrl}/api/signalr/chat/SendNewMessageSignalToMainApp/${data.tenantName}/`,\n {\n body: JSON.stringify(data.receivers),\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${SessionService.session().token}`\n }\n }\n );\n },\n getReceivers() {\n return api.get(`${basePath}/GetReceivers`, {\n \"Hide-Loading\": true\n });\n }\n};\n","import SignalRConnection from \"./index\";\n\nconst signalRConnection = new SignalRConnection();\n\nexport default signalRConnection;\n","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chats.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chats.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Chats.vue?vue&type=template&id=4797df9d&\"\nimport script from \"./Chats.vue?vue&type=script&lang=js&\"\nexport * from \"./Chats.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Chats.vue?vue&type=style&index=0&id=4797df9d&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","function makeMap$2(str, expectsLowerCase) {\n const map = /* @__PURE__ */ Object.create(null);\n const list = str.split(\",\");\n for (let i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];\n}\nconst NOOP$1 = () => {\n};\nconst extend$2 = Object.assign;\nconst hasOwnProperty$1 = Object.prototype.hasOwnProperty;\nconst hasOwn$1 = (val, key) => hasOwnProperty$1.call(val, key);\nconst isArray$2 = Array.isArray;\nconst isMap$1 = (val) => toTypeString$1(val) === \"[object Map]\";\nconst isFunction$2 = (val) => typeof val === \"function\";\nconst isString$2 = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject$2 = (val) => val !== null && typeof val === \"object\";\nconst objectToString$1 = Object.prototype.toString;\nconst toTypeString$1 = (value) => objectToString$1.call(value);\nconst toRawType = (value) => {\n return toTypeString$1(value).slice(8, -1);\n};\nconst isIntegerKey = (key) => isString$2(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst hasChanged$1 = (value, oldValue) => !Object.is(value, oldValue);\nconst def$1 = (obj, key, value) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n value\n });\n};\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.active = true;\n this.effects = [];\n this.cleanups = [];\n if (!detached && activeEffectScope) {\n this.parent = activeEffectScope;\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\n }\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 }\n }\n on() {\n activeEffectScope = this;\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.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.active = false;\n }\n }\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nconst createDep = (effects) => {\n const dep = new Set(effects);\n dep.w = 0;\n dep.n = 0;\n return dep;\n};\nconst wasTracked = (dep) => (dep.w & trackOpBit) > 0;\nconst newTracked = (dep) => (dep.n & trackOpBit) > 0;\nconst initDepMarkers = ({ deps }) => {\n if (deps.length) {\n for (let i = 0; i < deps.length; i++) {\n deps[i].w |= trackOpBit;\n }\n }\n};\nconst finalizeDepMarkers = (effect) => {\n const { deps } = effect;\n if (deps.length) {\n let ptr = 0;\n for (let i = 0; i < deps.length; i++) {\n const dep = deps[i];\n if (wasTracked(dep) && !newTracked(dep)) {\n dep.delete(effect);\n } else {\n deps[ptr++] = dep;\n }\n dep.w &= ~trackOpBit;\n dep.n &= ~trackOpBit;\n }\n deps.length = ptr;\n }\n};\nconst targetMap = /* @__PURE__ */ new WeakMap();\nlet effectTrackDepth = 0;\nlet trackOpBit = 1;\nconst maxMarkerBits = 30;\nlet activeEffect;\nconst ITERATE_KEY = Symbol(\"\");\nconst MAP_KEY_ITERATE_KEY = Symbol(\"\");\nclass ReactiveEffect {\n constructor(fn, scheduler = null, scope) {\n this.fn = fn;\n this.scheduler = scheduler;\n this.active = true;\n this.deps = [];\n this.parent = void 0;\n recordEffectScope(this, scope);\n }\n run() {\n if (!this.active) {\n return this.fn();\n }\n let parent = activeEffect;\n let lastShouldTrack = shouldTrack;\n while (parent) {\n if (parent === this) {\n return;\n }\n parent = parent.parent;\n }\n try {\n this.parent = activeEffect;\n activeEffect = this;\n shouldTrack = true;\n trackOpBit = 1 << ++effectTrackDepth;\n if (effectTrackDepth <= maxMarkerBits) {\n initDepMarkers(this);\n } else {\n cleanupEffect(this);\n }\n return this.fn();\n } finally {\n if (effectTrackDepth <= maxMarkerBits) {\n finalizeDepMarkers(this);\n }\n trackOpBit = 1 << --effectTrackDepth;\n activeEffect = this.parent;\n shouldTrack = lastShouldTrack;\n this.parent = void 0;\n if (this.deferStop) {\n this.stop();\n }\n }\n }\n stop() {\n if (activeEffect === this) {\n this.deferStop = true;\n } else if (this.active) {\n cleanupEffect(this);\n if (this.onStop) {\n this.onStop();\n }\n this.active = false;\n }\n }\n}\nfunction cleanupEffect(effect) {\n const { deps } = effect;\n if (deps.length) {\n for (let i = 0; i < deps.length; i++) {\n deps[i].delete(effect);\n }\n deps.length = 0;\n }\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\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());\n }\n trackEffects(dep);\n }\n}\nfunction trackEffects(dep, debuggerEventExtraInfo) {\n let shouldTrack2 = false;\n if (effectTrackDepth <= maxMarkerBits) {\n if (!newTracked(dep)) {\n dep.n |= trackOpBit;\n shouldTrack2 = !wasTracked(dep);\n }\n } else {\n shouldTrack2 = !dep.has(activeEffect);\n }\n if (shouldTrack2) {\n dep.add(activeEffect);\n activeEffect.deps.push(dep);\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$2(target)) {\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || key2 >= newValue) {\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$2(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap$1(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$2(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap$1(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap$1(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n if (deps.length === 1) {\n if (deps[0]) {\n {\n triggerEffects(deps[0]);\n }\n }\n } else {\n const effects = [];\n for (const dep of deps) {\n if (dep) {\n effects.push(...dep);\n }\n }\n {\n triggerEffects(createDep(effects));\n }\n }\n}\nfunction triggerEffects(dep, debuggerEventExtraInfo) {\n const effects = isArray$2(dep) ? dep : [...dep];\n for (const effect of effects) {\n if (effect.computed) {\n triggerEffect(effect);\n }\n }\n for (const effect of effects) {\n if (!effect.computed) {\n triggerEffect(effect);\n }\n }\n}\nfunction triggerEffect(effect, debuggerEventExtraInfo) {\n if (effect !== activeEffect || effect.allowRecurse) {\n if (effect.scheduler) {\n effect.scheduler();\n } else {\n effect.run();\n }\n }\n}\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap$2(`__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 get$1 = /* @__PURE__ */ createGetter();\nconst shallowGet = /* @__PURE__ */ createGetter(false, true);\nconst readonlyGet = /* @__PURE__ */ createGetter(true);\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 const res = toRaw(this)[key].apply(this, args);\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction createGetter(isReadonly2 = false, shallow = false) {\n return function get3(target, key, receiver) {\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 shallow;\n } else if (key === \"__v_raw\" && receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) {\n return target;\n }\n const targetIsArray = isArray$2(target);\n if (!isReadonly2 && targetIsArray && hasOwn$1(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\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 (shallow) {\n return res;\n }\n if (isRef(res)) {\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject$2(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n };\n}\nconst set$1 = /* @__PURE__ */ createSetter();\nconst shallowSet = /* @__PURE__ */ createSetter(true);\nfunction createSetter(shallow = false) {\n return function set2(target, key, value, receiver) {\n let oldValue = target[key];\n if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {\n return false;\n }\n if (!shallow && !isReadonly(value)) {\n if (!isShallow(value)) {\n value = toRaw(value);\n oldValue = toRaw(oldValue);\n }\n if (!isArray$2(target) && isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n }\n }\n const hadKey = isArray$2(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn$1(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$1(value, oldValue)) {\n trigger(target, \"set\", key, value);\n }\n }\n return result;\n };\n}\nfunction deleteProperty(target, key) {\n const hadKey = hasOwn$1(target, key);\n target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0);\n }\n return result;\n}\nfunction 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}\nfunction ownKeys(target) {\n track(target, \"iterate\", isArray$2(target) ? \"length\" : ITERATE_KEY);\n return Reflect.ownKeys(target);\n}\nconst mutableHandlers = {\n get: get$1,\n set: set$1,\n deleteProperty,\n has,\n ownKeys\n};\nconst readonlyHandlers = {\n get: readonlyGet,\n set(target, key) {\n return true;\n },\n deleteProperty(target, key) {\n return true;\n }\n};\nconst shallowReactiveHandlers = /* @__PURE__ */ extend$2({}, mutableHandlers, {\n get: shallowGet,\n set: shallowSet\n});\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get$1$1(target, key, isReadonly2 = false, isShallow2 = false) {\n target = target[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly2) {\n if (key !== rawKey) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has: has2 } = getProto(rawTarget);\n const wrap = isShallow2 ? toShallow : isReadonly2 ? 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$1(key, isReadonly2 = false) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly2) {\n if (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, isReadonly2 = false) {\n target = target[\"__v_raw\"];\n !isReadonly2 && 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$1$1(key, value) {\n value = toRaw(value);\n const target = toRaw(this);\n const { has: has2, get: get3 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n }\n const oldValue = get3.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged$1(value, oldValue)) {\n trigger(target, \"set\", key, value);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const { has: has2, get: get3 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n }\n get3 ? get3.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\", void 0, void 0);\n }\n return result;\n}\nfunction createForEach(isReadonly2, isShallow2) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n !isReadonly2 && 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, isReadonly2, isShallow2) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap$1(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 = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n !isReadonly2 && track(rawTarget, \"iterate\", isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);\n return {\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 [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n return type === \"delete\" ? false : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations2 = {\n get(key) {\n return get$1$1(this, key);\n },\n get size() {\n return size(this);\n },\n has: has$1,\n add,\n set: set$1$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations2 = {\n get(key) {\n return get$1$1(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has: has$1,\n add,\n set: set$1$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations2 = {\n get(key) {\n return get$1$1(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has$1.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$1$1(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has$1.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(method, false, false);\n readonlyInstrumentations2[method] = createIterableMethod(method, true, false);\n shallowInstrumentations2[method] = createIterableMethod(method, false, true);\n shallowReadonlyInstrumentations2[method] = createIterableMethod(method, true, true);\n });\n return [\n mutableInstrumentations2,\n readonlyInstrumentations2,\n shallowInstrumentations2,\n shallowReadonlyInstrumentations2\n ];\n}\nconst [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly2, shallow) {\n const instrumentations = shallow ? isReadonly2 ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly2 ? readonlyInstrumentations : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(hasOwn$1(instrumentations, key) && key in target ? instrumentations : target, key, receiver);\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 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;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2;\n default:\n return 0;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);\n}\nfunction shallowReactive(target) {\n return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap);\n}\nfunction readonly(target) {\n return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject$2(target)) {\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) {\n return target;\n }\n const proxy = new Proxy(target, targetType === 2 ? collectionHandlers : baseHandlers);\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 def$1(value, \"__v_skip\", true);\n return value;\n}\nconst toReactive = (value) => isObject$2(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject$2(value) ? readonly(value) : value;\nfunction trackRefValue(ref) {\n if (shouldTrack && activeEffect) {\n ref = toRaw(ref);\n {\n trackEffects(ref.dep || (ref.dep = createDep()));\n }\n }\n}\nfunction triggerRefValue(ref, newVal) {\n ref = toRaw(ref);\n if (ref.dep) {\n {\n triggerEffects(ref.dep);\n }\n }\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction unref(ref) {\n return isRef(ref) ? ref.value : ref;\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 ComputedRefImpl {\n constructor(getter, _setter, isReadonly2, isSSR) {\n this._setter = _setter;\n this.dep = void 0;\n this.__v_isRef = true;\n this._dirty = true;\n this.effect = new ReactiveEffect(getter, () => {\n if (!this._dirty) {\n this._dirty = true;\n triggerRefValue(this);\n }\n });\n this.effect.computed = this;\n this.effect.active = this._cacheable = !isSSR;\n this[\"__v_isReadonly\"] = isReadonly2;\n }\n get value() {\n const self2 = toRaw(this);\n trackRefValue(self2);\n if (self2._dirty || !self2._cacheable) {\n self2._dirty = false;\n self2._value = self2.effect.run();\n }\n return self2._value;\n }\n set value(newValue) {\n this._setter(newValue);\n }\n}\nfunction computed$1(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n const onlyGetter = isFunction$2(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = NOOP$1;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n return cRef;\n}\nfunction makeMap$1(str, expectsLowerCase) {\n const map = /* @__PURE__ */ Object.create(null);\n const list = str.split(\",\");\n for (let i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];\n}\nfunction normalizeStyle(value) {\n if (isArray$1(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString$1(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$1(value)) {\n return value;\n } else if (isObject$1(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:(.+)/;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.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 normalizeClass(value) {\n let res = \"\";\n if (isString$1(value)) {\n res = value;\n } else if (isArray$1(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$1(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$1(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\nconst toDisplayString = (val) => {\n return isString$1(val) ? val : val == null ? \"\" : isArray$1(val) || isObject$1(val) && (val.toString === objectToString || !isFunction$1(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((entries, [key, val2]) => {\n entries[`${key} =>`] = val2;\n return entries;\n }, {})\n };\n } else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()]\n };\n } else if (isObject$1(val) && !isArray$1(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\nconst EMPTY_OBJ = {};\nconst EMPTY_ARR = [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst onRE$1 = /^on[^a-z]/;\nconst isOn$1 = (key) => onRE$1.test(key);\nconst isModelListener$1 = (key) => key.startsWith(\"onUpdate:\");\nconst extend$1 = 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$1 = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isFunction$1 = (val) => typeof val === \"function\";\nconst isString$1 = (val) => typeof val === \"string\";\nconst isObject$1 = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return isObject$1(val) && isFunction$1(val.then) && isFunction$1(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isReservedProp = /* @__PURE__ */ makeMap$1(\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst cacheStringFunction$1 = (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$1 = /-(\\w)/g;\nconst camelize$1 = cacheStringFunction$1((str) => {\n return str.replace(camelizeRE$1, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE$1 = /\\B([A-Z])/g;\nconst hyphenate$1 = cacheStringFunction$1((str) => str.replace(hyphenateRE$1, \"-$1\").toLowerCase());\nconst capitalize$1 = cacheStringFunction$1((str) => str.charAt(0).toUpperCase() + str.slice(1));\nconst toHandlerKey = cacheStringFunction$1((str) => str ? `on${capitalize$1(str)}` : ``);\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 toNumber$1 = (val) => {\n const n = parseFloat(val);\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};\nfunction callWithErrorHandling(fn, instance2, type, args) {\n let res;\n try {\n res = args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance2, type);\n }\n return res;\n}\nfunction callWithAsyncErrorHandling(fn, instance2, type, args) {\n if (isFunction$1(fn)) {\n const res = callWithErrorHandling(fn, instance2, type, args);\n if (res && isPromise(res)) {\n res.catch((err) => {\n handleError(err, instance2, 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], instance2, type, args));\n }\n return values;\n}\nfunction handleError(err, instance2, type, throwInDev = true) {\n const contextVNode = instance2 ? instance2.vnode : null;\n if (instance2) {\n let cur = instance2.parent;\n const exposedInstance = instance2.proxy;\n const errorInfo = 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 = instance2.appContext.config.errorHandler;\n if (appErrorHandler) {\n callWithErrorHandling(appErrorHandler, null, 10, [err, exposedInstance, errorInfo]);\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n {\n console.error(err);\n }\n}\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPreFlushCbs = [];\nlet activePreFlushCbs = null;\nlet preFlushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nlet currentPreFlushParentJob = null;\nfunction nextTick(fn) {\n const p2 = currentFlushPromise || resolvedPromise;\n return fn ? p2.then(this ? fn.bind(this) : fn) : p2;\n}\nfunction findInsertionIndex(id) {\n let start2 = flushIndex + 1;\n let end = queue.length;\n while (start2 < end) {\n const middle = start2 + end >>> 1;\n const middleJobId = getId(queue[middle]);\n middleJobId < id ? start2 = middle + 1 : end = middle;\n }\n return start2;\n}\nfunction queueJob(job) {\n if ((!queue.length || !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) && job !== currentPreFlushParentJob) {\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 queueCb(cb, activeQueue, pendingQueue, index) {\n if (!isArray$1(cb)) {\n if (!activeQueue || !activeQueue.includes(cb, cb.allowRecurse ? index + 1 : index)) {\n pendingQueue.push(cb);\n }\n } else {\n pendingQueue.push(...cb);\n }\n queueFlush();\n}\nfunction queuePreFlushCb(cb) {\n queueCb(cb, activePreFlushCbs, pendingPreFlushCbs, preFlushIndex);\n}\nfunction queuePostFlushCb(cb) {\n queueCb(cb, activePostFlushCbs, pendingPostFlushCbs, postFlushIndex);\n}\nfunction flushPreFlushCbs(seen, parentJob = null) {\n if (pendingPreFlushCbs.length) {\n currentPreFlushParentJob = parentJob;\n activePreFlushCbs = [...new Set(pendingPreFlushCbs)];\n pendingPreFlushCbs.length = 0;\n for (preFlushIndex = 0; preFlushIndex < activePreFlushCbs.length; preFlushIndex++) {\n activePreFlushCbs[preFlushIndex]();\n }\n activePreFlushCbs = null;\n preFlushIndex = 0;\n currentPreFlushParentJob = null;\n flushPreFlushCbs(seen, parentJob);\n }\n}\nfunction flushPostFlushCbs(seen) {\n flushPreFlushCbs();\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)];\n pendingPostFlushCbs.length = 0;\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n activePostFlushCbs.sort((a, b) => getId(a) - getId(b));\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n activePostFlushCbs[postFlushIndex]();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n flushPreFlushCbs(seen);\n queue.sort((a, b) => getId(a) - getId(b));\n const check2 = NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if (false)\n ;\n callWithErrorHandling(job, null, 14);\n }\n }\n } finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs();\n isFlushing = false;\n currentFlushPromise = null;\n if (queue.length || pendingPreFlushCbs.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction emit$1(instance2, event, ...rawArgs) {\n if (instance2.isUnmounted)\n return;\n const props = instance2.vnode.props || EMPTY_OBJ;\n let args = rawArgs;\n const isModelListener2 = event.startsWith(\"update:\");\n const modelArg = isModelListener2 && 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) => a.trim());\n }\n if (number) {\n args = rawArgs.map(toNumber$1);\n }\n }\n let handlerName;\n let handler = props[handlerName = toHandlerKey(event)] || props[handlerName = toHandlerKey(camelize$1(event))];\n if (!handler && isModelListener2) {\n handler = props[handlerName = toHandlerKey(hyphenate$1(event))];\n }\n if (handler) {\n callWithAsyncErrorHandling(handler, instance2, 6, args);\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance2.emitted) {\n instance2.emitted = {};\n } else if (instance2.emitted[handlerName]) {\n return;\n }\n instance2.emitted[handlerName] = true;\n callWithAsyncErrorHandling(onceHandler, instance2, 6, args);\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 (!isFunction$1(comp)) {\n const extendEmits = (raw2) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend$1(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 cache.set(comp, null);\n return null;\n }\n if (isArray$1(raw)) {\n raw.forEach((key) => normalized[key] = null);\n } else {\n extend$1(normalized, raw);\n }\n cache.set(comp, normalized);\n return normalized;\n}\nfunction isEmitListener(options2, key) {\n if (!options2 || !isOn$1(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, \"\");\n return hasOwn(options2, key[0].toLowerCase() + key.slice(1)) || hasOwn(options2, hyphenate$1(key)) || hasOwn(options2, key);\n}\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance2) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance2;\n currentScopeId = instance2 && instance2.type.__scopeId || null;\n return prev;\n}\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 const res = fn(...args);\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n return res;\n };\n renderFnWithContext._n = true;\n renderFnWithContext._c = true;\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\nfunction markAttrsAccessed() {\n}\nfunction renderComponentRoot(instance2) {\n const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit: emit2, render: render2, renderCache, data, setupState, ctx, inheritAttrs } = instance2;\n let result;\n let fallthroughAttrs;\n const prev = setCurrentRenderingInstance(instance2);\n try {\n if (vnode.shapeFlag & 4) {\n const proxyToUse = withProxy || proxy;\n result = normalizeVNode(render2.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));\n fallthroughAttrs = attrs;\n } else {\n const render3 = Component;\n if (false)\n ;\n result = normalizeVNode(render3.length > 1 ? render3(props, false ? {\n get attrs() {\n markAttrsAccessed();\n return attrs;\n },\n slots,\n emit: emit2\n } : { attrs, slots, emit: emit2 }) : render3(props, null));\n fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n }\n } catch (err) {\n blockStack.length = 0;\n handleError(err, instance2, 1);\n result = createVNode(Comment);\n }\n let root = result;\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$1)) {\n fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);\n }\n root = cloneVNode(root, fallthroughAttrs);\n }\n }\n }\n if (vnode.dirs) {\n root = cloneVNode(root);\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n }\n if (vnode.transition) {\n root.transition = vnode.transition;\n }\n {\n result = root;\n }\n setCurrentRenderingInstance(prev);\n return result;\n}\nconst getFunctionalFallthrough = (attrs) => {\n let res;\n for (const key in attrs) {\n if (key === \"class\" || key === \"style\" || isOn$1(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$1(key) || !(key.slice(9) in props)) {\n res[key] = attrs[key];\n }\n }\n return res;\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 (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 && parent.subTree === vnode) {\n (vnode = parent.vnode).el = el;\n parent = parent.parent;\n }\n}\nconst isSuspense = (type) => type.__isSuspense;\nfunction queueEffectWithSuspense(fn, suspense) {\n if (suspense && suspense.pendingBranch) {\n if (isArray$1(fn)) {\n suspense.effects.push(...fn);\n } else {\n suspense.effects.push(fn);\n }\n } else {\n queuePostFlushCb(fn);\n }\n}\nfunction provide(key, value) {\n if (!currentInstance)\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 instance2 = currentInstance || currentRenderingInstance;\n if (instance2) {\n const provides = instance2.parent == null ? instance2.vnode.appContext && instance2.vnode.appContext.provides : instance2.parent.provides;\n if (provides && key in provides) {\n return provides[key];\n } else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction$1(defaultValue) ? defaultValue.call(instance2.proxy) : defaultValue;\n } else\n ;\n }\n}\nconst INITIAL_WATCHER_VALUE = {};\nfunction watch(source, cb, options2) {\n return doWatch(source, cb, options2);\n}\nfunction doWatch(source, cb, { immediate, deep, flush: flush2, onTrack, onTrigger } = EMPTY_OBJ) {\n const instance2 = currentInstance;\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 = () => source;\n deep = true;\n } else if (isArray$1(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 traverse(s);\n } else if (isFunction$1(s)) {\n return callWithErrorHandling(s, instance2, 2);\n } else\n ;\n });\n } else if (isFunction$1(source)) {\n if (cb) {\n getter = () => callWithErrorHandling(source, instance2, 2);\n } else {\n getter = () => {\n if (instance2 && instance2.isUnmounted) {\n return;\n }\n if (cleanup) {\n cleanup();\n }\n return callWithAsyncErrorHandling(source, instance2, 3, [onCleanup]);\n };\n }\n } else {\n getter = NOOP;\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, instance2, 4);\n };\n };\n if (isInSSRComponentSetup) {\n onCleanup = NOOP;\n if (!cb) {\n getter();\n } else if (immediate) {\n callWithAsyncErrorHandling(cb, instance2, 3, [\n getter(),\n isMultiSource ? [] : void 0,\n onCleanup\n ]);\n }\n return NOOP;\n }\n let oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE;\n const job = () => {\n if (!effect.active) {\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, instance2, 3, [\n newValue,\n oldValue === INITIAL_WATCHER_VALUE ? void 0 : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n } else {\n effect.run();\n }\n };\n job.allowRecurse = !!cb;\n let scheduler;\n if (flush2 === \"sync\") {\n scheduler = job;\n } else if (flush2 === \"post\") {\n scheduler = () => queuePostRenderEffect(job, instance2 && instance2.suspense);\n } else {\n scheduler = () => queuePreFlushCb(job);\n }\n const effect = new ReactiveEffect(getter, scheduler);\n if (cb) {\n if (immediate) {\n job();\n } else {\n oldValue = effect.run();\n }\n } else if (flush2 === \"post\") {\n queuePostRenderEffect(effect.run.bind(effect), instance2 && instance2.suspense);\n } else {\n effect.run();\n }\n return () => {\n effect.stop();\n if (instance2 && instance2.scope) {\n remove(instance2.scope.effects, effect);\n }\n };\n}\nfunction instanceWatch(source, value, options2) {\n const publicThis = this.proxy;\n const getter = isString$1(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction$1(value)) {\n cb = value;\n } else {\n cb = value.handler;\n options2 = value;\n }\n const cur = currentInstance;\n setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options2);\n if (cur) {\n setCurrentInstance(cur);\n } else {\n unsetCurrentInstance();\n }\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, seen) {\n if (!isObject$1(value) || value[\"__v_skip\"]) {\n return value;\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, seen);\n } else if (isArray$1(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], seen);\n }\n } else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, seen);\n });\n } else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], seen);\n }\n }\n return value;\n}\nfunction useTransitionState() {\n const state2 = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: /* @__PURE__ */ new Map()\n };\n onMounted(() => {\n state2.isMounted = true;\n });\n onBeforeUnmount(() => {\n state2.isUnmounting = true;\n });\n return state2;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n },\n setup(props, { slots }) {\n const instance2 = getCurrentInstance();\n const state2 = useTransitionState();\n let prevTransitionKey;\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 for (const c of children) {\n if (c.type !== Comment) {\n child = c;\n break;\n }\n }\n }\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n if (state2.isLeaving) {\n return emptyPlaceholder(child);\n }\n const innerChild = getKeepAliveChild(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n const enterHooks = resolveTransitionHooks(innerChild, rawProps, state2, instance2);\n setTransitionHooks(innerChild, enterHooks);\n const oldChild = instance2.subTree;\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n let transitionKeyChanged = false;\n const { getTransitionKey } = innerChild.type;\n if (getTransitionKey) {\n const key = getTransitionKey();\n if (prevTransitionKey === void 0) {\n prevTransitionKey = key;\n } else if (key !== prevTransitionKey) {\n prevTransitionKey = key;\n transitionKeyChanged = true;\n }\n }\n if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\n const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state2, instance2);\n setTransitionHooks(oldInnerChild, leavingHooks);\n if (mode === \"out-in\") {\n state2.isLeaving = true;\n leavingHooks.afterLeave = () => {\n state2.isLeaving = false;\n instance2.update();\n };\n return emptyPlaceholder(child);\n } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(state2, oldInnerChild);\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n el._leaveCb = () => {\n earlyRemove();\n el._leaveCb = 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(state2, vnode) {\n const { leavingVNodes } = state2;\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, state2, instance2) {\n const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state2, vnode);\n const callHook2 = (hook, args) => {\n hook && callWithAsyncErrorHandling(hook, instance2, 9, args);\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook2(hook, args);\n if (isArray$1(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 (!state2.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n } else {\n return;\n }\n }\n if (el._leaveCb) {\n el._leaveCb(true);\n }\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el._leaveCb) {\n leavingVNode.el._leaveCb();\n }\n callHook2(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state2.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._enterCb = (cancelled) => {\n if (called)\n return;\n called = true;\n if (cancelled) {\n callHook2(cancelHook, [el]);\n } else {\n callHook2(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el._enterCb = void 0;\n };\n if (hook) {\n callAsyncHook(hook, [el, done]);\n } else {\n done();\n }\n },\n leave(el, remove2) {\n const key2 = String(vnode.key);\n if (el._enterCb) {\n el._enterCb(true);\n }\n if (state2.isUnmounting) {\n return remove2();\n }\n callHook2(onBeforeLeave, [el]);\n let called = false;\n const done = el._leaveCb = (cancelled) => {\n if (called)\n return;\n called = true;\n remove2();\n if (cancelled) {\n callHook2(onLeaveCancelled, [el]);\n } else {\n callHook2(onAfterLeave, [el]);\n }\n el._leaveCb = 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, state2, instance2);\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) ? vnode.children ? vnode.children[0] : void 0 : 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(getTransitionRawChildren(child.children, keepComment, key));\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}\nfunction defineComponent(options2) {\n return isFunction$1(options2) ? { setup: options2, name: options2.name } : options2;\n}\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\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(type, hook, keepAliveRoot, true);\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\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 setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n unsetCurrentInstance();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n } else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => (!isInSSRComponentSetup || lifecycle === \"sp\") && injectHook(lifecycle, hook, target);\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(\"rtg\");\nconst onRenderTracked = createHook(\"rtc\");\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\", hook, target);\n}\nfunction withDirectives(vnode, directives) {\n const internalInstance = currentRenderingInstance;\n if (internalInstance === null) {\n return vnode;\n }\n const instance2 = getExposeProxy(internalInstance) || internalInstance.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 (isFunction$1(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: instance2,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance2, 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, instance2, 8, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\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();\nfunction resolveDynamicComponent(component) {\n if (isString$1(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 instance2 = currentRenderingInstance || currentInstance;\n if (instance2) {\n const Component = instance2.type;\n if (type === COMPONENTS) {\n const selfName = getComponentName(Component, false);\n if (selfName && (selfName === name || selfName === camelize$1(name) || selfName === capitalize$1(camelize$1(name)))) {\n return Component;\n }\n }\n const res = resolve(instance2[type] || Component[type], name) || resolve(instance2.appContext[type], name);\n if (!res && maybeSelfReference) {\n return Component;\n }\n return res;\n }\n}\nfunction resolve(registry, name) {\n return registry && (registry[name] || registry[camelize$1(name)] || registry[capitalize$1(camelize$1(name))]);\n}\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = cache && cache[index];\n if (isArray$1(source) || isString$1(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 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$1(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(source, (item, i) => renderItem(item, i, void 0, cached && cached[i]));\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}\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n if (isArray$1(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.fn;\n }\n }\n return slots;\n}\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) {\n return createVNode(\"slot\", name === \"default\" ? null : { name }, fallback && fallback());\n }\n let slot = slots[name];\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const rendered = createBlock(Fragment, { key: props.key || `_${name}` }, validSlotContent || (fallback ? fallback() : []), validSlotContent && slots._ === 1 ? 64 : -2);\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}\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 = /* @__PURE__ */ extend$1(/* @__PURE__ */ Object.create(null), {\n $: (i) => i,\n $el: (i) => i.vnode.el,\n $data: (i) => i.data,\n $props: (i) => i.props,\n $attrs: (i) => i.attrs,\n $slots: (i) => i.slots,\n $refs: (i) => i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $emit: (i) => i.emit,\n $options: (i) => resolveMergedOptions(i),\n $forceUpdate: (i) => i.f || (i.f = () => queueJob(i.update)),\n $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: (i) => instanceWatch.bind(i)\n});\nconst PublicInstanceProxyHandlers = {\n get({ _: instance2 }, key) {\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance2;\n let normalizedProps;\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1:\n return setupState[key];\n case 2:\n return data[key];\n case 4:\n return ctx[key];\n case 3:\n return props[key];\n }\n } else if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {\n accessCache[key] = 1;\n return setupState[key];\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2;\n return data[key];\n } else if ((normalizedProps = instance2.propsOptions[0]) && hasOwn(normalizedProps, key)) {\n accessCache[key] = 3;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4;\n return ctx[key];\n } else if (shouldCacheAccess) {\n accessCache[key] = 0;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance2, \"get\", key);\n }\n return publicGetter(instance2);\n } else if ((cssModule = type.__cssModules) && (cssModule = cssModule[key])) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4;\n return ctx[key];\n } else if (globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)) {\n {\n return globalProperties[key];\n }\n } else\n ;\n },\n set({ _: instance2 }, key, value) {\n const { data, setupState, ctx } = instance2;\n if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n data[key] = value;\n return true;\n } else if (hasOwn(instance2.props, key)) {\n return false;\n }\n if (key[0] === \"$\" && key.slice(1) in instance2) {\n return false;\n } else {\n {\n ctx[key] = value;\n }\n }\n return true;\n },\n has({ _: { data, setupState, accessCache, ctx, appContext, propsOptions } }, key) {\n let normalizedProps;\n return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || setupState !== EMPTY_OBJ && hasOwn(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};\nlet shouldCacheAccess = true;\nfunction applyOptions(instance2) {\n const options2 = resolveMergedOptions(instance2);\n const publicThis = instance2.proxy;\n const ctx = instance2.ctx;\n shouldCacheAccess = false;\n if (options2.beforeCreate) {\n callHook$1(options2.beforeCreate, instance2, \"bc\");\n }\n const {\n data: dataOptions,\n computed: computedOptions,\n methods,\n watch: watchOptions,\n provide: provideOptions,\n inject: injectOptions,\n created,\n beforeMount: beforeMount2,\n mounted,\n beforeUpdate,\n updated: updated2,\n activated,\n deactivated,\n beforeDestroy,\n beforeUnmount,\n destroyed,\n unmounted: unmounted2,\n render: render2,\n renderTracked,\n renderTriggered,\n errorCaptured,\n serverPrefetch,\n expose,\n inheritAttrs,\n components,\n directives,\n filters\n } = options2;\n const checkDuplicateProperties = null;\n if (injectOptions) {\n resolveInjections(injectOptions, ctx, checkDuplicateProperties, instance2.appContext.config.unwrapInjectedRef);\n }\n if (methods) {\n for (const key in methods) {\n const methodHandler = methods[key];\n if (isFunction$1(methodHandler)) {\n {\n ctx[key] = methodHandler.bind(publicThis);\n }\n }\n }\n }\n if (dataOptions) {\n const data = dataOptions.call(publicThis, publicThis);\n if (!isObject$1(data))\n ;\n else {\n instance2.data = reactive(data);\n }\n }\n shouldCacheAccess = true;\n if (computedOptions) {\n for (const key in computedOptions) {\n const opt = computedOptions[key];\n const get3 = isFunction$1(opt) ? opt.bind(publicThis, publicThis) : isFunction$1(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;\n const set2 = !isFunction$1(opt) && isFunction$1(opt.set) ? opt.set.bind(publicThis) : NOOP;\n const c = computed({\n get: get3,\n set: set2\n });\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => c.value,\n set: (v) => c.value = v\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$1(provideOptions) ? provideOptions.call(publicThis) : provideOptions;\n Reflect.ownKeys(provides).forEach((key) => {\n provide(key, provides[key]);\n });\n }\n if (created) {\n callHook$1(created, instance2, \"c\");\n }\n function registerLifecycleHook(register2, hook) {\n if (isArray$1(hook)) {\n hook.forEach((_hook) => register2(_hook.bind(publicThis)));\n } else if (hook) {\n register2(hook.bind(publicThis));\n }\n }\n registerLifecycleHook(onBeforeMount, beforeMount2);\n registerLifecycleHook(onMounted, mounted);\n registerLifecycleHook(onBeforeUpdate, beforeUpdate);\n registerLifecycleHook(onUpdated, updated2);\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, unmounted2);\n registerLifecycleHook(onServerPrefetch, serverPrefetch);\n if (isArray$1(expose)) {\n if (expose.length) {\n const exposed = instance2.exposed || (instance2.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 (!instance2.exposed) {\n instance2.exposed = {};\n }\n }\n if (render2 && instance2.render === NOOP) {\n instance2.render = render2;\n }\n if (inheritAttrs != null) {\n instance2.inheritAttrs = inheritAttrs;\n }\n if (components)\n instance2.components = components;\n if (directives)\n instance2.directives = directives;\n}\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP, unwrapRef = false) {\n if (isArray$1(injectOptions)) {\n injectOptions = normalizeInject(injectOptions);\n }\n for (const key in injectOptions) {\n const opt = injectOptions[key];\n let injected;\n if (isObject$1(opt)) {\n if (\"default\" in opt) {\n injected = inject(opt.from || key, opt.default, true);\n } else {\n injected = inject(opt.from || key);\n }\n } else {\n injected = inject(opt);\n }\n if (isRef(injected)) {\n if (unwrapRef) {\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 } else {\n ctx[key] = injected;\n }\n }\n}\nfunction callHook$1(hook, instance2, type) {\n callWithAsyncErrorHandling(isArray$1(hook) ? hook.map((h2) => h2.bind(instance2.proxy)) : hook.bind(instance2.proxy), instance2, type);\n}\nfunction createWatcher(raw, ctx, publicThis, key) {\n const getter = key.includes(\".\") ? createPathGetter(publicThis, key) : () => publicThis[key];\n if (isString$1(raw)) {\n const handler = ctx[raw];\n if (isFunction$1(handler)) {\n watch(getter, handler);\n }\n } else if (isFunction$1(raw)) {\n watch(getter, raw.bind(publicThis));\n } else if (isObject$1(raw)) {\n if (isArray$1(raw)) {\n raw.forEach((r) => createWatcher(r, ctx, publicThis, key));\n } else {\n const handler = isFunction$1(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];\n if (isFunction$1(handler)) {\n watch(getter, handler, raw);\n }\n }\n } else\n ;\n}\nfunction resolveMergedOptions(instance2) {\n const base = instance2.type;\n const { mixins, extends: extendsOptions } = base;\n const { mixins: globalMixins, optionsCache: cache, config: { optionMergeStrategies } } = instance2.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((m) => mergeOptions(resolved, m, optionMergeStrategies, true));\n }\n mergeOptions(resolved, base, optionMergeStrategies);\n }\n cache.set(base, resolved);\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((m) => mergeOptions(to, m, strats, true));\n }\n for (const key in from) {\n if (asMixin && key === \"expose\")\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: mergeObjectOptions,\n emits: mergeObjectOptions,\n methods: mergeObjectOptions,\n computed: mergeObjectOptions,\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 components: mergeObjectOptions,\n directives: mergeObjectOptions,\n watch: mergeWatchOptions,\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$1(isFunction$1(to) ? to.call(this, this) : to, isFunction$1(from) ? from.call(this, this) : from);\n };\n}\nfunction mergeInject(to, from) {\n return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\n}\nfunction normalizeInject(raw) {\n if (isArray$1(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$1(extend$1(/* @__PURE__ */ Object.create(null), to), from) : from;\n}\nfunction mergeWatchOptions(to, from) {\n if (!to)\n return from;\n if (!from)\n return to;\n const merged = extend$1(/* @__PURE__ */ Object.create(null), to);\n for (const key in from) {\n merged[key] = mergeAsArray(to[key], from[key]);\n }\n return merged;\n}\nfunction initProps(instance2, rawProps, isStateful, isSSR = false) {\n const props = {};\n const attrs = {};\n def(attrs, InternalObjectKey, 1);\n instance2.propsDefaults = /* @__PURE__ */ Object.create(null);\n setFullProps(instance2, rawProps, props, attrs);\n for (const key in instance2.propsOptions[0]) {\n if (!(key in props)) {\n props[key] = void 0;\n }\n }\n if (isStateful) {\n instance2.props = isSSR ? props : shallowReactive(props);\n } else {\n if (!instance2.type.props) {\n instance2.props = attrs;\n } else {\n instance2.props = props;\n }\n }\n instance2.attrs = attrs;\n}\nfunction updateProps(instance2, rawProps, rawPrevProps, optimized) {\n const { props, attrs, vnode: { patchFlag } } = instance2;\n const rawCurrentProps = toRaw(props);\n const [options2] = instance2.propsOptions;\n let hasAttrsChanged = false;\n if ((optimized || patchFlag > 0) && !(patchFlag & 16)) {\n if (patchFlag & 8) {\n const propsToUpdate = instance2.vnode.dynamicProps;\n for (let i = 0; i < propsToUpdate.length; i++) {\n let key = propsToUpdate[i];\n if (isEmitListener(instance2.emitsOptions, key)) {\n continue;\n }\n const value = rawProps[key];\n if (options2) {\n if (hasOwn(attrs, key)) {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n } else {\n const camelizedKey = camelize$1(key);\n props[camelizedKey] = resolvePropValue(options2, rawCurrentProps, camelizedKey, value, instance2, false);\n }\n } else {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n } else {\n if (setFullProps(instance2, rawProps, props, attrs)) {\n hasAttrsChanged = true;\n }\n let kebabKey;\n for (const key in rawCurrentProps) {\n if (!rawProps || !hasOwn(rawProps, key) && ((kebabKey = hyphenate$1(key)) === key || !hasOwn(rawProps, kebabKey))) {\n if (options2) {\n if (rawPrevProps && (rawPrevProps[key] !== void 0 || rawPrevProps[kebabKey] !== void 0)) {\n props[key] = resolvePropValue(options2, rawCurrentProps, key, void 0, instance2, true);\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(instance2, \"set\", \"$attrs\");\n }\n}\nfunction setFullProps(instance2, rawProps, props, attrs) {\n const [options2, needCastKeys] = instance2.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 (options2 && hasOwn(options2, camelKey = camelize$1(key))) {\n if (!needCastKeys || !needCastKeys.includes(camelKey)) {\n props[camelKey] = value;\n } else {\n (rawCastValues || (rawCastValues = {}))[camelKey] = value;\n }\n } else if (!isEmitListener(instance2.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(options2, rawCurrentProps, key, castValues[key], instance2, !hasOwn(castValues, key));\n }\n }\n return hasAttrsChanged;\n}\nfunction resolvePropValue(options2, props, key, value, instance2, isAbsent) {\n const opt = options2[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 && isFunction$1(defaultValue)) {\n const { propsDefaults } = instance2;\n if (key in propsDefaults) {\n value = propsDefaults[key];\n } else {\n setCurrentInstance(instance2);\n value = propsDefaults[key] = defaultValue.call(null, props);\n unsetCurrentInstance();\n }\n } else {\n value = defaultValue;\n }\n }\n if (opt[0]) {\n if (isAbsent && !hasDefault) {\n value = false;\n } else if (opt[1] && (value === \"\" || value === hyphenate$1(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 (!isFunction$1(comp)) {\n const extendProps = (raw2) => {\n hasExtends = true;\n const [props, keys] = normalizePropsOptions(raw2, appContext, true);\n extend$1(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 cache.set(comp, EMPTY_ARR);\n return EMPTY_ARR;\n }\n if (isArray$1(raw)) {\n for (let i = 0; i < raw.length; i++) {\n const normalizedKey = camelize$1(raw[i]);\n if (validatePropName(normalizedKey)) {\n normalized[normalizedKey] = EMPTY_OBJ;\n }\n }\n } else if (raw) {\n for (const key in raw) {\n const normalizedKey = camelize$1(key);\n if (validatePropName(normalizedKey)) {\n const opt = raw[key];\n const prop = normalized[normalizedKey] = isArray$1(opt) || isFunction$1(opt) ? { type: opt } : opt;\n if (prop) {\n const booleanIndex = getTypeIndex(Boolean, prop.type);\n const stringIndex = getTypeIndex(String, prop.type);\n prop[0] = booleanIndex > -1;\n prop[1] = 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 cache.set(comp, res);\n return res;\n}\nfunction validatePropName(key) {\n if (key[0] !== \"$\") {\n return true;\n }\n return false;\n}\nfunction getType(ctor) {\n const match = ctor && ctor.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ctor === null ? \"null\" : \"\";\n}\nfunction isSameType(a, b) {\n return getType(a) === getType(b);\n}\nfunction getTypeIndex(type, expectedTypes) {\n if (isArray$1(expectedTypes)) {\n return expectedTypes.findIndex((t) => isSameType(t, type));\n } else if (isFunction$1(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1;\n }\n return -1;\n}\nconst isInternalKey = (key) => key[0] === \"_\" || key === \"$stable\";\nconst normalizeSlotValue = (value) => isArray$1(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 return normalizeSlotValue(rawSlot(...args));\n }, ctx);\n normalized._c = false;\n return normalized;\n};\nconst normalizeObjectSlots = (rawSlots, slots, instance2) => {\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$1(value)) {\n slots[key] = normalizeSlot(key, value, ctx);\n } else if (value != null) {\n const normalized = normalizeSlotValue(value);\n slots[key] = () => normalized;\n }\n }\n};\nconst normalizeVNodeSlots = (instance2, children) => {\n const normalized = normalizeSlotValue(children);\n instance2.slots.default = () => normalized;\n};\nconst initSlots = (instance2, children) => {\n if (instance2.vnode.shapeFlag & 32) {\n const type = children._;\n if (type) {\n instance2.slots = toRaw(children);\n def(children, \"_\", type);\n } else {\n normalizeObjectSlots(children, instance2.slots = {});\n }\n } else {\n instance2.slots = {};\n if (children) {\n normalizeVNodeSlots(instance2, children);\n }\n }\n def(instance2.slots, InternalObjectKey, 1);\n};\nconst updateSlots = (instance2, children, optimized) => {\n const { vnode, slots } = instance2;\n let needDeletionCheck = true;\n let deletionComparisonTarget = EMPTY_OBJ;\n if (vnode.shapeFlag & 32) {\n const type = children._;\n if (type) {\n if (optimized && type === 1) {\n needDeletionCheck = false;\n } else {\n extend$1(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(instance2, children);\n deletionComparisonTarget = { default: 1 };\n }\n if (needDeletionCheck) {\n for (const key in slots) {\n if (!isInternalKey(key) && !(key in deletionComparisonTarget)) {\n delete slots[key];\n }\n }\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 = 0;\nfunction createAppAPI(render2, hydrate) {\n return function createApp(rootComponent, rootProps = null) {\n if (!isFunction$1(rootComponent)) {\n rootComponent = Object.assign({}, rootComponent);\n }\n if (rootProps != null && !isObject$1(rootProps)) {\n rootProps = null;\n }\n const context = createAppContext();\n const installedPlugins = /* @__PURE__ */ new Set();\n let isMounted = false;\n const app = context.app = {\n _uid: uid++,\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 },\n use(plugin, ...options2) {\n if (installedPlugins.has(plugin))\n ;\n else if (plugin && isFunction$1(plugin.install)) {\n installedPlugins.add(plugin);\n plugin.install(app, ...options2);\n } else if (isFunction$1(plugin)) {\n installedPlugins.add(plugin);\n plugin(app, ...options2);\n } else\n ;\n return app;\n },\n mixin(mixin) {\n {\n if (!context.mixins.includes(mixin)) {\n context.mixins.push(mixin);\n }\n }\n return app;\n },\n component(name, component) {\n if (!component) {\n return context.components[name];\n }\n context.components[name] = component;\n return app;\n },\n directive(name, directive2) {\n if (!directive2) {\n return context.directives[name];\n }\n context.directives[name] = directive2;\n return app;\n },\n mount(rootContainer, isHydrate, isSVG) {\n if (!isMounted) {\n const vnode = createVNode(rootComponent, rootProps);\n vnode.appContext = context;\n if (isHydrate && hydrate) {\n hydrate(vnode, rootContainer);\n } else {\n render2(vnode, rootContainer, isSVG);\n }\n isMounted = true;\n app._container = rootContainer;\n rootContainer.__vue_app__ = app;\n return getExposeProxy(vnode.component) || vnode.component.proxy;\n }\n },\n unmount() {\n if (isMounted) {\n render2(null, app._container);\n delete app._container.__vue_app__;\n }\n },\n provide(key, value) {\n context.provides[key] = value;\n return app;\n }\n };\n return app;\n };\n}\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n if (isArray$1(rawRef)) {\n rawRef.forEach((r, i) => setRef(r, oldRawRef && (isArray$1(oldRawRef) ? oldRawRef[i] : oldRawRef), parentSuspense, vnode, isUnmount));\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 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$1(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$1(ref)) {\n callWithErrorHandling(ref, owner, 12, [value, refs]);\n } else {\n const _isString = isString$1(ref);\n const _isRef = isRef(ref);\n if (_isString || _isRef) {\n const doSet = () => {\n if (rawRef.f) {\n const existing = _isString ? refs[ref] : ref.value;\n if (isUnmount) {\n isArray$1(existing) && remove(existing, refValue);\n } else {\n if (!isArray$1(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\n ;\n };\n if (value) {\n doSet.id = -1;\n queuePostRenderEffect(doSet, parentSuspense);\n } else {\n doSet();\n }\n }\n }\n}\nconst queuePostRenderEffect = queueEffectWithSuspense;\nfunction createRenderer(options2) {\n return baseCreateRenderer(options2);\n}\nfunction baseCreateRenderer(options2, createHydrationFns) {\n const target = getGlobalThis();\n target.__VUE__ = true;\n const { insert: hostInsert, remove: hostRemove, patchProp: hostPatchProp, createElement: hostCreateElement, createText: hostCreateText, createComment: hostCreateComment, setText: hostSetText, setElementText: hostSetElementText, parentNode: hostParentNode, nextSibling: hostNextSibling, setScopeId: hostSetScopeId = NOOP, cloneNode: hostCloneNode, insertStaticContent: hostInsertStaticContent } = options2;\n const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = !!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, isSVG);\n }\n break;\n case Fragment:\n processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n break;\n default:\n if (shapeFlag & 1) {\n processElement(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n } else if (shapeFlag & 6) {\n processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n } else if (shapeFlag & 64) {\n type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);\n } else if (shapeFlag & 128) {\n type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);\n } else\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(n2.el = hostCreateText(n2.children), container, anchor);\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(n2.el = hostCreateComment(n2.children || \"\"), container, anchor);\n } else {\n n2.el = n1.el;\n }\n };\n const mountStaticNode = (n2, container, anchor, isSVG) => {\n [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG, n2.el, n2.anchor);\n };\n const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\n let next2;\n while (el && el !== anchor) {\n next2 = hostNextSibling(el);\n hostInsert(el, container, nextSibling);\n el = next2;\n }\n hostInsert(anchor, container, nextSibling);\n };\n const removeStaticNode = ({ el, anchor }) => {\n let next2;\n while (el && el !== anchor) {\n next2 = hostNextSibling(el);\n hostRemove(el);\n el = next2;\n }\n hostRemove(anchor);\n };\n const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n isSVG = isSVG || n2.type === \"svg\";\n if (n1 == null) {\n mountElement(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n } else {\n patchElement(n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n };\n const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n let el;\n let vnodeHook;\n const { type, props, shapeFlag, transition, patchFlag, dirs } = vnode;\n if (vnode.el && hostCloneNode !== void 0 && patchFlag === -1) {\n el = vnode.el = hostCloneNode(vnode.el);\n } else {\n el = vnode.el = hostCreateElement(vnode.type, isSVG, props && props.is, props);\n if (shapeFlag & 8) {\n hostSetElementText(el, vnode.children);\n } else if (shapeFlag & 16) {\n mountChildren(vnode.children, el, null, parentComponent, parentSuspense, isSVG && type !== \"foreignObject\", slotScopeIds, optimized);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n }\n if (props) {\n for (const key in props) {\n if (key !== \"value\" && !isReservedProp(key)) {\n hostPatchProp(el, key, null, props[key], isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n if (\"value\" in props) {\n hostPatchProp(el, \"value\", null, props.value);\n }\n if (vnodeHook = props.onVnodeBeforeMount) {\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\n }\n }\n setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n }\n const needCallTransitionHooks = (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;\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 (vnode === subTree) {\n const parentVNode = parentComponent.vnode;\n setScopeId(el, parentVNode, parentVNode.scopeId, parentVNode.slotScopeIds, parentComponent.parent);\n }\n }\n };\n const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start2 = 0) => {\n for (let i = start2; i < children.length; i++) {\n const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]);\n patch(null, child, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n };\n const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, 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 const areChildrenSVG = isSVG && n2.type !== \"foreignObject\";\n if (dynamicChildren) {\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, el, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds);\n } else if (!optimized) {\n patchChildren(n1, n2, el, null, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds, false);\n }\n if (patchFlag > 0) {\n if (patchFlag & 16) {\n patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\n } else {\n if (patchFlag & 2) {\n if (oldProps.class !== newProps.class) {\n hostPatchProp(el, \"class\", null, newProps.class, isSVG);\n }\n }\n if (patchFlag & 4) {\n hostPatchProp(el, \"style\", oldProps.style, newProps.style, isSVG);\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 next2 = newProps[key];\n if (next2 !== prev || key === \"value\") {\n hostPatchProp(el, key, prev, next2, isSVG, n1.children, parentComponent, parentSuspense, unmountChildren);\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(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\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, isSVG, slotScopeIds) => {\n for (let i = 0; i < newChildren.length; i++) {\n const oldVNode = oldChildren[i];\n const newVNode = newChildren[i];\n const container = oldVNode.el && (oldVNode.type === Fragment || !isSameVNodeType(oldVNode, newVNode) || oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : fallbackContainer;\n patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, true);\n }\n };\n const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {\n if (oldProps !== newProps) {\n for (const key in newProps) {\n if (isReservedProp(key))\n continue;\n const next2 = newProps[key];\n const prev = oldProps[key];\n if (next2 !== prev && key !== \"value\") {\n hostPatchProp(el, key, prev, next2, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n if (oldProps !== EMPTY_OBJ) {\n for (const key in oldProps) {\n if (!isReservedProp(key) && !(key in newProps)) {\n hostPatchProp(el, key, oldProps[key], null, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n }\n if (\"value\" in newProps) {\n hostPatchProp(el, \"value\", oldProps.value, newProps.value);\n }\n }\n };\n const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, 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 (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(n2.children, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n } else {\n if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && n1.dynamicChildren) {\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, container, parentComponent, parentSuspense, isSVG, slotScopeIds);\n if (n2.key != null || parentComponent && n2 === parentComponent.subTree) {\n traverseStaticChildren(n1, n2, true);\n }\n } else {\n patchChildren(n1, n2, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n }\n };\n const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n n2.slotScopeIds = slotScopeIds;\n if (n1 == null) {\n if (n2.shapeFlag & 512) {\n parentComponent.ctx.activate(n2, container, anchor, isSVG, optimized);\n } else {\n mountComponent(n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\n }\n } else {\n updateComponent(n1, n2, optimized);\n }\n };\n const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {\n const instance2 = initialVNode.component = createComponentInstance(initialVNode, parentComponent, parentSuspense);\n if (isKeepAlive(initialVNode)) {\n instance2.ctx.renderer = internals;\n }\n {\n setupComponent(instance2);\n }\n if (instance2.asyncDep) {\n parentSuspense && parentSuspense.registerDep(instance2, setupRenderEffect);\n if (!initialVNode.el) {\n const placeholder = instance2.subTree = createVNode(Comment);\n processCommentNode(null, placeholder, container, anchor);\n }\n return;\n }\n setupRenderEffect(instance2, initialVNode, container, anchor, parentSuspense, isSVG, optimized);\n };\n const updateComponent = (n1, n2, optimized) => {\n const instance2 = n2.component = n1.component;\n if (shouldUpdateComponent(n1, n2, optimized)) {\n if (instance2.asyncDep && !instance2.asyncResolved) {\n updateComponentPreRender(instance2, n2, optimized);\n return;\n } else {\n instance2.next = n2;\n invalidateJob(instance2.update);\n instance2.update();\n }\n } else {\n n2.el = n1.el;\n instance2.vnode = n2;\n }\n };\n const setupRenderEffect = (instance2, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => {\n const componentUpdateFn = () => {\n if (!instance2.isMounted) {\n let vnodeHook;\n const { el, props } = initialVNode;\n const { bm, m, parent } = instance2;\n const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);\n toggleRecurse(instance2, false);\n if (bm) {\n invokeArrayFns(bm);\n }\n if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHook, parent, initialVNode);\n }\n toggleRecurse(instance2, true);\n if (el && hydrateNode) {\n const hydrateSubTree = () => {\n instance2.subTree = renderComponentRoot(instance2);\n hydrateNode(el, instance2.subTree, instance2, parentSuspense, null);\n };\n if (isAsyncWrapperVNode) {\n initialVNode.type.__asyncLoader().then(\n () => !instance2.isUnmounted && hydrateSubTree()\n );\n } else {\n hydrateSubTree();\n }\n } else {\n const subTree = instance2.subTree = renderComponentRoot(instance2);\n patch(null, subTree, container, anchor, instance2, parentSuspense, isSVG);\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(() => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), parentSuspense);\n }\n if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) {\n instance2.a && queuePostRenderEffect(instance2.a, parentSuspense);\n }\n instance2.isMounted = true;\n initialVNode = container = anchor = null;\n } else {\n let { next: next2, bu, u, parent, vnode } = instance2;\n let originNext = next2;\n let vnodeHook;\n toggleRecurse(instance2, false);\n if (next2) {\n next2.el = vnode.el;\n updateComponentPreRender(instance2, next2, optimized);\n } else {\n next2 = vnode;\n }\n if (bu) {\n invokeArrayFns(bu);\n }\n if (vnodeHook = next2.props && next2.props.onVnodeBeforeUpdate) {\n invokeVNodeHook(vnodeHook, parent, next2, vnode);\n }\n toggleRecurse(instance2, true);\n const nextTree = renderComponentRoot(instance2);\n const prevTree = instance2.subTree;\n instance2.subTree = nextTree;\n patch(\n prevTree,\n nextTree,\n hostParentNode(prevTree.el),\n getNextHostNode(prevTree),\n instance2,\n parentSuspense,\n isSVG\n );\n next2.el = nextTree.el;\n if (originNext === null) {\n updateHOCHostEl(instance2, nextTree.el);\n }\n if (u) {\n queuePostRenderEffect(u, parentSuspense);\n }\n if (vnodeHook = next2.props && next2.props.onVnodeUpdated) {\n queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, next2, vnode), parentSuspense);\n }\n }\n };\n const effect = instance2.effect = new ReactiveEffect(\n componentUpdateFn,\n () => queueJob(update2),\n instance2.scope\n );\n const update2 = instance2.update = () => effect.run();\n update2.id = instance2.uid;\n toggleRecurse(instance2, true);\n update2();\n };\n const updateComponentPreRender = (instance2, nextVNode, optimized) => {\n nextVNode.component = instance2;\n const prevProps = instance2.vnode.props;\n instance2.vnode = nextVNode;\n instance2.next = null;\n updateProps(instance2, nextVNode.props, prevProps, optimized);\n updateSlots(instance2, nextVNode.children, optimized);\n pauseTracking();\n flushPreFlushCbs(void 0, instance2.update);\n resetTracking();\n };\n const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, 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(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n return;\n } else if (patchFlag & 256) {\n patchUnkeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\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(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\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(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n }\n }\n };\n const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, 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(c1[i], nextChild, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n if (oldLength > newLength) {\n unmountChildren(c1, parentComponent, parentSuspense, true, false, commonLength);\n } else {\n mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, commonLength);\n }\n };\n const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, 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(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\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(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\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(null, c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]), container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\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 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(prevChild, c2[newIndex], container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\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(null, nextChild, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\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 needTransition = moveType !== 2 && shapeFlag & 1 && transition;\n if (needTransition) {\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 remove3 = () => hostInsert(el, container, anchor);\n const performLeave = () => {\n leave(el, () => {\n remove3();\n afterLeave && afterLeave();\n });\n };\n if (delayLeave) {\n delayLeave(el, remove3, 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 { type, props, ref, children, dynamicChildren, shapeFlag, patchFlag, dirs } = 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(vnode, parentComponent, parentSuspense, optimized, internals, doRemove);\n } else if (dynamicChildren && (type !== Fragment || patchFlag > 0 && patchFlag & 64)) {\n unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);\n } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {\n unmountChildren(children, parentComponent, parentSuspense);\n }\n if (doRemove) {\n remove2(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 remove2 = (vnode) => {\n const { type, el, anchor, transition } = vnode;\n if (type === Fragment) {\n {\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 next2;\n while (cur !== end) {\n next2 = hostNextSibling(cur);\n hostRemove(cur);\n cur = next2;\n }\n hostRemove(end);\n };\n const unmountComponent = (instance2, parentSuspense, doRemove) => {\n const { bum, scope, update: update2, subTree, um } = instance2;\n if (bum) {\n invokeArrayFns(bum);\n }\n scope.stop();\n if (update2) {\n update2.active = false;\n unmount(subTree, instance2, parentSuspense, doRemove);\n }\n if (um) {\n queuePostRenderEffect(um, parentSuspense);\n }\n queuePostRenderEffect(() => {\n instance2.isUnmounted = true;\n }, parentSuspense);\n if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance2.asyncDep && !instance2.asyncResolved && instance2.suspenseId === parentSuspense.pendingId) {\n parentSuspense.deps--;\n if (parentSuspense.deps === 0) {\n parentSuspense.resolve();\n }\n }\n };\n const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start2 = 0) => {\n for (let i = start2; 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 const render2 = (vnode, container, isSVG) => {\n if (vnode == null) {\n if (container._vnode) {\n unmount(container._vnode, null, null, true);\n }\n } else {\n patch(container._vnode || null, vnode, container, null, null, null, isSVG);\n }\n flushPostFlushCbs();\n container._vnode = vnode;\n };\n const internals = {\n p: patch,\n um: unmount,\n m: move,\n r: remove2,\n mt: mountComponent,\n mc: mountChildren,\n pc: patchChildren,\n pbc: patchBlockChildren,\n n: getNextHostNode,\n o: options2\n };\n let hydrate;\n let hydrateNode;\n if (createHydrationFns) {\n [hydrate, hydrateNode] = createHydrationFns(internals);\n }\n return {\n render: render2,\n hydrate,\n createApp: createAppAPI(render2, hydrate)\n };\n}\nfunction toggleRecurse({ effect, update: update2 }, allowed) {\n effect.allowRecurse = update2.allowRecurse = allowed;\n}\nfunction traverseStaticChildren(n1, n2, shallow = false) {\n const ch1 = n1.children;\n const ch2 = n2.children;\n if (isArray$1(ch1) && isArray$1(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 }\n }\n}\nfunction getSequence(arr) {\n const p2 = 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 p2[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 p2[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 = p2[v];\n }\n return result;\n}\nconst isTeleport = (type) => type.__isTeleport;\nconst Fragment = Symbol(void 0);\nconst Text = Symbol(void 0);\nconst Comment = Symbol(void 0);\nconst Static = Symbol(void 0);\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(createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, true));\n}\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\n return setupBlock(createVNode(type, props, children, patchFlag, dynamicProps, true));\n}\nfunction isVNode(value) {\n return value ? value.__v_isVNode === true : false;\n}\nfunction isSameVNodeType(n1, n2) {\n return n1.type === n2.type && n1.key === n2.key;\n}\nconst InternalObjectKey = `__vInternal`;\nconst normalizeKey = ({ key }) => key != null ? key : null;\nconst normalizeRef = ({ ref, ref_key, ref_for }) => {\n return ref != null ? isString$1(ref) || isRef(ref) || isFunction$1(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 };\n if (needFullChildrenNormalization) {\n normalizeChildren(vnode, children);\n if (shapeFlag & 128) {\n type.normalize(vnode);\n }\n } else if (children) {\n vnode.shapeFlag |= isString$1(children) ? 8 : 16;\n }\n if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock && (vnode.patchFlag > 0 || shapeFlag & 6) && vnode.patchFlag !== 32) {\n currentBlock.push(vnode);\n }\n return vnode;\n}\nconst createVNode = _createVNode;\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\n if (!type || type === NULL_DYNAMIC_COMPONENT) {\n type = Comment;\n }\n if (isVNode(type)) {\n const cloned = cloneVNode(type, props, true);\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$1(klass)) {\n props.class = normalizeClass(klass);\n }\n if (isObject$1(style)) {\n if (isProxy(style) && !isArray$1(style)) {\n style = extend$1({}, style);\n }\n props.style = normalizeStyle(style);\n }\n }\n const shapeFlag = isString$1(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject$1(type) ? 4 : isFunction$1(type) ? 2 : 0;\n return createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, isBlockNode, true);\n}\nfunction guardReactiveProps(props) {\n if (!props)\n return null;\n return isProxy(props) || InternalObjectKey in props ? extend$1({}, 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 ? mergeRef && ref ? isArray$1(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps) : ref,\n scopeId: vnode.scopeId,\n slotScopeIds: vnode.slotScopeIds,\n children,\n target: vnode.target,\n targetAnchor: vnode.targetAnchor,\n staticCount: vnode.staticCount,\n shapeFlag: vnode.shapeFlag,\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 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 };\n return cloned;\n}\nfunction createTextVNode(text2 = \" \", flag = 0) {\n return createVNode(Text, null, text2, flag);\n}\nfunction createCommentVNode(text2 = \"\", asBlock = false) {\n return asBlock ? (openBlock(), createBlock(Comment, null, text2)) : createVNode(Comment, null, text2);\n}\nfunction normalizeVNode(child) {\n if (child == null || typeof child === \"boolean\") {\n return createVNode(Comment);\n } else if (isArray$1(child)) {\n return createVNode(\n Fragment,\n null,\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.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$1(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$1(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$1(key)) {\n const existing = ret[key];\n const incoming = toMerge[key];\n if (incoming && existing !== incoming && !(isArray$1(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, instance2, vnode, prevVNode = null) {\n callWithAsyncErrorHandling(hook, instance2, 7, [\n vnode,\n prevVNode\n ]);\n}\nconst emptyAppContext = createAppContext();\nlet uid$1 = 0;\nfunction createComponentInstance(vnode, parent, suspense) {\n const type = vnode.type;\n const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\n const instance2 = {\n uid: uid$1++,\n vnode,\n type,\n parent,\n appContext,\n root: null,\n next: null,\n subTree: null,\n effect: null,\n update: null,\n scope: new EffectScope(true),\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 components: null,\n directives: null,\n propsOptions: normalizePropsOptions(type, appContext),\n emitsOptions: normalizeEmitsOptions(type, appContext),\n emit: null,\n emitted: null,\n propsDefaults: EMPTY_OBJ,\n inheritAttrs: type.inheritAttrs,\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 suspense,\n suspenseId: suspense ? suspense.pendingId : 0,\n asyncDep: null,\n asyncResolved: false,\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 {\n instance2.ctx = { _: instance2 };\n }\n instance2.root = parent ? parent.root : instance2;\n instance2.emit = emit$1.bind(null, instance2);\n if (vnode.ce) {\n vnode.ce(instance2);\n }\n return instance2;\n}\nlet currentInstance = null;\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\nconst setCurrentInstance = (instance2) => {\n currentInstance = instance2;\n instance2.scope.on();\n};\nconst unsetCurrentInstance = () => {\n currentInstance && currentInstance.scope.off();\n currentInstance = null;\n};\nfunction isStatefulComponent(instance2) {\n return instance2.vnode.shapeFlag & 4;\n}\nlet isInSSRComponentSetup = false;\nfunction setupComponent(instance2, isSSR = false) {\n isInSSRComponentSetup = isSSR;\n const { props, children } = instance2.vnode;\n const isStateful = isStatefulComponent(instance2);\n initProps(instance2, props, isStateful, isSSR);\n initSlots(instance2, children);\n const setupResult = isStateful ? setupStatefulComponent(instance2, isSSR) : void 0;\n isInSSRComponentSetup = false;\n return setupResult;\n}\nfunction setupStatefulComponent(instance2, isSSR) {\n const Component = instance2.type;\n instance2.accessCache = /* @__PURE__ */ Object.create(null);\n instance2.proxy = markRaw(new Proxy(instance2.ctx, PublicInstanceProxyHandlers));\n const { setup } = Component;\n if (setup) {\n const setupContext = instance2.setupContext = setup.length > 1 ? createSetupContext(instance2) : null;\n setCurrentInstance(instance2);\n pauseTracking();\n const setupResult = callWithErrorHandling(setup, instance2, 0, [instance2.props, setupContext]);\n resetTracking();\n unsetCurrentInstance();\n if (isPromise(setupResult)) {\n setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\n if (isSSR) {\n return setupResult.then((resolvedResult) => {\n handleSetupResult(instance2, resolvedResult, isSSR);\n }).catch((e) => {\n handleError(e, instance2, 0);\n });\n } else {\n instance2.asyncDep = setupResult;\n }\n } else {\n handleSetupResult(instance2, setupResult, isSSR);\n }\n } else {\n finishComponentSetup(instance2, isSSR);\n }\n}\nfunction handleSetupResult(instance2, setupResult, isSSR) {\n if (isFunction$1(setupResult)) {\n if (instance2.type.__ssrInlineRender) {\n instance2.ssrRender = setupResult;\n } else {\n instance2.render = setupResult;\n }\n } else if (isObject$1(setupResult)) {\n instance2.setupState = proxyRefs(setupResult);\n } else\n ;\n finishComponentSetup(instance2, isSSR);\n}\nlet compile;\nfunction finishComponentSetup(instance2, isSSR, skipOptions) {\n const Component = instance2.type;\n if (!instance2.render) {\n if (!isSSR && compile && !Component.render) {\n const template = Component.template;\n if (template) {\n const { isCustomElement, compilerOptions } = instance2.appContext.config;\n const { delimiters, compilerOptions: componentCompilerOptions } = Component;\n const finalCompilerOptions = extend$1(extend$1({\n isCustomElement,\n delimiters\n }, compilerOptions), componentCompilerOptions);\n Component.render = compile(template, finalCompilerOptions);\n }\n }\n instance2.render = Component.render || NOOP;\n }\n {\n setCurrentInstance(instance2);\n pauseTracking();\n applyOptions(instance2);\n resetTracking();\n unsetCurrentInstance();\n }\n}\nfunction createAttrsProxy(instance2) {\n return new Proxy(instance2.attrs, {\n get(target, key) {\n track(instance2, \"get\", \"$attrs\");\n return target[key];\n }\n });\n}\nfunction createSetupContext(instance2) {\n const expose = (exposed) => {\n instance2.exposed = exposed || {};\n };\n let attrs;\n {\n return {\n get attrs() {\n return attrs || (attrs = createAttrsProxy(instance2));\n },\n slots: instance2.slots,\n emit: instance2.emit,\n expose\n };\n }\n}\nfunction getExposeProxy(instance2) {\n if (instance2.exposed) {\n return instance2.exposeProxy || (instance2.exposeProxy = new Proxy(proxyRefs(markRaw(instance2.exposed)), {\n get(target, key) {\n if (key in target) {\n return target[key];\n } else if (key in publicPropertiesMap) {\n return publicPropertiesMap[key](instance2);\n }\n }\n }));\n }\n}\nfunction getComponentName(Component, includeInferred = true) {\n return isFunction$1(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;\n}\nfunction isClassComponent(value) {\n return isFunction$1(value) && \"__vccOpts\" in value;\n}\nconst computed = (getterOrOptions, debugOptions) => {\n return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);\n};\nfunction h(type, propsOrChildren, children) {\n const l = arguments.length;\n if (l === 2) {\n if (isObject$1(propsOrChildren) && !isArray$1(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}\nconst version = \"3.2.37\";\nfunction makeMap(str, expectsLowerCase) {\n const map = /* @__PURE__ */ Object.create(null);\n const list = str.split(\",\");\n for (let i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];\n}\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nfunction includeBooleanAttr(value) {\n return !!value || value === \"\";\n}\nconst onRE = /^on[^a-z]/;\nconst isOn = (key) => onRE.test(key);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst isArray = Array.isArray;\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\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((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));\nconst toNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst svgNS = \"http://www.w3.org/2000/svg\";\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, isSVG, is, props) => {\n const el = isSVG ? doc.createElementNS(svgNS, 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: (text2) => doc.createTextNode(text2),\n createComment: (text2) => doc.createComment(text2),\n setText: (node, text2) => {\n node.nodeValue = text2;\n },\n setElementText: (el, text2) => {\n el.textContent = text2;\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 cloneNode(el) {\n const cloned = el.cloneNode(true);\n if (`_value` in el) {\n cloned._value = el._value;\n }\n return cloned;\n },\n insertStaticContent(content, parent, anchor, isSVG, start2, end) {\n const before = anchor ? anchor.previousSibling : parent.lastChild;\n if (start2 && (start2 === end || start2.nextSibling)) {\n while (true) {\n parent.insertBefore(start2.cloneNode(true), anchor);\n if (start2 === end || !(start2 = start2.nextSibling))\n break;\n }\n } else {\n templateContainer.innerHTML = isSVG ? `${content}` : content;\n const template = templateContainer.content;\n if (isSVG) {\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 before ? before.nextSibling : parent.firstChild,\n anchor ? anchor.previousSibling : parent.lastChild\n ];\n }\n};\nfunction patchClass(el, value, isSVG) {\n const transitionClasses = el._vtc;\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}\nfunction patchStyle(el, prev, next2) {\n const style = el.style;\n const isCssString = isString(next2);\n if (next2 && !isCssString) {\n for (const key in next2) {\n setStyle(style, key, next2[key]);\n }\n if (prev && !isString(prev)) {\n for (const key in prev) {\n if (next2[key] == null) {\n setStyle(style, key, \"\");\n }\n }\n }\n } else {\n const currentDisplay = style.display;\n if (isCssString) {\n if (prev !== next2) {\n style.cssText = next2;\n }\n } else if (prev) {\n el.removeAttribute(\"style\");\n }\n if (\"_vod\" in el) {\n style.display = currentDisplay;\n }\n }\n}\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 (name.startsWith(\"--\")) {\n style.setProperty(name, val);\n } else {\n const prefixed = autoPrefix(style, name);\n if (importantRE.test(val)) {\n style.setProperty(hyphenate(prefixed), val.replace(importantRE, \"\"), \"important\");\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$1(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}\nconst xlinkNS = \"http://www.w3.org/1999/xlink\";\nfunction patchAttr(el, key, value, isSVG, instance2) {\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}\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 if (key === \"value\" && el.tagName !== \"PROGRESS\" && !el.tagName.includes(\"-\")) {\n el._value = value;\n const newValue = value == null ? \"\" : value;\n if (el.value !== newValue || el.tagName === \"OPTION\") {\n el.value = newValue;\n }\n if (value == null) {\n el.removeAttribute(key);\n }\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 }\n needRemove && el.removeAttribute(key);\n}\nconst [_getNow, skipTimestampCheck] = /* @__PURE__ */ (() => {\n let _getNow2 = Date.now;\n let skipTimestampCheck2 = false;\n if (typeof window !== \"undefined\") {\n if (Date.now() > document.createEvent(\"Event\").timeStamp) {\n _getNow2 = performance.now.bind(performance);\n }\n const ffMatch = navigator.userAgent.match(/firefox\\/(\\d+)/i);\n skipTimestampCheck2 = !!(ffMatch && Number(ffMatch[1]) <= 53);\n }\n return [_getNow2, skipTimestampCheck2];\n})();\nlet cachedNow = 0;\nconst p = /* @__PURE__ */ Promise.resolve();\nconst reset = () => {\n cachedNow = 0;\n};\nconst getNow = () => cachedNow || (p.then(reset), cachedNow = _getNow());\nfunction addEventListener$1(el, event, handler, options2) {\n el.addEventListener(event, handler, options2);\n}\nfunction removeEventListener(el, event, handler, options2) {\n el.removeEventListener(event, handler, options2);\n}\nfunction patchEvent(el, rawName, prevValue, nextValue, instance2 = null) {\n const invokers = el._vei || (el._vei = {});\n const existingInvoker = invokers[rawName];\n if (nextValue && existingInvoker) {\n existingInvoker.value = nextValue;\n } else {\n const [name, options2] = parseName(rawName);\n if (nextValue) {\n const invoker = invokers[rawName] = createInvoker(nextValue, instance2);\n addEventListener$1(el, name, invoker, options2);\n } else if (existingInvoker) {\n removeEventListener(el, name, existingInvoker, options2);\n invokers[rawName] = void 0;\n }\n }\n}\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\nfunction parseName(name) {\n let options2;\n if (optionsModifierRE.test(name)) {\n options2 = {};\n let m;\n while (m = name.match(optionsModifierRE)) {\n name = name.slice(0, name.length - m[0].length);\n options2[m[0].toLowerCase()] = true;\n }\n }\n return [hyphenate(name.slice(2)), options2];\n}\nfunction createInvoker(initialValue, instance2) {\n const invoker = (e) => {\n const timeStamp = e.timeStamp || _getNow();\n if (skipTimestampCheck || timeStamp >= invoker.attached - 1) {\n callWithAsyncErrorHandling(patchStopImmediatePropagation(e, invoker.value), instance2, 5, [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}\nconst nativeOnRE = /^on[a-z]/;\nconst patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {\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(el, key, nextValue, prevChildren, parentComponent, parentSuspense, unmountChildren);\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 && nativeOnRE.test(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 (nativeOnRE.test(key) && isString(value)) {\n return false;\n }\n return key in el;\n}\nfunction defineCustomElement(options2, hydrate) {\n const Comp = defineComponent(options2);\n class VueCustomElement extends VueElement {\n constructor(initialProps) {\n super(Comp, initialProps, hydrate);\n }\n }\n VueCustomElement.def = Comp;\n return VueCustomElement;\n}\nconst BaseClass = typeof HTMLElement !== \"undefined\" ? HTMLElement : class {\n};\nclass VueElement extends BaseClass {\n constructor(_def, _props = {}, hydrate) {\n super();\n this._def = _def;\n this._props = _props;\n this._instance = null;\n this._connected = false;\n this._resolved = false;\n this._numberProps = null;\n if (this.shadowRoot && hydrate) {\n hydrate(this._createVNode(), this.shadowRoot);\n } else {\n this.attachShadow({ mode: \"open\" });\n }\n }\n connectedCallback() {\n this._connected = true;\n if (!this._instance) {\n this._resolveDef();\n }\n }\n disconnectedCallback() {\n this._connected = false;\n nextTick(() => {\n if (!this._connected) {\n render(null, this.shadowRoot);\n this._instance = null;\n }\n });\n }\n _resolveDef() {\n if (this._resolved) {\n return;\n }\n this._resolved = true;\n for (let i = 0; i < this.attributes.length; i++) {\n this._setAttr(this.attributes[i].name);\n }\n new MutationObserver((mutations) => {\n for (const m of mutations) {\n this._setAttr(m.attributeName);\n }\n }).observe(this, { attributes: true });\n const resolve3 = (def2) => {\n const { props, styles } = def2;\n const hasOptions = !isArray(props);\n const rawKeys = props ? hasOptions ? Object.keys(props) : props : [];\n let numberProps;\n if (hasOptions) {\n for (const key in this._props) {\n const opt = props[key];\n if (opt === Number || opt && opt.type === Number) {\n this._props[key] = toNumber(this._props[key]);\n (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[key] = true;\n }\n }\n }\n this._numberProps = numberProps;\n for (const key of Object.keys(this)) {\n if (key[0] !== \"_\") {\n this._setProp(key, this[key], true, false);\n }\n }\n for (const key of rawKeys.map(camelize)) {\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 this._applyStyles(styles);\n this._update();\n };\n const asyncDef = this._def.__asyncLoader;\n if (asyncDef) {\n asyncDef().then(resolve3);\n } else {\n resolve3(this._def);\n }\n }\n _setAttr(key) {\n let value = this.getAttribute(key);\n if (this._numberProps && this._numberProps[key]) {\n value = toNumber(value);\n }\n this._setProp(camelize(key), value, false);\n }\n _getProp(key) {\n return this._props[key];\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 = (instance2) => {\n this._instance = instance2;\n instance2.isCE = true;\n instance2.emit = (event, ...args) => {\n this.dispatchEvent(new CustomEvent(event, {\n detail: args\n }));\n };\n let parent = this;\n while (parent = parent && (parent.parentNode || parent.host)) {\n if (parent instanceof VueElement) {\n instance2.parent = parent._instance;\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 });\n }\n }\n}\nconst TRANSITION = \"transition\";\nconst ANIMATION = \"animation\";\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({}, BaseTransition.props, DOMTransitionPropsValidators);\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 { name = \"v\", type, duration, enterFromClass = `${name}-enter-from`, enterActiveClass = `${name}-enter-active`, enterToClass = `${name}-enter-to`, appearFromClass = enterFromClass, appearActiveClass = enterActiveClass, appearToClass = enterToClass, leaveFromClass = `${name}-leave-from`, leaveActiveClass = `${name}-leave-active`, leaveToClass = `${name}-leave-to` } = rawProps;\n const durations = normalizeDuration(duration);\n const enterDuration = durations && durations[0];\n const leaveDuration = durations && durations[1];\n const { onBeforeEnter, onEnter, onEnterCancelled, onLeave, onLeaveCancelled, onBeforeAppear = onBeforeEnter, onAppear = onEnter, onAppearCancelled = onEnterCancelled } = 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 resolve3 = () => finishEnter(el, isAppear, done);\n callHook(hook, [el, resolve3]);\n nextFrame(() => {\n removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);\n addTransitionClass(el, isAppear ? appearToClass : enterToClass);\n if (!hasExplicitCallback(hook)) {\n whenTransitionEnds(el, type, enterDuration, resolve3);\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 resolve3 = () => 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, resolve3);\n }\n });\n callHook(onLeave, [el, resolve3]);\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 return res;\n}\nfunction addTransitionClass(el, cls) {\n cls.split(/\\s+/).forEach((c) => c && el.classList.add(c));\n (el._vtc || (el._vtc = /* @__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;\n if (_vtc) {\n _vtc.delete(cls);\n if (!_vtc.size) {\n el._vtc = void 0;\n }\n }\n}\nfunction nextFrame(cb) {\n requestAnimationFrame(() => {\n requestAnimationFrame(cb);\n });\n}\nlet endId = 0;\nfunction whenTransitionEnds(el, expectedType, explicitTimeout, resolve3) {\n const id = el._endId = ++endId;\n const resolveIfNotStale = () => {\n if (id === el._endId) {\n resolve3();\n }\n };\n if (explicitTimeout) {\n return setTimeout(resolveIfNotStale, explicitTimeout);\n }\n const { type, timeout, propCount } = getTransitionInfo(el, expectedType);\n if (!type) {\n return resolve3();\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(styles[TRANSITION + \"Property\"]);\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 return Number(s.slice(0, -1).replace(\",\", \".\")) * 1e3;\n}\nfunction forceReflow() {\n return document.body.offsetHeight;\n}\nconst positionMap = /* @__PURE__ */ new WeakMap();\nconst newPositionMap = /* @__PURE__ */ new WeakMap();\nconst TransitionGroupImpl = {\n name: \"TransitionGroup\",\n props: /* @__PURE__ */ extend({}, TransitionPropsValidators, {\n tag: String,\n moveClass: String\n }),\n setup(props, { slots }) {\n const instance2 = getCurrentInstance();\n const state2 = 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(prevChildren[0].el, instance2.vnode.el, moveClass)) {\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._moveCb = (e) => {\n if (e && e.target !== el) {\n return;\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(\"transitionend\", cb);\n el._moveCb = 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(child, resolveTransitionHooks(child, cssTransitionProps, state2, instance2));\n }\n }\n if (prevChildren) {\n for (let i = 0; i < prevChildren.length; i++) {\n const child = prevChildren[i];\n setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state2, instance2));\n positionMap.set(child, child.el.getBoundingClientRect());\n }\n }\n return createVNode(tag, null, children);\n };\n }\n};\nconst TransitionGroup = TransitionGroupImpl;\nfunction callPendingCbs(c) {\n const el = c.el;\n if (el._moveCb) {\n el._moveCb();\n }\n if (el._enterCb) {\n el._enterCb();\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 if (el._vtc) {\n el._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}\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 return (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 return (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};\nconst vShow = {\n beforeMount(el, { value }, { transition }) {\n el._vod = 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};\nfunction setDisplay(el, value) {\n el.style.display = value ? el._vod : \"none\";\n}\nconst rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);\nlet renderer;\nfunction ensureRenderer() {\n return renderer || (renderer = createRenderer(rendererOptions));\n}\nconst render = (...args) => {\n ensureRenderer().render(...args);\n};\nvar _export_sfc = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\nconst _sfc_main$q = {\n name: \"AppLoader\",\n props: {\n show: { type: Boolean, default: false },\n infinite: { type: Boolean, default: false },\n type: { type: String, required: true },\n messageId: { type: String, default: \"\" }\n }\n};\nconst _hoisted_1$q = /* @__PURE__ */ createBaseVNode(\"div\", { id: \"vac-circle\" }, null, -1);\nconst _hoisted_2$n = /* @__PURE__ */ createBaseVNode(\"div\", { id: \"vac-circle\" }, null, -1);\nconst _hoisted_3$j = /* @__PURE__ */ createBaseVNode(\"div\", { id: \"vac-circle\" }, null, -1);\nconst _hoisted_4$h = /* @__PURE__ */ createBaseVNode(\"div\", { id: \"vac-circle\" }, null, -1);\nconst _hoisted_5$b = /* @__PURE__ */ createBaseVNode(\"div\", { id: \"vac-circle\" }, null, -1);\nconst _hoisted_6$7 = /* @__PURE__ */ createBaseVNode(\"div\", { id: \"vac-circle\" }, null, -1);\nfunction _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createBlock(Transition, {\n name: \"vac-fade-spinner\",\n appear: \"\"\n }, {\n default: withCtx(() => [\n $props.show ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([\"vac-loader-wrapper\", {\n \"vac-container-center\": !$props.infinite,\n \"vac-container-top\": $props.infinite\n }])\n }, [\n $props.type === \"rooms\" ? renderSlot(_ctx.$slots, \"spinner-icon-rooms\", { key: 0 }, () => [\n _hoisted_1$q\n ]) : createCommentVNode(\"\", true),\n $props.type === \"infinite-rooms\" ? renderSlot(_ctx.$slots, \"spinner-icon-infinite-rooms\", { key: 1 }, () => [\n _hoisted_2$n\n ]) : createCommentVNode(\"\", true),\n $props.type === \"message-file\" ? renderSlot(_ctx.$slots, \"spinner-icon-message-file_\" + $props.messageId, { key: 2 }, () => [\n _hoisted_3$j\n ]) : createCommentVNode(\"\", true),\n $props.type === \"room-file\" ? renderSlot(_ctx.$slots, \"spinner-icon-room-file\", { key: 3 }, () => [\n _hoisted_4$h\n ]) : createCommentVNode(\"\", true),\n $props.type === \"messages\" ? renderSlot(_ctx.$slots, \"spinner-icon-messages\", { key: 4 }, () => [\n _hoisted_5$b\n ]) : createCommentVNode(\"\", true),\n $props.type === \"infinite-messages\" ? renderSlot(_ctx.$slots, \"spinner-icon-infinite-messages\", { key: 5 }, () => [\n _hoisted_6$7\n ]) : createCommentVNode(\"\", true)\n ], 2)) : createCommentVNode(\"\", true)\n ]),\n _: 3\n });\n}\nvar Loader = /* @__PURE__ */ _export_sfc(_sfc_main$q, [[\"render\", _sfc_render$q]]);\nconst _sfc_main$p = {\n name: \"SvgIcon\",\n props: {\n name: { type: String, default: null },\n param: { type: String, default: null }\n },\n data() {\n return {\n svgItem: {\n search: {\n path: \"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\"\n },\n add: {\n path: \"M17,13H13V17H11V13H7V11H11V7H13V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"\n },\n toggle: {\n path: \"M5,13L9,17L7.6,18.42L1.18,12L7.6,5.58L9,7L5,11H21V13H5M21,6V8H11V6H21M21,16V18H11V16H21Z\"\n },\n menu: {\n path: \"M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z\"\n },\n close: {\n path: \"M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z\"\n },\n file: {\n path: \"M14,17H7V15H14M17,13H7V11H17M17,9H7V7H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\"\n },\n paperclip: {\n path: \"M16.5,6V17.5A4,4 0 0,1 12.5,21.5A4,4 0 0,1 8.5,17.5V5A2.5,2.5 0 0,1 11,2.5A2.5,2.5 0 0,1 13.5,5V15.5A1,1 0 0,1 12.5,16.5A1,1 0 0,1 11.5,15.5V6H10V15.5A2.5,2.5 0 0,0 12.5,18A2.5,2.5 0 0,0 15,15.5V5A4,4 0 0,0 11,1A4,4 0 0,0 7,5V17.5A5.5,5.5 0 0,0 12.5,23A5.5,5.5 0 0,0 18,17.5V6H16.5Z\"\n },\n \"close-outline\": {\n path: \"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z\"\n },\n send: {\n path: \"M2,21L23,12L2,3V10L17,12L2,14V21Z\"\n },\n emoji: {\n path: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm3.5-9c.83 0 1.5-.67 1.5-1.5S16.33 8 15.5 8 14 8.67 14 9.5s.67 1.5 1.5 1.5zm-7 0c.83 0 1.5-.67 1.5-1.5S9.33 8 8.5 8 7 8.67 7 9.5 7.67 11 8.5 11zm3.5 6.5c2.33 0 4.31-1.46 5.11-3.5H6.89c.8 2.04 2.78 3.5 5.11 3.5z\"\n },\n document: {\n path: \"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z\"\n },\n pencil: {\n path: \"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z\"\n },\n checkmark: {\n path: \"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\"\n },\n \"double-checkmark\": {\n path: \"M18 7l-1.41-1.41-6.34 6.34 1.41 1.41L18 7zm4.24-1.41L11.66 16.17 7.48 12l-1.41 1.41L11.66 19l12-12-1.42-1.41zM.41 13.41L6 19l1.41-1.41L1.83 12 .41 13.41z\"\n },\n eye: {\n path: \"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z\"\n },\n dropdown: {\n path: \"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z\"\n },\n deleted: {\n path: \"M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,13.85 4.63,15.55 5.68,16.91L16.91,5.68C15.55,4.63 13.85,4 12,4M12,20A8,8 0 0,0 20,12C20,10.15 19.37,8.45 18.32,7.09L7.09,18.32C8.45,19.37 10.15,20 12,20Z\"\n },\n microphone: {\n size: \"large\",\n path: \"M432.8,216.4v39.2c0,45.2-15.3,84.3-45.2,118.4c-29.8,33.2-67.3,52.8-111.6,57.9v40.9h78.4c5.1,0,10.2,1.7,13.6,6c4.3,4.3,6,8.5,6,13.6c0,5.1-1.7,10.2-6,13.6c-4.3,4.3-8.5,6-13.6,6H157.6c-5.1,0-10.2-1.7-13.6-6c-4.3-4.3-6-8.5-6-13.6c0-5.1,1.7-10.2,6-13.6c4.3-4.3,8.5-6,13.6-6H236v-40.9c-44.3-5.1-81.8-23.9-111.6-57.9s-45.2-73.3-45.2-118.4v-39.2c0-5.1,1.7-10.2,6-13.6c4.3-4.3,8.5-6,13.6-6s10.2,1.7,13.6,6c4.3,4.3,6,8.5,6,13.6v39.2c0,37.5,13.6,70.7,40,97.1s59.6,40,97.1,40s70.7-13.6,97.1-40c26.4-26.4,40-59.6,40-97.1v-39.2c0-5.1,1.7-10.2,6-13.6c4.3-4.3,8.5-6,13.6-6c5.1,0,10.2,1.7,13.6,6C430.2,206.2,432.8,211.3,432.8,216.4z M353.5,98v157.6c0,27.3-9.4,50.3-29,69c-19.6,19.6-42.6,29-69,29s-50.3-9.4-69-29c-19.6-19.6-29-42.6-29-69V98c0-27.3,9.4-50.3,29-69c19.6-19.6,42.6-29,69-29s50.3,9.4,69,29C344.2,47.7,353.5,71.6,353.5,98z\"\n },\n \"audio-play\": {\n size: \"medium\",\n path: \"M43.331,21.237L7.233,0.397c-0.917-0.529-2.044-0.529-2.96,0c-0.916,0.528-1.48,1.505-1.48,2.563v41.684 c0,1.058,0.564,2.035,1.48,2.563c0.458,0.268,0.969,0.397,1.48,0.397c0.511,0,1.022-0.133,1.48-0.397l36.098-20.84 c0.918-0.529,1.479-1.506,1.479-2.564S44.247,21.767,43.331,21.237z\"\n },\n \"audio-pause\": {\n size: \"medium\",\n path: \"M17.991,40.976c0,3.662-2.969,6.631-6.631,6.631l0,0c-3.662,0-6.631-2.969-6.631-6.631V6.631C4.729,2.969,7.698,0,11.36,0l0,0c3.662,0,6.631,2.969,6.631,6.631V40.976z\",\n path2: \"M42.877,40.976c0,3.662-2.969,6.631-6.631,6.631l0,0c-3.662,0-6.631-2.969-6.631-6.631V6.631C29.616,2.969,32.585,0,36.246,0l0,0c3.662,0,6.631,2.969,6.631,6.631V40.976z\"\n }\n }\n };\n },\n computed: {\n svgId() {\n const param = this.param ? \"-\" + this.param : \"\";\n return `vac-icon-${this.name}${param}`;\n },\n size() {\n const item = this.svgItem[this.name];\n if (item.size === \"large\")\n return 512;\n else if (item.size === \"medium\")\n return 48;\n else\n return 24;\n }\n }\n};\nconst _hoisted_1$p = [\"viewBox\"];\nconst _hoisted_2$m = [\"id\", \"d\"];\nconst _hoisted_3$i = [\"id\", \"d\"];\nfunction _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n \"xmlns:xlink\": \"http://www.w3.org/1999/xlink\",\n version: \"1.1\",\n width: \"24\",\n height: \"24\",\n viewBox: `0 0 ${$options.size} ${$options.size}`\n }, [\n createBaseVNode(\"path\", {\n id: $options.svgId,\n d: $data.svgItem[$props.name].path\n }, null, 8, _hoisted_2$m),\n $data.svgItem[$props.name].path2 ? (openBlock(), createElementBlock(\"path\", {\n key: 0,\n id: $options.svgId,\n d: $data.svgItem[$props.name].path2\n }, null, 8, _hoisted_3$i)) : createCommentVNode(\"\", true)\n ], 8, _hoisted_1$p);\n}\nvar SvgIcon = /* @__PURE__ */ _export_sfc(_sfc_main$p, [[\"render\", _sfc_render$p]]);\nconst _sfc_main$o = {\n name: \"RoomsSearch\",\n components: { SvgIcon },\n props: {\n textMessages: { type: Object, required: true },\n showSearch: { type: Boolean, required: true },\n showAddRoom: { type: Boolean, required: true },\n rooms: { type: Array, required: true },\n loadingRooms: { type: Boolean, required: true }\n },\n emits: [\"search-room\", \"add-room\"],\n computed: {\n showSearchBar() {\n return this.showSearch || this.showAddRoom;\n }\n }\n};\nconst _hoisted_1$o = {\n key: 0,\n class: \"vac-icon-search\"\n};\nconst _hoisted_2$l = [\"placeholder\"];\nfunction _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_svg_icon = resolveComponent(\"svg-icon\");\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass({\n \"vac-box-search\": $options.showSearchBar,\n \"vac-box-empty\": !$options.showSearchBar\n })\n }, [\n $props.showSearch ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n !$props.loadingRooms && $props.rooms.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$o, [\n renderSlot(_ctx.$slots, \"search-icon\", {}, () => [\n createVNode(_component_svg_icon, { name: \"search\" })\n ])\n ])) : createCommentVNode(\"\", true),\n !$props.loadingRooms && $props.rooms.length ? (openBlock(), createElementBlock(\"input\", {\n key: 1,\n type: \"search\",\n placeholder: $props.textMessages.SEARCH,\n autocomplete: \"off\",\n class: \"vac-input\",\n onInput: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"search-room\", $event))\n }, null, 40, _hoisted_2$l)) : createCommentVNode(\"\", true)\n ], 64)) : createCommentVNode(\"\", true),\n $props.showAddRoom ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: \"vac-svg-button vac-add-icon\",\n onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"add-room\"))\n }, [\n renderSlot(_ctx.$slots, \"add-icon\", {}, () => [\n createVNode(_component_svg_icon, { name: \"add\" })\n ])\n ])) : createCommentVNode(\"\", true)\n ], 2);\n}\nvar RoomsSearch = /* @__PURE__ */ _export_sfc(_sfc_main$o, [[\"render\", _sfc_render$o]]);\nvar linkify = {};\nvar _class$4 = {};\n_class$4.__esModule = true;\n_class$4.inherits = inherits;\nfunction inherits(parent, child) {\n var props = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var extended = Object.create(parent.prototype);\n for (var p2 in props) {\n extended[p2] = props[p2];\n }\n extended.constructor = child;\n child.prototype = extended;\n return child;\n}\nvar options$1 = {};\noptions$1.__esModule = true;\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function(obj) {\n return typeof obj;\n} : function(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nvar defaults = {\n defaultProtocol: \"http\",\n events: null,\n format: noop$1,\n formatHref: noop$1,\n nl2br: false,\n tagName: \"a\",\n target: typeToTarget,\n validate: true,\n ignoreTags: [],\n attributes: null,\n className: \"linkified\"\n};\noptions$1.defaults = defaults;\noptions$1.Options = Options;\noptions$1.contains = contains;\nfunction Options(opts) {\n opts = opts || {};\n this.defaultProtocol = opts.hasOwnProperty(\"defaultProtocol\") ? opts.defaultProtocol : defaults.defaultProtocol;\n this.events = opts.hasOwnProperty(\"events\") ? opts.events : defaults.events;\n this.format = opts.hasOwnProperty(\"format\") ? opts.format : defaults.format;\n this.formatHref = opts.hasOwnProperty(\"formatHref\") ? opts.formatHref : defaults.formatHref;\n this.nl2br = opts.hasOwnProperty(\"nl2br\") ? opts.nl2br : defaults.nl2br;\n this.tagName = opts.hasOwnProperty(\"tagName\") ? opts.tagName : defaults.tagName;\n this.target = opts.hasOwnProperty(\"target\") ? opts.target : defaults.target;\n this.validate = opts.hasOwnProperty(\"validate\") ? opts.validate : defaults.validate;\n this.ignoreTags = [];\n this.attributes = opts.attributes || opts.linkAttributes || defaults.attributes;\n this.className = opts.hasOwnProperty(\"className\") ? opts.className : opts.linkClass || defaults.className;\n var ignoredTags = opts.hasOwnProperty(\"ignoreTags\") ? opts.ignoreTags : defaults.ignoreTags;\n for (var i = 0; i < ignoredTags.length; i++) {\n this.ignoreTags.push(ignoredTags[i].toUpperCase());\n }\n}\nOptions.prototype = {\n resolve: function resolve2(token) {\n var href = token.toHref(this.defaultProtocol);\n return {\n formatted: this.get(\"format\", token.toString(), token),\n formattedHref: this.get(\"formatHref\", href, token),\n tagName: this.get(\"tagName\", href, token),\n className: this.get(\"className\", href, token),\n target: this.get(\"target\", href, token),\n events: this.getObject(\"events\", href, token),\n attributes: this.getObject(\"attributes\", href, token)\n };\n },\n check: function check(token) {\n return this.get(\"validate\", token.toString(), token);\n },\n get: function get(key, operator, token) {\n var optionValue = void 0, option = this[key];\n if (!option) {\n return option;\n }\n switch (typeof option === \"undefined\" ? \"undefined\" : _typeof(option)) {\n case \"function\":\n return option(operator, token.type);\n case \"object\":\n optionValue = option.hasOwnProperty(token.type) ? option[token.type] : defaults[key];\n return typeof optionValue === \"function\" ? optionValue(operator, token.type) : optionValue;\n }\n return option;\n },\n getObject: function getObject(key, operator, token) {\n var option = this[key];\n return typeof option === \"function\" ? option(operator, token.type) : option;\n }\n};\nfunction contains(arr, value) {\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === value) {\n return true;\n }\n }\n return false;\n}\nfunction noop$1(val) {\n return val;\n}\nfunction typeToTarget(href, type) {\n return type === \"url\" ? \"_blank\" : null;\n}\nvar scanner$1 = {};\nvar state = {};\nstate.__esModule = true;\nstate.stateify = state.TokenState = state.CharacterState = void 0;\nvar _class$3 = _class$4;\nfunction createStateClass() {\n return function(tClass) {\n this.j = [];\n this.T = tClass || null;\n };\n}\nvar BaseState = createStateClass();\nBaseState.prototype = {\n defaultTransition: false,\n on: function on(symbol, state2) {\n if (symbol instanceof Array) {\n for (var i = 0; i < symbol.length; i++) {\n this.j.push([symbol[i], state2]);\n }\n return this;\n }\n this.j.push([symbol, state2]);\n return this;\n },\n next: function next(item) {\n for (var i = 0; i < this.j.length; i++) {\n var jump2 = this.j[i];\n var symbol = jump2[0];\n var state2 = jump2[1];\n if (this.test(item, symbol)) {\n return state2;\n }\n }\n return this.defaultTransition;\n },\n accepts: function accepts() {\n return !!this.T;\n },\n test: function test(item, symbol) {\n return item === symbol;\n },\n emit: function emit() {\n return this.T;\n }\n};\nvar CharacterState = (0, _class$3.inherits)(BaseState, createStateClass(), {\n test: function test2(character, charOrRegExp) {\n return character === charOrRegExp || charOrRegExp instanceof RegExp && charOrRegExp.test(character);\n }\n});\nvar TokenState = (0, _class$3.inherits)(BaseState, createStateClass(), {\n jump: function jump(token) {\n var tClass = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;\n var state2 = this.next(new token(\"\"));\n if (state2 === this.defaultTransition) {\n state2 = new this.constructor(tClass);\n this.on(token, state2);\n } else if (tClass) {\n state2.T = tClass;\n }\n return state2;\n },\n test: function test3(token, tokenClass) {\n return token instanceof tokenClass;\n }\n});\nfunction stateify(str, start2, endToken, defaultToken) {\n var i = 0, len = str.length, state2 = start2, newStates = [], nextState = void 0;\n while (i < len && (nextState = state2.next(str[i]))) {\n state2 = nextState;\n i++;\n }\n if (i >= len) {\n return [];\n }\n while (i < len - 1) {\n nextState = new CharacterState(defaultToken);\n newStates.push(nextState);\n state2.on(str[i], nextState);\n state2 = nextState;\n i++;\n }\n nextState = new CharacterState(endToken);\n newStates.push(nextState);\n state2.on(str[len - 1], nextState);\n return newStates;\n}\nstate.CharacterState = CharacterState;\nstate.TokenState = TokenState;\nstate.stateify = stateify;\nvar text$1 = {};\nvar createTokenClass$1 = {};\ncreateTokenClass$1.__esModule = true;\nfunction createTokenClass() {\n return function(value) {\n if (value) {\n this.v = value;\n }\n };\n}\ncreateTokenClass$1.createTokenClass = createTokenClass;\ntext$1.__esModule = true;\ntext$1.AMPERSAND = text$1.CLOSEPAREN = text$1.CLOSEANGLEBRACKET = text$1.CLOSEBRACKET = text$1.CLOSEBRACE = text$1.OPENPAREN = text$1.OPENANGLEBRACKET = text$1.OPENBRACKET = text$1.OPENBRACE = text$1.WS = text$1.TLD = text$1.SYM = text$1.UNDERSCORE = text$1.SLASH = text$1.MAILTO = text$1.PROTOCOL = text$1.QUERY = text$1.POUND = text$1.PLUS = text$1.NUM = text$1.NL = text$1.LOCALHOST = text$1.PUNCTUATION = text$1.DOT = text$1.COLON = text$1.AT = text$1.DOMAIN = text$1.Base = void 0;\nvar _createTokenClass$1 = createTokenClass$1;\nvar _class$2 = _class$4;\nvar TextToken = (0, _createTokenClass$1.createTokenClass)();\nTextToken.prototype = {\n toString: function toString() {\n return this.v + \"\";\n }\n};\nfunction inheritsToken(value) {\n var props = value ? { v: value } : {};\n return (0, _class$2.inherits)(TextToken, (0, _createTokenClass$1.createTokenClass)(), props);\n}\nvar DOMAIN = inheritsToken();\nvar AT = inheritsToken(\"@\");\nvar COLON = inheritsToken(\":\");\nvar DOT = inheritsToken(\".\");\nvar PUNCTUATION = inheritsToken();\nvar LOCALHOST = inheritsToken();\nvar NL$1 = inheritsToken(\"\\n\");\nvar NUM = inheritsToken();\nvar PLUS = inheritsToken(\"+\");\nvar POUND = inheritsToken(\"#\");\nvar PROTOCOL = inheritsToken();\nvar MAILTO = inheritsToken(\"mailto:\");\nvar QUERY = inheritsToken(\"?\");\nvar SLASH = inheritsToken(\"/\");\nvar UNDERSCORE = inheritsToken(\"_\");\nvar SYM = inheritsToken();\nvar TLD = inheritsToken();\nvar WS = inheritsToken();\nvar OPENBRACE = inheritsToken(\"{\");\nvar OPENBRACKET = inheritsToken(\"[\");\nvar OPENANGLEBRACKET = inheritsToken(\"<\");\nvar OPENPAREN = inheritsToken(\"(\");\nvar CLOSEBRACE = inheritsToken(\"}\");\nvar CLOSEBRACKET = inheritsToken(\"]\");\nvar CLOSEANGLEBRACKET = inheritsToken(\">\");\nvar CLOSEPAREN = inheritsToken(\")\");\nvar AMPERSAND = inheritsToken(\"&\");\ntext$1.Base = TextToken;\ntext$1.DOMAIN = DOMAIN;\ntext$1.AT = AT;\ntext$1.COLON = COLON;\ntext$1.DOT = DOT;\ntext$1.PUNCTUATION = PUNCTUATION;\ntext$1.LOCALHOST = LOCALHOST;\ntext$1.NL = NL$1;\ntext$1.NUM = NUM;\ntext$1.PLUS = PLUS;\ntext$1.POUND = POUND;\ntext$1.QUERY = QUERY;\ntext$1.PROTOCOL = PROTOCOL;\ntext$1.MAILTO = MAILTO;\ntext$1.SLASH = SLASH;\ntext$1.UNDERSCORE = UNDERSCORE;\ntext$1.SYM = SYM;\ntext$1.TLD = TLD;\ntext$1.WS = WS;\ntext$1.OPENBRACE = OPENBRACE;\ntext$1.OPENBRACKET = OPENBRACKET;\ntext$1.OPENANGLEBRACKET = OPENANGLEBRACKET;\ntext$1.OPENPAREN = OPENPAREN;\ntext$1.CLOSEBRACE = CLOSEBRACE;\ntext$1.CLOSEBRACKET = CLOSEBRACKET;\ntext$1.CLOSEANGLEBRACKET = CLOSEANGLEBRACKET;\ntext$1.CLOSEPAREN = CLOSEPAREN;\ntext$1.AMPERSAND = AMPERSAND;\nscanner$1.__esModule = true;\nscanner$1.start = scanner$1.run = scanner$1.TOKENS = scanner$1.State = void 0;\nvar _state$1 = state;\nvar _text$2 = text$1;\nvar TOKENS = _interopRequireWildcard$2(_text$2);\nfunction _interopRequireWildcard$2(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key))\n newObj[key] = obj[key];\n }\n }\n newObj.default = obj;\n return newObj;\n }\n}\nvar tlds = \"aaa|aarp|abarth|abb|abbott|abbvie|abc|able|abogado|abudhabi|ac|academy|accenture|accountant|accountants|aco|active|actor|ad|adac|ads|adult|ae|aeg|aero|aetna|af|afamilycompany|afl|africa|ag|agakhan|agency|ai|aig|aigo|airbus|airforce|airtel|akdn|al|alfaromeo|alibaba|alipay|allfinanz|allstate|ally|alsace|alstom|am|americanexpress|americanfamily|amex|amfam|amica|amsterdam|analytics|android|anquan|anz|ao|aol|apartments|app|apple|aq|aquarelle|ar|arab|aramco|archi|army|arpa|art|arte|as|asda|asia|associates|at|athleta|attorney|au|auction|audi|audible|audio|auspost|author|auto|autos|avianca|aw|aws|ax|axa|az|azure|ba|baby|baidu|banamex|bananarepublic|band|bank|bar|barcelona|barclaycard|barclays|barefoot|bargains|baseball|basketball|bauhaus|bayern|bb|bbc|bbt|bbva|bcg|bcn|bd|be|beats|beauty|beer|bentley|berlin|best|bestbuy|bet|bf|bg|bh|bharti|bi|bible|bid|bike|bing|bingo|bio|biz|bj|black|blackfriday|blanco|blockbuster|blog|bloomberg|blue|bm|bms|bmw|bn|bnl|bnpparibas|bo|boats|boehringer|bofa|bom|bond|boo|book|booking|boots|bosch|bostik|boston|bot|boutique|box|br|bradesco|bridgestone|broadway|broker|brother|brussels|bs|bt|budapest|bugatti|build|builders|business|buy|buzz|bv|bw|by|bz|bzh|ca|cab|cafe|cal|call|calvinklein|cam|camera|camp|cancerresearch|canon|capetown|capital|capitalone|car|caravan|cards|care|career|careers|cars|cartier|casa|case|caseih|cash|casino|cat|catering|catholic|cba|cbn|cbre|cbs|cc|cd|ceb|center|ceo|cern|cf|cfa|cfd|cg|ch|chanel|channel|chase|chat|cheap|chintai|chloe|christmas|chrome|chrysler|church|ci|cipriani|circle|cisco|citadel|citi|citic|city|cityeats|ck|cl|claims|cleaning|click|clinic|clinique|clothing|cloud|club|clubmed|cm|cn|co|coach|codes|coffee|college|cologne|com|comcast|commbank|community|company|compare|computer|comsec|condos|construction|consulting|contact|contractors|cooking|cookingchannel|cool|coop|corsica|country|coupon|coupons|courses|cr|credit|creditcard|creditunion|cricket|crown|crs|cruise|cruises|csc|cu|cuisinella|cv|cw|cx|cy|cymru|cyou|cz|dabur|dad|dance|data|date|dating|datsun|day|dclk|dds|de|deal|dealer|deals|degree|delivery|dell|deloitte|delta|democrat|dental|dentist|desi|design|dev|dhl|diamonds|diet|digital|direct|directory|discount|discover|dish|diy|dj|dk|dm|dnp|do|docs|doctor|dodge|dog|doha|domains|dot|download|drive|dtv|dubai|duck|dunlop|duns|dupont|durban|dvag|dvr|dz|earth|eat|ec|eco|edeka|edu|education|ee|eg|email|emerck|energy|engineer|engineering|enterprises|epost|epson|equipment|er|ericsson|erni|es|esq|estate|esurance|et|etisalat|eu|eurovision|eus|events|everbank|exchange|expert|exposed|express|extraspace|fage|fail|fairwinds|faith|family|fan|fans|farm|farmers|fashion|fast|fedex|feedback|ferrari|ferrero|fi|fiat|fidelity|fido|film|final|finance|financial|fire|firestone|firmdale|fish|fishing|fit|fitness|fj|fk|flickr|flights|flir|florist|flowers|fly|fm|fo|foo|food|foodnetwork|football|ford|forex|forsale|forum|foundation|fox|fr|free|fresenius|frl|frogans|frontdoor|frontier|ftr|fujitsu|fujixerox|fun|fund|furniture|futbol|fyi|ga|gal|gallery|gallo|gallup|game|games|gap|garden|gb|gbiz|gd|gdn|ge|gea|gent|genting|george|gf|gg|ggee|gh|gi|gift|gifts|gives|giving|gl|glade|glass|gle|global|globo|gm|gmail|gmbh|gmo|gmx|gn|godaddy|gold|goldpoint|golf|goo|goodhands|goodyear|goog|google|gop|got|gov|gp|gq|gr|grainger|graphics|gratis|green|gripe|grocery|group|gs|gt|gu|guardian|gucci|guge|guide|guitars|guru|gw|gy|hair|hamburg|hangout|haus|hbo|hdfc|hdfcbank|health|healthcare|help|helsinki|here|hermes|hgtv|hiphop|hisamitsu|hitachi|hiv|hk|hkt|hm|hn|hockey|holdings|holiday|homedepot|homegoods|homes|homesense|honda|honeywell|horse|hospital|host|hosting|hot|hoteles|hotels|hotmail|house|how|hr|hsbc|ht|htc|hu|hughes|hyatt|hyundai|ibm|icbc|ice|icu|id|ie|ieee|ifm|ikano|il|im|imamat|imdb|immo|immobilien|in|industries|infiniti|info|ing|ink|institute|insurance|insure|int|intel|international|intuit|investments|io|ipiranga|iq|ir|irish|is|iselect|ismaili|ist|istanbul|it|itau|itv|iveco|iwc|jaguar|java|jcb|jcp|je|jeep|jetzt|jewelry|jio|jlc|jll|jm|jmp|jnj|jo|jobs|joburg|jot|joy|jp|jpmorgan|jprs|juegos|juniper|kaufen|kddi|ke|kerryhotels|kerrylogistics|kerryproperties|kfh|kg|kh|ki|kia|kim|kinder|kindle|kitchen|kiwi|km|kn|koeln|komatsu|kosher|kp|kpmg|kpn|kr|krd|kred|kuokgroup|kw|ky|kyoto|kz|la|lacaixa|ladbrokes|lamborghini|lamer|lancaster|lancia|lancome|land|landrover|lanxess|lasalle|lat|latino|latrobe|law|lawyer|lb|lc|lds|lease|leclerc|lefrak|legal|lego|lexus|lgbt|li|liaison|lidl|life|lifeinsurance|lifestyle|lighting|like|lilly|limited|limo|lincoln|linde|link|lipsy|live|living|lixil|lk|loan|loans|locker|locus|loft|lol|london|lotte|lotto|love|lpl|lplfinancial|lr|ls|lt|ltd|ltda|lu|lundbeck|lupin|luxe|luxury|lv|ly|ma|macys|madrid|maif|maison|makeup|man|management|mango|map|market|marketing|markets|marriott|marshalls|maserati|mattel|mba|mc|mckinsey|md|me|med|media|meet|melbourne|meme|memorial|men|menu|meo|merckmsd|metlife|mg|mh|miami|microsoft|mil|mini|mint|mit|mitsubishi|mk|ml|mlb|mls|mm|mma|mn|mo|mobi|mobile|mobily|moda|moe|moi|mom|monash|money|monster|mopar|mormon|mortgage|moscow|moto|motorcycles|mov|movie|movistar|mp|mq|mr|ms|msd|mt|mtn|mtr|mu|museum|mutual|mv|mw|mx|my|mz|na|nab|nadex|nagoya|name|nationwide|natura|navy|nba|nc|ne|nec|net|netbank|netflix|network|neustar|new|newholland|news|next|nextdirect|nexus|nf|nfl|ng|ngo|nhk|ni|nico|nike|nikon|ninja|nissan|nissay|nl|no|nokia|northwesternmutual|norton|now|nowruz|nowtv|np|nr|nra|nrw|ntt|nu|nyc|nz|obi|observer|off|office|okinawa|olayan|olayangroup|oldnavy|ollo|om|omega|one|ong|onl|online|onyourside|ooo|open|oracle|orange|org|organic|origins|osaka|otsuka|ott|ovh|pa|page|panasonic|panerai|paris|pars|partners|parts|party|passagens|pay|pccw|pe|pet|pf|pfizer|pg|ph|pharmacy|phd|philips|phone|photo|photography|photos|physio|piaget|pics|pictet|pictures|pid|pin|ping|pink|pioneer|pizza|pk|pl|place|play|playstation|plumbing|plus|pm|pn|pnc|pohl|poker|politie|porn|post|pr|pramerica|praxi|press|prime|pro|prod|productions|prof|progressive|promo|properties|property|protection|pru|prudential|ps|pt|pub|pw|pwc|py|qa|qpon|quebec|quest|qvc|racing|radio|raid|re|read|realestate|realtor|realty|recipes|red|redstone|redumbrella|rehab|reise|reisen|reit|reliance|ren|rent|rentals|repair|report|republican|rest|restaurant|review|reviews|rexroth|rich|richardli|ricoh|rightathome|ril|rio|rip|rmit|ro|rocher|rocks|rodeo|rogers|room|rs|rsvp|ru|rugby|ruhr|run|rw|rwe|ryukyu|sa|saarland|safe|safety|sakura|sale|salon|samsclub|samsung|sandvik|sandvikcoromant|sanofi|sap|sapo|sarl|sas|save|saxo|sb|sbi|sbs|sc|sca|scb|schaeffler|schmidt|scholarships|school|schule|schwarz|science|scjohnson|scor|scot|sd|se|search|seat|secure|security|seek|select|sener|services|ses|seven|sew|sex|sexy|sfr|sg|sh|shangrila|sharp|shaw|shell|shia|shiksha|shoes|shop|shopping|shouji|show|showtime|shriram|si|silk|sina|singles|site|sj|sk|ski|skin|sky|skype|sl|sling|sm|smart|smile|sn|sncf|so|soccer|social|softbank|software|sohu|solar|solutions|song|sony|soy|space|spiegel|spot|spreadbetting|sr|srl|srt|st|stada|staples|star|starhub|statebank|statefarm|statoil|stc|stcgroup|stockholm|storage|store|stream|studio|study|style|su|sucks|supplies|supply|support|surf|surgery|suzuki|sv|swatch|swiftcover|swiss|sx|sy|sydney|symantec|systems|sz|tab|taipei|talk|taobao|target|tatamotors|tatar|tattoo|tax|taxi|tc|tci|td|tdk|team|tech|technology|tel|telecity|telefonica|temasek|tennis|teva|tf|tg|th|thd|theater|theatre|tiaa|tickets|tienda|tiffany|tips|tires|tirol|tj|tjmaxx|tjx|tk|tkmaxx|tl|tm|tmall|tn|to|today|tokyo|tools|top|toray|toshiba|total|tours|town|toyota|toys|tr|trade|trading|training|travel|travelchannel|travelers|travelersinsurance|trust|trv|tt|tube|tui|tunes|tushu|tv|tvs|tw|tz|ua|ubank|ubs|uconnect|ug|uk|unicom|university|uno|uol|ups|us|uy|uz|va|vacations|vana|vanguard|vc|ve|vegas|ventures|verisign|versicherung|vet|vg|vi|viajes|video|vig|viking|villas|vin|vip|virgin|visa|vision|vista|vistaprint|viva|vivo|vlaanderen|vn|vodka|volkswagen|volvo|vote|voting|voto|voyage|vu|vuelos|wales|walmart|walter|wang|wanggou|warman|watch|watches|weather|weatherchannel|webcam|weber|website|wed|wedding|weibo|weir|wf|whoswho|wien|wiki|williamhill|win|windows|wine|winners|wme|wolterskluwer|woodside|work|works|world|wow|ws|wtc|wtf|xbox|xerox|xfinity|xihuan|xin|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--30rr7y|xn--3bst00m|xn--3ds443g|xn--3e0b707e|xn--3hcrj9c|xn--3oq18vl8pn36a|xn--3pxu8k|xn--42c2d9a|xn--45br5cyl|xn--45brj9c|xn--45q11c|xn--4gbrim|xn--54b7fta0cc|xn--55qw42g|xn--55qx5d|xn--5su34j936bgsg|xn--5tzm5g|xn--6frz82g|xn--6qq986b3xl|xn--80adxhks|xn--80ao21a|xn--80aqecdr1a|xn--80asehdb|xn--80aswg|xn--8y0a063a|xn--90a3ac|xn--90ae|xn--90ais|xn--9dbq2a|xn--9et52u|xn--9krt00a|xn--b4w605ferd|xn--bck1b9a5dre4c|xn--c1avg|xn--c2br7g|xn--cck2b3b|xn--cg4bki|xn--clchc0ea0b2g2a9gcd|xn--czr694b|xn--czrs0t|xn--czru2d|xn--d1acj3b|xn--d1alf|xn--e1a4c|xn--eckvdtc9d|xn--efvy88h|xn--estv75g|xn--fct429k|xn--fhbei|xn--fiq228c5hs|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--fjq720a|xn--flw351e|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--fzys8d69uvgm|xn--g2xx48c|xn--gckr3f0f|xn--gecrj9c|xn--gk3at1e|xn--h2breg3eve|xn--h2brj9c|xn--h2brj9c8c|xn--hxt814e|xn--i1b6b1a6a2e|xn--imr513n|xn--io0a7i|xn--j1aef|xn--j1amh|xn--j6w193g|xn--jlq61u9w7b|xn--jvr189m|xn--kcrx77d1x4a|xn--kprw13d|xn--kpry57d|xn--kpu716f|xn--kput3i|xn--l1acc|xn--lgbbat1ad8j|xn--mgb9awbf|xn--mgba3a3ejt|xn--mgba3a4f16a|xn--mgba7c0bbn0a|xn--mgbaakc7dvf|xn--mgbaam7a8h|xn--mgbab2bd|xn--mgbai9azgqp6j|xn--mgbayh7gpa|xn--mgbb9fbpob|xn--mgbbh1a|xn--mgbbh1a71e|xn--mgbc0a9azcg|xn--mgbca7dzdo|xn--mgberp4a5d4ar|xn--mgbgu82a|xn--mgbi4ecexp|xn--mgbpl2fh|xn--mgbt3dhd|xn--mgbtx2b|xn--mgbx4cd0ab|xn--mix891f|xn--mk1bu44c|xn--mxtq1m|xn--ngbc5azd|xn--ngbe9e0a|xn--ngbrx|xn--node|xn--nqv7f|xn--nqv7fs00ema|xn--nyqy26a|xn--o3cw4h|xn--ogbpf8fl|xn--p1acf|xn--p1ai|xn--pbt977c|xn--pgbs0dh|xn--pssy2u|xn--q9jyb4c|xn--qcka1pmc|xn--qxam|xn--rhqv96g|xn--rovu88b|xn--rvc1e0am3e|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--tckwe|xn--tiq49xqyj|xn--unup4y|xn--vermgensberater-ctb|xn--vermgensberatung-pwb|xn--vhquv|xn--vuq861b|xn--w4r85el8fhu5dnra|xn--w4rs40l|xn--wgbh1c|xn--wgbl6a|xn--xhq521b|xn--xkc2al3hye2a|xn--xkc2dl3a5ee0h|xn--y9a3aq|xn--yfro4i67o|xn--ygbi2ammx|xn--zfr164b|xperia|xxx|xyz|yachts|yahoo|yamaxun|yandex|ye|yodobashi|yoga|yokohama|you|youtube|yt|yun|za|zappos|zara|zero|zip|zippo|zm|zone|zuerich|zw\".split(\"|\");\nvar NUMBERS = \"0123456789\".split(\"\");\nvar ALPHANUM = \"0123456789abcdefghijklmnopqrstuvwxyz\".split(\"\");\nvar WHITESPACE = [\" \", \"\\f\", \"\\r\", \"\t\", \"\\v\", \"\\xA0\", \"\\u1680\", \"\\u180E\"];\nvar domainStates = [];\nvar makeState$1 = function makeState(tokenClass) {\n return new _state$1.CharacterState(tokenClass);\n};\nvar S_START$1 = makeState$1();\nvar S_NUM = makeState$1(_text$2.NUM);\nvar S_DOMAIN$1 = makeState$1(_text$2.DOMAIN);\nvar S_DOMAIN_HYPHEN = makeState$1();\nvar S_WS = makeState$1(_text$2.WS);\nS_START$1.on(\"@\", makeState$1(_text$2.AT)).on(\".\", makeState$1(_text$2.DOT)).on(\"+\", makeState$1(_text$2.PLUS)).on(\"#\", makeState$1(_text$2.POUND)).on(\"?\", makeState$1(_text$2.QUERY)).on(\"/\", makeState$1(_text$2.SLASH)).on(\"_\", makeState$1(_text$2.UNDERSCORE)).on(\":\", makeState$1(_text$2.COLON)).on(\"{\", makeState$1(_text$2.OPENBRACE)).on(\"[\", makeState$1(_text$2.OPENBRACKET)).on(\"<\", makeState$1(_text$2.OPENANGLEBRACKET)).on(\"(\", makeState$1(_text$2.OPENPAREN)).on(\"}\", makeState$1(_text$2.CLOSEBRACE)).on(\"]\", makeState$1(_text$2.CLOSEBRACKET)).on(\">\", makeState$1(_text$2.CLOSEANGLEBRACKET)).on(\")\", makeState$1(_text$2.CLOSEPAREN)).on(\"&\", makeState$1(_text$2.AMPERSAND)).on([\",\", \";\", \"!\", '\"', \"'\"], makeState$1(_text$2.PUNCTUATION));\nS_START$1.on(\"\\n\", makeState$1(_text$2.NL)).on(WHITESPACE, S_WS);\nS_WS.on(WHITESPACE, S_WS);\nfor (var i = 0; i < tlds.length; i++) {\n var newStates = (0, _state$1.stateify)(tlds[i], S_START$1, _text$2.TLD, _text$2.DOMAIN);\n domainStates.push.apply(domainStates, newStates);\n}\nvar partialProtocolFileStates = (0, _state$1.stateify)(\"file\", S_START$1, _text$2.DOMAIN, _text$2.DOMAIN);\nvar partialProtocolFtpStates = (0, _state$1.stateify)(\"ftp\", S_START$1, _text$2.DOMAIN, _text$2.DOMAIN);\nvar partialProtocolHttpStates = (0, _state$1.stateify)(\"http\", S_START$1, _text$2.DOMAIN, _text$2.DOMAIN);\nvar partialProtocolMailtoStates = (0, _state$1.stateify)(\"mailto\", S_START$1, _text$2.DOMAIN, _text$2.DOMAIN);\ndomainStates.push.apply(domainStates, partialProtocolFileStates);\ndomainStates.push.apply(domainStates, partialProtocolFtpStates);\ndomainStates.push.apply(domainStates, partialProtocolHttpStates);\ndomainStates.push.apply(domainStates, partialProtocolMailtoStates);\nvar S_PROTOCOL_FILE = partialProtocolFileStates.pop();\nvar S_PROTOCOL_FTP = partialProtocolFtpStates.pop();\nvar S_PROTOCOL_HTTP = partialProtocolHttpStates.pop();\nvar S_MAILTO$1 = partialProtocolMailtoStates.pop();\nvar S_PROTOCOL_SECURE = makeState$1(_text$2.DOMAIN);\nvar S_FULL_PROTOCOL = makeState$1(_text$2.PROTOCOL);\nvar S_FULL_MAILTO = makeState$1(_text$2.MAILTO);\nS_PROTOCOL_FTP.on(\"s\", S_PROTOCOL_SECURE).on(\":\", S_FULL_PROTOCOL);\nS_PROTOCOL_HTTP.on(\"s\", S_PROTOCOL_SECURE).on(\":\", S_FULL_PROTOCOL);\ndomainStates.push(S_PROTOCOL_SECURE);\nS_PROTOCOL_FILE.on(\":\", S_FULL_PROTOCOL);\nS_PROTOCOL_SECURE.on(\":\", S_FULL_PROTOCOL);\nS_MAILTO$1.on(\":\", S_FULL_MAILTO);\nvar partialLocalhostStates = (0, _state$1.stateify)(\"localhost\", S_START$1, _text$2.LOCALHOST, _text$2.DOMAIN);\ndomainStates.push.apply(domainStates, partialLocalhostStates);\nS_START$1.on(NUMBERS, S_NUM);\nS_NUM.on(\"-\", S_DOMAIN_HYPHEN).on(NUMBERS, S_NUM).on(ALPHANUM, S_DOMAIN$1);\nS_DOMAIN$1.on(\"-\", S_DOMAIN_HYPHEN).on(ALPHANUM, S_DOMAIN$1);\nfor (var _i = 0; _i < domainStates.length; _i++) {\n domainStates[_i].on(\"-\", S_DOMAIN_HYPHEN).on(ALPHANUM, S_DOMAIN$1);\n}\nS_DOMAIN_HYPHEN.on(\"-\", S_DOMAIN_HYPHEN).on(NUMBERS, S_DOMAIN$1).on(ALPHANUM, S_DOMAIN$1);\nS_START$1.defaultTransition = makeState$1(_text$2.SYM);\nvar run$2 = function run(str) {\n var lowerStr = str.replace(/[A-Z]/g, function(c) {\n return c.toLowerCase();\n });\n var len = str.length;\n var tokens = [];\n var cursor = 0;\n while (cursor < len) {\n var state2 = S_START$1;\n var nextState = null;\n var tokenLength = 0;\n var latestAccepting = null;\n var sinceAccepts = -1;\n while (cursor < len && (nextState = state2.next(lowerStr[cursor]))) {\n state2 = nextState;\n if (state2.accepts()) {\n sinceAccepts = 0;\n latestAccepting = state2;\n } else if (sinceAccepts >= 0) {\n sinceAccepts++;\n }\n tokenLength++;\n cursor++;\n }\n if (sinceAccepts < 0) {\n continue;\n }\n cursor -= sinceAccepts;\n tokenLength -= sinceAccepts;\n var TOKEN = latestAccepting.emit();\n tokens.push(new TOKEN(str.substr(cursor - tokenLength, tokenLength)));\n }\n return tokens;\n};\nvar start = S_START$1;\nscanner$1.State = _state$1.CharacterState;\nscanner$1.TOKENS = TOKENS;\nscanner$1.run = run$2;\nscanner$1.start = start;\nvar parser$1 = {};\nvar multi = {};\nmulti.__esModule = true;\nmulti.URL = multi.TEXT = multi.NL = multi.EMAIL = multi.MAILTOEMAIL = multi.Base = void 0;\nvar _createTokenClass = createTokenClass$1;\nvar _class$1 = _class$4;\nvar _text$1 = text$1;\nfunction isDomainToken(token) {\n return token instanceof _text$1.DOMAIN || token instanceof _text$1.TLD;\n}\nvar MultiToken = (0, _createTokenClass.createTokenClass)();\nMultiToken.prototype = {\n type: \"token\",\n isLink: false,\n toString: function toString2() {\n var result = [];\n for (var i = 0; i < this.v.length; i++) {\n result.push(this.v[i].toString());\n }\n return result.join(\"\");\n },\n toHref: function toHref() {\n return this.toString();\n },\n toObject: function toObject() {\n var protocol = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : \"http\";\n return {\n type: this.type,\n value: this.toString(),\n href: this.toHref(protocol)\n };\n }\n};\nvar MAILTOEMAIL = (0, _class$1.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n type: \"email\",\n isLink: true\n});\nvar EMAIL = (0, _class$1.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n type: \"email\",\n isLink: true,\n toHref: function toHref2() {\n return \"mailto:\" + this.toString();\n }\n});\nvar TEXT = (0, _class$1.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), { type: \"text\" });\nvar NL = (0, _class$1.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), { type: \"nl\" });\nvar URL$1 = (0, _class$1.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n type: \"url\",\n isLink: true,\n toHref: function toHref3() {\n var protocol = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : \"http\";\n var hasProtocol2 = false;\n var hasSlashSlash = false;\n var tokens = this.v;\n var result = [];\n var i = 0;\n while (tokens[i] instanceof _text$1.PROTOCOL) {\n hasProtocol2 = true;\n result.push(tokens[i].toString().toLowerCase());\n i++;\n }\n while (tokens[i] instanceof _text$1.SLASH) {\n hasSlashSlash = true;\n result.push(tokens[i].toString());\n i++;\n }\n while (isDomainToken(tokens[i])) {\n result.push(tokens[i].toString().toLowerCase());\n i++;\n }\n for (; i < tokens.length; i++) {\n result.push(tokens[i].toString());\n }\n result = result.join(\"\");\n if (!(hasProtocol2 || hasSlashSlash)) {\n result = protocol + \"://\" + result;\n }\n return result;\n },\n hasProtocol: function hasProtocol() {\n return this.v[0] instanceof _text$1.PROTOCOL;\n }\n});\nmulti.Base = MultiToken;\nmulti.MAILTOEMAIL = MAILTOEMAIL;\nmulti.EMAIL = EMAIL;\nmulti.NL = NL;\nmulti.TEXT = TEXT;\nmulti.URL = URL$1;\nparser$1.__esModule = true;\nparser$1.start = parser$1.run = parser$1.TOKENS = parser$1.State = void 0;\nvar _state = state;\nvar _multi = multi;\nvar MULTI_TOKENS = _interopRequireWildcard$1(_multi);\nvar _text = text$1;\nfunction _interopRequireWildcard$1(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key))\n newObj[key] = obj[key];\n }\n }\n newObj.default = obj;\n return newObj;\n }\n}\nvar makeState2 = function makeState3(tokenClass) {\n return new _state.TokenState(tokenClass);\n};\nvar S_START = makeState2();\nvar S_PROTOCOL = makeState2();\nvar S_MAILTO = makeState2();\nvar S_PROTOCOL_SLASH = makeState2();\nvar S_PROTOCOL_SLASH_SLASH = makeState2();\nvar S_DOMAIN = makeState2();\nvar S_DOMAIN_DOT = makeState2();\nvar S_TLD = makeState2(_multi.URL);\nvar S_TLD_COLON = makeState2();\nvar S_TLD_PORT = makeState2(_multi.URL);\nvar S_URL = makeState2(_multi.URL);\nvar S_URL_NON_ACCEPTING = makeState2();\nvar S_URL_OPENBRACE = makeState2();\nvar S_URL_OPENBRACKET = makeState2();\nvar S_URL_OPENANGLEBRACKET = makeState2();\nvar S_URL_OPENPAREN = makeState2();\nvar S_URL_OPENBRACE_Q = makeState2(_multi.URL);\nvar S_URL_OPENBRACKET_Q = makeState2(_multi.URL);\nvar S_URL_OPENANGLEBRACKET_Q = makeState2(_multi.URL);\nvar S_URL_OPENPAREN_Q = makeState2(_multi.URL);\nvar S_URL_OPENBRACE_SYMS = makeState2();\nvar S_URL_OPENBRACKET_SYMS = makeState2();\nvar S_URL_OPENANGLEBRACKET_SYMS = makeState2();\nvar S_URL_OPENPAREN_SYMS = makeState2();\nvar S_EMAIL_DOMAIN = makeState2();\nvar S_EMAIL_DOMAIN_DOT = makeState2();\nvar S_EMAIL = makeState2(_multi.EMAIL);\nvar S_EMAIL_COLON = makeState2();\nvar S_EMAIL_PORT = makeState2(_multi.EMAIL);\nvar S_MAILTO_EMAIL = makeState2(_multi.MAILTOEMAIL);\nvar S_MAILTO_EMAIL_NON_ACCEPTING = makeState2();\nvar S_LOCALPART = makeState2();\nvar S_LOCALPART_AT = makeState2();\nvar S_LOCALPART_DOT = makeState2();\nvar S_NL = makeState2(_multi.NL);\nS_START.on(_text.NL, S_NL).on(_text.PROTOCOL, S_PROTOCOL).on(_text.MAILTO, S_MAILTO).on(_text.SLASH, S_PROTOCOL_SLASH);\nS_PROTOCOL.on(_text.SLASH, S_PROTOCOL_SLASH);\nS_PROTOCOL_SLASH.on(_text.SLASH, S_PROTOCOL_SLASH_SLASH);\nS_START.on(_text.TLD, S_DOMAIN).on(_text.DOMAIN, S_DOMAIN).on(_text.LOCALHOST, S_TLD).on(_text.NUM, S_DOMAIN);\nS_PROTOCOL_SLASH_SLASH.on(_text.TLD, S_URL).on(_text.DOMAIN, S_URL).on(_text.NUM, S_URL).on(_text.LOCALHOST, S_URL);\nS_DOMAIN.on(_text.DOT, S_DOMAIN_DOT);\nS_EMAIL_DOMAIN.on(_text.DOT, S_EMAIL_DOMAIN_DOT);\nS_DOMAIN_DOT.on(_text.TLD, S_TLD).on(_text.DOMAIN, S_DOMAIN).on(_text.NUM, S_DOMAIN).on(_text.LOCALHOST, S_DOMAIN);\nS_EMAIL_DOMAIN_DOT.on(_text.TLD, S_EMAIL).on(_text.DOMAIN, S_EMAIL_DOMAIN).on(_text.NUM, S_EMAIL_DOMAIN).on(_text.LOCALHOST, S_EMAIL_DOMAIN);\nS_TLD.on(_text.DOT, S_DOMAIN_DOT);\nS_EMAIL.on(_text.DOT, S_EMAIL_DOMAIN_DOT);\nS_TLD.on(_text.COLON, S_TLD_COLON).on(_text.SLASH, S_URL);\nS_TLD_COLON.on(_text.NUM, S_TLD_PORT);\nS_TLD_PORT.on(_text.SLASH, S_URL);\nS_EMAIL.on(_text.COLON, S_EMAIL_COLON);\nS_EMAIL_COLON.on(_text.NUM, S_EMAIL_PORT);\nvar qsAccepting = [_text.DOMAIN, _text.AT, _text.LOCALHOST, _text.NUM, _text.PLUS, _text.POUND, _text.PROTOCOL, _text.SLASH, _text.TLD, _text.UNDERSCORE, _text.SYM, _text.AMPERSAND];\nvar qsNonAccepting = [_text.COLON, _text.DOT, _text.QUERY, _text.PUNCTUATION, _text.CLOSEBRACE, _text.CLOSEBRACKET, _text.CLOSEANGLEBRACKET, _text.CLOSEPAREN, _text.OPENBRACE, _text.OPENBRACKET, _text.OPENANGLEBRACKET, _text.OPENPAREN];\nS_URL.on(_text.OPENBRACE, S_URL_OPENBRACE).on(_text.OPENBRACKET, S_URL_OPENBRACKET).on(_text.OPENANGLEBRACKET, S_URL_OPENANGLEBRACKET).on(_text.OPENPAREN, S_URL_OPENPAREN);\nS_URL_NON_ACCEPTING.on(_text.OPENBRACE, S_URL_OPENBRACE).on(_text.OPENBRACKET, S_URL_OPENBRACKET).on(_text.OPENANGLEBRACKET, S_URL_OPENANGLEBRACKET).on(_text.OPENPAREN, S_URL_OPENPAREN);\nS_URL_OPENBRACE.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN.on(_text.CLOSEPAREN, S_URL);\nS_URL_OPENBRACE_Q.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET_Q.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET_Q.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN_Q.on(_text.CLOSEPAREN, S_URL);\nS_URL_OPENBRACE_SYMS.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET_SYMS.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET_SYMS.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN_SYMS.on(_text.CLOSEPAREN, S_URL);\nS_URL_OPENBRACE.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE.on(qsNonAccepting, S_URL_OPENBRACE_SYMS);\nS_URL_OPENBRACKET.on(qsNonAccepting, S_URL_OPENBRACKET_SYMS);\nS_URL_OPENANGLEBRACKET.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_SYMS);\nS_URL_OPENPAREN.on(qsNonAccepting, S_URL_OPENPAREN_SYMS);\nS_URL_OPENBRACE_Q.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_Q.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_Q.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_Q.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE_Q.on(qsNonAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_Q.on(qsNonAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_Q.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_Q.on(qsNonAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE_SYMS.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_SYMS.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_SYMS.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_SYMS.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE_SYMS.on(qsNonAccepting, S_URL_OPENBRACE_SYMS);\nS_URL_OPENBRACKET_SYMS.on(qsNonAccepting, S_URL_OPENBRACKET_SYMS);\nS_URL_OPENANGLEBRACKET_SYMS.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_SYMS);\nS_URL_OPENPAREN_SYMS.on(qsNonAccepting, S_URL_OPENPAREN_SYMS);\nS_URL.on(qsAccepting, S_URL);\nS_URL_NON_ACCEPTING.on(qsAccepting, S_URL);\nS_URL.on(qsNonAccepting, S_URL_NON_ACCEPTING);\nS_URL_NON_ACCEPTING.on(qsNonAccepting, S_URL_NON_ACCEPTING);\nS_MAILTO.on(_text.TLD, S_MAILTO_EMAIL).on(_text.DOMAIN, S_MAILTO_EMAIL).on(_text.NUM, S_MAILTO_EMAIL).on(_text.LOCALHOST, S_MAILTO_EMAIL);\nS_MAILTO_EMAIL.on(qsAccepting, S_MAILTO_EMAIL).on(qsNonAccepting, S_MAILTO_EMAIL_NON_ACCEPTING);\nS_MAILTO_EMAIL_NON_ACCEPTING.on(qsAccepting, S_MAILTO_EMAIL).on(qsNonAccepting, S_MAILTO_EMAIL_NON_ACCEPTING);\nvar localpartAccepting = [_text.DOMAIN, _text.NUM, _text.PLUS, _text.POUND, _text.QUERY, _text.UNDERSCORE, _text.SYM, _text.AMPERSAND, _text.TLD];\nS_DOMAIN.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT);\nS_TLD.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT);\nS_DOMAIN_DOT.on(localpartAccepting, S_LOCALPART);\nS_LOCALPART.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT).on(_text.DOT, S_LOCALPART_DOT);\nS_LOCALPART_DOT.on(localpartAccepting, S_LOCALPART);\nS_LOCALPART_AT.on(_text.TLD, S_EMAIL_DOMAIN).on(_text.DOMAIN, S_EMAIL_DOMAIN).on(_text.LOCALHOST, S_EMAIL);\nvar run$1 = function run2(tokens) {\n var len = tokens.length;\n var cursor = 0;\n var multis = [];\n var textTokens = [];\n while (cursor < len) {\n var state2 = S_START;\n var secondState = null;\n var nextState = null;\n var multiLength = 0;\n var latestAccepting = null;\n var sinceAccepts = -1;\n while (cursor < len && !(secondState = state2.next(tokens[cursor]))) {\n textTokens.push(tokens[cursor++]);\n }\n while (cursor < len && (nextState = secondState || state2.next(tokens[cursor]))) {\n secondState = null;\n state2 = nextState;\n if (state2.accepts()) {\n sinceAccepts = 0;\n latestAccepting = state2;\n } else if (sinceAccepts >= 0) {\n sinceAccepts++;\n }\n cursor++;\n multiLength++;\n }\n if (sinceAccepts < 0) {\n for (var i = cursor - multiLength; i < cursor; i++) {\n textTokens.push(tokens[i]);\n }\n } else {\n if (textTokens.length > 0) {\n multis.push(new _multi.TEXT(textTokens));\n textTokens = [];\n }\n cursor -= sinceAccepts;\n multiLength -= sinceAccepts;\n var MULTI = latestAccepting.emit();\n multis.push(new MULTI(tokens.slice(cursor - multiLength, cursor)));\n }\n }\n if (textTokens.length > 0) {\n multis.push(new _multi.TEXT(textTokens));\n }\n return multis;\n};\nparser$1.State = _state.TokenState;\nparser$1.TOKENS = MULTI_TOKENS;\nparser$1.run = run$1;\nparser$1.start = S_START;\nlinkify.__esModule = true;\nlinkify.tokenize = linkify.test = linkify.scanner = linkify.parser = linkify.options = linkify.inherits = linkify.find = void 0;\nvar _class = _class$4;\nvar _options = options$1;\nvar options = _interopRequireWildcard(_options);\nvar _scanner = scanner$1;\nvar scanner = _interopRequireWildcard(_scanner);\nvar _parser = parser$1;\nvar parser = _interopRequireWildcard(_parser);\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key))\n newObj[key] = obj[key];\n }\n }\n newObj.default = obj;\n return newObj;\n }\n}\nif (!Array.isArray) {\n Array.isArray = function(arg) {\n return Object.prototype.toString.call(arg) === \"[object Array]\";\n };\n}\nvar tokenize = function tokenize2(str) {\n return parser.run(scanner.run(str));\n};\nvar find = function find2(str) {\n var type = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;\n var tokens = tokenize(str);\n var filtered = [];\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token.isLink && (!type || token.type === type)) {\n filtered.push(token.toObject());\n }\n }\n return filtered;\n};\nvar test4 = function test5(str) {\n var type = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;\n var tokens = tokenize(str);\n return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].type === type);\n};\nlinkify.find = find;\nlinkify.inherits = _class.inherits;\nlinkify.options = options;\nlinkify.parser = parser;\nlinkify.scanner = scanner;\nlinkify.test = test4;\nlinkify.tokenize = tokenize;\nvar linkifyjs = linkify;\nvar formatString$1 = (text2, doLinkify, textFormatting) => {\n const typeMarkdown = {\n bold: textFormatting.bold,\n italic: textFormatting.italic,\n strike: textFormatting.strike,\n underline: textFormatting.underline,\n multilineCode: textFormatting.multilineCode,\n inlineCode: textFormatting.inlineCode\n };\n const pseudoMarkdown = {\n [typeMarkdown.bold]: {\n end: \"\\\\\" + typeMarkdown.bold,\n allowed_chars: \".\",\n type: \"bold\"\n },\n [typeMarkdown.italic]: {\n end: typeMarkdown.italic,\n allowed_chars: \".\",\n type: \"italic\"\n },\n [typeMarkdown.strike]: {\n end: typeMarkdown.strike,\n allowed_chars: \".\",\n type: \"strike\"\n },\n [typeMarkdown.underline]: {\n end: typeMarkdown.underline,\n allowed_chars: \".\",\n type: \"underline\"\n },\n [typeMarkdown.multilineCode]: {\n end: typeMarkdown.multilineCode,\n allowed_chars: \"(.|\\n)\",\n type: \"multiline-code\"\n },\n [typeMarkdown.inlineCode]: {\n end: typeMarkdown.inlineCode,\n allowed_chars: \".\",\n type: \"inline-code\"\n },\n \"\": {\n allowed_chars: \".\",\n end: \"\",\n type: \"tag\"\n }\n };\n const json = compileToJSON(text2, pseudoMarkdown);\n const html = compileToHTML(json, pseudoMarkdown);\n const result = [].concat.apply([], html);\n if (doLinkify)\n linkifyResult(result);\n return result;\n};\nfunction compileToJSON(str, pseudoMarkdown) {\n let result = [];\n let minIndexOf = -1;\n let minIndexOfKey = null;\n let links = linkifyjs.find(str);\n let minIndexFromLink = false;\n if (links.length > 0) {\n minIndexOf = str.indexOf(links[0].value);\n minIndexFromLink = true;\n }\n Object.keys(pseudoMarkdown).forEach((startingValue) => {\n const io = str.indexOf(startingValue);\n if (io >= 0 && (minIndexOf < 0 || io < minIndexOf)) {\n minIndexOf = io;\n minIndexOfKey = startingValue;\n minIndexFromLink = false;\n }\n });\n if (minIndexFromLink && minIndexOfKey !== -1) {\n let strLeft = str.substr(0, minIndexOf);\n let strLink = str.substr(minIndexOf, links[0].value.length);\n let strRight = str.substr(minIndexOf + links[0].value.length);\n result.push(strLeft);\n result.push(strLink);\n result = result.concat(compileToJSON(strRight, pseudoMarkdown));\n return result;\n }\n if (minIndexOfKey) {\n let strLeft = str.substr(0, minIndexOf);\n const char = minIndexOfKey;\n let strRight = str.substr(minIndexOf + char.length);\n if (str.replace(/\\s/g, \"\").length === char.length * 2) {\n return [str];\n }\n const match = strRight.match(\n new RegExp(\n \"^(\" + (pseudoMarkdown[char].allowed_chars || \".\") + \"*\" + (pseudoMarkdown[char].end ? \"?\" : \"\") + \")\" + (pseudoMarkdown[char].end ? \"(\" + pseudoMarkdown[char].end + \")\" : \"\"),\n \"m\"\n )\n );\n if (!match || !match[1]) {\n strLeft = strLeft + char;\n result.push(strLeft);\n } else {\n if (strLeft) {\n result.push(strLeft);\n }\n const object = {\n start: char,\n content: compileToJSON(match[1], pseudoMarkdown),\n end: match[2],\n type: pseudoMarkdown[char].type\n };\n result.push(object);\n strRight = strRight.substr(match[0].length);\n }\n result = result.concat(compileToJSON(strRight, pseudoMarkdown));\n return result;\n } else {\n if (str) {\n return [str];\n } else {\n return [];\n }\n }\n}\nfunction compileToHTML(json, pseudoMarkdown) {\n const result = [];\n json.forEach((item) => {\n if (typeof item === \"string\") {\n result.push({ types: [], value: item });\n } else {\n if (pseudoMarkdown[item.start]) {\n result.push(parseContent(item));\n }\n }\n });\n return result;\n}\nfunction parseContent(item) {\n const result = [];\n iterateContent(item, result, []);\n return result;\n}\nfunction iterateContent(item, result, types) {\n item.content.forEach((it) => {\n if (typeof it === \"string\") {\n result.push({\n types: removeDuplicates(types.concat([item.type])),\n value: it\n });\n } else {\n iterateContent(\n it,\n result,\n removeDuplicates([it.type].concat([item.type]).concat(types))\n );\n }\n });\n}\nfunction removeDuplicates(items) {\n return [...new Set(items)];\n}\nfunction linkifyResult(array) {\n const result = [];\n array.forEach((arr) => {\n const links = linkifyjs.find(arr.value);\n if (links.length) {\n const spaces = arr.value.replace(links[0].value, \"\");\n result.push({ types: arr.types, value: spaces });\n arr.types = [\"url\"].concat(arr.types);\n arr.href = links[0].href;\n arr.value = links[0].value;\n }\n result.push(arr);\n });\n return result;\n}\nconst IMAGE_TYPES = [\"png\", \"jpg\", \"jpeg\", \"webp\", \"svg\", \"gif\"];\nconst VIDEO_TYPES = [\"mp4\", \"video/ogg\", \"webm\", \"quicktime\"];\nconst AUDIO_TYPES = [\"mp3\", \"audio/ogg\", \"wav\", \"mpeg\"];\nconst _sfc_main$n = {\n name: \"FormatMessage\",\n components: { SvgIcon },\n props: {\n messageId: { type: String, default: \"\" },\n roomId: { type: String, default: \"\" },\n roomList: { type: Boolean, default: false },\n content: { type: [String, Number], required: true },\n deleted: { type: Boolean, default: false },\n users: { type: Array, default: () => [] },\n linkify: { type: Boolean, default: true },\n singleLine: { type: Boolean, default: false },\n reply: { type: Boolean, default: false },\n textFormatting: { type: Object, required: true },\n textMessages: { type: Object, default: () => {\n } },\n linkOptions: { type: Object, required: true }\n },\n emits: [\"open-user-tag\"],\n computed: {\n linkifiedMessage() {\n if (this.deleted) {\n return [{ value: this.textMessages.MESSAGE_DELETED }];\n }\n const message = formatString$1(\n this.formatTags(this.content),\n this.linkify && !this.linkOptions.disabled,\n this.textFormatting\n );\n message.forEach((m) => {\n m.url = this.checkType(m, \"url\");\n m.bold = this.checkType(m, \"bold\");\n m.italic = this.checkType(m, \"italic\");\n m.strike = this.checkType(m, \"strike\");\n m.underline = this.checkType(m, \"underline\");\n m.inline = this.checkType(m, \"inline-code\");\n m.multiline = this.checkType(m, \"multiline-code\");\n m.tag = this.checkType(m, \"tag\");\n m.image = this.checkImageType(m);\n m.value = this.replaceEmojiByElement(m.value);\n });\n return message;\n },\n formattedContent() {\n if (this.deleted) {\n return this.textMessages.MESSAGE_DELETED;\n } else {\n return this.formatTags(this.content);\n }\n }\n },\n methods: {\n checkType(message, type) {\n return message.types && message.types.indexOf(type) !== -1;\n },\n checkImageType(message) {\n let index = message.value.lastIndexOf(\".\");\n const slashIndex = message.value.lastIndexOf(\"/\");\n if (slashIndex > index)\n index = -1;\n const type = message.value.substring(index + 1, message.value.length);\n const isMedia = index > 0 && IMAGE_TYPES.some((t) => type.toLowerCase().includes(t));\n if (isMedia)\n this.setImageSize(message);\n return isMedia;\n },\n setImageSize(message) {\n const image = new Image();\n image.src = message.value;\n image.addEventListener(\"load\", onLoad);\n function onLoad(img) {\n const ratio = img.path[0].width / 150;\n message.height = Math.round(img.path[0].height / ratio) + \"px\";\n image.removeEventListener(\"load\", onLoad);\n }\n },\n formatTags(content) {\n const firstTag = \"\";\n const secondTag = \"\";\n const usertags = [...content.matchAll(new RegExp(firstTag, \"gi\"))].map(\n (a) => a.index\n );\n const initialContent = content;\n usertags.forEach((index) => {\n const userId = initialContent.substring(\n index + firstTag.length,\n initialContent.indexOf(secondTag, index)\n );\n const user = this.users.find((user2) => user2._id === userId);\n content = content.replaceAll(userId, `@${(user == null ? void 0 : user.username) || \"unknown\"}`);\n });\n return content;\n },\n openTag(message) {\n if (!this.singleLine && this.checkType(message, \"tag\")) {\n const user = this.users.find(\n (u) => message.value.indexOf(u.username) !== -1\n );\n this.$emit(\"open-user-tag\", user);\n }\n },\n replaceEmojiByElement(value) {\n let emojiSize;\n if (this.singleLine) {\n emojiSize = 16;\n } else {\n const onlyEmojis = this.containsOnlyEmojis();\n emojiSize = onlyEmojis ? 28 : 20;\n }\n return value.replaceAll(\n /[\\p{Extended_Pictographic}\\u{1F3FB}-\\u{1F3FF}\\u{1F9B0}-\\u{1F9B3}]/gu,\n (v) => {\n return `${v}`;\n }\n );\n },\n containsOnlyEmojis() {\n const onlyEmojis = this.content.replace(\n new RegExp(\"[\\0-\\u1EEFf]\", \"g\"),\n \"\"\n );\n const visibleChars = this.content.replace(\n new RegExp(\"[\\n\\rs]+|( )+\", \"g\"),\n \"\"\n );\n return onlyEmojis.length === visibleChars.length;\n }\n }\n};\nconst _hoisted_1$n = { class: \"vac-image-link-container\" };\nconst _hoisted_2$k = { class: \"vac-image-link-message\" };\nconst _hoisted_3$h = [\"innerHTML\"];\nconst _hoisted_4$g = [\"innerHTML\"];\nfunction _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_svg_icon = resolveComponent(\"svg-icon\");\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"vac-format-message-wrapper\", { \"vac-text-ellipsis\": $props.singleLine }])\n }, [\n !$props.textFormatting.disabled ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass({ \"vac-text-ellipsis\": $props.singleLine })\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.linkifiedMessage, (message, i) => {\n return openBlock(), createElementBlock(\"div\", {\n key: i,\n class: \"vac-format-container\"\n }, [\n (openBlock(), createBlock(resolveDynamicComponent(message.url ? \"a\" : \"span\"), {\n class: normalizeClass({\n \"vac-text-ellipsis\": $props.singleLine,\n \"vac-text-bold\": message.bold,\n \"vac-text-italic\": $props.deleted || message.italic,\n \"vac-text-strike\": message.strike,\n \"vac-text-underline\": message.underline,\n \"vac-text-inline-code\": !$props.singleLine && message.inline,\n \"vac-text-multiline-code\": !$props.singleLine && message.multiline,\n \"vac-text-tag\": !$props.singleLine && !$props.reply && message.tag\n }),\n href: message.href,\n target: message.href ? $props.linkOptions.target : null,\n rel: message.href ? $props.linkOptions.rel : null,\n onClick: ($event) => $options.openTag(message)\n }, {\n default: withCtx(() => [\n $props.deleted ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n renderSlot(\n _ctx.$slots,\n $props.roomList ? \"deleted-icon-room_\" + $props.roomId : \"deleted-icon_\" + $props.messageId,\n {},\n () => [\n createVNode(_component_svg_icon, {\n name: \"deleted\",\n class: normalizeClass([\"vac-icon-deleted\", { \"vac-icon-deleted-room\": $props.roomList }])\n }, null, 8, [\"class\"])\n ]\n ),\n createTextVNode(\" \" + toDisplayString($props.textMessages.MESSAGE_DELETED), 1)\n ], 64)) : message.url && message.image ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n createBaseVNode(\"div\", _hoisted_1$n, [\n createBaseVNode(\"div\", {\n class: \"vac-image-link\",\n style: normalizeStyle({\n \"background-image\": `url('${message.value}')`,\n height: message.height\n })\n }, null, 4)\n ]),\n createBaseVNode(\"div\", _hoisted_2$k, [\n createBaseVNode(\"span\", null, toDisplayString(message.value), 1)\n ])\n ], 64)) : (openBlock(), createElementBlock(\"span\", {\n key: 2,\n innerHTML: message.value\n }, null, 8, _hoisted_3$h))\n ]),\n _: 2\n }, 1032, [\"class\", \"href\", \"target\", \"rel\", \"onClick\"]))\n ]);\n }), 128))\n ], 2)) : (openBlock(), createElementBlock(\"div\", {\n key: 1,\n innerHTML: $options.formattedContent\n }, null, 8, _hoisted_4$g))\n ], 2);\n}\nvar FormatMessage = /* @__PURE__ */ _export_sfc(_sfc_main$n, [[\"render\", _sfc_render$n]]);\nconst HANDLERS_PROPERTY = \"__v-click-outside\";\nconst HAS_WINDOWS = typeof window !== \"undefined\";\nconst HAS_NAVIGATOR = typeof navigator !== \"undefined\";\nconst IS_TOUCH = HAS_WINDOWS && (\"ontouchstart\" in window || HAS_NAVIGATOR && navigator.msMaxTouchPoints > 0);\nconst EVENTS = IS_TOUCH ? [\"touchstart\"] : [\"click\"];\nconst processDirectiveArguments = (bindingValue) => {\n const isFunction2 = typeof bindingValue === \"function\";\n if (!isFunction2 && typeof bindingValue !== \"object\") {\n throw new Error(\n \"v-click-outside: Binding value must be a function or an object\"\n );\n }\n return {\n handler: isFunction2 ? bindingValue : bindingValue.handler,\n middleware: bindingValue.middleware || ((item) => item),\n events: bindingValue.events || EVENTS,\n isActive: !(bindingValue.isActive === false),\n detectIframe: !(bindingValue.detectIframe === false),\n capture: Boolean(bindingValue.capture)\n };\n};\nconst execHandler = ({ event, handler, middleware }) => {\n if (middleware(event)) {\n handler(event);\n }\n};\nconst onFauxIframeClick = ({ el, event, handler, middleware }) => {\n setTimeout(() => {\n const { activeElement } = document;\n if (activeElement && activeElement.tagName === \"IFRAME\" && !el.contains(activeElement)) {\n execHandler({ event, handler, middleware });\n }\n }, 0);\n};\nconst onEvent = ({ el, event, handler, middleware }) => {\n const path = event.path || event.composedPath && event.composedPath();\n const isClickOutside = path ? path.indexOf(el) < 0 : !el.contains(event.target);\n if (!isClickOutside) {\n return;\n }\n execHandler({ event, handler, middleware });\n};\nconst beforeMount = (el, { value }) => {\n const {\n events,\n handler,\n middleware,\n isActive,\n detectIframe,\n capture\n } = processDirectiveArguments(value);\n if (!isActive) {\n return;\n }\n el[HANDLERS_PROPERTY] = events.map((eventName) => ({\n event: eventName,\n srcTarget: document.documentElement,\n handler: (event) => onEvent({ el, event, handler, middleware }),\n capture\n }));\n if (detectIframe) {\n const detectIframeEvent = {\n event: \"blur\",\n srcTarget: window,\n handler: (event) => onFauxIframeClick({ el, event, handler, middleware }),\n capture\n };\n el[HANDLERS_PROPERTY] = [...el[HANDLERS_PROPERTY], detectIframeEvent];\n }\n el[HANDLERS_PROPERTY].forEach(\n ({ event, srcTarget, handler: thisHandler }) => setTimeout(() => {\n if (!el[HANDLERS_PROPERTY]) {\n return;\n }\n srcTarget.addEventListener(event, thisHandler, capture);\n }, 0)\n );\n};\nconst unmounted = (el) => {\n const handlers = el[HANDLERS_PROPERTY] || [];\n handlers.forEach(\n ({ event, srcTarget, handler, capture }) => srcTarget.removeEventListener(event, handler, capture)\n );\n delete el[HANDLERS_PROPERTY];\n};\nconst updated = (el, { value, oldValue }) => {\n if (JSON.stringify(value) === JSON.stringify(oldValue)) {\n return;\n }\n unmounted(el);\n beforeMount(el, { value });\n};\nconst directive = {\n beforeMount,\n updated,\n unmounted\n};\nvar vClickOutside = HAS_WINDOWS ? directive : {};\nvar typingText = (room, currentUserId, textMessages) => {\n if (room.typingUsers && room.typingUsers.length) {\n const typingUsers = room.users.filter((user) => {\n if (user._id === currentUserId)\n return;\n if (room.typingUsers.indexOf(user._id) === -1)\n return;\n if (user.status && user.status.state === \"offline\")\n return;\n return true;\n });\n if (!typingUsers.length)\n return;\n if (room.users.length === 2) {\n return textMessages.IS_TYPING;\n } else {\n return typingUsers.map((user) => user.username).join(\", \") + \" \" + textMessages.IS_TYPING;\n }\n }\n};\nfunction checkMediaType(types, file) {\n if (!file || !file.type)\n return;\n return types.some((t) => file.type.toLowerCase().includes(t));\n}\nfunction isImageFile(file) {\n return checkMediaType(IMAGE_TYPES, file);\n}\nfunction isVideoFile(file) {\n return checkMediaType(VIDEO_TYPES, file);\n}\nfunction isImageVideoFile(file) {\n return checkMediaType(IMAGE_TYPES, file) || checkMediaType(VIDEO_TYPES, file);\n}\nfunction isAudioFile(file) {\n return checkMediaType(AUDIO_TYPES, file);\n}\nconst _sfc_main$m = {\n name: \"RoomsContent\",\n components: {\n SvgIcon,\n FormatMessage\n },\n directives: {\n clickOutside: vClickOutside\n },\n props: {\n currentUserId: { type: [String, Number], required: true },\n room: { type: Object, required: true },\n textFormatting: { type: Object, required: true },\n linkOptions: { type: Object, required: true },\n textMessages: { type: Object, required: true },\n roomActions: { type: Array, required: true }\n },\n emits: [\"room-action-handler\"],\n data() {\n return {\n roomMenuOpened: null\n };\n },\n computed: {\n getLastMessage() {\n const isTyping = this.typingUsers;\n if (isTyping)\n return isTyping;\n const content = this.room.lastMessage.content;\n if (this.room.users.length <= 2) {\n return content;\n }\n const user = this.room.users.find(\n (user2) => user2._id === this.room.lastMessage.senderId\n );\n if (this.room.lastMessage.username) {\n return `${this.room.lastMessage.username} - ${content}`;\n } else if (!user || user._id === this.currentUserId) {\n return content;\n }\n return `${user.username} - ${content}`;\n },\n userStatus() {\n if (!this.room.users || this.room.users.length !== 2)\n return;\n const user = this.room.users.find((u) => u._id !== this.currentUserId);\n if (user && user.status)\n return user.status.state;\n return null;\n },\n typingUsers() {\n return typingText(this.room, this.currentUserId, this.textMessages);\n },\n isMessageCheckmarkVisible() {\n return !this.typingUsers && this.room.lastMessage && !this.room.lastMessage.deleted && this.room.lastMessage.senderId === this.currentUserId && (this.room.lastMessage.saved || this.room.lastMessage.distributed || this.room.lastMessage.seen);\n },\n formattedDuration() {\n var _a, _b;\n const file = (_b = (_a = this.room.lastMessage) == null ? void 0 : _a.files) == null ? void 0 : _b[0];\n if (file) {\n if (!file.duration) {\n return `${file.name}.${file.extension}`;\n }\n let s = Math.floor(file.duration);\n return (s - (s %= 60)) / 60 + (s > 9 ? \":\" : \":0\") + s;\n }\n return \"\";\n },\n isAudio() {\n return this.room.lastMessage.files ? isAudioFile(this.room.lastMessage.files[0]) : false;\n }\n },\n methods: {\n roomActionHandler(action) {\n this.closeRoomMenu();\n this.$emit(\"room-action-handler\", { action, roomId: this.room.roomId });\n },\n closeRoomMenu() {\n this.roomMenuOpened = null;\n }\n }\n};\nconst _hoisted_1$m = { class: \"vac-room-container\" };\nconst _hoisted_2$j = { class: \"vac-name-container vac-text-ellipsis\" };\nconst _hoisted_3$g = { class: \"vac-title-container\" };\nconst _hoisted_4$f = { class: \"vac-room-name vac-text-ellipsis\" };\nconst _hoisted_5$a = {\n key: 1,\n class: \"vac-text-date\"\n};\nconst _hoisted_6$6 = { key: 0 };\nconst _hoisted_7$6 = {\n key: 1,\n class: \"vac-text-ellipsis\"\n};\nconst _hoisted_8$4 = {\n key: 3,\n class: \"vac-text-ellipsis\"\n};\nconst _hoisted_9$4 = { class: \"vac-room-options-container\" };\nconst _hoisted_10$4 = {\n key: 0,\n class: \"vac-badge-counter vac-room-badge\"\n};\nconst _hoisted_11$3 = {\n key: 0,\n class: \"vac-menu-options\"\n};\nconst _hoisted_12$3 = { class: \"vac-menu-list\" };\nconst _hoisted_13$1 = [\"onClick\"];\nfunction _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_svg_icon = resolveComponent(\"svg-icon\");\n const _component_format_message = resolveComponent(\"format-message\");\n const _directive_click_outside = resolveDirective(\"click-outside\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$m, [\n renderSlot(_ctx.$slots, \"room-list-item_\" + $props.room.roomId, {}, () => [\n renderSlot(_ctx.$slots, \"room-list-avatar_\" + $props.room.roomId, {}, () => [\n $props.room.avatar ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: \"vac-avatar\",\n style: normalizeStyle({ \"background-image\": `url('${$props.room.avatar}')` })\n }, null, 4)) : createCommentVNode(\"\", true)\n ]),\n createBaseVNode(\"div\", _hoisted_2$j, [\n createBaseVNode(\"div\", _hoisted_3$g, [\n $options.userStatus ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([\"vac-state-circle\", { \"vac-state-online\": $options.userStatus === \"online\" }])\n }, null, 2)) : createCommentVNode(\"\", true),\n createBaseVNode(\"div\", _hoisted_4$f, toDisplayString($props.room.roomName), 1),\n $props.room.lastMessage ? (openBlock(), createElementBlock(\"div\", _hoisted_5$a, toDisplayString($props.room.lastMessage.timestamp), 1)) : createCommentVNode(\"\", true)\n ]),\n createBaseVNode(\"div\", {\n class: normalizeClass([\"vac-text-last\", {\n \"vac-message-new\": $props.room.lastMessage && $props.room.lastMessage.new && !$options.typingUsers\n }])\n }, [\n $options.isMessageCheckmarkVisible ? (openBlock(), createElementBlock(\"span\", _hoisted_6$6, [\n renderSlot(_ctx.$slots, \"checkmark-icon_\" + $props.room.roomId, {}, () => [\n createVNode(_component_svg_icon, {\n name: $props.room.lastMessage.distributed ? \"double-checkmark\" : \"checkmark\",\n param: $props.room.lastMessage.seen ? \"seen\" : \"\",\n class: \"vac-icon-check\"\n }, null, 8, [\"name\", \"param\"])\n ])\n ])) : createCommentVNode(\"\", true),\n $props.room.lastMessage && !$props.room.lastMessage.deleted && $options.isAudio ? (openBlock(), createElementBlock(\"div\", _hoisted_7$6, [\n renderSlot(_ctx.$slots, \"microphone-icon_\" + $props.room.roomId, {}, () => [\n createVNode(_component_svg_icon, {\n name: \"microphone\",\n class: \"vac-icon-microphone\"\n })\n ]),\n createTextVNode(\" \" + toDisplayString($options.formattedDuration), 1)\n ])) : $props.room.lastMessage ? (openBlock(), createBlock(_component_format_message, {\n key: 2,\n \"message-id\": $props.room.lastMessage._id,\n \"room-id\": $props.room.roomId,\n \"room-list\": true,\n content: $options.getLastMessage,\n deleted: !!$props.room.lastMessage.deleted && !$options.typingUsers,\n users: $props.room.users,\n \"text-messages\": $props.textMessages,\n linkify: false,\n \"text-formatting\": $props.textFormatting,\n \"link-options\": $props.linkOptions,\n \"single-line\": true\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (idx, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"message-id\", \"room-id\", \"content\", \"deleted\", \"users\", \"text-messages\", \"text-formatting\", \"link-options\"])) : createCommentVNode(\"\", true),\n !$props.room.lastMessage && $options.typingUsers ? (openBlock(), createElementBlock(\"div\", _hoisted_8$4, toDisplayString($options.typingUsers), 1)) : createCommentVNode(\"\", true),\n createBaseVNode(\"div\", _hoisted_9$4, [\n $props.room.unreadCount ? (openBlock(), createElementBlock(\"div\", _hoisted_10$4, toDisplayString($props.room.unreadCount), 1)) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"room-list-options_\" + $props.room.roomId, {}, () => [\n $props.roomActions.length ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: \"vac-svg-button vac-list-room-options\",\n onClick: _cache[0] || (_cache[0] = withModifiers(($event) => $data.roomMenuOpened = $props.room.roomId, [\"stop\"]))\n }, [\n renderSlot(_ctx.$slots, \"room-list-options-icon_\" + $props.room.roomId, {}, () => [\n createVNode(_component_svg_icon, {\n name: \"dropdown\",\n param: \"room\"\n })\n ])\n ])) : createCommentVNode(\"\", true),\n $props.roomActions.length ? (openBlock(), createBlock(Transition, {\n key: 1,\n name: \"vac-slide-left\"\n }, {\n default: withCtx(() => [\n $data.roomMenuOpened === $props.room.roomId ? withDirectives((openBlock(), createElementBlock(\"div\", _hoisted_11$3, [\n createBaseVNode(\"div\", _hoisted_12$3, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($props.roomActions, (action) => {\n return openBlock(), createElementBlock(\"div\", {\n key: action.name\n }, [\n createBaseVNode(\"div\", {\n class: \"vac-menu-item\",\n onClick: withModifiers(($event) => $options.roomActionHandler(action), [\"stop\"])\n }, toDisplayString(action.title), 9, _hoisted_13$1)\n ]);\n }), 128))\n ])\n ])), [\n [_directive_click_outside, $options.closeRoomMenu]\n ]) : createCommentVNode(\"\", true)\n ]),\n _: 1\n })) : createCommentVNode(\"\", true)\n ])\n ])\n ], 2)\n ])\n ])\n ]);\n}\nvar RoomContent = /* @__PURE__ */ _export_sfc(_sfc_main$m, [[\"render\", _sfc_render$m]]);\nvar filteredItems = (items, prop, val, startsWith = false) => {\n if (!val || val === \"\")\n return items;\n return items.filter((v) => {\n if (startsWith)\n return formatString(v[prop]).startsWith(formatString(val));\n return formatString(v[prop]).includes(formatString(val));\n });\n};\nfunction formatString(string) {\n return string.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\");\n}\nconst _sfc_main$l = {\n name: \"RoomsList\",\n components: {\n Loader,\n RoomsSearch,\n RoomContent\n },\n props: {\n currentUserId: { type: [String, Number], required: true },\n textMessages: { type: Object, required: true },\n showRoomsList: { type: Boolean, required: true },\n showSearch: { type: Boolean, required: true },\n showAddRoom: { type: Boolean, required: true },\n textFormatting: { type: Object, required: true },\n linkOptions: { type: Object, required: true },\n isMobile: { type: Boolean, required: true },\n rooms: { type: Array, required: true },\n loadingRooms: { type: Boolean, required: true },\n roomsLoaded: { type: Boolean, required: true },\n room: { type: Object, required: true },\n customSearchRoomEnabled: { type: [Boolean, String], default: false },\n roomActions: { type: Array, required: true },\n scrollDistance: { type: Number, required: true }\n },\n emits: [\n \"add-room\",\n \"search-room\",\n \"room-action-handler\",\n \"loading-more-rooms\",\n \"fetch-room\",\n \"fetch-more-rooms\"\n ],\n data() {\n return {\n filteredRooms: this.rooms || [],\n observer: null,\n showLoader: true,\n loadingMoreRooms: false,\n selectedRoomId: \"\"\n };\n },\n watch: {\n rooms: {\n deep: true,\n handler(newVal, oldVal) {\n this.filteredRooms = newVal;\n if (newVal.length !== oldVal.length || this.roomsLoaded) {\n this.loadingMoreRooms = false;\n }\n }\n },\n loadingRooms(val) {\n if (!val) {\n setTimeout(() => this.initIntersectionObserver());\n }\n },\n loadingMoreRooms(val) {\n this.$emit(\"loading-more-rooms\", val);\n },\n roomsLoaded: {\n immediate: true,\n handler(val) {\n if (val) {\n this.loadingMoreRooms = false;\n if (!this.loadingRooms) {\n this.showLoader = false;\n }\n }\n }\n },\n room: {\n immediate: true,\n handler(val) {\n if (val && !this.isMobile)\n this.selectedRoomId = val.roomId;\n }\n }\n },\n methods: {\n initIntersectionObserver() {\n if (this.observer) {\n this.showLoader = true;\n this.observer.disconnect();\n }\n const loader = this.$el.querySelector(\"#infinite-loader-rooms\");\n if (loader) {\n const options2 = {\n root: this.$el.querySelector(\"#rooms-list\"),\n rootMargin: `${this.scrollDistance}px`,\n threshold: 0\n };\n this.observer = new IntersectionObserver((entries) => {\n if (entries[0].isIntersecting) {\n this.loadMoreRooms();\n }\n }, options2);\n this.observer.observe(loader);\n }\n },\n searchRoom(ev) {\n if (this.customSearchRoomEnabled) {\n this.$emit(\"search-room\", ev.target.value);\n } else {\n this.filteredRooms = filteredItems(\n this.rooms,\n \"roomName\",\n ev.target.value\n );\n }\n },\n openRoom(room) {\n if (room.roomId === this.room.roomId && !this.isMobile)\n return;\n if (!this.isMobile)\n this.selectedRoomId = room.roomId;\n this.$emit(\"fetch-room\", { room });\n },\n loadMoreRooms() {\n if (this.loadingMoreRooms)\n return;\n if (this.roomsLoaded) {\n this.loadingMoreRooms = false;\n this.showLoader = false;\n return;\n }\n this.$emit(\"fetch-more-rooms\");\n this.loadingMoreRooms = true;\n }\n }\n};\nconst _hoisted_1$l = {\n key: 0,\n class: \"vac-rooms-empty\"\n};\nconst _hoisted_2$i = {\n key: 1,\n id: \"rooms-list\",\n class: \"vac-room-list\"\n};\nconst _hoisted_3$f = [\"id\", \"onClick\"];\nconst _hoisted_4$e = {\n key: 0,\n id: \"infinite-loader-rooms\"\n};\nfunction _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_rooms_search = resolveComponent(\"rooms-search\");\n const _component_loader = resolveComponent(\"loader\");\n const _component_room_content = resolveComponent(\"room-content\");\n return withDirectives((openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"vac-rooms-container\", {\n \"vac-rooms-container-full\": $props.isMobile,\n \"vac-app-border-r\": !$props.isMobile\n }])\n }, [\n renderSlot(_ctx.$slots, \"rooms-header\"),\n renderSlot(_ctx.$slots, \"rooms-list-search\", {}, () => [\n createVNode(_component_rooms_search, {\n rooms: $props.rooms,\n \"loading-rooms\": $props.loadingRooms,\n \"text-messages\": $props.textMessages,\n \"show-search\": $props.showSearch,\n \"show-add-room\": $props.showAddRoom,\n onSearchRoom: $options.searchRoom,\n onAddRoom: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"add-room\"))\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (idx, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"rooms\", \"loading-rooms\", \"text-messages\", \"show-search\", \"show-add-room\", \"onSearchRoom\"])\n ]),\n createVNode(_component_loader, {\n show: $props.loadingRooms,\n type: \"rooms\"\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (idx, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"show\"]),\n !$props.loadingRooms && !$props.rooms.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$l, [\n renderSlot(_ctx.$slots, \"rooms-empty\", {}, () => [\n createTextVNode(toDisplayString($props.textMessages.ROOMS_EMPTY), 1)\n ])\n ])) : createCommentVNode(\"\", true),\n !$props.loadingRooms ? (openBlock(), createElementBlock(\"div\", _hoisted_2$i, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($data.filteredRooms, (fRoom) => {\n return openBlock(), createElementBlock(\"div\", {\n id: fRoom.roomId,\n key: fRoom.roomId,\n class: normalizeClass([\"vac-room-item\", { \"vac-room-selected\": $data.selectedRoomId === fRoom.roomId }]),\n onClick: ($event) => $options.openRoom(fRoom)\n }, [\n createVNode(_component_room_content, {\n \"current-user-id\": $props.currentUserId,\n room: fRoom,\n \"text-formatting\": $props.textFormatting,\n \"link-options\": $props.linkOptions,\n \"text-messages\": $props.textMessages,\n \"room-actions\": $props.roomActions,\n onRoomActionHandler: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"room-action-handler\", $event))\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (idx, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"current-user-id\", \"room\", \"text-formatting\", \"link-options\", \"text-messages\", \"room-actions\"])\n ], 10, _hoisted_3$f);\n }), 128)),\n createVNode(Transition, { name: \"vac-fade-message\" }, {\n default: withCtx(() => [\n $props.rooms.length && !$props.loadingRooms ? (openBlock(), createElementBlock(\"div\", _hoisted_4$e, [\n createVNode(_component_loader, {\n show: $data.showLoader,\n infinite: true,\n type: \"infinite-rooms\"\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (idx, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"show\"])\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 3\n })\n ])) : createCommentVNode(\"\", true)\n ], 2)), [\n [vShow, $props.showRoomsList]\n ]);\n}\nvar RoomsList = /* @__PURE__ */ _export_sfc(_sfc_main$l, [[\"render\", _sfc_render$l]]);\nconst _sfc_main$k = {\n name: \"RoomHeader\",\n components: {\n SvgIcon\n },\n directives: {\n clickOutside: vClickOutside\n },\n props: {\n currentUserId: { type: [String, Number], required: true },\n textMessages: { type: Object, required: true },\n singleRoom: { type: Boolean, required: true },\n showRoomsList: { type: Boolean, required: true },\n isMobile: { type: Boolean, required: true },\n roomInfoEnabled: { type: Boolean, required: true },\n menuActions: { type: Array, required: true },\n room: { type: Object, required: true },\n messageSelectionEnabled: { type: Boolean, required: true },\n messageSelectionActions: { type: Array, required: true },\n selectedMessagesTotal: { type: Number, required: true }\n },\n emits: [\n \"toggle-rooms-list\",\n \"room-info\",\n \"menu-action-handler\",\n \"cancel-message-selection\",\n \"message-selection-action-handler\"\n ],\n data() {\n return {\n menuOpened: false,\n messageSelectionAnimationEnded: true\n };\n },\n computed: {\n typingUsers() {\n return typingText(this.room, this.currentUserId, this.textMessages);\n },\n userStatus() {\n if (!this.room.users || this.room.users.length !== 2)\n return;\n const user = this.room.users.find((u) => u._id !== this.currentUserId);\n if (!(user == null ? void 0 : user.status))\n return;\n let text2 = \"\";\n if (user.status.state === \"online\") {\n text2 = this.textMessages.IS_ONLINE;\n } else if (user.status.lastChanged) {\n text2 = this.textMessages.LAST_SEEN + user.status.lastChanged;\n }\n return text2;\n }\n },\n watch: {\n messageSelectionEnabled(val) {\n if (val) {\n this.messageSelectionAnimationEnded = false;\n } else {\n setTimeout(() => {\n this.messageSelectionAnimationEnded = true;\n }, 300);\n }\n }\n },\n methods: {\n menuActionHandler(action) {\n this.closeMenu();\n this.$emit(\"menu-action-handler\", action);\n },\n closeMenu() {\n this.menuOpened = false;\n },\n messageSelectionActionHandler(action) {\n this.$emit(\"message-selection-action-handler\", action);\n }\n }\n};\nconst _hoisted_1$k = { class: \"vac-room-header vac-app-border-b\" };\nconst _hoisted_2$h = { class: \"vac-room-wrapper\" };\nconst _hoisted_3$e = {\n key: 0,\n class: \"vac-room-selection\"\n};\nconst _hoisted_4$d = [\"id\"];\nconst _hoisted_5$9 = [\"onClick\"];\nconst _hoisted_6$5 = { class: \"vac-selection-button-count\" };\nconst _hoisted_7$5 = { class: \"vac-text-ellipsis\" };\nconst _hoisted_8$3 = { class: \"vac-room-name vac-text-ellipsis\" };\nconst _hoisted_9$3 = {\n key: 0,\n class: \"vac-room-info vac-text-ellipsis\"\n};\nconst _hoisted_10$3 = {\n key: 1,\n class: \"vac-room-info vac-text-ellipsis\"\n};\nconst _hoisted_11$2 = {\n key: 0,\n class: \"vac-menu-options\"\n};\nconst _hoisted_12$2 = { class: \"vac-menu-list\" };\nconst _hoisted_13 = [\"onClick\"];\nfunction _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_svg_icon = resolveComponent(\"svg-icon\");\n const _directive_click_outside = resolveDirective(\"click-outside\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$k, [\n renderSlot(_ctx.$slots, \"room-header\", {}, () => [\n createBaseVNode(\"div\", _hoisted_2$h, [\n createVNode(Transition, { name: \"vac-slide-up\" }, {\n default: withCtx(() => [\n $props.messageSelectionEnabled ? (openBlock(), createElementBlock(\"div\", _hoisted_3$e, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($props.messageSelectionActions, (action) => {\n return openBlock(), createElementBlock(\"div\", {\n id: action.name,\n key: action.name\n }, [\n createBaseVNode(\"div\", {\n class: \"vac-selection-button\",\n onClick: ($event) => $options.messageSelectionActionHandler(action)\n }, [\n createTextVNode(toDisplayString(action.title) + \" \", 1),\n createBaseVNode(\"span\", _hoisted_6$5, toDisplayString($props.selectedMessagesTotal), 1)\n ], 8, _hoisted_5$9)\n ], 8, _hoisted_4$d);\n }), 128)),\n createBaseVNode(\"div\", {\n class: \"vac-selection-cancel vac-item-clickable\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"cancel-message-selection\"))\n }, toDisplayString($props.textMessages.CANCEL_SELECT_MESSAGE), 1)\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n !$props.messageSelectionEnabled && $data.messageSelectionAnimationEnded ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n !$props.singleRoom ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([\"vac-svg-button vac-toggle-button\", {\n \"vac-rotate-icon-init\": !$props.isMobile,\n \"vac-rotate-icon\": !$props.showRoomsList && !$props.isMobile\n }]),\n onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"toggle-rooms-list\"))\n }, [\n renderSlot(_ctx.$slots, \"toggle-icon\", {}, () => [\n createVNode(_component_svg_icon, { name: \"toggle\" })\n ])\n ], 2)) : createCommentVNode(\"\", true),\n createBaseVNode(\"div\", {\n class: normalizeClass([\"vac-info-wrapper\", { \"vac-item-clickable\": $props.roomInfoEnabled }]),\n onClick: _cache[2] || (_cache[2] = ($event) => _ctx.$emit(\"room-info\"))\n }, [\n renderSlot(_ctx.$slots, \"room-header-avatar\", {}, () => [\n $props.room.avatar ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: \"vac-avatar\",\n style: normalizeStyle({ \"background-image\": `url('${$props.room.avatar}')` })\n }, null, 4)) : createCommentVNode(\"\", true)\n ]),\n renderSlot(_ctx.$slots, \"room-header-info\", {}, () => [\n createBaseVNode(\"div\", _hoisted_7$5, [\n createBaseVNode(\"div\", _hoisted_8$3, toDisplayString($props.room.roomName), 1),\n $options.typingUsers ? (openBlock(), createElementBlock(\"div\", _hoisted_9$3, toDisplayString($options.typingUsers), 1)) : (openBlock(), createElementBlock(\"div\", _hoisted_10$3, toDisplayString($options.userStatus), 1))\n ])\n ])\n ], 2),\n $props.room.roomId ? renderSlot(_ctx.$slots, \"room-options\", { key: 1 }, () => [\n $props.menuActions.length ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: \"vac-svg-button vac-room-options\",\n onClick: _cache[3] || (_cache[3] = ($event) => $data.menuOpened = !$data.menuOpened)\n }, [\n renderSlot(_ctx.$slots, \"menu-icon\", {}, () => [\n createVNode(_component_svg_icon, { name: \"menu\" })\n ])\n ])) : createCommentVNode(\"\", true),\n $props.menuActions.length ? (openBlock(), createBlock(Transition, {\n key: 1,\n name: \"vac-slide-left\"\n }, {\n default: withCtx(() => [\n $data.menuOpened ? withDirectives((openBlock(), createElementBlock(\"div\", _hoisted_11$2, [\n createBaseVNode(\"div\", _hoisted_12$2, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($props.menuActions, (action) => {\n return openBlock(), createElementBlock(\"div\", {\n key: action.name\n }, [\n createBaseVNode(\"div\", {\n class: \"vac-menu-item\",\n onClick: ($event) => $options.menuActionHandler(action)\n }, toDisplayString(action.title), 9, _hoisted_13)\n ]);\n }), 128))\n ])\n ])), [\n [_directive_click_outside, $options.closeMenu]\n ]) : createCommentVNode(\"\", true)\n ]),\n _: 1\n })) : createCommentVNode(\"\", true)\n ]) : createCommentVNode(\"\", true)\n ], 64)) : createCommentVNode(\"\", true)\n ])\n ])\n ]);\n}\nvar RoomHeader = /* @__PURE__ */ _export_sfc(_sfc_main$k, [[\"render\", _sfc_render$k]]);\nfunction assertNonEmptyString(str) {\n if (typeof str !== \"string\" || !str) {\n throw new Error(\"expected a non-empty string, got: \" + str);\n }\n}\nfunction assertNumber(number) {\n if (typeof number !== \"number\") {\n throw new Error(\"expected a number, got: \" + number);\n }\n}\nconst DB_VERSION_CURRENT = 1;\nconst DB_VERSION_INITIAL = 1;\nconst STORE_EMOJI = \"emoji\";\nconst STORE_KEYVALUE = \"keyvalue\";\nconst STORE_FAVORITES = \"favorites\";\nconst FIELD_TOKENS = \"tokens\";\nconst INDEX_TOKENS = \"tokens\";\nconst FIELD_UNICODE = \"unicode\";\nconst INDEX_COUNT = \"count\";\nconst FIELD_GROUP = \"group\";\nconst FIELD_ORDER = \"order\";\nconst INDEX_GROUP_AND_ORDER = \"group-order\";\nconst KEY_ETAG = \"eTag\";\nconst KEY_URL = \"url\";\nconst KEY_PREFERRED_SKINTONE = \"skinTone\";\nconst MODE_READONLY = \"readonly\";\nconst MODE_READWRITE = \"readwrite\";\nconst INDEX_SKIN_UNICODE = \"skinUnicodes\";\nconst FIELD_SKIN_UNICODE = \"skinUnicodes\";\nconst DEFAULT_DATA_SOURCE$1 = \"https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json\";\nconst DEFAULT_LOCALE$1 = \"en\";\nfunction uniqBy$1(arr, func) {\n const set2 = /* @__PURE__ */ new Set();\n const res = [];\n for (const item of arr) {\n const key = func(item);\n if (!set2.has(key)) {\n set2.add(key);\n res.push(item);\n }\n }\n return res;\n}\nfunction uniqEmoji(emojis) {\n return uniqBy$1(emojis, (_) => _.unicode);\n}\nfunction initialMigration(db) {\n function createObjectStore(name, keyPath, indexes) {\n const store = keyPath ? db.createObjectStore(name, { keyPath }) : db.createObjectStore(name);\n if (indexes) {\n for (const [indexName, [keyPath2, multiEntry]] of Object.entries(indexes)) {\n store.createIndex(indexName, keyPath2, { multiEntry });\n }\n }\n return store;\n }\n createObjectStore(STORE_KEYVALUE);\n createObjectStore(STORE_EMOJI, FIELD_UNICODE, {\n [INDEX_TOKENS]: [FIELD_TOKENS, true],\n [INDEX_GROUP_AND_ORDER]: [[FIELD_GROUP, FIELD_ORDER]],\n [INDEX_SKIN_UNICODE]: [FIELD_SKIN_UNICODE, true]\n });\n createObjectStore(STORE_FAVORITES, void 0, {\n [INDEX_COUNT]: [\"\"]\n });\n}\nconst openReqs = {};\nconst databaseCache = {};\nconst onCloseListeners = {};\nfunction handleOpenOrDeleteReq(resolve3, reject, req) {\n req.onerror = () => reject(req.error);\n req.onblocked = () => reject(new Error(\"IDB blocked\"));\n req.onsuccess = () => resolve3(req.result);\n}\nasync function createDatabase(dbName) {\n const db = await new Promise((resolve3, reject) => {\n const req = indexedDB.open(dbName, DB_VERSION_CURRENT);\n openReqs[dbName] = req;\n req.onupgradeneeded = (e) => {\n if (e.oldVersion < DB_VERSION_INITIAL) {\n initialMigration(req.result);\n }\n };\n handleOpenOrDeleteReq(resolve3, reject, req);\n });\n db.onclose = () => closeDatabase(dbName);\n return db;\n}\nfunction openDatabase(dbName) {\n if (!databaseCache[dbName]) {\n databaseCache[dbName] = createDatabase(dbName);\n }\n return databaseCache[dbName];\n}\nfunction dbPromise(db, storeName, readOnlyOrReadWrite, cb) {\n return new Promise((resolve3, reject) => {\n const txn = db.transaction(storeName, readOnlyOrReadWrite, { durability: \"relaxed\" });\n const store = typeof storeName === \"string\" ? txn.objectStore(storeName) : storeName.map((name) => txn.objectStore(name));\n let res;\n cb(store, txn, (result) => {\n res = result;\n });\n txn.oncomplete = () => resolve3(res);\n txn.onerror = () => reject(txn.error);\n });\n}\nfunction closeDatabase(dbName) {\n const req = openReqs[dbName];\n const db = req && req.result;\n if (db) {\n db.close();\n const listeners = onCloseListeners[dbName];\n if (listeners) {\n for (const listener of listeners) {\n listener();\n }\n }\n }\n delete openReqs[dbName];\n delete databaseCache[dbName];\n delete onCloseListeners[dbName];\n}\nfunction deleteDatabase(dbName) {\n return new Promise((resolve3, reject) => {\n closeDatabase(dbName);\n const req = indexedDB.deleteDatabase(dbName);\n handleOpenOrDeleteReq(resolve3, reject, req);\n });\n}\nfunction addOnCloseListener(dbName, listener) {\n let listeners = onCloseListeners[dbName];\n if (!listeners) {\n listeners = onCloseListeners[dbName] = [];\n }\n listeners.push(listener);\n}\nconst irregularEmoticons = /* @__PURE__ */ new Set([\n \":D\",\n \"XD\",\n \":'D\",\n \"O:)\",\n \":X\",\n \":P\",\n \";P\",\n \"XP\",\n \":L\",\n \":Z\",\n \":j\",\n \"8D\",\n \"XO\",\n \"8)\",\n \":B\",\n \":O\",\n \":S\",\n \":'o\",\n \"Dx\",\n \"X(\",\n \"D:\",\n \":C\",\n \">0)\",\n \":3\",\n \" {\n if (!word.match(/\\w/) || irregularEmoticons.has(word)) {\n return word.toLowerCase();\n }\n return word.replace(/[)(:,]/g, \"\").replace(/’/g, \"'\").toLowerCase();\n }).filter(Boolean);\n}\nconst MIN_SEARCH_TEXT_LENGTH$1 = 2;\nfunction normalizeTokens(str) {\n return str.filter(Boolean).map((_) => _.toLowerCase()).filter((_) => _.length >= MIN_SEARCH_TEXT_LENGTH$1);\n}\nfunction transformEmojiData(emojiData) {\n const res = emojiData.map(({ annotation, emoticon, group, order, shortcodes, skins, tags, emoji, version: version2 }) => {\n const tokens = [...new Set(\n normalizeTokens([\n ...(shortcodes || []).map(extractTokens).flat(),\n ...tags.map(extractTokens).flat(),\n ...extractTokens(annotation),\n emoticon\n ])\n )].sort();\n const res2 = {\n annotation,\n group,\n order,\n tags,\n tokens,\n unicode: emoji,\n version: version2\n };\n if (emoticon) {\n res2.emoticon = emoticon;\n }\n if (shortcodes) {\n res2.shortcodes = shortcodes;\n }\n if (skins) {\n res2.skinTones = [];\n res2.skinUnicodes = [];\n res2.skinVersions = [];\n for (const { tone, emoji: emoji2, version: version3 } of skins) {\n res2.skinTones.push(tone);\n res2.skinUnicodes.push(emoji2);\n res2.skinVersions.push(version3);\n }\n }\n return res2;\n });\n return res;\n}\nfunction callStore(store, method, key, cb) {\n store[method](key).onsuccess = (e) => cb && cb(e.target.result);\n}\nfunction getIDB(store, key, cb) {\n callStore(store, \"get\", key, cb);\n}\nfunction getAllIDB(store, key, cb) {\n callStore(store, \"getAll\", key, cb);\n}\nfunction commit(txn) {\n if (txn.commit) {\n txn.commit();\n }\n}\nfunction minBy(array, func) {\n let minItem = array[0];\n for (let i = 1; i < array.length; i++) {\n const item = array[i];\n if (func(minItem) > func(item)) {\n minItem = item;\n }\n }\n return minItem;\n}\nfunction findCommonMembers(arrays, uniqByFunc) {\n const shortestArray = minBy(arrays, (_) => _.length);\n const results = [];\n for (const item of shortestArray) {\n if (!arrays.some((array) => array.findIndex((_) => uniqByFunc(_) === uniqByFunc(item)) === -1)) {\n results.push(item);\n }\n }\n return results;\n}\nasync function isEmpty(db) {\n return !await get2(db, STORE_KEYVALUE, KEY_URL);\n}\nasync function hasData(db, url, eTag) {\n const [oldETag, oldUrl] = await Promise.all([KEY_ETAG, KEY_URL].map((key) => get2(db, STORE_KEYVALUE, key)));\n return oldETag === eTag && oldUrl === url;\n}\nasync function doFullDatabaseScanForSingleResult(db, predicate) {\n const BATCH_SIZE = 50;\n return dbPromise(db, STORE_EMOJI, MODE_READONLY, (emojiStore, txn, cb) => {\n let lastKey;\n const processNextBatch = () => {\n emojiStore.getAll(lastKey && IDBKeyRange.lowerBound(lastKey, true), BATCH_SIZE).onsuccess = (e) => {\n const results = e.target.result;\n for (const result of results) {\n lastKey = result.unicode;\n if (predicate(result)) {\n return cb(result);\n }\n }\n if (results.length < BATCH_SIZE) {\n return cb();\n }\n processNextBatch();\n };\n };\n processNextBatch();\n });\n}\nasync function loadData(db, emojiData, url, eTag) {\n try {\n const transformedData = transformEmojiData(emojiData);\n await dbPromise(db, [STORE_EMOJI, STORE_KEYVALUE], MODE_READWRITE, ([emojiStore, metaStore], txn) => {\n let oldETag;\n let oldUrl;\n let todo = 0;\n function checkFetched() {\n if (++todo === 2) {\n onFetched();\n }\n }\n function onFetched() {\n if (oldETag === eTag && oldUrl === url) {\n return;\n }\n emojiStore.clear();\n for (const data of transformedData) {\n emojiStore.put(data);\n }\n metaStore.put(eTag, KEY_ETAG);\n metaStore.put(url, KEY_URL);\n commit(txn);\n }\n getIDB(metaStore, KEY_ETAG, (result) => {\n oldETag = result;\n checkFetched();\n });\n getIDB(metaStore, KEY_URL, (result) => {\n oldUrl = result;\n checkFetched();\n });\n });\n } finally {\n }\n}\nasync function getEmojiByGroup(db, group) {\n return dbPromise(db, STORE_EMOJI, MODE_READONLY, (emojiStore, txn, cb) => {\n const range = IDBKeyRange.bound([group, 0], [group + 1, 0], false, true);\n getAllIDB(emojiStore.index(INDEX_GROUP_AND_ORDER), range, cb);\n });\n}\nasync function getEmojiBySearchQuery(db, query) {\n const tokens = normalizeTokens(extractTokens(query));\n if (!tokens.length) {\n return [];\n }\n return dbPromise(db, STORE_EMOJI, MODE_READONLY, (emojiStore, txn, cb) => {\n const intermediateResults = [];\n const checkDone = () => {\n if (intermediateResults.length === tokens.length) {\n onDone();\n }\n };\n const onDone = () => {\n const results = findCommonMembers(intermediateResults, (_) => _.unicode);\n cb(results.sort((a, b) => a.order < b.order ? -1 : 1));\n };\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n const range = i === tokens.length - 1 ? IDBKeyRange.bound(token, token + \"\\uFFFF\", false, true) : IDBKeyRange.only(token);\n getAllIDB(emojiStore.index(INDEX_TOKENS), range, (result) => {\n intermediateResults.push(result);\n checkDone();\n });\n }\n });\n}\nasync function getEmojiByShortcode(db, shortcode) {\n const emojis = await getEmojiBySearchQuery(db, shortcode);\n if (!emojis.length) {\n const predicate = (_) => (_.shortcodes || []).includes(shortcode.toLowerCase());\n return await doFullDatabaseScanForSingleResult(db, predicate) || null;\n }\n return emojis.filter((_) => {\n const lowerShortcodes = (_.shortcodes || []).map((_2) => _2.toLowerCase());\n return lowerShortcodes.includes(shortcode.toLowerCase());\n })[0] || null;\n}\nasync function getEmojiByUnicode(db, unicode) {\n return dbPromise(db, STORE_EMOJI, MODE_READONLY, (emojiStore, txn, cb) => getIDB(emojiStore, unicode, (result) => {\n if (result) {\n return cb(result);\n }\n getIDB(emojiStore.index(INDEX_SKIN_UNICODE), unicode, (result2) => cb(result2 || null));\n }));\n}\nfunction get2(db, storeName, key) {\n return dbPromise(db, storeName, MODE_READONLY, (store, txn, cb) => getIDB(store, key, cb));\n}\nfunction set(db, storeName, key, value) {\n return dbPromise(db, storeName, MODE_READWRITE, (store, txn) => {\n store.put(value, key);\n commit(txn);\n });\n}\nfunction incrementFavoriteEmojiCount(db, unicode) {\n return dbPromise(db, STORE_FAVORITES, MODE_READWRITE, (store, txn) => getIDB(store, unicode, (result) => {\n store.put((result || 0) + 1, unicode);\n commit(txn);\n }));\n}\nfunction getTopFavoriteEmoji(db, customEmojiIndex2, limit) {\n if (limit === 0) {\n return [];\n }\n return dbPromise(db, [STORE_FAVORITES, STORE_EMOJI], MODE_READONLY, ([favoritesStore, emojiStore], txn, cb) => {\n const results = [];\n favoritesStore.index(INDEX_COUNT).openCursor(void 0, \"prev\").onsuccess = (e) => {\n const cursor = e.target.result;\n if (!cursor) {\n return cb(results);\n }\n function addResult(result) {\n results.push(result);\n if (results.length === limit) {\n return cb(results);\n }\n cursor.continue();\n }\n const unicodeOrName = cursor.primaryKey;\n const custom = customEmojiIndex2.byName(unicodeOrName);\n if (custom) {\n return addResult(custom);\n }\n getIDB(emojiStore, unicodeOrName, (emoji) => {\n if (emoji) {\n return addResult(emoji);\n }\n cursor.continue();\n });\n };\n });\n}\nconst CODA_MARKER = \"\";\nfunction trie(arr, itemToTokens) {\n const map = /* @__PURE__ */ new Map();\n for (const item of arr) {\n const tokens = itemToTokens(item);\n for (const token of tokens) {\n let currentMap = map;\n for (let i = 0; i < token.length; i++) {\n const char = token.charAt(i);\n let nextMap = currentMap.get(char);\n if (!nextMap) {\n nextMap = /* @__PURE__ */ new Map();\n currentMap.set(char, nextMap);\n }\n currentMap = nextMap;\n }\n let valuesAtCoda = currentMap.get(CODA_MARKER);\n if (!valuesAtCoda) {\n valuesAtCoda = [];\n currentMap.set(CODA_MARKER, valuesAtCoda);\n }\n valuesAtCoda.push(item);\n }\n }\n const search = (query, exact) => {\n let currentMap = map;\n for (let i = 0; i < query.length; i++) {\n const char = query.charAt(i);\n const nextMap = currentMap.get(char);\n if (nextMap) {\n currentMap = nextMap;\n } else {\n return [];\n }\n }\n if (exact) {\n const results2 = currentMap.get(CODA_MARKER);\n return results2 || [];\n }\n const results = [];\n const queue2 = [currentMap];\n while (queue2.length) {\n const currentMap2 = queue2.shift();\n const entriesSortedByKey = [...currentMap2.entries()].sort((a, b) => a[0] < b[0] ? -1 : 1);\n for (const [key, value] of entriesSortedByKey) {\n if (key === CODA_MARKER) {\n results.push(...value);\n } else {\n queue2.push(value);\n }\n }\n }\n return results;\n };\n return search;\n}\nconst requiredKeys$1 = [\n \"name\",\n \"url\"\n];\nfunction assertCustomEmojis(customEmojis) {\n const isArray2 = customEmojis && Array.isArray(customEmojis);\n const firstItemIsFaulty = isArray2 && customEmojis.length && (!customEmojis[0] || requiredKeys$1.some((key) => !(key in customEmojis[0])));\n if (!isArray2 || firstItemIsFaulty) {\n throw new Error(\"Custom emojis are in the wrong format\");\n }\n}\nfunction customEmojiIndex(customEmojis) {\n assertCustomEmojis(customEmojis);\n const sortByName = (a, b) => a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1;\n const all = customEmojis.sort(sortByName);\n const emojiToTokens = (emoji) => [...new Set((emoji.shortcodes || []).map((shortcode) => extractTokens(shortcode)).flat())];\n const searchTrie = trie(customEmojis, emojiToTokens);\n const searchByExactMatch = (_) => searchTrie(_, true);\n const searchByPrefix = (_) => searchTrie(_, false);\n const search = (query) => {\n const tokens = extractTokens(query);\n const intermediateResults = tokens.map((token, i) => (i < tokens.length - 1 ? searchByExactMatch : searchByPrefix)(token));\n return findCommonMembers(intermediateResults, (_) => _.name).sort(sortByName);\n };\n const shortcodeToEmoji = /* @__PURE__ */ new Map();\n const nameToEmoji = /* @__PURE__ */ new Map();\n for (const customEmoji of customEmojis) {\n nameToEmoji.set(customEmoji.name.toLowerCase(), customEmoji);\n for (const shortcode of customEmoji.shortcodes || []) {\n shortcodeToEmoji.set(shortcode.toLowerCase(), customEmoji);\n }\n }\n const byShortcode = (shortcode) => shortcodeToEmoji.get(shortcode.toLowerCase());\n const byName = (name) => nameToEmoji.get(name.toLowerCase());\n return {\n all,\n search,\n byShortcode,\n byName\n };\n}\nfunction cleanEmoji(emoji) {\n if (!emoji) {\n return emoji;\n }\n delete emoji.tokens;\n if (emoji.skinTones) {\n const len = emoji.skinTones.length;\n emoji.skins = Array(len);\n for (let i = 0; i < len; i++) {\n emoji.skins[i] = {\n tone: emoji.skinTones[i],\n unicode: emoji.skinUnicodes[i],\n version: emoji.skinVersions[i]\n };\n }\n delete emoji.skinTones;\n delete emoji.skinUnicodes;\n delete emoji.skinVersions;\n }\n return emoji;\n}\nfunction warnETag(eTag) {\n if (!eTag) {\n console.warn(\"emoji-picker-element is more efficient if the dataSource server exposes an ETag header.\");\n }\n}\nconst requiredKeys = [\n \"annotation\",\n \"emoji\",\n \"group\",\n \"order\",\n \"tags\",\n \"version\"\n];\nfunction assertEmojiData(emojiData) {\n if (!emojiData || !Array.isArray(emojiData) || !emojiData[0] || typeof emojiData[0] !== \"object\" || requiredKeys.some((key) => !(key in emojiData[0]))) {\n throw new Error(\"Emoji data is in the wrong format\");\n }\n}\nfunction assertStatus(response, dataSource) {\n if (Math.floor(response.status / 100) !== 2) {\n throw new Error(\"Failed to fetch: \" + dataSource + \": \" + response.status);\n }\n}\nasync function getETag(dataSource) {\n const response = await fetch(dataSource, { method: \"HEAD\" });\n assertStatus(response, dataSource);\n const eTag = response.headers.get(\"etag\");\n warnETag(eTag);\n return eTag;\n}\nasync function getETagAndData(dataSource) {\n const response = await fetch(dataSource);\n assertStatus(response, dataSource);\n const eTag = response.headers.get(\"etag\");\n warnETag(eTag);\n const emojiData = await response.json();\n assertEmojiData(emojiData);\n return [eTag, emojiData];\n}\nfunction arrayBufferToBinaryString(buffer) {\n var binary = \"\";\n var bytes = new Uint8Array(buffer);\n var length = bytes.byteLength;\n var i = -1;\n while (++i < length) {\n binary += String.fromCharCode(bytes[i]);\n }\n return binary;\n}\nfunction binaryStringToArrayBuffer(binary) {\n var length = binary.length;\n var buf = new ArrayBuffer(length);\n var arr = new Uint8Array(buf);\n var i = -1;\n while (++i < length) {\n arr[i] = binary.charCodeAt(i);\n }\n return buf;\n}\nasync function jsonChecksum(object) {\n const inString = JSON.stringify(object);\n const inBuffer = binaryStringToArrayBuffer(inString);\n const outBuffer = await crypto.subtle.digest(\"SHA-1\", inBuffer);\n const outBinString = arrayBufferToBinaryString(outBuffer);\n const res = btoa(outBinString);\n return res;\n}\nasync function checkForUpdates(db, dataSource) {\n let emojiData;\n let eTag = await getETag(dataSource);\n if (!eTag) {\n const eTagAndData = await getETagAndData(dataSource);\n eTag = eTagAndData[0];\n emojiData = eTagAndData[1];\n if (!eTag) {\n eTag = await jsonChecksum(emojiData);\n }\n }\n if (await hasData(db, dataSource, eTag))\n ;\n else {\n if (!emojiData) {\n const eTagAndData = await getETagAndData(dataSource);\n emojiData = eTagAndData[1];\n }\n await loadData(db, emojiData, dataSource, eTag);\n }\n}\nasync function loadDataForFirstTime(db, dataSource) {\n let [eTag, emojiData] = await getETagAndData(dataSource);\n if (!eTag) {\n eTag = await jsonChecksum(emojiData);\n }\n await loadData(db, emojiData, dataSource, eTag);\n}\nclass Database {\n constructor({ dataSource = DEFAULT_DATA_SOURCE$1, locale = DEFAULT_LOCALE$1, customEmoji = [] } = {}) {\n this.dataSource = dataSource;\n this.locale = locale;\n this._dbName = `emoji-picker-element-${this.locale}`;\n this._db = void 0;\n this._lazyUpdate = void 0;\n this._custom = customEmojiIndex(customEmoji);\n this._clear = this._clear.bind(this);\n this._ready = this._init();\n }\n async _init() {\n const db = this._db = await openDatabase(this._dbName);\n addOnCloseListener(this._dbName, this._clear);\n const dataSource = this.dataSource;\n const empty = await isEmpty(db);\n if (empty) {\n await loadDataForFirstTime(db, dataSource);\n } else {\n this._lazyUpdate = checkForUpdates(db, dataSource);\n }\n }\n async ready() {\n const checkReady = async () => {\n if (!this._ready) {\n this._ready = this._init();\n }\n return this._ready;\n };\n await checkReady();\n if (!this._db) {\n await checkReady();\n }\n }\n async getEmojiByGroup(group) {\n assertNumber(group);\n await this.ready();\n return uniqEmoji(await getEmojiByGroup(this._db, group)).map(cleanEmoji);\n }\n async getEmojiBySearchQuery(query) {\n assertNonEmptyString(query);\n await this.ready();\n const customs = this._custom.search(query);\n const natives = uniqEmoji(await getEmojiBySearchQuery(this._db, query)).map(cleanEmoji);\n return [\n ...customs,\n ...natives\n ];\n }\n async getEmojiByShortcode(shortcode) {\n assertNonEmptyString(shortcode);\n await this.ready();\n const custom = this._custom.byShortcode(shortcode);\n if (custom) {\n return custom;\n }\n return cleanEmoji(await getEmojiByShortcode(this._db, shortcode));\n }\n async getEmojiByUnicodeOrName(unicodeOrName) {\n assertNonEmptyString(unicodeOrName);\n await this.ready();\n const custom = this._custom.byName(unicodeOrName);\n if (custom) {\n return custom;\n }\n return cleanEmoji(await getEmojiByUnicode(this._db, unicodeOrName));\n }\n async getPreferredSkinTone() {\n await this.ready();\n return await get2(this._db, STORE_KEYVALUE, KEY_PREFERRED_SKINTONE) || 0;\n }\n async setPreferredSkinTone(skinTone) {\n assertNumber(skinTone);\n await this.ready();\n return set(this._db, STORE_KEYVALUE, KEY_PREFERRED_SKINTONE, skinTone);\n }\n async incrementFavoriteEmojiCount(unicodeOrName) {\n assertNonEmptyString(unicodeOrName);\n await this.ready();\n return incrementFavoriteEmojiCount(this._db, unicodeOrName);\n }\n async getTopFavoriteEmoji(limit) {\n assertNumber(limit);\n await this.ready();\n return (await getTopFavoriteEmoji(this._db, this._custom, limit)).map(cleanEmoji);\n }\n set customEmoji(customEmojis) {\n this._custom = customEmojiIndex(customEmojis);\n }\n get customEmoji() {\n return this._custom.all;\n }\n async _shutdown() {\n await this.ready();\n try {\n await this._lazyUpdate;\n } catch (err) {\n }\n }\n _clear() {\n this._db = this._ready = this._lazyUpdate = void 0;\n }\n async close() {\n await this._shutdown();\n await closeDatabase(this._dbName);\n }\n async delete() {\n await this._shutdown();\n await deleteDatabase(this._dbName);\n }\n}\nfunction noop() {\n}\nfunction run3(fn) {\n return fn();\n}\nfunction blank_object() {\n return /* @__PURE__ */ Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run3);\n}\nfunction is_function(thing) {\n return typeof thing === \"function\";\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || (a && typeof a === \"object\" || typeof a === \"function\");\n}\nlet src_url_equal_anchor;\nfunction src_url_equal(element_src, url) {\n if (!src_url_equal_anchor) {\n src_url_equal_anchor = document.createElement(\"a\");\n }\n src_url_equal_anchor.href = url;\n return element_src === src_url_equal_anchor.href;\n}\nfunction is_empty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction action_destroyer(action_result) {\n return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction listen(node, event, handler, options2) {\n node.addEventListener(event, handler, options2);\n return () => node.removeEventListener(event, handler, options2);\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else if (node.getAttribute(attribute) !== value)\n node.setAttribute(attribute, value);\n}\nfunction set_data(text2, data) {\n data = \"\" + data;\n if (text2.wholeText !== data)\n text2.data = data;\n}\nfunction set_input_value(input, value) {\n input.value = value == null ? \"\" : value;\n}\nfunction set_style(node, key, value, important) {\n if (value === null) {\n node.style.removeProperty(key);\n } else {\n node.style.setProperty(key, value, important ? \"important\" : \"\");\n }\n}\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nconst dirty_components = [];\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nconst seen_callbacks = /* @__PURE__ */ new Set();\nlet flushidx = 0;\nfunction flush() {\n const saved_component = current_component;\n do {\n while (flushidx < dirty_components.length) {\n const component = dirty_components[flushidx];\n flushidx++;\n set_current_component(component);\n update(component.$$);\n }\n set_current_component(null);\n dirty_components.length = 0;\n flushidx = 0;\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n seen_callbacks.clear();\n set_current_component(saved_component);\n}\nfunction update($$) {\n if ($$.fragment !== null) {\n $$.update();\n run_all($$.before_update);\n const dirty = $$.dirty;\n $$.dirty = [-1];\n $$.fragment && $$.fragment.p($$.ctx, dirty);\n $$.after_update.forEach(add_render_callback);\n }\n}\nconst outroing = /* @__PURE__ */ new Set();\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nconst globals = typeof window !== \"undefined\" ? window : typeof globalThis !== \"undefined\" ? globalThis : global;\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block2, next2, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = /* @__PURE__ */ new Map();\n const deltas = /* @__PURE__ */ new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block2(key, child_ctx);\n block.c();\n } else if (dynamic) {\n block.p(child_ctx, dirty);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = /* @__PURE__ */ new Set();\n const did_move = /* @__PURE__ */ new Set();\n function insert2(block) {\n transition_in(block, 1);\n block.m(node, next2);\n lookup.set(block.key, block);\n next2 = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n next2 = new_block.first;\n o--;\n n--;\n } else if (!new_lookup.has(old_key)) {\n destroy(old_block, lookup);\n o--;\n } else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert2(new_block);\n } else if (did_move.has(old_key)) {\n o--;\n } else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert2(new_block);\n } else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert2(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction mount_component(component, target, anchor, customElement) {\n const { fragment, on_mount, on_destroy, after_update } = component.$$;\n fragment && fragment.m(target, anchor);\n if (!customElement) {\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run3).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n } else {\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n }\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n const $$ = component.$$;\n if ($$.fragment !== null) {\n run_all($$.on_destroy);\n $$.fragment && $$.fragment.d(detaching);\n $$.on_destroy = $$.fragment = null;\n $$.ctx = [];\n }\n}\nfunction make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[i / 31 | 0] |= 1 << i % 31;\n}\nfunction init(component, options2, instance2, create_fragment2, not_equal, props, append_styles, dirty = [-1]) {\n const parent_component = current_component;\n set_current_component(component);\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n props,\n update: noop,\n not_equal,\n bound: blank_object(),\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(parent_component ? parent_component.$$.context : []),\n callbacks: blank_object(),\n dirty,\n skip_bound: false,\n root: options2.target || parent_component.$$.root\n };\n append_styles && append_styles($$.root);\n let ready = false;\n $$.ctx = instance2 ? instance2(component, options2.props || {}, (i, ret, ...rest) => {\n const value = rest.length ? rest[0] : ret;\n if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n if (!$$.skip_bound && $$.bound[i])\n $$.bound[i](value);\n if (ready)\n make_dirty(component, i);\n }\n return ret;\n }) : [];\n $$.update();\n ready = true;\n run_all($$.before_update);\n $$.fragment = create_fragment2 ? create_fragment2($$.ctx) : false;\n if (options2.target) {\n {\n $$.fragment && $$.fragment.c();\n }\n mount_component(component, options2.target, void 0, void 0);\n flush();\n }\n set_current_component(parent_component);\n}\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n}\nconst allGroups = [\n [-1, \"\\u2728\", \"custom\"],\n [0, \"\\u{1F600}\", \"smileys-emotion\"],\n [1, \"\\u{1F44B}\", \"people-body\"],\n [3, \"\\u{1F431}\", \"animals-nature\"],\n [4, \"\\u{1F34E}\", \"food-drink\"],\n [5, \"\\u{1F3E0}\\uFE0F\", \"travel-places\"],\n [6, \"\\u26BD\", \"activities\"],\n [7, \"\\u{1F4DD}\", \"objects\"],\n [8, \"\\u26D4\\uFE0F\", \"symbols\"],\n [9, \"\\u{1F3C1}\", \"flags\"]\n].map(([id, emoji, name]) => ({ id, emoji, name }));\nconst groups = allGroups.slice(1);\nconst customGroup = allGroups[0];\nconst MIN_SEARCH_TEXT_LENGTH = 2;\nconst NUM_SKIN_TONES = 6;\nconst rIC = typeof requestIdleCallback === \"function\" ? requestIdleCallback : setTimeout;\nfunction hasZwj(emoji) {\n return emoji.unicode.includes(\"\\u200D\");\n}\nconst versionsAndTestEmoji = {\n \"\\u{1FAE0}\": 14,\n \"\\u{1F972}\": 13.1,\n \"\\u{1F97B}\": 12.1,\n \"\\u{1F970}\": 11,\n \"\\u{1F929}\": 5,\n \"\\u{1F471}\\u200D\\u2640\\uFE0F\": 4,\n \"\\u{1F923}\": 3,\n \"\\u{1F441}\\uFE0F\\u200D\\u{1F5E8}\\uFE0F\": 2,\n \"\\u{1F600}\": 1,\n \"\\u{1F610}\\uFE0F\": 0.7,\n \"\\u{1F603}\": 0.6\n};\nconst TIMEOUT_BEFORE_LOADING_MESSAGE = 1e3;\nconst DEFAULT_SKIN_TONE_EMOJI = \"\\u{1F590}\\uFE0F\";\nconst DEFAULT_NUM_COLUMNS = 8;\nconst MOST_COMMONLY_USED_EMOJI = [\n \"\\u{1F60A}\",\n \"\\u{1F612}\",\n \"\\u2665\\uFE0F\",\n \"\\u{1F44D}\\uFE0F\",\n \"\\u{1F60D}\",\n \"\\u{1F602}\",\n \"\\u{1F62D}\",\n \"\\u263A\\uFE0F\",\n \"\\u{1F614}\",\n \"\\u{1F629}\",\n \"\\u{1F60F}\",\n \"\\u{1F495}\",\n \"\\u{1F64C}\",\n \"\\u{1F618}\"\n];\nconst FONT_FAMILY = '\"Twemoji Mozilla\",\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\",\"EmojiOne Color\",\"Android Emoji\",sans-serif';\nconst DEFAULT_CATEGORY_SORTING = (a, b) => a < b ? -1 : a > b ? 1 : 0;\nconst getTextFeature = (text2, color) => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n ctx.textBaseline = \"top\";\n ctx.font = `100px ${FONT_FAMILY}`;\n ctx.fillStyle = color;\n ctx.scale(0.01, 0.01);\n ctx.fillText(text2, 0, 0);\n return ctx.getImageData(0, 0, 1, 1).data;\n};\nconst compareFeatures = (feature1, feature2) => {\n const feature1Str = [...feature1].join(\",\");\n const feature2Str = [...feature2].join(\",\");\n return feature1Str === feature2Str && !feature1Str.startsWith(\"0,0,0,\");\n};\nfunction testColorEmojiSupported(text2) {\n const feature1 = getTextFeature(text2, \"#000\");\n const feature2 = getTextFeature(text2, \"#fff\");\n return feature1 && feature2 && compareFeatures(feature1, feature2);\n}\nfunction determineEmojiSupportLevel() {\n const entries = Object.entries(versionsAndTestEmoji);\n try {\n for (const [emoji, version2] of entries) {\n if (testColorEmojiSupported(emoji)) {\n return version2;\n }\n }\n } catch (e) {\n } finally {\n }\n return entries[0][1];\n}\nconst emojiSupportLevelPromise = new Promise((resolve3) => rIC(() => resolve3(determineEmojiSupportLevel())));\nconst supportedZwjEmojis = /* @__PURE__ */ new Map();\nconst VARIATION_SELECTOR = \"\\uFE0F\";\nconst SKINTONE_MODIFIER = \"\\uD83C\";\nconst ZWJ = \"\\u200D\";\nconst LIGHT_SKIN_TONE = 127995;\nconst LIGHT_SKIN_TONE_MODIFIER = 57339;\nfunction applySkinTone(str, skinTone) {\n if (skinTone === 0) {\n return str;\n }\n const zwjIndex = str.indexOf(ZWJ);\n if (zwjIndex !== -1) {\n return str.substring(0, zwjIndex) + String.fromCodePoint(LIGHT_SKIN_TONE + skinTone - 1) + str.substring(zwjIndex);\n }\n if (str.endsWith(VARIATION_SELECTOR)) {\n str = str.substring(0, str.length - 1);\n }\n return str + SKINTONE_MODIFIER + String.fromCodePoint(LIGHT_SKIN_TONE_MODIFIER + skinTone - 1);\n}\nfunction halt(event) {\n event.preventDefault();\n event.stopPropagation();\n}\nfunction incrementOrDecrement(decrement, val, arr) {\n val += decrement ? -1 : 1;\n if (val < 0) {\n val = arr.length - 1;\n } else if (val >= arr.length) {\n val = 0;\n }\n return val;\n}\nfunction uniqBy(arr, func) {\n const set2 = /* @__PURE__ */ new Set();\n const res = [];\n for (const item of arr) {\n const key = func(item);\n if (!set2.has(key)) {\n set2.add(key);\n res.push(item);\n }\n }\n return res;\n}\nfunction summarizeEmojisForUI(emojis, emojiSupportLevel) {\n const toSimpleSkinsMap = (skins) => {\n const res = {};\n for (const skin of skins) {\n if (typeof skin.tone === \"number\" && skin.version <= emojiSupportLevel) {\n res[skin.tone] = skin.unicode;\n }\n }\n return res;\n };\n return emojis.map(({ unicode, skins, shortcodes, url, name, category }) => ({\n unicode,\n name,\n shortcodes,\n url,\n category,\n id: unicode || name,\n skins: skins && toSimpleSkinsMap(skins),\n title: (shortcodes || []).join(\", \")\n }));\n}\nconst rAF = requestAnimationFrame;\nlet resizeObserverSupported = typeof ResizeObserver === \"function\";\nfunction calculateWidth(node, onUpdate) {\n let resizeObserver;\n if (resizeObserverSupported) {\n resizeObserver = new ResizeObserver((entries) => onUpdate(entries[0].contentRect.width));\n resizeObserver.observe(node);\n } else {\n rAF(() => onUpdate(node.getBoundingClientRect().width));\n }\n return {\n destroy() {\n if (resizeObserver) {\n resizeObserver.disconnect();\n }\n }\n };\n}\nfunction calculateTextWidth(node) {\n {\n const range = document.createRange();\n range.selectNode(node.firstChild);\n return range.getBoundingClientRect().width;\n }\n}\nlet baselineEmojiWidth;\nfunction checkZwjSupport(zwjEmojisToCheck, baselineEmoji, emojiToDomNode) {\n for (const emoji of zwjEmojisToCheck) {\n const domNode = emojiToDomNode(emoji);\n const emojiWidth = calculateTextWidth(domNode);\n if (typeof baselineEmojiWidth === \"undefined\") {\n baselineEmojiWidth = calculateTextWidth(baselineEmoji);\n }\n const supported = emojiWidth / 1.8 < baselineEmojiWidth;\n supportedZwjEmojis.set(emoji.unicode, supported);\n }\n}\nfunction uniq(arr) {\n return uniqBy(arr, (_) => _);\n}\nconst { Map: Map_1 } = globals;\nfunction get_each_context(ctx, list, i) {\n const child_ctx = ctx.slice();\n child_ctx[63] = list[i];\n child_ctx[65] = i;\n return child_ctx;\n}\nfunction get_each_context_1(ctx, list, i) {\n const child_ctx = ctx.slice();\n child_ctx[66] = list[i];\n child_ctx[65] = i;\n return child_ctx;\n}\nfunction get_each_context_2(ctx, list, i) {\n const child_ctx = ctx.slice();\n child_ctx[63] = list[i];\n child_ctx[65] = i;\n return child_ctx;\n}\nfunction get_each_context_3(ctx, list, i) {\n const child_ctx = ctx.slice();\n child_ctx[69] = list[i];\n return child_ctx;\n}\nfunction get_each_context_4(ctx, list, i) {\n const child_ctx = ctx.slice();\n child_ctx[72] = list[i];\n child_ctx[65] = i;\n return child_ctx;\n}\nfunction create_each_block_4(key_1, ctx) {\n let div;\n let t_value = ctx[72] + \"\";\n let t;\n let div_id_value;\n let div_class_value;\n let div_aria_selected_value;\n let div_title_value;\n let div_aria_label_value;\n return {\n key: key_1,\n first: null,\n c() {\n div = element(\"div\");\n t = text(t_value);\n attr(div, \"id\", div_id_value = \"skintone-\" + ctx[65]);\n attr(div, \"class\", div_class_value = \"emoji hide-focus \" + (ctx[65] === ctx[20] ? \"active\" : \"\"));\n attr(div, \"aria-selected\", div_aria_selected_value = ctx[65] === ctx[20]);\n attr(div, \"role\", \"option\");\n attr(div, \"title\", div_title_value = ctx[0].skinTones[ctx[65]]);\n attr(div, \"tabindex\", \"-1\");\n attr(div, \"aria-label\", div_aria_label_value = ctx[0].skinTones[ctx[65]]);\n this.first = div;\n },\n m(target, anchor) {\n insert(target, div, anchor);\n append(div, t);\n },\n p(new_ctx, dirty) {\n ctx = new_ctx;\n if (dirty[0] & 512 && t_value !== (t_value = ctx[72] + \"\"))\n set_data(t, t_value);\n if (dirty[0] & 512 && div_id_value !== (div_id_value = \"skintone-\" + ctx[65])) {\n attr(div, \"id\", div_id_value);\n }\n if (dirty[0] & 1049088 && div_class_value !== (div_class_value = \"emoji hide-focus \" + (ctx[65] === ctx[20] ? \"active\" : \"\"))) {\n attr(div, \"class\", div_class_value);\n }\n if (dirty[0] & 1049088 && div_aria_selected_value !== (div_aria_selected_value = ctx[65] === ctx[20])) {\n attr(div, \"aria-selected\", div_aria_selected_value);\n }\n if (dirty[0] & 513 && div_title_value !== (div_title_value = ctx[0].skinTones[ctx[65]])) {\n attr(div, \"title\", div_title_value);\n }\n if (dirty[0] & 513 && div_aria_label_value !== (div_aria_label_value = ctx[0].skinTones[ctx[65]])) {\n attr(div, \"aria-label\", div_aria_label_value);\n }\n },\n d(detaching) {\n if (detaching)\n detach(div);\n }\n };\n}\nfunction create_each_block_3(key_1, ctx) {\n let button;\n let div;\n let t_value = ctx[69].emoji + \"\";\n let t;\n let button_aria_controls_value;\n let button_aria_label_value;\n let button_aria_selected_value;\n let button_title_value;\n let mounted;\n let dispose;\n function click_handler() {\n return ctx[49](ctx[69]);\n }\n return {\n key: key_1,\n first: null,\n c() {\n button = element(\"button\");\n div = element(\"div\");\n t = text(t_value);\n attr(div, \"class\", \"nav-emoji emoji\");\n attr(button, \"role\", \"tab\");\n attr(button, \"class\", \"nav-button\");\n attr(button, \"aria-controls\", button_aria_controls_value = \"tab-\" + ctx[69].id);\n attr(button, \"aria-label\", button_aria_label_value = ctx[0].categories[ctx[69].name]);\n attr(button, \"aria-selected\", button_aria_selected_value = !ctx[4] && ctx[13].id === ctx[69].id);\n attr(button, \"title\", button_title_value = ctx[0].categories[ctx[69].name]);\n this.first = button;\n },\n m(target, anchor) {\n insert(target, button, anchor);\n append(button, div);\n append(div, t);\n if (!mounted) {\n dispose = listen(button, \"click\", click_handler);\n mounted = true;\n }\n },\n p(new_ctx, dirty) {\n ctx = new_ctx;\n if (dirty[0] & 4096 && t_value !== (t_value = ctx[69].emoji + \"\"))\n set_data(t, t_value);\n if (dirty[0] & 4096 && button_aria_controls_value !== (button_aria_controls_value = \"tab-\" + ctx[69].id)) {\n attr(button, \"aria-controls\", button_aria_controls_value);\n }\n if (dirty[0] & 4097 && button_aria_label_value !== (button_aria_label_value = ctx[0].categories[ctx[69].name])) {\n attr(button, \"aria-label\", button_aria_label_value);\n }\n if (dirty[0] & 12304 && button_aria_selected_value !== (button_aria_selected_value = !ctx[4] && ctx[13].id === ctx[69].id)) {\n attr(button, \"aria-selected\", button_aria_selected_value);\n }\n if (dirty[0] & 4097 && button_title_value !== (button_title_value = ctx[0].categories[ctx[69].name])) {\n attr(button, \"title\", button_title_value);\n }\n },\n d(detaching) {\n if (detaching)\n detach(button);\n mounted = false;\n dispose();\n }\n };\n}\nfunction create_else_block_1(ctx) {\n let img;\n let img_src_value;\n return {\n c() {\n img = element(\"img\");\n attr(img, \"class\", \"custom-emoji\");\n if (!src_url_equal(img.src, img_src_value = ctx[63].url))\n attr(img, \"src\", img_src_value);\n attr(img, \"alt\", \"\");\n attr(img, \"loading\", \"lazy\");\n },\n m(target, anchor) {\n insert(target, img, anchor);\n },\n p(ctx2, dirty) {\n if (dirty[0] & 32768 && !src_url_equal(img.src, img_src_value = ctx2[63].url)) {\n attr(img, \"src\", img_src_value);\n }\n },\n d(detaching) {\n if (detaching)\n detach(img);\n }\n };\n}\nfunction create_if_block_1(ctx) {\n let t_value = ctx[27](ctx[63], ctx[8]) + \"\";\n let t;\n return {\n c() {\n t = text(t_value);\n },\n m(target, anchor) {\n insert(target, t, anchor);\n },\n p(ctx2, dirty) {\n if (dirty[0] & 33024 && t_value !== (t_value = ctx2[27](ctx2[63], ctx2[8]) + \"\"))\n set_data(t, t_value);\n },\n d(detaching) {\n if (detaching)\n detach(t);\n }\n };\n}\nfunction create_each_block_2(key_1, ctx) {\n let button;\n let button_role_value;\n let button_aria_selected_value;\n let button_aria_label_value;\n let button_title_value;\n let button_class_value;\n let button_id_value;\n function select_block_type(ctx2, dirty) {\n if (ctx2[63].unicode)\n return create_if_block_1;\n return create_else_block_1;\n }\n let current_block_type = select_block_type(ctx);\n let if_block = current_block_type(ctx);\n return {\n key: key_1,\n first: null,\n c() {\n button = element(\"button\");\n if_block.c();\n attr(button, \"role\", button_role_value = ctx[4] ? \"option\" : \"menuitem\");\n attr(button, \"aria-selected\", button_aria_selected_value = ctx[4] ? ctx[65] == ctx[5] : \"\");\n attr(button, \"aria-label\", button_aria_label_value = ctx[28](ctx[63], ctx[8]));\n attr(button, \"title\", button_title_value = ctx[63].title);\n attr(button, \"class\", button_class_value = \"emoji \" + (ctx[4] && ctx[65] === ctx[5] ? \"active\" : \"\"));\n attr(button, \"id\", button_id_value = \"emo-\" + ctx[63].id);\n this.first = button;\n },\n m(target, anchor) {\n insert(target, button, anchor);\n if_block.m(button, null);\n },\n p(new_ctx, dirty) {\n ctx = new_ctx;\n if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) {\n if_block.p(ctx, dirty);\n } else {\n if_block.d(1);\n if_block = current_block_type(ctx);\n if (if_block) {\n if_block.c();\n if_block.m(button, null);\n }\n }\n if (dirty[0] & 16 && button_role_value !== (button_role_value = ctx[4] ? \"option\" : \"menuitem\")) {\n attr(button, \"role\", button_role_value);\n }\n if (dirty[0] & 32816 && button_aria_selected_value !== (button_aria_selected_value = ctx[4] ? ctx[65] == ctx[5] : \"\")) {\n attr(button, \"aria-selected\", button_aria_selected_value);\n }\n if (dirty[0] & 33024 && button_aria_label_value !== (button_aria_label_value = ctx[28](ctx[63], ctx[8]))) {\n attr(button, \"aria-label\", button_aria_label_value);\n }\n if (dirty[0] & 32768 && button_title_value !== (button_title_value = ctx[63].title)) {\n attr(button, \"title\", button_title_value);\n }\n if (dirty[0] & 32816 && button_class_value !== (button_class_value = \"emoji \" + (ctx[4] && ctx[65] === ctx[5] ? \"active\" : \"\"))) {\n attr(button, \"class\", button_class_value);\n }\n if (dirty[0] & 32768 && button_id_value !== (button_id_value = \"emo-\" + ctx[63].id)) {\n attr(button, \"id\", button_id_value);\n }\n },\n d(detaching) {\n if (detaching)\n detach(button);\n if_block.d();\n }\n };\n}\nfunction create_each_block_1(key_1, ctx) {\n let div0;\n let t_value = (ctx[4] ? ctx[0].searchResultsLabel : ctx[66].category ? ctx[66].category : ctx[15].length > 1 ? ctx[0].categories.custom : ctx[0].categories[ctx[13].name]) + \"\";\n let t;\n let div0_id_value;\n let div0_class_value;\n let div1;\n let each_blocks = [];\n let each_1_lookup = new Map_1();\n let div1_role_value;\n let div1_aria_labelledby_value;\n let div1_id_value;\n let each_value_2 = ctx[66].emojis;\n const get_key = (ctx2) => ctx2[63].id;\n for (let i = 0; i < each_value_2.length; i += 1) {\n let child_ctx = get_each_context_2(ctx, each_value_2, i);\n let key = get_key(child_ctx);\n each_1_lookup.set(key, each_blocks[i] = create_each_block_2(key, child_ctx));\n }\n return {\n key: key_1,\n first: null,\n c() {\n div0 = element(\"div\");\n t = text(t_value);\n div1 = element(\"div\");\n for (let i = 0; i < each_blocks.length; i += 1) {\n each_blocks[i].c();\n }\n attr(div0, \"id\", div0_id_value = \"menu-label-\" + ctx[65]);\n attr(div0, \"class\", div0_class_value = \"category \" + (ctx[15].length === 1 && ctx[15][0].category === \"\" ? \"gone\" : \"\"));\n attr(div0, \"aria-hidden\", \"true\");\n attr(div1, \"class\", \"emoji-menu\");\n attr(div1, \"role\", div1_role_value = ctx[4] ? \"listbox\" : \"menu\");\n attr(div1, \"aria-labelledby\", div1_aria_labelledby_value = \"menu-label-\" + ctx[65]);\n attr(div1, \"id\", div1_id_value = ctx[4] ? \"search-results\" : \"\");\n this.first = div0;\n },\n m(target, anchor) {\n insert(target, div0, anchor);\n append(div0, t);\n insert(target, div1, anchor);\n for (let i = 0; i < each_blocks.length; i += 1) {\n each_blocks[i].m(div1, null);\n }\n },\n p(new_ctx, dirty) {\n ctx = new_ctx;\n if (dirty[0] & 40977 && t_value !== (t_value = (ctx[4] ? ctx[0].searchResultsLabel : ctx[66].category ? ctx[66].category : ctx[15].length > 1 ? ctx[0].categories.custom : ctx[0].categories[ctx[13].name]) + \"\"))\n set_data(t, t_value);\n if (dirty[0] & 32768 && div0_id_value !== (div0_id_value = \"menu-label-\" + ctx[65])) {\n attr(div0, \"id\", div0_id_value);\n }\n if (dirty[0] & 32768 && div0_class_value !== (div0_class_value = \"category \" + (ctx[15].length === 1 && ctx[15][0].category === \"\" ? \"gone\" : \"\"))) {\n attr(div0, \"class\", div0_class_value);\n }\n if (dirty[0] & 402686256) {\n each_value_2 = ctx[66].emojis;\n each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value_2, each_1_lookup, div1, destroy_block, create_each_block_2, null, get_each_context_2);\n }\n if (dirty[0] & 16 && div1_role_value !== (div1_role_value = ctx[4] ? \"listbox\" : \"menu\")) {\n attr(div1, \"role\", div1_role_value);\n }\n if (dirty[0] & 32768 && div1_aria_labelledby_value !== (div1_aria_labelledby_value = \"menu-label-\" + ctx[65])) {\n attr(div1, \"aria-labelledby\", div1_aria_labelledby_value);\n }\n if (dirty[0] & 16 && div1_id_value !== (div1_id_value = ctx[4] ? \"search-results\" : \"\")) {\n attr(div1, \"id\", div1_id_value);\n }\n },\n d(detaching) {\n if (detaching)\n detach(div0);\n if (detaching)\n detach(div1);\n for (let i = 0; i < each_blocks.length; i += 1) {\n each_blocks[i].d();\n }\n }\n };\n}\nfunction create_else_block(ctx) {\n let img;\n let img_src_value;\n return {\n c() {\n img = element(\"img\");\n attr(img, \"class\", \"custom-emoji\");\n if (!src_url_equal(img.src, img_src_value = ctx[63].url))\n attr(img, \"src\", img_src_value);\n attr(img, \"alt\", \"\");\n attr(img, \"loading\", \"lazy\");\n },\n m(target, anchor) {\n insert(target, img, anchor);\n },\n p(ctx2, dirty) {\n if (dirty[0] & 1024 && !src_url_equal(img.src, img_src_value = ctx2[63].url)) {\n attr(img, \"src\", img_src_value);\n }\n },\n d(detaching) {\n if (detaching)\n detach(img);\n }\n };\n}\nfunction create_if_block(ctx) {\n let t_value = ctx[27](ctx[63], ctx[8]) + \"\";\n let t;\n return {\n c() {\n t = text(t_value);\n },\n m(target, anchor) {\n insert(target, t, anchor);\n },\n p(ctx2, dirty) {\n if (dirty[0] & 1280 && t_value !== (t_value = ctx2[27](ctx2[63], ctx2[8]) + \"\"))\n set_data(t, t_value);\n },\n d(detaching) {\n if (detaching)\n detach(t);\n }\n };\n}\nfunction create_each_block(key_1, ctx) {\n let button;\n let button_aria_label_value;\n let button_title_value;\n let button_id_value;\n function select_block_type_1(ctx2, dirty) {\n if (ctx2[63].unicode)\n return create_if_block;\n return create_else_block;\n }\n let current_block_type = select_block_type_1(ctx);\n let if_block = current_block_type(ctx);\n return {\n key: key_1,\n first: null,\n c() {\n button = element(\"button\");\n if_block.c();\n attr(button, \"role\", \"menuitem\");\n attr(button, \"aria-label\", button_aria_label_value = ctx[28](ctx[63], ctx[8]));\n attr(button, \"title\", button_title_value = ctx[63].title);\n attr(button, \"class\", \"emoji\");\n attr(button, \"id\", button_id_value = \"fav-\" + ctx[63].id);\n this.first = button;\n },\n m(target, anchor) {\n insert(target, button, anchor);\n if_block.m(button, null);\n },\n p(new_ctx, dirty) {\n ctx = new_ctx;\n if (current_block_type === (current_block_type = select_block_type_1(ctx)) && if_block) {\n if_block.p(ctx, dirty);\n } else {\n if_block.d(1);\n if_block = current_block_type(ctx);\n if (if_block) {\n if_block.c();\n if_block.m(button, null);\n }\n }\n if (dirty[0] & 1280 && button_aria_label_value !== (button_aria_label_value = ctx[28](ctx[63], ctx[8]))) {\n attr(button, \"aria-label\", button_aria_label_value);\n }\n if (dirty[0] & 1024 && button_title_value !== (button_title_value = ctx[63].title)) {\n attr(button, \"title\", button_title_value);\n }\n if (dirty[0] & 1024 && button_id_value !== (button_id_value = \"fav-\" + ctx[63].id)) {\n attr(button, \"id\", button_id_value);\n }\n },\n d(detaching) {\n if (detaching)\n detach(button);\n if_block.d();\n }\n };\n}\nfunction create_fragment(ctx) {\n let section;\n let div0;\n let div4;\n let div1;\n let input;\n let input_placeholder_value;\n let input_aria_expanded_value;\n let input_aria_activedescendant_value;\n let label;\n let t0_value = ctx[0].searchLabel + \"\";\n let t0;\n let span0;\n let t1_value = ctx[0].searchDescription + \"\";\n let t1;\n let div2;\n let button0;\n let t2;\n let button0_class_value;\n let div2_class_value;\n let span1;\n let t3_value = ctx[0].skinToneDescription + \"\";\n let t3;\n let div3;\n let each_blocks_3 = [];\n let each0_lookup = new Map_1();\n let div3_class_value;\n let div3_aria_label_value;\n let div3_aria_activedescendant_value;\n let div3_aria_hidden_value;\n let div5;\n let each_blocks_2 = [];\n let each1_lookup = new Map_1();\n let div5_aria_label_value;\n let div7;\n let div6;\n let div8;\n let t4;\n let div8_class_value;\n let div10;\n let div9;\n let each_blocks_1 = [];\n let each2_lookup = new Map_1();\n let div10_class_value;\n let div10_role_value;\n let div10_aria_label_value;\n let div10_id_value;\n let div11;\n let each_blocks = [];\n let each3_lookup = new Map_1();\n let div11_class_value;\n let div11_aria_label_value;\n let button1;\n let section_aria_label_value;\n let mounted;\n let dispose;\n let each_value_4 = ctx[9];\n const get_key = (ctx2) => ctx2[72];\n for (let i = 0; i < each_value_4.length; i += 1) {\n let child_ctx = get_each_context_4(ctx, each_value_4, i);\n let key = get_key(child_ctx);\n each0_lookup.set(key, each_blocks_3[i] = create_each_block_4(key, child_ctx));\n }\n let each_value_3 = ctx[12];\n const get_key_1 = (ctx2) => ctx2[69].id;\n for (let i = 0; i < each_value_3.length; i += 1) {\n let child_ctx = get_each_context_3(ctx, each_value_3, i);\n let key = get_key_1(child_ctx);\n each1_lookup.set(key, each_blocks_2[i] = create_each_block_3(key, child_ctx));\n }\n let each_value_1 = ctx[15];\n const get_key_2 = (ctx2) => ctx2[66].category;\n for (let i = 0; i < each_value_1.length; i += 1) {\n let child_ctx = get_each_context_1(ctx, each_value_1, i);\n let key = get_key_2(child_ctx);\n each2_lookup.set(key, each_blocks_1[i] = create_each_block_1(key, child_ctx));\n }\n let each_value = ctx[10];\n const get_key_3 = (ctx2) => ctx2[63].id;\n for (let i = 0; i < each_value.length; i += 1) {\n let child_ctx = get_each_context(ctx, each_value, i);\n let key = get_key_3(child_ctx);\n each3_lookup.set(key, each_blocks[i] = create_each_block(key, child_ctx));\n }\n return {\n c() {\n section = element(\"section\");\n div0 = element(\"div\");\n div4 = element(\"div\");\n div1 = element(\"div\");\n input = element(\"input\");\n label = element(\"label\");\n t0 = text(t0_value);\n span0 = element(\"span\");\n t1 = text(t1_value);\n div2 = element(\"div\");\n button0 = element(\"button\");\n t2 = text(ctx[21]);\n span1 = element(\"span\");\n t3 = text(t3_value);\n div3 = element(\"div\");\n for (let i = 0; i < each_blocks_3.length; i += 1) {\n each_blocks_3[i].c();\n }\n div5 = element(\"div\");\n for (let i = 0; i < each_blocks_2.length; i += 1) {\n each_blocks_2[i].c();\n }\n div7 = element(\"div\");\n div6 = element(\"div\");\n div8 = element(\"div\");\n t4 = text(ctx[18]);\n div10 = element(\"div\");\n div9 = element(\"div\");\n for (let i = 0; i < each_blocks_1.length; i += 1) {\n each_blocks_1[i].c();\n }\n div11 = element(\"div\");\n for (let i = 0; i < each_blocks.length; i += 1) {\n each_blocks[i].c();\n }\n button1 = element(\"button\");\n button1.textContent = \"\\u{1F600}\";\n attr(div0, \"class\", \"pad-top\");\n attr(input, \"id\", \"search\");\n attr(input, \"class\", \"search\");\n attr(input, \"type\", \"search\");\n attr(input, \"role\", \"combobox\");\n attr(input, \"enterkeyhint\", \"search\");\n attr(input, \"placeholder\", input_placeholder_value = ctx[0].searchLabel);\n attr(input, \"autocapitalize\", \"none\");\n attr(input, \"autocomplete\", \"off\");\n attr(input, \"spellcheck\", \"true\");\n attr(input, \"aria-expanded\", input_aria_expanded_value = !!(ctx[4] && ctx[1].length));\n attr(input, \"aria-controls\", \"search-results\");\n attr(input, \"aria-describedby\", \"search-description\");\n attr(input, \"aria-autocomplete\", \"list\");\n attr(input, \"aria-activedescendant\", input_aria_activedescendant_value = ctx[26] ? `emo-${ctx[26]}` : \"\");\n attr(label, \"class\", \"sr-only\");\n attr(label, \"for\", \"search\");\n attr(span0, \"id\", \"search-description\");\n attr(span0, \"class\", \"sr-only\");\n attr(div1, \"class\", \"search-wrapper\");\n attr(button0, \"id\", \"skintone-button\");\n attr(button0, \"class\", button0_class_value = \"emoji \" + (ctx[6] ? \"hide-focus\" : \"\"));\n attr(button0, \"aria-label\", ctx[23]);\n attr(button0, \"title\", ctx[23]);\n attr(button0, \"aria-describedby\", \"skintone-description\");\n attr(button0, \"aria-haspopup\", \"listbox\");\n attr(button0, \"aria-expanded\", ctx[6]);\n attr(button0, \"aria-controls\", \"skintone-list\");\n attr(div2, \"class\", div2_class_value = \"skintone-button-wrapper \" + (ctx[19] ? \"expanded\" : \"\"));\n attr(span1, \"id\", \"skintone-description\");\n attr(span1, \"class\", \"sr-only\");\n attr(div3, \"id\", \"skintone-list\");\n attr(div3, \"class\", div3_class_value = \"skintone-list \" + (ctx[6] ? \"\" : \"hidden no-animate\"));\n set_style(div3, \"transform\", \"translateY(\" + (ctx[6] ? 0 : \"calc(-1 * var(--num-skintones) * var(--total-emoji-size))\") + \")\");\n attr(div3, \"role\", \"listbox\");\n attr(div3, \"aria-label\", div3_aria_label_value = ctx[0].skinTonesLabel);\n attr(div3, \"aria-activedescendant\", div3_aria_activedescendant_value = \"skintone-\" + ctx[20]);\n attr(div3, \"aria-hidden\", div3_aria_hidden_value = !ctx[6]);\n attr(div4, \"class\", \"search-row\");\n attr(div5, \"class\", \"nav\");\n attr(div5, \"role\", \"tablist\");\n set_style(div5, \"grid-template-columns\", \"repeat(\" + ctx[12].length + \", 1fr)\");\n attr(div5, \"aria-label\", div5_aria_label_value = ctx[0].categoriesLabel);\n attr(div6, \"class\", \"indicator\");\n set_style(div6, \"transform\", \"translateX(\" + (ctx[24] ? -1 : 1) * ctx[11] * 100 + \"%)\");\n attr(div7, \"class\", \"indicator-wrapper\");\n attr(div8, \"class\", div8_class_value = \"message \" + (ctx[18] ? \"\" : \"gone\"));\n attr(div8, \"role\", \"alert\");\n attr(div8, \"aria-live\", \"polite\");\n attr(div10, \"class\", div10_class_value = \"tabpanel \" + (!ctx[14] || ctx[18] ? \"gone\" : \"\"));\n attr(div10, \"role\", div10_role_value = ctx[4] ? \"region\" : \"tabpanel\");\n attr(div10, \"aria-label\", div10_aria_label_value = ctx[4] ? ctx[0].searchResultsLabel : ctx[0].categories[ctx[13].name]);\n attr(div10, \"id\", div10_id_value = ctx[4] ? \"\" : `tab-${ctx[13].id}`);\n attr(div10, \"tabindex\", \"0\");\n attr(div11, \"class\", div11_class_value = \"favorites emoji-menu \" + (ctx[18] ? \"gone\" : \"\"));\n attr(div11, \"role\", \"menu\");\n attr(div11, \"aria-label\", div11_aria_label_value = ctx[0].favoritesLabel);\n set_style(div11, \"padding-inline-end\", ctx[25] + \"px\");\n attr(button1, \"aria-hidden\", \"true\");\n attr(button1, \"tabindex\", \"-1\");\n attr(button1, \"class\", \"abs-pos hidden emoji\");\n attr(section, \"class\", \"picker\");\n attr(section, \"aria-label\", section_aria_label_value = ctx[0].regionLabel);\n attr(section, \"style\", ctx[22]);\n },\n m(target, anchor) {\n insert(target, section, anchor);\n append(section, div0);\n append(section, div4);\n append(div4, div1);\n append(div1, input);\n set_input_value(input, ctx[2]);\n append(div1, label);\n append(label, t0);\n append(div1, span0);\n append(span0, t1);\n append(div4, div2);\n append(div2, button0);\n append(button0, t2);\n append(div4, span1);\n append(span1, t3);\n append(div4, div3);\n for (let i = 0; i < each_blocks_3.length; i += 1) {\n each_blocks_3[i].m(div3, null);\n }\n ctx[48](div3);\n append(section, div5);\n for (let i = 0; i < each_blocks_2.length; i += 1) {\n each_blocks_2[i].m(div5, null);\n }\n append(section, div7);\n append(div7, div6);\n append(section, div8);\n append(div8, t4);\n append(section, div10);\n append(div10, div9);\n for (let i = 0; i < each_blocks_1.length; i += 1) {\n each_blocks_1[i].m(div9, null);\n }\n ctx[50](div10);\n append(section, div11);\n for (let i = 0; i < each_blocks.length; i += 1) {\n each_blocks[i].m(div11, null);\n }\n append(section, button1);\n ctx[51](button1);\n ctx[52](section);\n if (!mounted) {\n dispose = [\n listen(input, \"input\", ctx[47]),\n listen(input, \"keydown\", ctx[30]),\n listen(button0, \"click\", ctx[35]),\n listen(div3, \"focusout\", ctx[38]),\n listen(div3, \"click\", ctx[34]),\n listen(div3, \"keydown\", ctx[36]),\n listen(div3, \"keyup\", ctx[37]),\n listen(div5, \"keydown\", ctx[32]),\n action_destroyer(ctx[29].call(null, div9)),\n listen(div10, \"click\", ctx[33]),\n listen(div11, \"click\", ctx[33])\n ];\n mounted = true;\n }\n },\n p(ctx2, dirty) {\n if (dirty[0] & 1 && input_placeholder_value !== (input_placeholder_value = ctx2[0].searchLabel)) {\n attr(input, \"placeholder\", input_placeholder_value);\n }\n if (dirty[0] & 18 && input_aria_expanded_value !== (input_aria_expanded_value = !!(ctx2[4] && ctx2[1].length))) {\n attr(input, \"aria-expanded\", input_aria_expanded_value);\n }\n if (dirty[0] & 67108864 && input_aria_activedescendant_value !== (input_aria_activedescendant_value = ctx2[26] ? `emo-${ctx2[26]}` : \"\")) {\n attr(input, \"aria-activedescendant\", input_aria_activedescendant_value);\n }\n if (dirty[0] & 4) {\n set_input_value(input, ctx2[2]);\n }\n if (dirty[0] & 1 && t0_value !== (t0_value = ctx2[0].searchLabel + \"\"))\n set_data(t0, t0_value);\n if (dirty[0] & 1 && t1_value !== (t1_value = ctx2[0].searchDescription + \"\"))\n set_data(t1, t1_value);\n if (dirty[0] & 2097152)\n set_data(t2, ctx2[21]);\n if (dirty[0] & 64 && button0_class_value !== (button0_class_value = \"emoji \" + (ctx2[6] ? \"hide-focus\" : \"\"))) {\n attr(button0, \"class\", button0_class_value);\n }\n if (dirty[0] & 8388608) {\n attr(button0, \"aria-label\", ctx2[23]);\n }\n if (dirty[0] & 8388608) {\n attr(button0, \"title\", ctx2[23]);\n }\n if (dirty[0] & 64) {\n attr(button0, \"aria-expanded\", ctx2[6]);\n }\n if (dirty[0] & 524288 && div2_class_value !== (div2_class_value = \"skintone-button-wrapper \" + (ctx2[19] ? \"expanded\" : \"\"))) {\n attr(div2, \"class\", div2_class_value);\n }\n if (dirty[0] & 1 && t3_value !== (t3_value = ctx2[0].skinToneDescription + \"\"))\n set_data(t3, t3_value);\n if (dirty[0] & 1049089) {\n each_value_4 = ctx2[9];\n each_blocks_3 = update_keyed_each(each_blocks_3, dirty, get_key, 1, ctx2, each_value_4, each0_lookup, div3, destroy_block, create_each_block_4, null, get_each_context_4);\n }\n if (dirty[0] & 64 && div3_class_value !== (div3_class_value = \"skintone-list \" + (ctx2[6] ? \"\" : \"hidden no-animate\"))) {\n attr(div3, \"class\", div3_class_value);\n }\n if (dirty[0] & 64) {\n set_style(div3, \"transform\", \"translateY(\" + (ctx2[6] ? 0 : \"calc(-1 * var(--num-skintones) * var(--total-emoji-size))\") + \")\");\n }\n if (dirty[0] & 1 && div3_aria_label_value !== (div3_aria_label_value = ctx2[0].skinTonesLabel)) {\n attr(div3, \"aria-label\", div3_aria_label_value);\n }\n if (dirty[0] & 1048576 && div3_aria_activedescendant_value !== (div3_aria_activedescendant_value = \"skintone-\" + ctx2[20])) {\n attr(div3, \"aria-activedescendant\", div3_aria_activedescendant_value);\n }\n if (dirty[0] & 64 && div3_aria_hidden_value !== (div3_aria_hidden_value = !ctx2[6])) {\n attr(div3, \"aria-hidden\", div3_aria_hidden_value);\n }\n if (dirty[0] & 12305 | dirty[1] & 1) {\n each_value_3 = ctx2[12];\n each_blocks_2 = update_keyed_each(each_blocks_2, dirty, get_key_1, 1, ctx2, each_value_3, each1_lookup, div5, destroy_block, create_each_block_3, null, get_each_context_3);\n }\n if (dirty[0] & 4096) {\n set_style(div5, \"grid-template-columns\", \"repeat(\" + ctx2[12].length + \", 1fr)\");\n }\n if (dirty[0] & 1 && div5_aria_label_value !== (div5_aria_label_value = ctx2[0].categoriesLabel)) {\n attr(div5, \"aria-label\", div5_aria_label_value);\n }\n if (dirty[0] & 16779264) {\n set_style(div6, \"transform\", \"translateX(\" + (ctx2[24] ? -1 : 1) * ctx2[11] * 100 + \"%)\");\n }\n if (dirty[0] & 262144)\n set_data(t4, ctx2[18]);\n if (dirty[0] & 262144 && div8_class_value !== (div8_class_value = \"message \" + (ctx2[18] ? \"\" : \"gone\"))) {\n attr(div8, \"class\", div8_class_value);\n }\n if (dirty[0] & 402694449) {\n each_value_1 = ctx2[15];\n each_blocks_1 = update_keyed_each(each_blocks_1, dirty, get_key_2, 1, ctx2, each_value_1, each2_lookup, div9, destroy_block, create_each_block_1, null, get_each_context_1);\n }\n if (dirty[0] & 278528 && div10_class_value !== (div10_class_value = \"tabpanel \" + (!ctx2[14] || ctx2[18] ? \"gone\" : \"\"))) {\n attr(div10, \"class\", div10_class_value);\n }\n if (dirty[0] & 16 && div10_role_value !== (div10_role_value = ctx2[4] ? \"region\" : \"tabpanel\")) {\n attr(div10, \"role\", div10_role_value);\n }\n if (dirty[0] & 8209 && div10_aria_label_value !== (div10_aria_label_value = ctx2[4] ? ctx2[0].searchResultsLabel : ctx2[0].categories[ctx2[13].name])) {\n attr(div10, \"aria-label\", div10_aria_label_value);\n }\n if (dirty[0] & 8208 && div10_id_value !== (div10_id_value = ctx2[4] ? \"\" : `tab-${ctx2[13].id}`)) {\n attr(div10, \"id\", div10_id_value);\n }\n if (dirty[0] & 402654464) {\n each_value = ctx2[10];\n each_blocks = update_keyed_each(each_blocks, dirty, get_key_3, 1, ctx2, each_value, each3_lookup, div11, destroy_block, create_each_block, null, get_each_context);\n }\n if (dirty[0] & 262144 && div11_class_value !== (div11_class_value = \"favorites emoji-menu \" + (ctx2[18] ? \"gone\" : \"\"))) {\n attr(div11, \"class\", div11_class_value);\n }\n if (dirty[0] & 1 && div11_aria_label_value !== (div11_aria_label_value = ctx2[0].favoritesLabel)) {\n attr(div11, \"aria-label\", div11_aria_label_value);\n }\n if (dirty[0] & 33554432) {\n set_style(div11, \"padding-inline-end\", ctx2[25] + \"px\");\n }\n if (dirty[0] & 1 && section_aria_label_value !== (section_aria_label_value = ctx2[0].regionLabel)) {\n attr(section, \"aria-label\", section_aria_label_value);\n }\n if (dirty[0] & 4194304) {\n attr(section, \"style\", ctx2[22]);\n }\n },\n i: noop,\n o: noop,\n d(detaching) {\n if (detaching)\n detach(section);\n for (let i = 0; i < each_blocks_3.length; i += 1) {\n each_blocks_3[i].d();\n }\n ctx[48](null);\n for (let i = 0; i < each_blocks_2.length; i += 1) {\n each_blocks_2[i].d();\n }\n for (let i = 0; i < each_blocks_1.length; i += 1) {\n each_blocks_1[i].d();\n }\n ctx[50](null);\n for (let i = 0; i < each_blocks.length; i += 1) {\n each_blocks[i].d();\n }\n ctx[51](null);\n ctx[52](null);\n mounted = false;\n run_all(dispose);\n }\n };\n}\nfunction instance($$self, $$props, $$invalidate) {\n let { skinToneEmoji } = $$props;\n let { i18n } = $$props;\n let { database } = $$props;\n let { customEmoji } = $$props;\n let { customCategorySorting } = $$props;\n let initialLoad = true;\n let currentEmojis = [];\n let currentEmojisWithCategories = [];\n let rawSearchText = \"\";\n let searchText = \"\";\n let rootElement;\n let baselineEmoji;\n let tabpanelElement;\n let searchMode = false;\n let activeSearchItem = -1;\n let message;\n let skinTonePickerExpanded = false;\n let skinTonePickerExpandedAfterAnimation = false;\n let skinToneDropdown;\n let currentSkinTone = 0;\n let activeSkinTone = 0;\n let skinToneButtonText;\n let pickerStyle;\n let skinToneButtonLabel = \"\";\n let skinTones = [];\n let currentFavorites = [];\n let defaultFavoriteEmojis;\n let numColumns = DEFAULT_NUM_COLUMNS;\n let isRtl = false;\n let scrollbarWidth = 0;\n let currentGroupIndex = 0;\n let groups$1 = groups;\n let currentGroup;\n let databaseLoaded = false;\n let activeSearchItemId;\n const focus = (id) => {\n rootElement.getRootNode().getElementById(id).focus();\n };\n const fireEvent = (name, detail) => {\n rootElement.dispatchEvent(new CustomEvent(name, { detail, bubbles: true, composed: true }));\n };\n const unicodeWithSkin = (emoji, currentSkinTone2) => currentSkinTone2 && emoji.skins && emoji.skins[currentSkinTone2] || emoji.unicode;\n const labelWithSkin = (emoji, currentSkinTone2) => uniq([\n emoji.name || unicodeWithSkin(emoji, currentSkinTone2),\n ...emoji.shortcodes || []\n ]).join(\", \");\n const isSkinToneOption = (element2) => /^skintone-/.test(element2.id);\n emojiSupportLevelPromise.then((level) => {\n if (!level) {\n $$invalidate(18, message = i18n.emojiUnsupportedMessage);\n }\n });\n function calculateEmojiGridStyle(node) {\n return calculateWidth(node, (width) => {\n {\n const style = getComputedStyle(rootElement);\n const newNumColumns = parseInt(style.getPropertyValue(\"--num-columns\"), 10);\n const newIsRtl = style.getPropertyValue(\"direction\") === \"rtl\";\n const parentWidth = node.parentElement.getBoundingClientRect().width;\n const newScrollbarWidth = parentWidth - width;\n $$invalidate(46, numColumns = newNumColumns);\n $$invalidate(25, scrollbarWidth = newScrollbarWidth);\n $$invalidate(24, isRtl = newIsRtl);\n }\n });\n }\n function checkZwjSupportAndUpdate(zwjEmojisToCheck) {\n const rootNode = rootElement.getRootNode();\n const emojiToDomNode = (emoji) => rootNode.getElementById(`emo-${emoji.id}`);\n checkZwjSupport(zwjEmojisToCheck, baselineEmoji, emojiToDomNode);\n $$invalidate(1, currentEmojis = currentEmojis);\n }\n function isZwjSupported(emoji) {\n return !emoji.unicode || !hasZwj(emoji) || supportedZwjEmojis.get(emoji.unicode);\n }\n async function filterEmojisByVersion(emojis) {\n const emojiSupportLevel = await emojiSupportLevelPromise;\n return emojis.filter(({ version: version2 }) => !version2 || version2 <= emojiSupportLevel);\n }\n async function summarizeEmojis(emojis) {\n return summarizeEmojisForUI(emojis, await emojiSupportLevelPromise);\n }\n async function getEmojisByGroup(group) {\n if (typeof group === \"undefined\") {\n return [];\n }\n const emoji = group === -1 ? customEmoji : await database.getEmojiByGroup(group);\n return summarizeEmojis(await filterEmojisByVersion(emoji));\n }\n async function getEmojisBySearchQuery(query) {\n return summarizeEmojis(await filterEmojisByVersion(await database.getEmojiBySearchQuery(query)));\n }\n function onSearchKeydown(event) {\n if (!searchMode || !currentEmojis.length) {\n return;\n }\n const goToNextOrPrevious = (previous) => {\n halt(event);\n $$invalidate(5, activeSearchItem = incrementOrDecrement(previous, activeSearchItem, currentEmojis));\n };\n switch (event.key) {\n case \"ArrowDown\":\n return goToNextOrPrevious(false);\n case \"ArrowUp\":\n return goToNextOrPrevious(true);\n case \"Enter\":\n if (activeSearchItem !== -1) {\n halt(event);\n return clickEmoji(currentEmojis[activeSearchItem].id);\n } else if (currentEmojis.length) {\n $$invalidate(5, activeSearchItem = 0);\n }\n }\n }\n function onNavClick(group) {\n $$invalidate(2, rawSearchText = \"\");\n $$invalidate(44, searchText = \"\");\n $$invalidate(5, activeSearchItem = -1);\n $$invalidate(11, currentGroupIndex = groups$1.findIndex((_) => _.id === group.id));\n }\n function onNavKeydown(event) {\n const { target, key } = event;\n const doFocus = (el) => {\n if (el) {\n halt(event);\n el.focus();\n }\n };\n switch (key) {\n case \"ArrowLeft\":\n return doFocus(target.previousSibling);\n case \"ArrowRight\":\n return doFocus(target.nextSibling);\n case \"Home\":\n return doFocus(target.parentElement.firstChild);\n case \"End\":\n return doFocus(target.parentElement.lastChild);\n }\n }\n async function clickEmoji(unicodeOrName) {\n const emoji = await database.getEmojiByUnicodeOrName(unicodeOrName);\n const emojiSummary = [...currentEmojis, ...currentFavorites].find((_) => _.id === unicodeOrName);\n const skinTonedUnicode = emojiSummary.unicode && unicodeWithSkin(emojiSummary, currentSkinTone);\n await database.incrementFavoriteEmojiCount(unicodeOrName);\n fireEvent(\"emoji-click\", {\n emoji,\n skinTone: currentSkinTone,\n ...skinTonedUnicode && { unicode: skinTonedUnicode },\n ...emojiSummary.name && { name: emojiSummary.name }\n });\n }\n async function onEmojiClick(event) {\n const { target } = event;\n if (!target.classList.contains(\"emoji\")) {\n return;\n }\n halt(event);\n const id = target.id.substring(4);\n clickEmoji(id);\n }\n async function onSkinToneOptionsClick(event) {\n const { target } = event;\n if (!isSkinToneOption(target)) {\n return;\n }\n halt(event);\n const skinTone = parseInt(target.id.slice(9), 10);\n $$invalidate(8, currentSkinTone = skinTone);\n $$invalidate(6, skinTonePickerExpanded = false);\n focus(\"skintone-button\");\n fireEvent(\"skin-tone-change\", { skinTone });\n database.setPreferredSkinTone(skinTone);\n }\n async function onClickSkinToneButton(event) {\n $$invalidate(6, skinTonePickerExpanded = !skinTonePickerExpanded);\n $$invalidate(20, activeSkinTone = currentSkinTone);\n if (skinTonePickerExpanded) {\n halt(event);\n rAF(() => focus(`skintone-${activeSkinTone}`));\n }\n }\n function onSkinToneOptionsKeydown(event) {\n if (!skinTonePickerExpanded) {\n return;\n }\n const changeActiveSkinTone = async (nextSkinTone) => {\n halt(event);\n $$invalidate(20, activeSkinTone = nextSkinTone);\n await tick();\n focus(`skintone-${activeSkinTone}`);\n };\n switch (event.key) {\n case \"ArrowUp\":\n return changeActiveSkinTone(incrementOrDecrement(true, activeSkinTone, skinTones));\n case \"ArrowDown\":\n return changeActiveSkinTone(incrementOrDecrement(false, activeSkinTone, skinTones));\n case \"Home\":\n return changeActiveSkinTone(0);\n case \"End\":\n return changeActiveSkinTone(skinTones.length - 1);\n case \"Enter\":\n return onSkinToneOptionsClick(event);\n case \"Escape\":\n halt(event);\n $$invalidate(6, skinTonePickerExpanded = false);\n return focus(\"skintone-button\");\n }\n }\n function onSkinToneOptionsKeyup(event) {\n if (!skinTonePickerExpanded) {\n return;\n }\n switch (event.key) {\n case \" \":\n return onSkinToneOptionsClick(event);\n }\n }\n async function onSkinToneOptionsFocusOut(event) {\n const { relatedTarget } = event;\n if (!relatedTarget || !isSkinToneOption(relatedTarget)) {\n $$invalidate(6, skinTonePickerExpanded = false);\n }\n }\n function input_input_handler() {\n rawSearchText = this.value;\n $$invalidate(2, rawSearchText);\n }\n function div3_binding($$value) {\n binding_callbacks[$$value ? \"unshift\" : \"push\"](() => {\n skinToneDropdown = $$value;\n $$invalidate(7, skinToneDropdown);\n });\n }\n const click_handler = (group) => onNavClick(group);\n function div10_binding($$value) {\n binding_callbacks[$$value ? \"unshift\" : \"push\"](() => {\n tabpanelElement = $$value;\n $$invalidate(3, tabpanelElement);\n });\n }\n function button1_binding($$value) {\n binding_callbacks[$$value ? \"unshift\" : \"push\"](() => {\n baselineEmoji = $$value;\n $$invalidate(17, baselineEmoji);\n });\n }\n function section_binding($$value) {\n binding_callbacks[$$value ? \"unshift\" : \"push\"](() => {\n rootElement = $$value;\n $$invalidate(16, rootElement);\n });\n }\n $$self.$$set = ($$props2) => {\n if (\"skinToneEmoji\" in $$props2)\n $$invalidate(40, skinToneEmoji = $$props2.skinToneEmoji);\n if (\"i18n\" in $$props2)\n $$invalidate(0, i18n = $$props2.i18n);\n if (\"database\" in $$props2)\n $$invalidate(39, database = $$props2.database);\n if (\"customEmoji\" in $$props2)\n $$invalidate(41, customEmoji = $$props2.customEmoji);\n if (\"customCategorySorting\" in $$props2)\n $$invalidate(42, customCategorySorting = $$props2.customCategorySorting);\n };\n $$self.$$.update = () => {\n if ($$self.$$.dirty[1] & 1280) {\n {\n if (customEmoji && database) {\n $$invalidate(39, database.customEmoji = customEmoji, database);\n }\n }\n }\n if ($$self.$$.dirty[0] & 1 | $$self.$$.dirty[1] & 256) {\n {\n async function handleDatabaseLoading() {\n let showingLoadingMessage = false;\n const timeoutHandle = setTimeout(\n () => {\n showingLoadingMessage = true;\n $$invalidate(18, message = i18n.loadingMessage);\n },\n TIMEOUT_BEFORE_LOADING_MESSAGE\n );\n try {\n await database.ready();\n $$invalidate(14, databaseLoaded = true);\n } catch (err) {\n console.error(err);\n $$invalidate(18, message = i18n.networkErrorMessage);\n } finally {\n clearTimeout(timeoutHandle);\n if (showingLoadingMessage) {\n showingLoadingMessage = false;\n $$invalidate(18, message = \"\");\n }\n }\n }\n if (database) {\n handleDatabaseLoading();\n }\n }\n }\n if ($$self.$$.dirty[0] & 6144 | $$self.$$.dirty[1] & 1024) {\n {\n if (customEmoji && customEmoji.length) {\n $$invalidate(12, groups$1 = [customGroup, ...groups]);\n } else if (groups$1 !== groups) {\n if (currentGroupIndex) {\n $$invalidate(11, currentGroupIndex--, currentGroupIndex);\n }\n $$invalidate(12, groups$1 = groups);\n }\n }\n }\n if ($$self.$$.dirty[0] & 4) {\n {\n rIC(() => {\n $$invalidate(44, searchText = (rawSearchText || \"\").trim());\n $$invalidate(5, activeSearchItem = -1);\n });\n }\n }\n if ($$self.$$.dirty[0] & 6144) {\n $$invalidate(13, currentGroup = groups$1[currentGroupIndex]);\n }\n if ($$self.$$.dirty[0] & 24576 | $$self.$$.dirty[1] & 8192) {\n {\n async function updateEmojis() {\n if (!databaseLoaded) {\n $$invalidate(1, currentEmojis = []);\n $$invalidate(4, searchMode = false);\n } else if (searchText.length >= MIN_SEARCH_TEXT_LENGTH) {\n const currentSearchText = searchText;\n const newEmojis = await getEmojisBySearchQuery(currentSearchText);\n if (currentSearchText === searchText) {\n $$invalidate(1, currentEmojis = newEmojis);\n $$invalidate(4, searchMode = true);\n }\n } else if (currentGroup) {\n const currentGroupId = currentGroup.id;\n const newEmojis = await getEmojisByGroup(currentGroupId);\n if (currentGroupId === currentGroup.id) {\n $$invalidate(1, currentEmojis = newEmojis);\n $$invalidate(4, searchMode = false);\n }\n }\n }\n updateEmojis();\n }\n }\n if ($$self.$$.dirty[0] & 4112) {\n $$invalidate(22, pickerStyle = `\n --font-family: ${FONT_FAMILY};\n --num-groups: ${groups$1.length}; \n --indicator-opacity: ${searchMode ? 0 : 1}; \n --num-skintones: ${NUM_SKIN_TONES};`);\n }\n if ($$self.$$.dirty[0] & 16384 | $$self.$$.dirty[1] & 256) {\n {\n async function updatePreferredSkinTone() {\n if (databaseLoaded) {\n $$invalidate(8, currentSkinTone = await database.getPreferredSkinTone());\n }\n }\n updatePreferredSkinTone();\n }\n }\n if ($$self.$$.dirty[1] & 512) {\n $$invalidate(9, skinTones = Array(NUM_SKIN_TONES).fill().map((_, i) => applySkinTone(skinToneEmoji, i)));\n }\n if ($$self.$$.dirty[0] & 768) {\n $$invalidate(21, skinToneButtonText = skinTones[currentSkinTone]);\n }\n if ($$self.$$.dirty[0] & 257) {\n $$invalidate(23, skinToneButtonLabel = i18n.skinToneLabel.replace(\"{skinTone}\", i18n.skinTones[currentSkinTone]));\n }\n if ($$self.$$.dirty[0] & 16384 | $$self.$$.dirty[1] & 256) {\n {\n async function updateDefaultFavoriteEmojis() {\n $$invalidate(45, defaultFavoriteEmojis = (await Promise.all(MOST_COMMONLY_USED_EMOJI.map((unicode) => database.getEmojiByUnicodeOrName(unicode)))).filter(Boolean));\n }\n if (databaseLoaded) {\n updateDefaultFavoriteEmojis();\n }\n }\n }\n if ($$self.$$.dirty[0] & 16384 | $$self.$$.dirty[1] & 49408) {\n {\n async function updateFavorites() {\n const dbFavorites = await database.getTopFavoriteEmoji(numColumns);\n const favorites = await summarizeEmojis(uniqBy([...dbFavorites, ...defaultFavoriteEmojis], (_) => _.unicode || _.name).slice(0, numColumns));\n $$invalidate(10, currentFavorites = favorites);\n }\n if (databaseLoaded && defaultFavoriteEmojis) {\n updateFavorites();\n }\n }\n }\n if ($$self.$$.dirty[0] & 10) {\n {\n const zwjEmojisToCheck = currentEmojis.filter((emoji) => emoji.unicode).filter((emoji) => hasZwj(emoji) && !supportedZwjEmojis.has(emoji.unicode));\n if (zwjEmojisToCheck.length) {\n rAF(() => checkZwjSupportAndUpdate(zwjEmojisToCheck));\n } else {\n $$invalidate(1, currentEmojis = currentEmojis.filter(isZwjSupported));\n rAF(() => {\n (tabpanelElement || {}).scrollTop = 0;\n });\n }\n }\n }\n if ($$self.$$.dirty[0] & 1026 | $$self.$$.dirty[1] & 4096)\n ;\n if ($$self.$$.dirty[0] & 18 | $$self.$$.dirty[1] & 2048) {\n {\n let calculateCurrentEmojisWithCategories = function() {\n if (searchMode) {\n return [{ category: \"\", emojis: currentEmojis }];\n }\n const categoriesToEmoji = /* @__PURE__ */ new Map();\n for (const emoji of currentEmojis) {\n const category = emoji.category || \"\";\n let emojis = categoriesToEmoji.get(category);\n if (!emojis) {\n emojis = [];\n categoriesToEmoji.set(category, emojis);\n }\n emojis.push(emoji);\n }\n return [...categoriesToEmoji.entries()].map(([category, emojis]) => ({ category, emojis })).sort((a, b) => customCategorySorting(a.category, b.category));\n };\n $$invalidate(15, currentEmojisWithCategories = calculateCurrentEmojisWithCategories());\n }\n }\n if ($$self.$$.dirty[0] & 34) {\n $$invalidate(26, activeSearchItemId = activeSearchItem !== -1 && currentEmojis[activeSearchItem].id);\n }\n if ($$self.$$.dirty[0] & 192) {\n {\n if (skinTonePickerExpanded) {\n skinToneDropdown.addEventListener(\n \"transitionend\",\n () => {\n $$invalidate(19, skinTonePickerExpandedAfterAnimation = true);\n },\n { once: true }\n );\n } else {\n $$invalidate(19, skinTonePickerExpandedAfterAnimation = false);\n }\n }\n }\n };\n return [\n i18n,\n currentEmojis,\n rawSearchText,\n tabpanelElement,\n searchMode,\n activeSearchItem,\n skinTonePickerExpanded,\n skinToneDropdown,\n currentSkinTone,\n skinTones,\n currentFavorites,\n currentGroupIndex,\n groups$1,\n currentGroup,\n databaseLoaded,\n currentEmojisWithCategories,\n rootElement,\n baselineEmoji,\n message,\n skinTonePickerExpandedAfterAnimation,\n activeSkinTone,\n skinToneButtonText,\n pickerStyle,\n skinToneButtonLabel,\n isRtl,\n scrollbarWidth,\n activeSearchItemId,\n unicodeWithSkin,\n labelWithSkin,\n calculateEmojiGridStyle,\n onSearchKeydown,\n onNavClick,\n onNavKeydown,\n onEmojiClick,\n onSkinToneOptionsClick,\n onClickSkinToneButton,\n onSkinToneOptionsKeydown,\n onSkinToneOptionsKeyup,\n onSkinToneOptionsFocusOut,\n database,\n skinToneEmoji,\n customEmoji,\n customCategorySorting,\n initialLoad,\n searchText,\n defaultFavoriteEmojis,\n numColumns,\n input_input_handler,\n div3_binding,\n click_handler,\n div10_binding,\n button1_binding,\n section_binding\n ];\n}\nclass Picker extends SvelteComponent {\n constructor(options2) {\n super();\n init(\n this,\n options2,\n instance,\n create_fragment,\n safe_not_equal,\n {\n skinToneEmoji: 40,\n i18n: 0,\n database: 39,\n customEmoji: 41,\n customCategorySorting: 42\n },\n null,\n [-1, -1, -1]\n );\n }\n}\nconst DEFAULT_DATA_SOURCE = \"https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json\";\nconst DEFAULT_LOCALE = \"en\";\nvar enI18n = {\n categoriesLabel: \"Categories\",\n emojiUnsupportedMessage: \"Your browser does not support color emoji.\",\n favoritesLabel: \"Favorites\",\n loadingMessage: \"Loading\\u2026\",\n networkErrorMessage: \"Could not load emoji.\",\n regionLabel: \"Emoji picker\",\n searchDescription: \"When search results are available, press up or down to select and enter to choose.\",\n searchLabel: \"Search\",\n searchResultsLabel: \"Search results\",\n skinToneDescription: \"When expanded, press up or down to select and enter to choose.\",\n skinToneLabel: \"Choose a skin tone (currently {skinTone})\",\n skinTonesLabel: \"Skin tones\",\n skinTones: [\n \"Default\",\n \"Light\",\n \"Medium-Light\",\n \"Medium\",\n \"Medium-Dark\",\n \"Dark\"\n ],\n categories: {\n custom: \"Custom\",\n \"smileys-emotion\": \"Smileys and emoticons\",\n \"people-body\": \"People and body\",\n \"animals-nature\": \"Animals and nature\",\n \"food-drink\": \"Food and drink\",\n \"travel-places\": \"Travel and places\",\n activities: \"Activities\",\n objects: \"Objects\",\n symbols: \"Symbols\",\n flags: \"Flags\"\n }\n};\nconst PROPS = [\n \"customEmoji\",\n \"customCategorySorting\",\n \"database\",\n \"dataSource\",\n \"i18n\",\n \"locale\",\n \"skinToneEmoji\"\n];\nclass PickerElement extends HTMLElement {\n constructor(props) {\n super();\n this.attachShadow({ mode: \"open\" });\n const style = document.createElement(\"style\");\n style.textContent = \":host{--emoji-size:1.375rem;--emoji-padding:0.5rem;--category-emoji-size:var(--emoji-size);--category-emoji-padding:var(--emoji-padding);--indicator-height:3px;--input-border-radius:0.5rem;--input-border-size:1px;--input-font-size:1rem;--input-line-height:1.5;--input-padding:0.25rem;--num-columns:8;--outline-size:2px;--border-size:1px;--skintone-border-radius:1rem;--category-font-size:1rem;display:flex;width:min-content;height:400px}:host,:host(.light){--background:#fff;--border-color:#e0e0e0;--indicator-color:#385ac1;--input-border-color:#999;--input-font-color:#111;--input-placeholder-color:#999;--outline-color:#999;--category-font-color:#111;--button-active-background:#e6e6e6;--button-hover-background:#d9d9d9}:host(.dark){--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}@media (prefers-color-scheme:dark){:host{--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}}:host([hidden]){display:none}button{margin:0;padding:0;border:0;background:0 0;box-shadow:none;-webkit-tap-highlight-color:transparent}button::-moz-focus-inner{border:0}input{padding:0;margin:0;line-height:1.15;font-family:inherit}input[type=search]{-webkit-appearance:none}:focus{outline:var(--outline-color) solid var(--outline-size);outline-offset:calc(-1*var(--outline-size))}:host([data-js-focus-visible]) :focus:not([data-focus-visible-added]){outline:0}:focus:not(:focus-visible){outline:0}.hide-focus{outline:0}*{box-sizing:border-box}.picker{contain:content;display:flex;flex-direction:column;background:var(--background);border:var(--border-size) solid var(--border-color);width:100%;height:100%;overflow:hidden;--total-emoji-size:calc(var(--emoji-size) + (2 * var(--emoji-padding)));--total-category-emoji-size:calc(var(--category-emoji-size) + (2 * var(--category-emoji-padding)))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.hidden{opacity:0;pointer-events:none}.abs-pos{position:absolute;left:0;top:0}.gone{display:none!important}.skintone-button-wrapper,.skintone-list{background:var(--background);z-index:3}.skintone-button-wrapper.expanded{z-index:1}.skintone-list{position:absolute;inset-inline-end:0;top:0;z-index:2;overflow:visible;border-bottom:var(--border-size) solid var(--border-color);border-radius:0 0 var(--skintone-border-radius) var(--skintone-border-radius);will-change:transform;transition:transform .2s ease-in-out;transform-origin:center 0}@media (prefers-reduced-motion:reduce){.skintone-list{transition-duration:.001s}}@supports not (inset-inline-end:0){.skintone-list{right:0}}.skintone-list.no-animate{transition:none}.tabpanel{overflow-y:auto;-webkit-overflow-scrolling:touch;will-change:transform;min-height:0;flex:1;contain:content}.emoji-menu{display:grid;grid-template-columns:repeat(var(--num-columns),var(--total-emoji-size));justify-content:space-around;align-items:flex-start;width:100%}.category{padding:var(--emoji-padding);font-size:var(--category-font-size);color:var(--category-font-color)}.custom-emoji,.emoji,button.emoji{height:var(--total-emoji-size);width:var(--total-emoji-size)}.emoji,button.emoji{font-size:var(--emoji-size);display:flex;align-items:center;justify-content:center;border-radius:100%;line-height:1;overflow:hidden;font-family:var(--font-family);cursor:pointer}@media (hover:hover) and (pointer:fine){.emoji:hover,button.emoji:hover{background:var(--button-hover-background)}}.emoji.active,.emoji:active,button.emoji.active,button.emoji:active{background:var(--button-active-background)}.custom-emoji{padding:var(--emoji-padding);object-fit:contain;pointer-events:none;background-repeat:no-repeat;background-position:center center;background-size:var(--emoji-size) var(--emoji-size)}.nav,.nav-button{align-items:center}.nav{display:grid;justify-content:space-between;contain:content}.nav-button{display:flex;justify-content:center}.nav-emoji{font-size:var(--category-emoji-size);width:var(--total-category-emoji-size);height:var(--total-category-emoji-size)}.indicator-wrapper{display:flex;border-bottom:1px solid var(--border-color)}.indicator{width:calc(100%/var(--num-groups));height:var(--indicator-height);opacity:var(--indicator-opacity);background-color:var(--indicator-color);will-change:transform,opacity;transition:opacity .1s linear,transform .25s ease-in-out}@media (prefers-reduced-motion:reduce){.indicator{will-change:opacity;transition:opacity .1s linear}}.pad-top,input.search{background:var(--background);width:100%}.pad-top{height:var(--emoji-padding);z-index:3}.search-row{display:flex;align-items:center;position:relative;padding-inline-start:var(--emoji-padding);padding-bottom:var(--emoji-padding)}.search-wrapper{flex:1;min-width:0}input.search{padding:var(--input-padding);border-radius:var(--input-border-radius);border:var(--input-border-size) solid var(--input-border-color);color:var(--input-font-color);font-size:var(--input-font-size);line-height:var(--input-line-height)}input.search::placeholder{color:var(--input-placeholder-color)}.favorites{display:flex;flex-direction:row;border-top:var(--border-size) solid var(--border-color);contain:content}.message{padding:var(--emoji-padding)}\";\n this.shadowRoot.appendChild(style);\n this._ctx = {\n locale: DEFAULT_LOCALE,\n dataSource: DEFAULT_DATA_SOURCE,\n skinToneEmoji: DEFAULT_SKIN_TONE_EMOJI,\n customCategorySorting: DEFAULT_CATEGORY_SORTING,\n customEmoji: null,\n i18n: enI18n,\n ...props\n };\n for (const prop of PROPS) {\n if (prop !== \"database\" && Object.prototype.hasOwnProperty.call(this, prop)) {\n this._ctx[prop] = this[prop];\n delete this[prop];\n }\n }\n this._dbFlush();\n }\n connectedCallback() {\n this._cmp = new Picker({\n target: this.shadowRoot,\n props: this._ctx\n });\n }\n disconnectedCallback() {\n this._cmp.$destroy();\n this._cmp = void 0;\n const { database } = this._ctx;\n if (database) {\n database.close().catch((err) => console.error(err));\n }\n }\n static get observedAttributes() {\n return [\"locale\", \"data-source\", \"skin-tone-emoji\"];\n }\n attributeChangedCallback(attrName, oldValue, newValue) {\n this._set(\n attrName.replace(/-([a-z])/g, (_, up) => up.toUpperCase()),\n newValue\n );\n }\n _set(prop, newValue) {\n this._ctx[prop] = newValue;\n if (this._cmp) {\n this._cmp.$set({ [prop]: newValue });\n }\n if ([\"locale\", \"dataSource\"].includes(prop)) {\n this._dbFlush();\n }\n }\n _dbCreate() {\n const { locale, dataSource, database } = this._ctx;\n if (!database || database.locale !== locale || database.dataSource !== dataSource) {\n this._set(\"database\", new Database({ locale, dataSource }));\n }\n }\n _dbFlush() {\n Promise.resolve().then(() => this._dbCreate());\n }\n}\nconst definitions = {};\nfor (const prop of PROPS) {\n definitions[prop] = {\n get() {\n if (prop === \"database\") {\n this._dbCreate();\n }\n return this._ctx[prop];\n },\n set(val) {\n if (prop === \"database\") {\n throw new Error(\"database is read-only\");\n }\n this._set(prop, val);\n }\n };\n}\nObject.defineProperties(PickerElement.prototype, definitions);\nif (!customElements.get(\"emoji-picker\")) {\n customElements.define(\"emoji-picker\", PickerElement);\n}\nfunction findParentBySelector(node, selector) {\n while (node && !node.querySelector(selector)) {\n node = node.parentNode;\n const element2 = node.querySelector(selector);\n if (element2)\n return element2;\n }\n return null;\n}\nconst _sfc_main$j = {\n name: \"EmojiPickerContainer\",\n components: {\n SvgIcon\n },\n props: {\n emojiOpened: { type: Boolean, default: false },\n emojiReaction: { type: Boolean, default: false },\n positionTop: { type: Boolean, default: false },\n positionRight: { type: Boolean, default: false },\n messageId: { type: String, default: \"\" },\n emojiDataSource: { type: String, default: void 0 }\n },\n emits: [\"add-emoji\", \"open-emoji\"],\n data() {\n return {\n emojiPickerHeight: 320,\n emojiPickerTop: 0,\n emojiPickerRight: \"\"\n };\n },\n watch: {\n emojiOpened(val) {\n if (val) {\n setTimeout(() => {\n this.addCustomStyling();\n this.$refs.emojiPicker.shadowRoot.addEventListener(\n \"emoji-click\",\n ({ detail }) => {\n this.$emit(\"add-emoji\", {\n unicode: detail.unicode\n });\n }\n );\n }, 0);\n }\n }\n },\n methods: {\n addCustomStyling() {\n const picker = `.picker {\n\t\t\t\tborder: none;\n\t\t\t}`;\n const nav = `.nav {\n\t\t\t\toverflow-x: auto;\n\t\t\t}`;\n const searchBox = `.search-wrapper {\n\t\t\t\tpadding-right: 2px;\n\t\t\t\tpadding-left: 2px;\n\t\t\t}`;\n const search = `input.search {\n\t\t\t\theight: 32px;\n\t\t\t\tfont-size: 14px;\n\t\t\t\tborder-radius: 10rem;\n\t\t\t\tborder: var(--chat-border-style);\n\t\t\t\tpadding: 5px 10px;\n\t\t\t\toutline: none;\n\t\t\t\tbackground: var(--chat-bg-color-input);\n\t\t\t\tcolor: var(--chat-color);\n\t\t\t}`;\n const style = document.createElement(\"style\");\n style.textContent = picker + nav + searchBox + search;\n this.$refs.emojiPicker.shadowRoot.appendChild(style);\n },\n openEmoji(ev) {\n this.$emit(\"open-emoji\", !this.emojiOpened);\n this.setEmojiPickerPosition(\n ev.clientY,\n ev.view.innerWidth,\n ev.view.innerHeight\n );\n },\n setEmojiPickerPosition(clientY, innerWidth, innerHeight) {\n const mobileSize = innerWidth < 500 || innerHeight < 700;\n const roomFooterRef = findParentBySelector(this.$el, \"#room-footer\");\n if (!roomFooterRef) {\n if (mobileSize)\n this.emojiPickerRight = \"-50px\";\n return;\n }\n if (mobileSize) {\n this.emojiPickerRight = innerWidth / 2 - (this.positionTop ? 200 : 150) + \"px\";\n this.emojiPickerTop = 100;\n this.emojiPickerHeight = innerHeight - 200;\n } else {\n const roomFooterTop = roomFooterRef.getBoundingClientRect().top;\n const pickerTopPosition = roomFooterTop - clientY > this.emojiPickerHeight - 50;\n if (pickerTopPosition)\n this.emojiPickerTop = clientY + 10;\n else\n this.emojiPickerTop = clientY - this.emojiPickerHeight - 10;\n this.emojiPickerRight = this.positionTop ? \"0px\" : this.positionRight ? \"60px\" : \"\";\n }\n }\n }\n};\nconst _hoisted_1$j = { class: \"vac-emoji-wrapper\" };\nfunction _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_svg_icon = resolveComponent(\"svg-icon\");\n const _component_emoji_picker = resolveComponent(\"emoji-picker\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$j, [\n createBaseVNode(\"div\", {\n class: normalizeClass([\"vac-svg-button\", { \"vac-emoji-reaction\": $props.emojiReaction }]),\n onClick: _cache[0] || (_cache[0] = (...args) => $options.openEmoji && $options.openEmoji(...args))\n }, [\n renderSlot(\n _ctx.$slots,\n $props.messageId ? \"emoji-picker-reaction-icon_\" + $props.messageId : \"emoji-picker-icon\",\n {},\n () => [\n createVNode(_component_svg_icon, {\n name: \"emoji\",\n param: $props.emojiReaction ? \"reaction\" : \"\"\n }, null, 8, [\"param\"])\n ]\n )\n ], 2),\n $props.emojiOpened ? (openBlock(), createBlock(Transition, {\n key: 0,\n name: \"vac-slide-up\",\n appear: \"\"\n }, {\n default: withCtx(() => [\n createBaseVNode(\"div\", {\n class: normalizeClass([\"vac-emoji-picker\", { \"vac-picker-reaction\": $props.emojiReaction }]),\n style: normalizeStyle({\n height: `${$data.emojiPickerHeight}px`,\n top: $props.positionTop ? $data.emojiPickerHeight : `${$data.emojiPickerTop}px`,\n right: $data.emojiPickerRight,\n display: $data.emojiPickerTop || !$props.emojiReaction ? \"initial\" : \"none\"\n })\n }, [\n $props.emojiOpened ? (openBlock(), createBlock(_component_emoji_picker, {\n key: 0,\n ref: \"emojiPicker\",\n \"data-source\": $props.emojiDataSource\n }, null, 8, [\"data-source\"])) : createCommentVNode(\"\", true)\n ], 6)\n ]),\n _: 1\n })) : createCommentVNode(\"\", true)\n ]);\n}\nvar EmojiPickerContainer = /* @__PURE__ */ _export_sfc(_sfc_main$j, [[\"render\", _sfc_render$j]]);\nconst _sfc_main$i = {\n name: \"RoomFiles\",\n components: {\n Loader,\n SvgIcon\n },\n props: {\n file: { type: Object, required: true },\n index: { type: Number, required: true }\n },\n emits: [\"remove-file\"],\n computed: {\n isImage() {\n return isImageFile(this.file);\n },\n isVideo() {\n return isVideoFile(this.file);\n }\n }\n};\nconst _hoisted_1$i = { class: \"vac-room-file-container\" };\nconst _hoisted_2$g = [\"src\"];\nconst _hoisted_3$d = { class: \"vac-text-ellipsis\" };\nconst _hoisted_4$c = {\n key: 0,\n class: \"vac-text-ellipsis vac-text-extension\"\n};\nfunction _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_loader = resolveComponent(\"loader\");\n const _component_svg_icon = resolveComponent(\"svg-icon\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$i, [\n createVNode(_component_loader, {\n show: $props.file.loading,\n type: \"room-file\"\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (idx, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"show\"]),\n createBaseVNode(\"div\", {\n class: \"vac-svg-button vac-icon-remove\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"remove-file\", $props.index))\n }, [\n renderSlot(_ctx.$slots, \"image-close-icon\", {}, () => [\n createVNode(_component_svg_icon, {\n name: \"close\",\n param: \"image\"\n })\n ])\n ]),\n $options.isImage ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([\"vac-message-image\", { \"vac-blur-loading\": $props.file.loading }]),\n style: normalizeStyle({\n \"background-image\": `url('${$props.file.localUrl || $props.file.url}')`\n })\n }, null, 6)) : $options.isVideo ? (openBlock(), createElementBlock(\"video\", {\n key: 1,\n controls: \"\",\n class: normalizeClass({ \"vac-blur-loading\": $props.file.loading })\n }, [\n createBaseVNode(\"source\", {\n src: $props.file.localUrl || $props.file.url\n }, null, 8, _hoisted_2$g)\n ], 2)) : (openBlock(), createElementBlock(\"div\", {\n key: 2,\n class: normalizeClass([\"vac-file-container\", { \"vac-blur-loading\": $props.file.loading }])\n }, [\n createBaseVNode(\"div\", null, [\n renderSlot(_ctx.$slots, \"file-icon\", {}, () => [\n createVNode(_component_svg_icon, { name: \"file\" })\n ])\n ]),\n createBaseVNode(\"div\", _hoisted_3$d, toDisplayString($props.file.name), 1),\n $props.file.extension ? (openBlock(), createElementBlock(\"div\", _hoisted_4$c, toDisplayString($props.file.extension), 1)) : createCommentVNode(\"\", true)\n ], 2))\n ]);\n}\nvar RoomFile = /* @__PURE__ */ _export_sfc(_sfc_main$i, [[\"render\", _sfc_render$i]]);\nconst _sfc_main$h = {\n name: \"RoomFiles\",\n components: {\n SvgIcon,\n RoomFile\n },\n props: {\n files: { type: Array, required: true }\n },\n emits: [\"remove-file\", \"reset-message\"],\n computed: {}\n};\nconst _hoisted_1$h = {\n key: 0,\n class: \"vac-room-files-container\"\n};\nconst _hoisted_2$f = { class: \"vac-files-box\" };\nconst _hoisted_3$c = { class: \"vac-icon-close\" };\nfunction _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_room_file = resolveComponent(\"room-file\");\n const _component_svg_icon = resolveComponent(\"svg-icon\");\n return openBlock(), createBlock(Transition, { name: \"vac-slide-up\" }, {\n default: withCtx(() => [\n $props.files.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$h, [\n createBaseVNode(\"div\", _hoisted_2$f, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($props.files, (file, i) => {\n return openBlock(), createElementBlock(\"div\", { key: i }, [\n createVNode(_component_room_file, {\n file,\n index: i,\n onRemoveFile: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"remove-file\", $event))\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (idx, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"file\", \"index\"])\n ]);\n }), 128))\n ]),\n createBaseVNode(\"div\", _hoisted_3$c, [\n createBaseVNode(\"div\", {\n class: \"vac-svg-button\",\n onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"reset-message\"))\n }, [\n renderSlot(_ctx.$slots, \"files-close-icon\", {}, () => [\n createVNode(_component_svg_icon, { name: \"close-outline\" })\n ])\n ])\n ])\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 3\n });\n}\nvar RoomFiles = /* @__PURE__ */ _export_sfc(_sfc_main$h, [[\"render\", _sfc_render$h]]);\nconst _sfc_main$g = {\n props: {\n percentage: { type: Number, default: 0 },\n messageSelectionEnabled: { type: Boolean, required: true }\n },\n emits: [\"hover-audio-progress\", \"change-linehead\"],\n data() {\n return {\n isMouseDown: false\n };\n },\n methods: {\n onMouseDown(ev) {\n if (this.messageSelectionEnabled)\n return;\n this.isMouseDown = true;\n const seekPos = this.calculateLineHeadPosition(ev, this.$refs.progress);\n this.$emit(\"change-linehead\", seekPos);\n document.addEventListener(\"mousemove\", this.onMouseMove);\n document.addEventListener(\"mouseup\", this.onMouseUp);\n },\n onMouseUp(ev) {\n if (this.messageSelectionEnabled)\n return;\n this.isMouseDown = false;\n document.removeEventListener(\"mouseup\", this.onMouseUp);\n document.removeEventListener(\"mousemove\", this.onMouseMove);\n const seekPos = this.calculateLineHeadPosition(ev, this.$refs.progress);\n this.$emit(\"change-linehead\", seekPos);\n },\n onMouseMove(ev) {\n if (this.messageSelectionEnabled)\n return;\n const seekPos = this.calculateLineHeadPosition(ev, this.$refs.progress);\n this.$emit(\"change-linehead\", seekPos);\n },\n calculateLineHeadPosition(ev, element2) {\n const progressWidth = element2.getBoundingClientRect().width;\n const leftPosition = element2.getBoundingClientRect().left;\n let pos = (ev.clientX - leftPosition) / progressWidth;\n pos = pos < 0 ? 0 : pos;\n pos = pos > 1 ? 1 : pos;\n return pos;\n }\n }\n};\nconst _hoisted_1$g = { class: \"vac-player-progress\" };\nconst _hoisted_2$e = { class: \"vac-line-container\" };\nfunction _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n ref: \"progress\",\n class: \"vac-player-bar\",\n onMousedown: _cache[0] || (_cache[0] = (...args) => $options.onMouseDown && $options.onMouseDown(...args)),\n onMouseover: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"hover-audio-progress\", true)),\n onMouseout: _cache[2] || (_cache[2] = ($event) => _ctx.$emit(\"hover-audio-progress\", false))\n }, [\n createBaseVNode(\"div\", _hoisted_1$g, [\n createBaseVNode(\"div\", _hoisted_2$e, [\n createBaseVNode(\"div\", {\n class: \"vac-line-progress\",\n style: normalizeStyle({ width: `${$props.percentage}%` })\n }, null, 4),\n createBaseVNode(\"div\", {\n class: normalizeClass([\"vac-line-dot\", { \"vac-line-dot__active\": $data.isMouseDown }]),\n style: normalizeStyle({ left: `${$props.percentage}%` })\n }, null, 6)\n ])\n ])\n ], 544);\n}\nvar AudioControl = /* @__PURE__ */ _export_sfc(_sfc_main$g, [[\"render\", _sfc_render$g]]);\nconst _sfc_main$f = {\n name: \"AudioPlayer\",\n components: {\n SvgIcon,\n AudioControl\n },\n props: {\n messageId: { type: [String, Number], default: null },\n src: { type: String, default: null },\n messageSelectionEnabled: { type: Boolean, required: true }\n },\n emits: [\"hover-audio-progress\", \"update-progress-time\"],\n data() {\n return {\n isPlaying: false,\n duration: this.convertTimeMMSS(0),\n playedTime: this.convertTimeMMSS(0),\n progress: 0\n };\n },\n computed: {\n playerUniqId() {\n return `audio-player${this.messageId}`;\n },\n audioSource() {\n if (this.src)\n return this.src;\n this.resetProgress();\n return null;\n }\n },\n mounted() {\n this.player = this.$el.querySelector(\"#\" + this.playerUniqId);\n this.player.addEventListener(\"ended\", () => {\n this.isPlaying = false;\n });\n this.player.addEventListener(\"loadeddata\", () => {\n this.resetProgress();\n this.duration = this.convertTimeMMSS(this.player.duration);\n this.updateProgressTime();\n });\n this.player.addEventListener(\"timeupdate\", this.onTimeUpdate);\n },\n methods: {\n convertTimeMMSS(seconds) {\n return new Date(seconds * 1e3).toISOString().substr(14, 5);\n },\n playback() {\n if (this.messageSelectionEnabled || !this.audioSource)\n return;\n if (this.isPlaying)\n this.player.pause();\n else\n setTimeout(() => this.player.play());\n this.isPlaying = !this.isPlaying;\n },\n resetProgress() {\n if (this.isPlaying)\n this.player.pause();\n this.duration = this.convertTimeMMSS(0);\n this.playedTime = this.convertTimeMMSS(0);\n this.progress = 0;\n this.isPlaying = false;\n this.updateProgressTime();\n },\n onTimeUpdate() {\n this.playedTime = this.convertTimeMMSS(this.player.currentTime);\n this.progress = this.player.currentTime / this.player.duration * 100;\n this.updateProgressTime();\n },\n onUpdateProgress(pos) {\n if (pos)\n this.player.currentTime = pos * this.player.duration;\n },\n updateProgressTime() {\n this.$emit(\n \"update-progress-time\",\n this.progress > 1 ? this.playedTime : this.duration\n );\n }\n }\n};\nconst _hoisted_1$f = { class: \"vac-audio-player\" };\nconst _hoisted_2$d = [\"id\", \"src\"];\nfunction _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_svg_icon = resolveComponent(\"svg-icon\");\n const _component_audio_control = resolveComponent(\"audio-control\");\n return openBlock(), createElementBlock(\"div\", null, [\n createBaseVNode(\"div\", _hoisted_1$f, [\n createBaseVNode(\"div\", {\n class: \"vac-svg-button\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.playback && $options.playback(...args))\n }, [\n $data.isPlaying ? renderSlot(_ctx.$slots, \"audio-pause-icon_\" + $props.messageId, { key: 0 }, () => [\n createVNode(_component_svg_icon, { name: \"audio-pause\" })\n ]) : renderSlot(_ctx.$slots, \"audio-play-icon_\" + $props.messageId, { key: 1 }, () => [\n createVNode(_component_svg_icon, { name: \"audio-play\" })\n ])\n ]),\n createVNode(_component_audio_control, {\n percentage: $data.progress,\n \"message-selection-enabled\": $props.messageSelectionEnabled,\n onChangeLinehead: $options.onUpdateProgress,\n onHoverAudioProgress: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"hover-audio-progress\", $event))\n }, null, 8, [\"percentage\", \"message-selection-enabled\", \"onChangeLinehead\"]),\n createBaseVNode(\"audio\", {\n id: $options.playerUniqId,\n src: $options.audioSource\n }, null, 8, _hoisted_2$d)\n ])\n ]);\n}\nvar AudioPlayer = /* @__PURE__ */ _export_sfc(_sfc_main$f, [[\"render\", _sfc_render$f]]);\nconst _sfc_main$e = {\n name: \"RoomMessageReply\",\n components: {\n SvgIcon,\n FormatMessage,\n AudioPlayer\n },\n props: {\n room: { type: Object, required: true },\n messageReply: { type: Object, default: null },\n textFormatting: { type: Object, required: true },\n linkOptions: { type: Object, required: true }\n },\n emits: [\"reset-message\"],\n computed: {\n firstFile() {\n var _a, _b;\n return ((_b = (_a = this.messageReply) == null ? void 0 : _a.files) == null ? void 0 : _b.length) ? this.messageReply.files[0] : {};\n },\n isImage() {\n return isImageFile(this.firstFile);\n },\n isVideo() {\n return isVideoFile(this.firstFile);\n },\n isAudio() {\n return isAudioFile(this.firstFile);\n },\n isOtherFile() {\n var _a, _b;\n return ((_b = (_a = this.messageReply) == null ? void 0 : _a.files) == null ? void 0 : _b.length) && !this.isAudio && !this.isVideo && !this.isImage;\n }\n }\n};\nconst _hoisted_1$e = {\n key: 0,\n class: \"vac-reply-container\"\n};\nconst _hoisted_2$c = { class: \"vac-reply-box\" };\nconst _hoisted_3$b = { class: \"vac-reply-info\" };\nconst _hoisted_4$b = { class: \"vac-reply-username\" };\nconst _hoisted_5$8 = { class: \"vac-reply-content\" };\nconst _hoisted_6$4 = [\"src\"];\nconst _hoisted_7$4 = {\n key: 1,\n controls: \"\",\n class: \"vac-image-reply\"\n};\nconst _hoisted_8$2 = [\"src\"];\nconst _hoisted_9$2 = {\n key: 3,\n class: \"vac-image-reply vac-file-container\"\n};\nconst _hoisted_10$2 = { class: \"vac-text-ellipsis\" };\nconst _hoisted_11$1 = {\n key: 0,\n class: \"vac-text-ellipsis vac-text-extension\"\n};\nconst _hoisted_12$1 = { class: \"vac-icon-reply\" };\nfunction _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_format_message = resolveComponent(\"format-message\");\n const _component_audio_player = resolveComponent(\"audio-player\");\n const _component_svg_icon = resolveComponent(\"svg-icon\");\n return openBlock(), createBlock(Transition, { name: \"vac-slide-up\" }, {\n default: withCtx(() => [\n $props.messageReply ? (openBlock(), createElementBlock(\"div\", _hoisted_1$e, [\n createBaseVNode(\"div\", _hoisted_2$c, [\n createBaseVNode(\"div\", _hoisted_3$b, [\n createBaseVNode(\"div\", _hoisted_4$b, toDisplayString($props.messageReply.username), 1),\n createBaseVNode(\"div\", _hoisted_5$8, [\n createVNode(_component_format_message, {\n \"message-id\": $props.messageReply._id,\n content: $props.messageReply.content,\n users: $props.room.users,\n \"text-formatting\": $props.textFormatting,\n \"link-options\": $props.linkOptions,\n reply: true\n }, null, 8, [\"message-id\", \"content\", \"users\", \"text-formatting\", \"link-options\"])\n ])\n ]),\n $options.isImage ? (openBlock(), createElementBlock(\"img\", {\n key: 0,\n src: $options.firstFile.url,\n class: \"vac-image-reply\"\n }, null, 8, _hoisted_6$4)) : $options.isVideo ? (openBlock(), createElementBlock(\"video\", _hoisted_7$4, [\n createBaseVNode(\"source\", {\n src: $options.firstFile.url\n }, null, 8, _hoisted_8$2)\n ])) : $options.isAudio ? (openBlock(), createBlock(_component_audio_player, {\n key: 2,\n src: $options.firstFile.url,\n \"message-selection-enabled\": false,\n class: \"vac-audio-reply\"\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (idx, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"src\"])) : $options.isOtherFile ? (openBlock(), createElementBlock(\"div\", _hoisted_9$2, [\n createBaseVNode(\"div\", null, [\n renderSlot(_ctx.$slots, \"file-icon\", {}, () => [\n createVNode(_component_svg_icon, { name: \"file\" })\n ])\n ]),\n createBaseVNode(\"div\", _hoisted_10$2, toDisplayString($options.firstFile.name), 1),\n $options.firstFile.extension ? (openBlock(), createElementBlock(\"div\", _hoisted_11$1, toDisplayString($options.firstFile.extension), 1)) : createCommentVNode(\"\", true)\n ])) : createCommentVNode(\"\", true)\n ]),\n createBaseVNode(\"div\", _hoisted_12$1, [\n createBaseVNode(\"div\", {\n class: \"vac-svg-button\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"reset-message\"))\n }, [\n renderSlot(_ctx.$slots, \"reply-close-icon\", {}, () => [\n createVNode(_component_svg_icon, { name: \"close-outline\" })\n ])\n ])\n ])\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 3\n });\n}\nvar RoomMessageReply = /* @__PURE__ */ _export_sfc(_sfc_main$e, [[\"render\", _sfc_render$e]]);\nconst _sfc_main$d = {\n name: \"RoomUsersTag\",\n props: {\n filteredUsersTag: { type: Array, required: true },\n selectItem: { type: Boolean, default: null },\n activeUpOrDown: { type: Number, default: null }\n },\n emits: [\"select-user-tag\", \"activate-item\"],\n data() {\n return {\n activeItem: null\n };\n },\n watch: {\n filteredUsersTag(val, oldVal) {\n if (!oldVal.length || val.length !== oldVal.length) {\n this.activeItem = 0;\n }\n },\n selectItem(val) {\n if (val) {\n this.$emit(\"select-user-tag\", this.filteredUsersTag[this.activeItem]);\n }\n },\n activeUpOrDown() {\n if (this.activeUpOrDown > 0 && this.activeItem < this.filteredUsersTag.length - 1) {\n this.activeItem++;\n } else if (this.activeUpOrDown < 0 && this.activeItem > 0) {\n this.activeItem--;\n }\n this.$emit(\"activate-item\");\n }\n }\n};\nconst _hoisted_1$d = {\n key: 0,\n class: \"vac-tags-container\"\n};\nconst _hoisted_2$b = [\"onMouseover\", \"onClick\"];\nconst _hoisted_3$a = { class: \"vac-tags-info\" };\nconst _hoisted_4$a = { class: \"vac-tags-username\" };\nfunction _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createBlock(Transition, { name: \"vac-slide-up\" }, {\n default: withCtx(() => [\n $props.filteredUsersTag.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$d, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($props.filteredUsersTag, (user, index) => {\n return openBlock(), createElementBlock(\"div\", {\n key: user._id,\n class: normalizeClass([\"vac-tags-box\", { \"vac-tags-box-active\": index === $data.activeItem }]),\n onMouseover: ($event) => $data.activeItem = index,\n onClick: ($event) => _ctx.$emit(\"select-user-tag\", user)\n }, [\n createBaseVNode(\"div\", _hoisted_3$a, [\n user.avatar ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: \"vac-avatar vac-tags-avatar\",\n style: normalizeStyle({ \"background-image\": `url('${user.avatar}')` })\n }, null, 4)) : createCommentVNode(\"\", true),\n createBaseVNode(\"div\", _hoisted_4$a, toDisplayString(user.username), 1)\n ])\n ], 42, _hoisted_2$b);\n }), 128))\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 1\n });\n}\nvar RoomUsersTag = /* @__PURE__ */ _export_sfc(_sfc_main$d, [[\"render\", _sfc_render$d]]);\nconst _sfc_main$c = {\n name: \"RoomEmojis\",\n props: {\n filteredEmojis: { type: Array, required: true },\n selectItem: { type: Boolean, default: null },\n activeUpOrDown: { type: Number, default: null }\n },\n emits: [\"select-emoji\", \"activate-item\"],\n data() {\n return {\n activeItem: null\n };\n },\n watch: {\n filteredEmojis(val, oldVal) {\n if (!oldVal.length || val.length !== oldVal.length) {\n this.activeItem = 0;\n }\n },\n selectItem(val) {\n if (val) {\n this.$emit(\"select-emoji\", this.filteredEmojis[this.activeItem]);\n }\n },\n activeUpOrDown() {\n if (this.activeUpOrDown > 0 && this.activeItem < this.filteredEmojis.length - 1) {\n this.activeItem++;\n } else if (this.activeUpOrDown < 0 && this.activeItem > 0) {\n this.activeItem--;\n }\n this.$emit(\"activate-item\");\n }\n }\n};\nconst _hoisted_1$c = {\n key: 0,\n class: \"vac-emojis-container\"\n};\nconst _hoisted_2$a = [\"onMouseover\", \"onClick\"];\nfunction _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createBlock(Transition, { name: \"vac-slide-up\" }, {\n default: withCtx(() => [\n $props.filteredEmojis.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$c, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($props.filteredEmojis, (emoji, index) => {\n return openBlock(), createElementBlock(\"div\", {\n key: emoji,\n class: normalizeClass([\"vac-emoji-element\", { \"vac-emoji-element-active\": index === $data.activeItem }]),\n onMouseover: ($event) => $data.activeItem = index,\n onClick: ($event) => _ctx.$emit(\"select-emoji\", emoji)\n }, toDisplayString(emoji), 43, _hoisted_2$a);\n }), 128))\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 1\n });\n}\nvar RoomEmojis = /* @__PURE__ */ _export_sfc(_sfc_main$c, [[\"render\", _sfc_render$c]]);\nconst _sfc_main$b = {\n name: \"RoomTemplatesText\",\n props: {\n filteredTemplatesText: { type: Array, required: true },\n selectItem: { type: Boolean, default: null },\n activeUpOrDown: { type: Number, default: null }\n },\n emits: [\"select-template-text\", \"activate-item\"],\n data() {\n return {\n activeItem: null\n };\n },\n watch: {\n filteredTemplatesText(val, oldVal) {\n if (!oldVal.length || val.length !== oldVal.length) {\n this.activeItem = 0;\n }\n },\n selectItem(val) {\n if (val) {\n this.$emit(\n \"select-template-text\",\n this.filteredTemplatesText[this.activeItem]\n );\n }\n },\n activeUpOrDown() {\n if (this.activeUpOrDown > 0 && this.activeItem < this.filteredTemplatesText.length - 1) {\n this.activeItem++;\n } else if (this.activeUpOrDown < 0 && this.activeItem > 0) {\n this.activeItem--;\n }\n this.$emit(\"activate-item\");\n }\n }\n};\nconst _hoisted_1$b = {\n key: 0,\n class: \"vac-template-container vac-app-box-shadow\"\n};\nconst _hoisted_2$9 = [\"onMouseover\", \"onClick\"];\nconst _hoisted_3$9 = { class: \"vac-template-info\" };\nconst _hoisted_4$9 = { class: \"vac-template-tag\" };\nconst _hoisted_5$7 = { class: \"vac-template-text\" };\nfunction _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createBlock(Transition, { name: \"vac-slide-up\" }, {\n default: withCtx(() => [\n $props.filteredTemplatesText.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$b, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($props.filteredTemplatesText, (template, index) => {\n return openBlock(), createElementBlock(\"div\", {\n key: index,\n class: normalizeClass([\"vac-template-box\", { \"vac-template-active\": index === $data.activeItem }]),\n onMouseover: ($event) => $data.activeItem = index,\n onClick: ($event) => _ctx.$emit(\"select-template-text\", template)\n }, [\n createBaseVNode(\"div\", _hoisted_3$9, [\n createBaseVNode(\"div\", _hoisted_4$9, \" /\" + toDisplayString(template.tag), 1),\n createBaseVNode(\"div\", _hoisted_5$7, toDisplayString(template.text), 1)\n ])\n ], 42, _hoisted_2$9);\n }), 128))\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 1\n });\n}\nvar RoomTemplatesText = /* @__PURE__ */ _export_sfc(_sfc_main$b, [[\"render\", _sfc_render$b]]);\nfunction new_byte$4(count) {\n return new Int8Array(count);\n}\nfunction new_short(count) {\n return new Int16Array(count);\n}\nfunction new_int$d(count) {\n return new Int32Array(count);\n}\nfunction new_float$f(count) {\n return new Float32Array(count);\n}\nfunction new_double$1(count) {\n return new Float64Array(count);\n}\nfunction new_float_n$6(args) {\n if (args.length == 1) {\n return new_float$f(args[0]);\n }\n var sz = args[0];\n args = args.slice(1);\n var A = [];\n for (var i = 0; i < sz; i++) {\n A.push(new_float_n$6(args));\n }\n return A;\n}\nfunction new_int_n$2(args) {\n if (args.length == 1) {\n return new_int$d(args[0]);\n }\n var sz = args[0];\n args = args.slice(1);\n var A = [];\n for (var i = 0; i < sz; i++) {\n A.push(new_int_n$2(args));\n }\n return A;\n}\nfunction new_short_n$1(args) {\n if (args.length == 1) {\n return new_short(args[0]);\n }\n var sz = args[0];\n args = args.slice(1);\n var A = [];\n for (var i = 0; i < sz; i++) {\n A.push(new_short_n$1(args));\n }\n return A;\n}\nfunction new_array_n$1(args) {\n if (args.length == 1) {\n return new Array(args[0]);\n }\n var sz = args[0];\n args = args.slice(1);\n var A = [];\n for (var i = 0; i < sz; i++) {\n A.push(new_array_n$1(args));\n }\n return A;\n}\nvar Arrays$7 = {};\nArrays$7.fill = function(a, fromIndex, toIndex, val) {\n if (arguments.length == 2) {\n for (var i = 0; i < a.length; i++) {\n a[i] = arguments[1];\n }\n } else {\n for (var i = fromIndex; i < toIndex; i++) {\n a[i] = val;\n }\n }\n};\nvar System$a = {};\nSystem$a.arraycopy = function(src, srcPos, dest, destPos, length) {\n var srcEnd = srcPos + length;\n while (srcPos < srcEnd)\n dest[destPos++] = src[srcPos++];\n};\nSystem$a.out = {};\nSystem$a.out.println = function(message) {\n console.log(message);\n};\nSystem$a.out.printf = function() {\n console.log.apply(console, arguments);\n};\nvar Util$5 = {};\nUtil$5.SQRT2 = 1.4142135623730951;\nUtil$5.FAST_LOG10 = function(x) {\n return Math.log10(x);\n};\nUtil$5.FAST_LOG10_X = function(x, y) {\n return Math.log10(x) * y;\n};\nfunction ShortBlock$3(ordinal) {\n this.ordinal = ordinal;\n}\nShortBlock$3.short_block_allowed = new ShortBlock$3(0);\nShortBlock$3.short_block_coupled = new ShortBlock$3(1);\nShortBlock$3.short_block_dispensed = new ShortBlock$3(2);\nShortBlock$3.short_block_forced = new ShortBlock$3(3);\nvar Float$2 = {};\nFloat$2.MAX_VALUE = 34028235e31;\nfunction VbrMode$7(ordinal) {\n this.ordinal = ordinal;\n}\nVbrMode$7.vbr_off = new VbrMode$7(0);\nVbrMode$7.vbr_mt = new VbrMode$7(1);\nVbrMode$7.vbr_rh = new VbrMode$7(2);\nVbrMode$7.vbr_abr = new VbrMode$7(3);\nVbrMode$7.vbr_mtrh = new VbrMode$7(4);\nVbrMode$7.vbr_default = VbrMode$7.vbr_mtrh;\nvar assert$b = function(x) {\n};\nvar common = {\n System: System$a,\n VbrMode: VbrMode$7,\n Float: Float$2,\n ShortBlock: ShortBlock$3,\n Util: Util$5,\n Arrays: Arrays$7,\n new_array_n: new_array_n$1,\n new_byte: new_byte$4,\n new_double: new_double$1,\n new_float: new_float$f,\n new_float_n: new_float_n$6,\n new_int: new_int$d,\n new_int_n: new_int_n$2,\n new_short,\n new_short_n: new_short_n$1,\n assert: assert$b\n};\nvar System$9 = common.System;\nvar Util$4 = common.Util;\nvar Arrays$6 = common.Arrays;\nvar new_float$e = common.new_float;\nfunction NewMDCT() {\n var enwindow = [\n -477e-9 * 0.740951125354959 / 2384e-9,\n 103951e-9 * 0.740951125354959 / 2384e-9,\n 953674e-9 * 0.740951125354959 / 2384e-9,\n 2841473e-9 * 0.740951125354959 / 2384e-9,\n 0.035758972 * 0.740951125354959 / 2384e-9,\n 3401756e-9 * 0.740951125354959 / 2384e-9,\n 983715e-9 * 0.740951125354959 / 2384e-9,\n 99182e-9 * 0.740951125354959 / 2384e-9,\n 12398e-9 * 0.740951125354959 / 2384e-9,\n 191212e-9 * 0.740951125354959 / 2384e-9,\n 2283096e-9 * 0.740951125354959 / 2384e-9,\n 0.016994476 * 0.740951125354959 / 2384e-9,\n -0.018756866 * 0.740951125354959 / 2384e-9,\n -2630711e-9 * 0.740951125354959 / 2384e-9,\n -247478e-9 * 0.740951125354959 / 2384e-9,\n -14782e-9 * 0.740951125354959 / 2384e-9,\n 0.9063471690191471,\n 0.1960342806591213,\n -477e-9 * 0.773010453362737 / 2384e-9,\n 105858e-9 * 0.773010453362737 / 2384e-9,\n 930786e-9 * 0.773010453362737 / 2384e-9,\n 2521515e-9 * 0.773010453362737 / 2384e-9,\n 0.035694122 * 0.773010453362737 / 2384e-9,\n 3643036e-9 * 0.773010453362737 / 2384e-9,\n 991821e-9 * 0.773010453362737 / 2384e-9,\n 96321e-9 * 0.773010453362737 / 2384e-9,\n 11444e-9 * 0.773010453362737 / 2384e-9,\n 165462e-9 * 0.773010453362737 / 2384e-9,\n 2110004e-9 * 0.773010453362737 / 2384e-9,\n 0.016112804 * 0.773010453362737 / 2384e-9,\n -0.019634247 * 0.773010453362737 / 2384e-9,\n -2803326e-9 * 0.773010453362737 / 2384e-9,\n -277042e-9 * 0.773010453362737 / 2384e-9,\n -16689e-9 * 0.773010453362737 / 2384e-9,\n 0.8206787908286602,\n 0.3901806440322567,\n -477e-9 * 0.803207531480645 / 2384e-9,\n 107288e-9 * 0.803207531480645 / 2384e-9,\n 902653e-9 * 0.803207531480645 / 2384e-9,\n 2174854e-9 * 0.803207531480645 / 2384e-9,\n 0.035586357 * 0.803207531480645 / 2384e-9,\n 3858566e-9 * 0.803207531480645 / 2384e-9,\n 995159e-9 * 0.803207531480645 / 2384e-9,\n 9346e-8 * 0.803207531480645 / 2384e-9,\n 10014e-9 * 0.803207531480645 / 2384e-9,\n 14019e-8 * 0.803207531480645 / 2384e-9,\n 1937389e-9 * 0.803207531480645 / 2384e-9,\n 0.015233517 * 0.803207531480645 / 2384e-9,\n -0.020506859 * 0.803207531480645 / 2384e-9,\n -2974033e-9 * 0.803207531480645 / 2384e-9,\n -30756e-8 * 0.803207531480645 / 2384e-9,\n -1812e-8 * 0.803207531480645 / 2384e-9,\n 0.7416505462720353,\n 0.5805693545089249,\n -477e-9 * 0.831469612302545 / 2384e-9,\n 108242e-9 * 0.831469612302545 / 2384e-9,\n 868797e-9 * 0.831469612302545 / 2384e-9,\n 1800537e-9 * 0.831469612302545 / 2384e-9,\n 0.0354352 * 0.831469612302545 / 2384e-9,\n 4049301e-9 * 0.831469612302545 / 2384e-9,\n 994205e-9 * 0.831469612302545 / 2384e-9,\n 90599e-9 * 0.831469612302545 / 2384e-9,\n 906e-8 * 0.831469612302545 / 2384e-9,\n 116348e-9 * 0.831469612302545 / 2384e-9,\n 1766682e-9 * 0.831469612302545 / 2384e-9,\n 0.014358521 * 0.831469612302545 / 2384e-9,\n -0.021372318 * 0.831469612302545 / 2384e-9,\n -314188e-8 * 0.831469612302545 / 2384e-9,\n -339031e-9 * 0.831469612302545 / 2384e-9,\n -1955e-8 * 0.831469612302545 / 2384e-9,\n 0.6681786379192989,\n 0.7653668647301797,\n -477e-9 * 0.857728610000272 / 2384e-9,\n 108719e-9 * 0.857728610000272 / 2384e-9,\n 82922e-8 * 0.857728610000272 / 2384e-9,\n 1399517e-9 * 0.857728610000272 / 2384e-9,\n 0.035242081 * 0.857728610000272 / 2384e-9,\n 421524e-8 * 0.857728610000272 / 2384e-9,\n 989437e-9 * 0.857728610000272 / 2384e-9,\n 87261e-9 * 0.857728610000272 / 2384e-9,\n 8106e-9 * 0.857728610000272 / 2384e-9,\n 93937e-9 * 0.857728610000272 / 2384e-9,\n 1597881e-9 * 0.857728610000272 / 2384e-9,\n 0.013489246 * 0.857728610000272 / 2384e-9,\n -0.022228718 * 0.857728610000272 / 2384e-9,\n -3306866e-9 * 0.857728610000272 / 2384e-9,\n -371456e-9 * 0.857728610000272 / 2384e-9,\n -21458e-9 * 0.857728610000272 / 2384e-9,\n 0.5993769336819237,\n 0.9427934736519954,\n -477e-9 * 0.881921264348355 / 2384e-9,\n 108719e-9 * 0.881921264348355 / 2384e-9,\n 78392e-8 * 0.881921264348355 / 2384e-9,\n 971317e-9 * 0.881921264348355 / 2384e-9,\n 0.035007 * 0.881921264348355 / 2384e-9,\n 4357815e-9 * 0.881921264348355 / 2384e-9,\n 980854e-9 * 0.881921264348355 / 2384e-9,\n 83923e-9 * 0.881921264348355 / 2384e-9,\n 7629e-9 * 0.881921264348355 / 2384e-9,\n 72956e-9 * 0.881921264348355 / 2384e-9,\n 1432419e-9 * 0.881921264348355 / 2384e-9,\n 0.012627602 * 0.881921264348355 / 2384e-9,\n -0.02307415 * 0.881921264348355 / 2384e-9,\n -3467083e-9 * 0.881921264348355 / 2384e-9,\n -404358e-9 * 0.881921264348355 / 2384e-9,\n -23365e-9 * 0.881921264348355 / 2384e-9,\n 0.5345111359507916,\n 1.111140466039205,\n -954e-9 * 0.903989293123443 / 2384e-9,\n 108242e-9 * 0.903989293123443 / 2384e-9,\n 731945e-9 * 0.903989293123443 / 2384e-9,\n 515938e-9 * 0.903989293123443 / 2384e-9,\n 0.034730434 * 0.903989293123443 / 2384e-9,\n 4477024e-9 * 0.903989293123443 / 2384e-9,\n 968933e-9 * 0.903989293123443 / 2384e-9,\n 80585e-9 * 0.903989293123443 / 2384e-9,\n 6676e-9 * 0.903989293123443 / 2384e-9,\n 52929e-9 * 0.903989293123443 / 2384e-9,\n 1269817e-9 * 0.903989293123443 / 2384e-9,\n 0.011775017 * 0.903989293123443 / 2384e-9,\n -0.023907185 * 0.903989293123443 / 2384e-9,\n -3622532e-9 * 0.903989293123443 / 2384e-9,\n -438213e-9 * 0.903989293123443 / 2384e-9,\n -25272e-9 * 0.903989293123443 / 2384e-9,\n 0.4729647758913199,\n 1.268786568327291,\n -954e-9 * 0.9238795325112867 / 2384e-9,\n 106812e-9 * 0.9238795325112867 / 2384e-9,\n 674248e-9 * 0.9238795325112867 / 2384e-9,\n 33379e-9 * 0.9238795325112867 / 2384e-9,\n 0.034412861 * 0.9238795325112867 / 2384e-9,\n 4573822e-9 * 0.9238795325112867 / 2384e-9,\n 954151e-9 * 0.9238795325112867 / 2384e-9,\n 76771e-9 * 0.9238795325112867 / 2384e-9,\n 6199e-9 * 0.9238795325112867 / 2384e-9,\n 34332e-9 * 0.9238795325112867 / 2384e-9,\n 1111031e-9 * 0.9238795325112867 / 2384e-9,\n 0.010933399 * 0.9238795325112867 / 2384e-9,\n -0.024725437 * 0.9238795325112867 / 2384e-9,\n -3771782e-9 * 0.9238795325112867 / 2384e-9,\n -472546e-9 * 0.9238795325112867 / 2384e-9,\n -27657e-9 * 0.9238795325112867 / 2384e-9,\n 0.41421356237309503,\n 1.414213562373095,\n -954e-9 * 0.941544065183021 / 2384e-9,\n 105381e-9 * 0.941544065183021 / 2384e-9,\n 610352e-9 * 0.941544065183021 / 2384e-9,\n -475883e-9 * 0.941544065183021 / 2384e-9,\n 0.03405571 * 0.941544065183021 / 2384e-9,\n 4649162e-9 * 0.941544065183021 / 2384e-9,\n 935555e-9 * 0.941544065183021 / 2384e-9,\n 73433e-9 * 0.941544065183021 / 2384e-9,\n 5245e-9 * 0.941544065183021 / 2384e-9,\n 17166e-9 * 0.941544065183021 / 2384e-9,\n 956535e-9 * 0.941544065183021 / 2384e-9,\n 0.010103703 * 0.941544065183021 / 2384e-9,\n -0.025527 * 0.941544065183021 / 2384e-9,\n -3914356e-9 * 0.941544065183021 / 2384e-9,\n -507355e-9 * 0.941544065183021 / 2384e-9,\n -30041e-9 * 0.941544065183021 / 2384e-9,\n 0.3578057213145241,\n 1.546020906725474,\n -954e-9 * 0.956940335732209 / 2384e-9,\n 10252e-8 * 0.956940335732209 / 2384e-9,\n 539303e-9 * 0.956940335732209 / 2384e-9,\n -1011848e-9 * 0.956940335732209 / 2384e-9,\n 0.033659935 * 0.956940335732209 / 2384e-9,\n 4703045e-9 * 0.956940335732209 / 2384e-9,\n 915051e-9 * 0.956940335732209 / 2384e-9,\n 70095e-9 * 0.956940335732209 / 2384e-9,\n 4768e-9 * 0.956940335732209 / 2384e-9,\n 954e-9 * 0.956940335732209 / 2384e-9,\n 806808e-9 * 0.956940335732209 / 2384e-9,\n 9287834e-9 * 0.956940335732209 / 2384e-9,\n -0.026310921 * 0.956940335732209 / 2384e-9,\n -4048824e-9 * 0.956940335732209 / 2384e-9,\n -542164e-9 * 0.956940335732209 / 2384e-9,\n -32425e-9 * 0.956940335732209 / 2384e-9,\n 0.3033466836073424,\n 1.66293922460509,\n -1431e-9 * 0.970031253194544 / 2384e-9,\n 99182e-9 * 0.970031253194544 / 2384e-9,\n 462532e-9 * 0.970031253194544 / 2384e-9,\n -1573563e-9 * 0.970031253194544 / 2384e-9,\n 0.033225536 * 0.970031253194544 / 2384e-9,\n 4737377e-9 * 0.970031253194544 / 2384e-9,\n 891685e-9 * 0.970031253194544 / 2384e-9,\n 6628e-8 * 0.970031253194544 / 2384e-9,\n 4292e-9 * 0.970031253194544 / 2384e-9,\n -13828e-9 * 0.970031253194544 / 2384e-9,\n 66185e-8 * 0.970031253194544 / 2384e-9,\n 8487225e-9 * 0.970031253194544 / 2384e-9,\n -0.02707386 * 0.970031253194544 / 2384e-9,\n -4174709e-9 * 0.970031253194544 / 2384e-9,\n -576973e-9 * 0.970031253194544 / 2384e-9,\n -34809e-9 * 0.970031253194544 / 2384e-9,\n 0.2504869601913055,\n 1.76384252869671,\n -1431e-9 * 0.98078528040323 / 2384e-9,\n 95367e-9 * 0.98078528040323 / 2384e-9,\n 378609e-9 * 0.98078528040323 / 2384e-9,\n -2161503e-9 * 0.98078528040323 / 2384e-9,\n 0.032754898 * 0.98078528040323 / 2384e-9,\n 4752159e-9 * 0.98078528040323 / 2384e-9,\n 866413e-9 * 0.98078528040323 / 2384e-9,\n 62943e-9 * 0.98078528040323 / 2384e-9,\n 3815e-9 * 0.98078528040323 / 2384e-9,\n -2718e-8 * 0.98078528040323 / 2384e-9,\n 522137e-9 * 0.98078528040323 / 2384e-9,\n 7703304e-9 * 0.98078528040323 / 2384e-9,\n -0.027815342 * 0.98078528040323 / 2384e-9,\n -4290581e-9 * 0.98078528040323 / 2384e-9,\n -611782e-9 * 0.98078528040323 / 2384e-9,\n -3767e-8 * 0.98078528040323 / 2384e-9,\n 0.198912367379658,\n 1.847759065022573,\n -1907e-9 * 0.989176509964781 / 2384e-9,\n 90122e-9 * 0.989176509964781 / 2384e-9,\n 288486e-9 * 0.989176509964781 / 2384e-9,\n -2774239e-9 * 0.989176509964781 / 2384e-9,\n 0.03224802 * 0.989176509964781 / 2384e-9,\n 4748821e-9 * 0.989176509964781 / 2384e-9,\n 838757e-9 * 0.989176509964781 / 2384e-9,\n 59605e-9 * 0.989176509964781 / 2384e-9,\n 3338e-9 * 0.989176509964781 / 2384e-9,\n -39577e-9 * 0.989176509964781 / 2384e-9,\n 388145e-9 * 0.989176509964781 / 2384e-9,\n 6937027e-9 * 0.989176509964781 / 2384e-9,\n -0.028532982 * 0.989176509964781 / 2384e-9,\n -4395962e-9 * 0.989176509964781 / 2384e-9,\n -646591e-9 * 0.989176509964781 / 2384e-9,\n -40531e-9 * 0.989176509964781 / 2384e-9,\n 0.1483359875383474,\n 1.913880671464418,\n -1907e-9 * 0.995184726672197 / 2384e-9,\n 844e-7 * 0.995184726672197 / 2384e-9,\n 191689e-9 * 0.995184726672197 / 2384e-9,\n -3411293e-9 * 0.995184726672197 / 2384e-9,\n 0.03170681 * 0.995184726672197 / 2384e-9,\n 4728317e-9 * 0.995184726672197 / 2384e-9,\n 809669e-9 * 0.995184726672197 / 2384e-9,\n 5579e-8 * 0.995184726672197 / 2384e-9,\n 3338e-9 * 0.995184726672197 / 2384e-9,\n -50545e-9 * 0.995184726672197 / 2384e-9,\n 259876e-9 * 0.995184726672197 / 2384e-9,\n 6189346e-9 * 0.995184726672197 / 2384e-9,\n -0.029224873 * 0.995184726672197 / 2384e-9,\n -4489899e-9 * 0.995184726672197 / 2384e-9,\n -680923e-9 * 0.995184726672197 / 2384e-9,\n -43392e-9 * 0.995184726672197 / 2384e-9,\n 0.09849140335716425,\n 1.961570560806461,\n -2384e-9 * 0.998795456205172 / 2384e-9,\n 77724e-9 * 0.998795456205172 / 2384e-9,\n 88215e-9 * 0.998795456205172 / 2384e-9,\n -4072189e-9 * 0.998795456205172 / 2384e-9,\n 0.031132698 * 0.998795456205172 / 2384e-9,\n 4691124e-9 * 0.998795456205172 / 2384e-9,\n 779152e-9 * 0.998795456205172 / 2384e-9,\n 52929e-9 * 0.998795456205172 / 2384e-9,\n 2861e-9 * 0.998795456205172 / 2384e-9,\n -60558e-9 * 0.998795456205172 / 2384e-9,\n 137329e-9 * 0.998795456205172 / 2384e-9,\n 546217e-8 * 0.998795456205172 / 2384e-9,\n -0.02989006 * 0.998795456205172 / 2384e-9,\n -4570484e-9 * 0.998795456205172 / 2384e-9,\n -714302e-9 * 0.998795456205172 / 2384e-9,\n -46253e-9 * 0.998795456205172 / 2384e-9,\n 0.04912684976946725,\n 1.990369453344394,\n 0.035780907 * Util$4.SQRT2 * 0.5 / 2384e-9,\n 0.017876148 * Util$4.SQRT2 * 0.5 / 2384e-9,\n 3134727e-9 * Util$4.SQRT2 * 0.5 / 2384e-9,\n 2457142e-9 * Util$4.SQRT2 * 0.5 / 2384e-9,\n 971317e-9 * Util$4.SQRT2 * 0.5 / 2384e-9,\n 218868e-9 * Util$4.SQRT2 * 0.5 / 2384e-9,\n 101566e-9 * Util$4.SQRT2 * 0.5 / 2384e-9,\n 13828e-9 * Util$4.SQRT2 * 0.5 / 2384e-9,\n 0.030526638 / 2384e-9,\n 4638195e-9 / 2384e-9,\n 747204e-9 / 2384e-9,\n 49591e-9 / 2384e-9,\n 4756451e-9 / 2384e-9,\n 21458e-9 / 2384e-9,\n -69618e-9 / 2384e-9\n ];\n var NS = 12;\n var NL2 = 36;\n var win = [\n [\n 2382191739347913e-28,\n 6423305872147834e-28,\n 9400849094049688e-28,\n 1122435026096556e-27,\n 1183840321267481e-27,\n 1122435026096556e-27,\n 940084909404969e-27,\n 6423305872147839e-28,\n 2382191739347918e-28,\n 5456116108943412e-27,\n 4878985199565852e-27,\n 4240448995017367e-27,\n 3559909094758252e-27,\n 2858043359288075e-27,\n 2156177623817898e-27,\n 1475637723558783e-27,\n 8371015190102974e-28,\n 2599706096327376e-28,\n -5456116108943412e-27,\n -4878985199565852e-27,\n -4240448995017367e-27,\n -3559909094758252e-27,\n -2858043359288076e-27,\n -2156177623817898e-27,\n -1475637723558783e-27,\n -8371015190102975e-28,\n -2599706096327376e-28,\n -2382191739347923e-28,\n -6423305872147843e-28,\n -9400849094049696e-28,\n -1122435026096556e-27,\n -1183840321267481e-27,\n -1122435026096556e-27,\n -9400849094049694e-28,\n -642330587214784e-27,\n -2382191739347918e-28\n ],\n [\n 2382191739347913e-28,\n 6423305872147834e-28,\n 9400849094049688e-28,\n 1122435026096556e-27,\n 1183840321267481e-27,\n 1122435026096556e-27,\n 9400849094049688e-28,\n 6423305872147841e-28,\n 2382191739347918e-28,\n 5456116108943413e-27,\n 4878985199565852e-27,\n 4240448995017367e-27,\n 3559909094758253e-27,\n 2858043359288075e-27,\n 2156177623817898e-27,\n 1475637723558782e-27,\n 8371015190102975e-28,\n 2599706096327376e-28,\n -5461314069809755e-27,\n -4921085770524055e-27,\n -4343405037091838e-27,\n -3732668368707687e-27,\n -3093523840190885e-27,\n -2430835727329465e-27,\n -1734679010007751e-27,\n -974825365660928e-27,\n -2797435120168326e-28,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n -2283748241799531e-28,\n -4037858874020686e-28,\n -2146547464825323e-28\n ],\n [\n 0.1316524975873958,\n 0.414213562373095,\n 0.7673269879789602,\n 1.091308501069271,\n 1.303225372841206,\n 1.56968557711749,\n 1.920982126971166,\n 2.414213562373094,\n 3.171594802363212,\n 4.510708503662055,\n 7.595754112725146,\n 22.90376554843115,\n 0.984807753012208,\n 0.6427876096865394,\n 0.3420201433256688,\n 0.9396926207859084,\n -0.1736481776669303,\n -0.7660444431189779,\n 0.8660254037844387,\n 0.5,\n -0.5144957554275265,\n -0.4717319685649723,\n -0.3133774542039019,\n -0.1819131996109812,\n -0.09457419252642064,\n -0.04096558288530405,\n -0.01419856857247115,\n -0.003699974673760037,\n 0.8574929257125442,\n 0.8817419973177052,\n 0.9496286491027329,\n 0.9833145924917901,\n 0.9955178160675857,\n 0.9991605581781475,\n 0.999899195244447,\n 0.9999931550702802\n ],\n [\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 2283748241799531e-28,\n 4037858874020686e-28,\n 2146547464825323e-28,\n 5461314069809755e-27,\n 4921085770524055e-27,\n 4343405037091838e-27,\n 3732668368707687e-27,\n 3093523840190885e-27,\n 2430835727329466e-27,\n 1734679010007751e-27,\n 974825365660928e-27,\n 2797435120168326e-28,\n -5456116108943413e-27,\n -4878985199565852e-27,\n -4240448995017367e-27,\n -3559909094758253e-27,\n -2858043359288075e-27,\n -2156177623817898e-27,\n -1475637723558782e-27,\n -8371015190102975e-28,\n -2599706096327376e-28,\n -2382191739347913e-28,\n -6423305872147834e-28,\n -9400849094049688e-28,\n -1122435026096556e-27,\n -1183840321267481e-27,\n -1122435026096556e-27,\n -9400849094049688e-28,\n -6423305872147841e-28,\n -2382191739347918e-28\n ]\n ];\n var tantab_l = win[Encoder.SHORT_TYPE];\n var cx = win[Encoder.SHORT_TYPE];\n var ca = win[Encoder.SHORT_TYPE];\n var cs = win[Encoder.SHORT_TYPE];\n var order = [\n 0,\n 1,\n 16,\n 17,\n 8,\n 9,\n 24,\n 25,\n 4,\n 5,\n 20,\n 21,\n 12,\n 13,\n 28,\n 29,\n 2,\n 3,\n 18,\n 19,\n 10,\n 11,\n 26,\n 27,\n 6,\n 7,\n 22,\n 23,\n 14,\n 15,\n 30,\n 31\n ];\n function window_subband(x1, x1Pos, a) {\n var wp = 10;\n var x2 = x1Pos + 238 - 14 - 286;\n for (var i = -15; i < 0; i++) {\n var w, s, t;\n w = enwindow[wp + -10];\n s = x1[x2 + -224] * w;\n t = x1[x1Pos + 224] * w;\n w = enwindow[wp + -9];\n s += x1[x2 + -160] * w;\n t += x1[x1Pos + 160] * w;\n w = enwindow[wp + -8];\n s += x1[x2 + -96] * w;\n t += x1[x1Pos + 96] * w;\n w = enwindow[wp + -7];\n s += x1[x2 + -32] * w;\n t += x1[x1Pos + 32] * w;\n w = enwindow[wp + -6];\n s += x1[x2 + 32] * w;\n t += x1[x1Pos + -32] * w;\n w = enwindow[wp + -5];\n s += x1[x2 + 96] * w;\n t += x1[x1Pos + -96] * w;\n w = enwindow[wp + -4];\n s += x1[x2 + 160] * w;\n t += x1[x1Pos + -160] * w;\n w = enwindow[wp + -3];\n s += x1[x2 + 224] * w;\n t += x1[x1Pos + -224] * w;\n w = enwindow[wp + -2];\n s += x1[x1Pos + -256] * w;\n t -= x1[x2 + 256] * w;\n w = enwindow[wp + -1];\n s += x1[x1Pos + -192] * w;\n t -= x1[x2 + 192] * w;\n w = enwindow[wp + 0];\n s += x1[x1Pos + -128] * w;\n t -= x1[x2 + 128] * w;\n w = enwindow[wp + 1];\n s += x1[x1Pos + -64] * w;\n t -= x1[x2 + 64] * w;\n w = enwindow[wp + 2];\n s += x1[x1Pos + 0] * w;\n t -= x1[x2 + 0] * w;\n w = enwindow[wp + 3];\n s += x1[x1Pos + 64] * w;\n t -= x1[x2 + -64] * w;\n w = enwindow[wp + 4];\n s += x1[x1Pos + 128] * w;\n t -= x1[x2 + -128] * w;\n w = enwindow[wp + 5];\n s += x1[x1Pos + 192] * w;\n t -= x1[x2 + -192] * w;\n s *= enwindow[wp + 6];\n w = t - s;\n a[30 + i * 2] = t + s;\n a[31 + i * 2] = enwindow[wp + 7] * w;\n wp += 18;\n x1Pos--;\n x2++;\n }\n {\n var s, t, u, v;\n t = x1[x1Pos + -16] * enwindow[wp + -10];\n s = x1[x1Pos + -32] * enwindow[wp + -2];\n t += (x1[x1Pos + -48] - x1[x1Pos + 16]) * enwindow[wp + -9];\n s += x1[x1Pos + -96] * enwindow[wp + -1];\n t += (x1[x1Pos + -80] + x1[x1Pos + 48]) * enwindow[wp + -8];\n s += x1[x1Pos + -160] * enwindow[wp + 0];\n t += (x1[x1Pos + -112] - x1[x1Pos + 80]) * enwindow[wp + -7];\n s += x1[x1Pos + -224] * enwindow[wp + 1];\n t += (x1[x1Pos + -144] + x1[x1Pos + 112]) * enwindow[wp + -6];\n s -= x1[x1Pos + 32] * enwindow[wp + 2];\n t += (x1[x1Pos + -176] - x1[x1Pos + 144]) * enwindow[wp + -5];\n s -= x1[x1Pos + 96] * enwindow[wp + 3];\n t += (x1[x1Pos + -208] + x1[x1Pos + 176]) * enwindow[wp + -4];\n s -= x1[x1Pos + 160] * enwindow[wp + 4];\n t += (x1[x1Pos + -240] - x1[x1Pos + 208]) * enwindow[wp + -3];\n s -= x1[x1Pos + 224];\n u = s - t;\n v = s + t;\n t = a[14];\n s = a[15] - t;\n a[31] = v + t;\n a[30] = u + s;\n a[15] = u - s;\n a[14] = v - t;\n }\n {\n var xr;\n xr = a[28] - a[0];\n a[0] += a[28];\n a[28] = xr * enwindow[wp + -2 * 18 + 7];\n xr = a[29] - a[1];\n a[1] += a[29];\n a[29] = xr * enwindow[wp + -2 * 18 + 7];\n xr = a[26] - a[2];\n a[2] += a[26];\n a[26] = xr * enwindow[wp + -4 * 18 + 7];\n xr = a[27] - a[3];\n a[3] += a[27];\n a[27] = xr * enwindow[wp + -4 * 18 + 7];\n xr = a[24] - a[4];\n a[4] += a[24];\n a[24] = xr * enwindow[wp + -6 * 18 + 7];\n xr = a[25] - a[5];\n a[5] += a[25];\n a[25] = xr * enwindow[wp + -6 * 18 + 7];\n xr = a[22] - a[6];\n a[6] += a[22];\n a[22] = xr * Util$4.SQRT2;\n xr = a[23] - a[7];\n a[7] += a[23];\n a[23] = xr * Util$4.SQRT2 - a[7];\n a[7] -= a[6];\n a[22] -= a[7];\n a[23] -= a[22];\n xr = a[6];\n a[6] = a[31] - xr;\n a[31] = a[31] + xr;\n xr = a[7];\n a[7] = a[30] - xr;\n a[30] = a[30] + xr;\n xr = a[22];\n a[22] = a[15] - xr;\n a[15] = a[15] + xr;\n xr = a[23];\n a[23] = a[14] - xr;\n a[14] = a[14] + xr;\n xr = a[20] - a[8];\n a[8] += a[20];\n a[20] = xr * enwindow[wp + -10 * 18 + 7];\n xr = a[21] - a[9];\n a[9] += a[21];\n a[21] = xr * enwindow[wp + -10 * 18 + 7];\n xr = a[18] - a[10];\n a[10] += a[18];\n a[18] = xr * enwindow[wp + -12 * 18 + 7];\n xr = a[19] - a[11];\n a[11] += a[19];\n a[19] = xr * enwindow[wp + -12 * 18 + 7];\n xr = a[16] - a[12];\n a[12] += a[16];\n a[16] = xr * enwindow[wp + -14 * 18 + 7];\n xr = a[17] - a[13];\n a[13] += a[17];\n a[17] = xr * enwindow[wp + -14 * 18 + 7];\n xr = -a[20] + a[24];\n a[20] += a[24];\n a[24] = xr * enwindow[wp + -12 * 18 + 7];\n xr = -a[21] + a[25];\n a[21] += a[25];\n a[25] = xr * enwindow[wp + -12 * 18 + 7];\n xr = a[4] - a[8];\n a[4] += a[8];\n a[8] = xr * enwindow[wp + -12 * 18 + 7];\n xr = a[5] - a[9];\n a[5] += a[9];\n a[9] = xr * enwindow[wp + -12 * 18 + 7];\n xr = a[0] - a[12];\n a[0] += a[12];\n a[12] = xr * enwindow[wp + -4 * 18 + 7];\n xr = a[1] - a[13];\n a[1] += a[13];\n a[13] = xr * enwindow[wp + -4 * 18 + 7];\n xr = a[16] - a[28];\n a[16] += a[28];\n a[28] = xr * enwindow[wp + -4 * 18 + 7];\n xr = -a[17] + a[29];\n a[17] += a[29];\n a[29] = xr * enwindow[wp + -4 * 18 + 7];\n xr = Util$4.SQRT2 * (a[2] - a[10]);\n a[2] += a[10];\n a[10] = xr;\n xr = Util$4.SQRT2 * (a[3] - a[11]);\n a[3] += a[11];\n a[11] = xr;\n xr = Util$4.SQRT2 * (-a[18] + a[26]);\n a[18] += a[26];\n a[26] = xr - a[18];\n xr = Util$4.SQRT2 * (-a[19] + a[27]);\n a[19] += a[27];\n a[27] = xr - a[19];\n xr = a[2];\n a[19] -= a[3];\n a[3] -= xr;\n a[2] = a[31] - xr;\n a[31] += xr;\n xr = a[3];\n a[11] -= a[19];\n a[18] -= xr;\n a[3] = a[30] - xr;\n a[30] += xr;\n xr = a[18];\n a[27] -= a[11];\n a[19] -= xr;\n a[18] = a[15] - xr;\n a[15] += xr;\n xr = a[19];\n a[10] -= xr;\n a[19] = a[14] - xr;\n a[14] += xr;\n xr = a[10];\n a[11] -= xr;\n a[10] = a[23] - xr;\n a[23] += xr;\n xr = a[11];\n a[26] -= xr;\n a[11] = a[22] - xr;\n a[22] += xr;\n xr = a[26];\n a[27] -= xr;\n a[26] = a[7] - xr;\n a[7] += xr;\n xr = a[27];\n a[27] = a[6] - xr;\n a[6] += xr;\n xr = Util$4.SQRT2 * (a[0] - a[4]);\n a[0] += a[4];\n a[4] = xr;\n xr = Util$4.SQRT2 * (a[1] - a[5]);\n a[1] += a[5];\n a[5] = xr;\n xr = Util$4.SQRT2 * (a[16] - a[20]);\n a[16] += a[20];\n a[20] = xr;\n xr = Util$4.SQRT2 * (a[17] - a[21]);\n a[17] += a[21];\n a[21] = xr;\n xr = -Util$4.SQRT2 * (a[8] - a[12]);\n a[8] += a[12];\n a[12] = xr - a[8];\n xr = -Util$4.SQRT2 * (a[9] - a[13]);\n a[9] += a[13];\n a[13] = xr - a[9];\n xr = -Util$4.SQRT2 * (a[25] - a[29]);\n a[25] += a[29];\n a[29] = xr - a[25];\n xr = -Util$4.SQRT2 * (a[24] + a[28]);\n a[24] -= a[28];\n a[28] = xr - a[24];\n xr = a[24] - a[16];\n a[24] = xr;\n xr = a[20] - xr;\n a[20] = xr;\n xr = a[28] - xr;\n a[28] = xr;\n xr = a[25] - a[17];\n a[25] = xr;\n xr = a[21] - xr;\n a[21] = xr;\n xr = a[29] - xr;\n a[29] = xr;\n xr = a[17] - a[1];\n a[17] = xr;\n xr = a[9] - xr;\n a[9] = xr;\n xr = a[25] - xr;\n a[25] = xr;\n xr = a[5] - xr;\n a[5] = xr;\n xr = a[21] - xr;\n a[21] = xr;\n xr = a[13] - xr;\n a[13] = xr;\n xr = a[29] - xr;\n a[29] = xr;\n xr = a[1] - a[0];\n a[1] = xr;\n xr = a[16] - xr;\n a[16] = xr;\n xr = a[17] - xr;\n a[17] = xr;\n xr = a[8] - xr;\n a[8] = xr;\n xr = a[9] - xr;\n a[9] = xr;\n xr = a[24] - xr;\n a[24] = xr;\n xr = a[25] - xr;\n a[25] = xr;\n xr = a[4] - xr;\n a[4] = xr;\n xr = a[5] - xr;\n a[5] = xr;\n xr = a[20] - xr;\n a[20] = xr;\n xr = a[21] - xr;\n a[21] = xr;\n xr = a[12] - xr;\n a[12] = xr;\n xr = a[13] - xr;\n a[13] = xr;\n xr = a[28] - xr;\n a[28] = xr;\n xr = a[29] - xr;\n a[29] = xr;\n xr = a[0];\n a[0] += a[31];\n a[31] -= xr;\n xr = a[1];\n a[1] += a[30];\n a[30] -= xr;\n xr = a[16];\n a[16] += a[15];\n a[15] -= xr;\n xr = a[17];\n a[17] += a[14];\n a[14] -= xr;\n xr = a[8];\n a[8] += a[23];\n a[23] -= xr;\n xr = a[9];\n a[9] += a[22];\n a[22] -= xr;\n xr = a[24];\n a[24] += a[7];\n a[7] -= xr;\n xr = a[25];\n a[25] += a[6];\n a[6] -= xr;\n xr = a[4];\n a[4] += a[27];\n a[27] -= xr;\n xr = a[5];\n a[5] += a[26];\n a[26] -= xr;\n xr = a[20];\n a[20] += a[11];\n a[11] -= xr;\n xr = a[21];\n a[21] += a[10];\n a[10] -= xr;\n xr = a[12];\n a[12] += a[19];\n a[19] -= xr;\n xr = a[13];\n a[13] += a[18];\n a[18] -= xr;\n xr = a[28];\n a[28] += a[3];\n a[3] -= xr;\n xr = a[29];\n a[29] += a[2];\n a[2] -= xr;\n }\n }\n function mdct_short(inout, inoutPos) {\n for (var l = 0; l < 3; l++) {\n var tc0, tc1, tc2, ts0, ts1, ts2;\n ts0 = inout[inoutPos + 2 * 3] * win[Encoder.SHORT_TYPE][0] - inout[inoutPos + 5 * 3];\n tc0 = inout[inoutPos + 0 * 3] * win[Encoder.SHORT_TYPE][2] - inout[inoutPos + 3 * 3];\n tc1 = ts0 + tc0;\n tc2 = ts0 - tc0;\n ts0 = inout[inoutPos + 5 * 3] * win[Encoder.SHORT_TYPE][0] + inout[inoutPos + 2 * 3];\n tc0 = inout[inoutPos + 3 * 3] * win[Encoder.SHORT_TYPE][2] + inout[inoutPos + 0 * 3];\n ts1 = ts0 + tc0;\n ts2 = -ts0 + tc0;\n tc0 = (inout[inoutPos + 1 * 3] * win[Encoder.SHORT_TYPE][1] - inout[inoutPos + 4 * 3]) * 2069978111953089e-26;\n ts0 = (inout[inoutPos + 4 * 3] * win[Encoder.SHORT_TYPE][1] + inout[inoutPos + 1 * 3]) * 2069978111953089e-26;\n inout[inoutPos + 3 * 0] = tc1 * 190752519173728e-25 + tc0;\n inout[inoutPos + 3 * 5] = -ts1 * 190752519173728e-25 + ts0;\n tc2 = tc2 * 0.8660254037844387 * 1907525191737281e-26;\n ts1 = ts1 * 0.5 * 1907525191737281e-26 + ts0;\n inout[inoutPos + 3 * 1] = tc2 - ts1;\n inout[inoutPos + 3 * 2] = tc2 + ts1;\n tc1 = tc1 * 0.5 * 1907525191737281e-26 - tc0;\n ts2 = ts2 * 0.8660254037844387 * 1907525191737281e-26;\n inout[inoutPos + 3 * 3] = tc1 + ts2;\n inout[inoutPos + 3 * 4] = tc1 - ts2;\n inoutPos++;\n }\n }\n function mdct_long(out, outPos, _in) {\n var ct, st;\n {\n var tc1, tc2, tc3, tc4, ts5, ts6, ts7, ts8;\n tc1 = _in[17] - _in[9];\n tc3 = _in[15] - _in[11];\n tc4 = _in[14] - _in[12];\n ts5 = _in[0] + _in[8];\n ts6 = _in[1] + _in[7];\n ts7 = _in[2] + _in[6];\n ts8 = _in[3] + _in[5];\n out[outPos + 17] = ts5 + ts7 - ts8 - (ts6 - _in[4]);\n st = (ts5 + ts7 - ts8) * cx[12 + 7] + (ts6 - _in[4]);\n ct = (tc1 - tc3 - tc4) * cx[12 + 6];\n out[outPos + 5] = ct + st;\n out[outPos + 6] = ct - st;\n tc2 = (_in[16] - _in[10]) * cx[12 + 6];\n ts6 = ts6 * cx[12 + 7] + _in[4];\n ct = tc1 * cx[12 + 0] + tc2 + tc3 * cx[12 + 1] + tc4 * cx[12 + 2];\n st = -ts5 * cx[12 + 4] + ts6 - ts7 * cx[12 + 5] + ts8 * cx[12 + 3];\n out[outPos + 1] = ct + st;\n out[outPos + 2] = ct - st;\n ct = tc1 * cx[12 + 1] - tc2 - tc3 * cx[12 + 2] + tc4 * cx[12 + 0];\n st = -ts5 * cx[12 + 5] + ts6 - ts7 * cx[12 + 3] + ts8 * cx[12 + 4];\n out[outPos + 9] = ct + st;\n out[outPos + 10] = ct - st;\n ct = tc1 * cx[12 + 2] - tc2 + tc3 * cx[12 + 0] - tc4 * cx[12 + 1];\n st = ts5 * cx[12 + 3] - ts6 + ts7 * cx[12 + 4] - ts8 * cx[12 + 5];\n out[outPos + 13] = ct + st;\n out[outPos + 14] = ct - st;\n }\n {\n var ts1, ts2, ts3, ts4, tc5, tc6, tc7, tc8;\n ts1 = _in[8] - _in[0];\n ts3 = _in[6] - _in[2];\n ts4 = _in[5] - _in[3];\n tc5 = _in[17] + _in[9];\n tc6 = _in[16] + _in[10];\n tc7 = _in[15] + _in[11];\n tc8 = _in[14] + _in[12];\n out[outPos + 0] = tc5 + tc7 + tc8 + (tc6 + _in[13]);\n ct = (tc5 + tc7 + tc8) * cx[12 + 7] - (tc6 + _in[13]);\n st = (ts1 - ts3 + ts4) * cx[12 + 6];\n out[outPos + 11] = ct + st;\n out[outPos + 12] = ct - st;\n ts2 = (_in[7] - _in[1]) * cx[12 + 6];\n tc6 = _in[13] - tc6 * cx[12 + 7];\n ct = tc5 * cx[12 + 3] - tc6 + tc7 * cx[12 + 4] + tc8 * cx[12 + 5];\n st = ts1 * cx[12 + 2] + ts2 + ts3 * cx[12 + 0] + ts4 * cx[12 + 1];\n out[outPos + 3] = ct + st;\n out[outPos + 4] = ct - st;\n ct = -tc5 * cx[12 + 5] + tc6 - tc7 * cx[12 + 3] - tc8 * cx[12 + 4];\n st = ts1 * cx[12 + 1] + ts2 - ts3 * cx[12 + 2] - ts4 * cx[12 + 0];\n out[outPos + 7] = ct + st;\n out[outPos + 8] = ct - st;\n ct = -tc5 * cx[12 + 4] + tc6 - tc7 * cx[12 + 5] - tc8 * cx[12 + 3];\n st = ts1 * cx[12 + 0] - ts2 + ts3 * cx[12 + 1] - ts4 * cx[12 + 2];\n out[outPos + 15] = ct + st;\n out[outPos + 16] = ct - st;\n }\n }\n this.mdct_sub48 = function(gfc, w0, w1) {\n var wk = w0;\n var wkPos = 286;\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n var band;\n var gi = gfc.l3_side.tt[gr][ch];\n var mdct_enc = gi.xr;\n var mdct_encPos = 0;\n var samp = gfc.sb_sample[ch][1 - gr];\n var sampPos = 0;\n for (var k = 0; k < 18 / 2; k++) {\n window_subband(wk, wkPos, samp[sampPos]);\n window_subband(wk, wkPos + 32, samp[sampPos + 1]);\n sampPos += 2;\n wkPos += 64;\n for (band = 1; band < 32; band += 2) {\n samp[sampPos - 1][band] *= -1;\n }\n }\n for (band = 0; band < 32; band++, mdct_encPos += 18) {\n var type = gi.block_type;\n var band0 = gfc.sb_sample[ch][gr];\n var band1 = gfc.sb_sample[ch][1 - gr];\n if (gi.mixed_block_flag != 0 && band < 2)\n type = 0;\n if (gfc.amp_filter[band] < 1e-12) {\n Arrays$6.fill(mdct_enc, mdct_encPos + 0, mdct_encPos + 18, 0);\n } else {\n if (gfc.amp_filter[band] < 1) {\n for (var k = 0; k < 18; k++) {\n band1[k][order[band]] *= gfc.amp_filter[band];\n }\n }\n if (type == Encoder.SHORT_TYPE) {\n for (var k = -NS / 4; k < 0; k++) {\n var w = win[Encoder.SHORT_TYPE][k + 3];\n mdct_enc[mdct_encPos + k * 3 + 9] = band0[9 + k][order[band]] * w - band0[8 - k][order[band]];\n mdct_enc[mdct_encPos + k * 3 + 18] = band0[14 - k][order[band]] * w + band0[15 + k][order[band]];\n mdct_enc[mdct_encPos + k * 3 + 10] = band0[15 + k][order[band]] * w - band0[14 - k][order[band]];\n mdct_enc[mdct_encPos + k * 3 + 19] = band1[2 - k][order[band]] * w + band1[3 + k][order[band]];\n mdct_enc[mdct_encPos + k * 3 + 11] = band1[3 + k][order[band]] * w - band1[2 - k][order[band]];\n mdct_enc[mdct_encPos + k * 3 + 20] = band1[8 - k][order[band]] * w + band1[9 + k][order[band]];\n }\n mdct_short(mdct_enc, mdct_encPos);\n } else {\n var work = new_float$e(18);\n for (var k = -NL2 / 4; k < 0; k++) {\n var a, b;\n a = win[type][k + 27] * band1[k + 9][order[band]] + win[type][k + 36] * band1[8 - k][order[band]];\n b = win[type][k + 9] * band0[k + 9][order[band]] - win[type][k + 18] * band0[8 - k][order[band]];\n work[k + 9] = a - b * tantab_l[3 + k + 9];\n work[k + 18] = a * tantab_l[3 + k + 9] + b;\n }\n mdct_long(mdct_enc, mdct_encPos, work);\n }\n }\n if (type != Encoder.SHORT_TYPE && band != 0) {\n for (var k = 7; k >= 0; --k) {\n var bu, bd;\n bu = mdct_enc[mdct_encPos + k] * ca[20 + k] + mdct_enc[mdct_encPos + -1 - k] * cs[28 + k];\n bd = mdct_enc[mdct_encPos + k] * cs[28 + k] - mdct_enc[mdct_encPos + -1 - k] * ca[20 + k];\n mdct_enc[mdct_encPos + -1 - k] = bu;\n mdct_enc[mdct_encPos + k] = bd;\n }\n }\n }\n }\n wk = w1;\n wkPos = 286;\n if (gfc.mode_gr == 1) {\n for (var i = 0; i < 18; i++) {\n System$9.arraycopy(\n gfc.sb_sample[ch][1][i],\n 0,\n gfc.sb_sample[ch][0][i],\n 0,\n 32\n );\n }\n }\n }\n };\n}\nvar System$8 = common.System;\nvar new_float$d = common.new_float;\nvar new_float_n$5 = common.new_float_n;\nfunction III_psy_xmin() {\n this.l = new_float$d(Encoder.SBMAX_l);\n this.s = new_float_n$5([Encoder.SBMAX_s, 3]);\n var self2 = this;\n this.assign = function(iii_psy_xmin) {\n System$8.arraycopy(iii_psy_xmin.l, 0, self2.l, 0, Encoder.SBMAX_l);\n for (var i = 0; i < Encoder.SBMAX_s; i++) {\n for (var j = 0; j < 3; j++) {\n self2.s[i][j] = iii_psy_xmin.s[i][j];\n }\n }\n };\n}\nfunction III_psy_ratio() {\n this.thm = new III_psy_xmin();\n this.en = new III_psy_xmin();\n}\nfunction MPEGMode(ordinal) {\n var _ordinal = ordinal;\n this.ordinal = function() {\n return _ordinal;\n };\n}\nMPEGMode.STEREO = new MPEGMode(0);\nMPEGMode.JOINT_STEREO = new MPEGMode(1);\nMPEGMode.DUAL_CHANNEL = new MPEGMode(2);\nMPEGMode.MONO = new MPEGMode(3);\nMPEGMode.NOT_SET = new MPEGMode(4);\nvar System$7 = common.System;\nvar VbrMode$6 = common.VbrMode;\nvar new_array_n = common.new_array_n;\nvar new_float$c = common.new_float;\nvar new_float_n$4 = common.new_float_n;\nvar new_int$c = common.new_int;\nvar assert$a = common.assert;\nEncoder.ENCDELAY = 576;\nEncoder.POSTDELAY = 1152;\nEncoder.MDCTDELAY = 48;\nEncoder.FFTOFFSET = 224 + Encoder.MDCTDELAY;\nEncoder.DECDELAY = 528;\nEncoder.SBLIMIT = 32;\nEncoder.CBANDS = 64;\nEncoder.SBPSY_l = 21;\nEncoder.SBPSY_s = 12;\nEncoder.SBMAX_l = 22;\nEncoder.SBMAX_s = 13;\nEncoder.PSFB21 = 6;\nEncoder.PSFB12 = 6;\nEncoder.BLKSIZE = 1024;\nEncoder.HBLKSIZE = Encoder.BLKSIZE / 2 + 1;\nEncoder.BLKSIZE_s = 256;\nEncoder.HBLKSIZE_s = Encoder.BLKSIZE_s / 2 + 1;\nEncoder.NORM_TYPE = 0;\nEncoder.START_TYPE = 1;\nEncoder.SHORT_TYPE = 2;\nEncoder.STOP_TYPE = 3;\nEncoder.MPG_MD_LR_LR = 0;\nEncoder.MPG_MD_LR_I = 1;\nEncoder.MPG_MD_MS_LR = 2;\nEncoder.MPG_MD_MS_I = 3;\nEncoder.fircoef = [\n -0.0207887 * 5,\n -0.0378413 * 5,\n -0.0432472 * 5,\n -0.031183 * 5,\n 779609e-23 * 5,\n 0.0467745 * 5,\n 0.10091 * 5,\n 0.151365 * 5,\n 0.187098 * 5\n];\nfunction Encoder() {\n var FFTOFFSET = Encoder.FFTOFFSET;\n var MPG_MD_MS_LR = Encoder.MPG_MD_MS_LR;\n var bs = null;\n this.psy = null;\n var psy = null;\n var vbr = null;\n var qupvt = null;\n this.setModules = function(_bs, _psy, _qupvt, _vbr) {\n bs = _bs;\n this.psy = _psy;\n psy = _psy;\n vbr = _vbr;\n qupvt = _qupvt;\n };\n var newMDCT = new NewMDCT();\n function adjust_ATH(gfc) {\n var gr2_max, max_pow;\n if (gfc.ATH.useAdjust == 0) {\n gfc.ATH.adjust = 1;\n return;\n }\n max_pow = gfc.loudness_sq[0][0];\n gr2_max = gfc.loudness_sq[1][0];\n if (gfc.channels_out == 2) {\n max_pow += gfc.loudness_sq[0][1];\n gr2_max += gfc.loudness_sq[1][1];\n } else {\n max_pow += max_pow;\n gr2_max += gr2_max;\n }\n if (gfc.mode_gr == 2) {\n max_pow = Math.max(max_pow, gr2_max);\n }\n max_pow *= 0.5;\n max_pow *= gfc.ATH.aaSensitivityP;\n if (max_pow > 0.03125) {\n if (gfc.ATH.adjust >= 1) {\n gfc.ATH.adjust = 1;\n } else {\n if (gfc.ATH.adjust < gfc.ATH.adjustLimit) {\n gfc.ATH.adjust = gfc.ATH.adjustLimit;\n }\n }\n gfc.ATH.adjustLimit = 1;\n } else {\n var adj_lim_new = 31.98 * max_pow + 625e-6;\n if (gfc.ATH.adjust >= adj_lim_new) {\n gfc.ATH.adjust *= adj_lim_new * 0.075 + 0.925;\n if (gfc.ATH.adjust < adj_lim_new) {\n gfc.ATH.adjust = adj_lim_new;\n }\n } else {\n if (gfc.ATH.adjustLimit >= adj_lim_new) {\n gfc.ATH.adjust = adj_lim_new;\n } else {\n if (gfc.ATH.adjust < gfc.ATH.adjustLimit) {\n gfc.ATH.adjust = gfc.ATH.adjustLimit;\n }\n }\n }\n gfc.ATH.adjustLimit = adj_lim_new;\n }\n }\n function updateStats(gfc) {\n var gr, ch;\n assert$a(gfc.bitrate_index >= 0 && gfc.bitrate_index < 16);\n assert$a(gfc.mode_ext >= 0 && gfc.mode_ext < 4);\n gfc.bitrate_stereoMode_Hist[gfc.bitrate_index][4]++;\n gfc.bitrate_stereoMode_Hist[15][4]++;\n if (gfc.channels_out == 2) {\n gfc.bitrate_stereoMode_Hist[gfc.bitrate_index][gfc.mode_ext]++;\n gfc.bitrate_stereoMode_Hist[15][gfc.mode_ext]++;\n }\n for (gr = 0; gr < gfc.mode_gr; ++gr) {\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n var bt = gfc.l3_side.tt[gr][ch].block_type | 0;\n if (gfc.l3_side.tt[gr][ch].mixed_block_flag != 0)\n bt = 4;\n gfc.bitrate_blockType_Hist[gfc.bitrate_index][bt]++;\n gfc.bitrate_blockType_Hist[gfc.bitrate_index][5]++;\n gfc.bitrate_blockType_Hist[15][bt]++;\n gfc.bitrate_blockType_Hist[15][5]++;\n }\n }\n }\n function lame_encode_frame_init(gfp, inbuf) {\n var gfc = gfp.internal_flags;\n var ch, gr;\n if (gfc.lame_encode_frame_init == 0) {\n var i, j;\n var primebuff0 = new_float$c(286 + 1152 + 576);\n var primebuff1 = new_float$c(286 + 1152 + 576);\n gfc.lame_encode_frame_init = 1;\n for (i = 0, j = 0; i < 286 + 576 * (1 + gfc.mode_gr); ++i) {\n if (i < 576 * gfc.mode_gr) {\n primebuff0[i] = 0;\n if (gfc.channels_out == 2)\n primebuff1[i] = 0;\n } else {\n primebuff0[i] = inbuf[0][j];\n if (gfc.channels_out == 2)\n primebuff1[i] = inbuf[1][j];\n ++j;\n }\n }\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n gfc.l3_side.tt[gr][ch].block_type = Encoder.SHORT_TYPE;\n }\n }\n newMDCT.mdct_sub48(gfc, primebuff0, primebuff1);\n assert$a(gfc.mf_size >= Encoder.BLKSIZE + gfp.framesize - Encoder.FFTOFFSET);\n assert$a(gfc.mf_size >= 512 + gfp.framesize - 32);\n }\n }\n this.lame_encode_mp3_frame = function(gfp, inbuf_l, inbuf_r, mp3buf, mp3bufPos, mp3buf_size) {\n var mp3count;\n var masking_LR = new_array_n([2, 2]);\n masking_LR[0][0] = new III_psy_ratio();\n masking_LR[0][1] = new III_psy_ratio();\n masking_LR[1][0] = new III_psy_ratio();\n masking_LR[1][1] = new III_psy_ratio();\n var masking_MS = new_array_n([2, 2]);\n masking_MS[0][0] = new III_psy_ratio();\n masking_MS[0][1] = new III_psy_ratio();\n masking_MS[1][0] = new III_psy_ratio();\n masking_MS[1][1] = new III_psy_ratio();\n var masking;\n var inbuf = [null, null];\n var gfc = gfp.internal_flags;\n var tot_ener = new_float_n$4([2, 4]);\n var ms_ener_ratio = [0.5, 0.5];\n var pe = [\n [0, 0],\n [0, 0]\n ];\n var pe_MS = [\n [0, 0],\n [0, 0]\n ];\n var pe_use;\n var ch, gr;\n inbuf[0] = inbuf_l;\n inbuf[1] = inbuf_r;\n if (gfc.lame_encode_frame_init == 0) {\n lame_encode_frame_init(gfp, inbuf);\n }\n gfc.padding = 0;\n if ((gfc.slot_lag -= gfc.frac_SpF) < 0) {\n gfc.slot_lag += gfp.out_samplerate;\n gfc.padding = 1;\n }\n if (gfc.psymodel != 0) {\n var ret;\n var bufp = [null, null];\n var bufpPos = 0;\n var blocktype = new_int$c(2);\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n bufp[ch] = inbuf[ch];\n bufpPos = 576 + gr * 576 - Encoder.FFTOFFSET;\n }\n if (gfp.VBR == VbrMode$6.vbr_mtrh || gfp.VBR == VbrMode$6.vbr_mt) {\n ret = psy.L3psycho_anal_vbr(\n gfp,\n bufp,\n bufpPos,\n gr,\n masking_LR,\n masking_MS,\n pe[gr],\n pe_MS[gr],\n tot_ener[gr],\n blocktype\n );\n } else {\n ret = psy.L3psycho_anal_ns(\n gfp,\n bufp,\n bufpPos,\n gr,\n masking_LR,\n masking_MS,\n pe[gr],\n pe_MS[gr],\n tot_ener[gr],\n blocktype\n );\n }\n if (ret != 0)\n return -4;\n if (gfp.mode == MPEGMode.JOINT_STEREO) {\n ms_ener_ratio[gr] = tot_ener[gr][2] + tot_ener[gr][3];\n if (ms_ener_ratio[gr] > 0) {\n ms_ener_ratio[gr] = tot_ener[gr][3] / ms_ener_ratio[gr];\n }\n }\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var cod_info = gfc.l3_side.tt[gr][ch];\n cod_info.block_type = blocktype[ch];\n cod_info.mixed_block_flag = 0;\n }\n }\n } else {\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n gfc.l3_side.tt[gr][ch].block_type = Encoder.NORM_TYPE;\n gfc.l3_side.tt[gr][ch].mixed_block_flag = 0;\n pe_MS[gr][ch] = pe[gr][ch] = 700;\n }\n }\n }\n adjust_ATH(gfc);\n newMDCT.mdct_sub48(gfc, inbuf[0], inbuf[1]);\n gfc.mode_ext = Encoder.MPG_MD_LR_LR;\n if (gfp.force_ms) {\n gfc.mode_ext = Encoder.MPG_MD_MS_LR;\n } else if (gfp.mode == MPEGMode.JOINT_STEREO) {\n var sum_pe_MS = 0;\n var sum_pe_LR = 0;\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n sum_pe_MS += pe_MS[gr][ch];\n sum_pe_LR += pe[gr][ch];\n }\n }\n if (sum_pe_MS <= 1 * sum_pe_LR) {\n var gi0 = gfc.l3_side.tt[0];\n var gi1 = gfc.l3_side.tt[gfc.mode_gr - 1];\n if (gi0[0].block_type == gi0[1].block_type && gi1[0].block_type == gi1[1].block_type) {\n gfc.mode_ext = Encoder.MPG_MD_MS_LR;\n }\n }\n }\n if (gfc.mode_ext == MPG_MD_MS_LR) {\n masking = masking_MS;\n pe_use = pe_MS;\n } else {\n masking = masking_LR;\n pe_use = pe;\n }\n if (gfp.analysis && gfc.pinfo != null) {\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n gfc.pinfo.ms_ratio[gr] = gfc.ms_ratio[gr];\n gfc.pinfo.ms_ener_ratio[gr] = ms_ener_ratio[gr];\n gfc.pinfo.blocktype[gr][ch] = gfc.l3_side.tt[gr][ch].block_type;\n gfc.pinfo.pe[gr][ch] = pe_use[gr][ch];\n System$7.arraycopy(\n gfc.l3_side.tt[gr][ch].xr,\n 0,\n gfc.pinfo.xr[gr][ch],\n 0,\n 576\n );\n if (gfc.mode_ext == MPG_MD_MS_LR) {\n gfc.pinfo.ers[gr][ch] = gfc.pinfo.ers[gr][ch + 2];\n System$7.arraycopy(\n gfc.pinfo.energy[gr][ch + 2],\n 0,\n gfc.pinfo.energy[gr][ch],\n 0,\n gfc.pinfo.energy[gr][ch].length\n );\n }\n }\n }\n }\n if (gfp.VBR == VbrMode$6.vbr_off || gfp.VBR == VbrMode$6.vbr_abr) {\n var i;\n var f;\n for (i = 0; i < 18; i++)\n gfc.nsPsy.pefirbuf[i] = gfc.nsPsy.pefirbuf[i + 1];\n f = 0;\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++)\n f += pe_use[gr][ch];\n }\n gfc.nsPsy.pefirbuf[18] = f;\n f = gfc.nsPsy.pefirbuf[9];\n for (i = 0; i < 9; i++) {\n f += (gfc.nsPsy.pefirbuf[i] + gfc.nsPsy.pefirbuf[18 - i]) * Encoder.fircoef[i];\n }\n f = 670 * 5 * gfc.mode_gr * gfc.channels_out / f;\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n pe_use[gr][ch] *= f;\n }\n }\n }\n gfc.iteration_loop.iteration_loop(gfp, pe_use, ms_ener_ratio, masking);\n bs.format_bitstream(gfp);\n mp3count = bs.copy_buffer(gfc, mp3buf, mp3bufPos, mp3buf_size, 1);\n if (gfp.bWriteVbrTag)\n vbr.addVbrFrame(gfp);\n if (gfp.analysis && gfc.pinfo != null) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var j;\n for (j = 0; j < FFTOFFSET; j++) {\n gfc.pinfo.pcmdata[ch][j] = gfc.pinfo.pcmdata[ch][j + gfp.framesize];\n }\n for (j = FFTOFFSET; j < 1600; j++) {\n gfc.pinfo.pcmdata[ch][j] = inbuf[ch][j - FFTOFFSET];\n }\n }\n qupvt.set_frame_pinfo(gfp, masking);\n }\n updateStats(gfc);\n return mp3count;\n };\n}\nvar Util$3 = common.Util;\nvar new_float$b = common.new_float;\nfunction FFT() {\n var window2 = new_float$b(Encoder.BLKSIZE);\n var window_s = new_float$b(Encoder.BLKSIZE_s / 2);\n var costab = [\n 0.9238795325112867,\n 0.3826834323650898,\n 0.9951847266721969,\n 0.0980171403295606,\n 0.9996988186962042,\n 0.02454122852291229,\n 0.9999811752826011,\n 0.006135884649154475\n ];\n function fht(fz, fzPos, n) {\n var tri = 0;\n var k4;\n var fi;\n var gi;\n n <<= 1;\n var fn = fzPos + n;\n k4 = 4;\n do {\n var s1, c1;\n var i, k1, k2, k3, kx;\n kx = k4 >> 1;\n k1 = k4;\n k2 = k4 << 1;\n k3 = k2 + k1;\n k4 = k2 << 1;\n fi = fzPos;\n gi = fi + kx;\n do {\n var f0, f1, f2, f3;\n f1 = fz[fi + 0] - fz[fi + k1];\n f0 = fz[fi + 0] + fz[fi + k1];\n f3 = fz[fi + k2] - fz[fi + k3];\n f2 = fz[fi + k2] + fz[fi + k3];\n fz[fi + k2] = f0 - f2;\n fz[fi + 0] = f0 + f2;\n fz[fi + k3] = f1 - f3;\n fz[fi + k1] = f1 + f3;\n f1 = fz[gi + 0] - fz[gi + k1];\n f0 = fz[gi + 0] + fz[gi + k1];\n f3 = Util$3.SQRT2 * fz[gi + k3];\n f2 = Util$3.SQRT2 * fz[gi + k2];\n fz[gi + k2] = f0 - f2;\n fz[gi + 0] = f0 + f2;\n fz[gi + k3] = f1 - f3;\n fz[gi + k1] = f1 + f3;\n gi += k4;\n fi += k4;\n } while (fi < fn);\n c1 = costab[tri + 0];\n s1 = costab[tri + 1];\n for (i = 1; i < kx; i++) {\n var c2, s2;\n c2 = 1 - 2 * s1 * s1;\n s2 = 2 * s1 * c1;\n fi = fzPos + i;\n gi = fzPos + k1 - i;\n do {\n var a, b, g0, f0, f1, g1, f2, g2, f3, g3;\n b = s2 * fz[fi + k1] - c2 * fz[gi + k1];\n a = c2 * fz[fi + k1] + s2 * fz[gi + k1];\n f1 = fz[fi + 0] - a;\n f0 = fz[fi + 0] + a;\n g1 = fz[gi + 0] - b;\n g0 = fz[gi + 0] + b;\n b = s2 * fz[fi + k3] - c2 * fz[gi + k3];\n a = c2 * fz[fi + k3] + s2 * fz[gi + k3];\n f3 = fz[fi + k2] - a;\n f2 = fz[fi + k2] + a;\n g3 = fz[gi + k2] - b;\n g2 = fz[gi + k2] + b;\n b = s1 * f2 - c1 * g3;\n a = c1 * f2 + s1 * g3;\n fz[fi + k2] = f0 - a;\n fz[fi + 0] = f0 + a;\n fz[gi + k3] = g1 - b;\n fz[gi + k1] = g1 + b;\n b = c1 * g2 - s1 * f3;\n a = s1 * g2 + c1 * f3;\n fz[gi + k2] = g0 - a;\n fz[gi + 0] = g0 + a;\n fz[fi + k3] = f1 - b;\n fz[fi + k1] = f1 + b;\n gi += k4;\n fi += k4;\n } while (fi < fn);\n c2 = c1;\n c1 = c2 * costab[tri + 0] - s1 * costab[tri + 1];\n s1 = c2 * costab[tri + 1] + s1 * costab[tri + 0];\n }\n tri += 2;\n } while (k4 < n);\n }\n var rv_tbl = [\n 0,\n 128,\n 64,\n 192,\n 32,\n 160,\n 96,\n 224,\n 16,\n 144,\n 80,\n 208,\n 48,\n 176,\n 112,\n 240,\n 8,\n 136,\n 72,\n 200,\n 40,\n 168,\n 104,\n 232,\n 24,\n 152,\n 88,\n 216,\n 56,\n 184,\n 120,\n 248,\n 4,\n 132,\n 68,\n 196,\n 36,\n 164,\n 100,\n 228,\n 20,\n 148,\n 84,\n 212,\n 52,\n 180,\n 116,\n 244,\n 12,\n 140,\n 76,\n 204,\n 44,\n 172,\n 108,\n 236,\n 28,\n 156,\n 92,\n 220,\n 60,\n 188,\n 124,\n 252,\n 2,\n 130,\n 66,\n 194,\n 34,\n 162,\n 98,\n 226,\n 18,\n 146,\n 82,\n 210,\n 50,\n 178,\n 114,\n 242,\n 10,\n 138,\n 74,\n 202,\n 42,\n 170,\n 106,\n 234,\n 26,\n 154,\n 90,\n 218,\n 58,\n 186,\n 122,\n 250,\n 6,\n 134,\n 70,\n 198,\n 38,\n 166,\n 102,\n 230,\n 22,\n 150,\n 86,\n 214,\n 54,\n 182,\n 118,\n 246,\n 14,\n 142,\n 78,\n 206,\n 46,\n 174,\n 110,\n 238,\n 30,\n 158,\n 94,\n 222,\n 62,\n 190,\n 126,\n 254\n ];\n this.fft_short = function(gfc, x_real, chn, buffer, bufPos) {\n for (var b = 0; b < 3; b++) {\n var x = Encoder.BLKSIZE_s / 2;\n var k = 65535 & 576 / 3 * (b + 1);\n var j = Encoder.BLKSIZE_s / 8 - 1;\n do {\n var f0, f1, f2, f3, w;\n var i = rv_tbl[j << 2] & 255;\n f0 = window_s[i] * buffer[chn][bufPos + i + k];\n w = window_s[127 - i] * buffer[chn][bufPos + i + k + 128];\n f1 = f0 - w;\n f0 = f0 + w;\n f2 = window_s[i + 64] * buffer[chn][bufPos + i + k + 64];\n w = window_s[63 - i] * buffer[chn][bufPos + i + k + 192];\n f3 = f2 - w;\n f2 = f2 + w;\n x -= 4;\n x_real[b][x + 0] = f0 + f2;\n x_real[b][x + 2] = f0 - f2;\n x_real[b][x + 1] = f1 + f3;\n x_real[b][x + 3] = f1 - f3;\n f0 = window_s[i + 1] * buffer[chn][bufPos + i + k + 1];\n w = window_s[126 - i] * buffer[chn][bufPos + i + k + 129];\n f1 = f0 - w;\n f0 = f0 + w;\n f2 = window_s[i + 65] * buffer[chn][bufPos + i + k + 65];\n w = window_s[62 - i] * buffer[chn][bufPos + i + k + 193];\n f3 = f2 - w;\n f2 = f2 + w;\n x_real[b][x + Encoder.BLKSIZE_s / 2 + 0] = f0 + f2;\n x_real[b][x + Encoder.BLKSIZE_s / 2 + 2] = f0 - f2;\n x_real[b][x + Encoder.BLKSIZE_s / 2 + 1] = f1 + f3;\n x_real[b][x + Encoder.BLKSIZE_s / 2 + 3] = f1 - f3;\n } while (--j >= 0);\n fht(x_real[b], x, Encoder.BLKSIZE_s / 2);\n }\n };\n this.fft_long = function(gfc, y, chn, buffer, bufPos) {\n var jj = Encoder.BLKSIZE / 8 - 1;\n var x = Encoder.BLKSIZE / 2;\n do {\n var f0, f1, f2, f3, w;\n var i = rv_tbl[jj] & 255;\n f0 = window2[i] * buffer[chn][bufPos + i];\n w = window2[i + 512] * buffer[chn][bufPos + i + 512];\n f1 = f0 - w;\n f0 = f0 + w;\n f2 = window2[i + 256] * buffer[chn][bufPos + i + 256];\n w = window2[i + 768] * buffer[chn][bufPos + i + 768];\n f3 = f2 - w;\n f2 = f2 + w;\n x -= 4;\n y[x + 0] = f0 + f2;\n y[x + 2] = f0 - f2;\n y[x + 1] = f1 + f3;\n y[x + 3] = f1 - f3;\n f0 = window2[i + 1] * buffer[chn][bufPos + i + 1];\n w = window2[i + 513] * buffer[chn][bufPos + i + 513];\n f1 = f0 - w;\n f0 = f0 + w;\n f2 = window2[i + 257] * buffer[chn][bufPos + i + 257];\n w = window2[i + 769] * buffer[chn][bufPos + i + 769];\n f3 = f2 - w;\n f2 = f2 + w;\n y[x + Encoder.BLKSIZE / 2 + 0] = f0 + f2;\n y[x + Encoder.BLKSIZE / 2 + 2] = f0 - f2;\n y[x + Encoder.BLKSIZE / 2 + 1] = f1 + f3;\n y[x + Encoder.BLKSIZE / 2 + 3] = f1 - f3;\n } while (--jj >= 0);\n fht(y, x, Encoder.BLKSIZE / 2);\n };\n this.init_fft = function(gfc) {\n for (var i = 0; i < Encoder.BLKSIZE; i++) {\n window2[i] = 0.42 - 0.5 * Math.cos(2 * Math.PI * (i + 0.5) / Encoder.BLKSIZE) + 0.08 * Math.cos(4 * Math.PI * (i + 0.5) / Encoder.BLKSIZE);\n }\n for (var i = 0; i < Encoder.BLKSIZE_s / 2; i++) {\n window_s[i] = 0.5 * (1 - Math.cos(2 * Math.PI * (i + 0.5) / Encoder.BLKSIZE_s));\n }\n };\n}\nvar VbrMode$5 = common.VbrMode;\nvar Float$1 = common.Float;\nvar ShortBlock$2 = common.ShortBlock;\nvar Util$2 = common.Util;\nvar Arrays$5 = common.Arrays;\nvar new_float$a = common.new_float;\nvar new_float_n$3 = common.new_float_n;\nvar new_int$b = common.new_int;\nvar assert$9 = common.assert;\nfunction PsyModel() {\n var fft = new FFT();\n var LOG10 = 2.302585092994046;\n var rpelev = 2;\n var rpelev2 = 16;\n var rpelev_s = 2;\n var rpelev2_s = 16;\n var DELBARK = 0.34;\n var VO_SCALE = 1 / (14752 * 14752) / (Encoder.BLKSIZE / 2);\n var temporalmask_sustain_sec = 0.01;\n var NS_PREECHO_ATT0 = 0.8;\n var NS_PREECHO_ATT1 = 0.6;\n var NS_PREECHO_ATT2 = 0.3;\n var NS_MSFIX = 3.5;\n var NSFIRLEN = 21;\n var LN_TO_LOG10 = 0.2302585093;\n function NON_LINEAR_SCALE_ENERGY(x) {\n return x;\n }\n function psycho_loudness_approx(energy, gfc) {\n var loudness_power = 0;\n for (var i = 0; i < Encoder.BLKSIZE / 2; ++i) {\n loudness_power += energy[i] * gfc.ATH.eql_w[i];\n }\n loudness_power *= VO_SCALE;\n return loudness_power;\n }\n function compute_ffts(gfp, fftenergy, fftenergy_s, wsamp_l, wsamp_lPos, wsamp_s, wsamp_sPos, gr_out, chn, buffer, bufPos) {\n var gfc = gfp.internal_flags;\n if (chn < 2) {\n fft.fft_long(gfc, wsamp_l[wsamp_lPos], chn, buffer, bufPos);\n fft.fft_short(gfc, wsamp_s[wsamp_sPos], chn, buffer, bufPos);\n } else if (chn == 2) {\n for (var j = Encoder.BLKSIZE - 1; j >= 0; --j) {\n var l = wsamp_l[wsamp_lPos + 0][j];\n var r = wsamp_l[wsamp_lPos + 1][j];\n wsamp_l[wsamp_lPos + 0][j] = (l + r) * Util$2.SQRT2 * 0.5;\n wsamp_l[wsamp_lPos + 1][j] = (l - r) * Util$2.SQRT2 * 0.5;\n }\n for (var b = 2; b >= 0; --b) {\n for (var j = Encoder.BLKSIZE_s - 1; j >= 0; --j) {\n var l = wsamp_s[wsamp_sPos + 0][b][j];\n var r = wsamp_s[wsamp_sPos + 1][b][j];\n wsamp_s[wsamp_sPos + 0][b][j] = (l + r) * Util$2.SQRT2 * 0.5;\n wsamp_s[wsamp_sPos + 1][b][j] = (l - r) * Util$2.SQRT2 * 0.5;\n }\n }\n }\n fftenergy[0] = NON_LINEAR_SCALE_ENERGY(wsamp_l[wsamp_lPos + 0][0]);\n fftenergy[0] *= fftenergy[0];\n for (var j = Encoder.BLKSIZE / 2 - 1; j >= 0; --j) {\n var re = wsamp_l[wsamp_lPos + 0][Encoder.BLKSIZE / 2 - j];\n var im = wsamp_l[wsamp_lPos + 0][Encoder.BLKSIZE / 2 + j];\n fftenergy[Encoder.BLKSIZE / 2 - j] = NON_LINEAR_SCALE_ENERGY(\n (re * re + im * im) * 0.5\n );\n }\n for (var b = 2; b >= 0; --b) {\n fftenergy_s[b][0] = wsamp_s[wsamp_sPos + 0][b][0];\n fftenergy_s[b][0] *= fftenergy_s[b][0];\n for (var j = Encoder.BLKSIZE_s / 2 - 1; j >= 0; --j) {\n var re = wsamp_s[wsamp_sPos + 0][b][Encoder.BLKSIZE_s / 2 - j];\n var im = wsamp_s[wsamp_sPos + 0][b][Encoder.BLKSIZE_s / 2 + j];\n fftenergy_s[b][Encoder.BLKSIZE_s / 2 - j] = NON_LINEAR_SCALE_ENERGY(\n (re * re + im * im) * 0.5\n );\n }\n }\n {\n var totalenergy = 0;\n for (var j = 11; j < Encoder.HBLKSIZE; j++)\n totalenergy += fftenergy[j];\n gfc.tot_ener[chn] = totalenergy;\n }\n if (gfp.analysis) {\n for (var j = 0; j < Encoder.HBLKSIZE; j++) {\n gfc.pinfo.energy[gr_out][chn][j] = gfc.pinfo.energy_save[chn][j];\n gfc.pinfo.energy_save[chn][j] = fftenergy[j];\n }\n gfc.pinfo.pe[gr_out][chn] = gfc.pe[chn];\n }\n if (gfp.athaa_loudapprox == 2 && chn < 2) {\n gfc.loudness_sq[gr_out][chn] = gfc.loudness_sq_save[chn];\n gfc.loudness_sq_save[chn] = psycho_loudness_approx(fftenergy, gfc);\n }\n }\n var I1LIMIT = 8;\n var I2LIMIT = 23;\n var MLIMIT = 15;\n var ma_max_i1;\n var ma_max_i2;\n var ma_max_m;\n var tab = [\n 1,\n 0.79433,\n 0.63096,\n 0.63096,\n 0.63096,\n 0.63096,\n 0.63096,\n 0.25119,\n 0.11749\n ];\n function init_mask_add_max_values() {\n ma_max_i1 = Math.pow(10, (I1LIMIT + 1) / 16);\n ma_max_i2 = Math.pow(10, (I2LIMIT + 1) / 16);\n ma_max_m = Math.pow(10, MLIMIT / 10);\n }\n var table1 = [\n 3.3246 * 3.3246,\n 3.23837 * 3.23837,\n 3.15437 * 3.15437,\n 3.00412 * 3.00412,\n 2.86103 * 2.86103,\n 2.65407 * 2.65407,\n 2.46209 * 2.46209,\n 2.284 * 2.284,\n 2.11879 * 2.11879,\n 1.96552 * 1.96552,\n 1.82335 * 1.82335,\n 1.69146 * 1.69146,\n 1.56911 * 1.56911,\n 1.46658 * 1.46658,\n 1.37074 * 1.37074,\n 1.31036 * 1.31036,\n 1.25264 * 1.25264,\n 1.20648 * 1.20648,\n 1.16203 * 1.16203,\n 1.12765 * 1.12765,\n 1.09428 * 1.09428,\n 1.0659 * 1.0659,\n 1.03826 * 1.03826,\n 1.01895 * 1.01895,\n 1\n ];\n var table2 = [\n 1.33352 * 1.33352,\n 1.35879 * 1.35879,\n 1.38454 * 1.38454,\n 1.39497 * 1.39497,\n 1.40548 * 1.40548,\n 1.3537 * 1.3537,\n 1.30382 * 1.30382,\n 1.22321 * 1.22321,\n 1.14758 * 1.14758,\n 1\n ];\n var table3 = [\n 2.35364 * 2.35364,\n 2.29259 * 2.29259,\n 2.23313 * 2.23313,\n 2.12675 * 2.12675,\n 2.02545 * 2.02545,\n 1.87894 * 1.87894,\n 1.74303 * 1.74303,\n 1.61695 * 1.61695,\n 1.49999 * 1.49999,\n 1.39148 * 1.39148,\n 1.29083 * 1.29083,\n 1.19746 * 1.19746,\n 1.11084 * 1.11084,\n 1.03826 * 1.03826\n ];\n function mask_add(m1, m2, kk, b, gfc, shortblock) {\n var ratio;\n if (m2 > m1) {\n if (m2 < m1 * ma_max_i2)\n ratio = m2 / m1;\n else\n return m1 + m2;\n } else {\n if (m1 >= m2 * ma_max_i2)\n return m1 + m2;\n ratio = m1 / m2;\n }\n m1 += m2;\n if (b + 3 <= 3 + 3) {\n if (ratio >= ma_max_i1) {\n return m1;\n }\n var i = 0 | Util$2.FAST_LOG10_X(ratio, 16);\n return m1 * table2[i];\n }\n var i = 0 | Util$2.FAST_LOG10_X(ratio, 16);\n if (shortblock != 0) {\n m2 = gfc.ATH.cb_s[kk] * gfc.ATH.adjust;\n } else {\n m2 = gfc.ATH.cb_l[kk] * gfc.ATH.adjust;\n }\n if (m1 < ma_max_m * m2) {\n if (m1 > m2) {\n var f, r;\n f = 1;\n if (i <= 13)\n f = table3[i];\n r = Util$2.FAST_LOG10_X(m1 / m2, 10 / 15);\n return m1 * ((table1[i] - f) * r + f);\n }\n if (i > 13)\n return m1;\n return m1 * table3[i];\n }\n return m1 * table1[i];\n }\n var table2_ = [\n 1.33352 * 1.33352,\n 1.35879 * 1.35879,\n 1.38454 * 1.38454,\n 1.39497 * 1.39497,\n 1.40548 * 1.40548,\n 1.3537 * 1.3537,\n 1.30382 * 1.30382,\n 1.22321 * 1.22321,\n 1.14758 * 1.14758,\n 1\n ];\n function vbrpsy_mask_add(m1, m2, b) {\n var ratio;\n if (m1 < 0) {\n m1 = 0;\n }\n if (m2 < 0) {\n m2 = 0;\n }\n if (m1 <= 0) {\n return m2;\n }\n if (m2 <= 0) {\n return m1;\n }\n if (m2 > m1) {\n ratio = m2 / m1;\n } else {\n ratio = m1 / m2;\n }\n if (b >= -2 && b <= 2) {\n if (ratio >= ma_max_i1) {\n return m1 + m2;\n } else {\n var i = 0 | Util$2.FAST_LOG10_X(ratio, 16);\n return (m1 + m2) * table2_[i];\n }\n }\n if (ratio < ma_max_i2) {\n return m1 + m2;\n }\n if (m1 < m2) {\n m1 = m2;\n }\n return m1;\n }\n function calc_interchannel_masking(gfp, ratio) {\n var gfc = gfp.internal_flags;\n if (gfc.channels_out > 1) {\n for (var sb = 0; sb < Encoder.SBMAX_l; sb++) {\n var l = gfc.thm[0].l[sb];\n var r = gfc.thm[1].l[sb];\n gfc.thm[0].l[sb] += r * ratio;\n gfc.thm[1].l[sb] += l * ratio;\n }\n for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n for (var sblock = 0; sblock < 3; sblock++) {\n var l = gfc.thm[0].s[sb][sblock];\n var r = gfc.thm[1].s[sb][sblock];\n gfc.thm[0].s[sb][sblock] += r * ratio;\n gfc.thm[1].s[sb][sblock] += l * ratio;\n }\n }\n }\n }\n function msfix1(gfc) {\n for (var sb = 0; sb < Encoder.SBMAX_l; sb++) {\n if (gfc.thm[0].l[sb] > 1.58 * gfc.thm[1].l[sb] || gfc.thm[1].l[sb] > 1.58 * gfc.thm[0].l[sb]) {\n continue;\n }\n var mld = gfc.mld_l[sb] * gfc.en[3].l[sb];\n var rmid = Math.max(gfc.thm[2].l[sb], Math.min(gfc.thm[3].l[sb], mld));\n mld = gfc.mld_l[sb] * gfc.en[2].l[sb];\n var rside = Math.max(gfc.thm[3].l[sb], Math.min(gfc.thm[2].l[sb], mld));\n gfc.thm[2].l[sb] = rmid;\n gfc.thm[3].l[sb] = rside;\n }\n for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n for (var sblock = 0; sblock < 3; sblock++) {\n if (gfc.thm[0].s[sb][sblock] > 1.58 * gfc.thm[1].s[sb][sblock] || gfc.thm[1].s[sb][sblock] > 1.58 * gfc.thm[0].s[sb][sblock]) {\n continue;\n }\n var mld = gfc.mld_s[sb] * gfc.en[3].s[sb][sblock];\n var rmid = Math.max(\n gfc.thm[2].s[sb][sblock],\n Math.min(gfc.thm[3].s[sb][sblock], mld)\n );\n mld = gfc.mld_s[sb] * gfc.en[2].s[sb][sblock];\n var rside = Math.max(\n gfc.thm[3].s[sb][sblock],\n Math.min(gfc.thm[2].s[sb][sblock], mld)\n );\n gfc.thm[2].s[sb][sblock] = rmid;\n gfc.thm[3].s[sb][sblock] = rside;\n }\n }\n }\n function ns_msfix(gfc, msfix, athadjust) {\n var msfix2 = msfix;\n var athlower = Math.pow(10, athadjust);\n msfix *= 2;\n msfix2 *= 2;\n for (var sb = 0; sb < Encoder.SBMAX_l; sb++) {\n var thmLR, thmM, thmS, ath;\n ath = gfc.ATH.cb_l[gfc.bm_l[sb]] * athlower;\n thmLR = Math.min(\n Math.max(gfc.thm[0].l[sb], ath),\n Math.max(gfc.thm[1].l[sb], ath)\n );\n thmM = Math.max(gfc.thm[2].l[sb], ath);\n thmS = Math.max(gfc.thm[3].l[sb], ath);\n if (thmLR * msfix < thmM + thmS) {\n var f = thmLR * msfix2 / (thmM + thmS);\n thmM *= f;\n thmS *= f;\n }\n gfc.thm[2].l[sb] = Math.min(thmM, gfc.thm[2].l[sb]);\n gfc.thm[3].l[sb] = Math.min(thmS, gfc.thm[3].l[sb]);\n }\n athlower *= Encoder.BLKSIZE_s / Encoder.BLKSIZE;\n for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n for (var sblock = 0; sblock < 3; sblock++) {\n var thmLR, thmM, thmS, ath;\n ath = gfc.ATH.cb_s[gfc.bm_s[sb]] * athlower;\n thmLR = Math.min(\n Math.max(gfc.thm[0].s[sb][sblock], ath),\n Math.max(gfc.thm[1].s[sb][sblock], ath)\n );\n thmM = Math.max(gfc.thm[2].s[sb][sblock], ath);\n thmS = Math.max(gfc.thm[3].s[sb][sblock], ath);\n if (thmLR * msfix < thmM + thmS) {\n var f = thmLR * msfix / (thmM + thmS);\n thmM *= f;\n thmS *= f;\n }\n gfc.thm[2].s[sb][sblock] = Math.min(gfc.thm[2].s[sb][sblock], thmM);\n gfc.thm[3].s[sb][sblock] = Math.min(gfc.thm[3].s[sb][sblock], thmS);\n }\n }\n }\n function convert_partition2scalefac_s(gfc, eb, thr, chn, sblock) {\n var sb, b;\n var enn = 0;\n var thmm = 0;\n for (sb = b = 0; sb < Encoder.SBMAX_s; ++b, ++sb) {\n var bo_s_sb = gfc.bo_s[sb];\n var npart_s = gfc.npart_s;\n var b_lim = bo_s_sb < npart_s ? bo_s_sb : npart_s;\n while (b < b_lim) {\n assert$9(eb[b] >= 0);\n assert$9(thr[b] >= 0);\n enn += eb[b];\n thmm += thr[b];\n b++;\n }\n gfc.en[chn].s[sb][sblock] = enn;\n gfc.thm[chn].s[sb][sblock] = thmm;\n if (b >= npart_s) {\n ++sb;\n break;\n }\n assert$9(eb[b] >= 0);\n assert$9(thr[b] >= 0);\n {\n var w_curr = gfc.PSY.bo_s_weight[sb];\n var w_next = 1 - w_curr;\n enn = w_curr * eb[b];\n thmm = w_curr * thr[b];\n gfc.en[chn].s[sb][sblock] += enn;\n gfc.thm[chn].s[sb][sblock] += thmm;\n enn = w_next * eb[b];\n thmm = w_next * thr[b];\n }\n }\n for (; sb < Encoder.SBMAX_s; ++sb) {\n gfc.en[chn].s[sb][sblock] = 0;\n gfc.thm[chn].s[sb][sblock] = 0;\n }\n }\n function convert_partition2scalefac_l(gfc, eb, thr, chn) {\n var sb, b;\n var enn = 0;\n var thmm = 0;\n for (sb = b = 0; sb < Encoder.SBMAX_l; ++b, ++sb) {\n var bo_l_sb = gfc.bo_l[sb];\n var npart_l = gfc.npart_l;\n var b_lim = bo_l_sb < npart_l ? bo_l_sb : npart_l;\n while (b < b_lim) {\n assert$9(eb[b] >= 0);\n assert$9(thr[b] >= 0);\n enn += eb[b];\n thmm += thr[b];\n b++;\n }\n gfc.en[chn].l[sb] = enn;\n gfc.thm[chn].l[sb] = thmm;\n if (b >= npart_l) {\n ++sb;\n break;\n }\n assert$9(eb[b] >= 0);\n assert$9(thr[b] >= 0);\n {\n var w_curr = gfc.PSY.bo_l_weight[sb];\n var w_next = 1 - w_curr;\n enn = w_curr * eb[b];\n thmm = w_curr * thr[b];\n gfc.en[chn].l[sb] += enn;\n gfc.thm[chn].l[sb] += thmm;\n enn = w_next * eb[b];\n thmm = w_next * thr[b];\n }\n }\n for (; sb < Encoder.SBMAX_l; ++sb) {\n gfc.en[chn].l[sb] = 0;\n gfc.thm[chn].l[sb] = 0;\n }\n }\n function compute_masking_s(gfp, fftenergy_s, eb, thr, chn, sblock) {\n var gfc = gfp.internal_flags;\n var j, b;\n for (b = j = 0; b < gfc.npart_s; ++b) {\n var ebb = 0;\n var n = gfc.numlines_s[b];\n for (var i = 0; i < n; ++i, ++j) {\n var el = fftenergy_s[sblock][j];\n ebb += el;\n }\n eb[b] = ebb;\n }\n assert$9(b == gfc.npart_s);\n for (j = b = 0; b < gfc.npart_s; b++) {\n var kk = gfc.s3ind_s[b][0];\n var ecb = gfc.s3_ss[j++] * eb[kk];\n ++kk;\n while (kk <= gfc.s3ind_s[b][1]) {\n ecb += gfc.s3_ss[j] * eb[kk];\n ++j;\n ++kk;\n }\n {\n var x = rpelev_s * gfc.nb_s1[chn][b];\n thr[b] = Math.min(ecb, x);\n }\n if (gfc.blocktype_old[chn & 1] == Encoder.SHORT_TYPE) {\n var x = rpelev2_s * gfc.nb_s2[chn][b];\n var y = thr[b];\n thr[b] = Math.min(x, y);\n }\n gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n gfc.nb_s1[chn][b] = ecb;\n assert$9(thr[b] >= 0);\n }\n for (; b <= Encoder.CBANDS; ++b) {\n eb[b] = 0;\n thr[b] = 0;\n }\n }\n function block_type_set(gfp, uselongblock, blocktype_d, blocktype) {\n var gfc = gfp.internal_flags;\n if (gfp.short_blocks == ShortBlock$2.short_block_coupled && !(uselongblock[0] != 0 && uselongblock[1] != 0)) {\n uselongblock[0] = uselongblock[1] = 0;\n }\n for (var chn = 0; chn < gfc.channels_out; chn++) {\n blocktype[chn] = Encoder.NORM_TYPE;\n if (gfp.short_blocks == ShortBlock$2.short_block_dispensed) {\n uselongblock[chn] = 1;\n }\n if (gfp.short_blocks == ShortBlock$2.short_block_forced) {\n uselongblock[chn] = 0;\n }\n if (uselongblock[chn] != 0) {\n assert$9(gfc.blocktype_old[chn] != Encoder.START_TYPE);\n if (gfc.blocktype_old[chn] == Encoder.SHORT_TYPE) {\n blocktype[chn] = Encoder.STOP_TYPE;\n }\n } else {\n blocktype[chn] = Encoder.SHORT_TYPE;\n if (gfc.blocktype_old[chn] == Encoder.NORM_TYPE) {\n gfc.blocktype_old[chn] = Encoder.START_TYPE;\n }\n if (gfc.blocktype_old[chn] == Encoder.STOP_TYPE) {\n gfc.blocktype_old[chn] = Encoder.SHORT_TYPE;\n }\n }\n blocktype_d[chn] = gfc.blocktype_old[chn];\n gfc.blocktype_old[chn] = blocktype[chn];\n }\n }\n function NS_INTERP(x, y, r) {\n if (r >= 1) {\n return x;\n }\n if (r <= 0)\n return y;\n if (y > 0) {\n return Math.pow(x / y, r) * y;\n }\n return 0;\n }\n var regcoef_s = [\n 11.8,\n 13.6,\n 17.2,\n 32,\n 46.5,\n 51.3,\n 57.5,\n 67.1,\n 71.5,\n 84.6,\n 97.6,\n 130\n ];\n function pecalc_s(mr, masking_lower) {\n var pe_s = 1236.28 / 4;\n for (var sb = 0; sb < Encoder.SBMAX_s - 1; sb++) {\n for (var sblock = 0; sblock < 3; sblock++) {\n var thm = mr.thm.s[sb][sblock];\n if (thm > 0) {\n var x = thm * masking_lower;\n var en = mr.en.s[sb][sblock];\n if (en > x) {\n if (en > x * 1e10) {\n pe_s += regcoef_s[sb] * (10 * LOG10);\n } else {\n pe_s += regcoef_s[sb] * Util$2.FAST_LOG10(en / x);\n }\n }\n }\n }\n }\n return pe_s;\n }\n var regcoef_l = [\n 6.8,\n 5.8,\n 5.8,\n 6.4,\n 6.5,\n 9.9,\n 12.1,\n 14.4,\n 15,\n 18.9,\n 21.6,\n 26.9,\n 34.2,\n 40.2,\n 46.8,\n 56.5,\n 60.7,\n 73.9,\n 85.7,\n 93.4,\n 126.1\n ];\n function pecalc_l(mr, masking_lower) {\n var pe_l = 1124.23 / 4;\n for (var sb = 0; sb < Encoder.SBMAX_l - 1; sb++) {\n var thm = mr.thm.l[sb];\n if (thm > 0) {\n var x = thm * masking_lower;\n var en = mr.en.l[sb];\n if (en > x) {\n if (en > x * 1e10) {\n pe_l += regcoef_l[sb] * (10 * LOG10);\n } else {\n pe_l += regcoef_l[sb] * Util$2.FAST_LOG10(en / x);\n }\n }\n }\n }\n return pe_l;\n }\n function calc_energy(gfc, fftenergy, eb, max, avg) {\n var b, j;\n for (b = j = 0; b < gfc.npart_l; ++b) {\n var ebb = 0;\n var m = 0;\n var i;\n for (i = 0; i < gfc.numlines_l[b]; ++i, ++j) {\n var el = fftenergy[j];\n ebb += el;\n if (m < el)\n m = el;\n }\n eb[b] = ebb;\n max[b] = m;\n avg[b] = ebb * gfc.rnumlines_l[b];\n assert$9(gfc.rnumlines_l[b] >= 0);\n assert$9(eb[b] >= 0);\n assert$9(max[b] >= 0);\n assert$9(avg[b] >= 0);\n }\n }\n function calc_mask_index_l(gfc, max, avg, mask_idx) {\n var last_tab_entry = tab.length - 1;\n var b = 0;\n var a = avg[b] + avg[b + 1];\n if (a > 0) {\n var m = max[b];\n if (m < max[b + 1])\n m = max[b + 1];\n assert$9(gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1 > 0);\n a = 20 * (m * 2 - a) / (a * (gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n for (b = 1; b < gfc.npart_l - 1; b++) {\n a = avg[b - 1] + avg[b] + avg[b + 1];\n if (a > 0) {\n var m = max[b - 1];\n if (m < max[b])\n m = max[b];\n if (m < max[b + 1])\n m = max[b + 1];\n assert$9(\n gfc.numlines_l[b - 1] + gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1 > 0\n );\n a = 20 * (m * 3 - a) / (a * (gfc.numlines_l[b - 1] + gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n }\n assert$9(b == gfc.npart_l - 1);\n a = avg[b - 1] + avg[b];\n if (a > 0) {\n var m = max[b - 1];\n if (m < max[b])\n m = max[b];\n assert$9(gfc.numlines_l[b - 1] + gfc.numlines_l[b] - 1 > 0);\n a = 20 * (m * 2 - a) / (a * (gfc.numlines_l[b - 1] + gfc.numlines_l[b] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n assert$9(b == gfc.npart_l - 1);\n }\n var fircoef = [\n -865163e-23 * 2,\n -851586e-8 * 2,\n -674764e-23 * 2,\n 0.0209036 * 2,\n -336639e-22 * 2,\n -0.0438162 * 2,\n -154175e-22 * 2,\n 0.0931738 * 2,\n -552212e-22 * 2,\n -0.313819 * 2\n ];\n this.L3psycho_anal_ns = function(gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, percep_entropy, percep_MS_entropy, energy, blocktype_d) {\n var gfc = gfp.internal_flags;\n var wsamp_L = new_float_n$3([2, Encoder.BLKSIZE]);\n var wsamp_S = new_float_n$3([2, 3, Encoder.BLKSIZE_s]);\n var eb_l = new_float$a(Encoder.CBANDS + 1);\n var eb_s = new_float$a(Encoder.CBANDS + 1);\n var thr = new_float$a(Encoder.CBANDS + 2);\n var blocktype = new_int$b(2);\n var uselongblock = new_int$b(2);\n var numchn, chn;\n var b, i, j, k;\n var sb, sblock;\n var ns_hpfsmpl = new_float_n$3([2, 576]);\n var pcfact;\n var mask_idx_l = new_int$b(Encoder.CBANDS + 2);\n var mask_idx_s = new_int$b(Encoder.CBANDS + 2);\n Arrays$5.fill(mask_idx_s, 0);\n numchn = gfc.channels_out;\n if (gfp.mode == MPEGMode.JOINT_STEREO)\n numchn = 4;\n if (gfp.VBR == VbrMode$5.vbr_off) {\n pcfact = gfc.ResvMax == 0 ? 0 : gfc.ResvSize / gfc.ResvMax * 0.5;\n } else if (gfp.VBR == VbrMode$5.vbr_rh || gfp.VBR == VbrMode$5.vbr_mtrh || gfp.VBR == VbrMode$5.vbr_mt) {\n pcfact = 0.6;\n } else\n pcfact = 1;\n for (chn = 0; chn < gfc.channels_out; chn++) {\n var firbuf2 = buffer[chn];\n var firbufPos = bufPos + 576 - 350 - NSFIRLEN + 192;\n for (i = 0; i < 576; i++) {\n var sum1, sum2;\n sum1 = firbuf2[firbufPos + i + 10];\n sum2 = 0;\n for (j = 0; j < (NSFIRLEN - 1) / 2 - 1; j += 2) {\n sum1 += fircoef[j] * (firbuf2[firbufPos + i + j] + firbuf2[firbufPos + i + NSFIRLEN - j]);\n sum2 += fircoef[j + 1] * (firbuf2[firbufPos + i + j + 1] + firbuf2[firbufPos + i + NSFIRLEN - j - 1]);\n }\n ns_hpfsmpl[chn][i] = sum1 + sum2;\n }\n masking_ratio[gr_out][chn].en.assign(gfc.en[chn]);\n masking_ratio[gr_out][chn].thm.assign(gfc.thm[chn]);\n if (numchn > 2) {\n masking_MS_ratio[gr_out][chn].en.assign(gfc.en[chn + 2]);\n masking_MS_ratio[gr_out][chn].thm.assign(gfc.thm[chn + 2]);\n }\n }\n for (chn = 0; chn < numchn; chn++) {\n var wsamp_l;\n var wsamp_s;\n var en_subshort = new_float$a(12);\n var en_short = [0, 0, 0, 0];\n var attack_intensity = new_float$a(12);\n var ns_uselongblock = 1;\n var attackThreshold;\n var max = new_float$a(Encoder.CBANDS);\n var avg = new_float$a(Encoder.CBANDS);\n var ns_attacks = [0, 0, 0, 0];\n var fftenergy = new_float$a(Encoder.HBLKSIZE);\n var fftenergy_s = new_float_n$3([3, Encoder.HBLKSIZE_s]);\n assert$9(gfc.npart_s <= Encoder.CBANDS);\n assert$9(gfc.npart_l <= Encoder.CBANDS);\n for (i = 0; i < 3; i++) {\n en_subshort[i] = gfc.nsPsy.last_en_subshort[chn][i + 6];\n assert$9(gfc.nsPsy.last_en_subshort[chn][i + 4] > 0);\n attack_intensity[i] = en_subshort[i] / gfc.nsPsy.last_en_subshort[chn][i + 4];\n en_short[0] += en_subshort[i];\n }\n if (chn == 2) {\n for (i = 0; i < 576; i++) {\n var l, r;\n l = ns_hpfsmpl[0][i];\n r = ns_hpfsmpl[1][i];\n ns_hpfsmpl[0][i] = l + r;\n ns_hpfsmpl[1][i] = l - r;\n }\n }\n {\n var pf = ns_hpfsmpl[chn & 1];\n var pfPos = 0;\n for (i = 0; i < 9; i++) {\n var pfe = pfPos + 576 / 9;\n var p2 = 1;\n for (; pfPos < pfe; pfPos++) {\n if (p2 < Math.abs(pf[pfPos]))\n p2 = Math.abs(pf[pfPos]);\n }\n gfc.nsPsy.last_en_subshort[chn][i] = en_subshort[i + 3] = p2;\n en_short[1 + i / 3] += p2;\n if (p2 > en_subshort[i + 3 - 2]) {\n assert$9(en_subshort[i + 3 - 2] > 0);\n p2 = p2 / en_subshort[i + 3 - 2];\n } else if (en_subshort[i + 3 - 2] > p2 * 10) {\n p2 = en_subshort[i + 3 - 2] / (p2 * 10);\n } else\n p2 = 0;\n attack_intensity[i + 3] = p2;\n }\n }\n if (gfp.analysis) {\n var x = attack_intensity[0];\n for (i = 1; i < 12; i++) {\n if (x < attack_intensity[i])\n x = attack_intensity[i];\n }\n gfc.pinfo.ers[gr_out][chn] = gfc.pinfo.ers_save[chn];\n gfc.pinfo.ers_save[chn] = x;\n }\n attackThreshold = chn == 3 ? gfc.nsPsy.attackthre_s : gfc.nsPsy.attackthre;\n for (i = 0; i < 12; i++) {\n if (ns_attacks[i / 3] == 0 && attack_intensity[i] > attackThreshold) {\n ns_attacks[i / 3] = i % 3 + 1;\n }\n }\n for (i = 1; i < 4; i++) {\n var ratio;\n if (en_short[i - 1] > en_short[i]) {\n assert$9(en_short[i] > 0);\n ratio = en_short[i - 1] / en_short[i];\n } else {\n assert$9(en_short[i - 1] > 0);\n ratio = en_short[i] / en_short[i - 1];\n }\n if (ratio < 1.7) {\n ns_attacks[i] = 0;\n if (i == 1)\n ns_attacks[0] = 0;\n }\n }\n if (ns_attacks[0] != 0 && gfc.nsPsy.lastAttacks[chn] != 0) {\n ns_attacks[0] = 0;\n }\n if (gfc.nsPsy.lastAttacks[chn] == 3 || ns_attacks[0] + ns_attacks[1] + ns_attacks[2] + ns_attacks[3] != 0) {\n ns_uselongblock = 0;\n if (ns_attacks[1] != 0 && ns_attacks[0] != 0)\n ns_attacks[1] = 0;\n if (ns_attacks[2] != 0 && ns_attacks[1] != 0)\n ns_attacks[2] = 0;\n if (ns_attacks[3] != 0 && ns_attacks[2] != 0)\n ns_attacks[3] = 0;\n }\n if (chn < 2) {\n uselongblock[chn] = ns_uselongblock;\n } else {\n if (ns_uselongblock == 0) {\n uselongblock[0] = uselongblock[1] = 0;\n }\n }\n energy[chn] = gfc.tot_ener[chn];\n wsamp_s = wsamp_S;\n wsamp_l = wsamp_L;\n compute_ffts(\n gfp,\n fftenergy,\n fftenergy_s,\n wsamp_l,\n chn & 1,\n wsamp_s,\n chn & 1,\n gr_out,\n chn,\n buffer,\n bufPos\n );\n calc_energy(gfc, fftenergy, eb_l, max, avg);\n calc_mask_index_l(gfc, max, avg, mask_idx_l);\n for (sblock = 0; sblock < 3; sblock++) {\n var enn, thmm;\n compute_masking_s(gfp, fftenergy_s, eb_s, thr, chn, sblock);\n convert_partition2scalefac_s(gfc, eb_s, thr, chn, sblock);\n for (sb = 0; sb < Encoder.SBMAX_s; sb++) {\n thmm = gfc.thm[chn].s[sb][sblock];\n thmm *= NS_PREECHO_ATT0;\n if (ns_attacks[sblock] >= 2 || ns_attacks[sblock + 1] == 1) {\n var idx = sblock != 0 ? sblock - 1 : 2;\n var p2 = NS_INTERP(\n gfc.thm[chn].s[sb][idx],\n thmm,\n NS_PREECHO_ATT1 * pcfact\n );\n thmm = Math.min(thmm, p2);\n }\n if (ns_attacks[sblock] == 1) {\n var idx = sblock != 0 ? sblock - 1 : 2;\n var p2 = NS_INTERP(\n gfc.thm[chn].s[sb][idx],\n thmm,\n NS_PREECHO_ATT2 * pcfact\n );\n thmm = Math.min(thmm, p2);\n } else if (sblock != 0 && ns_attacks[sblock - 1] == 3 || sblock == 0 && gfc.nsPsy.lastAttacks[chn] == 3) {\n var idx = sblock != 2 ? sblock + 1 : 0;\n var p2 = NS_INTERP(\n gfc.thm[chn].s[sb][idx],\n thmm,\n NS_PREECHO_ATT2 * pcfact\n );\n thmm = Math.min(thmm, p2);\n }\n enn = en_subshort[sblock * 3 + 3] + en_subshort[sblock * 3 + 4] + en_subshort[sblock * 3 + 5];\n if (en_subshort[sblock * 3 + 5] * 6 < enn) {\n thmm *= 0.5;\n if (en_subshort[sblock * 3 + 4] * 6 < enn)\n thmm *= 0.5;\n }\n gfc.thm[chn].s[sb][sblock] = thmm;\n }\n }\n gfc.nsPsy.lastAttacks[chn] = ns_attacks[2];\n k = 0;\n {\n for (b = 0; b < gfc.npart_l; b++) {\n var kk = gfc.s3ind[b][0];\n var eb2 = eb_l[kk] * tab[mask_idx_l[kk]];\n var ecb = gfc.s3_ll[k++] * eb2;\n while (++kk <= gfc.s3ind[b][1]) {\n eb2 = eb_l[kk] * tab[mask_idx_l[kk]];\n ecb = mask_add(ecb, gfc.s3_ll[k++] * eb2, kk, kk - b, gfc, 0);\n }\n ecb *= 0.158489319246111;\n if (gfc.blocktype_old[chn & 1] == Encoder.SHORT_TYPE)\n thr[b] = ecb;\n else {\n thr[b] = NS_INTERP(\n Math.min(\n ecb,\n Math.min(rpelev * gfc.nb_1[chn][b], rpelev2 * gfc.nb_2[chn][b])\n ),\n ecb,\n pcfact\n );\n }\n gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n gfc.nb_1[chn][b] = ecb;\n }\n }\n for (; b <= Encoder.CBANDS; ++b) {\n eb_l[b] = 0;\n thr[b] = 0;\n }\n convert_partition2scalefac_l(gfc, eb_l, thr, chn);\n }\n if (gfp.mode == MPEGMode.STEREO || gfp.mode == MPEGMode.JOINT_STEREO) {\n if (gfp.interChRatio > 0) {\n calc_interchannel_masking(gfp, gfp.interChRatio);\n }\n }\n if (gfp.mode == MPEGMode.JOINT_STEREO) {\n var msfix;\n msfix1(gfc);\n msfix = gfp.msfix;\n if (Math.abs(msfix) > 0) {\n ns_msfix(gfc, msfix, gfp.ATHlower * gfc.ATH.adjust);\n }\n }\n block_type_set(gfp, uselongblock, blocktype_d, blocktype);\n for (chn = 0; chn < numchn; chn++) {\n var ppe;\n var ppePos = 0;\n var type;\n var mr;\n if (chn > 1) {\n ppe = percep_MS_entropy;\n ppePos = -2;\n type = Encoder.NORM_TYPE;\n if (blocktype_d[0] == Encoder.SHORT_TYPE || blocktype_d[1] == Encoder.SHORT_TYPE) {\n type = Encoder.SHORT_TYPE;\n }\n mr = masking_MS_ratio[gr_out][chn - 2];\n } else {\n ppe = percep_entropy;\n ppePos = 0;\n type = blocktype_d[chn];\n mr = masking_ratio[gr_out][chn];\n }\n if (type == Encoder.SHORT_TYPE) {\n ppe[ppePos + chn] = pecalc_s(mr, gfc.masking_lower);\n } else\n ppe[ppePos + chn] = pecalc_l(mr, gfc.masking_lower);\n if (gfp.analysis)\n gfc.pinfo.pe[gr_out][chn] = ppe[ppePos + chn];\n }\n return 0;\n };\n function vbrpsy_compute_fft_l(gfp, buffer, bufPos, chn, gr_out, fftenergy, wsamp_l, wsamp_lPos) {\n var gfc = gfp.internal_flags;\n if (chn < 2) {\n fft.fft_long(gfc, wsamp_l[wsamp_lPos], chn, buffer, bufPos);\n } else if (chn == 2) {\n for (var j = Encoder.BLKSIZE - 1; j >= 0; --j) {\n var l = wsamp_l[wsamp_lPos + 0][j];\n var r = wsamp_l[wsamp_lPos + 1][j];\n wsamp_l[wsamp_lPos + 0][j] = (l + r) * Util$2.SQRT2 * 0.5;\n wsamp_l[wsamp_lPos + 1][j] = (l - r) * Util$2.SQRT2 * 0.5;\n }\n }\n fftenergy[0] = NON_LINEAR_SCALE_ENERGY(wsamp_l[wsamp_lPos + 0][0]);\n fftenergy[0] *= fftenergy[0];\n for (var j = Encoder.BLKSIZE / 2 - 1; j >= 0; --j) {\n var re = wsamp_l[wsamp_lPos + 0][Encoder.BLKSIZE / 2 - j];\n var im = wsamp_l[wsamp_lPos + 0][Encoder.BLKSIZE / 2 + j];\n fftenergy[Encoder.BLKSIZE / 2 - j] = NON_LINEAR_SCALE_ENERGY(\n (re * re + im * im) * 0.5\n );\n }\n {\n var totalenergy = 0;\n for (var j = 11; j < Encoder.HBLKSIZE; j++)\n totalenergy += fftenergy[j];\n gfc.tot_ener[chn] = totalenergy;\n }\n if (gfp.analysis) {\n for (var j = 0; j < Encoder.HBLKSIZE; j++) {\n gfc.pinfo.energy[gr_out][chn][j] = gfc.pinfo.energy_save[chn][j];\n gfc.pinfo.energy_save[chn][j] = fftenergy[j];\n }\n gfc.pinfo.pe[gr_out][chn] = gfc.pe[chn];\n }\n }\n function vbrpsy_compute_fft_s(gfp, buffer, bufPos, chn, sblock, fftenergy_s, wsamp_s, wsamp_sPos) {\n var gfc = gfp.internal_flags;\n if (sblock == 0 && chn < 2) {\n fft.fft_short(gfc, wsamp_s[wsamp_sPos], chn, buffer, bufPos);\n }\n if (chn == 2) {\n for (var j = Encoder.BLKSIZE_s - 1; j >= 0; --j) {\n var l = wsamp_s[wsamp_sPos + 0][sblock][j];\n var r = wsamp_s[wsamp_sPos + 1][sblock][j];\n wsamp_s[wsamp_sPos + 0][sblock][j] = (l + r) * Util$2.SQRT2 * 0.5;\n wsamp_s[wsamp_sPos + 1][sblock][j] = (l - r) * Util$2.SQRT2 * 0.5;\n }\n }\n fftenergy_s[sblock][0] = wsamp_s[wsamp_sPos + 0][sblock][0];\n fftenergy_s[sblock][0] *= fftenergy_s[sblock][0];\n for (var j = Encoder.BLKSIZE_s / 2 - 1; j >= 0; --j) {\n var re = wsamp_s[wsamp_sPos + 0][sblock][Encoder.BLKSIZE_s / 2 - j];\n var im = wsamp_s[wsamp_sPos + 0][sblock][Encoder.BLKSIZE_s / 2 + j];\n fftenergy_s[sblock][Encoder.BLKSIZE_s / 2 - j] = NON_LINEAR_SCALE_ENERGY(\n (re * re + im * im) * 0.5\n );\n }\n }\n function vbrpsy_compute_loudness_approximation_l(gfp, gr_out, chn, fftenergy) {\n var gfc = gfp.internal_flags;\n if (gfp.athaa_loudapprox == 2 && chn < 2) {\n gfc.loudness_sq[gr_out][chn] = gfc.loudness_sq_save[chn];\n gfc.loudness_sq_save[chn] = psycho_loudness_approx(fftenergy, gfc);\n }\n }\n var fircoef_ = [\n -865163e-23 * 2,\n -851586e-8 * 2,\n -674764e-23 * 2,\n 0.0209036 * 2,\n -336639e-22 * 2,\n -0.0438162 * 2,\n -154175e-22 * 2,\n 0.0931738 * 2,\n -552212e-22 * 2,\n -0.313819 * 2\n ];\n function vbrpsy_attack_detection(gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, energy, sub_short_factor, ns_attacks, uselongblock) {\n var ns_hpfsmpl = new_float_n$3([2, 576]);\n var gfc = gfp.internal_flags;\n var n_chn_out = gfc.channels_out;\n var n_chn_psy = gfp.mode == MPEGMode.JOINT_STEREO ? 4 : n_chn_out;\n for (var chn = 0; chn < n_chn_out; chn++) {\n firbuf = buffer[chn];\n var firbufPos = bufPos + 576 - 350 - NSFIRLEN + 192;\n for (var i = 0; i < 576; i++) {\n var sum1, sum2;\n sum1 = firbuf[firbufPos + i + 10];\n sum2 = 0;\n for (var j = 0; j < (NSFIRLEN - 1) / 2 - 1; j += 2) {\n sum1 += fircoef_[j] * (firbuf[firbufPos + i + j] + firbuf[firbufPos + i + NSFIRLEN - j]);\n sum2 += fircoef_[j + 1] * (firbuf[firbufPos + i + j + 1] + firbuf[firbufPos + i + NSFIRLEN - j - 1]);\n }\n ns_hpfsmpl[chn][i] = sum1 + sum2;\n }\n masking_ratio[gr_out][chn].en.assign(gfc.en[chn]);\n masking_ratio[gr_out][chn].thm.assign(gfc.thm[chn]);\n if (n_chn_psy > 2) {\n masking_MS_ratio[gr_out][chn].en.assign(gfc.en[chn + 2]);\n masking_MS_ratio[gr_out][chn].thm.assign(gfc.thm[chn + 2]);\n }\n }\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var attack_intensity = new_float$a(12);\n var en_subshort = new_float$a(12);\n var en_short = [0, 0, 0, 0];\n var pf = ns_hpfsmpl[chn & 1];\n var pfPos = 0;\n var attackThreshold = chn == 3 ? gfc.nsPsy.attackthre_s : gfc.nsPsy.attackthre;\n var ns_uselongblock = 1;\n if (chn == 2) {\n for (var i = 0, j = 576; j > 0; ++i, --j) {\n var l = ns_hpfsmpl[0][i];\n var r = ns_hpfsmpl[1][i];\n ns_hpfsmpl[0][i] = l + r;\n ns_hpfsmpl[1][i] = l - r;\n }\n }\n for (var i = 0; i < 3; i++) {\n en_subshort[i] = gfc.nsPsy.last_en_subshort[chn][i + 6];\n assert$9(gfc.nsPsy.last_en_subshort[chn][i + 4] > 0);\n attack_intensity[i] = en_subshort[i] / gfc.nsPsy.last_en_subshort[chn][i + 4];\n en_short[0] += en_subshort[i];\n }\n for (var i = 0; i < 9; i++) {\n var pfe = pfPos + 576 / 9;\n var p2 = 1;\n for (; pfPos < pfe; pfPos++) {\n if (p2 < Math.abs(pf[pfPos]))\n p2 = Math.abs(pf[pfPos]);\n }\n gfc.nsPsy.last_en_subshort[chn][i] = en_subshort[i + 3] = p2;\n en_short[1 + i / 3] += p2;\n if (p2 > en_subshort[i + 3 - 2]) {\n assert$9(en_subshort[i + 3 - 2] > 0);\n p2 = p2 / en_subshort[i + 3 - 2];\n } else if (en_subshort[i + 3 - 2] > p2 * 10) {\n p2 = en_subshort[i + 3 - 2] / (p2 * 10);\n } else {\n p2 = 0;\n }\n attack_intensity[i + 3] = p2;\n }\n for (var i = 0; i < 3; ++i) {\n var enn = en_subshort[i * 3 + 3] + en_subshort[i * 3 + 4] + en_subshort[i * 3 + 5];\n var factor = 1;\n if (en_subshort[i * 3 + 5] * 6 < enn) {\n factor *= 0.5;\n if (en_subshort[i * 3 + 4] * 6 < enn) {\n factor *= 0.5;\n }\n }\n sub_short_factor[chn][i] = factor;\n }\n if (gfp.analysis) {\n var x = attack_intensity[0];\n for (var i = 1; i < 12; i++) {\n if (x < attack_intensity[i]) {\n x = attack_intensity[i];\n }\n }\n gfc.pinfo.ers[gr_out][chn] = gfc.pinfo.ers_save[chn];\n gfc.pinfo.ers_save[chn] = x;\n }\n for (var i = 0; i < 12; i++) {\n if (ns_attacks[chn][i / 3] == 0 && attack_intensity[i] > attackThreshold) {\n ns_attacks[chn][i / 3] = i % 3 + 1;\n }\n }\n for (var i = 1; i < 4; i++) {\n var u = en_short[i - 1];\n var v = en_short[i];\n var m = Math.max(u, v);\n if (m < 4e4) {\n if (u < 1.7 * v && v < 1.7 * u) {\n if (i == 1 && ns_attacks[chn][0] <= ns_attacks[chn][i]) {\n ns_attacks[chn][0] = 0;\n }\n ns_attacks[chn][i] = 0;\n }\n }\n }\n if (ns_attacks[chn][0] <= gfc.nsPsy.lastAttacks[chn]) {\n ns_attacks[chn][0] = 0;\n }\n if (gfc.nsPsy.lastAttacks[chn] == 3 || ns_attacks[chn][0] + ns_attacks[chn][1] + ns_attacks[chn][2] + ns_attacks[chn][3] != 0) {\n ns_uselongblock = 0;\n if (ns_attacks[chn][1] != 0 && ns_attacks[chn][0] != 0) {\n ns_attacks[chn][1] = 0;\n }\n if (ns_attacks[chn][2] != 0 && ns_attacks[chn][1] != 0) {\n ns_attacks[chn][2] = 0;\n }\n if (ns_attacks[chn][3] != 0 && ns_attacks[chn][2] != 0) {\n ns_attacks[chn][3] = 0;\n }\n }\n if (chn < 2) {\n uselongblock[chn] = ns_uselongblock;\n } else {\n if (ns_uselongblock == 0) {\n uselongblock[0] = uselongblock[1] = 0;\n }\n }\n energy[chn] = gfc.tot_ener[chn];\n }\n }\n function vbrpsy_skip_masking_s(gfc, chn, sblock) {\n if (sblock == 0) {\n for (var b = 0; b < gfc.npart_s; b++) {\n gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n gfc.nb_s1[chn][b] = 0;\n }\n }\n }\n function vbrpsy_skip_masking_l(gfc, chn) {\n for (var b = 0; b < gfc.npart_l; b++) {\n gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n gfc.nb_1[chn][b] = 0;\n }\n }\n function psyvbr_calc_mask_index_s(gfc, max, avg, mask_idx) {\n var last_tab_entry = tab.length - 1;\n var b = 0;\n var a = avg[b] + avg[b + 1];\n if (a > 0) {\n var m = max[b];\n if (m < max[b + 1])\n m = max[b + 1];\n assert$9(gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1 > 0);\n a = 20 * (m * 2 - a) / (a * (gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n for (b = 1; b < gfc.npart_s - 1; b++) {\n a = avg[b - 1] + avg[b] + avg[b + 1];\n assert$9(b + 1 < gfc.npart_s);\n if (a > 0) {\n var m = max[b - 1];\n if (m < max[b])\n m = max[b];\n if (m < max[b + 1])\n m = max[b + 1];\n assert$9(\n gfc.numlines_s[b - 1] + gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1 > 0\n );\n a = 20 * (m * 3 - a) / (a * (gfc.numlines_s[b - 1] + gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n }\n assert$9(b == gfc.npart_s - 1);\n a = avg[b - 1] + avg[b];\n if (a > 0) {\n var m = max[b - 1];\n if (m < max[b])\n m = max[b];\n assert$9(gfc.numlines_s[b - 1] + gfc.numlines_s[b] - 1 > 0);\n a = 20 * (m * 2 - a) / (a * (gfc.numlines_s[b - 1] + gfc.numlines_s[b] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n assert$9(b == gfc.npart_s - 1);\n }\n function vbrpsy_compute_masking_s(gfp, fftenergy_s, eb, thr, chn, sblock) {\n var gfc = gfp.internal_flags;\n var max = new float[Encoder.CBANDS]();\n var avg = new_float$a(Encoder.CBANDS);\n var i, j, b;\n var mask_idx_s = new int[Encoder.CBANDS]();\n for (b = j = 0; b < gfc.npart_s; ++b) {\n var ebb = 0;\n var m = 0;\n var n = gfc.numlines_s[b];\n for (i = 0; i < n; ++i, ++j) {\n var el = fftenergy_s[sblock][j];\n ebb += el;\n if (m < el)\n m = el;\n }\n eb[b] = ebb;\n max[b] = m;\n avg[b] = ebb / n;\n assert$9(avg[b] >= 0);\n }\n assert$9(b == gfc.npart_s);\n for (; b < Encoder.CBANDS; ++b) {\n max[b] = 0;\n avg[b] = 0;\n }\n psyvbr_calc_mask_index_s(gfc, max, avg, mask_idx_s);\n for (j = b = 0; b < gfc.npart_s; b++) {\n var kk = gfc.s3ind_s[b][0];\n var last = gfc.s3ind_s[b][1];\n var dd, dd_n;\n var x, ecb, avg_mask;\n dd = mask_idx_s[kk];\n dd_n = 1;\n ecb = gfc.s3_ss[j] * eb[kk] * tab[mask_idx_s[kk]];\n ++j;\n ++kk;\n while (kk <= last) {\n dd += mask_idx_s[kk];\n dd_n += 1;\n x = gfc.s3_ss[j] * eb[kk] * tab[mask_idx_s[kk]];\n ecb = vbrpsy_mask_add(ecb, x, kk - b);\n ++j;\n ++kk;\n }\n dd = (1 + 2 * dd) / (2 * dd_n);\n avg_mask = tab[dd] * 0.5;\n ecb *= avg_mask;\n thr[b] = ecb;\n gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n gfc.nb_s1[chn][b] = ecb;\n {\n x = max[b];\n x *= gfc.minval_s[b];\n x *= avg_mask;\n if (thr[b] > x) {\n thr[b] = x;\n }\n }\n if (gfc.masking_lower > 1) {\n thr[b] *= gfc.masking_lower;\n }\n if (thr[b] > eb[b]) {\n thr[b] = eb[b];\n }\n if (gfc.masking_lower < 1) {\n thr[b] *= gfc.masking_lower;\n }\n assert$9(thr[b] >= 0);\n }\n for (; b < Encoder.CBANDS; ++b) {\n eb[b] = 0;\n thr[b] = 0;\n }\n }\n function vbrpsy_compute_masking_l(gfc, fftenergy, eb_l, thr, chn) {\n var max = new_float$a(Encoder.CBANDS);\n var avg = new_float$a(Encoder.CBANDS);\n var mask_idx_l = new_int$b(Encoder.CBANDS + 2);\n var b;\n calc_energy(gfc, fftenergy, eb_l, max, avg);\n calc_mask_index_l(gfc, max, avg, mask_idx_l);\n var k = 0;\n for (b = 0; b < gfc.npart_l; b++) {\n var x, ecb, avg_mask, t;\n var kk = gfc.s3ind[b][0];\n var last = gfc.s3ind[b][1];\n var dd = 0;\n var dd_n = 0;\n dd = mask_idx_l[kk];\n dd_n += 1;\n ecb = gfc.s3_ll[k] * eb_l[kk] * tab[mask_idx_l[kk]];\n ++k;\n ++kk;\n while (kk <= last) {\n dd += mask_idx_l[kk];\n dd_n += 1;\n x = gfc.s3_ll[k] * eb_l[kk] * tab[mask_idx_l[kk]];\n t = vbrpsy_mask_add(ecb, x, kk - b);\n ecb = t;\n ++k;\n ++kk;\n }\n dd = (1 + 2 * dd) / (2 * dd_n);\n avg_mask = tab[dd] * 0.5;\n ecb *= avg_mask;\n if (gfc.blocktype_old[chn & 1] == Encoder.SHORT_TYPE) {\n var ecb_limit = rpelev * gfc.nb_1[chn][b];\n if (ecb_limit > 0) {\n thr[b] = Math.min(ecb, ecb_limit);\n } else {\n thr[b] = Math.min(ecb, eb_l[b] * NS_PREECHO_ATT2);\n }\n } else {\n var ecb_limit_2 = rpelev2 * gfc.nb_2[chn][b];\n var ecb_limit_1 = rpelev * gfc.nb_1[chn][b];\n var ecb_limit;\n if (ecb_limit_2 <= 0) {\n ecb_limit_2 = ecb;\n }\n if (ecb_limit_1 <= 0) {\n ecb_limit_1 = ecb;\n }\n if (gfc.blocktype_old[chn & 1] == Encoder.NORM_TYPE) {\n ecb_limit = Math.min(ecb_limit_1, ecb_limit_2);\n } else {\n ecb_limit = ecb_limit_1;\n }\n thr[b] = Math.min(ecb, ecb_limit);\n }\n gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n gfc.nb_1[chn][b] = ecb;\n {\n x = max[b];\n x *= gfc.minval_l[b];\n x *= avg_mask;\n if (thr[b] > x) {\n thr[b] = x;\n }\n }\n if (gfc.masking_lower > 1) {\n thr[b] *= gfc.masking_lower;\n }\n if (thr[b] > eb_l[b]) {\n thr[b] = eb_l[b];\n }\n if (gfc.masking_lower < 1) {\n thr[b] *= gfc.masking_lower;\n }\n assert$9(thr[b] >= 0);\n }\n for (; b < Encoder.CBANDS; ++b) {\n eb_l[b] = 0;\n thr[b] = 0;\n }\n }\n function vbrpsy_compute_block_type(gfp, uselongblock) {\n var gfc = gfp.internal_flags;\n if (gfp.short_blocks == ShortBlock$2.short_block_coupled && !(uselongblock[0] != 0 && uselongblock[1] != 0)) {\n uselongblock[0] = uselongblock[1] = 0;\n }\n for (var chn = 0; chn < gfc.channels_out; chn++) {\n if (gfp.short_blocks == ShortBlock$2.short_block_dispensed) {\n uselongblock[chn] = 1;\n }\n if (gfp.short_blocks == ShortBlock$2.short_block_forced) {\n uselongblock[chn] = 0;\n }\n }\n }\n function vbrpsy_apply_block_type(gfp, uselongblock, blocktype_d) {\n var gfc = gfp.internal_flags;\n for (var chn = 0; chn < gfc.channels_out; chn++) {\n var blocktype = Encoder.NORM_TYPE;\n if (uselongblock[chn] != 0) {\n assert$9(gfc.blocktype_old[chn] != Encoder.START_TYPE);\n if (gfc.blocktype_old[chn] == Encoder.SHORT_TYPE) {\n blocktype = Encoder.STOP_TYPE;\n }\n } else {\n blocktype = Encoder.SHORT_TYPE;\n if (gfc.blocktype_old[chn] == Encoder.NORM_TYPE) {\n gfc.blocktype_old[chn] = Encoder.START_TYPE;\n }\n if (gfc.blocktype_old[chn] == Encoder.STOP_TYPE) {\n gfc.blocktype_old[chn] = Encoder.SHORT_TYPE;\n }\n }\n blocktype_d[chn] = gfc.blocktype_old[chn];\n gfc.blocktype_old[chn] = blocktype;\n }\n }\n function vbrpsy_compute_MS_thresholds(eb, thr, cb_mld, ath_cb, athadjust, msfix, n) {\n var msfix2 = msfix * 2;\n var athlower = msfix > 0 ? Math.pow(10, athadjust) : 1;\n var rside, rmid;\n for (var b = 0; b < n; ++b) {\n var ebM = eb[2][b];\n var ebS = eb[3][b];\n var thmL = thr[0][b];\n var thmR = thr[1][b];\n var thmM = thr[2][b];\n var thmS = thr[3][b];\n if (thmL <= 1.58 * thmR && thmR <= 1.58 * thmL) {\n var mld_m = cb_mld[b] * ebS;\n var mld_s = cb_mld[b] * ebM;\n rmid = Math.max(thmM, Math.min(thmS, mld_m));\n rside = Math.max(thmS, Math.min(thmM, mld_s));\n } else {\n rmid = thmM;\n rside = thmS;\n }\n if (msfix > 0) {\n var thmLR, thmMS;\n var ath = ath_cb[b] * athlower;\n thmLR = Math.min(Math.max(thmL, ath), Math.max(thmR, ath));\n thmM = Math.max(rmid, ath);\n thmS = Math.max(rside, ath);\n thmMS = thmM + thmS;\n if (thmMS > 0 && thmLR * msfix2 < thmMS) {\n var f = thmLR * msfix2 / thmMS;\n thmM *= f;\n thmS *= f;\n }\n rmid = Math.min(thmM, rmid);\n rside = Math.min(thmS, rside);\n }\n if (rmid > ebM) {\n rmid = ebM;\n }\n if (rside > ebS) {\n rside = ebS;\n }\n thr[2][b] = rmid;\n thr[3][b] = rside;\n }\n }\n this.L3psycho_anal_vbr = function(gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, percep_entropy, percep_MS_entropy, energy, blocktype_d) {\n var gfc = gfp.internal_flags;\n var wsamp_l;\n var wsamp_s;\n var fftenergy = new_float$a(Encoder.HBLKSIZE);\n var fftenergy_s = new_float_n$3([3, Encoder.HBLKSIZE_s]);\n var wsamp_L = new_float_n$3([2, Encoder.BLKSIZE]);\n var wsamp_S = new_float_n$3([2, 3, Encoder.BLKSIZE_s]);\n var eb = new_float_n$3([4, Encoder.CBANDS]);\n var thr = new_float_n$3([4, Encoder.CBANDS]);\n var sub_short_factor = new_float_n$3([4, 3]);\n var pcfact = 0.6;\n var ns_attacks = [\n [0, 0, 0, 0],\n [0, 0, 0, 0],\n [0, 0, 0, 0],\n [0, 0, 0, 0]\n ];\n var uselongblock = new_int$b(2);\n var n_chn_psy = gfp.mode == MPEGMode.JOINT_STEREO ? 4 : gfc.channels_out;\n vbrpsy_attack_detection(\n gfp,\n buffer,\n bufPos,\n gr_out,\n masking_ratio,\n masking_MS_ratio,\n energy,\n sub_short_factor,\n ns_attacks,\n uselongblock\n );\n vbrpsy_compute_block_type(gfp, uselongblock);\n {\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var ch01 = chn & 1;\n wsamp_l = wsamp_L;\n vbrpsy_compute_fft_l(\n gfp,\n buffer,\n bufPos,\n chn,\n gr_out,\n fftenergy,\n wsamp_l,\n ch01\n );\n vbrpsy_compute_loudness_approximation_l(gfp, gr_out, chn, fftenergy);\n if (uselongblock[ch01] != 0) {\n vbrpsy_compute_masking_l(gfc, fftenergy, eb[chn], thr[chn], chn);\n } else {\n vbrpsy_skip_masking_l(gfc, chn);\n }\n }\n if (uselongblock[0] + uselongblock[1] == 2) {\n if (gfp.mode == MPEGMode.JOINT_STEREO) {\n vbrpsy_compute_MS_thresholds(\n eb,\n thr,\n gfc.mld_cb_l,\n gfc.ATH.cb_l,\n gfp.ATHlower * gfc.ATH.adjust,\n gfp.msfix,\n gfc.npart_l\n );\n }\n }\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var ch01 = chn & 1;\n if (uselongblock[ch01] != 0) {\n convert_partition2scalefac_l(gfc, eb[chn], thr[chn], chn);\n }\n }\n }\n {\n for (var sblock = 0; sblock < 3; sblock++) {\n for (var chn = 0; chn < n_chn_psy; ++chn) {\n var ch01 = chn & 1;\n if (uselongblock[ch01] != 0) {\n vbrpsy_skip_masking_s(gfc, chn, sblock);\n } else {\n wsamp_s = wsamp_S;\n vbrpsy_compute_fft_s(\n gfp,\n buffer,\n bufPos,\n chn,\n sblock,\n fftenergy_s,\n wsamp_s,\n ch01\n );\n vbrpsy_compute_masking_s(\n gfp,\n fftenergy_s,\n eb[chn],\n thr[chn],\n chn,\n sblock\n );\n }\n }\n if (uselongblock[0] + uselongblock[1] == 0) {\n if (gfp.mode == MPEGMode.JOINT_STEREO) {\n vbrpsy_compute_MS_thresholds(\n eb,\n thr,\n gfc.mld_cb_s,\n gfc.ATH.cb_s,\n gfp.ATHlower * gfc.ATH.adjust,\n gfp.msfix,\n gfc.npart_s\n );\n }\n }\n for (var chn = 0; chn < n_chn_psy; ++chn) {\n var ch01 = chn & 1;\n if (uselongblock[ch01] == 0) {\n convert_partition2scalefac_s(gfc, eb[chn], thr[chn], chn, sblock);\n }\n }\n }\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var ch01 = chn & 1;\n if (uselongblock[ch01] != 0) {\n continue;\n }\n for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n var new_thmm = new_float$a(3);\n for (var sblock = 0; sblock < 3; sblock++) {\n var thmm = gfc.thm[chn].s[sb][sblock];\n thmm *= NS_PREECHO_ATT0;\n if (ns_attacks[chn][sblock] >= 2 || ns_attacks[chn][sblock + 1] == 1) {\n var idx = sblock != 0 ? sblock - 1 : 2;\n var p2 = NS_INTERP(\n gfc.thm[chn].s[sb][idx],\n thmm,\n NS_PREECHO_ATT1 * pcfact\n );\n thmm = Math.min(thmm, p2);\n } else if (ns_attacks[chn][sblock] == 1) {\n var idx = sblock != 0 ? sblock - 1 : 2;\n var p2 = NS_INTERP(\n gfc.thm[chn].s[sb][idx],\n thmm,\n NS_PREECHO_ATT2 * pcfact\n );\n thmm = Math.min(thmm, p2);\n } else if (sblock != 0 && ns_attacks[chn][sblock - 1] == 3 || sblock == 0 && gfc.nsPsy.lastAttacks[chn] == 3) {\n var idx = sblock != 2 ? sblock + 1 : 0;\n var p2 = NS_INTERP(\n gfc.thm[chn].s[sb][idx],\n thmm,\n NS_PREECHO_ATT2 * pcfact\n );\n thmm = Math.min(thmm, p2);\n }\n thmm *= sub_short_factor[chn][sblock];\n new_thmm[sblock] = thmm;\n }\n for (var sblock = 0; sblock < 3; sblock++) {\n gfc.thm[chn].s[sb][sblock] = new_thmm[sblock];\n }\n }\n }\n }\n for (var chn = 0; chn < n_chn_psy; chn++) {\n gfc.nsPsy.lastAttacks[chn] = ns_attacks[chn][2];\n }\n vbrpsy_apply_block_type(gfp, uselongblock, blocktype_d);\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var ppe;\n var ppePos;\n var type;\n var mr;\n if (chn > 1) {\n ppe = percep_MS_entropy;\n ppePos = -2;\n type = Encoder.NORM_TYPE;\n if (blocktype_d[0] == Encoder.SHORT_TYPE || blocktype_d[1] == Encoder.SHORT_TYPE) {\n type = Encoder.SHORT_TYPE;\n }\n mr = masking_MS_ratio[gr_out][chn - 2];\n } else {\n ppe = percep_entropy;\n ppePos = 0;\n type = blocktype_d[chn];\n mr = masking_ratio[gr_out][chn];\n }\n if (type == Encoder.SHORT_TYPE) {\n ppe[ppePos + chn] = pecalc_s(mr, gfc.masking_lower);\n } else {\n ppe[ppePos + chn] = pecalc_l(mr, gfc.masking_lower);\n }\n if (gfp.analysis) {\n gfc.pinfo.pe[gr_out][chn] = ppe[ppePos + chn];\n }\n }\n return 0;\n };\n function s3_func_x(bark, hf_slope) {\n var tempx = bark;\n var tempy;\n if (tempx >= 0) {\n tempy = -tempx * 27;\n } else {\n tempy = tempx * hf_slope;\n }\n if (tempy <= -72) {\n return 0;\n }\n return Math.exp(tempy * LN_TO_LOG10);\n }\n function norm_s3_func_x(hf_slope) {\n var lim_a = 0;\n var lim_b = 0;\n {\n var x = 0;\n var l;\n var h2;\n for (x = 0; s3_func_x(x, hf_slope) > 1e-20; x -= 1)\n ;\n l = x;\n h2 = 0;\n while (Math.abs(h2 - l) > 1e-12) {\n x = (h2 + l) / 2;\n if (s3_func_x(x, hf_slope) > 0) {\n h2 = x;\n } else {\n l = x;\n }\n }\n lim_a = l;\n }\n {\n var x = 0;\n var l;\n var h2;\n for (x = 0; s3_func_x(x, hf_slope) > 1e-20; x += 1)\n ;\n l = 0;\n h2 = x;\n while (Math.abs(h2 - l) > 1e-12) {\n x = (h2 + l) / 2;\n if (s3_func_x(x, hf_slope) > 0) {\n l = x;\n } else {\n h2 = x;\n }\n }\n lim_b = h2;\n }\n {\n var sum = 0;\n var m = 1e3;\n var i;\n for (i = 0; i <= m; ++i) {\n var x = lim_a + i * (lim_b - lim_a) / m;\n var y = s3_func_x(x, hf_slope);\n sum += y;\n }\n {\n var norm = (m + 1) / (sum * (lim_b - lim_a));\n return norm;\n }\n }\n }\n function s3_func(bark) {\n var tempx, x, tempy, temp;\n tempx = bark;\n if (tempx >= 0)\n tempx *= 3;\n else\n tempx *= 1.5;\n if (tempx >= 0.5 && tempx <= 2.5) {\n temp = tempx - 0.5;\n x = 8 * (temp * temp - 2 * temp);\n } else\n x = 0;\n tempx += 0.474;\n tempy = 15.811389 + 7.5 * tempx - 17.5 * Math.sqrt(1 + tempx * tempx);\n if (tempy <= -60)\n return 0;\n tempx = Math.exp((x + tempy) * LN_TO_LOG10);\n tempx /= 0.6609193;\n return tempx;\n }\n function freq2bark(freq) {\n if (freq < 0)\n freq = 0;\n freq = freq * 1e-3;\n return 13 * Math.atan(0.76 * freq) + 3.5 * Math.atan(freq * freq / (7.5 * 7.5));\n }\n function init_numline(numlines, bo, bm, bval, bval_width, mld, bo_w, sfreq, blksize, scalepos, deltafreq, sbmax) {\n var b_frq = new_float$a(Encoder.CBANDS + 1);\n var sample_freq_frac = sfreq / (sbmax > 15 ? 2 * 576 : 2 * 192);\n var partition = new_int$b(Encoder.HBLKSIZE);\n var i;\n sfreq /= blksize;\n var j = 0;\n var ni = 0;\n for (i = 0; i < Encoder.CBANDS; i++) {\n var bark1;\n var j2;\n bark1 = freq2bark(sfreq * j);\n b_frq[i] = sfreq * j;\n for (j2 = j; freq2bark(sfreq * j2) - bark1 < DELBARK && j2 <= blksize / 2; j2++)\n ;\n numlines[i] = j2 - j;\n ni = i + 1;\n while (j < j2) {\n partition[j++] = i;\n }\n if (j > blksize / 2) {\n j = blksize / 2;\n ++i;\n break;\n }\n }\n b_frq[i] = sfreq * j;\n for (var sfb = 0; sfb < sbmax; sfb++) {\n var i1, i2, start2, end;\n var arg;\n start2 = scalepos[sfb];\n end = scalepos[sfb + 1];\n i1 = 0 | Math.floor(0.5 + deltafreq * (start2 - 0.5));\n if (i1 < 0)\n i1 = 0;\n i2 = 0 | Math.floor(0.5 + deltafreq * (end - 0.5));\n if (i2 > blksize / 2)\n i2 = blksize / 2;\n bm[sfb] = (partition[i1] + partition[i2]) / 2;\n bo[sfb] = partition[i2];\n var f_tmp = sample_freq_frac * end;\n bo_w[sfb] = (f_tmp - b_frq[bo[sfb]]) / (b_frq[bo[sfb] + 1] - b_frq[bo[sfb]]);\n if (bo_w[sfb] < 0) {\n bo_w[sfb] = 0;\n } else {\n if (bo_w[sfb] > 1) {\n bo_w[sfb] = 1;\n }\n }\n arg = freq2bark(sfreq * scalepos[sfb] * deltafreq);\n arg = Math.min(arg, 15.5) / 15.5;\n mld[sfb] = Math.pow(10, 1.25 * (1 - Math.cos(Math.PI * arg)) - 2.5);\n }\n j = 0;\n for (var k = 0; k < ni; k++) {\n var w = numlines[k];\n var bark1, bark2;\n bark1 = freq2bark(sfreq * j);\n bark2 = freq2bark(sfreq * (j + w - 1));\n bval[k] = 0.5 * (bark1 + bark2);\n bark1 = freq2bark(sfreq * (j - 0.5));\n bark2 = freq2bark(sfreq * (j + w - 0.5));\n bval_width[k] = bark2 - bark1;\n j += w;\n }\n return ni;\n }\n function init_s3_values(s3ind, npart, bval, bval_width, norm, use_old_s3) {\n var s3 = new_float_n$3([Encoder.CBANDS, Encoder.CBANDS]);\n var j;\n var numberOfNoneZero = 0;\n if (use_old_s3) {\n for (var i = 0; i < npart; i++) {\n for (j = 0; j < npart; j++) {\n var v = s3_func(bval[i] - bval[j]) * bval_width[j];\n s3[i][j] = v * norm[i];\n }\n }\n } else {\n for (j = 0; j < npart; j++) {\n var hf_slope = 15 + Math.min(21 / bval[j], 12);\n var s3_x_norm = norm_s3_func_x(hf_slope);\n for (var i = 0; i < npart; i++) {\n var v = s3_x_norm * s3_func_x(bval[i] - bval[j], hf_slope) * bval_width[j];\n s3[i][j] = v * norm[i];\n }\n }\n }\n for (var i = 0; i < npart; i++) {\n for (j = 0; j < npart; j++) {\n if (s3[i][j] > 0)\n break;\n }\n s3ind[i][0] = j;\n for (j = npart - 1; j > 0; j--) {\n if (s3[i][j] > 0)\n break;\n }\n s3ind[i][1] = j;\n numberOfNoneZero += s3ind[i][1] - s3ind[i][0] + 1;\n }\n var p2 = new_float$a(numberOfNoneZero);\n var k = 0;\n for (var i = 0; i < npart; i++) {\n for (j = s3ind[i][0]; j <= s3ind[i][1]; j++)\n p2[k++] = s3[i][j];\n }\n return p2;\n }\n function stereo_demask(f) {\n var arg = freq2bark(f);\n arg = Math.min(arg, 15.5) / 15.5;\n return Math.pow(10, 1.25 * (1 - Math.cos(Math.PI * arg)) - 2.5);\n }\n this.psymodel_init = function(gfp) {\n var gfc = gfp.internal_flags;\n var i;\n var useOldS3 = true;\n var bvl_a = 13;\n var bvl_b = 24;\n var snr_l_a = 0;\n var snr_l_b = 0;\n var snr_s_a = -8.25;\n var snr_s_b = -4.5;\n var bval = new_float$a(Encoder.CBANDS);\n var bval_width = new_float$a(Encoder.CBANDS);\n var norm = new_float$a(Encoder.CBANDS);\n var sfreq = gfp.out_samplerate;\n switch (gfp.experimentalZ) {\n default:\n case 0:\n useOldS3 = true;\n break;\n case 1:\n useOldS3 = !(gfp.VBR == VbrMode$5.vbr_mtrh || gfp.VBR == VbrMode$5.vbr_mt);\n break;\n case 2:\n useOldS3 = false;\n break;\n case 3:\n bvl_a = 8;\n snr_l_a = -1.75;\n snr_l_b = -0.0125;\n snr_s_a = -8.25;\n snr_s_b = -2.25;\n break;\n }\n gfc.ms_ener_ratio_old = 0.25;\n gfc.blocktype_old[0] = gfc.blocktype_old[1] = Encoder.NORM_TYPE;\n for (i = 0; i < 4; ++i) {\n for (var j = 0; j < Encoder.CBANDS; ++j) {\n gfc.nb_1[i][j] = 1e20;\n gfc.nb_2[i][j] = 1e20;\n gfc.nb_s1[i][j] = gfc.nb_s2[i][j] = 1;\n }\n for (var sb = 0; sb < Encoder.SBMAX_l; sb++) {\n gfc.en[i].l[sb] = 1e20;\n gfc.thm[i].l[sb] = 1e20;\n }\n for (var j = 0; j < 3; ++j) {\n for (var sb = 0; sb < Encoder.SBMAX_s; sb++) {\n gfc.en[i].s[sb][j] = 1e20;\n gfc.thm[i].s[sb][j] = 1e20;\n }\n gfc.nsPsy.lastAttacks[i] = 0;\n }\n for (var j = 0; j < 9; j++)\n gfc.nsPsy.last_en_subshort[i][j] = 10;\n }\n gfc.loudness_sq_save[0] = gfc.loudness_sq_save[1] = 0;\n gfc.npart_l = init_numline(\n gfc.numlines_l,\n gfc.bo_l,\n gfc.bm_l,\n bval,\n bval_width,\n gfc.mld_l,\n gfc.PSY.bo_l_weight,\n sfreq,\n Encoder.BLKSIZE,\n gfc.scalefac_band.l,\n Encoder.BLKSIZE / (2 * 576),\n Encoder.SBMAX_l\n );\n assert$9(gfc.npart_l < Encoder.CBANDS);\n for (i = 0; i < gfc.npart_l; i++) {\n var snr = snr_l_a;\n if (bval[i] >= bvl_a) {\n snr = snr_l_b * (bval[i] - bvl_a) / (bvl_b - bvl_a) + snr_l_a * (bvl_b - bval[i]) / (bvl_b - bvl_a);\n }\n norm[i] = Math.pow(10, snr / 10);\n if (gfc.numlines_l[i] > 0) {\n gfc.rnumlines_l[i] = 1 / gfc.numlines_l[i];\n } else {\n gfc.rnumlines_l[i] = 0;\n }\n }\n gfc.s3_ll = init_s3_values(\n gfc.s3ind,\n gfc.npart_l,\n bval,\n bval_width,\n norm,\n useOldS3\n );\n var j = 0;\n for (i = 0; i < gfc.npart_l; i++) {\n var x;\n x = Float$1.MAX_VALUE;\n for (var k = 0; k < gfc.numlines_l[i]; k++, j++) {\n var freq = sfreq * j / (1e3 * Encoder.BLKSIZE);\n var level;\n level = this.ATHformula(freq * 1e3, gfp) - 20;\n level = Math.pow(10, 0.1 * level);\n level *= gfc.numlines_l[i];\n if (x > level)\n x = level;\n }\n gfc.ATH.cb_l[i] = x;\n x = -20 + bval[i] * 20 / 10;\n if (x > 6) {\n x = 100;\n }\n if (x < -15) {\n x = -15;\n }\n x -= 8;\n gfc.minval_l[i] = Math.pow(10, x / 10) * gfc.numlines_l[i];\n }\n gfc.npart_s = init_numline(\n gfc.numlines_s,\n gfc.bo_s,\n gfc.bm_s,\n bval,\n bval_width,\n gfc.mld_s,\n gfc.PSY.bo_s_weight,\n sfreq,\n Encoder.BLKSIZE_s,\n gfc.scalefac_band.s,\n Encoder.BLKSIZE_s / (2 * 192),\n Encoder.SBMAX_s\n );\n assert$9(gfc.npart_s < Encoder.CBANDS);\n j = 0;\n for (i = 0; i < gfc.npart_s; i++) {\n var x;\n var snr = snr_s_a;\n if (bval[i] >= bvl_a) {\n snr = snr_s_b * (bval[i] - bvl_a) / (bvl_b - bvl_a) + snr_s_a * (bvl_b - bval[i]) / (bvl_b - bvl_a);\n }\n norm[i] = Math.pow(10, snr / 10);\n x = Float$1.MAX_VALUE;\n for (var k = 0; k < gfc.numlines_s[i]; k++, j++) {\n var freq = sfreq * j / (1e3 * Encoder.BLKSIZE_s);\n var level;\n level = this.ATHformula(freq * 1e3, gfp) - 20;\n level = Math.pow(10, 0.1 * level);\n level *= gfc.numlines_s[i];\n if (x > level)\n x = level;\n }\n gfc.ATH.cb_s[i] = x;\n x = -7 + bval[i] * 7 / 12;\n if (bval[i] > 12) {\n x *= 1 + Math.log(1 + x) * 3.1;\n }\n if (bval[i] < 12) {\n x *= 1 + Math.log(1 - x) * 2.3;\n }\n if (x < -15) {\n x = -15;\n }\n x -= 8;\n gfc.minval_s[i] = Math.pow(10, x / 10) * gfc.numlines_s[i];\n }\n gfc.s3_ss = init_s3_values(\n gfc.s3ind_s,\n gfc.npart_s,\n bval,\n bval_width,\n norm,\n useOldS3\n );\n init_mask_add_max_values();\n fft.init_fft(gfc);\n gfc.decay = Math.exp(\n -1 * LOG10 / (temporalmask_sustain_sec * sfreq / 192)\n );\n {\n var msfix;\n msfix = NS_MSFIX;\n if ((gfp.exp_nspsytune & 2) != 0)\n msfix = 1;\n if (Math.abs(gfp.msfix) > 0)\n msfix = gfp.msfix;\n gfp.msfix = msfix;\n for (var b = 0; b < gfc.npart_l; b++) {\n if (gfc.s3ind[b][1] > gfc.npart_l - 1)\n gfc.s3ind[b][1] = gfc.npart_l - 1;\n }\n }\n var frame_duration = 576 * gfc.mode_gr / sfreq;\n gfc.ATH.decay = Math.pow(10, -12 / 10 * frame_duration);\n gfc.ATH.adjust = 0.01;\n gfc.ATH.adjustLimit = 1;\n assert$9(gfc.bo_l[Encoder.SBMAX_l - 1] <= gfc.npart_l);\n assert$9(gfc.bo_s[Encoder.SBMAX_s - 1] <= gfc.npart_s);\n if (gfp.ATHtype != -1) {\n var freq;\n var freq_inc = gfp.out_samplerate / Encoder.BLKSIZE;\n var eql_balance = 0;\n freq = 0;\n for (i = 0; i < Encoder.BLKSIZE / 2; ++i) {\n freq += freq_inc;\n gfc.ATH.eql_w[i] = 1 / Math.pow(10, this.ATHformula(freq, gfp) / 10);\n eql_balance += gfc.ATH.eql_w[i];\n }\n eql_balance = 1 / eql_balance;\n for (i = Encoder.BLKSIZE / 2; --i >= 0; ) {\n gfc.ATH.eql_w[i] *= eql_balance;\n }\n }\n {\n for (var b = j = 0; b < gfc.npart_s; ++b) {\n for (i = 0; i < gfc.numlines_s[b]; ++i) {\n ++j;\n }\n }\n for (var b = j = 0; b < gfc.npart_l; ++b) {\n for (i = 0; i < gfc.numlines_l[b]; ++i) {\n ++j;\n }\n }\n }\n j = 0;\n for (i = 0; i < gfc.npart_l; i++) {\n var freq = sfreq * (j + gfc.numlines_l[i] / 2) / (1 * Encoder.BLKSIZE);\n gfc.mld_cb_l[i] = stereo_demask(freq);\n j += gfc.numlines_l[i];\n }\n for (; i < Encoder.CBANDS; ++i) {\n gfc.mld_cb_l[i] = 1;\n }\n j = 0;\n for (i = 0; i < gfc.npart_s; i++) {\n var freq = sfreq * (j + gfc.numlines_s[i] / 2) / (1 * Encoder.BLKSIZE_s);\n gfc.mld_cb_s[i] = stereo_demask(freq);\n j += gfc.numlines_s[i];\n }\n for (; i < Encoder.CBANDS; ++i) {\n gfc.mld_cb_s[i] = 1;\n }\n return 0;\n };\n function ATHformula_GB(f, value) {\n if (f < -0.3)\n f = 3410;\n f /= 1e3;\n f = Math.max(0.1, f);\n var ath = 3.64 * Math.pow(f, -0.8) - 6.8 * Math.exp(-0.6 * Math.pow(f - 3.4, 2)) + 6 * Math.exp(-0.15 * Math.pow(f - 8.7, 2)) + (0.6 + 0.04 * value) * 1e-3 * Math.pow(f, 4);\n return ath;\n }\n this.ATHformula = function(f, gfp) {\n var ath;\n switch (gfp.ATHtype) {\n case 0:\n ath = ATHformula_GB(f, 9);\n break;\n case 1:\n ath = ATHformula_GB(f, -1);\n break;\n case 2:\n ath = ATHformula_GB(f, 0);\n break;\n case 3:\n ath = ATHformula_GB(f, 1) + 6;\n break;\n case 4:\n ath = ATHformula_GB(f, gfp.ATHcurve);\n break;\n default:\n ath = ATHformula_GB(f, 0);\n break;\n }\n return ath;\n };\n}\nfunction LameGlobalFlags() {\n this.class_id = 0;\n this.num_samples = 0;\n this.num_channels = 0;\n this.in_samplerate = 0;\n this.out_samplerate = 0;\n this.scale = 0;\n this.scale_left = 0;\n this.scale_right = 0;\n this.analysis = false;\n this.bWriteVbrTag = false;\n this.decode_only = false;\n this.quality = 0;\n this.mode = MPEGMode.STEREO;\n this.force_ms = false;\n this.free_format = false;\n this.findReplayGain = false;\n this.decode_on_the_fly = false;\n this.write_id3tag_automatic = false;\n this.brate = 0;\n this.compression_ratio = 0;\n this.copyright = 0;\n this.original = 0;\n this.extension = 0;\n this.emphasis = 0;\n this.error_protection = 0;\n this.strict_ISO = false;\n this.disable_reservoir = false;\n this.quant_comp = 0;\n this.quant_comp_short = 0;\n this.experimentalY = false;\n this.experimentalZ = 0;\n this.exp_nspsytune = 0;\n this.preset = 0;\n this.VBR = null;\n this.VBR_q_frac = 0;\n this.VBR_q = 0;\n this.VBR_mean_bitrate_kbps = 0;\n this.VBR_min_bitrate_kbps = 0;\n this.VBR_max_bitrate_kbps = 0;\n this.VBR_hard_min = 0;\n this.lowpassfreq = 0;\n this.highpassfreq = 0;\n this.lowpasswidth = 0;\n this.highpasswidth = 0;\n this.maskingadjust = 0;\n this.maskingadjust_short = 0;\n this.ATHonly = false;\n this.ATHshort = false;\n this.noATH = false;\n this.ATHtype = 0;\n this.ATHcurve = 0;\n this.ATHlower = 0;\n this.athaa_type = 0;\n this.athaa_loudapprox = 0;\n this.athaa_sensitivity = 0;\n this.short_blocks = null;\n this.useTemporal = false;\n this.interChRatio = 0;\n this.msfix = 0;\n this.tune = false;\n this.tune_value_a = 0;\n this.version = 0;\n this.encoder_delay = 0;\n this.encoder_padding = 0;\n this.framesize = 0;\n this.frameNum = 0;\n this.lame_allocated_gfp = 0;\n this.internal_flags = null;\n}\nvar L3Side$1 = {};\nL3Side$1.SFBMAX = Encoder.SBMAX_s * 3;\nvar new_float$9 = common.new_float;\nvar new_int$a = common.new_int;\nfunction GrInfo() {\n this.xr = new_float$9(576);\n this.l3_enc = new_int$a(576);\n this.scalefac = new_int$a(L3Side$1.SFBMAX);\n this.xrpow_max = 0;\n this.part2_3_length = 0;\n this.big_values = 0;\n this.count1 = 0;\n this.global_gain = 0;\n this.scalefac_compress = 0;\n this.block_type = 0;\n this.mixed_block_flag = 0;\n this.table_select = new_int$a(3);\n this.subblock_gain = new_int$a(3 + 1);\n this.region0_count = 0;\n this.region1_count = 0;\n this.preflag = 0;\n this.scalefac_scale = 0;\n this.count1table_select = 0;\n this.part2_length = 0;\n this.sfb_lmax = 0;\n this.sfb_smin = 0;\n this.psy_lmax = 0;\n this.sfbmax = 0;\n this.psymax = 0;\n this.sfbdivide = 0;\n this.width = new_int$a(L3Side$1.SFBMAX);\n this.window = new_int$a(L3Side$1.SFBMAX);\n this.count1bits = 0;\n this.sfb_partition_table = null;\n this.slen = new_int$a(4);\n this.max_nonzero_coeff = 0;\n var self2 = this;\n function clone_int(array) {\n return new Int32Array(array);\n }\n function clone_float(array) {\n return new Float32Array(array);\n }\n this.assign = function(other) {\n self2.xr = clone_float(other.xr);\n self2.l3_enc = clone_int(other.l3_enc);\n self2.scalefac = clone_int(other.scalefac);\n self2.xrpow_max = other.xrpow_max;\n self2.part2_3_length = other.part2_3_length;\n self2.big_values = other.big_values;\n self2.count1 = other.count1;\n self2.global_gain = other.global_gain;\n self2.scalefac_compress = other.scalefac_compress;\n self2.block_type = other.block_type;\n self2.mixed_block_flag = other.mixed_block_flag;\n self2.table_select = clone_int(other.table_select);\n self2.subblock_gain = clone_int(other.subblock_gain);\n self2.region0_count = other.region0_count;\n self2.region1_count = other.region1_count;\n self2.preflag = other.preflag;\n self2.scalefac_scale = other.scalefac_scale;\n self2.count1table_select = other.count1table_select;\n self2.part2_length = other.part2_length;\n self2.sfb_lmax = other.sfb_lmax;\n self2.sfb_smin = other.sfb_smin;\n self2.psy_lmax = other.psy_lmax;\n self2.sfbmax = other.sfbmax;\n self2.psymax = other.psymax;\n self2.sfbdivide = other.sfbdivide;\n self2.width = clone_int(other.width);\n self2.window = clone_int(other.window);\n self2.count1bits = other.count1bits;\n self2.sfb_partition_table = other.sfb_partition_table.slice(0);\n self2.slen = clone_int(other.slen);\n self2.max_nonzero_coeff = other.max_nonzero_coeff;\n };\n}\nvar new_int$9 = common.new_int;\nfunction IIISideInfo() {\n this.tt = [\n [null, null],\n [null, null]\n ];\n this.main_data_begin = 0;\n this.private_bits = 0;\n this.resvDrain_pre = 0;\n this.resvDrain_post = 0;\n this.scfsi = [new_int$9(4), new_int$9(4)];\n for (var gr = 0; gr < 2; gr++) {\n for (var ch = 0; ch < 2; ch++) {\n this.tt[gr][ch] = new GrInfo();\n }\n }\n}\nvar System$6 = common.System;\nvar new_int$8 = common.new_int;\nfunction ScaleFac(arrL, arrS, arr21, arr12) {\n this.l = new_int$8(1 + Encoder.SBMAX_l);\n this.s = new_int$8(1 + Encoder.SBMAX_s);\n this.psfb21 = new_int$8(1 + Encoder.PSFB21);\n this.psfb12 = new_int$8(1 + Encoder.PSFB12);\n var l = this.l;\n var s = this.s;\n if (arguments.length == 4) {\n this.arrL = arguments[0];\n this.arrS = arguments[1];\n this.arr21 = arguments[2];\n this.arr12 = arguments[3];\n System$6.arraycopy(\n this.arrL,\n 0,\n l,\n 0,\n Math.min(this.arrL.length, this.l.length)\n );\n System$6.arraycopy(\n this.arrS,\n 0,\n s,\n 0,\n Math.min(this.arrS.length, this.s.length)\n );\n System$6.arraycopy(\n this.arr21,\n 0,\n this.psfb21,\n 0,\n Math.min(this.arr21.length, this.psfb21.length)\n );\n System$6.arraycopy(\n this.arr12,\n 0,\n this.psfb12,\n 0,\n Math.min(this.arr12.length, this.psfb12.length)\n );\n }\n}\nvar new_float$8 = common.new_float;\nvar new_float_n$2 = common.new_float_n;\nvar new_int$7 = common.new_int;\nfunction NsPsy() {\n this.last_en_subshort = new_float_n$2([4, 9]);\n this.lastAttacks = new_int$7(4);\n this.pefirbuf = new_float$8(19);\n this.longfact = new_float$8(Encoder.SBMAX_l);\n this.shortfact = new_float$8(Encoder.SBMAX_s);\n this.attackthre = 0;\n this.attackthre_s = 0;\n}\nfunction VBRSeekInfo() {\n this.sum = 0;\n this.seen = 0;\n this.want = 0;\n this.pos = 0;\n this.size = 0;\n this.bag = null;\n this.nVbrNumFrames = 0;\n this.nBytesWritten = 0;\n this.TotalFrameSize = 0;\n}\nvar new_byte$3 = common.new_byte;\nvar new_double = common.new_double;\nvar new_float$7 = common.new_float;\nvar new_float_n$1 = common.new_float_n;\nvar new_int$6 = common.new_int;\nvar new_int_n$1 = common.new_int_n;\nLameInternalFlags$1.MFSIZE = 3 * 1152 + Encoder.ENCDELAY - Encoder.MDCTDELAY;\nLameInternalFlags$1.MAX_HEADER_BUF = 256;\nLameInternalFlags$1.MAX_BITS_PER_CHANNEL = 4095;\nLameInternalFlags$1.MAX_BITS_PER_GRANULE = 7680;\nLameInternalFlags$1.BPC = 320;\nfunction LameInternalFlags$1() {\n var MAX_HEADER_LEN = 40;\n this.Class_ID = 0;\n this.lame_encode_frame_init = 0;\n this.iteration_init_init = 0;\n this.fill_buffer_resample_init = 0;\n this.mfbuf = new_float_n$1([2, LameInternalFlags$1.MFSIZE]);\n this.mode_gr = 0;\n this.channels_in = 0;\n this.channels_out = 0;\n this.resample_ratio = 0;\n this.mf_samples_to_encode = 0;\n this.mf_size = 0;\n this.VBR_min_bitrate = 0;\n this.VBR_max_bitrate = 0;\n this.bitrate_index = 0;\n this.samplerate_index = 0;\n this.mode_ext = 0;\n this.lowpass1 = 0;\n this.lowpass2 = 0;\n this.highpass1 = 0;\n this.highpass2 = 0;\n this.noise_shaping = 0;\n this.noise_shaping_amp = 0;\n this.substep_shaping = 0;\n this.psymodel = 0;\n this.noise_shaping_stop = 0;\n this.subblock_gain = 0;\n this.use_best_huffman = 0;\n this.full_outer_loop = 0;\n this.l3_side = new IIISideInfo();\n this.ms_ratio = new_float$7(2);\n this.padding = 0;\n this.frac_SpF = 0;\n this.slot_lag = 0;\n this.tag_spec = null;\n this.nMusicCRC = 0;\n this.OldValue = new_int$6(2);\n this.CurrentStep = new_int$6(2);\n this.masking_lower = 0;\n this.bv_scf = new_int$6(576);\n this.pseudohalf = new_int$6(L3Side$1.SFBMAX);\n this.sfb21_extra = false;\n this.inbuf_old = new Array(2);\n this.blackfilt = new Array(2 * LameInternalFlags$1.BPC + 1);\n this.itime = new_double(2);\n this.sideinfo_len = 0;\n this.sb_sample = new_float_n$1([2, 2, 18, Encoder.SBLIMIT]);\n this.amp_filter = new_float$7(32);\n function Header() {\n this.write_timing = 0;\n this.ptr = 0;\n this.buf = new_byte$3(MAX_HEADER_LEN);\n }\n this.header = new Array(LameInternalFlags$1.MAX_HEADER_BUF);\n this.h_ptr = 0;\n this.w_ptr = 0;\n this.ancillary_flag = 0;\n this.ResvSize = 0;\n this.ResvMax = 0;\n this.scalefac_band = new ScaleFac();\n this.minval_l = new_float$7(Encoder.CBANDS);\n this.minval_s = new_float$7(Encoder.CBANDS);\n this.nb_1 = new_float_n$1([4, Encoder.CBANDS]);\n this.nb_2 = new_float_n$1([4, Encoder.CBANDS]);\n this.nb_s1 = new_float_n$1([4, Encoder.CBANDS]);\n this.nb_s2 = new_float_n$1([4, Encoder.CBANDS]);\n this.s3_ss = null;\n this.s3_ll = null;\n this.decay = 0;\n this.thm = new Array(4);\n this.en = new Array(4);\n this.tot_ener = new_float$7(4);\n this.loudness_sq = new_float_n$1([2, 2]);\n this.loudness_sq_save = new_float$7(2);\n this.mld_l = new_float$7(Encoder.SBMAX_l);\n this.mld_s = new_float$7(Encoder.SBMAX_s);\n this.bm_l = new_int$6(Encoder.SBMAX_l);\n this.bo_l = new_int$6(Encoder.SBMAX_l);\n this.bm_s = new_int$6(Encoder.SBMAX_s);\n this.bo_s = new_int$6(Encoder.SBMAX_s);\n this.npart_l = 0;\n this.npart_s = 0;\n this.s3ind = new_int_n$1([Encoder.CBANDS, 2]);\n this.s3ind_s = new_int_n$1([Encoder.CBANDS, 2]);\n this.numlines_s = new_int$6(Encoder.CBANDS);\n this.numlines_l = new_int$6(Encoder.CBANDS);\n this.rnumlines_l = new_float$7(Encoder.CBANDS);\n this.mld_cb_l = new_float$7(Encoder.CBANDS);\n this.mld_cb_s = new_float$7(Encoder.CBANDS);\n this.numlines_s_num1 = 0;\n this.numlines_l_num1 = 0;\n this.pe = new_float$7(4);\n this.ms_ratio_s_old = 0;\n this.ms_ratio_l_old = 0;\n this.ms_ener_ratio_old = 0;\n this.blocktype_old = new_int$6(2);\n this.nsPsy = new NsPsy();\n this.VBR_seek_table = new VBRSeekInfo();\n this.ATH = null;\n this.PSY = null;\n this.nogap_total = 0;\n this.nogap_current = 0;\n this.decode_on_the_fly = true;\n this.findReplayGain = true;\n this.findPeakSample = true;\n this.PeakSample = 0;\n this.RadioGain = 0;\n this.AudiophileGain = 0;\n this.rgdata = null;\n this.noclipGainChange = 0;\n this.noclipScale = 0;\n this.bitrate_stereoMode_Hist = new_int_n$1([16, 4 + 1]);\n this.bitrate_blockType_Hist = new_int_n$1([16, 4 + 1 + 1]);\n this.pinfo = null;\n this.hip = null;\n this.in_buffer_nsamples = 0;\n this.in_buffer_0 = null;\n this.in_buffer_1 = null;\n this.iteration_loop = null;\n for (var i = 0; i < this.en.length; i++) {\n this.en[i] = new III_psy_xmin();\n }\n for (var i = 0; i < this.thm.length; i++) {\n this.thm[i] = new III_psy_xmin();\n }\n for (var i = 0; i < this.header.length; i++) {\n this.header[i] = new Header();\n }\n}\nvar new_float$6 = common.new_float;\nfunction ATH() {\n this.useAdjust = 0;\n this.aaSensitivityP = 0;\n this.adjust = 0;\n this.adjustLimit = 0;\n this.decay = 0;\n this.floor = 0;\n this.l = new_float$6(Encoder.SBMAX_l);\n this.s = new_float$6(Encoder.SBMAX_s);\n this.psfb21 = new_float$6(Encoder.PSFB21);\n this.psfb12 = new_float$6(Encoder.PSFB12);\n this.cb_l = new_float$6(Encoder.CBANDS);\n this.cb_s = new_float$6(Encoder.CBANDS);\n this.eql_w = new_float$6(Encoder.BLKSIZE / 2);\n}\nvar System$5 = common.System;\nvar Arrays$4 = common.Arrays;\nGainAnalysis$1.STEPS_per_dB = 100;\nGainAnalysis$1.MAX_dB = 120;\nGainAnalysis$1.GAIN_NOT_ENOUGH_SAMPLES = -24601;\nGainAnalysis$1.GAIN_ANALYSIS_ERROR = 0;\nGainAnalysis$1.GAIN_ANALYSIS_OK = 1;\nGainAnalysis$1.INIT_GAIN_ANALYSIS_ERROR = 0;\nGainAnalysis$1.INIT_GAIN_ANALYSIS_OK = 1;\nGainAnalysis$1.YULE_ORDER = 10;\nGainAnalysis$1.MAX_ORDER = GainAnalysis$1.YULE_ORDER;\nGainAnalysis$1.MAX_SAMP_FREQ = 48e3;\nGainAnalysis$1.RMS_WINDOW_TIME_NUMERATOR = 1;\nGainAnalysis$1.RMS_WINDOW_TIME_DENOMINATOR = 20;\nGainAnalysis$1.MAX_SAMPLES_PER_WINDOW = GainAnalysis$1.MAX_SAMP_FREQ * GainAnalysis$1.RMS_WINDOW_TIME_NUMERATOR / GainAnalysis$1.RMS_WINDOW_TIME_DENOMINATOR + 1;\nfunction GainAnalysis$1() {\n var PINK_REF = 64.82;\n var RMS_PERCENTILE = 0.95;\n var RMS_WINDOW_TIME_NUMERATOR = GainAnalysis$1.RMS_WINDOW_TIME_NUMERATOR;\n var RMS_WINDOW_TIME_DENOMINATOR = GainAnalysis$1.RMS_WINDOW_TIME_DENOMINATOR;\n var ABYule = [\n [\n 0.038575994352,\n -3.84664617118067,\n -0.02160367184185,\n 7.81501653005538,\n -0.00123395316851,\n -11.34170355132042,\n -9291677959e-14,\n 13.05504219327545,\n -0.01655260341619,\n -12.28759895145294,\n 0.02161526843274,\n 9.4829380631979,\n -0.02074045215285,\n -5.87257861775999,\n 0.00594298065125,\n 2.75465861874613,\n 0.00306428023191,\n -0.86984376593551,\n 12025322027e-14,\n 0.13919314567432,\n 0.00288463683916\n ],\n [\n 0.0541865640643,\n -3.47845948550071,\n -0.02911007808948,\n 6.36317777566148,\n -0.00848709379851,\n -8.54751527471874,\n -0.00851165645469,\n 9.4769360780128,\n -0.00834990904936,\n -8.81498681370155,\n 0.02245293253339,\n 6.85401540936998,\n -0.02596338512915,\n -4.39470996079559,\n 0.01624864962975,\n 2.19611684890774,\n -0.00240879051584,\n -0.75104302451432,\n 0.00674613682247,\n 0.13149317958808,\n -0.00187763777362\n ],\n [\n 0.15457299681924,\n -2.37898834973084,\n -0.09331049056315,\n 2.84868151156327,\n -0.06247880153653,\n -2.64577170229825,\n 0.02163541888798,\n 2.23697657451713,\n -0.05588393329856,\n -1.67148153367602,\n 0.04781476674921,\n 1.00595954808547,\n 0.00222312597743,\n -0.45953458054983,\n 0.03174092540049,\n 0.16378164858596,\n -0.01390589421898,\n -0.05032077717131,\n 0.00651420667831,\n 0.0234789740702,\n -0.00881362733839\n ],\n [\n 0.30296907319327,\n -1.61273165137247,\n -0.22613988682123,\n 1.0797749225997,\n -0.08587323730772,\n -0.2565625775407,\n 0.03282930172664,\n -0.1627671912044,\n -0.00915702933434,\n -0.22638893773906,\n -0.02364141202522,\n 0.39120800788284,\n -0.00584456039913,\n -0.22138138954925,\n 0.06276101321749,\n 0.04500235387352,\n -828086748e-14,\n 0.02005851806501,\n 0.00205861885564,\n 0.00302439095741,\n -0.02950134983287\n ],\n [\n 0.33642304856132,\n -1.49858979367799,\n -0.2557224142557,\n 0.87350271418188,\n -0.11828570177555,\n 0.12205022308084,\n 0.11921148675203,\n -0.80774944671438,\n -0.07834489609479,\n 0.47854794562326,\n -0.0046997791438,\n -0.12453458140019,\n -0.0058950022444,\n -0.04067510197014,\n 0.05724228140351,\n 0.08333755284107,\n 0.00832043980773,\n -0.04237348025746,\n -0.0163538138454,\n 0.02977207319925,\n -0.0176017656815\n ],\n [\n 0.4491525660845,\n -0.62820619233671,\n -0.14351757464547,\n 0.29661783706366,\n -0.22784394429749,\n -0.372563729424,\n -0.01419140100551,\n 0.00213767857124,\n 0.04078262797139,\n -0.42029820170918,\n -0.12398163381748,\n 0.22199650564824,\n 0.04097565135648,\n 0.00613424350682,\n 0.10478503600251,\n 0.06747620744683,\n -0.01863887810927,\n 0.05784820375801,\n -0.03193428438915,\n 0.03222754072173,\n 0.00541907748707\n ],\n [\n 0.56619470757641,\n -1.04800335126349,\n -0.75464456939302,\n 0.29156311971249,\n 0.1624213774223,\n -0.26806001042947,\n 0.16744243493672,\n 0.00819999645858,\n -0.18901604199609,\n 0.45054734505008,\n 0.3093178284183,\n -0.33032403314006,\n -0.27562961986224,\n 0.0673936833311,\n 0.00647310677246,\n -0.04784254229033,\n 0.08647503780351,\n 0.01639907836189,\n -0.0378898455484,\n 0.01807364323573,\n -0.00588215443421\n ],\n [\n 0.58100494960553,\n -0.51035327095184,\n -0.53174909058578,\n -0.31863563325245,\n -0.14289799034253,\n -0.20256413484477,\n 0.17520704835522,\n 0.1472815413433,\n 0.02377945217615,\n 0.38952639978999,\n 0.15558449135573,\n -0.23313271880868,\n -0.25344790059353,\n -0.05246019024463,\n 0.01628462406333,\n -0.02505961724053,\n 0.06920467763959,\n 0.02442357316099,\n -0.03721611395801,\n 0.01818801111503,\n -0.00749618797172\n ],\n [\n 0.53648789255105,\n -0.2504987195602,\n -0.42163034350696,\n -0.43193942311114,\n -0.00275953611929,\n -0.03424681017675,\n 0.04267842219415,\n -0.04678328784242,\n -0.10214864179676,\n 0.26408300200955,\n 0.14590772289388,\n 0.15113130533216,\n -0.02459864859345,\n -0.17556493366449,\n -0.11202315195388,\n -0.18823009262115,\n -0.04060034127,\n 0.05477720428674,\n 0.0478866554818,\n 0.0470440968812,\n -0.02217936801134\n ]\n ];\n var ABButter = [\n [\n 0.98621192462708,\n -1.97223372919527,\n -1.97242384925416,\n 0.97261396931306,\n 0.98621192462708\n ],\n [\n 0.98500175787242,\n -1.96977855582618,\n -1.97000351574484,\n 0.9702284756635,\n 0.98500175787242\n ],\n [\n 0.97938932735214,\n -1.95835380975398,\n -1.95877865470428,\n 0.95920349965459,\n 0.97938932735214\n ],\n [\n 0.97531843204928,\n -1.95002759149878,\n -1.95063686409857,\n 0.95124613669835,\n 0.97531843204928\n ],\n [\n 0.97316523498161,\n -1.94561023566527,\n -1.94633046996323,\n 0.94705070426118,\n 0.97316523498161\n ],\n [\n 0.96454515552826,\n -1.92783286977036,\n -1.92909031105652,\n 0.93034775234268,\n 0.96454515552826\n ],\n [\n 0.96009142950541,\n -1.91858953033784,\n -1.92018285901082,\n 0.92177618768381,\n 0.96009142950541\n ],\n [\n 0.95856916599601,\n -1.9154210807478,\n -1.91713833199203,\n 0.91885558323625,\n 0.95856916599601\n ],\n [\n 0.94597685600279,\n -1.88903307939452,\n -1.89195371200558,\n 0.89487434461664,\n 0.94597685600279\n ]\n ];\n function filterYule(input, inputPos, output, outputPos, nSamples, kernel) {\n while (nSamples-- != 0) {\n output[outputPos] = 1e-10 + input[inputPos + 0] * kernel[0] - output[outputPos - 1] * kernel[1] + input[inputPos - 1] * kernel[2] - output[outputPos - 2] * kernel[3] + input[inputPos - 2] * kernel[4] - output[outputPos - 3] * kernel[5] + input[inputPos - 3] * kernel[6] - output[outputPos - 4] * kernel[7] + input[inputPos - 4] * kernel[8] - output[outputPos - 5] * kernel[9] + input[inputPos - 5] * kernel[10] - output[outputPos - 6] * kernel[11] + input[inputPos - 6] * kernel[12] - output[outputPos - 7] * kernel[13] + input[inputPos - 7] * kernel[14] - output[outputPos - 8] * kernel[15] + input[inputPos - 8] * kernel[16] - output[outputPos - 9] * kernel[17] + input[inputPos - 9] * kernel[18] - output[outputPos - 10] * kernel[19] + input[inputPos - 10] * kernel[20];\n ++outputPos;\n ++inputPos;\n }\n }\n function filterButter(input, inputPos, output, outputPos, nSamples, kernel) {\n while (nSamples-- != 0) {\n output[outputPos] = input[inputPos + 0] * kernel[0] - output[outputPos - 1] * kernel[1] + input[inputPos - 1] * kernel[2] - output[outputPos - 2] * kernel[3] + input[inputPos - 2] * kernel[4];\n ++outputPos;\n ++inputPos;\n }\n }\n function ResetSampleFrequency(rgData, samplefreq) {\n for (var i = 0; i < MAX_ORDER; i++) {\n rgData.linprebuf[i] = rgData.lstepbuf[i] = rgData.loutbuf[i] = rgData.rinprebuf[i] = rgData.rstepbuf[i] = rgData.routbuf[i] = 0;\n }\n switch (0 | samplefreq) {\n case 48e3:\n rgData.reqindex = 0;\n break;\n case 44100:\n rgData.reqindex = 1;\n break;\n case 32e3:\n rgData.reqindex = 2;\n break;\n case 24e3:\n rgData.reqindex = 3;\n break;\n case 22050:\n rgData.reqindex = 4;\n break;\n case 16e3:\n rgData.reqindex = 5;\n break;\n case 12e3:\n rgData.reqindex = 6;\n break;\n case 11025:\n rgData.reqindex = 7;\n break;\n case 8e3:\n rgData.reqindex = 8;\n break;\n default:\n return INIT_GAIN_ANALYSIS_ERROR;\n }\n rgData.sampleWindow = 0 | (samplefreq * RMS_WINDOW_TIME_NUMERATOR + RMS_WINDOW_TIME_DENOMINATOR - 1) / RMS_WINDOW_TIME_DENOMINATOR;\n rgData.lsum = 0;\n rgData.rsum = 0;\n rgData.totsamp = 0;\n Arrays$4.ill(rgData.A, 0);\n return INIT_GAIN_ANALYSIS_OK;\n }\n this.InitGainAnalysis = function(rgData, samplefreq) {\n if (ResetSampleFrequency(rgData, samplefreq) != INIT_GAIN_ANALYSIS_OK) {\n return INIT_GAIN_ANALYSIS_ERROR;\n }\n rgData.linpre = MAX_ORDER;\n rgData.rinpre = MAX_ORDER;\n rgData.lstep = MAX_ORDER;\n rgData.rstep = MAX_ORDER;\n rgData.lout = MAX_ORDER;\n rgData.rout = MAX_ORDER;\n Arrays$4.fill(rgData.B, 0);\n return INIT_GAIN_ANALYSIS_OK;\n };\n function fsqr(d) {\n return d * d;\n }\n this.AnalyzeSamples = function(rgData, left_samples, left_samplesPos, right_samples, right_samplesPos, num_samples, num_channels) {\n var curleft;\n var curleftBase;\n var curright;\n var currightBase;\n var batchsamples;\n var cursamples;\n var cursamplepos;\n if (num_samples == 0)\n return GAIN_ANALYSIS_OK;\n cursamplepos = 0;\n batchsamples = num_samples;\n switch (num_channels) {\n case 1:\n right_samples = left_samples;\n right_samplesPos = left_samplesPos;\n break;\n case 2:\n break;\n default:\n return GAIN_ANALYSIS_ERROR;\n }\n if (num_samples < MAX_ORDER) {\n System$5.arraycopy(\n left_samples,\n left_samplesPos,\n rgData.linprebuf,\n MAX_ORDER,\n num_samples\n );\n System$5.arraycopy(\n right_samples,\n right_samplesPos,\n rgData.rinprebuf,\n MAX_ORDER,\n num_samples\n );\n } else {\n System$5.arraycopy(\n left_samples,\n left_samplesPos,\n rgData.linprebuf,\n MAX_ORDER,\n MAX_ORDER\n );\n System$5.arraycopy(\n right_samples,\n right_samplesPos,\n rgData.rinprebuf,\n MAX_ORDER,\n MAX_ORDER\n );\n }\n while (batchsamples > 0) {\n cursamples = batchsamples > rgData.sampleWindow - rgData.totsamp ? rgData.sampleWindow - rgData.totsamp : batchsamples;\n if (cursamplepos < MAX_ORDER) {\n curleft = rgData.linpre + cursamplepos;\n curleftBase = rgData.linprebuf;\n curright = rgData.rinpre + cursamplepos;\n currightBase = rgData.rinprebuf;\n if (cursamples > MAX_ORDER - cursamplepos) {\n cursamples = MAX_ORDER - cursamplepos;\n }\n } else {\n curleft = left_samplesPos + cursamplepos;\n curleftBase = left_samples;\n curright = right_samplesPos + cursamplepos;\n currightBase = right_samples;\n }\n filterYule(\n curleftBase,\n curleft,\n rgData.lstepbuf,\n rgData.lstep + rgData.totsamp,\n cursamples,\n ABYule[rgData.reqindex]\n );\n filterYule(\n currightBase,\n curright,\n rgData.rstepbuf,\n rgData.rstep + rgData.totsamp,\n cursamples,\n ABYule[rgData.reqindex]\n );\n filterButter(\n rgData.lstepbuf,\n rgData.lstep + rgData.totsamp,\n rgData.loutbuf,\n rgData.lout + rgData.totsamp,\n cursamples,\n ABButter[rgData.reqindex]\n );\n filterButter(\n rgData.rstepbuf,\n rgData.rstep + rgData.totsamp,\n rgData.routbuf,\n rgData.rout + rgData.totsamp,\n cursamples,\n ABButter[rgData.reqindex]\n );\n curleft = rgData.lout + rgData.totsamp;\n curleftBase = rgData.loutbuf;\n curright = rgData.rout + rgData.totsamp;\n currightBase = rgData.routbuf;\n var i = cursamples % 8;\n while (i-- != 0) {\n rgData.lsum += fsqr(curleftBase[curleft++]);\n rgData.rsum += fsqr(currightBase[curright++]);\n }\n i = cursamples / 8;\n while (i-- != 0) {\n rgData.lsum += fsqr(curleftBase[curleft + 0]) + fsqr(curleftBase[curleft + 1]) + fsqr(curleftBase[curleft + 2]) + fsqr(curleftBase[curleft + 3]) + fsqr(curleftBase[curleft + 4]) + fsqr(curleftBase[curleft + 5]) + fsqr(curleftBase[curleft + 6]) + fsqr(curleftBase[curleft + 7]);\n curleft += 8;\n rgData.rsum += fsqr(currightBase[curright + 0]) + fsqr(currightBase[curright + 1]) + fsqr(currightBase[curright + 2]) + fsqr(currightBase[curright + 3]) + fsqr(currightBase[curright + 4]) + fsqr(currightBase[curright + 5]) + fsqr(currightBase[curright + 6]) + fsqr(currightBase[curright + 7]);\n curright += 8;\n }\n batchsamples -= cursamples;\n cursamplepos += cursamples;\n rgData.totsamp += cursamples;\n if (rgData.totsamp == rgData.sampleWindow) {\n var val = GainAnalysis$1.STEPS_per_dB * 10 * Math.log10(\n (rgData.lsum + rgData.rsum) / rgData.totsamp * 0.5 + 1e-37\n );\n var ival = val <= 0 ? 0 : 0 | val;\n if (ival >= rgData.A.length)\n ival = rgData.A.length - 1;\n rgData.A[ival]++;\n rgData.lsum = rgData.rsum = 0;\n System$5.arraycopy(\n rgData.loutbuf,\n rgData.totsamp,\n rgData.loutbuf,\n 0,\n MAX_ORDER\n );\n System$5.arraycopy(\n rgData.routbuf,\n rgData.totsamp,\n rgData.routbuf,\n 0,\n MAX_ORDER\n );\n System$5.arraycopy(\n rgData.lstepbuf,\n rgData.totsamp,\n rgData.lstepbuf,\n 0,\n MAX_ORDER\n );\n System$5.arraycopy(\n rgData.rstepbuf,\n rgData.totsamp,\n rgData.rstepbuf,\n 0,\n MAX_ORDER\n );\n rgData.totsamp = 0;\n }\n if (rgData.totsamp > rgData.sampleWindow) {\n return GAIN_ANALYSIS_ERROR;\n }\n }\n if (num_samples < MAX_ORDER) {\n System$5.arraycopy(\n rgData.linprebuf,\n num_samples,\n rgData.linprebuf,\n 0,\n MAX_ORDER - num_samples\n );\n System$5.arraycopy(\n rgData.rinprebuf,\n num_samples,\n rgData.rinprebuf,\n 0,\n MAX_ORDER - num_samples\n );\n System$5.arraycopy(\n left_samples,\n left_samplesPos,\n rgData.linprebuf,\n MAX_ORDER - num_samples,\n num_samples\n );\n System$5.arraycopy(\n right_samples,\n right_samplesPos,\n rgData.rinprebuf,\n MAX_ORDER - num_samples,\n num_samples\n );\n } else {\n System$5.arraycopy(\n left_samples,\n left_samplesPos + num_samples - MAX_ORDER,\n rgData.linprebuf,\n 0,\n MAX_ORDER\n );\n System$5.arraycopy(\n right_samples,\n right_samplesPos + num_samples - MAX_ORDER,\n rgData.rinprebuf,\n 0,\n MAX_ORDER\n );\n }\n return GAIN_ANALYSIS_OK;\n };\n function analyzeResult(Array2, len) {\n var i;\n var elems = 0;\n for (i = 0; i < len; i++)\n elems += Array2[i];\n if (elems == 0)\n return GAIN_NOT_ENOUGH_SAMPLES;\n var upper = 0 | Math.ceil(elems * (1 - RMS_PERCENTILE));\n for (i = len; i-- > 0; ) {\n if ((upper -= Array2[i]) <= 0)\n break;\n }\n return PINK_REF - i / GainAnalysis$1.STEPS_per_dB;\n }\n this.GetTitleGain = function(rgData) {\n var retval = analyzeResult(rgData.A, rgData.A.length);\n for (var i = 0; i < rgData.A.length; i++) {\n rgData.B[i] += rgData.A[i];\n rgData.A[i] = 0;\n }\n for (var i = 0; i < MAX_ORDER; i++) {\n rgData.linprebuf[i] = rgData.lstepbuf[i] = rgData.loutbuf[i] = rgData.rinprebuf[i] = rgData.rstepbuf[i] = rgData.routbuf[i] = 0;\n }\n rgData.totsamp = 0;\n rgData.lsum = rgData.rsum = 0;\n return retval;\n };\n}\nvar new_float$5 = common.new_float;\nvar new_int$5 = common.new_int;\nfunction ReplayGain() {\n this.linprebuf = new_float$5(void 0 * 2);\n this.linpre = 0;\n this.lstepbuf = new_float$5(\n void 0 + void 0\n );\n this.lstep = 0;\n this.loutbuf = new_float$5(\n void 0 + void 0\n );\n this.lout = 0;\n this.rinprebuf = new_float$5(void 0 * 2);\n this.rinpre = 0;\n this.rstepbuf = new_float$5(\n void 0 + void 0\n );\n this.rstep = 0;\n this.routbuf = new_float$5(\n void 0 + void 0\n );\n this.rout = 0;\n this.sampleWindow = 0;\n this.totsamp = 0;\n this.lsum = 0;\n this.rsum = 0;\n this.freqindex = 0;\n this.first = 0;\n this.A = new_int$5(0 | void 0 * void 0);\n this.B = new_int$5(0 | void 0 * void 0);\n}\nfunction MeanBits$1(meanBits) {\n this.bits = meanBits;\n}\nvar new_float$4 = common.new_float;\nvar new_int$4 = common.new_int;\nvar assert$8 = common.assert;\nfunction CBRNewIterationLoop(_quantize) {\n var quantize = _quantize;\n this.quantize = quantize;\n this.iteration_loop = function(gfp, pe, ms_ener_ratio, ratio) {\n var gfc = gfp.internal_flags;\n var l3_xmin = new_float$4(L3Side$1.SFBMAX);\n var xrpow = new_float$4(576);\n var targ_bits = new_int$4(2);\n var mean_bits = 0;\n var max_bits;\n var l3_side = gfc.l3_side;\n var mb = new MeanBits$1(mean_bits);\n this.quantize.rv.ResvFrameBegin(gfp, mb);\n mean_bits = mb.bits;\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n max_bits = this.quantize.qupvt.on_pe(\n gfp,\n pe,\n targ_bits,\n mean_bits,\n gr,\n gr\n );\n if (gfc.mode_ext == Encoder.MPG_MD_MS_LR) {\n this.quantize.ms_convert(gfc.l3_side, gr);\n this.quantize.qupvt.reduce_side(\n targ_bits,\n ms_ener_ratio[gr],\n mean_bits,\n max_bits\n );\n }\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n var adjust, masking_lower_db;\n var cod_info = l3_side.tt[gr][ch];\n if (cod_info.block_type != Encoder.SHORT_TYPE) {\n adjust = 0;\n masking_lower_db = gfc.PSY.mask_adjust - adjust;\n } else {\n adjust = 0;\n masking_lower_db = gfc.PSY.mask_adjust_short - adjust;\n }\n gfc.masking_lower = Math.pow(10, masking_lower_db * 0.1);\n this.quantize.init_outer_loop(gfc, cod_info);\n if (this.quantize.init_xrpow(gfc, cod_info, xrpow)) {\n this.quantize.qupvt.calc_xmin(gfp, ratio[gr][ch], cod_info, l3_xmin);\n this.quantize.outer_loop(\n gfp,\n cod_info,\n l3_xmin,\n xrpow,\n ch,\n targ_bits[ch]\n );\n }\n this.quantize.iteration_finish_one(gfc, gr, ch);\n assert$8(\n cod_info.part2_3_length <= LameInternalFlags$1.MAX_BITS_PER_CHANNEL\n );\n assert$8(cod_info.part2_3_length <= targ_bits[ch]);\n }\n }\n this.quantize.rv.ResvFrameEnd(gfc, mean_bits);\n };\n}\nfunction HuffCodeTab(len, max, tab, hl) {\n this.xlen = len;\n this.linmax = max;\n this.table = tab;\n this.hlen = hl;\n}\nvar Tables$1 = {};\nTables$1.t1HB = [1, 1, 1, 0];\nTables$1.t2HB = [1, 2, 1, 3, 1, 1, 3, 2, 0];\nTables$1.t3HB = [3, 2, 1, 1, 1, 1, 3, 2, 0];\nTables$1.t5HB = [1, 2, 6, 5, 3, 1, 4, 4, 7, 5, 7, 1, 6, 1, 1, 0];\nTables$1.t6HB = [7, 3, 5, 1, 6, 2, 3, 2, 5, 4, 4, 1, 3, 3, 2, 0];\nTables$1.t7HB = [\n 1,\n 2,\n 10,\n 19,\n 16,\n 10,\n 3,\n 3,\n 7,\n 10,\n 5,\n 3,\n 11,\n 4,\n 13,\n 17,\n 8,\n 4,\n 12,\n 11,\n 18,\n 15,\n 11,\n 2,\n 7,\n 6,\n 9,\n 14,\n 3,\n 1,\n 6,\n 4,\n 5,\n 3,\n 2,\n 0\n];\nTables$1.t8HB = [\n 3,\n 4,\n 6,\n 18,\n 12,\n 5,\n 5,\n 1,\n 2,\n 16,\n 9,\n 3,\n 7,\n 3,\n 5,\n 14,\n 7,\n 3,\n 19,\n 17,\n 15,\n 13,\n 10,\n 4,\n 13,\n 5,\n 8,\n 11,\n 5,\n 1,\n 12,\n 4,\n 4,\n 1,\n 1,\n 0\n];\nTables$1.t9HB = [\n 7,\n 5,\n 9,\n 14,\n 15,\n 7,\n 6,\n 4,\n 5,\n 5,\n 6,\n 7,\n 7,\n 6,\n 8,\n 8,\n 8,\n 5,\n 15,\n 6,\n 9,\n 10,\n 5,\n 1,\n 11,\n 7,\n 9,\n 6,\n 4,\n 1,\n 14,\n 4,\n 6,\n 2,\n 6,\n 0\n];\nTables$1.t10HB = [\n 1,\n 2,\n 10,\n 23,\n 35,\n 30,\n 12,\n 17,\n 3,\n 3,\n 8,\n 12,\n 18,\n 21,\n 12,\n 7,\n 11,\n 9,\n 15,\n 21,\n 32,\n 40,\n 19,\n 6,\n 14,\n 13,\n 22,\n 34,\n 46,\n 23,\n 18,\n 7,\n 20,\n 19,\n 33,\n 47,\n 27,\n 22,\n 9,\n 3,\n 31,\n 22,\n 41,\n 26,\n 21,\n 20,\n 5,\n 3,\n 14,\n 13,\n 10,\n 11,\n 16,\n 6,\n 5,\n 1,\n 9,\n 8,\n 7,\n 8,\n 4,\n 4,\n 2,\n 0\n];\nTables$1.t11HB = [\n 3,\n 4,\n 10,\n 24,\n 34,\n 33,\n 21,\n 15,\n 5,\n 3,\n 4,\n 10,\n 32,\n 17,\n 11,\n 10,\n 11,\n 7,\n 13,\n 18,\n 30,\n 31,\n 20,\n 5,\n 25,\n 11,\n 19,\n 59,\n 27,\n 18,\n 12,\n 5,\n 35,\n 33,\n 31,\n 58,\n 30,\n 16,\n 7,\n 5,\n 28,\n 26,\n 32,\n 19,\n 17,\n 15,\n 8,\n 14,\n 14,\n 12,\n 9,\n 13,\n 14,\n 9,\n 4,\n 1,\n 11,\n 4,\n 6,\n 6,\n 6,\n 3,\n 2,\n 0\n];\nTables$1.t12HB = [\n 9,\n 6,\n 16,\n 33,\n 41,\n 39,\n 38,\n 26,\n 7,\n 5,\n 6,\n 9,\n 23,\n 16,\n 26,\n 11,\n 17,\n 7,\n 11,\n 14,\n 21,\n 30,\n 10,\n 7,\n 17,\n 10,\n 15,\n 12,\n 18,\n 28,\n 14,\n 5,\n 32,\n 13,\n 22,\n 19,\n 18,\n 16,\n 9,\n 5,\n 40,\n 17,\n 31,\n 29,\n 17,\n 13,\n 4,\n 2,\n 27,\n 12,\n 11,\n 15,\n 10,\n 7,\n 4,\n 1,\n 27,\n 12,\n 8,\n 12,\n 6,\n 3,\n 1,\n 0\n];\nTables$1.t13HB = [\n 1,\n 5,\n 14,\n 21,\n 34,\n 51,\n 46,\n 71,\n 42,\n 52,\n 68,\n 52,\n 67,\n 44,\n 43,\n 19,\n 3,\n 4,\n 12,\n 19,\n 31,\n 26,\n 44,\n 33,\n 31,\n 24,\n 32,\n 24,\n 31,\n 35,\n 22,\n 14,\n 15,\n 13,\n 23,\n 36,\n 59,\n 49,\n 77,\n 65,\n 29,\n 40,\n 30,\n 40,\n 27,\n 33,\n 42,\n 16,\n 22,\n 20,\n 37,\n 61,\n 56,\n 79,\n 73,\n 64,\n 43,\n 76,\n 56,\n 37,\n 26,\n 31,\n 25,\n 14,\n 35,\n 16,\n 60,\n 57,\n 97,\n 75,\n 114,\n 91,\n 54,\n 73,\n 55,\n 41,\n 48,\n 53,\n 23,\n 24,\n 58,\n 27,\n 50,\n 96,\n 76,\n 70,\n 93,\n 84,\n 77,\n 58,\n 79,\n 29,\n 74,\n 49,\n 41,\n 17,\n 47,\n 45,\n 78,\n 74,\n 115,\n 94,\n 90,\n 79,\n 69,\n 83,\n 71,\n 50,\n 59,\n 38,\n 36,\n 15,\n 72,\n 34,\n 56,\n 95,\n 92,\n 85,\n 91,\n 90,\n 86,\n 73,\n 77,\n 65,\n 51,\n 44,\n 43,\n 42,\n 43,\n 20,\n 30,\n 44,\n 55,\n 78,\n 72,\n 87,\n 78,\n 61,\n 46,\n 54,\n 37,\n 30,\n 20,\n 16,\n 53,\n 25,\n 41,\n 37,\n 44,\n 59,\n 54,\n 81,\n 66,\n 76,\n 57,\n 54,\n 37,\n 18,\n 39,\n 11,\n 35,\n 33,\n 31,\n 57,\n 42,\n 82,\n 72,\n 80,\n 47,\n 58,\n 55,\n 21,\n 22,\n 26,\n 38,\n 22,\n 53,\n 25,\n 23,\n 38,\n 70,\n 60,\n 51,\n 36,\n 55,\n 26,\n 34,\n 23,\n 27,\n 14,\n 9,\n 7,\n 34,\n 32,\n 28,\n 39,\n 49,\n 75,\n 30,\n 52,\n 48,\n 40,\n 52,\n 28,\n 18,\n 17,\n 9,\n 5,\n 45,\n 21,\n 34,\n 64,\n 56,\n 50,\n 49,\n 45,\n 31,\n 19,\n 12,\n 15,\n 10,\n 7,\n 6,\n 3,\n 48,\n 23,\n 20,\n 39,\n 36,\n 35,\n 53,\n 21,\n 16,\n 23,\n 13,\n 10,\n 6,\n 1,\n 4,\n 2,\n 16,\n 15,\n 17,\n 27,\n 25,\n 20,\n 29,\n 11,\n 17,\n 12,\n 16,\n 8,\n 1,\n 1,\n 0,\n 1\n];\nTables$1.t15HB = [\n 7,\n 12,\n 18,\n 53,\n 47,\n 76,\n 124,\n 108,\n 89,\n 123,\n 108,\n 119,\n 107,\n 81,\n 122,\n 63,\n 13,\n 5,\n 16,\n 27,\n 46,\n 36,\n 61,\n 51,\n 42,\n 70,\n 52,\n 83,\n 65,\n 41,\n 59,\n 36,\n 19,\n 17,\n 15,\n 24,\n 41,\n 34,\n 59,\n 48,\n 40,\n 64,\n 50,\n 78,\n 62,\n 80,\n 56,\n 33,\n 29,\n 28,\n 25,\n 43,\n 39,\n 63,\n 55,\n 93,\n 76,\n 59,\n 93,\n 72,\n 54,\n 75,\n 50,\n 29,\n 52,\n 22,\n 42,\n 40,\n 67,\n 57,\n 95,\n 79,\n 72,\n 57,\n 89,\n 69,\n 49,\n 66,\n 46,\n 27,\n 77,\n 37,\n 35,\n 66,\n 58,\n 52,\n 91,\n 74,\n 62,\n 48,\n 79,\n 63,\n 90,\n 62,\n 40,\n 38,\n 125,\n 32,\n 60,\n 56,\n 50,\n 92,\n 78,\n 65,\n 55,\n 87,\n 71,\n 51,\n 73,\n 51,\n 70,\n 30,\n 109,\n 53,\n 49,\n 94,\n 88,\n 75,\n 66,\n 122,\n 91,\n 73,\n 56,\n 42,\n 64,\n 44,\n 21,\n 25,\n 90,\n 43,\n 41,\n 77,\n 73,\n 63,\n 56,\n 92,\n 77,\n 66,\n 47,\n 67,\n 48,\n 53,\n 36,\n 20,\n 71,\n 34,\n 67,\n 60,\n 58,\n 49,\n 88,\n 76,\n 67,\n 106,\n 71,\n 54,\n 38,\n 39,\n 23,\n 15,\n 109,\n 53,\n 51,\n 47,\n 90,\n 82,\n 58,\n 57,\n 48,\n 72,\n 57,\n 41,\n 23,\n 27,\n 62,\n 9,\n 86,\n 42,\n 40,\n 37,\n 70,\n 64,\n 52,\n 43,\n 70,\n 55,\n 42,\n 25,\n 29,\n 18,\n 11,\n 11,\n 118,\n 68,\n 30,\n 55,\n 50,\n 46,\n 74,\n 65,\n 49,\n 39,\n 24,\n 16,\n 22,\n 13,\n 14,\n 7,\n 91,\n 44,\n 39,\n 38,\n 34,\n 63,\n 52,\n 45,\n 31,\n 52,\n 28,\n 19,\n 14,\n 8,\n 9,\n 3,\n 123,\n 60,\n 58,\n 53,\n 47,\n 43,\n 32,\n 22,\n 37,\n 24,\n 17,\n 12,\n 15,\n 10,\n 2,\n 1,\n 71,\n 37,\n 34,\n 30,\n 28,\n 20,\n 17,\n 26,\n 21,\n 16,\n 10,\n 6,\n 8,\n 6,\n 2,\n 0\n];\nTables$1.t16HB = [\n 1,\n 5,\n 14,\n 44,\n 74,\n 63,\n 110,\n 93,\n 172,\n 149,\n 138,\n 242,\n 225,\n 195,\n 376,\n 17,\n 3,\n 4,\n 12,\n 20,\n 35,\n 62,\n 53,\n 47,\n 83,\n 75,\n 68,\n 119,\n 201,\n 107,\n 207,\n 9,\n 15,\n 13,\n 23,\n 38,\n 67,\n 58,\n 103,\n 90,\n 161,\n 72,\n 127,\n 117,\n 110,\n 209,\n 206,\n 16,\n 45,\n 21,\n 39,\n 69,\n 64,\n 114,\n 99,\n 87,\n 158,\n 140,\n 252,\n 212,\n 199,\n 387,\n 365,\n 26,\n 75,\n 36,\n 68,\n 65,\n 115,\n 101,\n 179,\n 164,\n 155,\n 264,\n 246,\n 226,\n 395,\n 382,\n 362,\n 9,\n 66,\n 30,\n 59,\n 56,\n 102,\n 185,\n 173,\n 265,\n 142,\n 253,\n 232,\n 400,\n 388,\n 378,\n 445,\n 16,\n 111,\n 54,\n 52,\n 100,\n 184,\n 178,\n 160,\n 133,\n 257,\n 244,\n 228,\n 217,\n 385,\n 366,\n 715,\n 10,\n 98,\n 48,\n 91,\n 88,\n 165,\n 157,\n 148,\n 261,\n 248,\n 407,\n 397,\n 372,\n 380,\n 889,\n 884,\n 8,\n 85,\n 84,\n 81,\n 159,\n 156,\n 143,\n 260,\n 249,\n 427,\n 401,\n 392,\n 383,\n 727,\n 713,\n 708,\n 7,\n 154,\n 76,\n 73,\n 141,\n 131,\n 256,\n 245,\n 426,\n 406,\n 394,\n 384,\n 735,\n 359,\n 710,\n 352,\n 11,\n 139,\n 129,\n 67,\n 125,\n 247,\n 233,\n 229,\n 219,\n 393,\n 743,\n 737,\n 720,\n 885,\n 882,\n 439,\n 4,\n 243,\n 120,\n 118,\n 115,\n 227,\n 223,\n 396,\n 746,\n 742,\n 736,\n 721,\n 712,\n 706,\n 223,\n 436,\n 6,\n 202,\n 224,\n 222,\n 218,\n 216,\n 389,\n 386,\n 381,\n 364,\n 888,\n 443,\n 707,\n 440,\n 437,\n 1728,\n 4,\n 747,\n 211,\n 210,\n 208,\n 370,\n 379,\n 734,\n 723,\n 714,\n 1735,\n 883,\n 877,\n 876,\n 3459,\n 865,\n 2,\n 377,\n 369,\n 102,\n 187,\n 726,\n 722,\n 358,\n 711,\n 709,\n 866,\n 1734,\n 871,\n 3458,\n 870,\n 434,\n 0,\n 12,\n 10,\n 7,\n 11,\n 10,\n 17,\n 11,\n 9,\n 13,\n 12,\n 10,\n 7,\n 5,\n 3,\n 1,\n 3\n];\nTables$1.t24HB = [\n 15,\n 13,\n 46,\n 80,\n 146,\n 262,\n 248,\n 434,\n 426,\n 669,\n 653,\n 649,\n 621,\n 517,\n 1032,\n 88,\n 14,\n 12,\n 21,\n 38,\n 71,\n 130,\n 122,\n 216,\n 209,\n 198,\n 327,\n 345,\n 319,\n 297,\n 279,\n 42,\n 47,\n 22,\n 41,\n 74,\n 68,\n 128,\n 120,\n 221,\n 207,\n 194,\n 182,\n 340,\n 315,\n 295,\n 541,\n 18,\n 81,\n 39,\n 75,\n 70,\n 134,\n 125,\n 116,\n 220,\n 204,\n 190,\n 178,\n 325,\n 311,\n 293,\n 271,\n 16,\n 147,\n 72,\n 69,\n 135,\n 127,\n 118,\n 112,\n 210,\n 200,\n 188,\n 352,\n 323,\n 306,\n 285,\n 540,\n 14,\n 263,\n 66,\n 129,\n 126,\n 119,\n 114,\n 214,\n 202,\n 192,\n 180,\n 341,\n 317,\n 301,\n 281,\n 262,\n 12,\n 249,\n 123,\n 121,\n 117,\n 113,\n 215,\n 206,\n 195,\n 185,\n 347,\n 330,\n 308,\n 291,\n 272,\n 520,\n 10,\n 435,\n 115,\n 111,\n 109,\n 211,\n 203,\n 196,\n 187,\n 353,\n 332,\n 313,\n 298,\n 283,\n 531,\n 381,\n 17,\n 427,\n 212,\n 208,\n 205,\n 201,\n 193,\n 186,\n 177,\n 169,\n 320,\n 303,\n 286,\n 268,\n 514,\n 377,\n 16,\n 335,\n 199,\n 197,\n 191,\n 189,\n 181,\n 174,\n 333,\n 321,\n 305,\n 289,\n 275,\n 521,\n 379,\n 371,\n 11,\n 668,\n 184,\n 183,\n 179,\n 175,\n 344,\n 331,\n 314,\n 304,\n 290,\n 277,\n 530,\n 383,\n 373,\n 366,\n 10,\n 652,\n 346,\n 171,\n 168,\n 164,\n 318,\n 309,\n 299,\n 287,\n 276,\n 263,\n 513,\n 375,\n 368,\n 362,\n 6,\n 648,\n 322,\n 316,\n 312,\n 307,\n 302,\n 292,\n 284,\n 269,\n 261,\n 512,\n 376,\n 370,\n 364,\n 359,\n 4,\n 620,\n 300,\n 296,\n 294,\n 288,\n 282,\n 273,\n 266,\n 515,\n 380,\n 374,\n 369,\n 365,\n 361,\n 357,\n 2,\n 1033,\n 280,\n 278,\n 274,\n 267,\n 264,\n 259,\n 382,\n 378,\n 372,\n 367,\n 363,\n 360,\n 358,\n 356,\n 0,\n 43,\n 20,\n 19,\n 17,\n 15,\n 13,\n 11,\n 9,\n 7,\n 6,\n 4,\n 7,\n 5,\n 3,\n 1,\n 3\n];\nTables$1.t32HB = [\n 1 << 0,\n 5 << 1,\n 4 << 1,\n 5 << 2,\n 6 << 1,\n 5 << 2,\n 4 << 2,\n 4 << 3,\n 7 << 1,\n 3 << 2,\n 6 << 2,\n 0 << 3,\n 7 << 2,\n 2 << 3,\n 3 << 3,\n 1 << 4\n];\nTables$1.t33HB = [\n 15 << 0,\n 14 << 1,\n 13 << 1,\n 12 << 2,\n 11 << 1,\n 10 << 2,\n 9 << 2,\n 8 << 3,\n 7 << 1,\n 6 << 2,\n 5 << 2,\n 4 << 3,\n 3 << 2,\n 2 << 3,\n 1 << 3,\n 0 << 4\n];\nTables$1.t1l = [1, 4, 3, 5];\nTables$1.t2l = [1, 4, 7, 4, 5, 7, 6, 7, 8];\nTables$1.t3l = [2, 3, 7, 4, 4, 7, 6, 7, 8];\nTables$1.t5l = [1, 4, 7, 8, 4, 5, 8, 9, 7, 8, 9, 10, 8, 8, 9, 10];\nTables$1.t6l = [3, 4, 6, 8, 4, 4, 6, 7, 5, 6, 7, 8, 7, 7, 8, 9];\nTables$1.t7l = [\n 1,\n 4,\n 7,\n 9,\n 9,\n 10,\n 4,\n 6,\n 8,\n 9,\n 9,\n 10,\n 7,\n 7,\n 9,\n 10,\n 10,\n 11,\n 8,\n 9,\n 10,\n 11,\n 11,\n 11,\n 8,\n 9,\n 10,\n 11,\n 11,\n 12,\n 9,\n 10,\n 11,\n 12,\n 12,\n 12\n];\nTables$1.t8l = [\n 2,\n 4,\n 7,\n 9,\n 9,\n 10,\n 4,\n 4,\n 6,\n 10,\n 10,\n 10,\n 7,\n 6,\n 8,\n 10,\n 10,\n 11,\n 9,\n 10,\n 10,\n 11,\n 11,\n 12,\n 9,\n 9,\n 10,\n 11,\n 12,\n 12,\n 10,\n 10,\n 11,\n 11,\n 13,\n 13\n];\nTables$1.t9l = [\n 3,\n 4,\n 6,\n 7,\n 9,\n 10,\n 4,\n 5,\n 6,\n 7,\n 8,\n 10,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 7,\n 7,\n 8,\n 9,\n 9,\n 10,\n 8,\n 8,\n 9,\n 9,\n 10,\n 11,\n 9,\n 9,\n 10,\n 10,\n 11,\n 11\n];\nTables$1.t10l = [\n 1,\n 4,\n 7,\n 9,\n 10,\n 10,\n 10,\n 11,\n 4,\n 6,\n 8,\n 9,\n 10,\n 11,\n 10,\n 10,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 11,\n 11,\n 8,\n 9,\n 10,\n 11,\n 12,\n 12,\n 11,\n 12,\n 9,\n 10,\n 11,\n 12,\n 12,\n 12,\n 12,\n 12,\n 10,\n 11,\n 12,\n 12,\n 13,\n 13,\n 12,\n 13,\n 9,\n 10,\n 11,\n 12,\n 12,\n 12,\n 13,\n 13,\n 10,\n 10,\n 11,\n 12,\n 12,\n 13,\n 13,\n 13\n];\nTables$1.t11l = [\n 2,\n 4,\n 6,\n 8,\n 9,\n 10,\n 9,\n 10,\n 4,\n 5,\n 6,\n 8,\n 10,\n 10,\n 9,\n 10,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 10,\n 10,\n 8,\n 8,\n 9,\n 11,\n 10,\n 12,\n 10,\n 11,\n 9,\n 10,\n 10,\n 11,\n 11,\n 12,\n 11,\n 12,\n 9,\n 10,\n 11,\n 12,\n 12,\n 13,\n 12,\n 13,\n 9,\n 9,\n 9,\n 10,\n 11,\n 12,\n 12,\n 12,\n 9,\n 9,\n 10,\n 11,\n 12,\n 12,\n 12,\n 12\n];\nTables$1.t12l = [\n 4,\n 4,\n 6,\n 8,\n 9,\n 10,\n 10,\n 10,\n 4,\n 5,\n 6,\n 7,\n 9,\n 9,\n 10,\n 10,\n 6,\n 6,\n 7,\n 8,\n 9,\n 10,\n 9,\n 10,\n 7,\n 7,\n 8,\n 8,\n 9,\n 10,\n 10,\n 10,\n 8,\n 8,\n 9,\n 9,\n 10,\n 10,\n 10,\n 11,\n 9,\n 9,\n 10,\n 10,\n 10,\n 11,\n 10,\n 11,\n 9,\n 9,\n 9,\n 10,\n 10,\n 11,\n 11,\n 12,\n 10,\n 10,\n 10,\n 11,\n 11,\n 11,\n 11,\n 12\n];\nTables$1.t13l = [\n 1,\n 5,\n 7,\n 8,\n 9,\n 10,\n 10,\n 11,\n 10,\n 11,\n 12,\n 12,\n 13,\n 13,\n 14,\n 14,\n 4,\n 6,\n 8,\n 9,\n 10,\n 10,\n 11,\n 11,\n 11,\n 11,\n 12,\n 12,\n 13,\n 14,\n 14,\n 14,\n 7,\n 8,\n 9,\n 10,\n 11,\n 11,\n 12,\n 12,\n 11,\n 12,\n 12,\n 13,\n 13,\n 14,\n 15,\n 15,\n 8,\n 9,\n 10,\n 11,\n 11,\n 12,\n 12,\n 12,\n 12,\n 13,\n 13,\n 13,\n 13,\n 14,\n 15,\n 15,\n 9,\n 9,\n 11,\n 11,\n 12,\n 12,\n 13,\n 13,\n 12,\n 13,\n 13,\n 14,\n 14,\n 15,\n 15,\n 16,\n 10,\n 10,\n 11,\n 12,\n 12,\n 12,\n 13,\n 13,\n 13,\n 13,\n 14,\n 13,\n 15,\n 15,\n 16,\n 16,\n 10,\n 11,\n 12,\n 12,\n 13,\n 13,\n 13,\n 13,\n 13,\n 14,\n 14,\n 14,\n 15,\n 15,\n 16,\n 16,\n 11,\n 11,\n 12,\n 13,\n 13,\n 13,\n 14,\n 14,\n 14,\n 14,\n 15,\n 15,\n 15,\n 16,\n 18,\n 18,\n 10,\n 10,\n 11,\n 12,\n 12,\n 13,\n 13,\n 14,\n 14,\n 14,\n 14,\n 15,\n 15,\n 16,\n 17,\n 17,\n 11,\n 11,\n 12,\n 12,\n 13,\n 13,\n 13,\n 15,\n 14,\n 15,\n 15,\n 16,\n 16,\n 16,\n 18,\n 17,\n 11,\n 12,\n 12,\n 13,\n 13,\n 14,\n 14,\n 15,\n 14,\n 15,\n 16,\n 15,\n 16,\n 17,\n 18,\n 19,\n 12,\n 12,\n 12,\n 13,\n 14,\n 14,\n 14,\n 14,\n 15,\n 15,\n 15,\n 16,\n 17,\n 17,\n 17,\n 18,\n 12,\n 13,\n 13,\n 14,\n 14,\n 15,\n 14,\n 15,\n 16,\n 16,\n 17,\n 17,\n 17,\n 18,\n 18,\n 18,\n 13,\n 13,\n 14,\n 15,\n 15,\n 15,\n 16,\n 16,\n 16,\n 16,\n 16,\n 17,\n 18,\n 17,\n 18,\n 18,\n 14,\n 14,\n 14,\n 15,\n 15,\n 15,\n 17,\n 16,\n 16,\n 19,\n 17,\n 17,\n 17,\n 19,\n 18,\n 18,\n 13,\n 14,\n 15,\n 16,\n 16,\n 16,\n 17,\n 16,\n 17,\n 17,\n 18,\n 18,\n 21,\n 20,\n 21,\n 18\n];\nTables$1.t15l = [\n 3,\n 5,\n 6,\n 8,\n 8,\n 9,\n 10,\n 10,\n 10,\n 11,\n 11,\n 12,\n 12,\n 12,\n 13,\n 14,\n 5,\n 5,\n 7,\n 8,\n 9,\n 9,\n 10,\n 10,\n 10,\n 11,\n 11,\n 12,\n 12,\n 12,\n 13,\n 13,\n 6,\n 7,\n 7,\n 8,\n 9,\n 9,\n 10,\n 10,\n 10,\n 11,\n 11,\n 12,\n 12,\n 13,\n 13,\n 13,\n 7,\n 8,\n 8,\n 9,\n 9,\n 10,\n 10,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 13,\n 13,\n 13,\n 8,\n 8,\n 9,\n 9,\n 10,\n 10,\n 11,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 13,\n 13,\n 13,\n 9,\n 9,\n 9,\n 10,\n 10,\n 10,\n 11,\n 11,\n 11,\n 11,\n 12,\n 12,\n 13,\n 13,\n 13,\n 14,\n 10,\n 9,\n 10,\n 10,\n 10,\n 11,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 13,\n 13,\n 14,\n 14,\n 10,\n 10,\n 10,\n 11,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 12,\n 12,\n 13,\n 13,\n 13,\n 14,\n 10,\n 10,\n 10,\n 11,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 12,\n 13,\n 13,\n 14,\n 14,\n 14,\n 10,\n 10,\n 11,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 13,\n 13,\n 13,\n 13,\n 14,\n 14,\n 14,\n 11,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 12,\n 12,\n 13,\n 13,\n 13,\n 13,\n 14,\n 15,\n 14,\n 11,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 12,\n 13,\n 13,\n 13,\n 13,\n 14,\n 14,\n 14,\n 15,\n 12,\n 12,\n 11,\n 12,\n 12,\n 12,\n 13,\n 13,\n 13,\n 13,\n 13,\n 13,\n 14,\n 14,\n 15,\n 15,\n 12,\n 12,\n 12,\n 12,\n 12,\n 13,\n 13,\n 13,\n 13,\n 14,\n 14,\n 14,\n 14,\n 14,\n 15,\n 15,\n 13,\n 13,\n 13,\n 13,\n 13,\n 13,\n 13,\n 13,\n 14,\n 14,\n 14,\n 14,\n 15,\n 15,\n 14,\n 15,\n 13,\n 13,\n 13,\n 13,\n 13,\n 13,\n 13,\n 14,\n 14,\n 14,\n 14,\n 14,\n 15,\n 15,\n 15,\n 15\n];\nTables$1.t16_5l = [\n 1,\n 5,\n 7,\n 9,\n 10,\n 10,\n 11,\n 11,\n 12,\n 12,\n 12,\n 13,\n 13,\n 13,\n 14,\n 11,\n 4,\n 6,\n 8,\n 9,\n 10,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 13,\n 14,\n 13,\n 14,\n 11,\n 7,\n 8,\n 9,\n 10,\n 11,\n 11,\n 12,\n 12,\n 13,\n 12,\n 13,\n 13,\n 13,\n 14,\n 14,\n 12,\n 9,\n 9,\n 10,\n 11,\n 11,\n 12,\n 12,\n 12,\n 13,\n 13,\n 14,\n 14,\n 14,\n 15,\n 15,\n 13,\n 10,\n 10,\n 11,\n 11,\n 12,\n 12,\n 13,\n 13,\n 13,\n 14,\n 14,\n 14,\n 15,\n 15,\n 15,\n 12,\n 10,\n 10,\n 11,\n 11,\n 12,\n 13,\n 13,\n 14,\n 13,\n 14,\n 14,\n 15,\n 15,\n 15,\n 16,\n 13,\n 11,\n 11,\n 11,\n 12,\n 13,\n 13,\n 13,\n 13,\n 14,\n 14,\n 14,\n 14,\n 15,\n 15,\n 16,\n 13,\n 11,\n 11,\n 12,\n 12,\n 13,\n 13,\n 13,\n 14,\n 14,\n 15,\n 15,\n 15,\n 15,\n 17,\n 17,\n 13,\n 11,\n 12,\n 12,\n 13,\n 13,\n 13,\n 14,\n 14,\n 15,\n 15,\n 15,\n 15,\n 16,\n 16,\n 16,\n 13,\n 12,\n 12,\n 12,\n 13,\n 13,\n 14,\n 14,\n 15,\n 15,\n 15,\n 15,\n 16,\n 15,\n 16,\n 15,\n 14,\n 12,\n 13,\n 12,\n 13,\n 14,\n 14,\n 14,\n 14,\n 15,\n 16,\n 16,\n 16,\n 17,\n 17,\n 16,\n 13,\n 13,\n 13,\n 13,\n 13,\n 14,\n 14,\n 15,\n 16,\n 16,\n 16,\n 16,\n 16,\n 16,\n 15,\n 16,\n 14,\n 13,\n 14,\n 14,\n 14,\n 14,\n 15,\n 15,\n 15,\n 15,\n 17,\n 16,\n 16,\n 16,\n 16,\n 18,\n 14,\n 15,\n 14,\n 14,\n 14,\n 15,\n 15,\n 16,\n 16,\n 16,\n 18,\n 17,\n 17,\n 17,\n 19,\n 17,\n 14,\n 14,\n 15,\n 13,\n 14,\n 16,\n 16,\n 15,\n 16,\n 16,\n 17,\n 18,\n 17,\n 19,\n 17,\n 16,\n 14,\n 11,\n 11,\n 11,\n 12,\n 12,\n 13,\n 13,\n 13,\n 14,\n 14,\n 14,\n 14,\n 14,\n 14,\n 14,\n 12\n];\nTables$1.t16l = [\n 1,\n 5,\n 7,\n 9,\n 10,\n 10,\n 11,\n 11,\n 12,\n 12,\n 12,\n 13,\n 13,\n 13,\n 14,\n 10,\n 4,\n 6,\n 8,\n 9,\n 10,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 13,\n 14,\n 13,\n 14,\n 10,\n 7,\n 8,\n 9,\n 10,\n 11,\n 11,\n 12,\n 12,\n 13,\n 12,\n 13,\n 13,\n 13,\n 14,\n 14,\n 11,\n 9,\n 9,\n 10,\n 11,\n 11,\n 12,\n 12,\n 12,\n 13,\n 13,\n 14,\n 14,\n 14,\n 15,\n 15,\n 12,\n 10,\n 10,\n 11,\n 11,\n 12,\n 12,\n 13,\n 13,\n 13,\n 14,\n 14,\n 14,\n 15,\n 15,\n 15,\n 11,\n 10,\n 10,\n 11,\n 11,\n 12,\n 13,\n 13,\n 14,\n 13,\n 14,\n 14,\n 15,\n 15,\n 15,\n 16,\n 12,\n 11,\n 11,\n 11,\n 12,\n 13,\n 13,\n 13,\n 13,\n 14,\n 14,\n 14,\n 14,\n 15,\n 15,\n 16,\n 12,\n 11,\n 11,\n 12,\n 12,\n 13,\n 13,\n 13,\n 14,\n 14,\n 15,\n 15,\n 15,\n 15,\n 17,\n 17,\n 12,\n 11,\n 12,\n 12,\n 13,\n 13,\n 13,\n 14,\n 14,\n 15,\n 15,\n 15,\n 15,\n 16,\n 16,\n 16,\n 12,\n 12,\n 12,\n 12,\n 13,\n 13,\n 14,\n 14,\n 15,\n 15,\n 15,\n 15,\n 16,\n 15,\n 16,\n 15,\n 13,\n 12,\n 13,\n 12,\n 13,\n 14,\n 14,\n 14,\n 14,\n 15,\n 16,\n 16,\n 16,\n 17,\n 17,\n 16,\n 12,\n 13,\n 13,\n 13,\n 13,\n 14,\n 14,\n 15,\n 16,\n 16,\n 16,\n 16,\n 16,\n 16,\n 15,\n 16,\n 13,\n 13,\n 14,\n 14,\n 14,\n 14,\n 15,\n 15,\n 15,\n 15,\n 17,\n 16,\n 16,\n 16,\n 16,\n 18,\n 13,\n 15,\n 14,\n 14,\n 14,\n 15,\n 15,\n 16,\n 16,\n 16,\n 18,\n 17,\n 17,\n 17,\n 19,\n 17,\n 13,\n 14,\n 15,\n 13,\n 14,\n 16,\n 16,\n 15,\n 16,\n 16,\n 17,\n 18,\n 17,\n 19,\n 17,\n 16,\n 13,\n 10,\n 10,\n 10,\n 11,\n 11,\n 12,\n 12,\n 12,\n 13,\n 13,\n 13,\n 13,\n 13,\n 13,\n 13,\n 10\n];\nTables$1.t24l = [\n 4,\n 5,\n 7,\n 8,\n 9,\n 10,\n 10,\n 11,\n 11,\n 12,\n 12,\n 12,\n 12,\n 12,\n 13,\n 10,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 10,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 12,\n 12,\n 10,\n 7,\n 7,\n 8,\n 9,\n 9,\n 10,\n 10,\n 11,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 13,\n 9,\n 8,\n 8,\n 9,\n 9,\n 10,\n 10,\n 10,\n 11,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 12,\n 9,\n 9,\n 9,\n 9,\n 10,\n 10,\n 10,\n 10,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 12,\n 13,\n 9,\n 10,\n 9,\n 10,\n 10,\n 10,\n 10,\n 11,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 12,\n 12,\n 9,\n 10,\n 10,\n 10,\n 10,\n 10,\n 11,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 12,\n 12,\n 13,\n 9,\n 11,\n 10,\n 10,\n 10,\n 11,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 12,\n 12,\n 13,\n 13,\n 10,\n 11,\n 11,\n 11,\n 11,\n 11,\n 11,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 12,\n 13,\n 13,\n 10,\n 11,\n 11,\n 11,\n 11,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 12,\n 12,\n 13,\n 13,\n 13,\n 10,\n 12,\n 11,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 12,\n 12,\n 12,\n 13,\n 13,\n 13,\n 13,\n 10,\n 12,\n 12,\n 11,\n 11,\n 11,\n 12,\n 12,\n 12,\n 12,\n 12,\n 12,\n 13,\n 13,\n 13,\n 13,\n 10,\n 12,\n 12,\n 12,\n 12,\n 12,\n 12,\n 12,\n 12,\n 12,\n 12,\n 13,\n 13,\n 13,\n 13,\n 13,\n 10,\n 12,\n 12,\n 12,\n 12,\n 12,\n 12,\n 12,\n 12,\n 13,\n 13,\n 13,\n 13,\n 13,\n 13,\n 13,\n 10,\n 13,\n 12,\n 12,\n 12,\n 12,\n 12,\n 12,\n 13,\n 13,\n 13,\n 13,\n 13,\n 13,\n 13,\n 13,\n 10,\n 9,\n 9,\n 9,\n 9,\n 9,\n 9,\n 9,\n 9,\n 9,\n 9,\n 9,\n 10,\n 10,\n 10,\n 10,\n 6\n];\nTables$1.t32l = [\n 1 + 0,\n 4 + 1,\n 4 + 1,\n 5 + 2,\n 4 + 1,\n 6 + 2,\n 5 + 2,\n 6 + 3,\n 4 + 1,\n 5 + 2,\n 5 + 2,\n 6 + 3,\n 5 + 2,\n 6 + 3,\n 6 + 3,\n 6 + 4\n];\nTables$1.t33l = [\n 4 + 0,\n 4 + 1,\n 4 + 1,\n 4 + 2,\n 4 + 1,\n 4 + 2,\n 4 + 2,\n 4 + 3,\n 4 + 1,\n 4 + 2,\n 4 + 2,\n 4 + 3,\n 4 + 2,\n 4 + 3,\n 4 + 3,\n 4 + 4\n];\nTables$1.ht = [\n new HuffCodeTab(0, 0, null, null),\n new HuffCodeTab(2, 0, Tables$1.t1HB, Tables$1.t1l),\n new HuffCodeTab(3, 0, Tables$1.t2HB, Tables$1.t2l),\n new HuffCodeTab(3, 0, Tables$1.t3HB, Tables$1.t3l),\n new HuffCodeTab(0, 0, null, null),\n new HuffCodeTab(4, 0, Tables$1.t5HB, Tables$1.t5l),\n new HuffCodeTab(4, 0, Tables$1.t6HB, Tables$1.t6l),\n new HuffCodeTab(6, 0, Tables$1.t7HB, Tables$1.t7l),\n new HuffCodeTab(6, 0, Tables$1.t8HB, Tables$1.t8l),\n new HuffCodeTab(6, 0, Tables$1.t9HB, Tables$1.t9l),\n new HuffCodeTab(8, 0, Tables$1.t10HB, Tables$1.t10l),\n new HuffCodeTab(8, 0, Tables$1.t11HB, Tables$1.t11l),\n new HuffCodeTab(8, 0, Tables$1.t12HB, Tables$1.t12l),\n new HuffCodeTab(16, 0, Tables$1.t13HB, Tables$1.t13l),\n new HuffCodeTab(0, 0, null, Tables$1.t16_5l),\n new HuffCodeTab(16, 0, Tables$1.t15HB, Tables$1.t15l),\n new HuffCodeTab(1, 1, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(2, 3, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(3, 7, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(4, 15, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(6, 63, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(8, 255, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(10, 1023, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(13, 8191, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(4, 15, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(5, 31, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(6, 63, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(7, 127, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(8, 255, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(9, 511, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(11, 2047, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(13, 8191, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(0, 0, Tables$1.t32HB, Tables$1.t32l),\n new HuffCodeTab(0, 0, Tables$1.t33HB, Tables$1.t33l)\n];\nTables$1.largetbl = [\n 65540,\n 327685,\n 458759,\n 589832,\n 655369,\n 655370,\n 720906,\n 720907,\n 786443,\n 786444,\n 786444,\n 851980,\n 851980,\n 851980,\n 917517,\n 655370,\n 262149,\n 393222,\n 524295,\n 589832,\n 655369,\n 720906,\n 720906,\n 720907,\n 786443,\n 786443,\n 786444,\n 851980,\n 917516,\n 851980,\n 917516,\n 655370,\n 458759,\n 524295,\n 589832,\n 655369,\n 720905,\n 720906,\n 786442,\n 786443,\n 851979,\n 786443,\n 851979,\n 851980,\n 851980,\n 917516,\n 917517,\n 720905,\n 589832,\n 589832,\n 655369,\n 720905,\n 720906,\n 786442,\n 786442,\n 786443,\n 851979,\n 851979,\n 917515,\n 917516,\n 917516,\n 983052,\n 983052,\n 786441,\n 655369,\n 655369,\n 720905,\n 720906,\n 786442,\n 786442,\n 851978,\n 851979,\n 851979,\n 917515,\n 917516,\n 917516,\n 983052,\n 983052,\n 983053,\n 720905,\n 655370,\n 655369,\n 720906,\n 720906,\n 786442,\n 851978,\n 851979,\n 917515,\n 851979,\n 917515,\n 917516,\n 983052,\n 983052,\n 983052,\n 1048588,\n 786441,\n 720906,\n 720906,\n 720906,\n 786442,\n 851978,\n 851979,\n 851979,\n 851979,\n 917515,\n 917516,\n 917516,\n 917516,\n 983052,\n 983052,\n 1048589,\n 786441,\n 720907,\n 720906,\n 786442,\n 786442,\n 851979,\n 851979,\n 851979,\n 917515,\n 917516,\n 983052,\n 983052,\n 983052,\n 983052,\n 1114125,\n 1114125,\n 786442,\n 720907,\n 786443,\n 786443,\n 851979,\n 851979,\n 851979,\n 917515,\n 917515,\n 983051,\n 983052,\n 983052,\n 983052,\n 1048588,\n 1048589,\n 1048589,\n 786442,\n 786443,\n 786443,\n 786443,\n 851979,\n 851979,\n 917515,\n 917515,\n 983052,\n 983052,\n 983052,\n 983052,\n 1048588,\n 983053,\n 1048589,\n 983053,\n 851978,\n 786444,\n 851979,\n 786443,\n 851979,\n 917515,\n 917516,\n 917516,\n 917516,\n 983052,\n 1048588,\n 1048588,\n 1048589,\n 1114125,\n 1114125,\n 1048589,\n 786442,\n 851980,\n 851980,\n 851979,\n 851979,\n 917515,\n 917516,\n 983052,\n 1048588,\n 1048588,\n 1048588,\n 1048588,\n 1048589,\n 1048589,\n 983053,\n 1048589,\n 851978,\n 851980,\n 917516,\n 917516,\n 917516,\n 917516,\n 983052,\n 983052,\n 983052,\n 983052,\n 1114124,\n 1048589,\n 1048589,\n 1048589,\n 1048589,\n 1179661,\n 851978,\n 983052,\n 917516,\n 917516,\n 917516,\n 983052,\n 983052,\n 1048588,\n 1048588,\n 1048589,\n 1179661,\n 1114125,\n 1114125,\n 1114125,\n 1245197,\n 1114125,\n 851978,\n 917517,\n 983052,\n 851980,\n 917516,\n 1048588,\n 1048588,\n 983052,\n 1048589,\n 1048589,\n 1114125,\n 1179661,\n 1114125,\n 1245197,\n 1114125,\n 1048589,\n 851978,\n 655369,\n 655369,\n 655369,\n 720905,\n 720905,\n 786441,\n 786441,\n 786441,\n 851977,\n 851977,\n 851977,\n 851978,\n 851978,\n 851978,\n 851978,\n 655366\n];\nTables$1.table23 = [\n 65538,\n 262147,\n 458759,\n 262148,\n 327684,\n 458759,\n 393222,\n 458759,\n 524296\n];\nTables$1.table56 = [\n 65539,\n 262148,\n 458758,\n 524296,\n 262148,\n 327684,\n 524294,\n 589831,\n 458757,\n 524294,\n 589831,\n 655368,\n 524295,\n 524295,\n 589832,\n 655369\n];\nTables$1.bitrate_table = [\n [\n 0,\n 8,\n 16,\n 24,\n 32,\n 40,\n 48,\n 56,\n 64,\n 80,\n 96,\n 112,\n 128,\n 144,\n 160,\n -1\n ],\n [\n 0,\n 32,\n 40,\n 48,\n 56,\n 64,\n 80,\n 96,\n 112,\n 128,\n 160,\n 192,\n 224,\n 256,\n 320,\n -1\n ],\n [0, 8, 16, 24, 32, 40, 48, 56, 64, -1, -1, -1, -1, -1, -1, -1]\n];\nTables$1.samplerate_table = [\n [22050, 24e3, 16e3, -1],\n [44100, 48e3, 32e3, -1],\n [11025, 12e3, 8e3, -1]\n];\nTables$1.scfsi_band = [0, 6, 11, 16, 21];\nvar VbrMode$4 = common.VbrMode;\nvar Float = common.Float;\nvar Util$1 = common.Util;\nvar new_float$3 = common.new_float;\nvar new_int$3 = common.new_int;\nvar assert$7 = common.assert;\nQuantizePVT.Q_MAX = 256 + 1;\nQuantizePVT.Q_MAX2 = 116;\nQuantizePVT.LARGE_BITS = 1e5;\nQuantizePVT.IXMAX_VAL = 8206;\nfunction QuantizePVT() {\n var tak = null;\n var rv = null;\n var psy = null;\n this.setModules = function(_tk, _rv, _psy) {\n tak = _tk;\n rv = _rv;\n psy = _psy;\n };\n function POW20(x) {\n return pow20[x + QuantizePVT.Q_MAX2];\n }\n this.IPOW20 = function(x) {\n return ipow20[x];\n };\n var DBL_EPSILON = 2220446049250313e-31;\n var IXMAX_VAL = QuantizePVT.IXMAX_VAL;\n var PRECALC_SIZE = IXMAX_VAL + 2;\n var Q_MAX = QuantizePVT.Q_MAX;\n var Q_MAX2 = QuantizePVT.Q_MAX2;\n var NSATHSCALE = 100;\n this.nr_of_sfb_block = [\n [\n [6, 5, 5, 5],\n [9, 9, 9, 9],\n [6, 9, 9, 9]\n ],\n [\n [6, 5, 7, 3],\n [9, 9, 12, 6],\n [6, 9, 12, 6]\n ],\n [\n [11, 10, 0, 0],\n [18, 18, 0, 0],\n [15, 18, 0, 0]\n ],\n [\n [7, 7, 7, 0],\n [12, 12, 12, 0],\n [6, 15, 12, 0]\n ],\n [\n [6, 6, 6, 3],\n [12, 9, 9, 6],\n [6, 12, 9, 6]\n ],\n [\n [8, 8, 5, 0],\n [15, 12, 9, 0],\n [6, 18, 9, 0]\n ]\n ];\n var pretab = [\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n 1,\n 2,\n 2,\n 3,\n 3,\n 3,\n 2,\n 0\n ];\n this.pretab = pretab;\n this.sfBandIndex = [\n new ScaleFac(\n [\n 0,\n 6,\n 12,\n 18,\n 24,\n 30,\n 36,\n 44,\n 54,\n 66,\n 80,\n 96,\n 116,\n 140,\n 168,\n 200,\n 238,\n 284,\n 336,\n 396,\n 464,\n 522,\n 576\n ],\n [0, 4, 8, 12, 18, 24, 32, 42, 56, 74, 100, 132, 174, 192],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n ),\n new ScaleFac(\n [\n 0,\n 6,\n 12,\n 18,\n 24,\n 30,\n 36,\n 44,\n 54,\n 66,\n 80,\n 96,\n 114,\n 136,\n 162,\n 194,\n 232,\n 278,\n 332,\n 394,\n 464,\n 540,\n 576\n ],\n [0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 136, 180, 192],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n ),\n new ScaleFac(\n [\n 0,\n 6,\n 12,\n 18,\n 24,\n 30,\n 36,\n 44,\n 54,\n 66,\n 80,\n 96,\n 116,\n 140,\n 168,\n 200,\n 238,\n 284,\n 336,\n 396,\n 464,\n 522,\n 576\n ],\n [0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 134, 174, 192],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n ),\n new ScaleFac(\n [\n 0,\n 4,\n 8,\n 12,\n 16,\n 20,\n 24,\n 30,\n 36,\n 44,\n 52,\n 62,\n 74,\n 90,\n 110,\n 134,\n 162,\n 196,\n 238,\n 288,\n 342,\n 418,\n 576\n ],\n [0, 4, 8, 12, 16, 22, 30, 40, 52, 66, 84, 106, 136, 192],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n ),\n new ScaleFac(\n [\n 0,\n 4,\n 8,\n 12,\n 16,\n 20,\n 24,\n 30,\n 36,\n 42,\n 50,\n 60,\n 72,\n 88,\n 106,\n 128,\n 156,\n 190,\n 230,\n 276,\n 330,\n 384,\n 576\n ],\n [0, 4, 8, 12, 16, 22, 28, 38, 50, 64, 80, 100, 126, 192],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n ),\n new ScaleFac(\n [\n 0,\n 4,\n 8,\n 12,\n 16,\n 20,\n 24,\n 30,\n 36,\n 44,\n 54,\n 66,\n 82,\n 102,\n 126,\n 156,\n 194,\n 240,\n 296,\n 364,\n 448,\n 550,\n 576\n ],\n [0, 4, 8, 12, 16, 22, 30, 42, 58, 78, 104, 138, 180, 192],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n ),\n new ScaleFac(\n [\n 0,\n 6,\n 12,\n 18,\n 24,\n 30,\n 36,\n 44,\n 54,\n 66,\n 80,\n 96,\n 116,\n 140,\n 168,\n 200,\n 238,\n 284,\n 336,\n 396,\n 464,\n 522,\n 576\n ],\n [\n 0 / 3,\n 12 / 3,\n 24 / 3,\n 36 / 3,\n 54 / 3,\n 78 / 3,\n 108 / 3,\n 144 / 3,\n 186 / 3,\n 240 / 3,\n 312 / 3,\n 402 / 3,\n 522 / 3,\n 576 / 3\n ],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n ),\n new ScaleFac(\n [\n 0,\n 6,\n 12,\n 18,\n 24,\n 30,\n 36,\n 44,\n 54,\n 66,\n 80,\n 96,\n 116,\n 140,\n 168,\n 200,\n 238,\n 284,\n 336,\n 396,\n 464,\n 522,\n 576\n ],\n [\n 0 / 3,\n 12 / 3,\n 24 / 3,\n 36 / 3,\n 54 / 3,\n 78 / 3,\n 108 / 3,\n 144 / 3,\n 186 / 3,\n 240 / 3,\n 312 / 3,\n 402 / 3,\n 522 / 3,\n 576 / 3\n ],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n ),\n new ScaleFac(\n [\n 0,\n 12,\n 24,\n 36,\n 48,\n 60,\n 72,\n 88,\n 108,\n 132,\n 160,\n 192,\n 232,\n 280,\n 336,\n 400,\n 476,\n 566,\n 568,\n 570,\n 572,\n 574,\n 576\n ],\n [\n 0 / 3,\n 24 / 3,\n 48 / 3,\n 72 / 3,\n 108 / 3,\n 156 / 3,\n 216 / 3,\n 288 / 3,\n 372 / 3,\n 480 / 3,\n 486 / 3,\n 492 / 3,\n 498 / 3,\n 576 / 3\n ],\n [0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 0, 0, 0, 0]\n )\n ];\n var pow20 = new_float$3(Q_MAX + Q_MAX2 + 1);\n var ipow20 = new_float$3(Q_MAX);\n var pow43 = new_float$3(PRECALC_SIZE);\n var adj43 = new_float$3(PRECALC_SIZE);\n this.adj43 = adj43;\n function ATHmdct(gfp, f) {\n var ath = psy.ATHformula(f, gfp);\n ath -= NSATHSCALE;\n ath = Math.pow(10, ath / 10 + gfp.ATHlower);\n return ath;\n }\n function compute_ath(gfp) {\n var ATH_l = gfp.internal_flags.ATH.l;\n var ATH_psfb21 = gfp.internal_flags.ATH.psfb21;\n var ATH_s = gfp.internal_flags.ATH.s;\n var ATH_psfb12 = gfp.internal_flags.ATH.psfb12;\n var gfc = gfp.internal_flags;\n var samp_freq = gfp.out_samplerate;\n for (var sfb = 0; sfb < Encoder.SBMAX_l; sfb++) {\n var start2 = gfc.scalefac_band.l[sfb];\n var end = gfc.scalefac_band.l[sfb + 1];\n ATH_l[sfb] = Float.MAX_VALUE;\n for (var i = start2; i < end; i++) {\n var freq = i * samp_freq / (2 * 576);\n var ATH_f = ATHmdct(gfp, freq);\n ATH_l[sfb] = Math.min(ATH_l[sfb], ATH_f);\n }\n }\n for (var sfb = 0; sfb < Encoder.PSFB21; sfb++) {\n var start2 = gfc.scalefac_band.psfb21[sfb];\n var end = gfc.scalefac_band.psfb21[sfb + 1];\n ATH_psfb21[sfb] = Float.MAX_VALUE;\n for (var i = start2; i < end; i++) {\n var freq = i * samp_freq / (2 * 576);\n var ATH_f = ATHmdct(gfp, freq);\n ATH_psfb21[sfb] = Math.min(ATH_psfb21[sfb], ATH_f);\n }\n }\n for (var sfb = 0; sfb < Encoder.SBMAX_s; sfb++) {\n var start2 = gfc.scalefac_band.s[sfb];\n var end = gfc.scalefac_band.s[sfb + 1];\n ATH_s[sfb] = Float.MAX_VALUE;\n for (var i = start2; i < end; i++) {\n var freq = i * samp_freq / (2 * 192);\n var ATH_f = ATHmdct(gfp, freq);\n ATH_s[sfb] = Math.min(ATH_s[sfb], ATH_f);\n }\n ATH_s[sfb] *= gfc.scalefac_band.s[sfb + 1] - gfc.scalefac_band.s[sfb];\n }\n for (var sfb = 0; sfb < Encoder.PSFB12; sfb++) {\n var start2 = gfc.scalefac_band.psfb12[sfb];\n var end = gfc.scalefac_band.psfb12[sfb + 1];\n ATH_psfb12[sfb] = Float.MAX_VALUE;\n for (var i = start2; i < end; i++) {\n var freq = i * samp_freq / (2 * 192);\n var ATH_f = ATHmdct(gfp, freq);\n ATH_psfb12[sfb] = Math.min(ATH_psfb12[sfb], ATH_f);\n }\n ATH_psfb12[sfb] *= gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12];\n }\n if (gfp.noATH) {\n for (var sfb = 0; sfb < Encoder.SBMAX_l; sfb++) {\n ATH_l[sfb] = 1e-20;\n }\n for (var sfb = 0; sfb < Encoder.PSFB21; sfb++) {\n ATH_psfb21[sfb] = 1e-20;\n }\n for (var sfb = 0; sfb < Encoder.SBMAX_s; sfb++) {\n ATH_s[sfb] = 1e-20;\n }\n for (var sfb = 0; sfb < Encoder.PSFB12; sfb++) {\n ATH_psfb12[sfb] = 1e-20;\n }\n }\n gfc.ATH.floor = 10 * Math.log10(ATHmdct(gfp, -1));\n }\n this.iteration_init = function(gfp) {\n var gfc = gfp.internal_flags;\n var l3_side = gfc.l3_side;\n var i;\n if (gfc.iteration_init_init == 0) {\n gfc.iteration_init_init = 1;\n l3_side.main_data_begin = 0;\n compute_ath(gfp);\n pow43[0] = 0;\n for (i = 1; i < PRECALC_SIZE; i++)\n pow43[i] = Math.pow(i, 4 / 3);\n for (i = 0; i < PRECALC_SIZE - 1; i++) {\n adj43[i] = i + 1 - Math.pow(0.5 * (pow43[i] + pow43[i + 1]), 0.75);\n }\n adj43[i] = 0.5;\n for (i = 0; i < Q_MAX; i++)\n ipow20[i] = Math.pow(2, (i - 210) * -0.1875);\n for (i = 0; i <= Q_MAX + Q_MAX2; i++) {\n pow20[i] = Math.pow(2, (i - 210 - Q_MAX2) * 0.25);\n }\n tak.huffman_init(gfc);\n {\n var bass, alto, treble, sfb21;\n i = gfp.exp_nspsytune >> 2 & 63;\n if (i >= 32)\n i -= 64;\n bass = Math.pow(10, i / 4 / 10);\n i = gfp.exp_nspsytune >> 8 & 63;\n if (i >= 32)\n i -= 64;\n alto = Math.pow(10, i / 4 / 10);\n i = gfp.exp_nspsytune >> 14 & 63;\n if (i >= 32)\n i -= 64;\n treble = Math.pow(10, i / 4 / 10);\n i = gfp.exp_nspsytune >> 20 & 63;\n if (i >= 32)\n i -= 64;\n sfb21 = treble * Math.pow(10, i / 4 / 10);\n for (i = 0; i < Encoder.SBMAX_l; i++) {\n var f;\n if (i <= 6)\n f = bass;\n else if (i <= 13)\n f = alto;\n else if (i <= 20)\n f = treble;\n else\n f = sfb21;\n gfc.nsPsy.longfact[i] = f;\n }\n for (i = 0; i < Encoder.SBMAX_s; i++) {\n var f;\n if (i <= 5)\n f = bass;\n else if (i <= 10)\n f = alto;\n else if (i <= 11)\n f = treble;\n else\n f = sfb21;\n gfc.nsPsy.shortfact[i] = f;\n }\n }\n }\n };\n this.on_pe = function(gfp, pe, targ_bits, mean_bits, gr, cbr) {\n var gfc = gfp.internal_flags;\n var tbits = 0;\n var bits;\n var add_bits = new_int$3(2);\n var ch;\n var mb = new MeanBits$1(tbits);\n var extra_bits = rv.ResvMaxBits(gfp, mean_bits, mb, cbr);\n tbits = mb.bits;\n var max_bits = tbits + extra_bits;\n if (max_bits > LameInternalFlags$1.MAX_BITS_PER_GRANULE) {\n max_bits = LameInternalFlags$1.MAX_BITS_PER_GRANULE;\n }\n for (bits = 0, ch = 0; ch < gfc.channels_out; ++ch) {\n targ_bits[ch] = Math.min(\n LameInternalFlags$1.MAX_BITS_PER_CHANNEL,\n tbits / gfc.channels_out\n );\n add_bits[ch] = 0 | targ_bits[ch] * pe[gr][ch] / 700 - targ_bits[ch];\n if (add_bits[ch] > mean_bits * 3 / 4)\n add_bits[ch] = mean_bits * 3 / 4;\n if (add_bits[ch] < 0)\n add_bits[ch] = 0;\n if (add_bits[ch] + targ_bits[ch] > LameInternalFlags$1.MAX_BITS_PER_CHANNEL) {\n add_bits[ch] = Math.max(\n 0,\n LameInternalFlags$1.MAX_BITS_PER_CHANNEL - targ_bits[ch]\n );\n }\n bits += add_bits[ch];\n }\n if (bits > extra_bits) {\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n add_bits[ch] = extra_bits * add_bits[ch] / bits;\n }\n }\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n targ_bits[ch] += add_bits[ch];\n extra_bits -= add_bits[ch];\n }\n for (bits = 0, ch = 0; ch < gfc.channels_out; ++ch) {\n bits += targ_bits[ch];\n }\n if (bits > LameInternalFlags$1.MAX_BITS_PER_GRANULE) {\n var sum = 0;\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n targ_bits[ch] *= LameInternalFlags$1.MAX_BITS_PER_GRANULE;\n targ_bits[ch] /= bits;\n sum += targ_bits[ch];\n }\n }\n return max_bits;\n };\n this.reduce_side = function(targ_bits, ms_ener_ratio, mean_bits, max_bits) {\n assert$7(\n targ_bits[0] + targ_bits[1] <= LameInternalFlags$1.MAX_BITS_PER_GRANULE\n );\n var fac = 0.33 * (0.5 - ms_ener_ratio) / 0.5;\n if (fac < 0)\n fac = 0;\n if (fac > 0.5)\n fac = 0.5;\n var move_bits = 0 | fac * 0.5 * (targ_bits[0] + targ_bits[1]);\n if (move_bits > LameInternalFlags$1.MAX_BITS_PER_CHANNEL - targ_bits[0]) {\n move_bits = LameInternalFlags$1.MAX_BITS_PER_CHANNEL - targ_bits[0];\n }\n if (move_bits < 0)\n move_bits = 0;\n if (targ_bits[1] >= 125) {\n if (targ_bits[1] - move_bits > 125) {\n if (targ_bits[0] < mean_bits)\n targ_bits[0] += move_bits;\n targ_bits[1] -= move_bits;\n } else {\n targ_bits[0] += targ_bits[1] - 125;\n targ_bits[1] = 125;\n }\n }\n move_bits = targ_bits[0] + targ_bits[1];\n if (move_bits > max_bits) {\n targ_bits[0] = max_bits * targ_bits[0] / move_bits;\n targ_bits[1] = max_bits * targ_bits[1] / move_bits;\n }\n assert$7(targ_bits[0] <= LameInternalFlags$1.MAX_BITS_PER_CHANNEL);\n assert$7(targ_bits[1] <= LameInternalFlags$1.MAX_BITS_PER_CHANNEL);\n assert$7(\n targ_bits[0] + targ_bits[1] <= LameInternalFlags$1.MAX_BITS_PER_GRANULE\n );\n };\n this.athAdjust = function(a, x, athFloor) {\n var o = 90.30873362;\n var p2 = 94.82444863;\n var u = Util$1.FAST_LOG10_X(x, 10);\n var v = a * a;\n var w = 0;\n u -= athFloor;\n if (v > 1e-20)\n w = 1 + Util$1.FAST_LOG10_X(v, 10 / o);\n if (w < 0)\n w = 0;\n u *= w;\n u += athFloor + o - p2;\n return Math.pow(10, 0.1 * u);\n };\n this.calc_xmin = function(gfp, ratio, cod_info, pxmin) {\n var pxminPos = 0;\n var gfc = gfp.internal_flags;\n var gsfb;\n var j = 0;\n var ath_over = 0;\n var ATH2 = gfc.ATH;\n var xr = cod_info.xr;\n var enable_athaa_fix = gfp.VBR == VbrMode$4.vbr_mtrh ? 1 : 0;\n var masking_lower = gfc.masking_lower;\n if (gfp.VBR == VbrMode$4.vbr_mtrh || gfp.VBR == VbrMode$4.vbr_mt) {\n masking_lower = 1;\n }\n for (gsfb = 0; gsfb < cod_info.psy_lmax; gsfb++) {\n var en0, xmin;\n var rh1, rh2;\n var width, l;\n if (gfp.VBR == VbrMode$4.vbr_rh || gfp.VBR == VbrMode$4.vbr_mtrh) {\n xmin = athAdjust(ATH2.adjust, ATH2.l[gsfb], ATH2.floor);\n } else\n xmin = ATH2.adjust * ATH2.l[gsfb];\n width = cod_info.width[gsfb];\n rh1 = xmin / width;\n rh2 = DBL_EPSILON;\n l = width >> 1;\n en0 = 0;\n do {\n var xa, xb;\n xa = xr[j] * xr[j];\n en0 += xa;\n rh2 += xa < rh1 ? xa : rh1;\n j++;\n xb = xr[j] * xr[j];\n en0 += xb;\n rh2 += xb < rh1 ? xb : rh1;\n j++;\n } while (--l > 0);\n if (en0 > xmin)\n ath_over++;\n if (gsfb == Encoder.SBPSY_l) {\n var x = xmin * gfc.nsPsy.longfact[gsfb];\n if (rh2 < x) {\n rh2 = x;\n }\n }\n if (enable_athaa_fix != 0) {\n xmin = rh2;\n }\n if (!gfp.ATHonly) {\n var e = ratio.en.l[gsfb];\n if (e > 0) {\n var x;\n x = en0 * ratio.thm.l[gsfb] * masking_lower / e;\n if (enable_athaa_fix != 0)\n x *= gfc.nsPsy.longfact[gsfb];\n if (xmin < x)\n xmin = x;\n }\n }\n if (enable_athaa_fix != 0)\n pxmin[pxminPos++] = xmin;\n else\n pxmin[pxminPos++] = xmin * gfc.nsPsy.longfact[gsfb];\n }\n var max_nonzero = 575;\n if (cod_info.block_type != Encoder.SHORT_TYPE) {\n var k = 576;\n while (k-- != 0 && BitStream$1.EQ(xr[k], 0)) {\n max_nonzero = k;\n }\n }\n cod_info.max_nonzero_coeff = max_nonzero;\n for (var sfb = cod_info.sfb_smin; gsfb < cod_info.psymax; sfb++, gsfb += 3) {\n var width, b;\n var tmpATH;\n if (gfp.VBR == VbrMode$4.vbr_rh || gfp.VBR == VbrMode$4.vbr_mtrh) {\n tmpATH = athAdjust(ATH2.adjust, ATH2.s[sfb], ATH2.floor);\n } else\n tmpATH = ATH2.adjust * ATH2.s[sfb];\n width = cod_info.width[gsfb];\n for (b = 0; b < 3; b++) {\n var en0 = 0;\n var xmin;\n var rh1, rh2;\n var l = width >> 1;\n rh1 = tmpATH / width;\n rh2 = DBL_EPSILON;\n do {\n var xa, xb;\n xa = xr[j] * xr[j];\n en0 += xa;\n rh2 += xa < rh1 ? xa : rh1;\n j++;\n xb = xr[j] * xr[j];\n en0 += xb;\n rh2 += xb < rh1 ? xb : rh1;\n j++;\n } while (--l > 0);\n if (en0 > tmpATH)\n ath_over++;\n if (sfb == Encoder.SBPSY_s) {\n var x = tmpATH * gfc.nsPsy.shortfact[sfb];\n if (rh2 < x) {\n rh2 = x;\n }\n }\n if (enable_athaa_fix != 0)\n xmin = rh2;\n else\n xmin = tmpATH;\n if (!gfp.ATHonly && !gfp.ATHshort) {\n var e = ratio.en.s[sfb][b];\n if (e > 0) {\n var x;\n x = en0 * ratio.thm.s[sfb][b] * masking_lower / e;\n if (enable_athaa_fix != 0)\n x *= gfc.nsPsy.shortfact[sfb];\n if (xmin < x)\n xmin = x;\n }\n }\n if (enable_athaa_fix != 0)\n pxmin[pxminPos++] = xmin;\n else\n pxmin[pxminPos++] = xmin * gfc.nsPsy.shortfact[sfb];\n }\n if (gfp.useTemporal) {\n if (pxmin[pxminPos - 3] > pxmin[pxminPos - 3 + 1]) {\n pxmin[pxminPos - 3 + 1] += (pxmin[pxminPos - 3] - pxmin[pxminPos - 3 + 1]) * gfc.decay;\n }\n if (pxmin[pxminPos - 3 + 1] > pxmin[pxminPos - 3 + 2]) {\n pxmin[pxminPos - 3 + 2] += (pxmin[pxminPos - 3 + 1] - pxmin[pxminPos - 3 + 2]) * gfc.decay;\n }\n }\n }\n return ath_over;\n };\n function StartLine(j) {\n this.s = j;\n }\n this.calc_noise_core = function(cod_info, startline, l, step) {\n var noise = 0;\n var j = startline.s;\n var ix = cod_info.l3_enc;\n if (j > cod_info.count1) {\n while (l-- != 0) {\n var temp;\n temp = cod_info.xr[j];\n j++;\n noise += temp * temp;\n temp = cod_info.xr[j];\n j++;\n noise += temp * temp;\n }\n } else if (j > cod_info.big_values) {\n var ix01 = new_float$3(2);\n ix01[0] = 0;\n ix01[1] = step;\n while (l-- != 0) {\n var temp;\n temp = Math.abs(cod_info.xr[j]) - ix01[ix[j]];\n j++;\n noise += temp * temp;\n temp = Math.abs(cod_info.xr[j]) - ix01[ix[j]];\n j++;\n noise += temp * temp;\n }\n } else {\n while (l-- != 0) {\n var temp;\n temp = Math.abs(cod_info.xr[j]) - pow43[ix[j]] * step;\n j++;\n noise += temp * temp;\n temp = Math.abs(cod_info.xr[j]) - pow43[ix[j]] * step;\n j++;\n noise += temp * temp;\n }\n }\n startline.s = j;\n return noise;\n };\n this.calc_noise = function(cod_info, l3_xmin, distort, res, prev_noise) {\n var distortPos = 0;\n var l3_xminPos = 0;\n var sfb;\n var l;\n var over = 0;\n var over_noise_db = 0;\n var tot_noise_db = 0;\n var max_noise = -20;\n var j = 0;\n var scalefac = cod_info.scalefac;\n var scalefacPos = 0;\n res.over_SSD = 0;\n for (sfb = 0; sfb < cod_info.psymax; sfb++) {\n var s = cod_info.global_gain - (scalefac[scalefacPos++] + (cod_info.preflag != 0 ? pretab[sfb] : 0) << cod_info.scalefac_scale + 1) - cod_info.subblock_gain[cod_info.window[sfb]] * 8;\n var noise = 0;\n if (prev_noise != null && prev_noise.step[sfb] == s) {\n noise = prev_noise.noise[sfb];\n j += cod_info.width[sfb];\n distort[distortPos++] = noise / l3_xmin[l3_xminPos++];\n noise = prev_noise.noise_log[sfb];\n } else {\n var step = POW20(s);\n l = cod_info.width[sfb] >> 1;\n if (j + cod_info.width[sfb] > cod_info.max_nonzero_coeff) {\n var usefullsize;\n usefullsize = cod_info.max_nonzero_coeff - j + 1;\n if (usefullsize > 0)\n l = usefullsize >> 1;\n else\n l = 0;\n }\n var sl = new StartLine(j);\n noise = this.calc_noise_core(cod_info, sl, l, step);\n j = sl.s;\n if (prev_noise != null) {\n prev_noise.step[sfb] = s;\n prev_noise.noise[sfb] = noise;\n }\n noise = distort[distortPos++] = noise / l3_xmin[l3_xminPos++];\n noise = Util$1.FAST_LOG10(Math.max(noise, 1e-20));\n if (prev_noise != null) {\n prev_noise.noise_log[sfb] = noise;\n }\n }\n if (prev_noise != null) {\n prev_noise.global_gain = cod_info.global_gain;\n }\n tot_noise_db += noise;\n if (noise > 0) {\n var tmp;\n tmp = Math.max(0 | noise * 10 + 0.5, 1);\n res.over_SSD += tmp * tmp;\n over++;\n over_noise_db += noise;\n }\n max_noise = Math.max(max_noise, noise);\n }\n res.over_count = over;\n res.tot_noise = tot_noise_db;\n res.over_noise = over_noise_db;\n res.max_noise = max_noise;\n return over;\n };\n this.set_pinfo = function(gfp, cod_info, ratio, gr, ch) {\n var gfc = gfp.internal_flags;\n var sfb, sfb2;\n var l;\n var en0, en1;\n var ifqstep = cod_info.scalefac_scale == 0 ? 0.5 : 1;\n var scalefac = cod_info.scalefac;\n var l3_xmin = new_float$3(L3Side.SFBMAX);\n var xfsf = new_float$3(L3Side.SFBMAX);\n var noise = new CalcNoiseResult();\n calc_xmin(gfp, ratio, cod_info, l3_xmin);\n calc_noise(cod_info, l3_xmin, xfsf, noise, null);\n var j = 0;\n sfb2 = cod_info.sfb_lmax;\n if (cod_info.block_type != Encoder.SHORT_TYPE && cod_info.mixed_block_flag == 0) {\n sfb2 = 22;\n }\n for (sfb = 0; sfb < sfb2; sfb++) {\n var start2 = gfc.scalefac_band.l[sfb];\n var end = gfc.scalefac_band.l[sfb + 1];\n var bw = end - start2;\n for (en0 = 0; j < end; j++)\n en0 += cod_info.xr[j] * cod_info.xr[j];\n en0 /= bw;\n en1 = 1e15;\n gfc.pinfo.en[gr][ch][sfb] = en1 * en0;\n gfc.pinfo.xfsf[gr][ch][sfb] = en1 * l3_xmin[sfb] * xfsf[sfb] / bw;\n if (ratio.en.l[sfb] > 0 && !gfp.ATHonly)\n en0 = en0 / ratio.en.l[sfb];\n else\n en0 = 0;\n gfc.pinfo.thr[gr][ch][sfb] = en1 * Math.max(en0 * ratio.thm.l[sfb], gfc.ATH.l[sfb]);\n gfc.pinfo.LAMEsfb[gr][ch][sfb] = 0;\n if (cod_info.preflag != 0 && sfb >= 11) {\n gfc.pinfo.LAMEsfb[gr][ch][sfb] = -ifqstep * pretab[sfb];\n }\n if (sfb < Encoder.SBPSY_l) {\n assert$7(scalefac[sfb] >= 0);\n gfc.pinfo.LAMEsfb[gr][ch][sfb] -= ifqstep * scalefac[sfb];\n }\n }\n if (cod_info.block_type == Encoder.SHORT_TYPE) {\n sfb2 = sfb;\n for (sfb = cod_info.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) {\n var start2 = gfc.scalefac_band.s[sfb];\n var end = gfc.scalefac_band.s[sfb + 1];\n var bw = end - start2;\n for (var i = 0; i < 3; i++) {\n for (en0 = 0, l = start2; l < end; l++) {\n en0 += cod_info.xr[j] * cod_info.xr[j];\n j++;\n }\n en0 = Math.max(en0 / bw, 1e-20);\n en1 = 1e15;\n gfc.pinfo.en_s[gr][ch][3 * sfb + i] = en1 * en0;\n gfc.pinfo.xfsf_s[gr][ch][3 * sfb + i] = en1 * l3_xmin[sfb2] * xfsf[sfb2] / bw;\n if (ratio.en.s[sfb][i] > 0)\n en0 = en0 / ratio.en.s[sfb][i];\n else\n en0 = 0;\n if (gfp.ATHonly || gfp.ATHshort)\n en0 = 0;\n gfc.pinfo.thr_s[gr][ch][3 * sfb + i] = en1 * Math.max(en0 * ratio.thm.s[sfb][i], gfc.ATH.s[sfb]);\n gfc.pinfo.LAMEsfb_s[gr][ch][3 * sfb + i] = -2 * cod_info.subblock_gain[i];\n if (sfb < Encoder.SBPSY_s) {\n gfc.pinfo.LAMEsfb_s[gr][ch][3 * sfb + i] -= ifqstep * scalefac[sfb2];\n }\n sfb2++;\n }\n }\n }\n gfc.pinfo.LAMEqss[gr][ch] = cod_info.global_gain;\n gfc.pinfo.LAMEmainbits[gr][ch] = cod_info.part2_3_length + cod_info.part2_length;\n gfc.pinfo.LAMEsfbits[gr][ch] = cod_info.part2_length;\n gfc.pinfo.over[gr][ch] = noise.over_count;\n gfc.pinfo.max_noise[gr][ch] = noise.max_noise * 10;\n gfc.pinfo.over_noise[gr][ch] = noise.over_noise * 10;\n gfc.pinfo.tot_noise[gr][ch] = noise.tot_noise * 10;\n gfc.pinfo.over_SSD[gr][ch] = noise.over_SSD;\n };\n}\nvar System$4 = common.System;\nvar Arrays$3 = common.Arrays;\nvar new_int$2 = common.new_int;\nvar assert$6 = common.assert;\nfunction Takehiro() {\n var qupvt = null;\n this.qupvt = null;\n this.setModules = function(_qupvt) {\n this.qupvt = _qupvt;\n qupvt = _qupvt;\n };\n function Bits(b) {\n this.bits = 0 | b;\n }\n var subdv_table = [\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 0],\n [0, 1],\n [1, 1],\n [1, 1],\n [1, 2],\n [2, 2],\n [2, 3],\n [2, 3],\n [3, 4],\n [3, 4],\n [3, 4],\n [4, 5],\n [4, 5],\n [4, 6],\n [5, 6],\n [5, 6],\n [5, 7],\n [6, 7],\n [6, 7]\n ];\n function quantize_lines_xrpow_01(l, istep, xr, xrPos, ix, ixPos) {\n var compareval0 = (1 - 0.4054) / istep;\n l = l >> 1;\n while (l-- != 0) {\n ix[ixPos++] = compareval0 > xr[xrPos++] ? 0 : 1;\n ix[ixPos++] = compareval0 > xr[xrPos++] ? 0 : 1;\n }\n }\n function quantize_lines_xrpow(l, istep, xr, xrPos, ix, ixPos) {\n l = l >> 1;\n var remaining = l % 2;\n l = l >> 1;\n while (l-- != 0) {\n var x0, x1, x2, x3;\n var rx0, rx1, rx2, rx3;\n x0 = xr[xrPos++] * istep;\n x1 = xr[xrPos++] * istep;\n rx0 = 0 | x0;\n x2 = xr[xrPos++] * istep;\n rx1 = 0 | x1;\n x3 = xr[xrPos++] * istep;\n rx2 = 0 | x2;\n x0 += qupvt.adj43[rx0];\n rx3 = 0 | x3;\n x1 += qupvt.adj43[rx1];\n ix[ixPos++] = 0 | x0;\n x2 += qupvt.adj43[rx2];\n ix[ixPos++] = 0 | x1;\n x3 += qupvt.adj43[rx3];\n ix[ixPos++] = 0 | x2;\n ix[ixPos++] = 0 | x3;\n }\n if (remaining != 0) {\n var x0, x1;\n var rx0, rx1;\n x0 = xr[xrPos++] * istep;\n x1 = xr[xrPos++] * istep;\n rx0 = 0 | x0;\n rx1 = 0 | x1;\n x0 += qupvt.adj43[rx0];\n x1 += qupvt.adj43[rx1];\n ix[ixPos++] = 0 | x0;\n ix[ixPos++] = 0 | x1;\n }\n }\n function quantize_xrpow(xp, pi, istep, codInfo, prevNoise) {\n var sfb;\n var sfbmax;\n var j = 0;\n var prev_data_use;\n var accumulate = 0;\n var accumulate01 = 0;\n var xpPos = 0;\n var iData = pi;\n var iDataPos = 0;\n var acc_iData = iData;\n var acc_iDataPos = 0;\n var acc_xp = xp;\n var acc_xpPos = 0;\n prev_data_use = prevNoise != null && codInfo.global_gain == prevNoise.global_gain;\n if (codInfo.block_type == Encoder.SHORT_TYPE)\n sfbmax = 38;\n else\n sfbmax = 21;\n for (sfb = 0; sfb <= sfbmax; sfb++) {\n var step = -1;\n if (prev_data_use || codInfo.block_type == Encoder.NORM_TYPE) {\n step = codInfo.global_gain - (codInfo.scalefac[sfb] + (codInfo.preflag != 0 ? qupvt.pretab[sfb] : 0) << codInfo.scalefac_scale + 1) - codInfo.subblock_gain[codInfo.window[sfb]] * 8;\n }\n assert$6(codInfo.width[sfb] >= 0);\n if (prev_data_use && prevNoise.step[sfb] == step) {\n if (accumulate != 0) {\n quantize_lines_xrpow(\n accumulate,\n istep,\n acc_xp,\n acc_xpPos,\n acc_iData,\n acc_iDataPos\n );\n accumulate = 0;\n }\n if (accumulate01 != 0) {\n quantize_lines_xrpow_01(\n accumulate01,\n istep,\n acc_xp,\n acc_xpPos,\n acc_iData,\n acc_iDataPos\n );\n accumulate01 = 0;\n }\n } else {\n var l = codInfo.width[sfb];\n if (j + codInfo.width[sfb] > codInfo.max_nonzero_coeff) {\n var usefullsize;\n usefullsize = codInfo.max_nonzero_coeff - j + 1;\n Arrays$3.fill(pi, codInfo.max_nonzero_coeff, 576, 0);\n l = usefullsize;\n if (l < 0) {\n l = 0;\n }\n sfb = sfbmax + 1;\n }\n if (accumulate == 0 && accumulate01 == 0) {\n acc_iData = iData;\n acc_iDataPos = iDataPos;\n acc_xp = xp;\n acc_xpPos = xpPos;\n }\n if (prevNoise != null && prevNoise.sfb_count1 > 0 && sfb >= prevNoise.sfb_count1 && prevNoise.step[sfb] > 0 && step >= prevNoise.step[sfb]) {\n if (accumulate != 0) {\n quantize_lines_xrpow(\n accumulate,\n istep,\n acc_xp,\n acc_xpPos,\n acc_iData,\n acc_iDataPos\n );\n accumulate = 0;\n acc_iData = iData;\n acc_iDataPos = iDataPos;\n acc_xp = xp;\n acc_xpPos = xpPos;\n }\n accumulate01 += l;\n } else {\n if (accumulate01 != 0) {\n quantize_lines_xrpow_01(\n accumulate01,\n istep,\n acc_xp,\n acc_xpPos,\n acc_iData,\n acc_iDataPos\n );\n accumulate01 = 0;\n acc_iData = iData;\n acc_iDataPos = iDataPos;\n acc_xp = xp;\n acc_xpPos = xpPos;\n }\n accumulate += l;\n }\n if (l <= 0) {\n if (accumulate01 != 0) {\n quantize_lines_xrpow_01(\n accumulate01,\n istep,\n acc_xp,\n acc_xpPos,\n acc_iData,\n acc_iDataPos\n );\n accumulate01 = 0;\n }\n if (accumulate != 0) {\n quantize_lines_xrpow(\n accumulate,\n istep,\n acc_xp,\n acc_xpPos,\n acc_iData,\n acc_iDataPos\n );\n accumulate = 0;\n }\n break;\n }\n }\n if (sfb <= sfbmax) {\n iDataPos += codInfo.width[sfb];\n xpPos += codInfo.width[sfb];\n j += codInfo.width[sfb];\n }\n }\n if (accumulate != 0) {\n quantize_lines_xrpow(\n accumulate,\n istep,\n acc_xp,\n acc_xpPos,\n acc_iData,\n acc_iDataPos\n );\n accumulate = 0;\n }\n if (accumulate01 != 0) {\n quantize_lines_xrpow_01(\n accumulate01,\n istep,\n acc_xp,\n acc_xpPos,\n acc_iData,\n acc_iDataPos\n );\n accumulate01 = 0;\n }\n }\n function ix_max(ix, ixPos, endPos) {\n var max1 = 0;\n var max2 = 0;\n do {\n var x1 = ix[ixPos++];\n var x2 = ix[ixPos++];\n if (max1 < x1)\n max1 = x1;\n if (max2 < x2)\n max2 = x2;\n } while (ixPos < endPos);\n if (max1 < max2)\n max1 = max2;\n return max1;\n }\n function count_bit_ESC(ix, ixPos, end, t1, t2, s) {\n var linbits = Tables$1.ht[t1].xlen * 65536 + Tables$1.ht[t2].xlen;\n var sum = 0;\n var sum2;\n do {\n var x = ix[ixPos++];\n var y = ix[ixPos++];\n if (x != 0) {\n if (x > 14) {\n x = 15;\n sum += linbits;\n }\n x *= 16;\n }\n if (y != 0) {\n if (y > 14) {\n y = 15;\n sum += linbits;\n }\n x += y;\n }\n sum += Tables$1.largetbl[x];\n } while (ixPos < end);\n sum2 = sum & 65535;\n sum >>= 16;\n if (sum > sum2) {\n sum = sum2;\n t1 = t2;\n }\n s.bits += sum;\n return t1;\n }\n function count_bit_noESC(ix, ixPos, end, s) {\n var sum1 = 0;\n var hlen1 = Tables$1.ht[1].hlen;\n do {\n var x = ix[ixPos + 0] * 2 + ix[ixPos + 1];\n ixPos += 2;\n sum1 += hlen1[x];\n } while (ixPos < end);\n s.bits += sum1;\n return 1;\n }\n function count_bit_noESC_from2(ix, ixPos, end, t1, s) {\n var sum = 0;\n var sum2;\n var xlen = Tables$1.ht[t1].xlen;\n var hlen;\n if (t1 == 2)\n hlen = Tables$1.table23;\n else\n hlen = Tables$1.table56;\n do {\n var x = ix[ixPos + 0] * xlen + ix[ixPos + 1];\n ixPos += 2;\n sum += hlen[x];\n } while (ixPos < end);\n sum2 = sum & 65535;\n sum >>= 16;\n if (sum > sum2) {\n sum = sum2;\n t1++;\n }\n s.bits += sum;\n return t1;\n }\n function count_bit_noESC_from3(ix, ixPos, end, t1, s) {\n var sum1 = 0;\n var sum2 = 0;\n var sum3 = 0;\n var xlen = Tables$1.ht[t1].xlen;\n var hlen1 = Tables$1.ht[t1].hlen;\n var hlen2 = Tables$1.ht[t1 + 1].hlen;\n var hlen3 = Tables$1.ht[t1 + 2].hlen;\n do {\n var x = ix[ixPos + 0] * xlen + ix[ixPos + 1];\n ixPos += 2;\n sum1 += hlen1[x];\n sum2 += hlen2[x];\n sum3 += hlen3[x];\n } while (ixPos < end);\n var t = t1;\n if (sum1 > sum2) {\n sum1 = sum2;\n t++;\n }\n if (sum1 > sum3) {\n sum1 = sum3;\n t = t1 + 2;\n }\n s.bits += sum1;\n return t;\n }\n var huf_tbl_noESC = [1, 2, 5, 7, 7, 10, 10, 13, 13, 13, 13, 13, 13, 13, 13];\n function choose_table(ix, ixPos, endPos, s) {\n var max = ix_max(ix, ixPos, endPos);\n switch (max) {\n case 0:\n return max;\n case 1:\n return count_bit_noESC(ix, ixPos, endPos, s);\n case 2:\n case 3:\n return count_bit_noESC_from2(\n ix,\n ixPos,\n endPos,\n huf_tbl_noESC[max - 1],\n s\n );\n case 4:\n case 5:\n case 6:\n case 7:\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n case 13:\n case 14:\n case 15:\n return count_bit_noESC_from3(\n ix,\n ixPos,\n endPos,\n huf_tbl_noESC[max - 1],\n s\n );\n default:\n if (max > QuantizePVT.IXMAX_VAL) {\n s.bits = QuantizePVT.LARGE_BITS;\n return -1;\n }\n max -= 15;\n var choice2;\n for (choice2 = 24; choice2 < 32; choice2++) {\n if (Tables$1.ht[choice2].linmax >= max) {\n break;\n }\n }\n var choice;\n for (choice = choice2 - 8; choice < 24; choice++) {\n if (Tables$1.ht[choice].linmax >= max) {\n break;\n }\n }\n return count_bit_ESC(ix, ixPos, endPos, choice, choice2, s);\n }\n }\n this.noquant_count_bits = function(gfc, gi, prev_noise) {\n var ix = gi.l3_enc;\n var i = Math.min(576, gi.max_nonzero_coeff + 2 >> 1 << 1);\n if (prev_noise != null)\n prev_noise.sfb_count1 = 0;\n for (; i > 1; i -= 2)\n if ((ix[i - 1] | ix[i - 2]) != 0)\n break;\n gi.count1 = i;\n var a1 = 0;\n var a2 = 0;\n for (; i > 3; i -= 4) {\n var p2;\n if (((ix[i - 1] | ix[i - 2] | ix[i - 3] | ix[i - 4]) & 2147483647) > 1) {\n break;\n }\n p2 = ((ix[i - 4] * 2 + ix[i - 3]) * 2 + ix[i - 2]) * 2 + ix[i - 1];\n a1 += Tables$1.t32l[p2];\n a2 += Tables$1.t33l[p2];\n }\n var bits = a1;\n gi.count1table_select = 0;\n if (a1 > a2) {\n bits = a2;\n gi.count1table_select = 1;\n }\n gi.count1bits = bits;\n gi.big_values = i;\n if (i == 0)\n return bits;\n if (gi.block_type == Encoder.SHORT_TYPE) {\n a1 = 3 * gfc.scalefac_band.s[3];\n if (a1 > gi.big_values)\n a1 = gi.big_values;\n a2 = gi.big_values;\n } else if (gi.block_type == Encoder.NORM_TYPE) {\n a1 = gi.region0_count = gfc.bv_scf[i - 2];\n a2 = gi.region1_count = gfc.bv_scf[i - 1];\n a2 = gfc.scalefac_band.l[a1 + a2 + 2];\n a1 = gfc.scalefac_band.l[a1 + 1];\n if (a2 < i) {\n var bi = new Bits(bits);\n gi.table_select[2] = choose_table(ix, a2, i, bi);\n bits = bi.bits;\n }\n } else {\n gi.region0_count = 7;\n gi.region1_count = Encoder.SBMAX_l - 1 - 7 - 1;\n a1 = gfc.scalefac_band.l[7 + 1];\n a2 = i;\n if (a1 > a2) {\n a1 = a2;\n }\n }\n a1 = Math.min(a1, i);\n a2 = Math.min(a2, i);\n if (a1 > 0) {\n var bi = new Bits(bits);\n gi.table_select[0] = choose_table(ix, 0, a1, bi);\n bits = bi.bits;\n }\n if (a1 < a2) {\n var bi = new Bits(bits);\n gi.table_select[1] = choose_table(ix, a1, a2, bi);\n bits = bi.bits;\n }\n if (gfc.use_best_huffman == 2) {\n gi.part2_3_length = bits;\n best_huffman_divide(gfc, gi);\n bits = gi.part2_3_length;\n }\n if (prev_noise != null) {\n if (gi.block_type == Encoder.NORM_TYPE) {\n var sfb = 0;\n while (gfc.scalefac_band.l[sfb] < gi.big_values) {\n sfb++;\n }\n prev_noise.sfb_count1 = sfb;\n }\n }\n return bits;\n };\n this.count_bits = function(gfc, xr, gi, prev_noise) {\n var ix = gi.l3_enc;\n var w = QuantizePVT.IXMAX_VAL / qupvt.IPOW20(gi.global_gain);\n if (gi.xrpow_max > w)\n return QuantizePVT.LARGE_BITS;\n quantize_xrpow(xr, ix, qupvt.IPOW20(gi.global_gain), gi, prev_noise);\n if ((gfc.substep_shaping & 2) != 0) {\n var j = 0;\n var gain = gi.global_gain + gi.scalefac_scale;\n var roundfac = 0.634521682242439 / qupvt.IPOW20(gain);\n for (var sfb = 0; sfb < gi.sfbmax; sfb++) {\n var width = gi.width[sfb];\n if (gfc.pseudohalf[sfb] == 0) {\n j += width;\n } else {\n var k;\n for (k = j, j += width; k < j; ++k) {\n ix[k] = xr[k] >= roundfac ? ix[k] : 0;\n }\n }\n }\n }\n return this.noquant_count_bits(gfc, gi, prev_noise);\n };\n function recalc_divide_init(gfc, cod_info, ix, r01_bits, r01_div, r0_tbl, r1_tbl) {\n var bigv = cod_info.big_values;\n for (var r0 = 0; r0 <= 7 + 15; r0++) {\n r01_bits[r0] = QuantizePVT.LARGE_BITS;\n }\n for (var r0 = 0; r0 < 16; r0++) {\n var a1 = gfc.scalefac_band.l[r0 + 1];\n if (a1 >= bigv)\n break;\n var r0bits = 0;\n var bi = new Bits(r0bits);\n var r0t = choose_table(ix, 0, a1, bi);\n r0bits = bi.bits;\n for (var r1 = 0; r1 < 8; r1++) {\n var a2 = gfc.scalefac_band.l[r0 + r1 + 2];\n if (a2 >= bigv)\n break;\n var bits = r0bits;\n bi = new Bits(bits);\n var r1t = choose_table(ix, a1, a2, bi);\n bits = bi.bits;\n if (r01_bits[r0 + r1] > bits) {\n r01_bits[r0 + r1] = bits;\n r01_div[r0 + r1] = r0;\n r0_tbl[r0 + r1] = r0t;\n r1_tbl[r0 + r1] = r1t;\n }\n }\n }\n }\n function recalc_divide_sub(gfc, cod_info2, gi, ix, r01_bits, r01_div, r0_tbl, r1_tbl) {\n var bigv = cod_info2.big_values;\n for (var r2 = 2; r2 < Encoder.SBMAX_l + 1; r2++) {\n var a2 = gfc.scalefac_band.l[r2];\n if (a2 >= bigv)\n break;\n var bits = r01_bits[r2 - 2] + cod_info2.count1bits;\n if (gi.part2_3_length <= bits)\n break;\n var bi = new Bits(bits);\n var r2t = choose_table(ix, a2, bigv, bi);\n bits = bi.bits;\n if (gi.part2_3_length <= bits)\n continue;\n gi.assign(cod_info2);\n gi.part2_3_length = bits;\n gi.region0_count = r01_div[r2 - 2];\n gi.region1_count = r2 - 2 - r01_div[r2 - 2];\n gi.table_select[0] = r0_tbl[r2 - 2];\n gi.table_select[1] = r1_tbl[r2 - 2];\n gi.table_select[2] = r2t;\n }\n }\n this.best_huffman_divide = function(gfc, gi) {\n var cod_info2 = new GrInfo();\n var ix = gi.l3_enc;\n var r01_bits = new_int$2(7 + 15 + 1);\n var r01_div = new_int$2(7 + 15 + 1);\n var r0_tbl = new_int$2(7 + 15 + 1);\n var r1_tbl = new_int$2(7 + 15 + 1);\n if (gi.block_type == Encoder.SHORT_TYPE && gfc.mode_gr == 1)\n return;\n cod_info2.assign(gi);\n if (gi.block_type == Encoder.NORM_TYPE) {\n recalc_divide_init(gfc, gi, ix, r01_bits, r01_div, r0_tbl, r1_tbl);\n recalc_divide_sub(\n gfc,\n cod_info2,\n gi,\n ix,\n r01_bits,\n r01_div,\n r0_tbl,\n r1_tbl\n );\n }\n var i = cod_info2.big_values;\n if (i == 0 || (ix[i - 2] | ix[i - 1]) > 1)\n return;\n i = gi.count1 + 2;\n if (i > 576)\n return;\n cod_info2.assign(gi);\n cod_info2.count1 = i;\n var a1 = 0;\n var a2 = 0;\n for (; i > cod_info2.big_values; i -= 4) {\n var p2 = ((ix[i - 4] * 2 + ix[i - 3]) * 2 + ix[i - 2]) * 2 + ix[i - 1];\n a1 += Tables$1.t32l[p2];\n a2 += Tables$1.t33l[p2];\n }\n cod_info2.big_values = i;\n cod_info2.count1table_select = 0;\n if (a1 > a2) {\n a1 = a2;\n cod_info2.count1table_select = 1;\n }\n cod_info2.count1bits = a1;\n if (cod_info2.block_type == Encoder.NORM_TYPE) {\n recalc_divide_sub(\n gfc,\n cod_info2,\n gi,\n ix,\n r01_bits,\n r01_div,\n r0_tbl,\n r1_tbl\n );\n } else {\n cod_info2.part2_3_length = a1;\n a1 = gfc.scalefac_band.l[7 + 1];\n if (a1 > i) {\n a1 = i;\n }\n if (a1 > 0) {\n var bi = new Bits(cod_info2.part2_3_length);\n cod_info2.table_select[0] = choose_table(ix, 0, a1, bi);\n cod_info2.part2_3_length = bi.bits;\n }\n if (i > a1) {\n var bi = new Bits(cod_info2.part2_3_length);\n cod_info2.table_select[1] = choose_table(ix, a1, i, bi);\n cod_info2.part2_3_length = bi.bits;\n }\n if (gi.part2_3_length > cod_info2.part2_3_length)\n gi.assign(cod_info2);\n }\n };\n var slen1_n = [1, 1, 1, 1, 8, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16];\n var slen2_n = [1, 2, 4, 8, 1, 2, 4, 8, 2, 4, 8, 2, 4, 8, 4, 8];\n var slen1_tab = [0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4];\n var slen2_tab = [0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3];\n Takehiro.slen1_tab = slen1_tab;\n Takehiro.slen2_tab = slen2_tab;\n function scfsi_calc(ch, l3_side) {\n var sfb;\n var gi = l3_side.tt[1][ch];\n var g0 = l3_side.tt[0][ch];\n for (var i = 0; i < Tables$1.scfsi_band.length - 1; i++) {\n for (sfb = Tables$1.scfsi_band[i]; sfb < Tables$1.scfsi_band[i + 1]; sfb++) {\n if (g0.scalefac[sfb] != gi.scalefac[sfb] && gi.scalefac[sfb] >= 0)\n break;\n }\n if (sfb == Tables$1.scfsi_band[i + 1]) {\n for (sfb = Tables$1.scfsi_band[i]; sfb < Tables$1.scfsi_band[i + 1]; sfb++) {\n gi.scalefac[sfb] = -1;\n }\n l3_side.scfsi[ch][i] = 1;\n }\n }\n var s1 = 0;\n var c1 = 0;\n for (sfb = 0; sfb < 11; sfb++) {\n if (gi.scalefac[sfb] == -1)\n continue;\n c1++;\n if (s1 < gi.scalefac[sfb])\n s1 = gi.scalefac[sfb];\n }\n var s2 = 0;\n var c2 = 0;\n for (; sfb < Encoder.SBPSY_l; sfb++) {\n if (gi.scalefac[sfb] == -1)\n continue;\n c2++;\n if (s2 < gi.scalefac[sfb])\n s2 = gi.scalefac[sfb];\n }\n for (var i = 0; i < 16; i++) {\n if (s1 < slen1_n[i] && s2 < slen2_n[i]) {\n var c = slen1_tab[i] * c1 + slen2_tab[i] * c2;\n if (gi.part2_length > c) {\n gi.part2_length = c;\n gi.scalefac_compress = i;\n }\n }\n }\n }\n this.best_scalefac_store = function(gfc, gr, ch, l3_side) {\n var gi = l3_side.tt[gr][ch];\n var sfb, i, j, l;\n var recalc = 0;\n j = 0;\n for (sfb = 0; sfb < gi.sfbmax; sfb++) {\n var width = gi.width[sfb];\n j += width;\n for (l = -width; l < 0; l++) {\n if (gi.l3_enc[l + j] != 0)\n break;\n }\n if (l == 0)\n gi.scalefac[sfb] = recalc = -2;\n }\n if (gi.scalefac_scale == 0 && gi.preflag == 0) {\n var s = 0;\n for (sfb = 0; sfb < gi.sfbmax; sfb++) {\n if (gi.scalefac[sfb] > 0)\n s |= gi.scalefac[sfb];\n }\n if ((s & 1) == 0 && s != 0) {\n for (sfb = 0; sfb < gi.sfbmax; sfb++) {\n if (gi.scalefac[sfb] > 0)\n gi.scalefac[sfb] >>= 1;\n }\n gi.scalefac_scale = recalc = 1;\n }\n }\n if (gi.preflag == 0 && gi.block_type != Encoder.SHORT_TYPE && gfc.mode_gr == 2) {\n for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++) {\n if (gi.scalefac[sfb] < qupvt.pretab[sfb] && gi.scalefac[sfb] != -2) {\n break;\n }\n }\n if (sfb == Encoder.SBPSY_l) {\n for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++) {\n if (gi.scalefac[sfb] > 0)\n gi.scalefac[sfb] -= qupvt.pretab[sfb];\n }\n gi.preflag = recalc = 1;\n }\n }\n for (i = 0; i < 4; i++)\n l3_side.scfsi[ch][i] = 0;\n if (gfc.mode_gr == 2 && gr == 1 && l3_side.tt[0][ch].block_type != Encoder.SHORT_TYPE && l3_side.tt[1][ch].block_type != Encoder.SHORT_TYPE) {\n scfsi_calc(ch, l3_side);\n recalc = 0;\n }\n for (sfb = 0; sfb < gi.sfbmax; sfb++) {\n if (gi.scalefac[sfb] == -2) {\n gi.scalefac[sfb] = 0;\n }\n }\n if (recalc != 0) {\n if (gfc.mode_gr == 2) {\n this.scale_bitcount(gi);\n } else {\n this.scale_bitcount_lsf(gfc, gi);\n }\n }\n };\n function all_scalefactors_not_negative(scalefac, n) {\n for (var i = 0; i < n; ++i) {\n if (scalefac[i] < 0)\n return false;\n }\n return true;\n }\n var scale_short = [\n 0,\n 18,\n 36,\n 54,\n 54,\n 36,\n 54,\n 72,\n 54,\n 72,\n 90,\n 72,\n 90,\n 108,\n 108,\n 126\n ];\n var scale_mixed = [\n 0,\n 18,\n 36,\n 54,\n 51,\n 35,\n 53,\n 71,\n 52,\n 70,\n 88,\n 69,\n 87,\n 105,\n 104,\n 122\n ];\n var scale_long = [\n 0,\n 10,\n 20,\n 30,\n 33,\n 21,\n 31,\n 41,\n 32,\n 42,\n 52,\n 43,\n 53,\n 63,\n 64,\n 74\n ];\n this.scale_bitcount = function(cod_info) {\n var k;\n var sfb;\n var max_slen1 = 0;\n var max_slen2 = 0;\n var tab;\n var scalefac = cod_info.scalefac;\n assert$6(all_scalefactors_not_negative(scalefac, cod_info.sfbmax));\n if (cod_info.block_type == Encoder.SHORT_TYPE) {\n tab = scale_short;\n if (cod_info.mixed_block_flag != 0)\n tab = scale_mixed;\n } else {\n tab = scale_long;\n if (cod_info.preflag == 0) {\n for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++) {\n if (scalefac[sfb] < qupvt.pretab[sfb])\n break;\n }\n if (sfb == Encoder.SBPSY_l) {\n cod_info.preflag = 1;\n for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++) {\n scalefac[sfb] -= qupvt.pretab[sfb];\n }\n }\n }\n }\n for (sfb = 0; sfb < cod_info.sfbdivide; sfb++) {\n if (max_slen1 < scalefac[sfb])\n max_slen1 = scalefac[sfb];\n }\n for (; sfb < cod_info.sfbmax; sfb++) {\n if (max_slen2 < scalefac[sfb])\n max_slen2 = scalefac[sfb];\n }\n cod_info.part2_length = QuantizePVT.LARGE_BITS;\n for (k = 0; k < 16; k++) {\n if (max_slen1 < slen1_n[k] && max_slen2 < slen2_n[k] && cod_info.part2_length > tab[k]) {\n cod_info.part2_length = tab[k];\n cod_info.scalefac_compress = k;\n }\n }\n return cod_info.part2_length == QuantizePVT.LARGE_BITS;\n };\n var max_range_sfac_tab = [\n [15, 15, 7, 7],\n [15, 15, 7, 0],\n [7, 3, 0, 0],\n [15, 31, 31, 0],\n [7, 7, 7, 0],\n [3, 3, 0, 0]\n ];\n this.scale_bitcount_lsf = function(gfc, cod_info) {\n var table_number, row_in_table, partition, nr_sfb, window2;\n var over;\n var i, sfb;\n var max_sfac = new_int$2(4);\n var scalefac = cod_info.scalefac;\n if (cod_info.preflag != 0)\n table_number = 2;\n else\n table_number = 0;\n for (i = 0; i < 4; i++)\n max_sfac[i] = 0;\n if (cod_info.block_type == Encoder.SHORT_TYPE) {\n row_in_table = 1;\n var partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n for (sfb = 0, partition = 0; partition < 4; partition++) {\n nr_sfb = partition_table[partition] / 3;\n for (i = 0; i < nr_sfb; i++, sfb++) {\n for (window2 = 0; window2 < 3; window2++) {\n if (scalefac[sfb * 3 + window2] > max_sfac[partition]) {\n max_sfac[partition] = scalefac[sfb * 3 + window2];\n }\n }\n }\n }\n } else {\n row_in_table = 0;\n var partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n for (sfb = 0, partition = 0; partition < 4; partition++) {\n nr_sfb = partition_table[partition];\n for (i = 0; i < nr_sfb; i++, sfb++) {\n if (scalefac[sfb] > max_sfac[partition]) {\n max_sfac[partition] = scalefac[sfb];\n }\n }\n }\n }\n for (over = false, partition = 0; partition < 4; partition++) {\n if (max_sfac[partition] > max_range_sfac_tab[table_number][partition]) {\n over = true;\n }\n }\n if (!over) {\n var slen1, slen2, slen3, slen4;\n cod_info.sfb_partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n for (partition = 0; partition < 4; partition++) {\n cod_info.slen[partition] = log2tab[max_sfac[partition]];\n }\n slen1 = cod_info.slen[0];\n slen2 = cod_info.slen[1];\n slen3 = cod_info.slen[2];\n slen4 = cod_info.slen[3];\n switch (table_number) {\n case 0:\n cod_info.scalefac_compress = (slen1 * 5 + slen2 << 4) + (slen3 << 2) + slen4;\n break;\n case 1:\n cod_info.scalefac_compress = 400 + (slen1 * 5 + slen2 << 2) + slen3;\n break;\n case 2:\n cod_info.scalefac_compress = 500 + slen1 * 3 + slen2;\n break;\n default:\n System$4.err.printf(\"intensity stereo not implemented yet\\n\");\n break;\n }\n }\n if (!over) {\n assert$6(cod_info.sfb_partition_table != null);\n cod_info.part2_length = 0;\n for (partition = 0; partition < 4; partition++) {\n cod_info.part2_length += cod_info.slen[partition] * cod_info.sfb_partition_table[partition];\n }\n }\n return over;\n };\n var log2tab = [0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4];\n this.huffman_init = function(gfc) {\n for (var i = 2; i <= 576; i += 2) {\n var scfb_anz = 0;\n var bv_index;\n while (gfc.scalefac_band.l[++scfb_anz] < i)\n ;\n bv_index = subdv_table[scfb_anz][0];\n while (gfc.scalefac_band.l[bv_index + 1] > i)\n bv_index--;\n if (bv_index < 0) {\n bv_index = subdv_table[scfb_anz][0];\n }\n gfc.bv_scf[i - 2] = bv_index;\n bv_index = subdv_table[scfb_anz][1];\n while (gfc.scalefac_band.l[bv_index + gfc.bv_scf[i - 2] + 2] > i) {\n bv_index--;\n }\n if (bv_index < 0) {\n bv_index = subdv_table[scfb_anz][1];\n }\n gfc.bv_scf[i - 1] = bv_index;\n }\n };\n}\nvar System$3 = common.System;\nvar Arrays$2 = common.Arrays;\nvar new_byte$2 = common.new_byte;\nvar new_float_n = common.new_float_n;\nvar new_int$1 = common.new_int;\nvar assert$5 = common.assert;\nBitStream$1.EQ = function(a, b) {\n return Math.abs(a) > Math.abs(b) ? Math.abs(a - b) <= Math.abs(a) * 1e-6 : Math.abs(a - b) <= Math.abs(b) * 1e-6;\n};\nBitStream$1.NEQ = function(a, b) {\n return !BitStream$1.EQ(a, b);\n};\nfunction BitStream$1() {\n var self2 = this;\n var CRC16_POLYNOMIAL = 32773;\n var ga = null;\n var mpg = null;\n var ver = null;\n var vbr = null;\n this.setModules = function(_ga, _mpg, _ver, _vbr) {\n ga = _ga;\n mpg = _mpg;\n ver = _ver;\n vbr = _vbr;\n };\n var buf = null;\n var totbit = 0;\n var bufByteIdx = 0;\n var bufBitIdx = 0;\n this.getframebits = function(gfp) {\n var gfc = gfp.internal_flags;\n var bit_rate;\n if (gfc.bitrate_index != 0) {\n bit_rate = Tables$1.bitrate_table[gfp.version][gfc.bitrate_index];\n } else\n bit_rate = gfp.brate;\n var bytes = 0 | (gfp.version + 1) * 72e3 * bit_rate / gfp.out_samplerate + gfc.padding;\n return 8 * bytes;\n };\n function putheader_bits(gfc) {\n System$3.arraycopy(\n gfc.header[gfc.w_ptr].buf,\n 0,\n buf,\n bufByteIdx,\n gfc.sideinfo_len\n );\n bufByteIdx += gfc.sideinfo_len;\n totbit += gfc.sideinfo_len * 8;\n gfc.w_ptr = gfc.w_ptr + 1 & LameInternalFlags$1.MAX_HEADER_BUF - 1;\n }\n function putbits2(gfc, val, j) {\n while (j > 0) {\n var k;\n if (bufBitIdx == 0) {\n bufBitIdx = 8;\n bufByteIdx++;\n assert$5(gfc.header[gfc.w_ptr].write_timing >= totbit);\n if (gfc.header[gfc.w_ptr].write_timing == totbit) {\n putheader_bits(gfc);\n }\n buf[bufByteIdx] = 0;\n }\n k = Math.min(j, bufBitIdx);\n j -= k;\n bufBitIdx -= k;\n buf[bufByteIdx] |= val >> j << bufBitIdx;\n totbit += k;\n }\n }\n function putbits_noheaders(gfc, val, j) {\n while (j > 0) {\n var k;\n if (bufBitIdx == 0) {\n bufBitIdx = 8;\n bufByteIdx++;\n buf[bufByteIdx] = 0;\n }\n k = Math.min(j, bufBitIdx);\n j -= k;\n bufBitIdx -= k;\n buf[bufByteIdx] |= val >> j << bufBitIdx;\n totbit += k;\n }\n }\n function drain_into_ancillary(gfp, remainingBits) {\n var gfc = gfp.internal_flags;\n var i;\n if (remainingBits >= 8) {\n putbits2(gfc, 76, 8);\n remainingBits -= 8;\n }\n if (remainingBits >= 8) {\n putbits2(gfc, 65, 8);\n remainingBits -= 8;\n }\n if (remainingBits >= 8) {\n putbits2(gfc, 77, 8);\n remainingBits -= 8;\n }\n if (remainingBits >= 8) {\n putbits2(gfc, 69, 8);\n remainingBits -= 8;\n }\n if (remainingBits >= 32) {\n var version2 = ver.getLameShortVersion();\n if (remainingBits >= 32) {\n for (i = 0; i < version2.length && remainingBits >= 8; ++i) {\n remainingBits -= 8;\n putbits2(gfc, version2.charAt(i), 8);\n }\n }\n }\n for (; remainingBits >= 1; remainingBits -= 1) {\n putbits2(gfc, gfc.ancillary_flag, 1);\n gfc.ancillary_flag ^= !gfp.disable_reservoir ? 1 : 0;\n }\n }\n function writeheader(gfc, val, j) {\n var ptr = gfc.header[gfc.h_ptr].ptr;\n while (j > 0) {\n var k = Math.min(j, 8 - (ptr & 7));\n j -= k;\n gfc.header[gfc.h_ptr].buf[ptr >> 3] |= val >> j << 8 - (ptr & 7) - k;\n ptr += k;\n }\n gfc.header[gfc.h_ptr].ptr = ptr;\n }\n function CRC_update(value, crc) {\n value <<= 8;\n for (var i = 0; i < 8; i++) {\n value <<= 1;\n crc <<= 1;\n if (((crc ^ value) & 65536) != 0)\n crc ^= CRC16_POLYNOMIAL;\n }\n return crc;\n }\n this.CRC_writeheader = function(gfc, header) {\n var crc = 65535;\n crc = CRC_update(header[2] & 255, crc);\n crc = CRC_update(header[3] & 255, crc);\n for (var i = 6; i < gfc.sideinfo_len; i++) {\n crc = CRC_update(header[i] & 255, crc);\n }\n header[4] = byte(crc >> 8);\n header[5] = byte(crc & 255);\n };\n function encodeSideInfo2(gfp, bitsPerFrame) {\n var gfc = gfp.internal_flags;\n var l3_side;\n var gr, ch;\n l3_side = gfc.l3_side;\n gfc.header[gfc.h_ptr].ptr = 0;\n Arrays$2.fill(gfc.header[gfc.h_ptr].buf, 0, gfc.sideinfo_len, 0);\n if (gfp.out_samplerate < 16e3)\n writeheader(gfc, 4094, 12);\n else\n writeheader(gfc, 4095, 12);\n writeheader(gfc, gfp.version, 1);\n writeheader(gfc, 4 - 3, 2);\n writeheader(gfc, !gfp.error_protection ? 1 : 0, 1);\n writeheader(gfc, gfc.bitrate_index, 4);\n writeheader(gfc, gfc.samplerate_index, 2);\n writeheader(gfc, gfc.padding, 1);\n writeheader(gfc, gfp.extension, 1);\n writeheader(gfc, gfp.mode.ordinal(), 2);\n writeheader(gfc, gfc.mode_ext, 2);\n writeheader(gfc, gfp.copyright, 1);\n writeheader(gfc, gfp.original, 1);\n writeheader(gfc, gfp.emphasis, 2);\n if (gfp.error_protection) {\n writeheader(gfc, 0, 16);\n }\n if (gfp.version == 1) {\n assert$5(l3_side.main_data_begin >= 0);\n writeheader(gfc, l3_side.main_data_begin, 9);\n if (gfc.channels_out == 2)\n writeheader(gfc, l3_side.private_bits, 3);\n else\n writeheader(gfc, l3_side.private_bits, 5);\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var band;\n for (band = 0; band < 4; band++) {\n writeheader(gfc, l3_side.scfsi[ch][band], 1);\n }\n }\n for (gr = 0; gr < 2; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var gi = l3_side.tt[gr][ch];\n writeheader(gfc, gi.part2_3_length + gi.part2_length, 12);\n writeheader(gfc, gi.big_values / 2, 9);\n writeheader(gfc, gi.global_gain, 8);\n writeheader(gfc, gi.scalefac_compress, 4);\n if (gi.block_type != Encoder.NORM_TYPE) {\n writeheader(gfc, 1, 1);\n writeheader(gfc, gi.block_type, 2);\n writeheader(gfc, gi.mixed_block_flag, 1);\n if (gi.table_select[0] == 14)\n gi.table_select[0] = 16;\n writeheader(gfc, gi.table_select[0], 5);\n if (gi.table_select[1] == 14)\n gi.table_select[1] = 16;\n writeheader(gfc, gi.table_select[1], 5);\n writeheader(gfc, gi.subblock_gain[0], 3);\n writeheader(gfc, gi.subblock_gain[1], 3);\n writeheader(gfc, gi.subblock_gain[2], 3);\n } else {\n writeheader(gfc, 0, 1);\n if (gi.table_select[0] == 14)\n gi.table_select[0] = 16;\n writeheader(gfc, gi.table_select[0], 5);\n if (gi.table_select[1] == 14)\n gi.table_select[1] = 16;\n writeheader(gfc, gi.table_select[1], 5);\n if (gi.table_select[2] == 14)\n gi.table_select[2] = 16;\n writeheader(gfc, gi.table_select[2], 5);\n assert$5(gi.region0_count >= 0 && gi.region0_count < 16);\n assert$5(gi.region1_count >= 0 && gi.region1_count < 8);\n writeheader(gfc, gi.region0_count, 4);\n writeheader(gfc, gi.region1_count, 3);\n }\n writeheader(gfc, gi.preflag, 1);\n writeheader(gfc, gi.scalefac_scale, 1);\n writeheader(gfc, gi.count1table_select, 1);\n }\n }\n } else {\n assert$5(l3_side.main_data_begin >= 0);\n writeheader(gfc, l3_side.main_data_begin, 8);\n writeheader(gfc, l3_side.private_bits, gfc.channels_out);\n gr = 0;\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var gi = l3_side.tt[gr][ch];\n writeheader(gfc, gi.part2_3_length + gi.part2_length, 12);\n writeheader(gfc, gi.big_values / 2, 9);\n writeheader(gfc, gi.global_gain, 8);\n writeheader(gfc, gi.scalefac_compress, 9);\n if (gi.block_type != Encoder.NORM_TYPE) {\n writeheader(gfc, 1, 1);\n writeheader(gfc, gi.block_type, 2);\n writeheader(gfc, gi.mixed_block_flag, 1);\n if (gi.table_select[0] == 14)\n gi.table_select[0] = 16;\n writeheader(gfc, gi.table_select[0], 5);\n if (gi.table_select[1] == 14)\n gi.table_select[1] = 16;\n writeheader(gfc, gi.table_select[1], 5);\n writeheader(gfc, gi.subblock_gain[0], 3);\n writeheader(gfc, gi.subblock_gain[1], 3);\n writeheader(gfc, gi.subblock_gain[2], 3);\n } else {\n writeheader(gfc, 0, 1);\n if (gi.table_select[0] == 14)\n gi.table_select[0] = 16;\n writeheader(gfc, gi.table_select[0], 5);\n if (gi.table_select[1] == 14)\n gi.table_select[1] = 16;\n writeheader(gfc, gi.table_select[1], 5);\n if (gi.table_select[2] == 14)\n gi.table_select[2] = 16;\n writeheader(gfc, gi.table_select[2], 5);\n assert$5(gi.region0_count >= 0 && gi.region0_count < 16);\n assert$5(gi.region1_count >= 0 && gi.region1_count < 8);\n writeheader(gfc, gi.region0_count, 4);\n writeheader(gfc, gi.region1_count, 3);\n }\n writeheader(gfc, gi.scalefac_scale, 1);\n writeheader(gfc, gi.count1table_select, 1);\n }\n }\n if (gfp.error_protection) {\n CRC_writeheader(gfc, gfc.header[gfc.h_ptr].buf);\n }\n {\n var old = gfc.h_ptr;\n assert$5(gfc.header[old].ptr == gfc.sideinfo_len * 8);\n gfc.h_ptr = old + 1 & LameInternalFlags$1.MAX_HEADER_BUF - 1;\n gfc.header[gfc.h_ptr].write_timing = gfc.header[old].write_timing + bitsPerFrame;\n if (gfc.h_ptr == gfc.w_ptr) {\n System$3.err.println(\"Error: MAX_HEADER_BUF too small in bitstream.c \\n\");\n }\n }\n }\n function huffman_coder_count1(gfc, gi) {\n var h2 = Tables$1.ht[gi.count1table_select + 32];\n var i;\n var bits = 0;\n var ix = gi.big_values;\n var xr = gi.big_values;\n assert$5(gi.count1table_select < 2);\n for (i = (gi.count1 - gi.big_values) / 4; i > 0; --i) {\n var huffbits = 0;\n var p2 = 0;\n var v;\n v = gi.l3_enc[ix + 0];\n if (v != 0) {\n p2 += 8;\n if (gi.xr[xr + 0] < 0)\n huffbits++;\n }\n v = gi.l3_enc[ix + 1];\n if (v != 0) {\n p2 += 4;\n huffbits *= 2;\n if (gi.xr[xr + 1] < 0)\n huffbits++;\n }\n v = gi.l3_enc[ix + 2];\n if (v != 0) {\n p2 += 2;\n huffbits *= 2;\n if (gi.xr[xr + 2] < 0)\n huffbits++;\n }\n v = gi.l3_enc[ix + 3];\n if (v != 0) {\n p2++;\n huffbits *= 2;\n if (gi.xr[xr + 3] < 0)\n huffbits++;\n }\n ix += 4;\n xr += 4;\n putbits2(gfc, huffbits + h2.table[p2], h2.hlen[p2]);\n bits += h2.hlen[p2];\n }\n return bits;\n }\n function Huffmancode(gfc, tableindex, start2, end, gi) {\n var h2 = Tables$1.ht[tableindex];\n var bits = 0;\n if (tableindex == 0)\n return bits;\n for (var i = start2; i < end; i += 2) {\n var cbits = 0;\n var xbits = 0;\n var linbits = h2.xlen;\n var xlen = h2.xlen;\n var ext = 0;\n var x1 = gi.l3_enc[i];\n var x2 = gi.l3_enc[i + 1];\n if (x1 != 0) {\n if (gi.xr[i] < 0)\n ext++;\n cbits--;\n }\n if (tableindex > 15) {\n if (x1 > 14) {\n var linbits_x1 = x1 - 15;\n assert$5(linbits_x1 <= h2.linmax);\n ext |= linbits_x1 << 1;\n xbits = linbits;\n x1 = 15;\n }\n if (x2 > 14) {\n var linbits_x2 = x2 - 15;\n assert$5(linbits_x2 <= h2.linmax);\n ext <<= linbits;\n ext |= linbits_x2;\n xbits += linbits;\n x2 = 15;\n }\n xlen = 16;\n }\n if (x2 != 0) {\n ext <<= 1;\n if (gi.xr[i + 1] < 0)\n ext++;\n cbits--;\n }\n x1 = x1 * xlen + x2;\n xbits -= cbits;\n cbits += h2.hlen[x1];\n putbits2(gfc, h2.table[x1], cbits);\n putbits2(gfc, ext, xbits);\n bits += cbits + xbits;\n }\n return bits;\n }\n function ShortHuffmancodebits(gfc, gi) {\n var region1Start = 3 * gfc.scalefac_band.s[3];\n if (region1Start > gi.big_values)\n region1Start = gi.big_values;\n var bits = Huffmancode(gfc, gi.table_select[0], 0, region1Start, gi);\n bits += Huffmancode(\n gfc,\n gi.table_select[1],\n region1Start,\n gi.big_values,\n gi\n );\n return bits;\n }\n function LongHuffmancodebits(gfc, gi) {\n var bigvalues, bits;\n var region1Start, region2Start;\n bigvalues = gi.big_values;\n var i = gi.region0_count + 1;\n assert$5(i < gfc.scalefac_band.l.length);\n region1Start = gfc.scalefac_band.l[i];\n i += gi.region1_count + 1;\n assert$5(i < gfc.scalefac_band.l.length);\n region2Start = gfc.scalefac_band.l[i];\n if (region1Start > bigvalues)\n region1Start = bigvalues;\n if (region2Start > bigvalues)\n region2Start = bigvalues;\n bits = Huffmancode(gfc, gi.table_select[0], 0, region1Start, gi);\n bits += Huffmancode(gfc, gi.table_select[1], region1Start, region2Start, gi);\n bits += Huffmancode(gfc, gi.table_select[2], region2Start, bigvalues, gi);\n return bits;\n }\n function writeMainData(gfp) {\n var gr;\n var ch;\n var sfb;\n var data_bits;\n var tot_bits = 0;\n var gfc = gfp.internal_flags;\n var l3_side = gfc.l3_side;\n if (gfp.version == 1) {\n for (gr = 0; gr < 2; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var gi = l3_side.tt[gr][ch];\n var slen1 = Takehiro.slen1_tab[gi.scalefac_compress];\n var slen2 = Takehiro.slen2_tab[gi.scalefac_compress];\n data_bits = 0;\n for (sfb = 0; sfb < gi.sfbdivide; sfb++) {\n if (gi.scalefac[sfb] == -1)\n continue;\n putbits2(gfc, gi.scalefac[sfb], slen1);\n data_bits += slen1;\n }\n for (; sfb < gi.sfbmax; sfb++) {\n if (gi.scalefac[sfb] == -1)\n continue;\n putbits2(gfc, gi.scalefac[sfb], slen2);\n data_bits += slen2;\n }\n assert$5(data_bits == gi.part2_length);\n if (gi.block_type == Encoder.SHORT_TYPE) {\n data_bits += ShortHuffmancodebits(gfc, gi);\n } else {\n data_bits += LongHuffmancodebits(gfc, gi);\n }\n data_bits += huffman_coder_count1(gfc, gi);\n assert$5(data_bits == gi.part2_3_length + gi.part2_length);\n tot_bits += data_bits;\n }\n }\n } else {\n gr = 0;\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var gi = l3_side.tt[gr][ch];\n var i;\n var sfb_partition;\n var scale_bits = 0;\n assert$5(gi.sfb_partition_table != null);\n data_bits = 0;\n sfb = 0;\n sfb_partition = 0;\n if (gi.block_type == Encoder.SHORT_TYPE) {\n for (; sfb_partition < 4; sfb_partition++) {\n var sfbs = gi.sfb_partition_table[sfb_partition] / 3;\n var slen = gi.slen[sfb_partition];\n for (i = 0; i < sfbs; i++, sfb++) {\n putbits2(gfc, Math.max(gi.scalefac[sfb * 3 + 0], 0), slen);\n putbits2(gfc, Math.max(gi.scalefac[sfb * 3 + 1], 0), slen);\n putbits2(gfc, Math.max(gi.scalefac[sfb * 3 + 2], 0), slen);\n scale_bits += 3 * slen;\n }\n }\n data_bits += ShortHuffmancodebits(gfc, gi);\n } else {\n for (; sfb_partition < 4; sfb_partition++) {\n var sfbs = gi.sfb_partition_table[sfb_partition];\n var slen = gi.slen[sfb_partition];\n for (i = 0; i < sfbs; i++, sfb++) {\n putbits2(gfc, Math.max(gi.scalefac[sfb], 0), slen);\n scale_bits += slen;\n }\n }\n data_bits += LongHuffmancodebits(gfc, gi);\n }\n data_bits += huffman_coder_count1(gfc, gi);\n assert$5(data_bits == gi.part2_3_length);\n assert$5(scale_bits == gi.part2_length);\n tot_bits += scale_bits + data_bits;\n }\n }\n return tot_bits;\n }\n function TotalBytes() {\n this.total = 0;\n }\n function compute_flushbits(gfp, total_bytes_output) {\n var gfc = gfp.internal_flags;\n var flushbits, remaining_headers;\n var bitsPerFrame;\n var last_ptr, first_ptr;\n first_ptr = gfc.w_ptr;\n last_ptr = gfc.h_ptr - 1;\n if (last_ptr == -1)\n last_ptr = LameInternalFlags$1.MAX_HEADER_BUF - 1;\n flushbits = gfc.header[last_ptr].write_timing - totbit;\n total_bytes_output.total = flushbits;\n if (flushbits >= 0) {\n remaining_headers = 1 + last_ptr - first_ptr;\n if (last_ptr < first_ptr) {\n remaining_headers = 1 + last_ptr - first_ptr + LameInternalFlags$1.MAX_HEADER_BUF;\n }\n flushbits -= remaining_headers * 8 * gfc.sideinfo_len;\n }\n bitsPerFrame = self2.getframebits(gfp);\n flushbits += bitsPerFrame;\n total_bytes_output.total += bitsPerFrame;\n if (total_bytes_output.total % 8 != 0) {\n total_bytes_output.total = 1 + total_bytes_output.total / 8;\n } else\n total_bytes_output.total = total_bytes_output.total / 8;\n total_bytes_output.total += bufByteIdx + 1;\n if (flushbits < 0) {\n System$3.err.println(\"strange error flushing buffer ... \\n\");\n }\n return flushbits;\n }\n this.flush_bitstream = function(gfp) {\n var gfc = gfp.internal_flags;\n var l3_side;\n var flushbits;\n var last_ptr = gfc.h_ptr - 1;\n if (last_ptr == -1)\n last_ptr = LameInternalFlags$1.MAX_HEADER_BUF - 1;\n l3_side = gfc.l3_side;\n if ((flushbits = compute_flushbits(gfp, new TotalBytes())) < 0)\n return;\n drain_into_ancillary(gfp, flushbits);\n assert$5(gfc.header[last_ptr].write_timing + this.getframebits(gfp) == totbit);\n gfc.ResvSize = 0;\n l3_side.main_data_begin = 0;\n if (gfc.findReplayGain) {\n var RadioGain = ga.GetTitleGain(gfc.rgdata);\n assert$5(NEQ(RadioGain, GainAnalysis.GAIN_NOT_ENOUGH_SAMPLES));\n gfc.RadioGain = Math.floor(RadioGain * 10 + 0.5) | 0;\n }\n if (gfc.findPeakSample) {\n gfc.noclipGainChange = Math.ceil(Math.log10(gfc.PeakSample / 32767) * 20 * 10) | 0;\n if (gfc.noclipGainChange > 0) {\n if (EQ(gfp.scale, 1) || EQ(gfp.scale, 0)) {\n gfc.noclipScale = Math.floor(32767 / gfc.PeakSample * 100) / 100;\n } else {\n gfc.noclipScale = -1;\n }\n } else {\n gfc.noclipScale = -1;\n }\n }\n };\n this.add_dummy_byte = function(gfp, val, n) {\n var gfc = gfp.internal_flags;\n var i;\n while (n-- > 0) {\n putbits_noheaders(gfc, val, 8);\n for (i = 0; i < LameInternalFlags$1.MAX_HEADER_BUF; ++i) {\n gfc.header[i].write_timing += 8;\n }\n }\n };\n this.format_bitstream = function(gfp) {\n var gfc = gfp.internal_flags;\n var l3_side;\n l3_side = gfc.l3_side;\n var bitsPerFrame = this.getframebits(gfp);\n drain_into_ancillary(gfp, l3_side.resvDrain_pre);\n encodeSideInfo2(gfp, bitsPerFrame);\n var bits = 8 * gfc.sideinfo_len;\n bits += writeMainData(gfp);\n drain_into_ancillary(gfp, l3_side.resvDrain_post);\n bits += l3_side.resvDrain_post;\n l3_side.main_data_begin += (bitsPerFrame - bits) / 8;\n if (compute_flushbits(gfp, new TotalBytes()) != gfc.ResvSize) {\n System$3.err.println(\"Internal buffer inconsistency. flushbits <> ResvSize\");\n }\n if (l3_side.main_data_begin * 8 != gfc.ResvSize) {\n System$3.err.printf(\n \"bit reservoir error: \\nl3_side.main_data_begin: %d \\nResvoir size: %d \\nresv drain (post) %d \\nresv drain (pre) %d \\nheader and sideinfo: %d \\ndata bits: %d \\ntotal bits: %d (remainder: %d) \\nbitsperframe: %d \\n\",\n 8 * l3_side.main_data_begin,\n gfc.ResvSize,\n l3_side.resvDrain_post,\n l3_side.resvDrain_pre,\n 8 * gfc.sideinfo_len,\n bits - l3_side.resvDrain_post - 8 * gfc.sideinfo_len,\n bits,\n bits % 8,\n bitsPerFrame\n );\n System$3.err.println(\n \"This is a fatal error. It has several possible causes:\"\n );\n System$3.err.println(\n \"90%% LAME compiled with buggy version of gcc using advanced optimizations\"\n );\n System$3.err.println(\" 9%% Your system is overclocked\");\n System$3.err.println(\" 1%% bug in LAME encoding library\");\n gfc.ResvSize = l3_side.main_data_begin * 8;\n }\n if (totbit > 1e9) {\n var i;\n for (i = 0; i < LameInternalFlags$1.MAX_HEADER_BUF; ++i) {\n gfc.header[i].write_timing -= totbit;\n }\n totbit = 0;\n }\n return 0;\n };\n this.copy_buffer = function(gfc, buffer, bufferPos, size2, mp3data) {\n var minimum = bufByteIdx + 1;\n if (minimum <= 0)\n return 0;\n if (size2 != 0 && minimum > size2) {\n return -1;\n }\n System$3.arraycopy(buf, 0, buffer, bufferPos, minimum);\n bufByteIdx = -1;\n bufBitIdx = 0;\n if (mp3data != 0) {\n var crc = new_int$1(1);\n crc[0] = gfc.nMusicCRC;\n vbr.updateMusicCRC(crc, buffer, bufferPos, minimum);\n gfc.nMusicCRC = crc[0];\n if (minimum > 0) {\n gfc.VBR_seek_table.nBytesWritten += minimum;\n }\n if (gfc.decode_on_the_fly) {\n var pcm_buf = new_float_n([2, 1152]);\n var mp3_in = minimum;\n var samples_out = -1;\n var i;\n while (samples_out != 0) {\n samples_out = mpg.hip_decode1_unclipped(\n gfc.hip,\n buffer,\n bufferPos,\n mp3_in,\n pcm_buf[0],\n pcm_buf[1]\n );\n mp3_in = 0;\n if (samples_out == -1) {\n samples_out = 0;\n }\n if (samples_out > 0) {\n if (gfc.findPeakSample) {\n for (i = 0; i < samples_out; i++) {\n if (pcm_buf[0][i] > gfc.PeakSample) {\n gfc.PeakSample = pcm_buf[0][i];\n } else if (-pcm_buf[0][i] > gfc.PeakSample) {\n gfc.PeakSample = -pcm_buf[0][i];\n }\n }\n if (gfc.channels_out > 1) {\n for (i = 0; i < samples_out; i++) {\n if (pcm_buf[1][i] > gfc.PeakSample) {\n gfc.PeakSample = pcm_buf[1][i];\n } else if (-pcm_buf[1][i] > gfc.PeakSample) {\n gfc.PeakSample = -pcm_buf[1][i];\n }\n }\n }\n }\n if (gfc.findReplayGain) {\n if (ga.AnalyzeSamples(\n gfc.rgdata,\n pcm_buf[0],\n 0,\n pcm_buf[1],\n 0,\n samples_out,\n gfc.channels_out\n ) == GainAnalysis.GAIN_ANALYSIS_ERROR) {\n return -6;\n }\n }\n }\n }\n }\n }\n return minimum;\n };\n this.init_bit_stream_w = function(gfc) {\n buf = new_byte$2(Lame$1.LAME_MAXMP3BUFFER);\n gfc.h_ptr = gfc.w_ptr = 0;\n gfc.header[gfc.h_ptr].write_timing = 0;\n bufByteIdx = -1;\n bufBitIdx = 0;\n totbit = 0;\n };\n}\nvar System$2 = common.System;\nvar VbrMode$3 = common.VbrMode;\nvar ShortBlock$1 = common.ShortBlock;\nvar new_float$2 = common.new_float;\nvar new_int_n = common.new_int_n;\nvar new_short_n = common.new_short_n;\nvar assert$4 = common.assert;\nfunction Lame$1() {\n var self2 = this;\n var LAME_MAXALBUMART = 128 * 1024;\n Lame$1.V9 = 410;\n Lame$1.V8 = 420;\n Lame$1.V7 = 430;\n Lame$1.V6 = 440;\n Lame$1.V5 = 450;\n Lame$1.V4 = 460;\n Lame$1.V3 = 470;\n Lame$1.V2 = 480;\n Lame$1.V1 = 490;\n Lame$1.V0 = 500;\n Lame$1.R3MIX = 1e3;\n Lame$1.STANDARD = 1001;\n Lame$1.EXTREME = 1002;\n Lame$1.INSANE = 1003;\n Lame$1.STANDARD_FAST = 1004;\n Lame$1.EXTREME_FAST = 1005;\n Lame$1.MEDIUM = 1006;\n Lame$1.MEDIUM_FAST = 1007;\n var LAME_MAXMP3BUFFER = 16384 + LAME_MAXALBUMART;\n Lame$1.LAME_MAXMP3BUFFER = LAME_MAXMP3BUFFER;\n var ga;\n var bs;\n var p2;\n var qupvt;\n var qu;\n var psy = new PsyModel();\n var vbr;\n var id3;\n var mpglib;\n this.enc = new Encoder();\n this.setModules = function(_ga, _bs, _p, _qupvt, _qu, _vbr, _ver, _id3, _mpglib) {\n ga = _ga;\n bs = _bs;\n p2 = _p;\n qupvt = _qupvt;\n qu = _qu;\n vbr = _vbr;\n id3 = _id3;\n mpglib = _mpglib;\n this.enc.setModules(bs, psy, qupvt, vbr);\n };\n function PSY() {\n this.mask_adjust = 0;\n this.mask_adjust_short = 0;\n this.bo_l_weight = new_float$2(Encoder.SBMAX_l);\n this.bo_s_weight = new_float$2(Encoder.SBMAX_s);\n }\n function LowPassHighPass() {\n this.lowerlimit = 0;\n }\n function BandPass(bitrate, lPass) {\n this.lowpass = lPass;\n }\n var LAME_ID = 4294479419;\n function lame_init_old(gfp) {\n var gfc;\n gfp.class_id = LAME_ID;\n gfc = gfp.internal_flags = new LameInternalFlags$1();\n gfp.mode = MPEGMode.NOT_SET;\n gfp.original = 1;\n gfp.in_samplerate = 44100;\n gfp.num_channels = 2;\n gfp.num_samples = -1;\n gfp.bWriteVbrTag = true;\n gfp.quality = -1;\n gfp.short_blocks = null;\n gfc.subblock_gain = -1;\n gfp.lowpassfreq = 0;\n gfp.highpassfreq = 0;\n gfp.lowpasswidth = -1;\n gfp.highpasswidth = -1;\n gfp.VBR = VbrMode$3.vbr_off;\n gfp.VBR_q = 4;\n gfp.ATHcurve = -1;\n gfp.VBR_mean_bitrate_kbps = 128;\n gfp.VBR_min_bitrate_kbps = 0;\n gfp.VBR_max_bitrate_kbps = 0;\n gfp.VBR_hard_min = 0;\n gfc.VBR_min_bitrate = 1;\n gfc.VBR_max_bitrate = 13;\n gfp.quant_comp = -1;\n gfp.quant_comp_short = -1;\n gfp.msfix = -1;\n gfc.resample_ratio = 1;\n gfc.OldValue[0] = 180;\n gfc.OldValue[1] = 180;\n gfc.CurrentStep[0] = 4;\n gfc.CurrentStep[1] = 4;\n gfc.masking_lower = 1;\n gfc.nsPsy.attackthre = -1;\n gfc.nsPsy.attackthre_s = -1;\n gfp.scale = -1;\n gfp.athaa_type = -1;\n gfp.ATHtype = -1;\n gfp.athaa_loudapprox = -1;\n gfp.athaa_sensitivity = 0;\n gfp.useTemporal = null;\n gfp.interChRatio = -1;\n gfc.mf_samples_to_encode = Encoder.ENCDELAY + Encoder.POSTDELAY;\n gfp.encoder_padding = 0;\n gfc.mf_size = Encoder.ENCDELAY - Encoder.MDCTDELAY;\n gfp.findReplayGain = false;\n gfp.decode_on_the_fly = false;\n gfc.decode_on_the_fly = false;\n gfc.findReplayGain = false;\n gfc.findPeakSample = false;\n gfc.RadioGain = 0;\n gfc.AudiophileGain = 0;\n gfc.noclipGainChange = 0;\n gfc.noclipScale = -1;\n gfp.preset = 0;\n gfp.write_id3tag_automatic = true;\n return 0;\n }\n this.lame_init = function() {\n var gfp = new LameGlobalFlags();\n lame_init_old(gfp);\n gfp.lame_allocated_gfp = 1;\n return gfp;\n };\n function filter_coef(x) {\n if (x > 1)\n return 0;\n if (x <= 0)\n return 1;\n return Math.cos(Math.PI / 2 * x);\n }\n this.nearestBitrateFullIndex = function(bitrate) {\n var full_bitrate_table = [\n 8,\n 16,\n 24,\n 32,\n 40,\n 48,\n 56,\n 64,\n 80,\n 96,\n 112,\n 128,\n 160,\n 192,\n 224,\n 256,\n 320\n ];\n var lower_range = 0;\n var lower_range_kbps = 0;\n var upper_range = 0;\n var upper_range_kbps = 0;\n upper_range_kbps = full_bitrate_table[16];\n upper_range = 16;\n lower_range_kbps = full_bitrate_table[16];\n lower_range = 16;\n for (var b = 0; b < 16; b++) {\n if (Math.max(bitrate, full_bitrate_table[b + 1]) != bitrate) {\n upper_range_kbps = full_bitrate_table[b + 1];\n upper_range = b + 1;\n lower_range_kbps = full_bitrate_table[b];\n lower_range = b;\n break;\n }\n }\n if (upper_range_kbps - bitrate > bitrate - lower_range_kbps) {\n return lower_range;\n }\n return upper_range;\n };\n function optimum_samplefreq(lowpassfreq, input_samplefreq) {\n var suggested_samplefreq = 44100;\n if (input_samplefreq >= 48e3)\n suggested_samplefreq = 48e3;\n else if (input_samplefreq >= 44100)\n suggested_samplefreq = 44100;\n else if (input_samplefreq >= 32e3)\n suggested_samplefreq = 32e3;\n else if (input_samplefreq >= 24e3)\n suggested_samplefreq = 24e3;\n else if (input_samplefreq >= 22050)\n suggested_samplefreq = 22050;\n else if (input_samplefreq >= 16e3)\n suggested_samplefreq = 16e3;\n else if (input_samplefreq >= 12e3)\n suggested_samplefreq = 12e3;\n else if (input_samplefreq >= 11025)\n suggested_samplefreq = 11025;\n else if (input_samplefreq >= 8e3)\n suggested_samplefreq = 8e3;\n if (lowpassfreq == -1)\n return suggested_samplefreq;\n if (lowpassfreq <= 15960)\n suggested_samplefreq = 44100;\n if (lowpassfreq <= 15250)\n suggested_samplefreq = 32e3;\n if (lowpassfreq <= 11220)\n suggested_samplefreq = 24e3;\n if (lowpassfreq <= 9970)\n suggested_samplefreq = 22050;\n if (lowpassfreq <= 7230)\n suggested_samplefreq = 16e3;\n if (lowpassfreq <= 5420)\n suggested_samplefreq = 12e3;\n if (lowpassfreq <= 4510)\n suggested_samplefreq = 11025;\n if (lowpassfreq <= 3970)\n suggested_samplefreq = 8e3;\n if (input_samplefreq < suggested_samplefreq) {\n if (input_samplefreq > 44100) {\n return 48e3;\n }\n if (input_samplefreq > 32e3) {\n return 44100;\n }\n if (input_samplefreq > 24e3) {\n return 32e3;\n }\n if (input_samplefreq > 22050) {\n return 24e3;\n }\n if (input_samplefreq > 16e3) {\n return 22050;\n }\n if (input_samplefreq > 12e3) {\n return 16e3;\n }\n if (input_samplefreq > 11025) {\n return 12e3;\n }\n if (input_samplefreq > 8e3) {\n return 11025;\n }\n return 8e3;\n }\n return suggested_samplefreq;\n }\n function SmpFrqIndex(sample_freq, gpf) {\n switch (sample_freq) {\n case 44100:\n gpf.version = 1;\n return 0;\n case 48e3:\n gpf.version = 1;\n return 1;\n case 32e3:\n gpf.version = 1;\n return 2;\n case 22050:\n gpf.version = 0;\n return 0;\n case 24e3:\n gpf.version = 0;\n return 1;\n case 16e3:\n gpf.version = 0;\n return 2;\n case 11025:\n gpf.version = 0;\n return 0;\n case 12e3:\n gpf.version = 0;\n return 1;\n case 8e3:\n gpf.version = 0;\n return 2;\n default:\n gpf.version = 0;\n return -1;\n }\n }\n function FindNearestBitrate(bRate, version2, samplerate) {\n if (samplerate < 16e3)\n version2 = 2;\n var bitrate = Tables$1.bitrate_table[version2][1];\n for (var i = 2; i <= 14; i++) {\n if (Tables$1.bitrate_table[version2][i] > 0) {\n if (Math.abs(Tables$1.bitrate_table[version2][i] - bRate) < Math.abs(bitrate - bRate)) {\n bitrate = Tables$1.bitrate_table[version2][i];\n }\n }\n }\n return bitrate;\n }\n function BitrateIndex(bRate, version2, samplerate) {\n if (samplerate < 16e3)\n version2 = 2;\n for (var i = 0; i <= 14; i++) {\n if (Tables$1.bitrate_table[version2][i] > 0) {\n if (Tables$1.bitrate_table[version2][i] == bRate) {\n return i;\n }\n }\n }\n return -1;\n }\n function optimum_bandwidth(lh, bitrate) {\n var freq_map = [\n new BandPass(8, 2e3),\n new BandPass(16, 3700),\n new BandPass(24, 3900),\n new BandPass(32, 5500),\n new BandPass(40, 7e3),\n new BandPass(48, 7500),\n new BandPass(56, 1e4),\n new BandPass(64, 11e3),\n new BandPass(80, 13500),\n new BandPass(96, 15100),\n new BandPass(112, 15600),\n new BandPass(128, 17e3),\n new BandPass(160, 17500),\n new BandPass(192, 18600),\n new BandPass(224, 19400),\n new BandPass(256, 19700),\n new BandPass(320, 20500)\n ];\n var table_index = self2.nearestBitrateFullIndex(bitrate);\n lh.lowerlimit = freq_map[table_index].lowpass;\n }\n function lame_init_params_ppflt(gfp) {\n var gfc = gfp.internal_flags;\n var lowpass_band = 32;\n var highpass_band = -1;\n if (gfc.lowpass1 > 0) {\n var minband = 999;\n for (var band = 0; band <= 31; band++) {\n var freq = band / 31;\n if (freq >= gfc.lowpass2) {\n lowpass_band = Math.min(lowpass_band, band);\n }\n if (gfc.lowpass1 < freq && freq < gfc.lowpass2) {\n minband = Math.min(minband, band);\n }\n }\n if (minband == 999) {\n gfc.lowpass1 = (lowpass_band - 0.75) / 31;\n } else {\n gfc.lowpass1 = (minband - 0.75) / 31;\n }\n gfc.lowpass2 = lowpass_band / 31;\n }\n if (gfc.highpass2 > 0) {\n if (gfc.highpass2 < 0.9 * (0.75 / 31)) {\n gfc.highpass1 = 0;\n gfc.highpass2 = 0;\n System$2.err.println(\n \"Warning: highpass filter disabled. highpass frequency too small\\n\"\n );\n }\n }\n if (gfc.highpass2 > 0) {\n var maxband = -1;\n for (var band = 0; band <= 31; band++) {\n var freq = band / 31;\n if (freq <= gfc.highpass1) {\n highpass_band = Math.max(highpass_band, band);\n }\n if (gfc.highpass1 < freq && freq < gfc.highpass2) {\n maxband = Math.max(maxband, band);\n }\n }\n gfc.highpass1 = highpass_band / 31;\n if (maxband == -1) {\n gfc.highpass2 = (highpass_band + 0.75) / 31;\n } else {\n gfc.highpass2 = (maxband + 0.75) / 31;\n }\n }\n for (var band = 0; band < 32; band++) {\n var fc1, fc2;\n var freq = band / 31;\n if (gfc.highpass2 > gfc.highpass1) {\n fc1 = filter_coef(\n (gfc.highpass2 - freq) / (gfc.highpass2 - gfc.highpass1 + 1e-20)\n );\n } else {\n fc1 = 1;\n }\n if (gfc.lowpass2 > gfc.lowpass1) {\n fc2 = filter_coef(\n (freq - gfc.lowpass1) / (gfc.lowpass2 - gfc.lowpass1 + 1e-20)\n );\n } else {\n fc2 = 1;\n }\n gfc.amp_filter[band] = fc1 * fc2;\n }\n }\n function lame_init_qval(gfp) {\n var gfc = gfp.internal_flags;\n switch (gfp.quality) {\n default:\n case 9:\n gfc.psymodel = 0;\n gfc.noise_shaping = 0;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n gfc.use_best_huffman = 0;\n gfc.full_outer_loop = 0;\n break;\n case 8:\n gfp.quality = 7;\n case 7:\n gfc.psymodel = 1;\n gfc.noise_shaping = 0;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n gfc.use_best_huffman = 0;\n gfc.full_outer_loop = 0;\n break;\n case 6:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 0;\n gfc.full_outer_loop = 0;\n break;\n case 5:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 0;\n gfc.full_outer_loop = 0;\n break;\n case 4:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n gfc.full_outer_loop = 0;\n break;\n case 3:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n gfc.noise_shaping_amp = 1;\n gfc.noise_shaping_stop = 1;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n gfc.full_outer_loop = 0;\n break;\n case 2:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n if (gfc.substep_shaping == 0)\n gfc.substep_shaping = 2;\n gfc.noise_shaping_amp = 1;\n gfc.noise_shaping_stop = 1;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n gfc.full_outer_loop = 0;\n break;\n case 1:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n if (gfc.substep_shaping == 0)\n gfc.substep_shaping = 2;\n gfc.noise_shaping_amp = 2;\n gfc.noise_shaping_stop = 1;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n gfc.full_outer_loop = 0;\n break;\n case 0:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n if (gfc.substep_shaping == 0)\n gfc.substep_shaping = 2;\n gfc.noise_shaping_amp = 2;\n gfc.noise_shaping_stop = 1;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n gfc.full_outer_loop = 0;\n break;\n }\n }\n function lame_init_bitstream(gfp) {\n var gfc = gfp.internal_flags;\n gfp.frameNum = 0;\n if (gfp.write_id3tag_automatic) {\n id3.id3tag_write_v2(gfp);\n }\n gfc.bitrate_stereoMode_Hist = new_int_n([16, 4 + 1]);\n gfc.bitrate_blockType_Hist = new_int_n([16, 4 + 1 + 1]);\n gfc.PeakSample = 0;\n if (gfp.bWriteVbrTag)\n vbr.InitVbrTag(gfp);\n }\n this.lame_init_params = function(gfp) {\n var gfc = gfp.internal_flags;\n gfc.Class_ID = 0;\n if (gfc.ATH == null)\n gfc.ATH = new ATH();\n if (gfc.PSY == null)\n gfc.PSY = new PSY();\n if (gfc.rgdata == null)\n gfc.rgdata = new ReplayGain();\n gfc.channels_in = gfp.num_channels;\n if (gfc.channels_in == 1)\n gfp.mode = MPEGMode.MONO;\n gfc.channels_out = gfp.mode == MPEGMode.MONO ? 1 : 2;\n gfc.mode_ext = Encoder.MPG_MD_MS_LR;\n if (gfp.mode == MPEGMode.MONO)\n gfp.force_ms = false;\n if (gfp.VBR == VbrMode$3.vbr_off && gfp.VBR_mean_bitrate_kbps != 128 && gfp.brate == 0) {\n gfp.brate = gfp.VBR_mean_bitrate_kbps;\n }\n if (gfp.VBR == VbrMode$3.vbr_off || gfp.VBR == VbrMode$3.vbr_mtrh || gfp.VBR == VbrMode$3.vbr_mt)\n ;\n else {\n gfp.free_format = false;\n }\n if (gfp.VBR == VbrMode$3.vbr_off && gfp.brate == 0) {\n if (BitStream$1.EQ(gfp.compression_ratio, 0))\n gfp.compression_ratio = 11.025;\n }\n if (gfp.VBR == VbrMode$3.vbr_off && gfp.compression_ratio > 0) {\n if (gfp.out_samplerate == 0) {\n gfp.out_samplerate = map2MP3Frequency(int(0.97 * gfp.in_samplerate));\n }\n gfp.brate = 0 | gfp.out_samplerate * 16 * gfc.channels_out / (1e3 * gfp.compression_ratio);\n gfc.samplerate_index = SmpFrqIndex(gfp.out_samplerate, gfp);\n if (!gfp.free_format) {\n gfp.brate = FindNearestBitrate(\n gfp.brate,\n gfp.version,\n gfp.out_samplerate\n );\n }\n }\n if (gfp.out_samplerate != 0) {\n if (gfp.out_samplerate < 16e3) {\n gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps, 8);\n gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps, 64);\n } else if (gfp.out_samplerate < 32e3) {\n gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps, 8);\n gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps, 160);\n } else {\n gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps, 32);\n gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps, 320);\n }\n }\n if (gfp.lowpassfreq == 0) {\n var lowpass = 16e3;\n switch (gfp.VBR) {\n case VbrMode$3.vbr_off: {\n var lh = new LowPassHighPass();\n optimum_bandwidth(lh, gfp.brate);\n lowpass = lh.lowerlimit;\n break;\n }\n case VbrMode$3.vbr_abr: {\n var lh = new LowPassHighPass();\n optimum_bandwidth(lh, gfp.VBR_mean_bitrate_kbps);\n lowpass = lh.lowerlimit;\n break;\n }\n case VbrMode$3.vbr_rh: {\n var x = [\n 19500,\n 19e3,\n 18600,\n 18e3,\n 17500,\n 16e3,\n 15600,\n 14900,\n 12500,\n 1e4,\n 3950\n ];\n if (gfp.VBR_q >= 0 && gfp.VBR_q <= 9) {\n var a = x[gfp.VBR_q];\n var b = x[gfp.VBR_q + 1];\n var m = gfp.VBR_q_frac;\n lowpass = linear_int(a, b, m);\n } else {\n lowpass = 19500;\n }\n break;\n }\n default: {\n var x = [\n 19500,\n 19e3,\n 18500,\n 18e3,\n 17500,\n 16500,\n 15500,\n 14500,\n 12500,\n 9500,\n 3950\n ];\n if (gfp.VBR_q >= 0 && gfp.VBR_q <= 9) {\n var a = x[gfp.VBR_q];\n var b = x[gfp.VBR_q + 1];\n var m = gfp.VBR_q_frac;\n lowpass = linear_int(a, b, m);\n } else {\n lowpass = 19500;\n }\n }\n }\n if (gfp.mode == MPEGMode.MONO && (gfp.VBR == VbrMode$3.vbr_off || gfp.VBR == VbrMode$3.vbr_abr)) {\n lowpass *= 1.5;\n }\n gfp.lowpassfreq = lowpass | 0;\n }\n if (gfp.out_samplerate == 0) {\n if (2 * gfp.lowpassfreq > gfp.in_samplerate) {\n gfp.lowpassfreq = gfp.in_samplerate / 2;\n }\n gfp.out_samplerate = optimum_samplefreq(\n gfp.lowpassfreq | 0,\n gfp.in_samplerate\n );\n }\n gfp.lowpassfreq = Math.min(20500, gfp.lowpassfreq);\n gfp.lowpassfreq = Math.min(gfp.out_samplerate / 2, gfp.lowpassfreq);\n if (gfp.VBR == VbrMode$3.vbr_off) {\n gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out / (1e3 * gfp.brate);\n }\n if (gfp.VBR == VbrMode$3.vbr_abr) {\n gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out / (1e3 * gfp.VBR_mean_bitrate_kbps);\n }\n if (!gfp.bWriteVbrTag) {\n gfp.findReplayGain = false;\n gfp.decode_on_the_fly = false;\n gfc.findPeakSample = false;\n }\n gfc.findReplayGain = gfp.findReplayGain;\n gfc.decode_on_the_fly = gfp.decode_on_the_fly;\n if (gfc.decode_on_the_fly)\n gfc.findPeakSample = true;\n if (gfc.findReplayGain) {\n if (ga.InitGainAnalysis(gfc.rgdata, gfp.out_samplerate) == GainAnalysis.INIT_GAIN_ANALYSIS_ERROR) {\n gfp.internal_flags = null;\n return -6;\n }\n }\n if (gfc.decode_on_the_fly && !gfp.decode_only) {\n if (gfc.hip != null) {\n mpglib.hip_decode_exit(gfc.hip);\n }\n gfc.hip = mpglib.hip_decode_init();\n }\n gfc.mode_gr = gfp.out_samplerate <= 24e3 ? 1 : 2;\n gfp.framesize = 576 * gfc.mode_gr;\n gfp.encoder_delay = Encoder.ENCDELAY;\n gfc.resample_ratio = gfp.in_samplerate / gfp.out_samplerate;\n switch (gfp.VBR) {\n case VbrMode$3.vbr_mt:\n case VbrMode$3.vbr_rh:\n case VbrMode$3.vbr_mtrh:\n {\n var cmp = [5.7, 6.5, 7.3, 8.2, 10, 11.9, 13, 14, 15, 16.5];\n gfp.compression_ratio = cmp[gfp.VBR_q];\n }\n break;\n case VbrMode$3.vbr_abr:\n gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out / (1e3 * gfp.VBR_mean_bitrate_kbps);\n break;\n default:\n gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out / (1e3 * gfp.brate);\n break;\n }\n if (gfp.mode == MPEGMode.NOT_SET) {\n gfp.mode = MPEGMode.JOINT_STEREO;\n }\n if (gfp.highpassfreq > 0) {\n gfc.highpass1 = 2 * gfp.highpassfreq;\n if (gfp.highpasswidth >= 0) {\n gfc.highpass2 = 2 * (gfp.highpassfreq + gfp.highpasswidth);\n } else {\n gfc.highpass2 = (1 + 0) * 2 * gfp.highpassfreq;\n }\n gfc.highpass1 /= gfp.out_samplerate;\n gfc.highpass2 /= gfp.out_samplerate;\n } else {\n gfc.highpass1 = 0;\n gfc.highpass2 = 0;\n }\n if (gfp.lowpassfreq > 0) {\n gfc.lowpass2 = 2 * gfp.lowpassfreq;\n if (gfp.lowpasswidth >= 0) {\n gfc.lowpass1 = 2 * (gfp.lowpassfreq - gfp.lowpasswidth);\n if (gfc.lowpass1 < 0)\n gfc.lowpass1 = 0;\n } else {\n gfc.lowpass1 = (1 - 0) * 2 * gfp.lowpassfreq;\n }\n gfc.lowpass1 /= gfp.out_samplerate;\n gfc.lowpass2 /= gfp.out_samplerate;\n } else {\n gfc.lowpass1 = 0;\n gfc.lowpass2 = 0;\n }\n lame_init_params_ppflt(gfp);\n gfc.samplerate_index = SmpFrqIndex(gfp.out_samplerate, gfp);\n if (gfc.samplerate_index < 0) {\n gfp.internal_flags = null;\n return -1;\n }\n if (gfp.VBR == VbrMode$3.vbr_off) {\n if (gfp.free_format) {\n gfc.bitrate_index = 0;\n } else {\n gfp.brate = FindNearestBitrate(\n gfp.brate,\n gfp.version,\n gfp.out_samplerate\n );\n gfc.bitrate_index = BitrateIndex(\n gfp.brate,\n gfp.version,\n gfp.out_samplerate\n );\n if (gfc.bitrate_index <= 0) {\n gfp.internal_flags = null;\n return -1;\n }\n }\n } else {\n gfc.bitrate_index = 1;\n }\n if (gfp.analysis)\n gfp.bWriteVbrTag = false;\n if (gfc.pinfo != null)\n gfp.bWriteVbrTag = false;\n bs.init_bit_stream_w(gfc);\n var j = gfc.samplerate_index + 3 * gfp.version + 6 * (gfp.out_samplerate < 16e3 ? 1 : 0);\n for (var i = 0; i < Encoder.SBMAX_l + 1; i++) {\n gfc.scalefac_band.l[i] = qupvt.sfBandIndex[j].l[i];\n }\n for (var i = 0; i < Encoder.PSFB21 + 1; i++) {\n var size2 = (gfc.scalefac_band.l[22] - gfc.scalefac_band.l[21]) / Encoder.PSFB21;\n var start2 = gfc.scalefac_band.l[21] + i * size2;\n gfc.scalefac_band.psfb21[i] = start2;\n }\n gfc.scalefac_band.psfb21[Encoder.PSFB21] = 576;\n for (var i = 0; i < Encoder.SBMAX_s + 1; i++) {\n gfc.scalefac_band.s[i] = qupvt.sfBandIndex[j].s[i];\n }\n for (var i = 0; i < Encoder.PSFB12 + 1; i++) {\n var size2 = (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12]) / Encoder.PSFB12;\n var start2 = gfc.scalefac_band.s[12] + i * size2;\n gfc.scalefac_band.psfb12[i] = start2;\n }\n gfc.scalefac_band.psfb12[Encoder.PSFB12] = 192;\n if (gfp.version == 1) {\n gfc.sideinfo_len = gfc.channels_out == 1 ? 4 + 17 : 4 + 32;\n } else\n gfc.sideinfo_len = gfc.channels_out == 1 ? 4 + 9 : 4 + 17;\n if (gfp.error_protection)\n gfc.sideinfo_len += 2;\n lame_init_bitstream(gfp);\n gfc.Class_ID = LAME_ID;\n {\n var k;\n for (k = 0; k < 19; k++) {\n gfc.nsPsy.pefirbuf[k] = 700 * gfc.mode_gr * gfc.channels_out;\n }\n if (gfp.ATHtype == -1)\n gfp.ATHtype = 4;\n }\n assert$4(gfp.VBR_q <= 9);\n assert$4(gfp.VBR_q >= 0);\n switch (gfp.VBR) {\n case VbrMode$3.vbr_mt:\n gfp.VBR = VbrMode$3.vbr_mtrh;\n case VbrMode$3.vbr_mtrh: {\n if (gfp.useTemporal == null) {\n gfp.useTemporal = false;\n }\n p2.apply_preset(gfp, 500 - gfp.VBR_q * 10, 0);\n if (gfp.quality < 0)\n gfp.quality = LAME_DEFAULT_QUALITY;\n if (gfp.quality < 5)\n gfp.quality = 0;\n if (gfp.quality > 5)\n gfp.quality = 5;\n gfc.PSY.mask_adjust = gfp.maskingadjust;\n gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n if (gfp.experimentalY)\n gfc.sfb21_extra = false;\n else\n gfc.sfb21_extra = gfp.out_samplerate > 44e3;\n gfc.iteration_loop = new VBRNewIterationLoop(qu);\n break;\n }\n case VbrMode$3.vbr_rh: {\n p2.apply_preset(gfp, 500 - gfp.VBR_q * 10, 0);\n gfc.PSY.mask_adjust = gfp.maskingadjust;\n gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n if (gfp.experimentalY)\n gfc.sfb21_extra = false;\n else\n gfc.sfb21_extra = gfp.out_samplerate > 44e3;\n if (gfp.quality > 6)\n gfp.quality = 6;\n if (gfp.quality < 0)\n gfp.quality = LAME_DEFAULT_QUALITY;\n gfc.iteration_loop = new VBROldIterationLoop(qu);\n break;\n }\n default: {\n var vbrmode;\n gfc.sfb21_extra = false;\n if (gfp.quality < 0)\n gfp.quality = LAME_DEFAULT_QUALITY;\n vbrmode = gfp.VBR;\n if (vbrmode == VbrMode$3.vbr_off)\n gfp.VBR_mean_bitrate_kbps = gfp.brate;\n p2.apply_preset(gfp, gfp.VBR_mean_bitrate_kbps, 0);\n gfp.VBR = vbrmode;\n gfc.PSY.mask_adjust = gfp.maskingadjust;\n gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n if (vbrmode == VbrMode$3.vbr_off) {\n gfc.iteration_loop = new CBRNewIterationLoop(qu);\n } else {\n gfc.iteration_loop = new ABRIterationLoop(qu);\n }\n break;\n }\n }\n assert$4(gfp.scale >= 0);\n if (gfp.VBR != VbrMode$3.vbr_off) {\n gfc.VBR_min_bitrate = 1;\n gfc.VBR_max_bitrate = 14;\n if (gfp.out_samplerate < 16e3)\n gfc.VBR_max_bitrate = 8;\n if (gfp.VBR_min_bitrate_kbps != 0) {\n gfp.VBR_min_bitrate_kbps = FindNearestBitrate(\n gfp.VBR_min_bitrate_kbps,\n gfp.version,\n gfp.out_samplerate\n );\n gfc.VBR_min_bitrate = BitrateIndex(\n gfp.VBR_min_bitrate_kbps,\n gfp.version,\n gfp.out_samplerate\n );\n if (gfc.VBR_min_bitrate < 0)\n return -1;\n }\n if (gfp.VBR_max_bitrate_kbps != 0) {\n gfp.VBR_max_bitrate_kbps = FindNearestBitrate(\n gfp.VBR_max_bitrate_kbps,\n gfp.version,\n gfp.out_samplerate\n );\n gfc.VBR_max_bitrate = BitrateIndex(\n gfp.VBR_max_bitrate_kbps,\n gfp.version,\n gfp.out_samplerate\n );\n if (gfc.VBR_max_bitrate < 0)\n return -1;\n }\n gfp.VBR_min_bitrate_kbps = Tables$1.bitrate_table[gfp.version][gfc.VBR_min_bitrate];\n gfp.VBR_max_bitrate_kbps = Tables$1.bitrate_table[gfp.version][gfc.VBR_max_bitrate];\n gfp.VBR_mean_bitrate_kbps = Math.min(\n Tables$1.bitrate_table[gfp.version][gfc.VBR_max_bitrate],\n gfp.VBR_mean_bitrate_kbps\n );\n gfp.VBR_mean_bitrate_kbps = Math.max(\n Tables$1.bitrate_table[gfp.version][gfc.VBR_min_bitrate],\n gfp.VBR_mean_bitrate_kbps\n );\n }\n if (gfp.tune) {\n gfc.PSY.mask_adjust += gfp.tune_value_a;\n gfc.PSY.mask_adjust_short += gfp.tune_value_a;\n }\n lame_init_qval(gfp);\n assert$4(gfp.scale >= 0);\n if (gfp.athaa_type < 0)\n gfc.ATH.useAdjust = 3;\n else\n gfc.ATH.useAdjust = gfp.athaa_type;\n gfc.ATH.aaSensitivityP = Math.pow(10, gfp.athaa_sensitivity / -10);\n if (gfp.short_blocks == null) {\n gfp.short_blocks = ShortBlock$1.short_block_allowed;\n }\n if (gfp.short_blocks == ShortBlock$1.short_block_allowed && (gfp.mode == MPEGMode.JOINT_STEREO || gfp.mode == MPEGMode.STEREO)) {\n gfp.short_blocks = ShortBlock$1.short_block_coupled;\n }\n if (gfp.quant_comp < 0)\n gfp.quant_comp = 1;\n if (gfp.quant_comp_short < 0)\n gfp.quant_comp_short = 0;\n if (gfp.msfix < 0)\n gfp.msfix = 0;\n gfp.exp_nspsytune = gfp.exp_nspsytune | 1;\n if (gfp.internal_flags.nsPsy.attackthre < 0) {\n gfp.internal_flags.nsPsy.attackthre = PsyModel.NSATTACKTHRE;\n }\n if (gfp.internal_flags.nsPsy.attackthre_s < 0) {\n gfp.internal_flags.nsPsy.attackthre_s = PsyModel.NSATTACKTHRE_S;\n }\n assert$4(gfp.scale >= 0);\n if (gfp.scale < 0)\n gfp.scale = 1;\n if (gfp.ATHtype < 0)\n gfp.ATHtype = 4;\n if (gfp.ATHcurve < 0)\n gfp.ATHcurve = 4;\n if (gfp.athaa_loudapprox < 0)\n gfp.athaa_loudapprox = 2;\n if (gfp.interChRatio < 0)\n gfp.interChRatio = 0;\n if (gfp.useTemporal == null)\n gfp.useTemporal = true;\n gfc.slot_lag = gfc.frac_SpF = 0;\n if (gfp.VBR == VbrMode$3.vbr_off) {\n gfc.slot_lag = gfc.frac_SpF = (gfp.version + 1) * 72e3 * gfp.brate % gfp.out_samplerate | 0;\n }\n qupvt.iteration_init(gfp);\n psy.psymodel_init(gfp);\n assert$4(gfp.scale >= 0);\n return 0;\n };\n function update_inbuffer_size(gfc, nsamples) {\n if (gfc.in_buffer_0 == null || gfc.in_buffer_nsamples < nsamples) {\n gfc.in_buffer_0 = new_float$2(nsamples);\n gfc.in_buffer_1 = new_float$2(nsamples);\n gfc.in_buffer_nsamples = nsamples;\n }\n }\n this.lame_encode_flush = function(gfp, mp3buffer, mp3bufferPos, mp3buffer_size) {\n var gfc = gfp.internal_flags;\n var buffer = new_short_n([2, 1152]);\n var imp3 = 0;\n var mp3count;\n var mp3buffer_size_remaining;\n var end_padding;\n var frames_left;\n var samples_to_encode = gfc.mf_samples_to_encode - Encoder.POSTDELAY;\n var mf_needed = calcNeeded(gfp);\n if (gfc.mf_samples_to_encode < 1) {\n return 0;\n }\n mp3count = 0;\n if (gfp.in_samplerate != gfp.out_samplerate) {\n samples_to_encode += 16 * gfp.out_samplerate / gfp.in_samplerate;\n }\n end_padding = gfp.framesize - samples_to_encode % gfp.framesize;\n if (end_padding < 576)\n end_padding += gfp.framesize;\n gfp.encoder_padding = end_padding;\n frames_left = (samples_to_encode + end_padding) / gfp.framesize;\n while (frames_left > 0 && imp3 >= 0) {\n var bunch = mf_needed - gfc.mf_size;\n var frame_num = gfp.frameNum;\n bunch *= gfp.in_samplerate;\n bunch /= gfp.out_samplerate;\n if (bunch > 1152)\n bunch = 1152;\n if (bunch < 1)\n bunch = 1;\n mp3buffer_size_remaining = mp3buffer_size - mp3count;\n if (mp3buffer_size == 0)\n mp3buffer_size_remaining = 0;\n imp3 = this.lame_encode_buffer(\n gfp,\n buffer[0],\n buffer[1],\n bunch,\n mp3buffer,\n mp3bufferPos,\n mp3buffer_size_remaining\n );\n mp3bufferPos += imp3;\n mp3count += imp3;\n frames_left -= frame_num != gfp.frameNum ? 1 : 0;\n }\n gfc.mf_samples_to_encode = 0;\n if (imp3 < 0) {\n return imp3;\n }\n mp3buffer_size_remaining = mp3buffer_size - mp3count;\n if (mp3buffer_size == 0)\n mp3buffer_size_remaining = 0;\n bs.flush_bitstream(gfp);\n imp3 = bs.copy_buffer(\n gfc,\n mp3buffer,\n mp3bufferPos,\n mp3buffer_size_remaining,\n 1\n );\n if (imp3 < 0) {\n return imp3;\n }\n mp3bufferPos += imp3;\n mp3count += imp3;\n mp3buffer_size_remaining = mp3buffer_size - mp3count;\n if (mp3buffer_size == 0)\n mp3buffer_size_remaining = 0;\n if (gfp.write_id3tag_automatic) {\n id3.id3tag_write_v1(gfp);\n imp3 = bs.copy_buffer(\n gfc,\n mp3buffer,\n mp3bufferPos,\n mp3buffer_size_remaining,\n 0\n );\n if (imp3 < 0) {\n return imp3;\n }\n mp3count += imp3;\n }\n return mp3count;\n };\n this.lame_encode_buffer = function(gfp, buffer_l, buffer_r, nsamples, mp3buf, mp3bufPos, mp3buf_size) {\n var gfc = gfp.internal_flags;\n var in_buffer = [null, null];\n if (gfc.Class_ID != LAME_ID)\n return -3;\n if (nsamples == 0)\n return 0;\n update_inbuffer_size(gfc, nsamples);\n in_buffer[0] = gfc.in_buffer_0;\n in_buffer[1] = gfc.in_buffer_1;\n for (var i = 0; i < nsamples; i++) {\n in_buffer[0][i] = buffer_l[i];\n if (gfc.channels_in > 1)\n in_buffer[1][i] = buffer_r[i];\n }\n return lame_encode_buffer_sample(\n gfp,\n in_buffer[0],\n in_buffer[1],\n nsamples,\n mp3buf,\n mp3bufPos,\n mp3buf_size\n );\n };\n function calcNeeded(gfp) {\n var mf_needed = Encoder.BLKSIZE + gfp.framesize - Encoder.FFTOFFSET;\n mf_needed = Math.max(mf_needed, 512 + gfp.framesize - 32);\n return mf_needed;\n }\n function lame_encode_buffer_sample(gfp, buffer_l, buffer_r, nsamples, mp3buf, mp3bufPos, mp3buf_size) {\n var gfc = gfp.internal_flags;\n var mp3size = 0;\n var ret;\n var i;\n var ch;\n var mf_needed;\n var mp3out;\n var mfbuf = [null, null];\n var in_buffer = [null, null];\n if (gfc.Class_ID != LAME_ID)\n return -3;\n if (nsamples == 0)\n return 0;\n mp3out = bs.copy_buffer(gfc, mp3buf, mp3bufPos, mp3buf_size, 0);\n if (mp3out < 0)\n return mp3out;\n mp3bufPos += mp3out;\n mp3size += mp3out;\n in_buffer[0] = buffer_l;\n in_buffer[1] = buffer_r;\n if (BitStream$1.NEQ(gfp.scale, 0) && BitStream$1.NEQ(gfp.scale, 1)) {\n for (i = 0; i < nsamples; ++i) {\n in_buffer[0][i] *= gfp.scale;\n if (gfc.channels_out == 2)\n in_buffer[1][i] *= gfp.scale;\n }\n }\n if (BitStream$1.NEQ(gfp.scale_left, 0) && BitStream$1.NEQ(gfp.scale_left, 1)) {\n for (i = 0; i < nsamples; ++i) {\n in_buffer[0][i] *= gfp.scale_left;\n }\n }\n if (BitStream$1.NEQ(gfp.scale_right, 0) && BitStream$1.NEQ(gfp.scale_right, 1)) {\n for (i = 0; i < nsamples; ++i) {\n in_buffer[1][i] *= gfp.scale_right;\n }\n }\n if (gfp.num_channels == 2 && gfc.channels_out == 1) {\n for (i = 0; i < nsamples; ++i) {\n in_buffer[0][i] = 0.5 * (in_buffer[0][i] + in_buffer[1][i]);\n in_buffer[1][i] = 0;\n }\n }\n mf_needed = calcNeeded(gfp);\n mfbuf[0] = gfc.mfbuf[0];\n mfbuf[1] = gfc.mfbuf[1];\n var in_bufferPos = 0;\n while (nsamples > 0) {\n var in_buffer_ptr = [null, null];\n var n_in = 0;\n var n_out = 0;\n in_buffer_ptr[0] = in_buffer[0];\n in_buffer_ptr[1] = in_buffer[1];\n var inOut = new InOut();\n fill_buffer(gfp, mfbuf, in_buffer_ptr, in_bufferPos, nsamples, inOut);\n n_in = inOut.n_in;\n n_out = inOut.n_out;\n if (gfc.findReplayGain && !gfc.decode_on_the_fly) {\n if (ga.AnalyzeSamples(\n gfc.rgdata,\n mfbuf[0],\n gfc.mf_size,\n mfbuf[1],\n gfc.mf_size,\n n_out,\n gfc.channels_out\n ) == GainAnalysis.GAIN_ANALYSIS_ERROR) {\n return -6;\n }\n }\n nsamples -= n_in;\n in_bufferPos += n_in;\n if (gfc.channels_out == 2)\n ;\n gfc.mf_size += n_out;\n assert$4(gfc.mf_size <= LameInternalFlags$1.MFSIZE);\n if (gfc.mf_samples_to_encode < 1) {\n gfc.mf_samples_to_encode = Encoder.ENCDELAY + Encoder.POSTDELAY;\n }\n gfc.mf_samples_to_encode += n_out;\n if (gfc.mf_size >= mf_needed) {\n var buf_size = mp3buf_size - mp3size;\n if (mp3buf_size == 0)\n buf_size = 0;\n ret = lame_encode_frame(\n gfp,\n mfbuf[0],\n mfbuf[1],\n mp3buf,\n mp3bufPos,\n buf_size\n );\n if (ret < 0)\n return ret;\n mp3bufPos += ret;\n mp3size += ret;\n gfc.mf_size -= gfp.framesize;\n gfc.mf_samples_to_encode -= gfp.framesize;\n for (ch = 0; ch < gfc.channels_out; ch++) {\n for (i = 0; i < gfc.mf_size; i++) {\n mfbuf[ch][i] = mfbuf[ch][i + gfp.framesize];\n }\n }\n }\n }\n return mp3size;\n }\n function lame_encode_frame(gfp, inbuf_l, inbuf_r, mp3buf, mp3bufPos, mp3buf_size) {\n var ret = self2.enc.lame_encode_mp3_frame(\n gfp,\n inbuf_l,\n inbuf_r,\n mp3buf,\n mp3bufPos,\n mp3buf_size\n );\n gfp.frameNum++;\n return ret;\n }\n function InOut() {\n this.n_in = 0;\n this.n_out = 0;\n }\n function NumUsed() {\n this.num_used = 0;\n }\n function gcd(i, j) {\n return j != 0 ? gcd(j, i % j) : i;\n }\n function blackman(x, fcn, l) {\n var wcn = Math.PI * fcn;\n x /= l;\n if (x < 0)\n x = 0;\n if (x > 1)\n x = 1;\n var x2 = x - 0.5;\n var bkwn = 0.42 - 0.5 * Math.cos(2 * x * Math.PI) + 0.08 * Math.cos(4 * x * Math.PI);\n if (Math.abs(x2) < 1e-9)\n return wcn / Math.PI;\n else\n return bkwn * Math.sin(l * wcn * x2) / (Math.PI * l * x2);\n }\n function fill_buffer_resample(gfp, outbuf, outbufPos, desired_len, inbuf, in_bufferPos, len, num_used, ch) {\n var gfc = gfp.internal_flags;\n var i;\n var j = 0;\n var k;\n var bpc = gfp.out_samplerate / gcd(gfp.out_samplerate, gfp.in_samplerate);\n if (bpc > LameInternalFlags$1.BPC)\n bpc = LameInternalFlags$1.BPC;\n var intratio = Math.abs(gfc.resample_ratio - Math.floor(0.5 + gfc.resample_ratio)) < 1e-4 ? 1 : 0;\n var fcn = 1 / gfc.resample_ratio;\n if (fcn > 1)\n fcn = 1;\n var filter_l = 31;\n if (filter_l % 2 == 0)\n --filter_l;\n filter_l += intratio;\n var BLACKSIZE = filter_l + 1;\n if (gfc.fill_buffer_resample_init == 0) {\n gfc.inbuf_old[0] = new_float$2(BLACKSIZE);\n gfc.inbuf_old[1] = new_float$2(BLACKSIZE);\n for (i = 0; i <= 2 * bpc; ++i)\n gfc.blackfilt[i] = new_float$2(BLACKSIZE);\n gfc.itime[0] = 0;\n gfc.itime[1] = 0;\n for (j = 0; j <= 2 * bpc; j++) {\n var sum = 0;\n var offset = (j - bpc) / (2 * bpc);\n for (i = 0; i <= filter_l; i++) {\n sum += gfc.blackfilt[j][i] = blackman(i - offset, fcn, filter_l);\n }\n for (i = 0; i <= filter_l; i++)\n gfc.blackfilt[j][i] /= sum;\n }\n gfc.fill_buffer_resample_init = 1;\n }\n var inbuf_old = gfc.inbuf_old[ch];\n for (k = 0; k < desired_len; k++) {\n var time0;\n var joff;\n time0 = k * gfc.resample_ratio;\n j = 0 | Math.floor(time0 - gfc.itime[ch]);\n if (filter_l + j - filter_l / 2 >= len)\n break;\n var offset = time0 - gfc.itime[ch] - (j + 0.5 * (filter_l % 2));\n joff = 0 | Math.floor(offset * 2 * bpc + bpc + 0.5);\n var xvalue = 0;\n for (i = 0; i <= filter_l; ++i) {\n var j2 = 0 | i + j - filter_l / 2;\n var y;\n y = j2 < 0 ? inbuf_old[BLACKSIZE + j2] : inbuf[in_bufferPos + j2];\n xvalue += y * gfc.blackfilt[joff][i];\n }\n outbuf[outbufPos + k] = xvalue;\n }\n num_used.num_used = Math.min(len, filter_l + j - filter_l / 2);\n gfc.itime[ch] += num_used.num_used - k * gfc.resample_ratio;\n if (num_used.num_used >= BLACKSIZE) {\n for (i = 0; i < BLACKSIZE; i++) {\n inbuf_old[i] = inbuf[in_bufferPos + num_used.num_used + i - BLACKSIZE];\n }\n } else {\n var n_shift = BLACKSIZE - num_used.num_used;\n for (i = 0; i < n_shift; ++i) {\n inbuf_old[i] = inbuf_old[i + num_used.num_used];\n }\n for (j = 0; i < BLACKSIZE; ++i, ++j) {\n inbuf_old[i] = inbuf[in_bufferPos + j];\n }\n assert$4(j == num_used.num_used);\n }\n return k;\n }\n function fill_buffer(gfp, mfbuf, in_buffer, in_bufferPos, nsamples, io) {\n var gfc = gfp.internal_flags;\n if (gfc.resample_ratio < 0.9999 || gfc.resample_ratio > 1.0001) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n var numUsed = new NumUsed();\n io.n_out = fill_buffer_resample(\n gfp,\n mfbuf[ch],\n gfc.mf_size,\n gfp.framesize,\n in_buffer[ch],\n in_bufferPos,\n nsamples,\n numUsed,\n ch\n );\n io.n_in = numUsed.num_used;\n }\n } else {\n io.n_out = Math.min(gfp.framesize, nsamples);\n io.n_in = io.n_out;\n for (var i = 0; i < io.n_out; ++i) {\n mfbuf[0][gfc.mf_size + i] = in_buffer[0][in_bufferPos + i];\n if (gfc.channels_out == 2) {\n mfbuf[1][gfc.mf_size + i] = in_buffer[1][in_bufferPos + i];\n }\n }\n }\n }\n}\nvar VbrMode$2 = common.VbrMode;\nfunction Presets() {\n function VBRPresets(qual, comp, compS, y, shThreshold, shThresholdS, adj, adjShort, lower, curve, sens, inter, joint, mod, fix) {\n this.vbr_q = qual;\n this.quant_comp = comp;\n this.quant_comp_s = compS;\n this.expY = y;\n this.st_lrm = shThreshold;\n this.st_s = shThresholdS;\n this.masking_adj = adj;\n this.masking_adj_short = adjShort;\n this.ath_lower = lower;\n this.ath_curve = curve;\n this.ath_sensitivity = sens;\n this.interch = inter;\n this.safejoint = joint;\n this.sfb21mod = mod;\n this.msfix = fix;\n }\n function ABRPresets(kbps, comp, compS, joint, fix, shThreshold, shThresholdS, bass, sc, mask, lower, curve, interCh, sfScale) {\n this.quant_comp = comp;\n this.quant_comp_s = compS;\n this.safejoint = joint;\n this.nsmsfix = fix;\n this.st_lrm = shThreshold;\n this.st_s = shThresholdS;\n this.nsbass = bass;\n this.scale = sc;\n this.masking_adj = mask;\n this.ath_lower = lower;\n this.ath_curve = curve;\n this.interch = interCh;\n this.sfscale = sfScale;\n }\n var lame;\n this.setModules = function(_lame) {\n lame = _lame;\n };\n var vbr_old_switch_map = [\n new VBRPresets(\n 0,\n 9,\n 9,\n 0,\n 5.2,\n 125,\n -4.2,\n -6.3,\n 4.8,\n 1,\n 0,\n 0,\n 2,\n 21,\n 0.97\n ),\n new VBRPresets(\n 1,\n 9,\n 9,\n 0,\n 5.3,\n 125,\n -3.6,\n -5.6,\n 4.5,\n 1.5,\n 0,\n 0,\n 2,\n 21,\n 1.35\n ),\n new VBRPresets(\n 2,\n 9,\n 9,\n 0,\n 5.6,\n 125,\n -2.2,\n -3.5,\n 2.8,\n 2,\n 0,\n 0,\n 2,\n 21,\n 1.49\n ),\n new VBRPresets(\n 3,\n 9,\n 9,\n 1,\n 5.8,\n 130,\n -1.8,\n -2.8,\n 2.6,\n 3,\n -4,\n 0,\n 2,\n 20,\n 1.64\n ),\n new VBRPresets(\n 4,\n 9,\n 9,\n 1,\n 6,\n 135,\n -0.7,\n -1.1,\n 1.1,\n 3.5,\n -8,\n 0,\n 2,\n 0,\n 1.79\n ),\n new VBRPresets(\n 5,\n 9,\n 9,\n 1,\n 6.4,\n 140,\n 0.5,\n 0.4,\n -7.5,\n 4,\n -12,\n 2e-4,\n 0,\n 0,\n 1.95\n ),\n new VBRPresets(\n 6,\n 9,\n 9,\n 1,\n 6.6,\n 145,\n 0.67,\n 0.65,\n -14.7,\n 6.5,\n -19,\n 4e-4,\n 0,\n 0,\n 2.3\n ),\n new VBRPresets(\n 7,\n 9,\n 9,\n 1,\n 6.6,\n 145,\n 0.8,\n 0.75,\n -19.7,\n 8,\n -22,\n 6e-4,\n 0,\n 0,\n 2.7\n ),\n new VBRPresets(\n 8,\n 9,\n 9,\n 1,\n 6.6,\n 145,\n 1.2,\n 1.15,\n -27.5,\n 10,\n -23,\n 7e-4,\n 0,\n 0,\n 0\n ),\n new VBRPresets(\n 9,\n 9,\n 9,\n 1,\n 6.6,\n 145,\n 1.6,\n 1.6,\n -36,\n 11,\n -25,\n 8e-4,\n 0,\n 0,\n 0\n ),\n new VBRPresets(\n 10,\n 9,\n 9,\n 1,\n 6.6,\n 145,\n 2,\n 2,\n -36,\n 12,\n -25,\n 8e-4,\n 0,\n 0,\n 0\n )\n ];\n var vbr_psy_switch_map = [\n new VBRPresets(\n 0,\n 9,\n 9,\n 0,\n 4.2,\n 25,\n -7,\n -4,\n 7.5,\n 1,\n 0,\n 0,\n 2,\n 26,\n 0.97\n ),\n new VBRPresets(\n 1,\n 9,\n 9,\n 0,\n 4.2,\n 25,\n -5.6,\n -3.6,\n 4.5,\n 1.5,\n 0,\n 0,\n 2,\n 21,\n 1.35\n ),\n new VBRPresets(2, 9, 9, 0, 4.2, 25, -4.4, -1.8, 2, 2, 0, 0, 2, 18, 1.49),\n new VBRPresets(\n 3,\n 9,\n 9,\n 1,\n 4.2,\n 25,\n -3.4,\n -1.25,\n 1.1,\n 3,\n -4,\n 0,\n 2,\n 15,\n 1.64\n ),\n new VBRPresets(4, 9, 9, 1, 4.2, 25, -2.2, 0.1, 0, 3.5, -8, 0, 2, 0, 1.79),\n new VBRPresets(\n 5,\n 9,\n 9,\n 1,\n 4.2,\n 25,\n -1,\n 1.65,\n -7.7,\n 4,\n -12,\n 2e-4,\n 0,\n 0,\n 1.95\n ),\n new VBRPresets(\n 6,\n 9,\n 9,\n 1,\n 4.2,\n 25,\n -0,\n 2.47,\n -7.7,\n 6.5,\n -19,\n 4e-4,\n 0,\n 0,\n 2\n ),\n new VBRPresets(\n 7,\n 9,\n 9,\n 1,\n 4.2,\n 25,\n 0.5,\n 2,\n -14.5,\n 8,\n -22,\n 6e-4,\n 0,\n 0,\n 2\n ),\n new VBRPresets(\n 8,\n 9,\n 9,\n 1,\n 4.2,\n 25,\n 1,\n 2.4,\n -22,\n 10,\n -23,\n 7e-4,\n 0,\n 0,\n 2\n ),\n new VBRPresets(\n 9,\n 9,\n 9,\n 1,\n 4.2,\n 25,\n 1.5,\n 2.95,\n -30,\n 11,\n -25,\n 8e-4,\n 0,\n 0,\n 2\n ),\n new VBRPresets(\n 10,\n 9,\n 9,\n 1,\n 4.2,\n 25,\n 2,\n 2.95,\n -36,\n 12,\n -30,\n 8e-4,\n 0,\n 0,\n 2\n )\n ];\n function apply_vbr_preset(gfp, a, enforce) {\n var vbr_preset = gfp.VBR == VbrMode$2.vbr_rh ? vbr_old_switch_map : vbr_psy_switch_map;\n var x = gfp.VBR_q_frac;\n var p2 = vbr_preset[a];\n var q = vbr_preset[a + 1];\n var set2 = p2;\n p2.st_lrm = p2.st_lrm + x * (q.st_lrm - p2.st_lrm);\n p2.st_s = p2.st_s + x * (q.st_s - p2.st_s);\n p2.masking_adj = p2.masking_adj + x * (q.masking_adj - p2.masking_adj);\n p2.masking_adj_short = p2.masking_adj_short + x * (q.masking_adj_short - p2.masking_adj_short);\n p2.ath_lower = p2.ath_lower + x * (q.ath_lower - p2.ath_lower);\n p2.ath_curve = p2.ath_curve + x * (q.ath_curve - p2.ath_curve);\n p2.ath_sensitivity = p2.ath_sensitivity + x * (q.ath_sensitivity - p2.ath_sensitivity);\n p2.interch = p2.interch + x * (q.interch - p2.interch);\n p2.msfix = p2.msfix + x * (q.msfix - p2.msfix);\n lame_set_VBR_q(gfp, set2.vbr_q);\n if (enforce != 0)\n gfp.quant_comp = set2.quant_comp;\n else if (!(Math.abs(gfp.quant_comp - -1) > 0)) {\n gfp.quant_comp = set2.quant_comp;\n }\n if (enforce != 0)\n gfp.quant_comp_short = set2.quant_comp_s;\n else if (!(Math.abs(gfp.quant_comp_short - -1) > 0)) {\n gfp.quant_comp_short = set2.quant_comp_s;\n }\n if (set2.expY != 0) {\n gfp.experimentalY = set2.expY != 0;\n }\n if (enforce != 0)\n gfp.internal_flags.nsPsy.attackthre = set2.st_lrm;\n else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre - -1) > 0)) {\n gfp.internal_flags.nsPsy.attackthre = set2.st_lrm;\n }\n if (enforce != 0)\n gfp.internal_flags.nsPsy.attackthre_s = set2.st_s;\n else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre_s - -1) > 0)) {\n gfp.internal_flags.nsPsy.attackthre_s = set2.st_s;\n }\n if (enforce != 0)\n gfp.maskingadjust = set2.masking_adj;\n else if (!(Math.abs(gfp.maskingadjust - 0) > 0)) {\n gfp.maskingadjust = set2.masking_adj;\n }\n if (enforce != 0)\n gfp.maskingadjust_short = set2.masking_adj_short;\n else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0)) {\n gfp.maskingadjust_short = set2.masking_adj_short;\n }\n if (enforce != 0)\n gfp.ATHlower = -set2.ath_lower / 10;\n else if (!(Math.abs(-gfp.ATHlower * 10 - 0) > 0)) {\n gfp.ATHlower = -set2.ath_lower / 10;\n }\n if (enforce != 0)\n gfp.ATHcurve = set2.ath_curve;\n else if (!(Math.abs(gfp.ATHcurve - -1) > 0))\n gfp.ATHcurve = set2.ath_curve;\n if (enforce != 0)\n gfp.athaa_sensitivity = set2.ath_sensitivity;\n else if (!(Math.abs(gfp.athaa_sensitivity - -1) > 0)) {\n gfp.athaa_sensitivity = set2.ath_sensitivity;\n }\n if (set2.interch > 0) {\n if (enforce != 0)\n gfp.interChRatio = set2.interch;\n else if (!(Math.abs(gfp.interChRatio - -1) > 0)) {\n gfp.interChRatio = set2.interch;\n }\n }\n if (set2.safejoint > 0) {\n gfp.exp_nspsytune = gfp.exp_nspsytune | set2.safejoint;\n }\n if (set2.sfb21mod > 0) {\n gfp.exp_nspsytune = gfp.exp_nspsytune | set2.sfb21mod << 20;\n }\n if (enforce != 0)\n gfp.msfix = set2.msfix;\n else if (!(Math.abs(gfp.msfix - -1) > 0))\n gfp.msfix = set2.msfix;\n if (enforce == 0) {\n gfp.VBR_q = a;\n gfp.VBR_q_frac = x;\n }\n }\n var abr_switch_map = [\n new ABRPresets(\n 8,\n 9,\n 9,\n 0,\n 0,\n 6.6,\n 145,\n 0,\n 0.95,\n 0,\n -30,\n 11,\n 12e-4,\n 1\n ),\n new ABRPresets(\n 16,\n 9,\n 9,\n 0,\n 0,\n 6.6,\n 145,\n 0,\n 0.95,\n 0,\n -25,\n 11,\n 1e-3,\n 1\n ),\n new ABRPresets(\n 24,\n 9,\n 9,\n 0,\n 0,\n 6.6,\n 145,\n 0,\n 0.95,\n 0,\n -20,\n 11,\n 1e-3,\n 1\n ),\n new ABRPresets(\n 32,\n 9,\n 9,\n 0,\n 0,\n 6.6,\n 145,\n 0,\n 0.95,\n 0,\n -15,\n 11,\n 1e-3,\n 1\n ),\n new ABRPresets(\n 40,\n 9,\n 9,\n 0,\n 0,\n 6.6,\n 145,\n 0,\n 0.95,\n 0,\n -10,\n 11,\n 9e-4,\n 1\n ),\n new ABRPresets(\n 48,\n 9,\n 9,\n 0,\n 0,\n 6.6,\n 145,\n 0,\n 0.95,\n 0,\n -10,\n 11,\n 9e-4,\n 1\n ),\n new ABRPresets(\n 56,\n 9,\n 9,\n 0,\n 0,\n 6.6,\n 145,\n 0,\n 0.95,\n 0,\n -6,\n 11,\n 8e-4,\n 1\n ),\n new ABRPresets(\n 64,\n 9,\n 9,\n 0,\n 0,\n 6.6,\n 145,\n 0,\n 0.95,\n 0,\n -2,\n 11,\n 8e-4,\n 1\n ),\n new ABRPresets(\n 80,\n 9,\n 9,\n 0,\n 0,\n 6.6,\n 145,\n 0,\n 0.95,\n 0,\n 0,\n 8,\n 7e-4,\n 1\n ),\n new ABRPresets(\n 96,\n 9,\n 9,\n 0,\n 2.5,\n 6.6,\n 145,\n 0,\n 0.95,\n 0,\n 1,\n 5.5,\n 6e-4,\n 1\n ),\n new ABRPresets(\n 112,\n 9,\n 9,\n 0,\n 2.25,\n 6.6,\n 145,\n 0,\n 0.95,\n 0,\n 2,\n 4.5,\n 5e-4,\n 1\n ),\n new ABRPresets(\n 128,\n 9,\n 9,\n 0,\n 1.95,\n 6.4,\n 140,\n 0,\n 0.95,\n 0,\n 3,\n 4,\n 2e-4,\n 1\n ),\n new ABRPresets(\n 160,\n 9,\n 9,\n 1,\n 1.79,\n 6,\n 135,\n 0,\n 0.95,\n -2,\n 5,\n 3.5,\n 0,\n 1\n ),\n new ABRPresets(\n 192,\n 9,\n 9,\n 1,\n 1.49,\n 5.6,\n 125,\n 0,\n 0.97,\n -4,\n 7,\n 3,\n 0,\n 0\n ),\n new ABRPresets(\n 224,\n 9,\n 9,\n 1,\n 1.25,\n 5.2,\n 125,\n 0,\n 0.98,\n -6,\n 9,\n 2,\n 0,\n 0\n ),\n new ABRPresets(\n 256,\n 9,\n 9,\n 1,\n 0.97,\n 5.2,\n 125,\n 0,\n 1,\n -8,\n 10,\n 1,\n 0,\n 0\n ),\n new ABRPresets(\n 320,\n 9,\n 9,\n 1,\n 0.9,\n 5.2,\n 125,\n 0,\n 1,\n -10,\n 12,\n 0,\n 0,\n 0\n )\n ];\n function apply_abr_preset(gfp, preset, enforce) {\n var actual_bitrate = preset;\n var r = lame.nearestBitrateFullIndex(preset);\n gfp.VBR = VbrMode$2.vbr_abr;\n gfp.VBR_mean_bitrate_kbps = actual_bitrate;\n gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps, 320);\n gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps, 8);\n gfp.brate = gfp.VBR_mean_bitrate_kbps;\n if (gfp.VBR_mean_bitrate_kbps > 320) {\n gfp.disable_reservoir = true;\n }\n if (abr_switch_map[r].safejoint > 0) {\n gfp.exp_nspsytune = gfp.exp_nspsytune | 2;\n }\n if (abr_switch_map[r].sfscale > 0) {\n gfp.internal_flags.noise_shaping = 2;\n }\n if (Math.abs(abr_switch_map[r].nsbass) > 0) {\n var k = int(abr_switch_map[r].nsbass * 4);\n if (k < 0)\n k += 64;\n gfp.exp_nspsytune = gfp.exp_nspsytune | k << 2;\n }\n if (enforce != 0)\n gfp.quant_comp = abr_switch_map[r].quant_comp;\n else if (!(Math.abs(gfp.quant_comp - -1) > 0)) {\n gfp.quant_comp = abr_switch_map[r].quant_comp;\n }\n if (enforce != 0)\n gfp.quant_comp_short = abr_switch_map[r].quant_comp_s;\n else if (!(Math.abs(gfp.quant_comp_short - -1) > 0)) {\n gfp.quant_comp_short = abr_switch_map[r].quant_comp_s;\n }\n if (enforce != 0)\n gfp.msfix = abr_switch_map[r].nsmsfix;\n else if (!(Math.abs(gfp.msfix - -1) > 0)) {\n gfp.msfix = abr_switch_map[r].nsmsfix;\n }\n if (enforce != 0) {\n gfp.internal_flags.nsPsy.attackthre = abr_switch_map[r].st_lrm;\n } else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre - -1) > 0)) {\n gfp.internal_flags.nsPsy.attackthre = abr_switch_map[r].st_lrm;\n }\n if (enforce != 0) {\n gfp.internal_flags.nsPsy.attackthre_s = abr_switch_map[r].st_s;\n } else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre_s - -1) > 0)) {\n gfp.internal_flags.nsPsy.attackthre_s = abr_switch_map[r].st_s;\n }\n if (enforce != 0)\n gfp.scale = abr_switch_map[r].scale;\n else if (!(Math.abs(gfp.scale - -1) > 0)) {\n gfp.scale = abr_switch_map[r].scale;\n }\n if (enforce != 0)\n gfp.maskingadjust = abr_switch_map[r].masking_adj;\n else if (!(Math.abs(gfp.maskingadjust - 0) > 0)) {\n gfp.maskingadjust = abr_switch_map[r].masking_adj;\n }\n if (abr_switch_map[r].masking_adj > 0) {\n if (enforce != 0) {\n gfp.maskingadjust_short = abr_switch_map[r].masking_adj * 0.9;\n } else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0)) {\n gfp.maskingadjust_short = abr_switch_map[r].masking_adj * 0.9;\n }\n } else {\n if (enforce != 0) {\n gfp.maskingadjust_short = abr_switch_map[r].masking_adj * 1.1;\n } else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0)) {\n gfp.maskingadjust_short = abr_switch_map[r].masking_adj * 1.1;\n }\n }\n if (enforce != 0)\n gfp.ATHlower = -abr_switch_map[r].ath_lower / 10;\n else if (!(Math.abs(-gfp.ATHlower * 10 - 0) > 0)) {\n gfp.ATHlower = -abr_switch_map[r].ath_lower / 10;\n }\n if (enforce != 0)\n gfp.ATHcurve = abr_switch_map[r].ath_curve;\n else if (!(Math.abs(gfp.ATHcurve - -1) > 0)) {\n gfp.ATHcurve = abr_switch_map[r].ath_curve;\n }\n if (enforce != 0)\n gfp.interChRatio = abr_switch_map[r].interch;\n else if (!(Math.abs(gfp.interChRatio - -1) > 0)) {\n gfp.interChRatio = abr_switch_map[r].interch;\n }\n return preset;\n }\n this.apply_preset = function(gfp, preset, enforce) {\n switch (preset) {\n case Lame$1.R3MIX: {\n preset = Lame$1.V3;\n gfp.VBR = VbrMode$2.vbr_mtrh;\n break;\n }\n case Lame$1.MEDIUM: {\n preset = Lame$1.V4;\n gfp.VBR = VbrMode$2.vbr_rh;\n break;\n }\n case Lame$1.MEDIUM_FAST: {\n preset = Lame$1.V4;\n gfp.VBR = VbrMode$2.vbr_mtrh;\n break;\n }\n case Lame$1.STANDARD: {\n preset = Lame$1.V2;\n gfp.VBR = VbrMode$2.vbr_rh;\n break;\n }\n case Lame$1.STANDARD_FAST: {\n preset = Lame$1.V2;\n gfp.VBR = VbrMode$2.vbr_mtrh;\n break;\n }\n case Lame$1.EXTREME: {\n preset = Lame$1.V0;\n gfp.VBR = VbrMode$2.vbr_rh;\n break;\n }\n case Lame$1.EXTREME_FAST: {\n preset = Lame$1.V0;\n gfp.VBR = VbrMode$2.vbr_mtrh;\n break;\n }\n case Lame$1.INSANE: {\n preset = 320;\n gfp.preset = preset;\n apply_abr_preset(gfp, preset, enforce);\n gfp.VBR = VbrMode$2.vbr_off;\n return preset;\n }\n }\n gfp.preset = preset;\n {\n switch (preset) {\n case Lame$1.V9:\n apply_vbr_preset(gfp, 9, enforce);\n return preset;\n case Lame$1.V8:\n apply_vbr_preset(gfp, 8, enforce);\n return preset;\n case Lame$1.V7:\n apply_vbr_preset(gfp, 7, enforce);\n return preset;\n case Lame$1.V6:\n apply_vbr_preset(gfp, 6, enforce);\n return preset;\n case Lame$1.V5:\n apply_vbr_preset(gfp, 5, enforce);\n return preset;\n case Lame$1.V4:\n apply_vbr_preset(gfp, 4, enforce);\n return preset;\n case Lame$1.V3:\n apply_vbr_preset(gfp, 3, enforce);\n return preset;\n case Lame$1.V2:\n apply_vbr_preset(gfp, 2, enforce);\n return preset;\n case Lame$1.V1:\n apply_vbr_preset(gfp, 1, enforce);\n return preset;\n case Lame$1.V0:\n apply_vbr_preset(gfp, 0, enforce);\n return preset;\n }\n }\n if (preset >= 8 && preset <= 320) {\n return apply_abr_preset(gfp, preset, enforce);\n }\n gfp.preset = 0;\n return preset;\n };\n function lame_set_VBR_q(gfp, VBR_q) {\n var ret = 0;\n if (VBR_q < 0) {\n ret = -1;\n VBR_q = 0;\n }\n if (VBR_q > 9) {\n ret = -1;\n VBR_q = 9;\n }\n gfp.VBR_q = VBR_q;\n gfp.VBR_q_frac = 0;\n return ret;\n }\n}\nfunction VBRQuantize() {\n this.setModules = function(_qupvt, _tk) {\n };\n}\nfunction CalcNoiseResult$1() {\n this.over_noise = 0;\n this.tot_noise = 0;\n this.max_noise = 0;\n this.over_count = 0;\n this.over_SSD = 0;\n this.bits = 0;\n}\nvar new_float$1 = common.new_float;\nvar new_int = common.new_int;\nfunction CalcNoiseData() {\n this.global_gain = 0;\n this.sfb_count1 = 0;\n this.step = new_int(39);\n this.noise = new_float$1(39);\n this.noise_log = new_float$1(39);\n}\nvar System$1 = common.System;\nvar VbrMode$1 = common.VbrMode;\nvar Util = common.Util;\nvar Arrays$1 = common.Arrays;\nvar new_float = common.new_float;\nvar assert$3 = common.assert;\nfunction Quantize() {\n var bs;\n this.rv = null;\n var rv;\n this.qupvt = null;\n var qupvt;\n var vbr = new VBRQuantize();\n var tk;\n this.setModules = function(_bs, _rv, _qupvt, _tk) {\n bs = _bs;\n rv = _rv;\n this.rv = _rv;\n qupvt = _qupvt;\n this.qupvt = _qupvt;\n tk = _tk;\n vbr.setModules(qupvt, tk);\n };\n this.ms_convert = function(l3_side, gr) {\n for (var i = 0; i < 576; ++i) {\n var l = l3_side.tt[gr][0].xr[i];\n var r = l3_side.tt[gr][1].xr[i];\n l3_side.tt[gr][0].xr[i] = (l + r) * (Util.SQRT2 * 0.5);\n l3_side.tt[gr][1].xr[i] = (l - r) * (Util.SQRT2 * 0.5);\n }\n };\n function init_xrpow_core(cod_info, xrpow, upper, sum) {\n sum = 0;\n for (var i = 0; i <= upper; ++i) {\n var tmp = Math.abs(cod_info.xr[i]);\n sum += tmp;\n xrpow[i] = Math.sqrt(tmp * Math.sqrt(tmp));\n if (xrpow[i] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[i];\n }\n return sum;\n }\n this.init_xrpow = function(gfc, cod_info, xrpow) {\n var sum = 0;\n var upper = 0 | cod_info.max_nonzero_coeff;\n cod_info.xrpow_max = 0;\n Arrays$1.fill(xrpow, upper, 576, 0);\n sum = init_xrpow_core(cod_info, xrpow, upper, sum);\n if (sum > 1e-20) {\n var j = 0;\n if ((gfc.substep_shaping & 2) != 0)\n j = 1;\n for (var i = 0; i < cod_info.psymax; i++)\n gfc.pseudohalf[i] = j;\n return true;\n }\n Arrays$1.fill(cod_info.l3_enc, 0, 576, 0);\n return false;\n };\n function psfb21_analogsilence(gfc, cod_info) {\n var ath = gfc.ATH;\n var xr = cod_info.xr;\n if (cod_info.block_type != Encoder.SHORT_TYPE) {\n var stop = false;\n for (var gsfb = Encoder.PSFB21 - 1; gsfb >= 0 && !stop; gsfb--) {\n var start2 = gfc.scalefac_band.psfb21[gsfb];\n var end = gfc.scalefac_band.psfb21[gsfb + 1];\n var ath21 = qupvt.athAdjust(ath.adjust, ath.psfb21[gsfb], ath.floor);\n if (gfc.nsPsy.longfact[21] > 1e-12)\n ath21 *= gfc.nsPsy.longfact[21];\n for (var j = end - 1; j >= start2; j--) {\n if (Math.abs(xr[j]) < ath21)\n xr[j] = 0;\n else {\n stop = true;\n break;\n }\n }\n }\n } else {\n for (var block = 0; block < 3; block++) {\n var stop = false;\n for (var gsfb = Encoder.PSFB12 - 1; gsfb >= 0 && !stop; gsfb--) {\n var start2 = gfc.scalefac_band.s[12] * 3 + (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12]) * block + (gfc.scalefac_band.psfb12[gsfb] - gfc.scalefac_band.psfb12[0]);\n var end = start2 + (gfc.scalefac_band.psfb12[gsfb + 1] - gfc.scalefac_band.psfb12[gsfb]);\n var ath12 = qupvt.athAdjust(ath.adjust, ath.psfb12[gsfb], ath.floor);\n if (gfc.nsPsy.shortfact[12] > 1e-12)\n ath12 *= gfc.nsPsy.shortfact[12];\n for (var j = end - 1; j >= start2; j--) {\n if (Math.abs(xr[j]) < ath12)\n xr[j] = 0;\n else {\n stop = true;\n break;\n }\n }\n }\n }\n }\n }\n this.init_outer_loop = function(gfc, cod_info) {\n cod_info.part2_3_length = 0;\n cod_info.big_values = 0;\n cod_info.count1 = 0;\n cod_info.global_gain = 210;\n cod_info.scalefac_compress = 0;\n cod_info.table_select[0] = 0;\n cod_info.table_select[1] = 0;\n cod_info.table_select[2] = 0;\n cod_info.subblock_gain[0] = 0;\n cod_info.subblock_gain[1] = 0;\n cod_info.subblock_gain[2] = 0;\n cod_info.subblock_gain[3] = 0;\n cod_info.region0_count = 0;\n cod_info.region1_count = 0;\n cod_info.preflag = 0;\n cod_info.scalefac_scale = 0;\n cod_info.count1table_select = 0;\n cod_info.part2_length = 0;\n cod_info.sfb_lmax = Encoder.SBPSY_l;\n cod_info.sfb_smin = Encoder.SBPSY_s;\n cod_info.psy_lmax = gfc.sfb21_extra ? Encoder.SBMAX_l : Encoder.SBPSY_l;\n cod_info.psymax = cod_info.psy_lmax;\n cod_info.sfbmax = cod_info.sfb_lmax;\n cod_info.sfbdivide = 11;\n for (var sfb = 0; sfb < Encoder.SBMAX_l; sfb++) {\n cod_info.width[sfb] = gfc.scalefac_band.l[sfb + 1] - gfc.scalefac_band.l[sfb];\n cod_info.window[sfb] = 3;\n }\n if (cod_info.block_type == Encoder.SHORT_TYPE) {\n var ixwork = new_float(576);\n cod_info.sfb_smin = 0;\n cod_info.sfb_lmax = 0;\n if (cod_info.mixed_block_flag != 0) {\n cod_info.sfb_smin = 3;\n cod_info.sfb_lmax = gfc.mode_gr * 2 + 4;\n }\n cod_info.psymax = cod_info.sfb_lmax + 3 * ((gfc.sfb21_extra ? Encoder.SBMAX_s : Encoder.SBPSY_s) - cod_info.sfb_smin);\n cod_info.sfbmax = cod_info.sfb_lmax + 3 * (Encoder.SBPSY_s - cod_info.sfb_smin);\n cod_info.sfbdivide = cod_info.sfbmax - 18;\n cod_info.psy_lmax = cod_info.sfb_lmax;\n var ix = gfc.scalefac_band.l[cod_info.sfb_lmax];\n System$1.arraycopy(cod_info.xr, 0, ixwork, 0, 576);\n for (var sfb = cod_info.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) {\n var start2 = gfc.scalefac_band.s[sfb];\n var end = gfc.scalefac_band.s[sfb + 1];\n for (var window2 = 0; window2 < 3; window2++) {\n for (var l = start2; l < end; l++) {\n cod_info.xr[ix++] = ixwork[3 * l + window2];\n }\n }\n }\n var j = cod_info.sfb_lmax;\n for (var sfb = cod_info.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) {\n cod_info.width[j] = cod_info.width[j + 1] = cod_info.width[j + 2] = gfc.scalefac_band.s[sfb + 1] - gfc.scalefac_band.s[sfb];\n cod_info.window[j] = 0;\n cod_info.window[j + 1] = 1;\n cod_info.window[j + 2] = 2;\n j += 3;\n }\n }\n cod_info.count1bits = 0;\n cod_info.sfb_partition_table = qupvt.nr_of_sfb_block[0][0];\n cod_info.slen[0] = 0;\n cod_info.slen[1] = 0;\n cod_info.slen[2] = 0;\n cod_info.slen[3] = 0;\n cod_info.max_nonzero_coeff = 575;\n Arrays$1.fill(cod_info.scalefac, 0);\n psfb21_analogsilence(gfc, cod_info);\n };\n function BinSearchDirection(ordinal) {\n this.ordinal = ordinal;\n }\n BinSearchDirection.BINSEARCH_NONE = new BinSearchDirection(0);\n BinSearchDirection.BINSEARCH_UP = new BinSearchDirection(1);\n BinSearchDirection.BINSEARCH_DOWN = new BinSearchDirection(2);\n function bin_search_StepSize(gfc, cod_info, desired_rate, ch, xrpow) {\n var nBits;\n var CurrentStep = gfc.CurrentStep[ch];\n var flagGoneOver = false;\n var start2 = gfc.OldValue[ch];\n var Direction = BinSearchDirection.BINSEARCH_NONE;\n cod_info.global_gain = start2;\n desired_rate -= cod_info.part2_length;\n for (; ; ) {\n var step;\n nBits = tk.count_bits(gfc, xrpow, cod_info, null);\n if (CurrentStep == 1 || nBits == desired_rate)\n break;\n if (nBits > desired_rate) {\n if (Direction == BinSearchDirection.BINSEARCH_DOWN)\n flagGoneOver = true;\n if (flagGoneOver)\n CurrentStep /= 2;\n Direction = BinSearchDirection.BINSEARCH_UP;\n step = CurrentStep;\n } else {\n if (Direction == BinSearchDirection.BINSEARCH_UP)\n flagGoneOver = true;\n if (flagGoneOver)\n CurrentStep /= 2;\n Direction = BinSearchDirection.BINSEARCH_DOWN;\n step = -CurrentStep;\n }\n cod_info.global_gain += step;\n if (cod_info.global_gain < 0) {\n cod_info.global_gain = 0;\n flagGoneOver = true;\n }\n if (cod_info.global_gain > 255) {\n cod_info.global_gain = 255;\n flagGoneOver = true;\n }\n }\n assert$3(cod_info.global_gain >= 0);\n assert$3(cod_info.global_gain < 256);\n while (nBits > desired_rate && cod_info.global_gain < 255) {\n cod_info.global_gain++;\n nBits = tk.count_bits(gfc, xrpow, cod_info, null);\n }\n gfc.CurrentStep[ch] = start2 - cod_info.global_gain >= 4 ? 4 : 2;\n gfc.OldValue[ch] = cod_info.global_gain;\n cod_info.part2_3_length = nBits;\n return nBits;\n }\n this.trancate_smallspectrums = function(gfc, gi, l3_xmin, work) {\n var distort = new_float(L3Side$1.SFBMAX);\n if ((gfc.substep_shaping & 4) == 0 && gi.block_type == Encoder.SHORT_TYPE || (gfc.substep_shaping & 128) != 0) {\n return;\n }\n qupvt.calc_noise(gi, l3_xmin, distort, new CalcNoiseResult$1(), null);\n for (var j = 0; j < 576; j++) {\n var xr = 0;\n if (gi.l3_enc[j] != 0)\n xr = Math.abs(gi.xr[j]);\n work[j] = xr;\n }\n var j = 0;\n var sfb = 8;\n if (gi.block_type == Encoder.SHORT_TYPE)\n sfb = 6;\n do {\n var allowedNoise, trancateThreshold;\n var nsame, start2;\n var width = gi.width[sfb];\n j += width;\n if (distort[sfb] >= 1)\n continue;\n Arrays$1.sort(work, j - width, width);\n if (BitStream.EQ(work[j - 1], 0))\n continue;\n allowedNoise = (1 - distort[sfb]) * l3_xmin[sfb];\n trancateThreshold = 0;\n start2 = 0;\n do {\n var noise;\n for (nsame = 1; start2 + nsame < width; nsame++) {\n if (BitStream.NEQ(\n work[start2 + j - width],\n work[start2 + j + nsame - width]\n )) {\n break;\n }\n }\n noise = work[start2 + j - width] * work[start2 + j - width] * nsame;\n if (allowedNoise < noise) {\n if (start2 != 0)\n trancateThreshold = work[start2 + j - width - 1];\n break;\n }\n allowedNoise -= noise;\n start2 += nsame;\n } while (start2 < width);\n if (BitStream.EQ(trancateThreshold, 0))\n continue;\n do {\n if (Math.abs(gi.xr[j - width]) <= trancateThreshold) {\n gi.l3_enc[j - width] = 0;\n }\n } while (--width > 0);\n } while (++sfb < gi.psymax);\n gi.part2_3_length = tk.noquant_count_bits(gfc, gi, null);\n };\n function loop_break(cod_info) {\n for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n if (cod_info.scalefac[sfb] + cod_info.subblock_gain[cod_info.window[sfb]] == 0) {\n return false;\n }\n }\n return true;\n }\n function penalties(noise) {\n return Util.FAST_LOG10(0.368 + 0.632 * noise * noise * noise);\n }\n function get_klemm_noise(distort, gi) {\n var klemm_noise = 1e-37;\n for (var sfb = 0; sfb < gi.psymax; sfb++) {\n klemm_noise += penalties(distort[sfb]);\n }\n return Math.max(1e-20, klemm_noise);\n }\n function quant_compare(quant_comp, best, calc, gi, distort) {\n var better;\n switch (quant_comp) {\n default:\n case 9: {\n if (best.over_count > 0) {\n better = calc.over_SSD <= best.over_SSD;\n if (calc.over_SSD == best.over_SSD)\n better = calc.bits < best.bits;\n } else {\n better = calc.max_noise < 0 && calc.max_noise * 10 + calc.bits <= best.max_noise * 10 + best.bits;\n }\n break;\n }\n case 0:\n better = calc.over_count < best.over_count || calc.over_count == best.over_count && calc.over_noise < best.over_noise || calc.over_count == best.over_count && BitStream.EQ(calc.over_noise, best.over_noise) && calc.tot_noise < best.tot_noise;\n break;\n case 8:\n calc.max_noise = get_klemm_noise(distort, gi);\n case 1:\n better = calc.max_noise < best.max_noise;\n break;\n case 2:\n better = calc.tot_noise < best.tot_noise;\n break;\n case 3:\n better = calc.tot_noise < best.tot_noise && calc.max_noise < best.max_noise;\n break;\n case 4:\n better = calc.max_noise <= 0 && best.max_noise > 0.2 || calc.max_noise <= 0 && best.max_noise < 0 && best.max_noise > calc.max_noise - 0.2 && calc.tot_noise < best.tot_noise || calc.max_noise <= 0 && best.max_noise > 0 && best.max_noise > calc.max_noise - 0.2 && calc.tot_noise < best.tot_noise + best.over_noise || calc.max_noise > 0 && best.max_noise > -0.05 && best.max_noise > calc.max_noise - 0.1 && calc.tot_noise + calc.over_noise < best.tot_noise + best.over_noise || calc.max_noise > 0 && best.max_noise > -0.1 && best.max_noise > calc.max_noise - 0.15 && calc.tot_noise + calc.over_noise + calc.over_noise < best.tot_noise + best.over_noise + best.over_noise;\n break;\n case 5:\n better = calc.over_noise < best.over_noise || BitStream.EQ(calc.over_noise, best.over_noise) && calc.tot_noise < best.tot_noise;\n break;\n case 6:\n better = calc.over_noise < best.over_noise || BitStream.EQ(calc.over_noise, best.over_noise) && (calc.max_noise < best.max_noise || BitStream.EQ(calc.max_noise, best.max_noise) && calc.tot_noise <= best.tot_noise);\n break;\n case 7:\n better = calc.over_count < best.over_count || calc.over_noise < best.over_noise;\n break;\n }\n if (best.over_count == 0) {\n better = better && calc.bits < best.bits;\n }\n return better;\n }\n function amp_scalefac_bands(gfp, cod_info, distort, xrpow, bRefine) {\n var gfc = gfp.internal_flags;\n var ifqstep34;\n if (cod_info.scalefac_scale == 0) {\n ifqstep34 = 1.2968395546510096;\n } else {\n ifqstep34 = 1.6817928305074292;\n }\n var trigger2 = 0;\n for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n if (trigger2 < distort[sfb])\n trigger2 = distort[sfb];\n }\n var noise_shaping_amp = gfc.noise_shaping_amp;\n if (noise_shaping_amp == 3) {\n if (bRefine)\n noise_shaping_amp = 2;\n else\n noise_shaping_amp = 1;\n }\n switch (noise_shaping_amp) {\n case 2:\n break;\n case 1:\n if (trigger2 > 1)\n trigger2 = Math.pow(trigger2, 0.5);\n else\n trigger2 *= 0.95;\n break;\n case 0:\n default:\n if (trigger2 > 1)\n trigger2 = 1;\n else\n trigger2 *= 0.95;\n break;\n }\n var j = 0;\n for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n var width = cod_info.width[sfb];\n var l;\n j += width;\n if (distort[sfb] < trigger2)\n continue;\n if ((gfc.substep_shaping & 2) != 0) {\n gfc.pseudohalf[sfb] = gfc.pseudohalf[sfb] == 0 ? 1 : 0;\n if (gfc.pseudohalf[sfb] == 0 && gfc.noise_shaping_amp == 2)\n return;\n }\n cod_info.scalefac[sfb]++;\n for (l = -width; l < 0; l++) {\n xrpow[j + l] *= ifqstep34;\n if (xrpow[j + l] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[j + l];\n }\n if (gfc.noise_shaping_amp == 2)\n return;\n }\n }\n function inc_scalefac_scale(cod_info, xrpow) {\n var ifqstep34 = 1.2968395546510096;\n var j = 0;\n for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n var width = cod_info.width[sfb];\n var s = cod_info.scalefac[sfb];\n if (cod_info.preflag != 0)\n s += qupvt.pretab[sfb];\n j += width;\n if ((s & 1) != 0) {\n s++;\n for (var l = -width; l < 0; l++) {\n xrpow[j + l] *= ifqstep34;\n if (xrpow[j + l] > cod_info.xrpow_max) {\n cod_info.xrpow_max = xrpow[j + l];\n }\n }\n }\n cod_info.scalefac[sfb] = s >> 1;\n }\n cod_info.preflag = 0;\n cod_info.scalefac_scale = 1;\n }\n function inc_subblock_gain(gfc, cod_info, xrpow) {\n var sfb;\n var scalefac = cod_info.scalefac;\n for (sfb = 0; sfb < cod_info.sfb_lmax; sfb++) {\n if (scalefac[sfb] >= 16)\n return true;\n }\n for (var window2 = 0; window2 < 3; window2++) {\n var s1 = 0;\n var s2 = 0;\n for (sfb = cod_info.sfb_lmax + window2; sfb < cod_info.sfbdivide; sfb += 3) {\n if (s1 < scalefac[sfb])\n s1 = scalefac[sfb];\n }\n for (; sfb < cod_info.sfbmax; sfb += 3) {\n if (s2 < scalefac[sfb])\n s2 = scalefac[sfb];\n }\n if (s1 < 16 && s2 < 8)\n continue;\n if (cod_info.subblock_gain[window2] >= 7)\n return true;\n cod_info.subblock_gain[window2]++;\n var j = gfc.scalefac_band.l[cod_info.sfb_lmax];\n for (sfb = cod_info.sfb_lmax + window2; sfb < cod_info.sfbmax; sfb += 3) {\n var amp;\n var width = cod_info.width[sfb];\n var s = scalefac[sfb];\n s = s - (4 >> cod_info.scalefac_scale);\n if (s >= 0) {\n scalefac[sfb] = s;\n j += width * 3;\n continue;\n }\n scalefac[sfb] = 0;\n {\n var gain = 210 + (s << cod_info.scalefac_scale + 1);\n amp = qupvt.IPOW20(gain);\n }\n j += width * (window2 + 1);\n for (var l = -width; l < 0; l++) {\n xrpow[j + l] *= amp;\n if (xrpow[j + l] > cod_info.xrpow_max) {\n cod_info.xrpow_max = xrpow[j + l];\n }\n }\n j += width * (3 - window2 - 1);\n }\n {\n var amp = qupvt.IPOW20(202);\n j += cod_info.width[sfb] * (window2 + 1);\n for (var l = -cod_info.width[sfb]; l < 0; l++) {\n xrpow[j + l] *= amp;\n if (xrpow[j + l] > cod_info.xrpow_max) {\n cod_info.xrpow_max = xrpow[j + l];\n }\n }\n }\n }\n return false;\n }\n function balance_noise(gfp, cod_info, distort, xrpow, bRefine) {\n var gfc = gfp.internal_flags;\n amp_scalefac_bands(gfp, cod_info, distort, xrpow, bRefine);\n var status = loop_break(cod_info);\n if (status)\n return false;\n if (gfc.mode_gr == 2)\n status = tk.scale_bitcount(cod_info);\n else\n status = tk.scale_bitcount_lsf(gfc, cod_info);\n if (!status)\n return true;\n if (gfc.noise_shaping > 1) {\n Arrays$1.fill(gfc.pseudohalf, 0);\n if (cod_info.scalefac_scale == 0) {\n inc_scalefac_scale(cod_info, xrpow);\n status = false;\n } else {\n if (cod_info.block_type == Encoder.SHORT_TYPE && gfc.subblock_gain > 0) {\n status = inc_subblock_gain(gfc, cod_info, xrpow) || loop_break(cod_info);\n }\n }\n }\n if (!status) {\n if (gfc.mode_gr == 2)\n status = tk.scale_bitcount(cod_info);\n else\n status = tk.scale_bitcount_lsf(gfc, cod_info);\n }\n return !status;\n }\n this.outer_loop = function(gfp, cod_info, l3_xmin, xrpow, ch, targ_bits) {\n var gfc = gfp.internal_flags;\n var cod_info_w = new GrInfo();\n var save_xrpow = new_float(576);\n var distort = new_float(L3Side$1.SFBMAX);\n var best_noise_info = new CalcNoiseResult$1();\n var better;\n var prev_noise = new CalcNoiseData();\n var best_part2_3_length = 9999999;\n var bEndOfSearch = false;\n var bRefine = false;\n var best_ggain_pass1 = 0;\n bin_search_StepSize(gfc, cod_info, targ_bits, ch, xrpow);\n if (gfc.noise_shaping == 0) {\n return 100;\n }\n qupvt.calc_noise(cod_info, l3_xmin, distort, best_noise_info, prev_noise);\n best_noise_info.bits = cod_info.part2_3_length;\n cod_info_w.assign(cod_info);\n var age = 0;\n System$1.arraycopy(xrpow, 0, save_xrpow, 0, 576);\n while (!bEndOfSearch) {\n do {\n var noise_info = new CalcNoiseResult$1();\n var search_limit;\n var maxggain = 255;\n if ((gfc.substep_shaping & 2) != 0) {\n search_limit = 20;\n } else {\n search_limit = 3;\n }\n if (gfc.sfb21_extra) {\n if (distort[cod_info_w.sfbmax] > 1)\n break;\n if (cod_info_w.block_type == Encoder.SHORT_TYPE && (distort[cod_info_w.sfbmax + 1] > 1 || distort[cod_info_w.sfbmax + 2] > 1)) {\n break;\n }\n }\n if (!balance_noise(gfp, cod_info_w, distort, xrpow, bRefine))\n break;\n if (cod_info_w.scalefac_scale != 0)\n maxggain = 254;\n var huff_bits = targ_bits - cod_info_w.part2_length;\n if (huff_bits <= 0)\n break;\n while ((cod_info_w.part2_3_length = tk.count_bits(\n gfc,\n xrpow,\n cod_info_w,\n prev_noise\n )) > huff_bits && cod_info_w.global_gain <= maxggain) {\n cod_info_w.global_gain++;\n }\n if (cod_info_w.global_gain > maxggain)\n break;\n if (best_noise_info.over_count == 0) {\n while ((cod_info_w.part2_3_length = tk.count_bits(\n gfc,\n xrpow,\n cod_info_w,\n prev_noise\n )) > best_part2_3_length && cod_info_w.global_gain <= maxggain) {\n cod_info_w.global_gain++;\n }\n if (cod_info_w.global_gain > maxggain)\n break;\n }\n qupvt.calc_noise(cod_info_w, l3_xmin, distort, noise_info, prev_noise);\n noise_info.bits = cod_info_w.part2_3_length;\n if (cod_info.block_type != Encoder.SHORT_TYPE) {\n better = gfp.quant_comp;\n } else\n better = gfp.quant_comp_short;\n better = quant_compare(\n better,\n best_noise_info,\n noise_info,\n cod_info_w,\n distort\n ) ? 1 : 0;\n if (better != 0) {\n best_part2_3_length = cod_info.part2_3_length;\n best_noise_info = noise_info;\n cod_info.assign(cod_info_w);\n age = 0;\n System$1.arraycopy(xrpow, 0, save_xrpow, 0, 576);\n } else {\n if (gfc.full_outer_loop == 0) {\n if (++age > search_limit && best_noise_info.over_count == 0)\n break;\n if (gfc.noise_shaping_amp == 3 && bRefine && age > 30)\n break;\n if (gfc.noise_shaping_amp == 3 && bRefine && cod_info_w.global_gain - best_ggain_pass1 > 15) {\n break;\n }\n }\n }\n } while (cod_info_w.global_gain + cod_info_w.scalefac_scale < 255);\n if (gfc.noise_shaping_amp == 3) {\n if (!bRefine) {\n cod_info_w.assign(cod_info);\n System$1.arraycopy(save_xrpow, 0, xrpow, 0, 576);\n age = 0;\n best_ggain_pass1 = cod_info_w.global_gain;\n bRefine = true;\n } else {\n bEndOfSearch = true;\n }\n } else {\n bEndOfSearch = true;\n }\n }\n assert$3(cod_info.global_gain + cod_info.scalefac_scale <= 255);\n if (gfp.VBR == VbrMode$1.vbr_rh || gfp.VBR == VbrMode$1.vbr_mtrh) {\n System$1.arraycopy(save_xrpow, 0, xrpow, 0, 576);\n } else if ((gfc.substep_shaping & 1) != 0) {\n trancate_smallspectrums(gfc, cod_info, l3_xmin, xrpow);\n }\n return best_noise_info.over_count;\n };\n this.iteration_finish_one = function(gfc, gr, ch) {\n var l3_side = gfc.l3_side;\n var cod_info = l3_side.tt[gr][ch];\n tk.best_scalefac_store(gfc, gr, ch, l3_side);\n if (gfc.use_best_huffman == 1)\n tk.best_huffman_divide(gfc, cod_info);\n rv.ResvAdjust(gfc, cod_info);\n };\n this.VBR_encode_granule = function(gfp, cod_info, l3_xmin, xrpow, ch, min_bits, max_bits) {\n var gfc = gfp.internal_flags;\n var bst_cod_info = new GrInfo();\n var bst_xrpow = new_float(576);\n var Max_bits = max_bits;\n var real_bits = max_bits + 1;\n var this_bits = (max_bits + min_bits) / 2;\n var dbits;\n var over;\n var found = 0;\n var sfb21_extra = gfc.sfb21_extra;\n assert$3(Max_bits <= LameInternalFlags.MAX_BITS_PER_CHANNEL);\n Arrays$1.fill(bst_cod_info.l3_enc, 0);\n do {\n if (this_bits > Max_bits - 42)\n gfc.sfb21_extra = false;\n else\n gfc.sfb21_extra = sfb21_extra;\n over = outer_loop(gfp, cod_info, l3_xmin, xrpow, ch, this_bits);\n if (over <= 0) {\n found = 1;\n real_bits = cod_info.part2_3_length;\n bst_cod_info.assign(cod_info);\n System$1.arraycopy(xrpow, 0, bst_xrpow, 0, 576);\n max_bits = real_bits - 32;\n dbits = max_bits - min_bits;\n this_bits = (max_bits + min_bits) / 2;\n } else {\n min_bits = this_bits + 32;\n dbits = max_bits - min_bits;\n this_bits = (max_bits + min_bits) / 2;\n if (found != 0) {\n found = 2;\n cod_info.assign(bst_cod_info);\n System$1.arraycopy(bst_xrpow, 0, xrpow, 0, 576);\n }\n }\n } while (dbits > 12);\n gfc.sfb21_extra = sfb21_extra;\n if (found == 2) {\n System$1.arraycopy(bst_cod_info.l3_enc, 0, cod_info.l3_enc, 0, 576);\n }\n assert$3(cod_info.part2_3_length <= Max_bits);\n };\n this.get_framebits = function(gfp, frameBits) {\n var gfc = gfp.internal_flags;\n gfc.bitrate_index = gfc.VBR_min_bitrate;\n var bitsPerFrame = bs.getframebits(gfp);\n gfc.bitrate_index = 1;\n bitsPerFrame = bs.getframebits(gfp);\n for (var i = 1; i <= gfc.VBR_max_bitrate; i++) {\n gfc.bitrate_index = i;\n var mb = new MeanBits(bitsPerFrame);\n frameBits[i] = rv.ResvFrameBegin(gfp, mb);\n bitsPerFrame = mb.bits;\n }\n };\n this.VBR_old_prepare = function(gfp, pe, ms_ener_ratio, ratio, l3_xmin, frameBits, min_bits, max_bits, bands) {\n var gfc = gfp.internal_flags;\n var masking_lower_db;\n var adjust = 0;\n var analog_silence = 1;\n var bits = 0;\n gfc.bitrate_index = gfc.VBR_max_bitrate;\n var avg = rv.ResvFrameBegin(gfp, new MeanBits(0)) / gfc.mode_gr;\n get_framebits(gfp, frameBits);\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n var mxb = qupvt.on_pe(gfp, pe, max_bits[gr], avg, gr, 0);\n if (gfc.mode_ext == Encoder.MPG_MD_MS_LR) {\n ms_convert(gfc.l3_side, gr);\n qupvt.reduce_side(max_bits[gr], ms_ener_ratio[gr], avg, mxb);\n }\n for (var ch = 0; ch < gfc.channels_out; ++ch) {\n var cod_info = gfc.l3_side.tt[gr][ch];\n if (cod_info.block_type != Encoder.SHORT_TYPE) {\n adjust = 1.28 / (1 + Math.exp(3.5 - pe[gr][ch] / 300)) - 0.05;\n masking_lower_db = gfc.PSY.mask_adjust - adjust;\n } else {\n adjust = 2.56 / (1 + Math.exp(3.5 - pe[gr][ch] / 300)) - 0.14;\n masking_lower_db = gfc.PSY.mask_adjust_short - adjust;\n }\n gfc.masking_lower = Math.pow(10, masking_lower_db * 0.1);\n init_outer_loop(gfc, cod_info);\n bands[gr][ch] = qupvt.calc_xmin(\n gfp,\n ratio[gr][ch],\n cod_info,\n l3_xmin[gr][ch]\n );\n if (bands[gr][ch] != 0)\n analog_silence = 0;\n min_bits[gr][ch] = 126;\n bits += max_bits[gr][ch];\n }\n }\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n if (bits > frameBits[gfc.VBR_max_bitrate]) {\n max_bits[gr][ch] *= frameBits[gfc.VBR_max_bitrate];\n max_bits[gr][ch] /= bits;\n }\n if (min_bits[gr][ch] > max_bits[gr][ch]) {\n min_bits[gr][ch] = max_bits[gr][ch];\n }\n }\n }\n return analog_silence;\n };\n this.bitpressure_strategy = function(gfc, l3_xmin, min_bits, max_bits) {\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n var gi = gfc.l3_side.tt[gr][ch];\n var pxmin = l3_xmin[gr][ch];\n var pxminPos = 0;\n for (var sfb = 0; sfb < gi.psy_lmax; sfb++) {\n pxmin[pxminPos++] *= 1 + 0.029 * sfb * sfb / Encoder.SBMAX_l / Encoder.SBMAX_l;\n }\n if (gi.block_type == Encoder.SHORT_TYPE) {\n for (var sfb = gi.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) {\n pxmin[pxminPos++] *= 1 + 0.029 * sfb * sfb / Encoder.SBMAX_s / Encoder.SBMAX_s;\n pxmin[pxminPos++] *= 1 + 0.029 * sfb * sfb / Encoder.SBMAX_s / Encoder.SBMAX_s;\n pxmin[pxminPos++] *= 1 + 0.029 * sfb * sfb / Encoder.SBMAX_s / Encoder.SBMAX_s;\n }\n }\n max_bits[gr][ch] = 0 | Math.max(min_bits[gr][ch], 0.9 * max_bits[gr][ch]);\n }\n }\n };\n this.VBR_new_prepare = function(gfp, pe, ratio, l3_xmin, frameBits, max_bits) {\n var gfc = gfp.internal_flags;\n var analog_silence = 1;\n var avg = 0;\n var bits = 0;\n var maximum_framebits;\n if (!gfp.free_format) {\n gfc.bitrate_index = gfc.VBR_max_bitrate;\n var mb = new MeanBits(avg);\n rv.ResvFrameBegin(gfp, mb);\n avg = mb.bits;\n get_framebits(gfp, frameBits);\n maximum_framebits = frameBits[gfc.VBR_max_bitrate];\n } else {\n gfc.bitrate_index = 0;\n var mb = new MeanBits(avg);\n maximum_framebits = rv.ResvFrameBegin(gfp, mb);\n avg = mb.bits;\n frameBits[0] = maximum_framebits;\n }\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n qupvt.on_pe(gfp, pe, max_bits[gr], avg, gr, 0);\n if (gfc.mode_ext == Encoder.MPG_MD_MS_LR) {\n ms_convert(gfc.l3_side, gr);\n }\n for (var ch = 0; ch < gfc.channels_out; ++ch) {\n var cod_info = gfc.l3_side.tt[gr][ch];\n gfc.masking_lower = Math.pow(10, gfc.PSY.mask_adjust * 0.1);\n init_outer_loop(gfc, cod_info);\n if (qupvt.calc_xmin(gfp, ratio[gr][ch], cod_info, l3_xmin[gr][ch]) != 0) {\n analog_silence = 0;\n }\n bits += max_bits[gr][ch];\n }\n }\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n if (bits > maximum_framebits) {\n max_bits[gr][ch] *= maximum_framebits;\n max_bits[gr][ch] /= bits;\n }\n }\n }\n return analog_silence;\n };\n this.calc_target_bits = function(gfp, pe, ms_ener_ratio, targ_bits, analog_silence_bits, max_frame_bits) {\n var gfc = gfp.internal_flags;\n var l3_side = gfc.l3_side;\n var res_factor;\n var gr;\n var ch;\n var totbits;\n var mean_bits = 0;\n gfc.bitrate_index = gfc.VBR_max_bitrate;\n var mb = new MeanBits(mean_bits);\n max_frame_bits[0] = rv.ResvFrameBegin(gfp, mb);\n mean_bits = mb.bits;\n gfc.bitrate_index = 1;\n mean_bits = bs.getframebits(gfp) - gfc.sideinfo_len * 8;\n analog_silence_bits[0] = mean_bits / (gfc.mode_gr * gfc.channels_out);\n mean_bits = gfp.VBR_mean_bitrate_kbps * gfp.framesize * 1e3;\n if ((gfc.substep_shaping & 1) != 0)\n mean_bits *= 1.09;\n mean_bits /= gfp.out_samplerate;\n mean_bits -= gfc.sideinfo_len * 8;\n mean_bits /= gfc.mode_gr * gfc.channels_out;\n res_factor = 0.93 + 0.07 * (11 - gfp.compression_ratio) / (11 - 5.5);\n if (res_factor < 0.9)\n res_factor = 0.9;\n if (res_factor > 1)\n res_factor = 1;\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n var sum = 0;\n for (ch = 0; ch < gfc.channels_out; ch++) {\n targ_bits[gr][ch] = int(res_factor * mean_bits);\n if (pe[gr][ch] > 700) {\n var add_bits = int((pe[gr][ch] - 700) / 1.4);\n var cod_info = l3_side.tt[gr][ch];\n targ_bits[gr][ch] = int(res_factor * mean_bits);\n if (cod_info.block_type == Encoder.SHORT_TYPE) {\n if (add_bits < mean_bits / 2)\n add_bits = mean_bits / 2;\n }\n if (add_bits > mean_bits * 3 / 2)\n add_bits = mean_bits * 3 / 2;\n else if (add_bits < 0)\n add_bits = 0;\n targ_bits[gr][ch] += add_bits;\n }\n if (targ_bits[gr][ch] > LameInternalFlags.MAX_BITS_PER_CHANNEL) {\n targ_bits[gr][ch] = LameInternalFlags.MAX_BITS_PER_CHANNEL;\n }\n sum += targ_bits[gr][ch];\n }\n if (sum > LameInternalFlags.MAX_BITS_PER_GRANULE) {\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n targ_bits[gr][ch] *= LameInternalFlags.MAX_BITS_PER_GRANULE;\n targ_bits[gr][ch] /= sum;\n }\n }\n }\n if (gfc.mode_ext == Encoder.MPG_MD_MS_LR) {\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n qupvt.reduce_side(\n targ_bits[gr],\n ms_ener_ratio[gr],\n mean_bits * gfc.channels_out,\n LameInternalFlags.MAX_BITS_PER_GRANULE\n );\n }\n }\n totbits = 0;\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n if (targ_bits[gr][ch] > LameInternalFlags.MAX_BITS_PER_CHANNEL) {\n targ_bits[gr][ch] = LameInternalFlags.MAX_BITS_PER_CHANNEL;\n }\n totbits += targ_bits[gr][ch];\n }\n }\n if (totbits > max_frame_bits[0]) {\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n targ_bits[gr][ch] *= max_frame_bits[0];\n targ_bits[gr][ch] /= totbits;\n }\n }\n }\n };\n}\nvar assert$2 = common.assert;\nfunction Reservoir() {\n var bs;\n this.setModules = function(_bs) {\n bs = _bs;\n };\n this.ResvFrameBegin = function(gfp, mean_bits) {\n var gfc = gfp.internal_flags;\n var maxmp3buf;\n var l3_side = gfc.l3_side;\n var frameLength = bs.getframebits(gfp);\n mean_bits.bits = (frameLength - gfc.sideinfo_len * 8) / gfc.mode_gr;\n var resvLimit = 8 * 256 * gfc.mode_gr - 8;\n if (gfp.brate > 320) {\n maxmp3buf = 8 * int(gfp.brate * 1e3 / (gfp.out_samplerate / 1152) / 8 + 0.5);\n } else {\n maxmp3buf = 8 * 1440;\n if (gfp.strict_ISO) {\n maxmp3buf = 8 * int(32e4 / (gfp.out_samplerate / 1152) / 8 + 0.5);\n }\n }\n gfc.ResvMax = maxmp3buf - frameLength;\n if (gfc.ResvMax > resvLimit)\n gfc.ResvMax = resvLimit;\n if (gfc.ResvMax < 0 || gfp.disable_reservoir)\n gfc.ResvMax = 0;\n var fullFrameBits = mean_bits.bits * gfc.mode_gr + Math.min(gfc.ResvSize, gfc.ResvMax);\n if (fullFrameBits > maxmp3buf)\n fullFrameBits = maxmp3buf;\n assert$2(gfc.ResvMax % 8 == 0);\n assert$2(gfc.ResvMax >= 0);\n l3_side.resvDrain_pre = 0;\n if (gfc.pinfo != null) {\n gfc.pinfo.mean_bits = mean_bits.bits / 2;\n gfc.pinfo.resvsize = gfc.ResvSize;\n }\n return fullFrameBits;\n };\n this.ResvMaxBits = function(gfp, mean_bits, targ_bits, cbr) {\n var gfc = gfp.internal_flags;\n var add_bits;\n var ResvSize = gfc.ResvSize;\n var ResvMax = gfc.ResvMax;\n if (cbr != 0)\n ResvSize += mean_bits;\n if ((gfc.substep_shaping & 1) != 0)\n ResvMax *= 0.9;\n targ_bits.bits = mean_bits;\n if (ResvSize * 10 > ResvMax * 9) {\n add_bits = ResvSize - ResvMax * 9 / 10;\n targ_bits.bits += add_bits;\n gfc.substep_shaping |= 128;\n } else {\n add_bits = 0;\n gfc.substep_shaping &= 127;\n if (!gfp.disable_reservoir && (gfc.substep_shaping & 1) == 0) {\n targ_bits.bits -= 0.1 * mean_bits;\n }\n }\n var extra_bits = ResvSize < gfc.ResvMax * 6 / 10 ? ResvSize : gfc.ResvMax * 6 / 10;\n extra_bits -= add_bits;\n if (extra_bits < 0)\n extra_bits = 0;\n return extra_bits;\n };\n this.ResvAdjust = function(gfc, gi) {\n gfc.ResvSize -= gi.part2_3_length + gi.part2_length;\n };\n this.ResvFrameEnd = function(gfc, mean_bits) {\n var over_bits;\n var l3_side = gfc.l3_side;\n gfc.ResvSize += mean_bits * gfc.mode_gr;\n var stuffingBits = 0;\n l3_side.resvDrain_post = 0;\n l3_side.resvDrain_pre = 0;\n if ((over_bits = gfc.ResvSize % 8) != 0)\n stuffingBits += over_bits;\n over_bits = gfc.ResvSize - stuffingBits - gfc.ResvMax;\n if (over_bits > 0) {\n stuffingBits += over_bits;\n }\n {\n var mdb_bytes = Math.min(l3_side.main_data_begin * 8, stuffingBits) / 8;\n l3_side.resvDrain_pre += 8 * mdb_bytes;\n stuffingBits -= 8 * mdb_bytes;\n gfc.ResvSize -= 8 * mdb_bytes;\n l3_side.main_data_begin -= mdb_bytes;\n }\n l3_side.resvDrain_post += stuffingBits;\n gfc.ResvSize -= stuffingBits;\n };\n}\nfunction Version() {\n var LAME_URL = \"http://www.mp3dev.org/\";\n var LAME_MAJOR_VERSION = 3;\n var LAME_MINOR_VERSION = 98;\n var LAME_PATCH_VERSION = 4;\n var PSY_MAJOR_VERSION = 0;\n var PSY_MINOR_VERSION = 93;\n this.getLameVersion = function() {\n return LAME_MAJOR_VERSION + \".\" + LAME_MINOR_VERSION + \".\" + LAME_PATCH_VERSION;\n };\n this.getLameShortVersion = function() {\n return LAME_MAJOR_VERSION + \".\" + LAME_MINOR_VERSION + \".\" + LAME_PATCH_VERSION;\n };\n this.getLameVeryShortVersion = function() {\n return \"LAME\" + LAME_MAJOR_VERSION + \".\" + LAME_MINOR_VERSION + \"r\";\n };\n this.getPsyVersion = function() {\n return PSY_MAJOR_VERSION + \".\" + PSY_MINOR_VERSION;\n };\n this.getLameUrl = function() {\n return LAME_URL;\n };\n this.getLameOsBitness = function() {\n return \"32bits\";\n };\n}\nvar System = common.System;\nvar VbrMode = common.VbrMode;\nvar ShortBlock = common.ShortBlock;\nvar Arrays = common.Arrays;\nvar new_byte$1 = common.new_byte;\nvar assert$1 = common.assert;\nVBRTag.NUMTOCENTRIES = 100;\nVBRTag.MAXFRAMESIZE = 2880;\nfunction VBRTag() {\n var lame;\n var bs;\n var v;\n this.setModules = function(_lame, _bs, _v) {\n lame = _lame;\n bs = _bs;\n v = _v;\n };\n var FRAMES_FLAG = 1;\n var BYTES_FLAG = 2;\n var TOC_FLAG = 4;\n var VBR_SCALE_FLAG = 8;\n var NUMTOCENTRIES = VBRTag.NUMTOCENTRIES;\n var MAXFRAMESIZE = VBRTag.MAXFRAMESIZE;\n var VBRHEADERSIZE = NUMTOCENTRIES + 4 + 4 + 4 + 4 + 4;\n var LAMEHEADERSIZE = VBRHEADERSIZE + 9 + 1 + 1 + 8 + 1 + 1 + 3 + 1 + 1 + 2 + 4 + 2 + 2;\n var XING_BITRATE1 = 128;\n var XING_BITRATE2 = 64;\n var XING_BITRATE25 = 32;\n var ISO_8859_1 = null;\n var VBRTag0 = \"Xing\";\n var VBRTag1 = \"Info\";\n var crc16Lookup = [\n 0,\n 49345,\n 49537,\n 320,\n 49921,\n 960,\n 640,\n 49729,\n 50689,\n 1728,\n 1920,\n 51009,\n 1280,\n 50625,\n 50305,\n 1088,\n 52225,\n 3264,\n 3456,\n 52545,\n 3840,\n 53185,\n 52865,\n 3648,\n 2560,\n 51905,\n 52097,\n 2880,\n 51457,\n 2496,\n 2176,\n 51265,\n 55297,\n 6336,\n 6528,\n 55617,\n 6912,\n 56257,\n 55937,\n 6720,\n 7680,\n 57025,\n 57217,\n 8e3,\n 56577,\n 7616,\n 7296,\n 56385,\n 5120,\n 54465,\n 54657,\n 5440,\n 55041,\n 6080,\n 5760,\n 54849,\n 53761,\n 4800,\n 4992,\n 54081,\n 4352,\n 53697,\n 53377,\n 4160,\n 61441,\n 12480,\n 12672,\n 61761,\n 13056,\n 62401,\n 62081,\n 12864,\n 13824,\n 63169,\n 63361,\n 14144,\n 62721,\n 13760,\n 13440,\n 62529,\n 15360,\n 64705,\n 64897,\n 15680,\n 65281,\n 16320,\n 16e3,\n 65089,\n 64001,\n 15040,\n 15232,\n 64321,\n 14592,\n 63937,\n 63617,\n 14400,\n 10240,\n 59585,\n 59777,\n 10560,\n 60161,\n 11200,\n 10880,\n 59969,\n 60929,\n 11968,\n 12160,\n 61249,\n 11520,\n 60865,\n 60545,\n 11328,\n 58369,\n 9408,\n 9600,\n 58689,\n 9984,\n 59329,\n 59009,\n 9792,\n 8704,\n 58049,\n 58241,\n 9024,\n 57601,\n 8640,\n 8320,\n 57409,\n 40961,\n 24768,\n 24960,\n 41281,\n 25344,\n 41921,\n 41601,\n 25152,\n 26112,\n 42689,\n 42881,\n 26432,\n 42241,\n 26048,\n 25728,\n 42049,\n 27648,\n 44225,\n 44417,\n 27968,\n 44801,\n 28608,\n 28288,\n 44609,\n 43521,\n 27328,\n 27520,\n 43841,\n 26880,\n 43457,\n 43137,\n 26688,\n 30720,\n 47297,\n 47489,\n 31040,\n 47873,\n 31680,\n 31360,\n 47681,\n 48641,\n 32448,\n 32640,\n 48961,\n 32e3,\n 48577,\n 48257,\n 31808,\n 46081,\n 29888,\n 30080,\n 46401,\n 30464,\n 47041,\n 46721,\n 30272,\n 29184,\n 45761,\n 45953,\n 29504,\n 45313,\n 29120,\n 28800,\n 45121,\n 20480,\n 37057,\n 37249,\n 20800,\n 37633,\n 21440,\n 21120,\n 37441,\n 38401,\n 22208,\n 22400,\n 38721,\n 21760,\n 38337,\n 38017,\n 21568,\n 39937,\n 23744,\n 23936,\n 40257,\n 24320,\n 40897,\n 40577,\n 24128,\n 23040,\n 39617,\n 39809,\n 23360,\n 39169,\n 22976,\n 22656,\n 38977,\n 34817,\n 18624,\n 18816,\n 35137,\n 19200,\n 35777,\n 35457,\n 19008,\n 19968,\n 36545,\n 36737,\n 20288,\n 36097,\n 19904,\n 19584,\n 35905,\n 17408,\n 33985,\n 34177,\n 17728,\n 34561,\n 18368,\n 18048,\n 34369,\n 33281,\n 17088,\n 17280,\n 33601,\n 16640,\n 33217,\n 32897,\n 16448\n ];\n function addVbr(v2, bitrate) {\n v2.nVbrNumFrames++;\n v2.sum += bitrate;\n v2.seen++;\n if (v2.seen < v2.want) {\n return;\n }\n if (v2.pos < v2.size) {\n v2.bag[v2.pos] = v2.sum;\n v2.pos++;\n v2.seen = 0;\n }\n if (v2.pos == v2.size) {\n for (var i = 1; i < v2.size; i += 2) {\n v2.bag[i / 2] = v2.bag[i];\n }\n v2.want *= 2;\n v2.pos /= 2;\n }\n }\n function xingSeekTable(v2, t) {\n if (v2.pos <= 0)\n return;\n for (var i = 1; i < NUMTOCENTRIES; ++i) {\n var j = i / NUMTOCENTRIES;\n var act;\n var sum;\n var indx = 0 | Math.floor(j * v2.pos);\n if (indx > v2.pos - 1)\n indx = v2.pos - 1;\n act = v2.bag[indx];\n sum = v2.sum;\n var seek_point = 0 | 256 * act / sum;\n if (seek_point > 255)\n seek_point = 255;\n t[i] = 255 & seek_point;\n }\n }\n this.addVbrFrame = function(gfp) {\n var gfc = gfp.internal_flags;\n var kbps = Tables.bitrate_table[gfp.version][gfc.bitrate_index];\n assert$1(gfc.VBR_seek_table.bag != null);\n addVbr(gfc.VBR_seek_table, kbps);\n };\n function extractInteger(buf, bufPos) {\n var x = buf[bufPos + 0] & 255;\n x <<= 8;\n x |= buf[bufPos + 1] & 255;\n x <<= 8;\n x |= buf[bufPos + 2] & 255;\n x <<= 8;\n x |= buf[bufPos + 3] & 255;\n return x;\n }\n function createInteger(buf, bufPos, value) {\n buf[bufPos + 0] = 255 & (value >> 24 & 255);\n buf[bufPos + 1] = 255 & (value >> 16 & 255);\n buf[bufPos + 2] = 255 & (value >> 8 & 255);\n buf[bufPos + 3] = 255 & (value & 255);\n }\n function createShort(buf, bufPos, value) {\n buf[bufPos + 0] = 255 & (value >> 8 & 255);\n buf[bufPos + 1] = 255 & (value & 255);\n }\n function isVbrTag(buf, bufPos) {\n return new String(buf, bufPos, VBRTag0.length(), ISO_8859_1).equals(VBRTag0) || new String(buf, bufPos, VBRTag1.length(), ISO_8859_1).equals(VBRTag1);\n }\n function shiftInBitsValue(x, n, v2) {\n return 255 & (x << n | v2 & ~(-1 << n));\n }\n function setLameTagFrameHeader(gfp, buffer) {\n var gfc = gfp.internal_flags;\n buffer[0] = shiftInBitsValue(buffer[0], 8, 255);\n buffer[1] = shiftInBitsValue(buffer[1], 3, 7);\n buffer[1] = shiftInBitsValue(\n buffer[1],\n 1,\n gfp.out_samplerate < 16e3 ? 0 : 1\n );\n buffer[1] = shiftInBitsValue(buffer[1], 1, gfp.version);\n buffer[1] = shiftInBitsValue(buffer[1], 2, 4 - 3);\n buffer[1] = shiftInBitsValue(buffer[1], 1, !gfp.error_protection ? 1 : 0);\n buffer[2] = shiftInBitsValue(buffer[2], 4, gfc.bitrate_index);\n buffer[2] = shiftInBitsValue(buffer[2], 2, gfc.samplerate_index);\n buffer[2] = shiftInBitsValue(buffer[2], 1, 0);\n buffer[2] = shiftInBitsValue(buffer[2], 1, gfp.extension);\n buffer[3] = shiftInBitsValue(buffer[3], 2, gfp.mode.ordinal());\n buffer[3] = shiftInBitsValue(buffer[3], 2, gfc.mode_ext);\n buffer[3] = shiftInBitsValue(buffer[3], 1, gfp.copyright);\n buffer[3] = shiftInBitsValue(buffer[3], 1, gfp.original);\n buffer[3] = shiftInBitsValue(buffer[3], 2, gfp.emphasis);\n buffer[0] = 255;\n var abyte = 255 & (buffer[1] & 241);\n var bitrate;\n if (gfp.version == 1) {\n bitrate = XING_BITRATE1;\n } else {\n if (gfp.out_samplerate < 16e3)\n bitrate = XING_BITRATE25;\n else\n bitrate = XING_BITRATE2;\n }\n if (gfp.VBR == VbrMode.vbr_off)\n bitrate = gfp.brate;\n var bbyte;\n if (gfp.free_format)\n bbyte = 0;\n else {\n bbyte = 255 & 16 * lame.BitrateIndex(bitrate, gfp.version, gfp.out_samplerate);\n }\n if (gfp.version == 1) {\n buffer[1] = 255 & (abyte | 10);\n abyte = 255 & (buffer[2] & 13);\n buffer[2] = 255 & (bbyte | abyte);\n } else {\n buffer[1] = 255 & (abyte | 2);\n abyte = 255 & (buffer[2] & 13);\n buffer[2] = 255 & (bbyte | abyte);\n }\n }\n this.getVbrTag = function(buf) {\n var pTagData = new VBRTagData();\n var bufPos = 0;\n pTagData.flags = 0;\n var hId = buf[bufPos + 1] >> 3 & 1;\n var hSrIndex = buf[bufPos + 2] >> 2 & 3;\n var hMode = buf[bufPos + 3] >> 6 & 3;\n var hBitrate = buf[bufPos + 2] >> 4 & 15;\n hBitrate = Tables.bitrate_table[hId][hBitrate];\n if (buf[bufPos + 1] >> 4 == 14) {\n pTagData.samprate = Tables.samplerate_table[2][hSrIndex];\n } else\n pTagData.samprate = Tables.samplerate_table[hId][hSrIndex];\n if (hId != 0) {\n if (hMode != 3)\n bufPos += 32 + 4;\n else\n bufPos += 17 + 4;\n } else {\n if (hMode != 3)\n bufPos += 17 + 4;\n else\n bufPos += 9 + 4;\n }\n if (!isVbrTag(buf, bufPos))\n return null;\n bufPos += 4;\n pTagData.hId = hId;\n var head_flags = pTagData.flags = extractInteger(buf, bufPos);\n bufPos += 4;\n if ((head_flags & FRAMES_FLAG) != 0) {\n pTagData.frames = extractInteger(buf, bufPos);\n bufPos += 4;\n }\n if ((head_flags & BYTES_FLAG) != 0) {\n pTagData.bytes = extractInteger(buf, bufPos);\n bufPos += 4;\n }\n if ((head_flags & TOC_FLAG) != 0) {\n if (pTagData.toc != null) {\n for (var i = 0; i < NUMTOCENTRIES; i++) {\n pTagData.toc[i] = buf[bufPos + i];\n }\n }\n bufPos += NUMTOCENTRIES;\n }\n pTagData.vbrScale = -1;\n if ((head_flags & VBR_SCALE_FLAG) != 0) {\n pTagData.vbrScale = extractInteger(buf, bufPos);\n bufPos += 4;\n }\n pTagData.headersize = (hId + 1) * 72e3 * hBitrate / pTagData.samprate;\n bufPos += 21;\n var encDelay = buf[bufPos + 0] << 4;\n encDelay += buf[bufPos + 1] >> 4;\n var encPadding = (buf[bufPos + 1] & 15) << 8;\n encPadding += buf[bufPos + 2] & 255;\n if (encDelay < 0 || encDelay > 3e3)\n encDelay = -1;\n if (encPadding < 0 || encPadding > 3e3)\n encPadding = -1;\n pTagData.encDelay = encDelay;\n pTagData.encPadding = encPadding;\n return pTagData;\n };\n this.InitVbrTag = function(gfp) {\n var gfc = gfp.internal_flags;\n var kbps_header;\n if (gfp.version == 1) {\n kbps_header = XING_BITRATE1;\n } else {\n if (gfp.out_samplerate < 16e3)\n kbps_header = XING_BITRATE25;\n else\n kbps_header = XING_BITRATE2;\n }\n if (gfp.VBR == VbrMode.vbr_off)\n kbps_header = gfp.brate;\n var totalFrameSize = (gfp.version + 1) * 72e3 * kbps_header / gfp.out_samplerate;\n var headerSize = gfc.sideinfo_len + LAMEHEADERSIZE;\n gfc.VBR_seek_table.TotalFrameSize = totalFrameSize;\n if (totalFrameSize < headerSize || totalFrameSize > MAXFRAMESIZE) {\n gfp.bWriteVbrTag = false;\n return;\n }\n gfc.VBR_seek_table.nVbrNumFrames = 0;\n gfc.VBR_seek_table.nBytesWritten = 0;\n gfc.VBR_seek_table.sum = 0;\n gfc.VBR_seek_table.seen = 0;\n gfc.VBR_seek_table.want = 1;\n gfc.VBR_seek_table.pos = 0;\n if (gfc.VBR_seek_table.bag == null) {\n gfc.VBR_seek_table.bag = new int[400]();\n gfc.VBR_seek_table.size = 400;\n }\n var buffer = new_byte$1(MAXFRAMESIZE);\n setLameTagFrameHeader(gfp, buffer);\n var n = gfc.VBR_seek_table.TotalFrameSize;\n for (var i = 0; i < n; ++i) {\n bs.add_dummy_byte(gfp, buffer[i] & 255, 1);\n }\n };\n function crcUpdateLookup(value, crc) {\n var tmp = crc ^ value;\n crc = crc >> 8 ^ crc16Lookup[tmp & 255];\n return crc;\n }\n this.updateMusicCRC = function(crc, buffer, bufferPos, size2) {\n for (var i = 0; i < size2; ++i) {\n crc[0] = crcUpdateLookup(buffer[bufferPos + i], crc[0]);\n }\n };\n function putLameVBR(gfp, musicLength, streamBuffer, streamBufferPos, crc) {\n var gfc = gfp.internal_flags;\n var bytesWritten = 0;\n var encDelay = gfp.encoder_delay;\n var encPadding = gfp.encoder_padding;\n var quality = 100 - 10 * gfp.VBR_q - gfp.quality;\n var version2 = v.getLameVeryShortVersion();\n var vbr;\n var revision = 0;\n var revMethod;\n var vbrTypeTranslator = [1, 5, 3, 2, 4, 0, 3];\n var lowpass = 0 | (gfp.lowpassfreq / 100 + 0.5 > 255 ? 255 : gfp.lowpassfreq / 100 + 0.5);\n var peakSignalAmplitude = 0;\n var radioReplayGain = 0;\n var audiophileReplayGain = 0;\n var noiseShaping = gfp.internal_flags.noise_shaping;\n var stereoMode = 0;\n var nonOptimal = 0;\n var sourceFreq = 0;\n var misc = 0;\n var musicCRC = 0;\n var expNPsyTune = (gfp.exp_nspsytune & 1) != 0;\n var safeJoint = (gfp.exp_nspsytune & 2) != 0;\n var noGapMore = false;\n var noGapPrevious = false;\n var noGapCount = gfp.internal_flags.nogap_total;\n var noGapCurr = gfp.internal_flags.nogap_current;\n var athType = gfp.ATHtype;\n var flags = 0;\n var abrBitrate;\n switch (gfp.VBR) {\n case vbr_abr:\n abrBitrate = gfp.VBR_mean_bitrate_kbps;\n break;\n case vbr_off:\n abrBitrate = gfp.brate;\n break;\n default:\n abrBitrate = gfp.VBR_min_bitrate_kbps;\n }\n if (gfp.VBR.ordinal() < vbrTypeTranslator.length) {\n vbr = vbrTypeTranslator[gfp.VBR.ordinal()];\n } else\n vbr = 0;\n revMethod = 16 * revision + vbr;\n if (gfc.findReplayGain) {\n if (gfc.RadioGain > 510)\n gfc.RadioGain = 510;\n if (gfc.RadioGain < -510)\n gfc.RadioGain = -510;\n radioReplayGain = 8192;\n radioReplayGain |= 3072;\n if (gfc.RadioGain >= 0) {\n radioReplayGain |= gfc.RadioGain;\n } else {\n radioReplayGain |= 512;\n radioReplayGain |= -gfc.RadioGain;\n }\n }\n if (gfc.findPeakSample) {\n peakSignalAmplitude = Math.abs(\n 0 | gfc.PeakSample / 32767 * Math.pow(2, 23) + 0.5\n );\n }\n if (noGapCount != -1) {\n if (noGapCurr > 0)\n noGapPrevious = true;\n if (noGapCurr < noGapCount - 1)\n noGapMore = true;\n }\n flags = athType + ((expNPsyTune ? 1 : 0) << 4) + ((safeJoint ? 1 : 0) << 5) + ((noGapMore ? 1 : 0) << 6) + ((noGapPrevious ? 1 : 0) << 7);\n if (quality < 0)\n quality = 0;\n switch (gfp.mode) {\n case MONO:\n stereoMode = 0;\n break;\n case STEREO:\n stereoMode = 1;\n break;\n case DUAL_CHANNEL:\n stereoMode = 2;\n break;\n case JOINT_STEREO:\n if (gfp.force_ms)\n stereoMode = 4;\n else\n stereoMode = 3;\n break;\n case NOT_SET:\n default:\n stereoMode = 7;\n break;\n }\n if (gfp.in_samplerate <= 32e3)\n sourceFreq = 0;\n else if (gfp.in_samplerate == 48e3)\n sourceFreq = 2;\n else if (gfp.in_samplerate > 48e3)\n sourceFreq = 3;\n else {\n sourceFreq = 1;\n }\n if (gfp.short_blocks == ShortBlock.short_block_forced || gfp.short_blocks == ShortBlock.short_block_dispensed || gfp.lowpassfreq == -1 && gfp.highpassfreq == -1 || gfp.scale_left < gfp.scale_right || gfp.scale_left > gfp.scale_right || gfp.disable_reservoir && gfp.brate < 320 || gfp.noATH || gfp.ATHonly || athType == 0 || gfp.in_samplerate <= 32e3) {\n nonOptimal = 1;\n }\n misc = noiseShaping + (stereoMode << 2) + (nonOptimal << 5) + (sourceFreq << 6);\n musicCRC = gfc.nMusicCRC;\n createInteger(streamBuffer, streamBufferPos + bytesWritten, quality);\n bytesWritten += 4;\n for (var j = 0; j < 9; j++) {\n streamBuffer[streamBufferPos + bytesWritten + j] = 255 & version2.charAt(j);\n }\n bytesWritten += 9;\n streamBuffer[streamBufferPos + bytesWritten] = 255 & revMethod;\n bytesWritten++;\n streamBuffer[streamBufferPos + bytesWritten] = 255 & lowpass;\n bytesWritten++;\n createInteger(\n streamBuffer,\n streamBufferPos + bytesWritten,\n peakSignalAmplitude\n );\n bytesWritten += 4;\n createShort(streamBuffer, streamBufferPos + bytesWritten, radioReplayGain);\n bytesWritten += 2;\n createShort(\n streamBuffer,\n streamBufferPos + bytesWritten,\n audiophileReplayGain\n );\n bytesWritten += 2;\n streamBuffer[streamBufferPos + bytesWritten] = 255 & flags;\n bytesWritten++;\n if (abrBitrate >= 255)\n streamBuffer[streamBufferPos + bytesWritten] = 255;\n else\n streamBuffer[streamBufferPos + bytesWritten] = 255 & abrBitrate;\n bytesWritten++;\n streamBuffer[streamBufferPos + bytesWritten] = 255 & encDelay >> 4;\n streamBuffer[streamBufferPos + bytesWritten + 1] = 255 & (encDelay << 4) + (encPadding >> 8);\n streamBuffer[streamBufferPos + bytesWritten + 2] = 255 & encPadding;\n bytesWritten += 3;\n streamBuffer[streamBufferPos + bytesWritten] = 255 & misc;\n bytesWritten++;\n streamBuffer[streamBufferPos + bytesWritten++] = 0;\n createShort(streamBuffer, streamBufferPos + bytesWritten, gfp.preset);\n bytesWritten += 2;\n createInteger(streamBuffer, streamBufferPos + bytesWritten, musicLength);\n bytesWritten += 4;\n createShort(streamBuffer, streamBufferPos + bytesWritten, musicCRC);\n bytesWritten += 2;\n for (var i = 0; i < bytesWritten; i++) {\n crc = crcUpdateLookup(streamBuffer[streamBufferPos + i], crc);\n }\n createShort(streamBuffer, streamBufferPos + bytesWritten, crc);\n bytesWritten += 2;\n return bytesWritten;\n }\n function skipId3v2(fpStream) {\n fpStream.seek(0);\n var id3v2Header = new_byte$1(10);\n fpStream.readFully(id3v2Header);\n var id3v2TagSize;\n if (!new String(id3v2Header, \"ISO-8859-1\").startsWith(\"ID3\")) {\n id3v2TagSize = ((id3v2Header[6] & 127) << 21 | (id3v2Header[7] & 127) << 14 | (id3v2Header[8] & 127) << 7 | id3v2Header[9] & 127) + id3v2Header.length;\n } else {\n id3v2TagSize = 0;\n }\n return id3v2TagSize;\n }\n this.getLameTagFrame = function(gfp, buffer) {\n var gfc = gfp.internal_flags;\n if (!gfp.bWriteVbrTag) {\n return 0;\n }\n if (gfc.Class_ID != Lame.LAME_ID) {\n return 0;\n }\n if (gfc.VBR_seek_table.pos <= 0) {\n return 0;\n }\n if (buffer.length < gfc.VBR_seek_table.TotalFrameSize) {\n return gfc.VBR_seek_table.TotalFrameSize;\n }\n Arrays.fill(buffer, 0, gfc.VBR_seek_table.TotalFrameSize, 0);\n setLameTagFrameHeader(gfp, buffer);\n var toc = new_byte$1(NUMTOCENTRIES);\n if (gfp.free_format) {\n for (var i = 1; i < NUMTOCENTRIES; ++i)\n toc[i] = 255 & 255 * i / 100;\n } else {\n xingSeekTable(gfc.VBR_seek_table, toc);\n }\n var streamIndex = gfc.sideinfo_len;\n if (gfp.error_protection)\n streamIndex -= 2;\n if (gfp.VBR == VbrMode.vbr_off) {\n buffer[streamIndex++] = 255 & VBRTag1.charAt(0);\n buffer[streamIndex++] = 255 & VBRTag1.charAt(1);\n buffer[streamIndex++] = 255 & VBRTag1.charAt(2);\n buffer[streamIndex++] = 255 & VBRTag1.charAt(3);\n } else {\n buffer[streamIndex++] = 255 & VBRTag0.charAt(0);\n buffer[streamIndex++] = 255 & VBRTag0.charAt(1);\n buffer[streamIndex++] = 255 & VBRTag0.charAt(2);\n buffer[streamIndex++] = 255 & VBRTag0.charAt(3);\n }\n createInteger(\n buffer,\n streamIndex,\n FRAMES_FLAG + BYTES_FLAG + TOC_FLAG + VBR_SCALE_FLAG\n );\n streamIndex += 4;\n createInteger(buffer, streamIndex, gfc.VBR_seek_table.nVbrNumFrames);\n streamIndex += 4;\n var streamSize = gfc.VBR_seek_table.nBytesWritten + gfc.VBR_seek_table.TotalFrameSize;\n createInteger(buffer, streamIndex, 0 | streamSize);\n streamIndex += 4;\n System.arraycopy(toc, 0, buffer, streamIndex, toc.length);\n streamIndex += toc.length;\n if (gfp.error_protection) {\n bs.CRC_writeheader(gfc, buffer);\n }\n var crc = 0;\n for (var i = 0; i < streamIndex; i++)\n crc = crcUpdateLookup(buffer[i], crc);\n streamIndex += putLameVBR(gfp, streamSize, buffer, streamIndex, crc);\n return gfc.VBR_seek_table.TotalFrameSize;\n };\n this.putVbrTag = function(gfp, stream) {\n var gfc = gfp.internal_flags;\n if (gfc.VBR_seek_table.pos <= 0)\n return -1;\n stream.seek(stream.length());\n if (stream.length() == 0)\n return -1;\n var id3v2TagSize = skipId3v2(stream);\n stream.seek(id3v2TagSize);\n var buffer = new_byte$1(MAXFRAMESIZE);\n var bytes = getLameTagFrame(gfp, buffer);\n if (bytes > buffer.length) {\n return -1;\n }\n if (bytes < 1) {\n return 0;\n }\n stream.write(buffer, 0, bytes);\n return 0;\n };\n}\nvar new_byte = common.new_byte;\nvar assert = common.assert;\nfunction GetAudio() {\n this.setModules = function(parse2, mpg2) {\n };\n}\nfunction Parse() {\n this.setModules = function(ver2, id32, pre2) {\n };\n}\nfunction MPGLib() {\n}\nfunction ID3Tag() {\n this.setModules = function(_bits, _ver) {\n };\n}\nfunction Mp3Encoder$1(channels, samplerate, kbps) {\n if (arguments.length != 3) {\n console.error(\"WARN: Mp3Encoder(channels, samplerate, kbps) not specified\");\n channels = 1;\n samplerate = 44100;\n kbps = 128;\n }\n var lame = new Lame$1();\n var gaud = new GetAudio();\n var ga = new GainAnalysis$1();\n var bs = new BitStream$1();\n var p2 = new Presets();\n var qupvt = new QuantizePVT();\n var qu = new Quantize();\n var vbr = new VBRTag();\n var ver = new Version();\n var id3 = new ID3Tag();\n var rv = new Reservoir();\n var tak = new Takehiro();\n var parse = new Parse();\n var mpg = new MPGLib();\n lame.setModules(ga, bs, p2, qupvt, qu, vbr, ver, id3, mpg);\n bs.setModules(ga, mpg, ver, vbr);\n id3.setModules(bs, ver);\n p2.setModules(lame);\n qu.setModules(bs, rv, qupvt, tak);\n qupvt.setModules(tak, rv, lame.enc.psy);\n rv.setModules(bs);\n tak.setModules(qupvt);\n vbr.setModules(lame, bs, ver);\n gaud.setModules(parse, mpg);\n parse.setModules(ver, id3, p2);\n var gfp = lame.lame_init();\n gfp.num_channels = channels;\n gfp.in_samplerate = samplerate;\n gfp.brate = kbps;\n gfp.mode = MPEGMode.STEREO;\n gfp.quality = 3;\n gfp.bWriteVbrTag = false;\n gfp.disable_reservoir = true;\n gfp.write_id3tag_automatic = false;\n lame.lame_init_params(gfp);\n var maxSamples = 1152;\n var mp3buf_size = 0 | 1.25 * maxSamples + 7200;\n var mp3buf = new_byte(mp3buf_size);\n this.encodeBuffer = function(left, right) {\n if (channels == 1) {\n right = left;\n }\n assert(left.length == right.length);\n if (left.length > maxSamples) {\n maxSamples = left.length;\n mp3buf_size = 0 | 1.25 * maxSamples + 7200;\n mp3buf = new_byte(mp3buf_size);\n }\n var _sz = lame.lame_encode_buffer(\n gfp,\n left,\n right,\n left.length,\n mp3buf,\n 0,\n mp3buf_size\n );\n return new Int8Array(mp3buf.subarray(0, _sz));\n };\n this.flush = function() {\n var _sz = lame.lame_encode_flush(gfp, mp3buf, 0, mp3buf_size);\n return new Int8Array(mp3buf.subarray(0, _sz));\n };\n}\nfunction fourccToInt(fourcc) {\n return fourcc.charCodeAt(0) << 24 | fourcc.charCodeAt(1) << 16 | fourcc.charCodeAt(2) << 8 | fourcc.charCodeAt(3);\n}\nfourccToInt(\"RIFF\");\nfourccToInt(\"WAVE\");\nfourccToInt(\"fmt \");\nfourccToInt(\"data\");\nclass Mp3Encoder {\n constructor(config) {\n this.bitRate = config.bitRate;\n this.sampleRate = config.sampleRate;\n this.dataBuffer = [];\n this.encoder = new Mp3Encoder$1(1, this.sampleRate, this.bitRate);\n }\n encode(arrayBuffer) {\n const maxSamples = 1152;\n const samples = this._convertBuffer(arrayBuffer);\n let remaining = samples.length;\n for (let i = 0; remaining >= 0; i += maxSamples) {\n const left = samples.subarray(i, i + maxSamples);\n const buffer = this.encoder.encodeBuffer(left);\n this.dataBuffer.push(new Int8Array(buffer));\n remaining -= maxSamples;\n }\n }\n finish() {\n this.dataBuffer.push(this.encoder.flush());\n const blob = new Blob(this.dataBuffer, { type: \"audio/mp3\" });\n this.dataBuffer = [];\n return {\n id: Date.now(),\n blob,\n url: URL.createObjectURL(blob)\n };\n }\n _floatTo16BitPCM(input, output) {\n for (let i = 0; i < input.length; i++) {\n const s = Math.max(-1, Math.min(1, input[i]));\n output[i] = s < 0 ? s * 32768 : s * 32767;\n }\n }\n _convertBuffer(arrayBuffer) {\n const data = new Float32Array(arrayBuffer);\n const out = new Int16Array(arrayBuffer.length);\n this._floatTo16BitPCM(data, out);\n return out;\n }\n}\nclass Recorder {\n constructor(options2 = {}) {\n this.beforeRecording = options2.beforeRecording;\n this.pauseRecording = options2.pauseRecording;\n this.afterRecording = options2.afterRecording;\n this.micFailed = options2.micFailed;\n this.encoderOptions = {\n bitRate: options2.bitRate,\n sampleRate: options2.sampleRate\n };\n this.bufferSize = 4096;\n this.records = [];\n this.isPause = false;\n this.isRecording = false;\n this.duration = 0;\n this.volume = 0;\n this._duration = 0;\n }\n start() {\n const constraints = {\n video: false,\n audio: {\n channelCount: 1,\n echoCancellation: false\n }\n };\n this.beforeRecording && this.beforeRecording(\"start recording\");\n navigator.mediaDevices.getUserMedia(constraints).then(this._micCaptured.bind(this)).catch(this._micError.bind(this));\n this.isPause = false;\n this.isRecording = true;\n if (!this.lameEncoder) {\n this.lameEncoder = new Mp3Encoder(this.encoderOptions);\n }\n }\n stop() {\n this.stream.getTracks().forEach((track2) => track2.stop());\n this.input.disconnect();\n this.processor.disconnect();\n this.context.close();\n let record = null;\n record = this.lameEncoder.finish();\n record.duration = this.duration;\n this.records.push(record);\n this._duration = 0;\n this.duration = 0;\n this.isPause = false;\n this.isRecording = false;\n this.afterRecording && this.afterRecording(record);\n }\n pause() {\n this.stream.getTracks().forEach((track2) => track2.stop());\n this.input.disconnect();\n this.processor.disconnect();\n this._duration = this.duration;\n this.isPause = true;\n this.pauseRecording && this.pauseRecording(\"pause recording\");\n }\n _micCaptured(stream) {\n this.context = new (window.AudioContext || window.webkitAudioContext)();\n this.duration = this._duration;\n this.input = this.context.createMediaStreamSource(stream);\n this.processor = this.context.createScriptProcessor(this.bufferSize, 1, 1);\n this.stream = stream;\n this.processor.onaudioprocess = (ev) => {\n const sample = ev.inputBuffer.getChannelData(0);\n let sum = 0;\n if (this.lameEncoder) {\n this.lameEncoder.encode(sample);\n }\n for (let i = 0; i < sample.length; ++i) {\n sum += sample[i] * sample[i];\n }\n this.duration = parseFloat(this._duration) + parseFloat(this.context.currentTime.toFixed(2));\n this.volume = Math.sqrt(sum / sample.length).toFixed(2);\n };\n this.input.connect(this.processor);\n this.processor.connect(this.context.destination);\n }\n _micError(error) {\n this.micFailed && this.micFailed(error);\n }\n}\nfunction detectMobile() {\n var userAgent = getUserAgent();\n var userAgentPart = userAgent.substr(0, 4);\n return /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(\n userAgent\n ) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw(n|u)|c55\\/|capi|ccwa|cdm|cell|chtm|cldc|cmd|co(mp|nd)|craw|da(it|ll|ng)|dbte|dcs|devi|dica|dmob|do(c|p)o|ds(12|d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(|_)|g1 u|g560|gene|gf5|gmo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd(m|p|t)|hei|hi(pt|ta)|hp( i|ip)|hsc|ht(c(| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i(20|go|ma)|i230|iac( ||\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|[a-w])|libw|lynx|m1w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|mcr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|([1-8]|c))|phil|pire|pl(ay|uc)|pn2|po(ck|rt|se)|prox|psio|ptg|qaa|qc(07|12|21|32|60|[2-7]|i)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h|oo|p)|sdk\\/|se(c(|0|1)|47|mc|nd|ri)|sgh|shar|sie(|m)|sk0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h|v|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl|tdg|tel(i|m)|tim|tmo|to(pl|sh)|ts(70|m|m3|m5)|tx9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas|your|zeto|zte/i.test(\n userAgentPart\n );\n}\nfunction getUserAgent() {\n var userAgent = navigator.userAgent || navigator.vendor || window.opera || null;\n if (!userAgent)\n throw new Error(\"Failed to look for user agent information.\");\n return userAgent;\n}\nconst _sfc_main$a = {\n name: \"RoomFooter\",\n components: {\n SvgIcon,\n EmojiPickerContainer,\n RoomFiles,\n RoomMessageReply,\n RoomUsersTag,\n RoomEmojis,\n RoomTemplatesText\n },\n directives: {\n clickOutside: vClickOutside\n },\n props: {\n room: { type: Object, required: true },\n roomId: { type: [String, Number], required: true },\n roomMessage: { type: String, default: null },\n textFormatting: { type: Object, required: true },\n linkOptions: { type: Object, required: true },\n textMessages: { type: Object, required: true },\n showSendIcon: { type: Boolean, required: true },\n showFiles: { type: Boolean, required: true },\n showAudio: { type: Boolean, required: true },\n showEmojis: { type: Boolean, required: true },\n showFooter: { type: Boolean, required: true },\n acceptedFiles: { type: String, required: true },\n textareaActionEnabled: { type: Boolean, required: true },\n textareaAutoFocus: { type: Boolean, required: true },\n userTagsEnabled: { type: Boolean, required: true },\n emojisSuggestionEnabled: { type: Boolean, required: true },\n templatesText: { type: Array, default: null },\n audioBitRate: { type: Number, required: true },\n audioSampleRate: { type: Number, required: true },\n initReplyMessage: { type: Object, default: null },\n initEditMessage: { type: Object, default: null },\n droppedFiles: { type: Array, default: null },\n emojiDataSource: { type: String, default: void 0 }\n },\n emits: [\n \"edit-message\",\n \"send-message\",\n \"update-edited-message-id\",\n \"textarea-action-handler\",\n \"typing-message\"\n ],\n data() {\n return {\n message: \"\",\n editedMessage: {},\n messageReply: null,\n cursorRangePosition: null,\n files: [],\n fileDialog: false,\n selectUsersTagItem: null,\n selectEmojiItem: null,\n selectTemplatesTextItem: null,\n format: \"mp3\",\n activeUpOrDownEmojis: null,\n activeUpOrDownUsersTag: null,\n activeUpOrDownTemplatesText: null,\n emojisDB: new Database({ dataSource: this.emojiDataSource }),\n emojiOpened: false,\n keepKeyboardOpen: false,\n filteredEmojis: [],\n filteredUsersTag: [],\n selectedUsersTag: [],\n filteredTemplatesText: [],\n recorder: this.initRecorder(),\n isRecording: false\n };\n },\n computed: {\n isMessageEmpty() {\n return !this.files.length && !this.message.trim();\n },\n isFileLoading() {\n return this.files.some((e) => e.loading);\n },\n recordedTime() {\n return new Date(this.recorder.duration * 1e3).toISOString().substr(14, 5);\n },\n shadowFooter() {\n return !!this.filteredEmojis.length || !!this.filteredUsersTag.length || !!this.filteredTemplatesText.length || !!this.files.length || !!this.messageReply;\n }\n },\n watch: {\n roomId() {\n this.resetMessage(true, true);\n if (this.roomMessage) {\n this.message = this.roomMessage;\n setTimeout(() => this.onChangeInput());\n }\n },\n message(val) {\n this.getTextareaRef().value = val;\n },\n roomMessage: {\n immediate: true,\n handler(val) {\n if (val)\n this.message = this.roomMessage;\n }\n },\n editedMessage(val) {\n this.$emit(\"update-edited-message-id\", val._id);\n },\n initReplyMessage(val) {\n if (val) {\n this.replyMessage(val);\n }\n },\n initEditMessage(val) {\n if (val) {\n this.editMessage(val);\n }\n },\n droppedFiles(val) {\n if (val) {\n this.onFileChange(val);\n }\n }\n },\n mounted() {\n const isMobile = detectMobile();\n let isComposed = true;\n this.getTextareaRef().addEventListener(\"keyup\", (e) => {\n if (e.key === \"Enter\" && !e.shiftKey && !this.fileDialog) {\n if (isMobile) {\n this.message = this.message + \"\\n\";\n setTimeout(() => this.onChangeInput());\n } else if (isComposed && !this.filteredEmojis.length && !this.filteredUsersTag.length && !this.filteredTemplatesText.length) {\n this.sendMessage();\n }\n }\n isComposed = !e.isComposing;\n setTimeout(() => {\n this.updateFooterLists();\n }, 60);\n });\n this.getTextareaRef().addEventListener(\"click\", () => {\n if (isMobile)\n this.keepKeyboardOpen = true;\n this.updateFooterLists();\n });\n this.getTextareaRef().addEventListener(\"blur\", () => {\n setTimeout(() => {\n this.resetFooterList();\n }, 100);\n if (isMobile)\n setTimeout(() => this.keepKeyboardOpen = false);\n });\n },\n beforeUnmount() {\n this.stopRecorder();\n },\n methods: {\n getTextareaRef() {\n return this.$refs.roomTextarea;\n },\n focusTextarea(disableMobileFocus) {\n if (detectMobile() && disableMobileFocus)\n return;\n if (!this.getTextareaRef())\n return;\n this.getTextareaRef().focus();\n if (this.cursorRangePosition) {\n setTimeout(() => {\n this.getTextareaRef().setSelectionRange(\n this.cursorRangePosition,\n this.cursorRangePosition\n );\n this.cursorRangePosition = null;\n });\n }\n },\n onChangeInput() {\n var _a, _b, _c;\n if (((_a = this.getTextareaRef()) == null ? void 0 : _a.value) || ((_b = this.getTextareaRef()) == null ? void 0 : _b.value) === \"\") {\n this.message = (_c = this.getTextareaRef()) == null ? void 0 : _c.value;\n }\n this.keepKeyboardOpen = true;\n this.resizeTextarea();\n this.$emit(\"typing-message\", this.message);\n },\n resizeTextarea() {\n const el = this.getTextareaRef();\n if (!el)\n return;\n const padding = window.getComputedStyle(el, null).getPropertyValue(\"padding-top\").replace(\"px\", \"\");\n el.style.height = 0;\n el.style.height = el.scrollHeight - padding * 2 + \"px\";\n },\n escapeTextarea() {\n if (this.filteredEmojis.length)\n this.filteredEmojis = [];\n else if (this.filteredUsersTag.length)\n this.filteredUsersTag = [];\n else if (this.filteredTemplatesText.length) {\n this.filteredTemplatesText = [];\n } else\n this.resetMessage();\n },\n onPasteImage(pasteEvent) {\n var _a;\n const items = (_a = pasteEvent.clipboardData) == null ? void 0 : _a.items;\n if (items) {\n Array.from(items).forEach((item) => {\n if (item.type.includes(\"image\")) {\n const blob = item.getAsFile();\n this.onFileChange([blob]);\n }\n });\n }\n },\n updateActiveUpOrDown(event, direction) {\n if (this.filteredEmojis.length) {\n this.activeUpOrDownEmojis = direction;\n event.preventDefault();\n } else if (this.filteredUsersTag.length) {\n this.activeUpOrDownUsersTag = direction;\n event.preventDefault();\n } else if (this.filteredTemplatesText.length) {\n this.activeUpOrDownTemplatesText = direction;\n event.preventDefault();\n }\n },\n selectItem() {\n if (this.filteredEmojis.length) {\n this.selectEmojiItem = true;\n } else if (this.filteredUsersTag.length) {\n this.selectUsersTagItem = true;\n } else if (this.filteredTemplatesText.length) {\n this.selectTemplatesTextItem = true;\n }\n },\n selectEmoji(emoji) {\n this.selectEmojiItem = false;\n if (!emoji)\n return;\n const { position, endPosition } = this.getCharPosition(\":\");\n this.message = this.message.substr(0, position - 1) + emoji + this.message.substr(endPosition, this.message.length - 1);\n this.cursorRangePosition = position;\n this.focusTextarea();\n },\n selectTemplateText(template) {\n this.selectTemplatesTextItem = false;\n if (!template)\n return;\n const { position, endPosition } = this.getCharPosition(\"/\");\n const space = this.message.substr(endPosition, endPosition).length ? \"\" : \" \";\n this.message = this.message.substr(0, position - 1) + template.text + space + this.message.substr(endPosition, this.message.length - 1);\n this.cursorRangePosition = position + template.text.length + space.length + 1;\n this.focusTextarea();\n },\n addEmoji(emoji) {\n this.message += emoji.unicode;\n this.focusTextarea(true);\n },\n launchFilePicker() {\n this.$refs.file.value = \"\";\n this.$refs.file.click();\n },\n async onFileChange(files) {\n this.fileDialog = true;\n this.focusTextarea();\n Array.from(files).forEach(async (file) => {\n const fileURL = URL.createObjectURL(file);\n const typeIndex = file.name.lastIndexOf(\".\");\n this.files.push({\n loading: true,\n name: file.name.substring(0, typeIndex),\n size: file.size,\n type: file.type,\n extension: file.name.substring(typeIndex + 1),\n localUrl: fileURL\n });\n const blobFile = await fetch(fileURL).then((res) => res.blob());\n let loadedFile = this.files.find((file2) => file2.localUrl === fileURL);\n if (loadedFile) {\n loadedFile.blob = blobFile;\n loadedFile.loading = false;\n delete loadedFile.loading;\n }\n });\n setTimeout(() => this.fileDialog = false, 500);\n },\n removeFile(index) {\n this.files.splice(index, 1);\n this.focusTextarea();\n },\n toggleRecorder(recording) {\n this.isRecording = recording;\n if (!this.recorder.isRecording) {\n setTimeout(() => this.recorder.start(), 200);\n } else {\n try {\n this.recorder.stop();\n const record = this.recorder.records[0];\n this.files.push({\n blob: record.blob,\n name: `audio.${this.format}`,\n size: record.blob.size,\n duration: record.duration,\n type: record.blob.type,\n audio: true,\n localUrl: URL.createObjectURL(record.blob)\n });\n this.recorder = this.initRecorder();\n this.sendMessage();\n } catch {\n setTimeout(() => this.stopRecorder(), 100);\n }\n }\n },\n stopRecorder() {\n if (this.recorder.isRecording) {\n try {\n this.recorder.stop();\n this.recorder = this.initRecorder();\n } catch {\n setTimeout(() => this.stopRecorder(), 100);\n }\n }\n },\n textareaActionHandler() {\n this.$emit(\"textarea-action-handler\", this.message);\n },\n sendMessage() {\n var _a;\n let message = this.message.trim();\n if (!this.files.length && !message)\n return;\n if (this.isFileLoading)\n return;\n this.selectedUsersTag.forEach((user) => {\n message = message.replace(\n `@${user.username}`,\n `${user._id}`\n );\n });\n const files = this.files.length ? this.files : null;\n if (this.editedMessage._id) {\n if (this.editedMessage.content !== message || ((_a = this.editedMessage.files) == null ? void 0 : _a.length) || this.files.length) {\n this.$emit(\"edit-message\", {\n messageId: this.editedMessage._id,\n newContent: message,\n files,\n replyMessage: this.messageReply,\n usersTag: this.selectedUsersTag\n });\n }\n } else {\n this.$emit(\"send-message\", {\n content: message,\n files,\n replyMessage: this.messageReply,\n usersTag: this.selectedUsersTag\n });\n }\n this.resetMessage(true);\n },\n editMessage(message) {\n this.resetMessage();\n this.editedMessage = { ...message };\n let messageContent = message.content;\n const initialContent = messageContent;\n const firstTag = \"\";\n const secondTag = \"\";\n const usertags = [\n ...messageContent.matchAll(new RegExp(firstTag, \"gi\"))\n ].map((a) => a.index);\n usertags.forEach((index) => {\n const userId = initialContent.substring(\n index + firstTag.length,\n initialContent.indexOf(secondTag, index)\n );\n const user = this.room.users.find((user2) => user2._id === userId);\n messageContent = messageContent.replace(\n `${firstTag}${userId}${secondTag}`,\n `@${(user == null ? void 0 : user.username) || \"unknown\"}`\n );\n this.selectUserTag(user, true);\n });\n this.message = messageContent;\n if (message.files) {\n this.files = [...message.files];\n }\n setTimeout(() => this.resizeTextarea());\n },\n replyMessage(message) {\n this.editedMessage = {};\n this.messageReply = message;\n this.focusTextarea();\n },\n updateFooterLists() {\n this.updateFooterList(\"@\");\n this.updateFooterList(\":\");\n this.updateFooterList(\"/\");\n },\n updateFooterList(tagChar) {\n if (!this.getTextareaRef())\n return;\n if (tagChar === \":\" && !this.emojisSuggestionEnabled) {\n return;\n }\n if (tagChar === \"@\" && (!this.userTagsEnabled || !this.room.users)) {\n return;\n }\n if (tagChar === \"/\" && !this.templatesText) {\n return;\n }\n const textareaCursorPosition = this.getTextareaRef().selectionStart;\n let position = textareaCursorPosition;\n while (position > 0 && this.message.charAt(position - 1) !== tagChar && (this.message.charAt(position - 1) !== \" \" || tagChar !== \":\")) {\n position--;\n }\n const beforeTag = this.message.charAt(position - 2);\n const notLetterNumber = !beforeTag.match(/^[0-9a-zA-Z]+$/);\n if (this.message.charAt(position - 1) === tagChar && (!beforeTag || beforeTag === \" \" || notLetterNumber)) {\n const query = this.message.substring(position, textareaCursorPosition);\n if (tagChar === \":\") {\n this.updateEmojis(query);\n } else if (tagChar === \"@\") {\n this.updateShowUsersTag(query);\n } else if (tagChar === \"/\") {\n this.updateShowTemplatesText(query);\n }\n } else {\n this.resetFooterList(tagChar);\n }\n },\n updateShowUsersTag(query) {\n this.filteredUsersTag = filteredItems(\n this.room.users,\n \"username\",\n query,\n true\n ).filter((user) => user._id !== this.currentUserId);\n },\n selectUserTag(user, editMode = false) {\n this.selectUsersTagItem = false;\n if (!user)\n return;\n const { position, endPosition } = this.getCharPosition(\"@\");\n const space = this.message.substr(endPosition, endPosition).length ? \"\" : \" \";\n this.message = this.message.substr(0, position) + user.username + space + this.message.substr(endPosition, this.message.length - 1);\n this.selectedUsersTag = [...this.selectedUsersTag, { ...user }];\n if (!editMode) {\n this.cursorRangePosition = position + user.username.length + space.length + 1;\n }\n this.focusTextarea();\n },\n updateShowTemplatesText(query) {\n this.filteredTemplatesText = filteredItems(\n this.templatesText,\n \"tag\",\n query,\n true\n );\n },\n getCharPosition(tagChar) {\n const cursorPosition = this.getTextareaRef().selectionStart;\n let position = cursorPosition;\n while (position > 0 && this.message.charAt(position - 1) !== tagChar) {\n position--;\n }\n const endPosition = this.getTextareaRef().selectionEnd;\n return { position, endPosition };\n },\n async updateEmojis(query) {\n if (!query)\n return;\n const emojis = await this.emojisDB.getEmojiBySearchQuery(query);\n this.filteredEmojis = emojis.map((emoji) => emoji.unicode);\n },\n resetFooterList(tagChar = null) {\n if (tagChar === \":\") {\n this.filteredEmojis = [];\n } else if (tagChar === \"@\") {\n this.filteredUsersTag = [];\n } else if (tagChar === \"/\") {\n this.filteredTemplatesText = [];\n } else {\n this.filteredEmojis = [];\n this.filteredUsersTag = [];\n this.filteredTemplatesText = [];\n }\n },\n resetMessage(disableMobileFocus = false, initRoom = false) {\n if (!initRoom) {\n this.$emit(\"typing-message\", null);\n }\n this.selectedUsersTag = [];\n this.resetFooterList();\n this.resetTextareaSize();\n this.message = \"\";\n this.editedMessage = {};\n this.messageReply = null;\n this.files = [];\n this.emojiOpened = false;\n this.preventKeyboardFromClosing();\n if (this.textareaAutoFocus || !initRoom) {\n setTimeout(() => this.focusTextarea(disableMobileFocus));\n }\n },\n resetTextareaSize() {\n if (this.getTextareaRef()) {\n this.getTextareaRef().style.height = \"20px\";\n }\n },\n preventKeyboardFromClosing() {\n if (this.keepKeyboardOpen)\n this.getTextareaRef().focus();\n },\n initRecorder() {\n this.isRecording = false;\n return new Recorder({\n bitRate: Number(this.audioBitRate),\n sampleRate: Number(this.audioSampleRate),\n beforeRecording: null,\n afterRecording: null,\n pauseRecording: null,\n micFailed: this.micFailed\n });\n },\n micFailed() {\n this.isRecording = false;\n this.recorder = this.initRecorder();\n }\n }\n};\nconst _hoisted_1$a = {\n key: 0,\n class: \"vac-icon-textarea-left\"\n};\nconst _hoisted_2$8 = /* @__PURE__ */ createBaseVNode(\"div\", { class: \"vac-dot-audio-record\" }, null, -1);\nconst _hoisted_3$8 = { class: \"vac-dot-audio-record-time\" };\nconst _hoisted_4$8 = [\"placeholder\"];\nconst _hoisted_5$6 = { class: \"vac-icon-textarea\" };\nconst _hoisted_6$3 = { key: 1 };\nconst _hoisted_7$3 = [\"accept\"];\nfunction _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_room_emojis = resolveComponent(\"room-emojis\");\n const _component_room_users_tag = resolveComponent(\"room-users-tag\");\n const _component_room_templates_text = resolveComponent(\"room-templates-text\");\n const _component_room_message_reply = resolveComponent(\"room-message-reply\");\n const _component_room_files = resolveComponent(\"room-files\");\n const _component_svg_icon = resolveComponent(\"svg-icon\");\n const _component_emoji_picker_container = resolveComponent(\"emoji-picker-container\");\n const _directive_click_outside = resolveDirective(\"click-outside\");\n return withDirectives((openBlock(), createElementBlock(\"div\", {\n id: \"room-footer\",\n class: normalizeClass([\"vac-room-footer\", {\n \"vac-app-box-shadow\": $options.shadowFooter\n }])\n }, [\n createVNode(_component_room_emojis, {\n \"filtered-emojis\": $data.filteredEmojis,\n \"select-item\": $data.selectEmojiItem,\n \"active-up-or-down\": $data.activeUpOrDownEmojis,\n onSelectEmoji: _cache[0] || (_cache[0] = ($event) => $options.selectEmoji($event)),\n onActivateItem: _cache[1] || (_cache[1] = ($event) => $data.activeUpOrDownEmojis = 0)\n }, null, 8, [\"filtered-emojis\", \"select-item\", \"active-up-or-down\"]),\n createVNode(_component_room_users_tag, {\n \"filtered-users-tag\": $data.filteredUsersTag,\n \"select-item\": $data.selectUsersTagItem,\n \"active-up-or-down\": $data.activeUpOrDownUsersTag,\n onSelectUserTag: _cache[2] || (_cache[2] = ($event) => $options.selectUserTag($event)),\n onActivateItem: _cache[3] || (_cache[3] = ($event) => $data.activeUpOrDownUsersTag = 0)\n }, null, 8, [\"filtered-users-tag\", \"select-item\", \"active-up-or-down\"]),\n createVNode(_component_room_templates_text, {\n \"filtered-templates-text\": $data.filteredTemplatesText,\n \"select-item\": $data.selectTemplatesTextItem,\n \"active-up-or-down\": $data.activeUpOrDownTemplatesText,\n onSelectTemplateText: _cache[4] || (_cache[4] = ($event) => $options.selectTemplateText($event)),\n onActivateItem: _cache[5] || (_cache[5] = ($event) => $data.activeUpOrDownTemplatesText = 0)\n }, null, 8, [\"filtered-templates-text\", \"select-item\", \"active-up-or-down\"]),\n createVNode(_component_room_message_reply, {\n room: $props.room,\n \"message-reply\": $data.messageReply,\n \"text-formatting\": $props.textFormatting,\n \"link-options\": $props.linkOptions,\n onResetMessage: $options.resetMessage\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (i, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"room\", \"message-reply\", \"text-formatting\", \"link-options\", \"onResetMessage\"]),\n createVNode(_component_room_files, {\n files: $data.files,\n onRemoveFile: $options.removeFile,\n onResetMessage: $options.resetMessage\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (i, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"files\", \"onRemoveFile\", \"onResetMessage\"]),\n createBaseVNode(\"div\", {\n class: normalizeClass([\"vac-box-footer\", { \"vac-box-footer-border\": !$data.files.length }])\n }, [\n $props.showAudio && !$data.files.length ? (openBlock(), createElementBlock(\"div\", _hoisted_1$a, [\n $data.isRecording ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n createBaseVNode(\"div\", {\n class: \"vac-svg-button vac-icon-audio-stop\",\n onClick: _cache[6] || (_cache[6] = (...args) => $options.stopRecorder && $options.stopRecorder(...args))\n }, [\n renderSlot(_ctx.$slots, \"audio-stop-icon\", {}, () => [\n createVNode(_component_svg_icon, { name: \"close-outline\" })\n ])\n ]),\n _hoisted_2$8,\n createBaseVNode(\"div\", _hoisted_3$8, toDisplayString($options.recordedTime), 1),\n createBaseVNode(\"div\", {\n class: \"vac-svg-button vac-icon-audio-confirm\",\n onClick: _cache[7] || (_cache[7] = ($event) => $options.toggleRecorder(false))\n }, [\n renderSlot(_ctx.$slots, \"audio-check-icon\", {}, () => [\n createVNode(_component_svg_icon, { name: \"checkmark\" })\n ])\n ])\n ], 64)) : (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: \"vac-svg-button\",\n onClick: _cache[8] || (_cache[8] = ($event) => $options.toggleRecorder(true))\n }, [\n renderSlot(_ctx.$slots, \"microphone-icon\", {}, () => [\n createVNode(_component_svg_icon, {\n name: \"microphone\",\n class: \"vac-icon-microphone\"\n })\n ])\n ]))\n ])) : createCommentVNode(\"\", true),\n createBaseVNode(\"textarea\", {\n id: \"roomTextarea\",\n ref: \"roomTextarea\",\n placeholder: $props.textMessages.TYPE_MESSAGE,\n class: normalizeClass([\"vac-textarea\", {\n \"vac-textarea-outline\": $data.editedMessage._id\n }]),\n style: {\n \"min-height\": `20px`,\n \"padding-left\": `12px`\n },\n onInput: _cache[9] || (_cache[9] = (...args) => $options.onChangeInput && $options.onChangeInput(...args)),\n onKeydown: [\n _cache[10] || (_cache[10] = withKeys((...args) => $options.escapeTextarea && $options.escapeTextarea(...args), [\"esc\"])),\n _cache[11] || (_cache[11] = withKeys(withModifiers((...args) => $options.selectItem && $options.selectItem(...args), [\"exact\", \"prevent\"]), [\"enter\"])),\n _cache[13] || (_cache[13] = withKeys(withModifiers(() => {\n }, [\"exact\", \"prevent\"]), [\"tab\"])),\n _cache[14] || (_cache[14] = withKeys((...args) => $options.selectItem && $options.selectItem(...args), [\"tab\"])),\n _cache[15] || (_cache[15] = withKeys(($event) => $options.updateActiveUpOrDown($event, -1), [\"up\"])),\n _cache[16] || (_cache[16] = withKeys(($event) => $options.updateActiveUpOrDown($event, 1), [\"down\"]))\n ],\n onPaste: _cache[12] || (_cache[12] = (...args) => $options.onPasteImage && $options.onPasteImage(...args))\n }, null, 42, _hoisted_4$8),\n createBaseVNode(\"div\", _hoisted_5$6, [\n $data.editedMessage._id ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: \"vac-svg-button\",\n onClick: _cache[17] || (_cache[17] = (...args) => $options.resetMessage && $options.resetMessage(...args))\n }, [\n renderSlot(_ctx.$slots, \"edit-close-icon\", {}, () => [\n createVNode(_component_svg_icon, { name: \"close-outline\" })\n ])\n ])) : createCommentVNode(\"\", true),\n $props.showEmojis ? withDirectives((openBlock(), createElementBlock(\"div\", _hoisted_6$3, [\n renderSlot(_ctx.$slots, \"emoji-picker\", mergeProps({ emojiOpened: $data.emojiOpened }, { addEmoji: $options.addEmoji }), () => [\n createVNode(_component_emoji_picker_container, {\n \"emoji-opened\": $data.emojiOpened,\n \"position-top\": true,\n \"emoji-data-source\": $props.emojiDataSource,\n onAddEmoji: $options.addEmoji,\n onOpenEmoji: _cache[18] || (_cache[18] = ($event) => $data.emojiOpened = $event)\n }, {\n \"emoji-picker-icon\": withCtx(() => [\n renderSlot(_ctx.$slots, \"emoji-picker-icon\")\n ]),\n _: 3\n }, 8, [\"emoji-opened\", \"emoji-data-source\", \"onAddEmoji\"])\n ])\n ])), [\n [_directive_click_outside, () => $data.emojiOpened = false]\n ]) : createCommentVNode(\"\", true),\n $props.showFiles ? (openBlock(), createElementBlock(\"div\", {\n key: 2,\n class: \"vac-svg-button\",\n onClick: _cache[19] || (_cache[19] = (...args) => $options.launchFilePicker && $options.launchFilePicker(...args))\n }, [\n renderSlot(_ctx.$slots, \"paperclip-icon\", {}, () => [\n createVNode(_component_svg_icon, { name: \"paperclip\" })\n ])\n ])) : createCommentVNode(\"\", true),\n $props.textareaActionEnabled ? (openBlock(), createElementBlock(\"div\", {\n key: 3,\n class: \"vac-svg-button\",\n onClick: _cache[20] || (_cache[20] = (...args) => $options.textareaActionHandler && $options.textareaActionHandler(...args))\n }, [\n renderSlot(_ctx.$slots, \"custom-action-icon\", {}, () => [\n createVNode(_component_svg_icon, { name: \"deleted\" })\n ])\n ])) : createCommentVNode(\"\", true),\n $props.showFiles ? (openBlock(), createElementBlock(\"input\", {\n key: 4,\n ref: \"file\",\n type: \"file\",\n multiple: \"\",\n accept: $props.acceptedFiles,\n style: { \"display\": \"none\" },\n onChange: _cache[21] || (_cache[21] = ($event) => $options.onFileChange($event.target.files))\n }, null, 40, _hoisted_7$3)) : createCommentVNode(\"\", true),\n $props.showSendIcon ? (openBlock(), createElementBlock(\"div\", {\n key: 5,\n class: normalizeClass([\"vac-svg-button\", { \"vac-send-disabled\": $options.isMessageEmpty }]),\n onClick: _cache[22] || (_cache[22] = (...args) => $options.sendMessage && $options.sendMessage(...args))\n }, [\n renderSlot(_ctx.$slots, \"send-icon\", {}, () => [\n createVNode(_component_svg_icon, {\n name: \"send\",\n param: $options.isMessageEmpty || $options.isFileLoading ? \"disabled\" : \"\"\n }, null, 8, [\"param\"])\n ])\n ], 2)) : createCommentVNode(\"\", true)\n ])\n ], 2)\n ], 2)), [\n [vShow, Object.keys($props.room).length && $props.showFooter]\n ]);\n}\nvar RoomFooter = /* @__PURE__ */ _export_sfc(_sfc_main$a, [[\"render\", _sfc_render$a]]);\nconst _sfc_main$9 = {\n name: \"MessageReply\",\n components: { AudioPlayer, SvgIcon, FormatMessage },\n props: {\n message: { type: Object, required: true },\n textFormatting: { type: Object, required: true },\n linkOptions: { type: Object, required: true },\n roomUsers: { type: Array, required: true }\n },\n computed: {\n replyUsername() {\n const { senderId } = this.message.replyMessage;\n const replyUser = this.roomUsers.find((user) => user._id === senderId);\n return replyUser ? replyUser.username : \"\";\n },\n firstFile() {\n var _a, _b;\n return ((_b = (_a = this.message.replyMessage) == null ? void 0 : _a.files) == null ? void 0 : _b.length) ? this.message.replyMessage.files[0] : {};\n },\n isAudio() {\n return isAudioFile(this.firstFile);\n },\n isImage() {\n return isImageFile(this.firstFile);\n },\n isVideo() {\n return isVideoFile(this.firstFile);\n },\n isOtherFile() {\n var _a;\n return ((_a = this.message.replyMessage.files) == null ? void 0 : _a.length) && !this.isAudio && !this.isVideo && !this.isImage;\n }\n }\n};\nconst _hoisted_1$9 = { class: \"vac-reply-message\" };\nconst _hoisted_2$7 = { class: \"vac-reply-username\" };\nconst _hoisted_3$7 = {\n key: 0,\n class: \"vac-image-reply-container\"\n};\nconst _hoisted_4$7 = {\n key: 1,\n class: \"vac-video-reply-container\"\n};\nconst _hoisted_5$5 = { controls: \"\" };\nconst _hoisted_6$2 = [\"src\"];\nconst _hoisted_7$2 = {\n key: 3,\n class: \"vac-file-container\"\n};\nconst _hoisted_8$1 = { class: \"vac-text-ellipsis\" };\nconst _hoisted_9$1 = {\n key: 0,\n class: \"vac-text-ellipsis vac-text-extension\"\n};\nconst _hoisted_10$1 = { class: \"vac-reply-content\" };\nfunction _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_audio_player = resolveComponent(\"audio-player\");\n const _component_svg_icon = resolveComponent(\"svg-icon\");\n const _component_format_message = resolveComponent(\"format-message\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$9, [\n createBaseVNode(\"div\", _hoisted_2$7, toDisplayString($options.replyUsername), 1),\n $options.isImage ? (openBlock(), createElementBlock(\"div\", _hoisted_3$7, [\n createBaseVNode(\"div\", {\n class: \"vac-message-image vac-message-image-reply\",\n style: normalizeStyle({\n \"background-image\": `url('${$options.firstFile.url}')`\n })\n }, null, 4)\n ])) : $options.isVideo ? (openBlock(), createElementBlock(\"div\", _hoisted_4$7, [\n createBaseVNode(\"video\", _hoisted_5$5, [\n createBaseVNode(\"source\", {\n src: $options.firstFile.url\n }, null, 8, _hoisted_6$2)\n ])\n ])) : $options.isAudio ? (openBlock(), createBlock(_component_audio_player, {\n key: 2,\n src: $options.firstFile.url,\n \"message-selection-enabled\": false,\n onUpdateProgressTime: _cache[0] || (_cache[0] = ($event) => _ctx.progressTime = $event),\n onHoverAudioProgress: _cache[1] || (_cache[1] = ($event) => _ctx.hoverAudioProgress = $event)\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (idx, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"src\"])) : $options.isOtherFile ? (openBlock(), createElementBlock(\"div\", _hoisted_7$2, [\n createBaseVNode(\"div\", null, [\n renderSlot(_ctx.$slots, \"file-icon\", {}, () => [\n createVNode(_component_svg_icon, { name: \"file\" })\n ])\n ]),\n createBaseVNode(\"div\", _hoisted_8$1, toDisplayString($options.firstFile.name), 1),\n $options.firstFile.extension ? (openBlock(), createElementBlock(\"div\", _hoisted_9$1, toDisplayString($options.firstFile.extension), 1)) : createCommentVNode(\"\", true)\n ])) : createCommentVNode(\"\", true),\n createBaseVNode(\"div\", _hoisted_10$1, [\n createVNode(_component_format_message, {\n \"message-id\": $props.message.replyMessage._id,\n content: $props.message.replyMessage.content,\n users: $props.roomUsers,\n \"text-formatting\": $props.textFormatting,\n \"link-options\": $props.linkOptions,\n reply: true\n }, null, 8, [\"message-id\", \"content\", \"users\", \"text-formatting\", \"link-options\"])\n ])\n ]);\n}\nvar MessageReply = /* @__PURE__ */ _export_sfc(_sfc_main$9, [[\"render\", _sfc_render$9]]);\nconst _sfc_main$8 = {\n name: \"ProgressBar\",\n props: {\n progress: { type: Number, default: 0 }\n },\n data() {\n const radius = 35;\n const stroke = 4;\n const normalizedRadius = radius - stroke * 2;\n const circumference = normalizedRadius * 2 * Math.PI;\n return {\n radius,\n stroke,\n normalizedRadius,\n circumference\n };\n },\n computed: {\n strokeDashoffset() {\n return this.circumference - this.progress / 100 * this.circumference;\n }\n }\n};\nconst _hoisted_1$8 = {\n ref: \"progress\",\n class: \"vac-progress-wrapper\"\n};\nconst _hoisted_2$6 = [\"height\", \"width\"];\nconst _hoisted_3$6 = [\"stroke-dasharray\", \"stroke-width\", \"r\", \"cx\", \"cy\"];\nconst _hoisted_4$6 = { class: \"vac-progress-text\" };\nconst _hoisted_5$4 = /* @__PURE__ */ createBaseVNode(\"span\", { class: \"vac-progress-pourcent\" }, \"%\", -1);\nfunction _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createBlock(Transition, {\n name: \"vac-fade-spinner\",\n appear: \"\"\n }, {\n default: withCtx(() => [\n createBaseVNode(\"div\", _hoisted_1$8, [\n (openBlock(), createElementBlock(\"svg\", {\n height: $data.radius * 2,\n width: $data.radius * 2\n }, [\n createBaseVNode(\"circle\", {\n stroke: \"rgba(255, 255, 255, 0.7)\",\n \"stroke-dasharray\": $data.circumference + \" \" + $data.circumference,\n style: normalizeStyle({\n strokeDashoffset: $options.strokeDashoffset,\n strokeLinecap: \"round\"\n }),\n \"stroke-width\": $data.stroke,\n fill: \"transparent\",\n r: $data.normalizedRadius,\n cx: $data.radius,\n cy: $data.radius\n }, null, 12, _hoisted_3$6)\n ], 8, _hoisted_2$6)),\n createBaseVNode(\"div\", {\n class: \"vac-progress-content\",\n style: normalizeStyle({\n height: $data.radius * 2 - 19 + \"px\",\n width: $data.radius * 2 - 19 + \"px\"\n })\n }, [\n createBaseVNode(\"div\", _hoisted_4$6, [\n createTextVNode(toDisplayString($props.progress), 1),\n _hoisted_5$4\n ])\n ], 4)\n ], 512)\n ]),\n _: 1\n });\n}\nvar ProgressBar = /* @__PURE__ */ _export_sfc(_sfc_main$8, [[\"render\", _sfc_render$8]]);\nconst _sfc_main$7 = {\n name: \"MessageFile\",\n components: { SvgIcon, Loader, ProgressBar },\n props: {\n currentUserId: { type: [String, Number], required: true },\n message: { type: Object, required: true },\n file: { type: Object, required: true },\n index: { type: Number, required: true },\n messageSelectionEnabled: { type: Boolean, required: true }\n },\n emits: [\"open-file\"],\n data() {\n return {\n imageResponsive: \"\",\n imageLoading: false,\n imageHover: false\n };\n },\n computed: {\n isImageLoading() {\n return this.file.url.indexOf(\"blob:http\") !== -1 || this.imageLoading;\n },\n isImage() {\n return isImageFile(this.file);\n },\n isVideo() {\n return isVideoFile(this.file);\n }\n },\n watch: {\n file: {\n immediate: true,\n handler() {\n this.checkImgLoad();\n }\n }\n },\n mounted() {\n const ref = this.$refs[\"imageRef\" + this.index];\n if (ref) {\n this.imageResponsive = {\n maxHeight: ref.clientWidth - 18,\n loaderTop: ref.clientHeight / 2 - 9\n };\n }\n },\n methods: {\n checkImgLoad() {\n if (!isImageFile(this.file))\n return;\n this.imageLoading = true;\n const image = new Image();\n image.src = this.file.url;\n image.addEventListener(\"load\", () => this.imageLoading = false);\n },\n openFile(event, action) {\n if (!this.messageSelectionEnabled) {\n event.stopPropagation();\n this.$emit(\"open-file\", { file: this.file, action });\n }\n }\n }\n};\nconst _hoisted_1$7 = { class: \"vac-message-file-container\" };\nconst _hoisted_2$5 = {\n key: 0,\n class: \"vac-image-buttons\"\n};\nconst _hoisted_3$5 = { controls: \"\" };\nconst _hoisted_4$5 = [\"src\"];\nfunction _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_progress_bar = resolveComponent(\"progress-bar\");\n const _component_loader = resolveComponent(\"loader\");\n const _component_svg_icon = resolveComponent(\"svg-icon\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$7, [\n $options.isImage ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n ref: \"imageRef\" + $props.index,\n class: \"vac-message-image-container\",\n onMouseover: _cache[2] || (_cache[2] = ($event) => $data.imageHover = true),\n onMouseleave: _cache[3] || (_cache[3] = ($event) => $data.imageHover = false),\n onClick: _cache[4] || (_cache[4] = ($event) => $options.openFile($event, \"preview\"))\n }, [\n $props.file.progress >= 0 ? (openBlock(), createBlock(_component_progress_bar, {\n key: 0,\n progress: $props.file.progress,\n style: normalizeStyle({ top: `${$data.imageResponsive.loaderTop}px` })\n }, null, 8, [\"progress\", \"style\"])) : (openBlock(), createBlock(_component_loader, {\n key: 1,\n show: $options.isImageLoading,\n type: \"message-file\",\n \"message-id\": $props.message._id,\n style: normalizeStyle({ top: `${$data.imageResponsive.loaderTop}px` })\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (idx, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"show\", \"message-id\", \"style\"])),\n createBaseVNode(\"div\", {\n class: normalizeClass([\"vac-message-image\", {\n \"vac-blur-loading\": $options.isImageLoading && $props.message.senderId === $props.currentUserId\n }]),\n style: normalizeStyle({\n \"background-image\": `url('${$options.isImageLoading ? $props.file.preview || $props.file.url : $props.file.url}')`,\n \"max-height\": `${$data.imageResponsive.maxHeight}px`\n })\n }, [\n createVNode(Transition, { name: \"vac-fade-image\" }, {\n default: withCtx(() => [\n !$props.messageSelectionEnabled && $data.imageHover && !$options.isImageLoading ? (openBlock(), createElementBlock(\"div\", _hoisted_2$5, [\n createBaseVNode(\"div\", {\n class: \"vac-svg-button vac-button-view\",\n onClick: _cache[0] || (_cache[0] = ($event) => $options.openFile($event, \"preview\"))\n }, [\n renderSlot(_ctx.$slots, \"eye-icon_\" + $props.message._id, {}, () => [\n createVNode(_component_svg_icon, { name: \"eye\" })\n ])\n ]),\n createBaseVNode(\"div\", {\n class: \"vac-svg-button vac-button-download\",\n onClick: _cache[1] || (_cache[1] = ($event) => $options.openFile($event, \"download\"))\n }, [\n renderSlot(_ctx.$slots, \"document-icon_\" + $props.message._id, {}, () => [\n createVNode(_component_svg_icon, { name: \"document\" })\n ])\n ])\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 3\n })\n ], 6)\n ], 544)) : $options.isVideo ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n class: \"vac-video-container\",\n onClick: _cache[5] || (_cache[5] = withModifiers(($event) => $options.openFile($event, \"preview\"), [\"prevent\"]))\n }, [\n $props.file.progress >= 0 ? (openBlock(), createBlock(_component_progress_bar, {\n key: 0,\n progress: $props.file.progress\n }, null, 8, [\"progress\"])) : createCommentVNode(\"\", true),\n createBaseVNode(\"video\", _hoisted_3$5, [\n createBaseVNode(\"source\", {\n src: $props.file.url\n }, null, 8, _hoisted_4$5)\n ])\n ])) : createCommentVNode(\"\", true)\n ]);\n}\nvar MessageFile = /* @__PURE__ */ _export_sfc(_sfc_main$7, [[\"render\", _sfc_render$7]]);\nconst _sfc_main$6 = {\n name: \"MessageFiles\",\n components: { SvgIcon, FormatMessage, ProgressBar, MessageFile },\n props: {\n currentUserId: { type: [String, Number], required: true },\n message: { type: Object, required: true },\n roomUsers: { type: Array, required: true },\n textFormatting: { type: Object, required: true },\n linkOptions: { type: Object, required: true },\n messageSelectionEnabled: { type: Boolean, required: true }\n },\n emits: [\"open-file\", \"open-user-tag\"],\n computed: {\n imageVideoFiles() {\n return this.message.files.filter((file) => isImageVideoFile(file));\n },\n otherFiles() {\n return this.message.files.filter((file) => !isImageVideoFile(file));\n }\n },\n methods: {\n openFile(event, file, action) {\n if (!this.messageSelectionEnabled) {\n event.stopPropagation();\n this.$emit(\"open-file\", { file, action });\n }\n }\n }\n};\nconst _hoisted_1$6 = { class: \"vac-message-files-container\" };\nconst _hoisted_2$4 = [\"onClick\"];\nconst _hoisted_3$4 = { class: \"vac-svg-button\" };\nconst _hoisted_4$4 = { class: \"vac-text-ellipsis\" };\nconst _hoisted_5$3 = {\n key: 0,\n class: \"vac-text-ellipsis vac-text-extension\"\n};\nfunction _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_message_file = resolveComponent(\"message-file\");\n const _component_progress_bar = resolveComponent(\"progress-bar\");\n const _component_svg_icon = resolveComponent(\"svg-icon\");\n const _component_format_message = resolveComponent(\"format-message\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$6, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.imageVideoFiles, (file, i) => {\n return openBlock(), createElementBlock(\"div\", {\n key: i + \"iv\"\n }, [\n createVNode(_component_message_file, {\n file,\n \"current-user-id\": $props.currentUserId,\n message: $props.message,\n index: i,\n \"message-selection-enabled\": $props.messageSelectionEnabled,\n onOpenFile: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"open-file\", $event))\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (idx, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"file\", \"current-user-id\", \"message\", \"index\", \"message-selection-enabled\"])\n ]);\n }), 128)),\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.otherFiles, (file, i) => {\n return openBlock(), createElementBlock(\"div\", {\n key: i + \"a\",\n class: \"vac-file-wrapper\"\n }, [\n file.progress >= 0 ? (openBlock(), createBlock(_component_progress_bar, {\n key: 0,\n progress: file.progress,\n style: { top: \"44px\" }\n }, null, 8, [\"progress\"])) : createCommentVNode(\"\", true),\n createBaseVNode(\"div\", {\n class: normalizeClass([\"vac-file-container\", { \"vac-file-container-progress\": file.progress >= 0 }]),\n onClick: ($event) => $options.openFile($event, file, \"download\")\n }, [\n createBaseVNode(\"div\", _hoisted_3$4, [\n renderSlot(_ctx.$slots, \"document-icon\", {}, () => [\n createVNode(_component_svg_icon, { name: \"document\" })\n ])\n ]),\n createBaseVNode(\"div\", _hoisted_4$4, toDisplayString(file.name), 1),\n file.extension ? (openBlock(), createElementBlock(\"div\", _hoisted_5$3, toDisplayString(file.extension), 1)) : createCommentVNode(\"\", true)\n ], 10, _hoisted_2$4)\n ]);\n }), 128)),\n createVNode(_component_format_message, {\n \"message-id\": $props.message._id,\n content: $props.message.content,\n users: $props.roomUsers,\n \"text-formatting\": $props.textFormatting,\n \"link-options\": $props.linkOptions,\n onOpenUserTag: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"open-user-tag\", $event))\n }, null, 8, [\"message-id\", \"content\", \"users\", \"text-formatting\", \"link-options\"])\n ]);\n}\nvar MessageFiles = /* @__PURE__ */ _export_sfc(_sfc_main$6, [[\"render\", _sfc_render$6]]);\nconst _sfc_main$5 = {\n name: \"MessageActions\",\n components: { SvgIcon, EmojiPickerContainer },\n directives: {\n clickOutside: vClickOutside\n },\n props: {\n currentUserId: { type: [String, Number], required: true },\n message: { type: Object, required: true },\n messageActions: { type: Array, required: true },\n showReactionEmojis: { type: Boolean, required: true },\n messageHover: { type: Boolean, required: true },\n hoverMessageId: { type: [String, Number], default: null },\n hoverAudioProgress: { type: Boolean, required: true },\n emojiDataSource: { type: String, default: void 0 }\n },\n emits: [\n \"update-emoji-opened\",\n \"update-options-opened\",\n \"update-message-hover\",\n \"message-action-handler\",\n \"send-message-reaction\"\n ],\n data() {\n return {\n menuOptionsTop: 0,\n optionsOpened: false,\n optionsClosing: false,\n emojiOpened: false\n };\n },\n computed: {\n isMessageActions() {\n return this.filteredMessageActions.length && this.messageHover && !this.message.deleted && !this.message.disableActions && !this.hoverAudioProgress;\n },\n isMessageReactions() {\n return this.showReactionEmojis && this.messageHover && !this.message.deleted && !this.message.disableReactions && !this.hoverAudioProgress;\n },\n filteredMessageActions() {\n return this.message.senderId === this.currentUserId ? this.messageActions : this.messageActions.filter((message) => !message.onlyMe);\n }\n },\n watch: {\n emojiOpened(val) {\n this.$emit(\"update-emoji-opened\", val);\n if (val)\n this.optionsOpened = false;\n },\n optionsOpened(val) {\n this.$emit(\"update-options-opened\", val);\n }\n },\n methods: {\n openOptions() {\n if (this.optionsClosing)\n return;\n this.optionsOpened = !this.optionsOpened;\n if (!this.optionsOpened)\n return;\n setTimeout(() => {\n const roomFooterRef = findParentBySelector(this.$el, \"#room-footer\");\n if (!roomFooterRef || !this.$refs.menuOptions || !this.$refs.actionIcon) {\n return;\n }\n const menuOptionsTop = this.$refs.menuOptions.getBoundingClientRect().height;\n const actionIconTop = this.$refs.actionIcon.getBoundingClientRect().top;\n const roomFooterTop = roomFooterRef.getBoundingClientRect().top;\n const optionsTopPosition = roomFooterTop - actionIconTop > menuOptionsTop + 50;\n if (optionsTopPosition)\n this.menuOptionsTop = 30;\n else\n this.menuOptionsTop = -menuOptionsTop;\n });\n },\n closeOptions() {\n this.optionsOpened = false;\n this.optionsClosing = true;\n this.updateMessageHover();\n setTimeout(() => this.optionsClosing = false, 100);\n },\n openEmoji() {\n this.emojiOpened = !this.emojiOpened;\n },\n closeEmoji() {\n this.emojiOpened = false;\n this.updateMessageHover();\n },\n updateMessageHover() {\n if (this.hoverMessageId !== this.message._id) {\n this.$emit(\"update-message-hover\", false);\n }\n },\n messageActionHandler(action) {\n this.closeOptions();\n this.$emit(\"message-action-handler\", action);\n },\n sendMessageReaction(emoji, reaction) {\n this.$emit(\"send-message-reaction\", { emoji, reaction });\n this.closeEmoji();\n }\n }\n};\nconst _hoisted_1$5 = { class: \"vac-message-actions-wrapper\" };\nconst _hoisted_2$3 = { key: \"3\" };\nconst _hoisted_3$3 = { class: \"vac-menu-list\" };\nconst _hoisted_4$3 = [\"onClick\"];\nfunction _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_svg_icon = resolveComponent(\"svg-icon\");\n const _component_emoji_picker_container = resolveComponent(\"emoji-picker-container\");\n const _directive_click_outside = resolveDirective(\"click-outside\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$5, [\n createBaseVNode(\"div\", {\n class: \"vac-options-container\",\n style: normalizeStyle({\n display: $props.hoverAudioProgress ? \"none\" : \"initial\",\n width: $options.filteredMessageActions.length && $props.showReactionEmojis ? \"70px\" : \"45px\"\n })\n }, [\n createVNode(TransitionGroup, {\n name: \"vac-slide-left\",\n tag: \"span\"\n }, {\n default: withCtx(() => [\n $options.isMessageActions || $options.isMessageReactions ? (openBlock(), createElementBlock(\"div\", {\n key: \"1\",\n class: normalizeClass([\"vac-blur-container\", {\n \"vac-options-me\": $props.message.senderId === $props.currentUserId\n }])\n }, null, 2)) : createCommentVNode(\"\", true),\n $options.isMessageActions ? (openBlock(), createElementBlock(\"div\", {\n ref: \"actionIcon\",\n key: \"2\",\n class: \"vac-svg-button vac-message-options\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.openOptions && $options.openOptions(...args))\n }, [\n renderSlot(_ctx.$slots, \"dropdown-icon_\" + $props.message._id, {}, () => [\n createVNode(_component_svg_icon, {\n name: \"dropdown\",\n param: \"message\"\n })\n ])\n ], 512)) : createCommentVNode(\"\", true),\n $options.isMessageReactions ? withDirectives((openBlock(), createElementBlock(\"div\", _hoisted_2$3, [\n renderSlot(_ctx.$slots, \"emoji-picker\", mergeProps({ emojiOpened: $data.emojiOpened }, { addEmoji: $options.sendMessageReaction }), () => [\n createVNode(_component_emoji_picker_container, {\n class: \"vac-message-emojis\",\n style: normalizeStyle({ right: $options.isMessageActions ? \"30px\" : \"5px\" }),\n \"emoji-opened\": $data.emojiOpened,\n \"emoji-reaction\": true,\n \"position-right\": $props.message.senderId === $props.currentUserId,\n \"message-id\": $props.message._id,\n \"emoji-data-source\": $props.emojiDataSource,\n onAddEmoji: $options.sendMessageReaction,\n onOpenEmoji: $options.openEmoji\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (idx, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"style\", \"emoji-opened\", \"position-right\", \"message-id\", \"emoji-data-source\", \"onAddEmoji\", \"onOpenEmoji\"])\n ])\n ])), [\n [_directive_click_outside, $options.closeEmoji]\n ]) : createCommentVNode(\"\", true)\n ]),\n _: 3\n })\n ], 4),\n $options.filteredMessageActions.length ? (openBlock(), createBlock(Transition, {\n key: 0,\n name: $props.message.senderId === $props.currentUserId ? \"vac-slide-left\" : \"vac-slide-right\"\n }, {\n default: withCtx(() => [\n $data.optionsOpened ? withDirectives((openBlock(), createElementBlock(\"div\", {\n key: 0,\n ref: \"menuOptions\",\n class: normalizeClass([\"vac-menu-options\", {\n \"vac-menu-left\": $props.message.senderId !== $props.currentUserId\n }]),\n style: normalizeStyle({ top: `${$data.menuOptionsTop}px` })\n }, [\n createBaseVNode(\"div\", _hoisted_3$3, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.filteredMessageActions, (action) => {\n return openBlock(), createElementBlock(\"div\", {\n key: action.name\n }, [\n createBaseVNode(\"div\", {\n class: \"vac-menu-item\",\n onClick: ($event) => $options.messageActionHandler(action)\n }, toDisplayString(action.title), 9, _hoisted_4$3)\n ]);\n }), 128))\n ])\n ], 6)), [\n [_directive_click_outside, $options.closeOptions]\n ]) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"name\"])) : createCommentVNode(\"\", true)\n ]);\n}\nvar MessageActions = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$5]]);\nconst _sfc_main$4 = {\n name: \"MessageReactions\",\n props: {\n currentUserId: { type: [String, Number], required: true },\n message: { type: Object, required: true }\n },\n emits: [\"send-message-reaction\"],\n methods: {\n sendMessageReaction(emoji, reaction) {\n this.$emit(\"send-message-reaction\", { emoji, reaction });\n }\n }\n};\nconst _hoisted_1$4 = [\"onClick\"];\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n return !$props.message.deleted ? (openBlock(), createBlock(TransitionGroup, {\n key: 0,\n name: \"vac-slide-left\",\n tag: \"span\"\n }, {\n default: withCtx(() => [\n (openBlock(true), createElementBlock(Fragment, null, renderList($props.message.reactions, (reaction, key) => {\n return withDirectives((openBlock(), createElementBlock(\"button\", {\n key: key + 0,\n class: normalizeClass([\"vac-button-reaction\", {\n \"vac-reaction-me\": reaction.indexOf($props.currentUserId) !== -1\n }]),\n style: normalizeStyle({\n float: $props.message.senderId === $props.currentUserId ? \"right\" : \"left\"\n }),\n onClick: ($event) => $options.sendMessageReaction({ unicode: key }, reaction)\n }, [\n createTextVNode(toDisplayString(key), 1),\n createBaseVNode(\"span\", null, toDisplayString(reaction.length), 1)\n ], 14, _hoisted_1$4)), [\n [vShow, reaction.length]\n ]);\n }), 128))\n ]),\n _: 1\n })) : createCommentVNode(\"\", true);\n}\nvar MessageReactions = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"render\", _sfc_render$4]]);\nfunction roomsValidation(obj) {\n const roomsValidate = [\n { key: \"roomId\", type: [\"string\", \"number\"] },\n { key: \"roomName\", type: [\"string\"] },\n { key: \"users\", type: [\"array\"] }\n ];\n const validate = (obj2, props) => {\n return props.every((prop) => {\n let validType = false;\n if (prop.type[0] === \"array\" && Array.isArray(obj2[prop.key])) {\n validType = true;\n } else if (prop.type.find((t) => t === typeof obj2[prop.key])) {\n validType = true;\n }\n return validType && checkObjectValid(obj2, prop.key);\n });\n };\n if (!validate(obj, roomsValidate)) {\n throw new Error(\n \"Rooms object is not valid! Must contain at least roomId[String, Number], roomName[String] and users[Array]\"\n );\n }\n}\nfunction partcipantsValidation(obj) {\n const participantsValidate = [\n { key: \"_id\", type: [\"string\", \"number\"] },\n { key: \"username\", type: [\"string\"] }\n ];\n const validate = (obj2, props) => {\n return props.every((prop) => {\n const validType = prop.type.find((t) => t === typeof obj2[prop.key]);\n return validType && checkObjectValid(obj2, prop.key);\n });\n };\n if (!validate(obj, participantsValidate)) {\n throw new Error(\n \"Participants object is not valid! Must contain at least _id[String, Number] and username[String]\"\n );\n }\n}\nfunction messagesValidation(obj) {\n const messagesValidate = [\n { key: \"_id\", type: [\"string\", \"number\"] },\n { key: \"senderId\", type: [\"string\", \"number\"] }\n ];\n const validate = (obj2, props) => {\n return props.every((prop) => {\n const validType = prop.type.find((t) => t === typeof obj2[prop.key]);\n return validType && checkObjectValid(obj2, prop.key);\n });\n };\n if (!validate(obj, messagesValidate)) {\n throw new Error(\n \"Messages object is not valid! Must contain at least _id[String, Number] and senderId[String, Number]\"\n );\n }\n}\nfunction checkObjectValid(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key) && obj[key] !== null && obj[key] !== void 0;\n}\nconst _sfc_main$3 = {\n name: \"RoomMessage\",\n components: {\n SvgIcon,\n FormatMessage,\n AudioPlayer,\n MessageReply,\n MessageFiles,\n MessageActions,\n MessageReactions\n },\n props: {\n currentUserId: { type: [String, Number], required: true },\n textMessages: { type: Object, required: true },\n index: { type: Number, required: true },\n message: { type: Object, required: true },\n messages: { type: Array, required: true },\n editedMessageId: { type: [String, Number], default: null },\n roomUsers: { type: Array, default: () => [] },\n messageActions: { type: Array, required: true },\n newMessages: { type: Array, default: () => [] },\n showReactionEmojis: { type: Boolean, required: true },\n showNewMessagesDivider: { type: Boolean, required: true },\n textFormatting: { type: Object, required: true },\n linkOptions: { type: Object, required: true },\n usernameOptions: { type: Object, required: true },\n messageSelectionEnabled: { type: Boolean, required: true },\n selectedMessages: { type: Array, default: () => [] },\n emojiDataSource: { type: String, default: void 0 }\n },\n emits: [\n \"message-added\",\n \"open-file\",\n \"open-user-tag\",\n \"open-failed-message\",\n \"message-action-handler\",\n \"send-message-reaction\",\n \"select-message\",\n \"unselect-message\"\n ],\n data() {\n return {\n hoverMessageId: null,\n messageHover: false,\n optionsOpened: false,\n emojiOpened: false,\n newMessage: {},\n progressTime: \"- : -\",\n hoverAudioProgress: false\n };\n },\n computed: {\n showUsername() {\n if (!this.usernameOptions.currentUser && this.message.senderId === this.currentUserId) {\n return false;\n } else {\n return this.roomUsers.length >= this.usernameOptions.minUsers;\n }\n },\n showDate() {\n return this.index > 0 && this.message.date !== this.messages[this.index - 1].date;\n },\n messageOffset() {\n return this.index > 0 && this.message.senderId !== this.messages[this.index - 1].senderId;\n },\n isMessageHover() {\n return this.editedMessageId === this.message._id || this.hoverMessageId === this.message._id;\n },\n isAudio() {\n var _a;\n return (_a = this.message.files) == null ? void 0 : _a.some((file) => isAudioFile(file));\n },\n isCheckmarkVisible() {\n return this.message.senderId === this.currentUserId && !this.message.deleted && (this.message.saved || this.message.distributed || this.message.seen);\n },\n hasCurrentUserAvatar() {\n return this.messages.some(\n (message) => message.senderId === this.currentUserId && message.avatar\n );\n },\n hasSenderUserAvatar() {\n return this.messages.some(\n (message) => message.senderId !== this.currentUserId && message.avatar\n );\n },\n isMessageSelected() {\n return this.messageSelectionEnabled && !!this.selectedMessages.find(\n (message) => message._id === this.message._id\n );\n }\n },\n watch: {\n newMessages: {\n immediate: true,\n deep: true,\n handler(val) {\n if (!val.length || !this.showNewMessagesDivider) {\n this.newMessage = {};\n return;\n }\n this.newMessage = val.reduce(\n (res, obj) => obj.index < res.index ? obj : res\n );\n }\n },\n messageSelectionEnabled() {\n this.resetMessageHover();\n }\n },\n mounted() {\n messagesValidation(this.message);\n this.$emit(\"message-added\", {\n message: this.message,\n index: this.index,\n ref: this.$refs.message\n });\n },\n methods: {\n onHoverMessage() {\n if (!this.messageSelectionEnabled) {\n this.messageHover = true;\n if (this.canEditMessage())\n this.hoverMessageId = this.message._id;\n }\n },\n canEditMessage() {\n return !this.message.deleted;\n },\n onLeaveMessage() {\n if (!this.messageSelectionEnabled) {\n if (!this.optionsOpened && !this.emojiOpened)\n this.messageHover = false;\n this.hoverMessageId = null;\n }\n },\n resetMessageHover() {\n this.messageHover = false;\n this.hoverMessageId = null;\n },\n openFile(file) {\n this.$emit(\"open-file\", { message: this.message, file });\n },\n openUserTag(user) {\n this.$emit(\"open-user-tag\", { user });\n },\n messageActionHandler(action) {\n this.resetMessageHover();\n setTimeout(() => {\n this.$emit(\"message-action-handler\", { action, message: this.message });\n }, 300);\n },\n sendMessageReaction({ emoji, reaction }) {\n this.$emit(\"send-message-reaction\", {\n messageId: this.message._id,\n reaction: emoji,\n remove: reaction && reaction.indexOf(this.currentUserId) !== -1\n });\n this.messageHover = false;\n },\n selectMessage() {\n if (this.messageSelectionEnabled) {\n if (this.isMessageSelected) {\n this.$emit(\"unselect-message\", this.message._id);\n } else {\n this.$emit(\"select-message\", this.message);\n }\n }\n }\n }\n};\nconst _hoisted_1$3 = [\"id\"];\nconst _hoisted_2$2 = {\n key: 0,\n class: \"vac-card-info vac-card-date\"\n};\nconst _hoisted_3$2 = {\n key: 1,\n class: \"vac-line-new\"\n};\nconst _hoisted_4$2 = {\n key: 2,\n class: \"vac-card-info vac-card-system\"\n};\nconst _hoisted_5$2 = {\n key: 1,\n class: \"vac-avatar-offset\"\n};\nconst _hoisted_6$1 = {\n key: 0,\n class: \"vac-progress-time\"\n};\nconst _hoisted_7$1 = { class: \"vac-text-timestamp\" };\nconst _hoisted_8 = {\n key: 0,\n class: \"vac-icon-edited\"\n};\nconst _hoisted_9 = { key: 1 };\nconst _hoisted_10 = /* @__PURE__ */ createBaseVNode(\"div\", { class: \"vac-failure-text\" }, \"!\", -1);\nconst _hoisted_11 = [\n _hoisted_10\n];\nconst _hoisted_12 = {\n key: 3,\n class: \"vac-avatar-current-offset\"\n};\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_format_message = resolveComponent(\"format-message\");\n const _component_message_reply = resolveComponent(\"message-reply\");\n const _component_message_files = resolveComponent(\"message-files\");\n const _component_audio_player = resolveComponent(\"audio-player\");\n const _component_svg_icon = resolveComponent(\"svg-icon\");\n const _component_message_actions = resolveComponent(\"message-actions\");\n const _component_message_reactions = resolveComponent(\"message-reactions\");\n return openBlock(), createElementBlock(\"div\", {\n id: $props.message._id,\n ref: \"message\",\n class: \"vac-message-wrapper\"\n }, [\n $options.showDate ? (openBlock(), createElementBlock(\"div\", _hoisted_2$2, toDisplayString($props.message.date), 1)) : createCommentVNode(\"\", true),\n $data.newMessage._id === $props.message._id ? (openBlock(), createElementBlock(\"div\", _hoisted_3$2, toDisplayString($props.textMessages.NEW_MESSAGES), 1)) : createCommentVNode(\"\", true),\n $props.message.system ? (openBlock(), createElementBlock(\"div\", _hoisted_4$2, [\n renderSlot(_ctx.$slots, \"message_\" + $props.message._id, {}, () => [\n createVNode(_component_format_message, {\n \"message-id\": $props.message._id,\n content: $props.message.content,\n deleted: !!$props.message.deleted,\n users: $props.roomUsers,\n \"text-messages\": $props.textMessages,\n \"text-formatting\": $props.textFormatting,\n \"link-options\": $props.linkOptions,\n onOpenUserTag: $options.openUserTag\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (idx, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"message-id\", \"content\", \"deleted\", \"users\", \"text-messages\", \"text-formatting\", \"link-options\", \"onOpenUserTag\"])\n ])\n ])) : (openBlock(), createElementBlock(\"div\", {\n key: 3,\n class: normalizeClass([\"vac-message-box\", { \"vac-offset-current\": $props.message.senderId === $props.currentUserId }]),\n onClick: _cache[8] || (_cache[8] = (...args) => $options.selectMessage && $options.selectMessage(...args))\n }, [\n renderSlot(_ctx.$slots, \"message_\" + $props.message._id, {}, () => [\n $props.message.senderId !== $props.currentUserId ? renderSlot(_ctx.$slots, \"message-avatar_\" + $props.message._id, { key: 0 }, () => [\n $props.message.avatar ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: \"vac-avatar\",\n style: normalizeStyle({ \"background-image\": `url('${$props.message.avatar}')` })\n }, null, 4)) : createCommentVNode(\"\", true)\n ]) : createCommentVNode(\"\", true),\n $options.hasSenderUserAvatar && !$props.message.avatar ? (openBlock(), createElementBlock(\"div\", _hoisted_5$2)) : createCommentVNode(\"\", true),\n createBaseVNode(\"div\", {\n class: normalizeClass([\"vac-message-container\", {\n \"vac-message-container-offset\": $options.messageOffset\n }])\n }, [\n createBaseVNode(\"div\", {\n class: normalizeClass([\"vac-message-card\", {\n \"vac-message-highlight\": $options.isMessageHover,\n \"vac-message-current\": $props.message.senderId === $props.currentUserId,\n \"vac-message-deleted\": $props.message.deleted,\n \"vac-item-clickable\": $props.messageSelectionEnabled,\n \"vac-message-selected\": $options.isMessageSelected\n }]),\n onMouseover: _cache[5] || (_cache[5] = (...args) => $options.onHoverMessage && $options.onHoverMessage(...args)),\n onMouseleave: _cache[6] || (_cache[6] = (...args) => $options.onLeaveMessage && $options.onLeaveMessage(...args))\n }, [\n $options.showUsername ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([\"vac-text-username\", {\n \"vac-username-reply\": !$props.message.deleted && $props.message.replyMessage\n }])\n }, [\n createBaseVNode(\"span\", null, toDisplayString($props.message.username), 1)\n ], 2)) : createCommentVNode(\"\", true),\n !$props.message.deleted && $props.message.replyMessage ? (openBlock(), createBlock(_component_message_reply, {\n key: 1,\n message: $props.message,\n \"room-users\": $props.roomUsers,\n \"text-formatting\": $props.textFormatting,\n \"link-options\": $props.linkOptions\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (i, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"message\", \"room-users\", \"text-formatting\", \"link-options\"])) : createCommentVNode(\"\", true),\n !!$props.message.deleted || !$props.message.files || !$props.message.files.length ? (openBlock(), createBlock(_component_format_message, {\n key: 2,\n \"message-id\": $props.message._id,\n content: $props.message.content,\n deleted: !!$props.message.deleted,\n users: $props.roomUsers,\n \"text-formatting\": $props.textFormatting,\n \"text-messages\": $props.textMessages,\n \"link-options\": $props.linkOptions,\n onOpenUserTag: $options.openUserTag\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (idx, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"message-id\", \"content\", \"deleted\", \"users\", \"text-formatting\", \"text-messages\", \"link-options\", \"onOpenUserTag\"])) : !$options.isAudio || $props.message.files.length > 1 ? (openBlock(), createBlock(_component_message_files, {\n key: 3,\n \"current-user-id\": $props.currentUserId,\n message: $props.message,\n \"room-users\": $props.roomUsers,\n \"text-formatting\": $props.textFormatting,\n \"link-options\": $props.linkOptions,\n \"message-selection-enabled\": $props.messageSelectionEnabled,\n onOpenFile: $options.openFile,\n onOpenUserTag: $options.openUserTag\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (i, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"current-user-id\", \"message\", \"room-users\", \"text-formatting\", \"link-options\", \"message-selection-enabled\", \"onOpenFile\", \"onOpenUserTag\"])) : (openBlock(), createElementBlock(Fragment, { key: 4 }, [\n createVNode(_component_audio_player, {\n \"message-id\": $props.message._id,\n src: $props.message.files[0].url,\n \"message-selection-enabled\": $props.messageSelectionEnabled,\n onUpdateProgressTime: _cache[0] || (_cache[0] = ($event) => $data.progressTime = $event),\n onHoverAudioProgress: _cache[1] || (_cache[1] = ($event) => $data.hoverAudioProgress = $event)\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (i, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"message-id\", \"src\", \"message-selection-enabled\"]),\n !$props.message.deleted ? (openBlock(), createElementBlock(\"div\", _hoisted_6$1, toDisplayString($data.progressTime), 1)) : createCommentVNode(\"\", true)\n ], 64)),\n createBaseVNode(\"div\", _hoisted_7$1, [\n $props.message.edited && !$props.message.deleted ? (openBlock(), createElementBlock(\"div\", _hoisted_8, [\n renderSlot(_ctx.$slots, \"pencil-icon_\" + $props.message._id, {}, () => [\n createVNode(_component_svg_icon, { name: \"pencil\" })\n ])\n ])) : createCommentVNode(\"\", true),\n createBaseVNode(\"span\", null, toDisplayString($props.message.timestamp), 1),\n $options.isCheckmarkVisible ? (openBlock(), createElementBlock(\"span\", _hoisted_9, [\n renderSlot(_ctx.$slots, \"checkmark-icon_\" + $props.message._id, {}, () => [\n createVNode(_component_svg_icon, {\n name: $props.message.distributed ? \"double-checkmark\" : \"checkmark\",\n param: $props.message.seen ? \"seen\" : \"\",\n class: \"vac-icon-check\"\n }, null, 8, [\"name\", \"param\"])\n ])\n ])) : createCommentVNode(\"\", true)\n ]),\n createVNode(_component_message_actions, {\n \"current-user-id\": $props.currentUserId,\n message: $props.message,\n \"message-actions\": $props.messageActions,\n \"show-reaction-emojis\": $props.showReactionEmojis,\n \"message-hover\": $data.messageHover,\n \"hover-message-id\": $data.hoverMessageId,\n \"hover-audio-progress\": $data.hoverAudioProgress,\n \"emoji-data-source\": $props.emojiDataSource,\n onUpdateMessageHover: _cache[2] || (_cache[2] = ($event) => $data.messageHover = $event),\n onUpdateOptionsOpened: _cache[3] || (_cache[3] = ($event) => $data.optionsOpened = $event),\n onUpdateEmojiOpened: _cache[4] || (_cache[4] = ($event) => $data.emojiOpened = $event),\n onMessageActionHandler: $options.messageActionHandler,\n onSendMessageReaction: $options.sendMessageReaction\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (i, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"current-user-id\", \"message\", \"message-actions\", \"show-reaction-emojis\", \"message-hover\", \"hover-message-id\", \"hover-audio-progress\", \"emoji-data-source\", \"onMessageActionHandler\", \"onSendMessageReaction\"])\n ], 34),\n createVNode(_component_message_reactions, {\n \"current-user-id\": $props.currentUserId,\n message: $props.message,\n onSendMessageReaction: $options.sendMessageReaction\n }, null, 8, [\"current-user-id\", \"message\", \"onSendMessageReaction\"])\n ], 2),\n renderSlot(_ctx.$slots, \"message-failure_\" + $props.message._id, {}, () => [\n $props.message.failure && $props.message.senderId === $props.currentUserId ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([\"vac-failure-container vac-svg-button\", {\n \"vac-failure-container-avatar\": $props.message.avatar && $props.message.senderId === $props.currentUserId\n }]),\n onClick: _cache[7] || (_cache[7] = ($event) => _ctx.$emit(\"open-failed-message\", { message: $props.message }))\n }, _hoisted_11, 2)) : createCommentVNode(\"\", true)\n ]),\n $props.message.senderId === $props.currentUserId ? renderSlot(_ctx.$slots, \"message-avatar_\" + $props.message._id, { key: 2 }, () => [\n $props.message.avatar ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: \"vac-avatar vac-avatar-current\",\n style: normalizeStyle({ \"background-image\": `url('${$props.message.avatar}')` })\n }, null, 4)) : createCommentVNode(\"\", true)\n ]) : createCommentVNode(\"\", true),\n $options.hasCurrentUserAvatar && !$props.message.avatar ? (openBlock(), createElementBlock(\"div\", _hoisted_12)) : createCommentVNode(\"\", true)\n ])\n ], 2))\n ], 8, _hoisted_1$3);\n}\nvar RoomMessage = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$2 = {\n name: \"ChatRoom\",\n components: {\n Loader,\n SvgIcon,\n RoomHeader,\n RoomFooter,\n RoomMessage\n },\n props: {\n currentUserId: { type: [String, Number], required: true },\n textMessages: { type: Object, required: true },\n singleRoom: { type: Boolean, required: true },\n showRoomsList: { type: Boolean, required: true },\n isMobile: { type: Boolean, required: true },\n rooms: { type: Array, required: true },\n roomId: { type: [String, Number], required: true },\n loadFirstRoom: { type: Boolean, required: true },\n messages: { type: Array, required: true },\n roomMessage: { type: String, default: null },\n messagesLoaded: { type: Boolean, required: true },\n menuActions: { type: Array, required: true },\n messageActions: { type: Array, required: true },\n messageSelectionActions: { type: Array, required: true },\n autoScroll: { type: Object, required: true },\n showSendIcon: { type: Boolean, required: true },\n showFiles: { type: Boolean, required: true },\n showAudio: { type: Boolean, required: true },\n audioBitRate: { type: Number, required: true },\n audioSampleRate: { type: Number, required: true },\n showEmojis: { type: Boolean, required: true },\n showReactionEmojis: { type: Boolean, required: true },\n showNewMessagesDivider: { type: Boolean, required: true },\n showFooter: { type: Boolean, required: true },\n acceptedFiles: { type: String, required: true },\n textFormatting: { type: Object, required: true },\n linkOptions: { type: Object, required: true },\n loadingRooms: { type: Boolean, required: true },\n roomInfoEnabled: { type: Boolean, required: true },\n textareaActionEnabled: { type: Boolean, required: true },\n textareaAutoFocus: { type: Boolean, required: true },\n userTagsEnabled: { type: Boolean, required: true },\n emojisSuggestionEnabled: { type: Boolean, required: true },\n scrollDistance: { type: Number, required: true },\n templatesText: { type: Array, default: null },\n usernameOptions: { type: Object, required: true },\n emojiDataSource: { type: String, default: void 0 }\n },\n emits: [\n \"toggle-rooms-list\",\n \"room-info\",\n \"menu-action-handler\",\n \"message-selection-action-handler\",\n \"edit-message\",\n \"send-message\",\n \"delete-message\",\n \"message-action-handler\",\n \"fetch-messages\",\n \"send-message-reaction\",\n \"typing-message\",\n \"open-file\",\n \"open-user-tag\",\n \"open-failed-message\",\n \"textarea-action-handler\"\n ],\n data() {\n return {\n editedMessageId: null,\n initReplyMessage: null,\n initEditMessage: null,\n loadingMessages: false,\n observer: null,\n showLoader: true,\n loadingMoreMessages: false,\n scrollIcon: false,\n scrollMessagesCount: 0,\n newMessages: [],\n messageSelectionEnabled: false,\n selectedMessages: [],\n droppedFiles: []\n };\n },\n computed: {\n room() {\n return this.rooms.find((room) => room.roomId === this.roomId) || {};\n },\n showNoMessages() {\n return this.roomId && !this.messages.length && !this.loadingMessages && !this.loadingRooms;\n },\n showNoRoom() {\n const noRoomSelected = !this.rooms.length && !this.loadingRooms || !this.roomId && !this.loadFirstRoom;\n if (noRoomSelected) {\n this.updateLoadingMessages(false);\n }\n return noRoomSelected;\n },\n showMessagesStarted() {\n return this.messages.length && this.messagesLoaded;\n }\n },\n watch: {\n roomId: {\n immediate: true,\n handler() {\n this.onRoomChanged();\n }\n },\n messages: {\n deep: true,\n handler(newVal, oldVal) {\n newVal.forEach((message, i) => {\n if (this.showNewMessagesDivider && !message.seen && message.senderId !== this.currentUserId) {\n this.newMessages.push({\n _id: message._id,\n index: i\n });\n }\n });\n if ((oldVal == null ? void 0 : oldVal.length) === (newVal == null ? void 0 : newVal.length) - 1) {\n this.newMessages = [];\n }\n setTimeout(() => this.loadingMoreMessages = false);\n }\n },\n messagesLoaded(val) {\n if (val)\n this.updateLoadingMessages(false);\n }\n },\n mounted() {\n this.newMessages = [];\n },\n methods: {\n updateLoadingMessages(val) {\n this.loadingMessages = val;\n if (!val) {\n setTimeout(() => this.initIntersectionObserver());\n }\n },\n initIntersectionObserver() {\n if (this.observer) {\n this.showLoader = true;\n this.observer.disconnect();\n }\n const loader = this.$el.querySelector(\"#infinite-loader-messages\");\n if (loader) {\n const options2 = {\n root: this.$el.querySelector(\"#messages-list\"),\n rootMargin: `${this.scrollDistance}px`,\n threshold: 0\n };\n this.observer = new IntersectionObserver((entries) => {\n if (entries[0].isIntersecting) {\n this.loadMoreMessages();\n }\n }, options2);\n this.observer.observe(loader);\n }\n },\n preventTopScroll() {\n const container = this.$refs.scrollContainer;\n const prevScrollHeight = container.scrollHeight;\n const observer = new ResizeObserver((_) => {\n if (container.scrollHeight !== prevScrollHeight) {\n if (this.$refs.scrollContainer) {\n this.$refs.scrollContainer.scrollTo({\n top: container.scrollHeight - prevScrollHeight\n });\n observer.disconnect();\n }\n }\n });\n for (var i = 0; i < container.children.length; i++) {\n observer.observe(container.children[i]);\n }\n },\n touchStart(touchEvent) {\n if (this.singleRoom)\n return;\n if (touchEvent.changedTouches.length === 1) {\n const posXStart = touchEvent.changedTouches[0].clientX;\n const posYStart = touchEvent.changedTouches[0].clientY;\n addEventListener(\n \"touchend\",\n (touchEvent2) => this.touchEnd(touchEvent2, posXStart, posYStart),\n { once: true }\n );\n }\n },\n touchEnd(touchEvent, posXStart, posYStart) {\n if (touchEvent.changedTouches.length === 1) {\n const posXEnd = touchEvent.changedTouches[0].clientX;\n const posYEnd = touchEvent.changedTouches[0].clientY;\n const swippedRight = posXEnd - posXStart > 100;\n const swippedVertically = Math.abs(posYEnd - posYStart) > 50;\n if (swippedRight && !swippedVertically) {\n this.$emit(\"toggle-rooms-list\");\n }\n }\n },\n onRoomChanged() {\n this.updateLoadingMessages(true);\n this.scrollIcon = false;\n this.scrollMessagesCount = 0;\n this.resetMessageSelection();\n const unwatch = this.$watch(\n () => this.messages,\n (val) => {\n if (!val || !val.length)\n return;\n const element2 = this.$refs.scrollContainer;\n if (!element2)\n return;\n unwatch();\n setTimeout(() => {\n element2.scrollTo({ top: element2.scrollHeight });\n this.updateLoadingMessages(false);\n });\n }\n );\n },\n resetMessageSelection() {\n this.messageSelectionEnabled = false;\n this.selectedMessages = [];\n },\n selectMessage(message) {\n this.selectedMessages.push(message);\n },\n unselectMessage(messageId) {\n this.selectedMessages = this.selectedMessages.filter(\n (message) => message._id !== messageId\n );\n },\n onMessageAdded({ message, index, ref }) {\n if (index !== this.messages.length - 1)\n return;\n const autoScrollOffset = ref.offsetHeight + 60;\n setTimeout(() => {\n const scrolledUp = this.getBottomScroll(this.$refs.scrollContainer) > autoScrollOffset;\n if (message.senderId === this.currentUserId) {\n if (scrolledUp) {\n if (this.autoScroll.send.newAfterScrollUp) {\n this.scrollToBottom();\n }\n } else {\n if (this.autoScroll.send.new) {\n this.scrollToBottom();\n }\n }\n } else {\n if (scrolledUp) {\n if (this.autoScroll.receive.newAfterScrollUp) {\n this.scrollToBottom();\n } else {\n this.scrollIcon = true;\n this.scrollMessagesCount++;\n }\n } else {\n if (this.autoScroll.receive.new) {\n this.scrollToBottom();\n } else {\n this.scrollIcon = true;\n this.scrollMessagesCount++;\n }\n }\n }\n });\n },\n onContainerScroll(e) {\n if (!e.target)\n return;\n const bottomScroll = this.getBottomScroll(e.target);\n if (bottomScroll < 60)\n this.scrollMessagesCount = 0;\n this.scrollIcon = bottomScroll > 500 || this.scrollMessagesCount;\n },\n loadMoreMessages() {\n if (this.loadingMessages)\n return;\n setTimeout(\n () => {\n if (this.loadingMoreMessages)\n return;\n if (this.messagesLoaded || !this.roomId) {\n this.loadingMoreMessages = false;\n this.showLoader = false;\n return;\n }\n this.preventTopScroll();\n this.$emit(\"fetch-messages\");\n this.loadingMoreMessages = true;\n },\n 500\n );\n },\n messageActionHandler({ action, message }) {\n switch (action.name) {\n case \"replyMessage\":\n this.initReplyMessage = message;\n setTimeout(() => {\n this.initReplyMessage = null;\n });\n return;\n case \"editMessage\":\n this.initEditMessage = message;\n setTimeout(() => {\n this.initEditMessage = null;\n });\n return;\n case \"deleteMessage\":\n return this.$emit(\"delete-message\", message);\n case \"selectMessages\":\n this.selectedMessages = [message];\n this.messageSelectionEnabled = true;\n return;\n default:\n return this.$emit(\"message-action-handler\", { action, message });\n }\n },\n messageSelectionActionHandler(action) {\n this.$emit(\"message-selection-action-handler\", {\n action,\n messages: this.selectedMessages\n });\n this.resetMessageSelection();\n },\n sendMessageReaction(messageReaction) {\n this.$emit(\"send-message-reaction\", messageReaction);\n },\n getBottomScroll(element2) {\n const { scrollHeight, clientHeight, scrollTop } = element2;\n return scrollHeight - clientHeight - scrollTop;\n },\n scrollToBottom() {\n setTimeout(() => {\n const element2 = this.$refs.scrollContainer;\n element2.classList.add(\"vac-scroll-smooth\");\n element2.scrollTo({ top: element2.scrollHeight, behavior: \"smooth\" });\n setTimeout(() => element2.classList.remove(\"vac-scroll-smooth\"));\n }, 50);\n },\n openFile({ message, file }) {\n this.$emit(\"open-file\", { message, file });\n },\n openUserTag(user) {\n this.$emit(\"open-user-tag\", user);\n },\n onDropFiles(event) {\n if (this.showFiles) {\n this.droppedFiles = event.dataTransfer.files;\n }\n }\n }\n};\nconst _hoisted_1$2 = { class: \"vac-container-center vac-room-empty\" };\nconst _hoisted_2$1 = { class: \"vac-messages-container\" };\nconst _hoisted_3$1 = {\n key: 0,\n class: \"vac-text-started\"\n};\nconst _hoisted_4$1 = {\n key: 1,\n class: \"vac-text-started\"\n};\nconst _hoisted_5$1 = {\n key: 0,\n id: \"infinite-loader-messages\"\n};\nconst _hoisted_6 = { key: 2 };\nconst _hoisted_7 = {\n key: 0,\n class: \"vac-badge-counter vac-messages-count\"\n};\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_room_header = resolveComponent(\"room-header\");\n const _component_loader = resolveComponent(\"loader\");\n const _component_room_message = resolveComponent(\"room-message\");\n const _component_svg_icon = resolveComponent(\"svg-icon\");\n const _component_room_footer = resolveComponent(\"room-footer\");\n return withDirectives((openBlock(), createElementBlock(\"div\", {\n class: \"vac-col-messages\",\n onDrop: _cache[12] || (_cache[12] = withModifiers((...args) => $options.onDropFiles && $options.onDropFiles(...args), [\"prevent\"])),\n onDragenter: _cache[13] || (_cache[13] = withModifiers(() => {\n }, [\"prevent\"])),\n onDragover: _cache[14] || (_cache[14] = withModifiers(() => {\n }, [\"prevent\"])),\n onDragleave: _cache[15] || (_cache[15] = withModifiers(() => {\n }, [\"prevent\"])),\n onTouchstart: _cache[16] || (_cache[16] = (...args) => $options.touchStart && $options.touchStart(...args))\n }, [\n $options.showNoRoom ? renderSlot(_ctx.$slots, \"no-room-selected\", { key: 0 }, () => [\n createBaseVNode(\"div\", _hoisted_1$2, [\n createBaseVNode(\"div\", null, toDisplayString($props.textMessages.ROOM_EMPTY), 1)\n ])\n ]) : (openBlock(), createBlock(_component_room_header, {\n key: 1,\n \"current-user-id\": $props.currentUserId,\n \"text-messages\": $props.textMessages,\n \"single-room\": $props.singleRoom,\n \"show-rooms-list\": $props.showRoomsList,\n \"is-mobile\": $props.isMobile,\n \"room-info-enabled\": $props.roomInfoEnabled,\n \"menu-actions\": $props.menuActions,\n room: $options.room,\n \"message-selection-enabled\": $data.messageSelectionEnabled,\n \"message-selection-actions\": $props.messageSelectionActions,\n \"selected-messages-total\": $data.selectedMessages.length,\n onToggleRoomsList: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"toggle-rooms-list\")),\n onRoomInfo: _cache[1] || (_cache[1] = ($event) => _ctx.$emit(\"room-info\")),\n onMenuActionHandler: _cache[2] || (_cache[2] = ($event) => _ctx.$emit(\"menu-action-handler\", $event)),\n onMessageSelectionActionHandler: $options.messageSelectionActionHandler,\n onCancelMessageSelection: _cache[3] || (_cache[3] = ($event) => $data.messageSelectionEnabled = false)\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (i, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"current-user-id\", \"text-messages\", \"single-room\", \"show-rooms-list\", \"is-mobile\", \"room-info-enabled\", \"menu-actions\", \"room\", \"message-selection-enabled\", \"message-selection-actions\", \"selected-messages-total\", \"onMessageSelectionActionHandler\"])),\n createBaseVNode(\"div\", {\n id: \"messages-list\",\n ref: \"scrollContainer\",\n class: \"vac-container-scroll\",\n onScroll: _cache[5] || (_cache[5] = (...args) => $options.onContainerScroll && $options.onContainerScroll(...args))\n }, [\n createVNode(_component_loader, {\n show: $data.loadingMessages,\n type: \"messages\"\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (idx, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"show\"]),\n createBaseVNode(\"div\", _hoisted_2$1, [\n createBaseVNode(\"div\", {\n class: normalizeClass({ \"vac-messages-hidden\": $data.loadingMessages })\n }, [\n createVNode(Transition, { name: \"vac-fade-message\" }, {\n default: withCtx(() => [\n createBaseVNode(\"div\", null, [\n $options.showNoMessages ? (openBlock(), createElementBlock(\"div\", _hoisted_3$1, [\n renderSlot(_ctx.$slots, \"messages-empty\", {}, () => [\n createTextVNode(toDisplayString($props.textMessages.MESSAGES_EMPTY), 1)\n ])\n ])) : createCommentVNode(\"\", true),\n $options.showMessagesStarted ? (openBlock(), createElementBlock(\"div\", _hoisted_4$1, toDisplayString($props.textMessages.CONVERSATION_STARTED) + \" \" + toDisplayString($props.messages[0].date), 1)) : createCommentVNode(\"\", true)\n ])\n ]),\n _: 3\n }),\n $props.messages.length && !$props.messagesLoaded ? (openBlock(), createElementBlock(\"div\", _hoisted_5$1, [\n createVNode(_component_loader, {\n show: true,\n infinite: true,\n type: \"infinite-messages\"\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (idx, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1024)\n ])) : createCommentVNode(\"\", true),\n (openBlock(), createBlock(TransitionGroup, {\n key: $props.roomId,\n name: \"vac-fade-message\",\n tag: \"span\"\n }, {\n default: withCtx(() => [\n (openBlock(true), createElementBlock(Fragment, null, renderList($props.messages, (m, i) => {\n return openBlock(), createElementBlock(\"div\", {\n key: m.indexId || m._id\n }, [\n createVNode(_component_room_message, {\n \"current-user-id\": $props.currentUserId,\n message: m,\n index: i,\n messages: $props.messages,\n \"edited-message-id\": $data.editedMessageId,\n \"message-actions\": $props.messageActions,\n \"room-users\": $options.room.users,\n \"text-messages\": $props.textMessages,\n \"new-messages\": $data.newMessages,\n \"show-reaction-emojis\": $props.showReactionEmojis,\n \"show-new-messages-divider\": $props.showNewMessagesDivider,\n \"text-formatting\": $props.textFormatting,\n \"link-options\": $props.linkOptions,\n \"username-options\": $props.usernameOptions,\n \"message-selection-enabled\": $data.messageSelectionEnabled,\n \"selected-messages\": $data.selectedMessages,\n \"emoji-data-source\": $props.emojiDataSource,\n onMessageAdded: $options.onMessageAdded,\n onMessageActionHandler: $options.messageActionHandler,\n onOpenFile: $options.openFile,\n onOpenUserTag: $options.openUserTag,\n onOpenFailedMessage: _cache[4] || (_cache[4] = ($event) => _ctx.$emit(\"open-failed-message\", $event)),\n onSendMessageReaction: $options.sendMessageReaction,\n onSelectMessage: $options.selectMessage,\n onUnselectMessage: $options.unselectMessage\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (idx, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"current-user-id\", \"message\", \"index\", \"messages\", \"edited-message-id\", \"message-actions\", \"room-users\", \"text-messages\", \"new-messages\", \"show-reaction-emojis\", \"show-new-messages-divider\", \"text-formatting\", \"link-options\", \"username-options\", \"message-selection-enabled\", \"selected-messages\", \"emoji-data-source\", \"onMessageAdded\", \"onMessageActionHandler\", \"onOpenFile\", \"onOpenUserTag\", \"onSendMessageReaction\", \"onSelectMessage\", \"onUnselectMessage\"])\n ]);\n }), 128))\n ]),\n _: 3\n }))\n ], 2)\n ])\n ], 544),\n !$data.loadingMessages ? (openBlock(), createElementBlock(\"div\", _hoisted_6, [\n createVNode(Transition, { name: \"vac-bounce\" }, {\n default: withCtx(() => [\n $data.scrollIcon ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: \"vac-icon-scroll\",\n onClick: _cache[6] || (_cache[6] = (...args) => $options.scrollToBottom && $options.scrollToBottom(...args))\n }, [\n createVNode(Transition, { name: \"vac-bounce\" }, {\n default: withCtx(() => [\n $data.scrollMessagesCount ? (openBlock(), createElementBlock(\"div\", _hoisted_7, toDisplayString($data.scrollMessagesCount), 1)) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n renderSlot(_ctx.$slots, \"scroll-icon\", {}, () => [\n createVNode(_component_svg_icon, {\n name: \"dropdown\",\n param: \"scroll\"\n })\n ])\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 3\n })\n ])) : createCommentVNode(\"\", true),\n createVNode(_component_room_footer, {\n room: $options.room,\n \"room-id\": $props.roomId,\n \"room-message\": $props.roomMessage,\n \"text-messages\": $props.textMessages,\n \"show-send-icon\": $props.showSendIcon,\n \"show-files\": $props.showFiles,\n \"show-audio\": $props.showAudio,\n \"show-emojis\": $props.showEmojis,\n \"show-footer\": $props.showFooter,\n \"accepted-files\": $props.acceptedFiles,\n \"textarea-action-enabled\": $props.textareaActionEnabled,\n \"textarea-auto-focus\": $props.textareaAutoFocus,\n \"user-tags-enabled\": $props.userTagsEnabled,\n \"emojis-suggestion-enabled\": $props.emojisSuggestionEnabled,\n \"templates-text\": $props.templatesText,\n \"text-formatting\": $props.textFormatting,\n \"link-options\": $props.linkOptions,\n \"audio-bit-rate\": $props.audioBitRate,\n \"audio-sample-rate\": $props.audioSampleRate,\n \"init-reply-message\": $data.initReplyMessage,\n \"init-edit-message\": $data.initEditMessage,\n \"dropped-files\": $data.droppedFiles,\n \"emoji-data-source\": $props.emojiDataSource,\n onUpdateEditedMessageId: _cache[7] || (_cache[7] = ($event) => $data.editedMessageId = $event),\n onEditMessage: _cache[8] || (_cache[8] = ($event) => _ctx.$emit(\"edit-message\", $event)),\n onSendMessage: _cache[9] || (_cache[9] = ($event) => _ctx.$emit(\"send-message\", $event)),\n onTypingMessage: _cache[10] || (_cache[10] = ($event) => _ctx.$emit(\"typing-message\", $event)),\n onTextareaActionHandler: _cache[11] || (_cache[11] = ($event) => _ctx.$emit(\"textarea-action-handler\", $event))\n }, createSlots({ _: 2 }, [\n renderList(_ctx.$slots, (idx, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"room\", \"room-id\", \"room-message\", \"text-messages\", \"show-send-icon\", \"show-files\", \"show-audio\", \"show-emojis\", \"show-footer\", \"accepted-files\", \"textarea-action-enabled\", \"textarea-auto-focus\", \"user-tags-enabled\", \"emojis-suggestion-enabled\", \"templates-text\", \"text-formatting\", \"link-options\", \"audio-bit-rate\", \"audio-sample-rate\", \"init-reply-message\", \"init-edit-message\", \"dropped-files\", \"emoji-data-source\"])\n ], 544)), [\n [vShow, $props.isMobile && !$props.showRoomsList || !$props.isMobile || $props.singleRoom]\n ]);\n}\nvar Room = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$2]]);\nconst _sfc_main$1 = {\n name: \"MediaPreview\",\n components: {\n SvgIcon\n },\n props: {\n file: { type: Object, required: true }\n },\n emits: [\"close-media-preview\"],\n computed: {\n isImage() {\n return isImageFile(this.file);\n },\n isVideo() {\n return isVideoFile(this.file);\n }\n },\n mounted() {\n this.$refs.modal.focus();\n },\n methods: {\n closeModal() {\n this.$emit(\"close-media-preview\");\n }\n }\n};\nconst _hoisted_1$1 = {\n key: 0,\n class: \"vac-media-preview-container\"\n};\nconst _hoisted_2 = {\n key: 1,\n class: \"vac-media-preview-container\"\n};\nconst _hoisted_3 = {\n controls: \"\",\n autoplay: \"\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = { class: \"vac-svg-button\" };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_svg_icon = resolveComponent(\"svg-icon\");\n return openBlock(), createElementBlock(\"div\", {\n ref: \"modal\",\n tabindex: \"0\",\n class: \"vac-media-preview\",\n onClick: _cache[0] || (_cache[0] = withModifiers((...args) => $options.closeModal && $options.closeModal(...args), [\"stop\"])),\n onKeydown: _cache[1] || (_cache[1] = withKeys((...args) => $options.closeModal && $options.closeModal(...args), [\"esc\"]))\n }, [\n createVNode(Transition, {\n name: \"vac-bounce-preview\",\n appear: \"\"\n }, {\n default: withCtx(() => [\n $options.isImage ? (openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n createBaseVNode(\"div\", {\n class: \"vac-image-preview\",\n style: normalizeStyle({\n \"background-image\": `url('${$props.file.url}')`\n })\n }, null, 4)\n ])) : $options.isVideo ? (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n createBaseVNode(\"video\", _hoisted_3, [\n createBaseVNode(\"source\", {\n src: $props.file.url\n }, null, 8, _hoisted_4)\n ])\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n createBaseVNode(\"div\", _hoisted_5, [\n renderSlot(_ctx.$slots, \"preview-close-icon\", {}, () => [\n createVNode(_component_svg_icon, {\n name: \"close-outline\",\n param: \"preview\"\n })\n ])\n ])\n ], 544);\n}\nvar MediaPreview = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nvar locales = {\n ROOMS_EMPTY: \"No rooms\",\n ROOM_EMPTY: \"No room selected\",\n NEW_MESSAGES: \"New Messages\",\n MESSAGE_DELETED: \"This message was deleted\",\n MESSAGES_EMPTY: \"No messages\",\n CONVERSATION_STARTED: \"Conversation started on:\",\n TYPE_MESSAGE: \"Type message\",\n SEARCH: \"Search\",\n IS_ONLINE: \"is online\",\n LAST_SEEN: \"last seen \",\n IS_TYPING: \"is writing...\",\n CANCEL_SELECT_MESSAGE: \"Cancel\"\n};\nconst defaultThemeStyles = {\n light: {\n general: {\n color: \"#0a0a0a\",\n colorButtonClear: \"#1976d2\",\n colorButton: \"#fff\",\n backgroundColorButton: \"#1976d2\",\n backgroundInput: \"#fff\",\n colorPlaceholder: \"#9ca6af\",\n colorCaret: \"#1976d2\",\n colorSpinner: \"#333\",\n borderStyle: \"1px solid #e1e4e8\",\n backgroundScrollIcon: \"#fff\"\n },\n container: {\n border: \"none\",\n borderRadius: \"4px\",\n boxShadow: \"0px 1px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)\"\n },\n header: {\n background: \"#fff\",\n colorRoomName: \"#0a0a0a\",\n colorRoomInfo: \"#9ca6af\"\n },\n footer: {\n background: \"#f8f9fa\",\n borderStyleInput: \"1px solid #e1e4e8\",\n borderInputSelected: \"#1976d2\",\n backgroundReply: \"#e5e5e6\",\n backgroundTagActive: \"#e5e5e6\",\n backgroundTag: \"#f8f9fa\"\n },\n content: {\n background: \"#f8f9fa\"\n },\n sidemenu: {\n background: \"#fff\",\n backgroundHover: \"#f6f6f6\",\n backgroundActive: \"#e5effa\",\n colorActive: \"#1976d2\",\n borderColorSearch: \"#e1e5e8\"\n },\n dropdown: {\n background: \"#fff\",\n backgroundHover: \"#f6f6f6\"\n },\n message: {\n background: \"#fff\",\n backgroundMe: \"#ccf2cf\",\n color: \"#0a0a0a\",\n colorStarted: \"#9ca6af\",\n backgroundDeleted: \"#dadfe2\",\n backgroundSelected: \"#c2dcf2\",\n colorDeleted: \"#757e85\",\n colorUsername: \"#9ca6af\",\n colorTimestamp: \"#828c94\",\n backgroundDate: \"#e5effa\",\n colorDate: \"#505a62\",\n backgroundSystem: \"#e5effa\",\n colorSystem: \"#505a62\",\n backgroundMedia: \"rgba(0, 0, 0, 0.15)\",\n backgroundReply: \"rgba(0, 0, 0, 0.08)\",\n colorReplyUsername: \"#0a0a0a\",\n colorReply: \"#6e6e6e\",\n colorTag: \"#0d579c\",\n backgroundImage: \"#ddd\",\n colorNewMessages: \"#1976d2\",\n backgroundScrollCounter: \"#0696c7\",\n colorScrollCounter: \"#fff\",\n backgroundReaction: \"#eee\",\n borderStyleReaction: \"1px solid #eee\",\n backgroundReactionHover: \"#fff\",\n borderStyleReactionHover: \"1px solid #ddd\",\n colorReactionCounter: \"#0a0a0a\",\n backgroundReactionMe: \"#cfecf5\",\n borderStyleReactionMe: \"1px solid #3b98b8\",\n backgroundReactionHoverMe: \"#cfecf5\",\n borderStyleReactionHoverMe: \"1px solid #3b98b8\",\n colorReactionCounterMe: \"#0b59b3\",\n backgroundAudioRecord: \"#eb4034\",\n backgroundAudioLine: \"rgba(0, 0, 0, 0.15)\",\n backgroundAudioProgress: \"#455247\",\n backgroundAudioProgressSelector: \"#455247\",\n colorFileExtension: \"#757e85\"\n },\n markdown: {\n background: \"rgba(239, 239, 239, 0.7)\",\n border: \"rgba(212, 212, 212, 0.9)\",\n color: \"#e01e5a\",\n colorMulti: \"#0a0a0a\"\n },\n room: {\n colorUsername: \"#0a0a0a\",\n colorMessage: \"#67717a\",\n colorTimestamp: \"#a2aeb8\",\n colorStateOnline: \"#4caf50\",\n colorStateOffline: \"#9ca6af\",\n backgroundCounterBadge: \"#0696c7\",\n colorCounterBadge: \"#fff\"\n },\n emoji: {\n background: \"#fff\"\n },\n icons: {\n search: \"#9ca6af\",\n add: \"#1976d2\",\n toggle: \"#0a0a0a\",\n menu: \"#0a0a0a\",\n close: \"#9ca6af\",\n closeImage: \"#fff\",\n file: \"#1976d2\",\n paperclip: \"#1976d2\",\n closeOutline: \"#000\",\n closePreview: \"#fff\",\n send: \"#1976d2\",\n sendDisabled: \"#9ca6af\",\n emoji: \"#1976d2\",\n emojiReaction: \"rgba(0, 0, 0, 0.3)\",\n document: \"#1976d2\",\n pencil: \"#9e9e9e\",\n checkmark: \"#9e9e9e\",\n checkmarkSeen: \"#0696c7\",\n eye: \"#fff\",\n dropdownMessage: \"#fff\",\n dropdownMessageBackground: \"rgba(0, 0, 0, 0.25)\",\n dropdownRoom: \"#9e9e9e\",\n dropdownScroll: \"#0a0a0a\",\n microphone: \"#1976d2\",\n audioPlay: \"#455247\",\n audioPause: \"#455247\",\n audioCancel: \"#eb4034\",\n audioConfirm: \"#1ba65b\"\n }\n },\n dark: {\n general: {\n color: \"#fff\",\n colorButtonClear: \"#fff\",\n colorButton: \"#fff\",\n backgroundColorButton: \"#1976d2\",\n backgroundInput: \"#202223\",\n colorPlaceholder: \"#596269\",\n colorCaret: \"#fff\",\n colorSpinner: \"#fff\",\n borderStyle: \"none\",\n backgroundScrollIcon: \"#fff\"\n },\n container: {\n border: \"none\",\n borderRadius: \"4px\",\n boxShadow: \"0px 1px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)\"\n },\n header: {\n background: \"#181a1b\",\n colorRoomName: \"#fff\",\n colorRoomInfo: \"#9ca6af\"\n },\n footer: {\n background: \"#131415\",\n borderStyleInput: \"none\",\n borderInputSelected: \"#1976d2\",\n backgroundReply: \"#1b1c1c\",\n backgroundTagActive: \"#1b1c1c\",\n backgroundTag: \"#131415\"\n },\n content: {\n background: \"#131415\"\n },\n sidemenu: {\n background: \"#181a1b\",\n backgroundHover: \"#202224\",\n backgroundActive: \"#151617\",\n colorActive: \"#fff\",\n borderColorSearch: \"#181a1b\"\n },\n dropdown: {\n background: \"#2a2c33\",\n backgroundHover: \"#26282e\"\n },\n message: {\n background: \"#22242a\",\n backgroundMe: \"#1f7e80\",\n color: \"#fff\",\n colorStarted: \"#9ca6af\",\n backgroundDeleted: \"#1b1c21\",\n backgroundSelected: \"#c2dcf2\",\n colorDeleted: \"#a2a5a8\",\n colorUsername: \"#b3bac9\",\n colorTimestamp: \"#ebedf2\",\n backgroundDate: \"rgba(0, 0, 0, 0.3)\",\n colorDate: \"#bec5cc\",\n backgroundSystem: \"rgba(0, 0, 0, 0.3)\",\n colorSystem: \"#bec5cc\",\n backgroundMedia: \"rgba(0, 0, 0, 0.18)\",\n backgroundReply: \"rgba(0, 0, 0, 0.18)\",\n colorReplyUsername: \"#fff\",\n colorReply: \"#d6d6d6\",\n colorTag: \"#f0c60a\",\n backgroundImage: \"#ddd\",\n colorNewMessages: \"#fff\",\n backgroundScrollCounter: \"#1976d2\",\n colorScrollCounter: \"#fff\",\n backgroundReaction: \"none\",\n borderStyleReaction: \"none\",\n backgroundReactionHover: \"#202223\",\n borderStyleReactionHover: \"none\",\n colorReactionCounter: \"#fff\",\n backgroundReactionMe: \"#4e9ad1\",\n borderStyleReactionMe: \"none\",\n backgroundReactionHoverMe: \"#4e9ad1\",\n borderStyleReactionHoverMe: \"none\",\n colorReactionCounterMe: \"#fff\",\n backgroundAudioRecord: \"#eb4034\",\n backgroundAudioLine: \"rgba(255, 255, 255, 0.15)\",\n backgroundAudioProgress: \"#b7d4d3\",\n backgroundAudioProgressSelector: \"#b7d4d3\",\n colorFileExtension: \"#a2a5a8\"\n },\n markdown: {\n background: \"rgba(239, 239, 239, 0.7)\",\n border: \"rgba(212, 212, 212, 0.9)\",\n color: \"#e01e5a\",\n colorMulti: \"#0a0a0a\"\n },\n room: {\n colorUsername: \"#fff\",\n colorMessage: \"#6c7278\",\n colorTimestamp: \"#6c7278\",\n colorStateOnline: \"#4caf50\",\n colorStateOffline: \"#596269\",\n backgroundCounterBadge: \"#1976d2\",\n colorCounterBadge: \"#fff\"\n },\n emoji: {\n background: \"#343740\"\n },\n icons: {\n search: \"#596269\",\n add: \"#fff\",\n toggle: \"#fff\",\n menu: \"#fff\",\n close: \"#9ca6af\",\n closeImage: \"#fff\",\n file: \"#1976d2\",\n paperclip: \"#fff\",\n closeOutline: \"#fff\",\n closePreview: \"#fff\",\n send: \"#fff\",\n sendDisabled: \"#646a70\",\n emoji: \"#fff\",\n emojiReaction: \"#fff\",\n document: \"#1976d2\",\n pencil: \"#ebedf2\",\n checkmark: \"#ebedf2\",\n checkmarkSeen: \"#f0d90a\",\n eye: \"#fff\",\n dropdownMessage: \"#fff\",\n dropdownMessageBackground: \"rgba(0, 0, 0, 0.25)\",\n dropdownRoom: \"#fff\",\n dropdownScroll: \"#0a0a0a\",\n microphone: \"#fff\",\n audioPlay: \"#b7d4d3\",\n audioPause: \"#b7d4d3\",\n audioCancel: \"#eb4034\",\n audioConfirm: \"#1ba65b\"\n }\n }\n};\nconst cssThemeVars = ({\n general,\n container,\n header,\n footer,\n sidemenu,\n content,\n dropdown,\n message,\n markdown,\n room,\n emoji,\n icons\n}) => {\n return {\n \"--chat-color\": general.color,\n \"--chat-color-button-clear\": general.colorButtonClear,\n \"--chat-color-button\": general.colorButton,\n \"--chat-bg-color-button\": general.backgroundColorButton,\n \"--chat-bg-color-input\": general.backgroundInput,\n \"--chat-color-spinner\": general.colorSpinner,\n \"--chat-color-placeholder\": general.colorPlaceholder,\n \"--chat-color-caret\": general.colorCaret,\n \"--chat-border-style\": general.borderStyle,\n \"--chat-bg-scroll-icon\": general.backgroundScrollIcon,\n \"--chat-container-border\": container.border,\n \"--chat-container-border-radius\": container.borderRadius,\n \"--chat-container-box-shadow\": container.boxShadow,\n \"--chat-header-bg-color\": header.background,\n \"--chat-header-color-name\": header.colorRoomName,\n \"--chat-header-color-info\": header.colorRoomInfo,\n \"--chat-footer-bg-color\": footer.background,\n \"--chat-border-style-input\": footer.borderStyleInput,\n \"--chat-border-color-input-selected\": footer.borderInputSelected,\n \"--chat-footer-bg-color-reply\": footer.backgroundReply,\n \"--chat-footer-bg-color-tag-active\": footer.backgroundTagActive,\n \"--chat-footer-bg-color-tag\": footer.backgroundTag,\n \"--chat-content-bg-color\": content.background,\n \"--chat-sidemenu-bg-color\": sidemenu.background,\n \"--chat-sidemenu-bg-color-hover\": sidemenu.backgroundHover,\n \"--chat-sidemenu-bg-color-active\": sidemenu.backgroundActive,\n \"--chat-sidemenu-color-active\": sidemenu.colorActive,\n \"--chat-sidemenu-border-color-search\": sidemenu.borderColorSearch,\n \"--chat-dropdown-bg-color\": dropdown.background,\n \"--chat-dropdown-bg-color-hover\": dropdown.backgroundHover,\n \"--chat-message-bg-color\": message.background,\n \"--chat-message-bg-color-me\": message.backgroundMe,\n \"--chat-message-color-started\": message.colorStarted,\n \"--chat-message-bg-color-deleted\": message.backgroundDeleted,\n \"--chat-message-bg-color-selected\": message.backgroundSelected,\n \"--chat-message-color-deleted\": message.colorDeleted,\n \"--chat-message-color-username\": message.colorUsername,\n \"--chat-message-color-timestamp\": message.colorTimestamp,\n \"--chat-message-bg-color-date\": message.backgroundDate,\n \"--chat-message-color-date\": message.colorDate,\n \"--chat-message-bg-color-system\": message.backgroundSystem,\n \"--chat-message-color-system\": message.colorSystem,\n \"--chat-message-color\": message.color,\n \"--chat-message-bg-color-media\": message.backgroundMedia,\n \"--chat-message-bg-color-reply\": message.backgroundReply,\n \"--chat-message-color-reply-username\": message.colorReplyUsername,\n \"--chat-message-color-reply-content\": message.colorReply,\n \"--chat-message-color-tag\": message.colorTag,\n \"--chat-message-bg-color-image\": message.backgroundImage,\n \"--chat-message-color-new-messages\": message.colorNewMessages,\n \"--chat-message-bg-color-scroll-counter\": message.backgroundScrollCounter,\n \"--chat-message-color-scroll-counter\": message.colorScrollCounter,\n \"--chat-message-bg-color-reaction\": message.backgroundReaction,\n \"--chat-message-border-style-reaction\": message.borderStyleReaction,\n \"--chat-message-bg-color-reaction-hover\": message.backgroundReactionHover,\n \"--chat-message-border-style-reaction-hover\": message.borderStyleReactionHover,\n \"--chat-message-color-reaction-counter\": message.colorReactionCounter,\n \"--chat-message-bg-color-reaction-me\": message.backgroundReactionMe,\n \"--chat-message-border-style-reaction-me\": message.borderStyleReactionMe,\n \"--chat-message-bg-color-reaction-hover-me\": message.backgroundReactionHoverMe,\n \"--chat-message-border-style-reaction-hover-me\": message.borderStyleReactionHoverMe,\n \"--chat-message-color-reaction-counter-me\": message.colorReactionCounterMe,\n \"--chat-message-bg-color-audio-record\": message.backgroundAudioRecord,\n \"--chat-message-bg-color-audio-line\": message.backgroundAudioLine,\n \"--chat-message-bg-color-audio-progress\": message.backgroundAudioProgress,\n \"--chat-message-bg-color-audio-progress-selector\": message.backgroundAudioProgressSelector,\n \"--chat-message-color-file-extension\": message.colorFileExtension,\n \"--chat-markdown-bg\": markdown.background,\n \"--chat-markdown-border\": markdown.border,\n \"--chat-markdown-color\": markdown.color,\n \"--chat-markdown-color-multi\": markdown.colorMulti,\n \"--chat-room-color-username\": room.colorUsername,\n \"--chat-room-color-message\": room.colorMessage,\n \"--chat-room-color-timestamp\": room.colorTimestamp,\n \"--chat-room-color-online\": room.colorStateOnline,\n \"--chat-room-color-offline\": room.colorStateOffline,\n \"--chat-room-bg-color-badge\": room.backgroundCounterBadge,\n \"--chat-room-color-badge\": room.colorCounterBadge,\n \"--chat-emoji-bg-color\": emoji.background,\n \"--chat-icon-color-search\": icons.search,\n \"--chat-icon-color-add\": icons.add,\n \"--chat-icon-color-toggle\": icons.toggle,\n \"--chat-icon-color-menu\": icons.menu,\n \"--chat-icon-color-close\": icons.close,\n \"--chat-icon-color-close-image\": icons.closeImage,\n \"--chat-icon-color-file\": icons.file,\n \"--chat-icon-color-paperclip\": icons.paperclip,\n \"--chat-icon-color-close-outline\": icons.closeOutline,\n \"--chat-icon-color-close-preview\": icons.closePreview,\n \"--chat-icon-color-send\": icons.send,\n \"--chat-icon-color-send-disabled\": icons.sendDisabled,\n \"--chat-icon-color-emoji\": icons.emoji,\n \"--chat-icon-color-emoji-reaction\": icons.emojiReaction,\n \"--chat-icon-color-document\": icons.document,\n \"--chat-icon-color-pencil\": icons.pencil,\n \"--chat-icon-color-checkmark\": icons.checkmark,\n \"--chat-icon-color-checkmark-seen\": icons.checkmarkSeen,\n \"--chat-icon-color-eye\": icons.eye,\n \"--chat-icon-color-dropdown-message\": icons.dropdownMessage,\n \"--chat-icon-bg-dropdown-message\": icons.dropdownMessageBackground,\n \"--chat-icon-color-dropdown-room\": icons.dropdownRoom,\n \"--chat-icon-color-dropdown-scroll\": icons.dropdownScroll,\n \"--chat-icon-color-microphone\": icons.microphone,\n \"--chat-icon-color-audio-play\": icons.audioPlay,\n \"--chat-icon-color-audio-pause\": icons.audioPause,\n \"--chat-icon-color-audio-cancel\": icons.audioCancel,\n \"--chat-icon-color-audio-confirm\": icons.audioConfirm\n };\n};\nvar _style_0 = '.vac-fade-spinner-enter-from{opacity:0}.vac-fade-spinner-enter-active{transition:opacity .8s}.vac-fade-spinner-leave-active{transition:opacity .2s;opacity:0}.vac-fade-image-enter-from{opacity:0}.vac-fade-image-enter-active{transition:opacity 1s}.vac-fade-image-leave-active{transition:opacity .5s;opacity:0}.vac-fade-message-enter-from{opacity:0}.vac-fade-message-enter-active{transition:opacity .5s}.vac-fade-message-leave-active{transition:opacity .2s;opacity:0}.vac-slide-left-enter-active,.vac-slide-right-enter-active{transition:all .3s ease;transition-property:transform,opacity}.vac-slide-left-leave-active,.vac-slide-right-leave-active{transition:all .2s cubic-bezier(1,.5,.8,1)!important;transition-property:transform,opacity}.vac-slide-left-enter-from,.vac-slide-left-leave-to{transform:translate(10px);opacity:0}.vac-slide-right-enter-from,.vac-slide-right-leave-to{transform:translate(-10px);opacity:0}.vac-slide-up-enter-active{transition:all .3s ease}.vac-slide-up-leave-active{transition:all .2s cubic-bezier(1,.5,.8,1)}.vac-slide-up-enter-from,.vac-slide-up-leave-to{transform:translateY(10px);opacity:0}.vac-bounce-enter-active{animation:vac-bounce-in .5s}.vac-bounce-leave-active{animation:vac-bounce-in .3s reverse}@keyframes vac-bounce-in{0%{transform:scale(0)}50%{transform:scale(1.05)}to{transform:scale(1)}}.vac-fade-preview-enter{opacity:0}.vac-fade-preview-enter-active{transition:opacity .1s}.vac-fade-preview-leave-active{transition:opacity .2s;opacity:0}.vac-bounce-preview-enter-active{animation:vac-bounce-image-in .4s}.vac-bounce-preview-leave-active{animation:vac-bounce-image-in .3s reverse}@keyframes vac-bounce-image-in{0%{transform:scale(.6)}to{transform:scale(1)}}.vac-menu-list{border-radius:4px;display:block;cursor:pointer;background:var(--chat-dropdown-bg-color);padding:6px 0}.vac-menu-list :hover{background:var(--chat-dropdown-bg-color-hover);transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-menu-list :not(:hover){transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-menu-item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%;min-height:30px;padding:5px 16px;position:relative;white-space:nowrap;line-height:30px}.vac-menu-options{position:absolute;right:10px;top:20px;z-index:9999;min-width:150px;display:inline-block;border-radius:4px;font-size:14px;color:var(--chat-color);overflow-y:auto;overflow-x:hidden;contain:content;box-shadow:0 2px 2px -4px #0000001a,0 2px 2px 1px #0000001f,0 1px 8px 1px #0000001f}.vac-app-border{border:var(--chat-border-style)}.vac-app-border-t{border-top:var(--chat-border-style)}.vac-app-border-r{border-right:var(--chat-border-style)}.vac-app-border-b{border-bottom:var(--chat-border-style)}.vac-app-box-shadow{transition:all .5s;box-shadow:0 2px 2px -4px #0000001a,0 2px 2px 1px #0000001f,0 1px 8px 1px #0000001f}.vac-item-clickable{cursor:pointer}.vac-vertical-center{display:flex;align-items:center;height:100%}.vac-vertical-center .vac-vertical-container{width:100%;text-align:center}.vac-svg-button{max-height:30px;display:flex;cursor:pointer;transition:all .2s}.vac-svg-button:hover{transform:scale(1.1);opacity:.7}.vac-avatar{background-size:cover;background-position:center center;background-repeat:no-repeat;background-color:#ddd;height:42px;width:42px;min-height:42px;min-width:42px;margin-right:15px;border-radius:50%}.vac-blur-loading{filter:blur(3px)}.vac-badge-counter{height:13px;width:auto;min-width:13px;border-radius:50%;display:flex;align-items:center;justify-content:center;padding:3px;font-size:11px;font-weight:500}.vac-text-ellipsis{width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vac-text-bold{font-weight:700}.vac-text-italic{font-style:italic}.vac-text-strike{text-decoration:line-through}.vac-text-underline{text-decoration:underline}.vac-text-inline-code{display:inline-block;font-size:12px;color:var(--chat-markdown-color);background:var(--chat-markdown-bg);border:1px solid var(--chat-markdown-border);border-radius:3px;margin:2px 0;padding:2px 3px}.vac-text-multiline-code{display:block;font-size:12px;color:var(--chat-markdown-color-multi);background:var(--chat-markdown-bg);border:1px solid var(--chat-markdown-border);border-radius:3px;margin:4px 0;padding:7px}.vac-text-tag{color:var(--chat-message-color-tag);cursor:pointer}.vac-file-container{display:flex;align-content:center;justify-content:center;flex-wrap:wrap;text-align:center;background:var(--chat-bg-color-input);border:var(--chat-border-style-input);border-radius:4px;padding:10px}.vac-file-container svg{height:28px;width:28px}.vac-file-container .vac-text-extension{font-size:12px;color:var(--chat-message-color-file-extension);margin-top:-2px}.vac-card-window{width:100%;display:block;max-width:100%;background:var(--chat-content-bg-color);color:var(--chat-color);overflow-wrap:break-word;white-space:normal;border:var(--chat-container-border);border-radius:var(--chat-container-border-radius);box-shadow:var(--chat-container-box-shadow);-webkit-tap-highlight-color:transparent}.vac-card-window *{font-family:inherit}.vac-card-window a{color:#0d579c;font-weight:500}.vac-card-window .vac-chat-container{height:100%;display:flex}.vac-card-window .vac-chat-container input{min-width:10px}.vac-card-window .vac-chat-container textarea,.vac-card-window .vac-chat-container input[type=text],.vac-card-window .vac-chat-container input[type=search]{-webkit-appearance:none}.vac-media-preview{position:fixed;top:0;left:0;z-index:99;width:100vw;height:100vh;display:flex;align-items:center;background-color:#000c;outline:none}.vac-media-preview .vac-media-preview-container{height:calc(100% - 140px);width:calc(100% - 80px);padding:70px 40px;margin:0 auto}.vac-media-preview .vac-image-preview{width:100%;height:100%;background-size:contain;background-repeat:no-repeat;background-position:center}.vac-media-preview video{width:100%;height:100%}.vac-media-preview .vac-svg-button{position:absolute;top:30px;right:30px;transform:scale(1.4)}@media only screen and (max-width: 768px){.vac-media-preview .vac-svg-button{top:20px;right:20px;transform:scale(1.2)}.vac-media-preview .vac-media-preview-container{width:calc(100% - 40px);padding:70px 20px}}.vac-col-messages{position:relative;height:100%;flex:1;overflow:hidden;display:flex;flex-flow:column}.vac-col-messages .vac-container-center{height:100%;width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.vac-col-messages .vac-room-empty{font-size:14px;color:#9ca6af;font-style:italic;line-height:20px;white-space:pre-line}.vac-col-messages .vac-room-empty div{padding:0 10%}.vac-col-messages .vac-container-scroll{background:var(--chat-content-bg-color);flex:1;overflow-y:auto;margin-right:1px;margin-top:65px;-webkit-overflow-scrolling:touch}.vac-col-messages .vac-container-scroll.vac-scroll-smooth{scroll-behavior:smooth}.vac-col-messages .vac-messages-container{padding:0 5px 5px}.vac-col-messages .vac-text-started{font-size:14px;color:var(--chat-message-color-started);font-style:italic;text-align:center;margin-top:25px;margin-bottom:20px}.vac-col-messages .vac-icon-scroll{position:absolute;bottom:80px;right:20px;padding:8px;background:var(--chat-bg-scroll-icon);border-radius:50%;box-shadow:0 1px 1px -1px #0003,0 1px 1px #00000024,0 1px 2px #0000001f;display:flex;cursor:pointer;z-index:10}.vac-col-messages .vac-icon-scroll svg{height:25px;width:25px}.vac-col-messages .vac-messages-count{position:absolute;top:-8px;left:11px;background-color:var(--chat-message-bg-color-scroll-counter);color:var(--chat-message-color-scroll-counter)}.vac-col-messages .vac-messages-hidden{opacity:0}@media only screen and (max-width: 768px){.vac-col-messages .vac-container-scroll{margin-top:50px}.vac-col-messages .vac-text-started{margin-top:20px}.vac-col-messages .vac-icon-scroll{bottom:70px}}.vac-room-header{position:absolute;display:flex;align-items:center;height:64px;width:100%;z-index:10;margin-right:1px;background:var(--chat-header-bg-color);border-top-right-radius:var(--chat-container-border-radius)}.vac-room-header .vac-room-wrapper{display:flex;align-items:center;min-width:0;height:100%;width:100%;padding:0 16px}.vac-room-header .vac-toggle-button{margin-right:15px}.vac-room-header .vac-toggle-button svg{height:26px;width:26px}.vac-room-header .vac-rotate-icon{transform:rotate(180deg)!important}.vac-room-header .vac-rotate-icon-init{transform:rotate(360deg)}.vac-room-header .vac-info-wrapper,.vac-room-header .vac-room-selection{display:flex;align-items:center;min-width:0;width:100%;height:100%}.vac-room-header .vac-room-selection .vac-selection-button{padding:8px 16px;color:var(--chat-color-button);background-color:var(--chat-bg-color-button);border-radius:4px;margin-right:10px;cursor:pointer;transition:all .2s}.vac-room-header .vac-room-selection .vac-selection-button:hover{opacity:.7}.vac-room-header .vac-room-selection .vac-selection-button:active{opacity:.9}.vac-room-header .vac-room-selection .vac-selection-button .vac-selection-button-count{margin-left:6px;opacity:.9}.vac-room-header .vac-room-selection .vac-selection-cancel{display:flex;align-items:center;margin-left:auto;white-space:nowrap;color:var(--chat-color-button-clear);transition:all .2s}.vac-room-header .vac-room-selection .vac-selection-cancel:hover{opacity:.7}.vac-room-header .vac-room-name{font-size:17px;font-weight:500;line-height:22px;color:var(--chat-header-color-name)}.vac-room-header .vac-room-info{font-size:13px;line-height:18px;color:var(--chat-header-color-info)}.vac-room-header .vac-room-options{margin-left:auto}@media only screen and (max-width: 768px){.vac-room-header{height:50px}.vac-room-header .vac-room-wrapper{padding:0 10px}.vac-room-header .vac-room-name{font-size:16px;line-height:22px}.vac-room-header .vac-room-info{font-size:12px;line-height:16px}.vac-room-header .vac-avatar{height:37px;width:37px;min-height:37px;min-width:37px}}.vac-room-footer{width:100%;border-bottom-right-radius:4px;z-index:10}.vac-box-footer{display:flex;position:relative;background:var(--chat-footer-bg-color);padding:10px 8px}.vac-textarea{max-height:300px;overflow-y:auto;height:20px;width:100%;line-height:20px;outline:0;resize:none;border-radius:20px;padding:12px 16px;box-sizing:content-box;font-size:16px;background:var(--chat-bg-color-input);color:var(--chat-color);caret-color:var(--chat-color-caret);border:var(--chat-border-style-input)}.vac-textarea::placeholder{color:var(--chat-color-placeholder);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vac-textarea-outline{border:1px solid var(--chat-border-color-input-selected);box-shadow:inset 0 0 0 1px var(--chat-border-color-input-selected)}.vac-icon-textarea,.vac-icon-textarea-left{display:flex;align-items:center}.vac-icon-textarea svg,.vac-icon-textarea .vac-wrapper,.vac-icon-textarea-left svg,.vac-icon-textarea-left .vac-wrapper{margin:0 7px}.vac-icon-textarea{margin-left:5px}.vac-icon-textarea-left{display:flex;align-items:center;margin-right:5px}.vac-icon-textarea-left svg,.vac-icon-textarea-left .vac-wrapper{margin:0 7px}.vac-icon-textarea-left .vac-icon-microphone{fill:var(--chat-icon-color-microphone);margin:0 7px}.vac-icon-textarea-left .vac-dot-audio-record{height:15px;width:15px;border-radius:50%;background-color:var(--chat-message-bg-color-audio-record);animation:vac-scaling .8s ease-in-out infinite alternate}@keyframes vac-scaling{0%{transform:scale(1);opacity:.4}to{transform:scale(1.1);opacity:1}}.vac-icon-textarea-left .vac-dot-audio-record-time{font-size:16px;color:var(--chat-color);margin-left:8px;width:45px}.vac-icon-textarea-left .vac-icon-audio-stop,.vac-icon-textarea-left .vac-icon-audio-confirm{min-height:28px;min-width:28px}.vac-icon-textarea-left .vac-icon-audio-stop svg,.vac-icon-textarea-left .vac-icon-audio-confirm svg{min-height:28px;min-width:28px}.vac-icon-textarea-left .vac-icon-audio-stop{margin-right:20px}.vac-icon-textarea-left .vac-icon-audio-stop #vac-icon-close-outline{fill:var(--chat-icon-color-audio-cancel)}.vac-icon-textarea-left .vac-icon-audio-confirm{margin-right:3px;margin-left:12px}.vac-icon-textarea-left .vac-icon-audio-confirm #vac-icon-checkmark{fill:var(--chat-icon-color-audio-confirm)}.vac-send-disabled,.vac-send-disabled svg{cursor:none!important;pointer-events:none!important;transform:none!important}@media only screen and (max-width: 768px){.vac-room-footer{width:100%}.vac-box-footer{padding:7px 2px 7px 7px}.vac-box-footer.vac-box-footer-border{border-top:var(--chat-border-style-input)}.vac-textarea{padding:7px;line-height:18px}.vac-textarea::placeholder{color:transparent}.vac-icon-textarea svg,.vac-icon-textarea .vac-wrapper,.vac-icon-textarea-left svg,.vac-icon-textarea-left .vac-wrapper{margin:0 5px!important}}@media only screen and (max-height: 768px){.vac-textarea{max-height:120px}}.vac-emojis-container{width:calc(100% - 16px);padding:10px 8px;background:var(--chat-footer-bg-color);display:flex;align-items:center;overflow:auto}.vac-emojis-container .vac-emoji-element{padding:0 8px;font-size:30px;border-radius:4px;cursor:pointer;background:var(--chat-footer-bg-color-tag);transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-emojis-container .vac-emoji-element-active{background:var(--chat-footer-bg-color-tag-active)}@media only screen and (max-width: 768px){.vac-emojis-container{width:calc(100% - 10px);padding:7px 5px}.vac-emojis-container .vac-emoji-element{padding:0 7px;font-size:26px}}.vac-reply-container{display:flex;padding:10px 10px 0;background:var(--chat-footer-bg-color);align-items:center;width:calc(100% - 20px)}.vac-reply-container .vac-reply-box{width:100%;overflow:hidden;background:var(--chat-footer-bg-color-reply);border-radius:4px;padding:8px 10px}.vac-reply-container .vac-reply-info{overflow:hidden}.vac-reply-container .vac-reply-username{color:var(--chat-message-color-reply-username);font-size:12px;line-height:15px;margin-bottom:2px}.vac-reply-container .vac-reply-content{font-size:12px;color:var(--chat-message-color-reply-content);white-space:pre-line}.vac-reply-container .vac-icon-reply{margin-left:10px}.vac-reply-container .vac-icon-reply svg{height:20px;width:20px}.vac-reply-container .vac-image-reply{max-height:100px;max-width:200px;margin:4px 10px 0 0;border-radius:4px}.vac-reply-container .vac-audio-reply{margin-right:10px}.vac-reply-container .vac-file-container{max-width:80px}@media only screen and (max-width: 768px){.vac-reply-container{padding:5px 8px;width:calc(100% - 16px)}}.vac-room-files-container{display:flex;align-items:center;padding:10px 6px 0;background:var(--chat-footer-bg-color)}.vac-room-files-container .vac-files-box{display:flex;overflow:auto;width:calc(100% - 30px)}.vac-room-files-container video{height:100px;border:var(--chat-border-style-input);border-radius:4px}.vac-room-files-container .vac-icon-close{margin-left:auto}.vac-room-files-container .vac-icon-close svg{height:20px;width:20px}@media only screen and (max-width: 768px){.vac-files-container{padding:6px 4px 4px 2px}}.vac-room-file-container{display:flex;position:relative;margin:0 4px}.vac-room-file-container .vac-message-image{position:relative;background-color:var(--chat-message-bg-color-image)!important;background-size:cover!important;background-position:center center!important;background-repeat:no-repeat!important;height:100px;width:100px;border:var(--chat-border-style-input);border-radius:4px}.vac-room-file-container .vac-file-container{height:80px;width:80px}.vac-room-file-container .vac-icon-remove{position:absolute;top:6px;left:6px;z-index:10}.vac-room-file-container .vac-icon-remove svg{height:20px;width:20px;border-radius:50%}.vac-room-file-container .vac-icon-remove:before{content:\" \";position:absolute;width:100%;height:100%;background:rgba(0,0,0,.5);border-radius:50%;z-index:-1}.vac-tags-container{display:flex;flex-direction:column;align-items:center;width:100%}.vac-tags-container .vac-tags-box{display:flex;width:100%;height:54px;overflow:hidden;cursor:pointer;background:var(--chat-footer-bg-color-tag);transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-tags-container .vac-tags-box-active{background:var(--chat-footer-bg-color-tag-active)}.vac-tags-container .vac-tags-info{display:flex;overflow:hidden;padding:0 20px;align-items:center}.vac-tags-container .vac-tags-avatar{height:34px;width:34px;min-height:34px;min-width:34px}.vac-tags-container .vac-tags-username{font-size:14px}@media only screen and (max-width: 768px){.vac-tags-container .vac-tags-box{height:50px}.vac-tags-container .vac-tags-info{padding:0 12px}}.vac-template-container{display:flex;flex-direction:column;align-items:center;width:100%}.vac-template-container .vac-template-box{display:flex;width:100%;height:54px;overflow:hidden;cursor:pointer;background:var(--chat-footer-bg-color-tag);transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-template-container .vac-template-active{background:var(--chat-footer-bg-color-tag-active)}.vac-template-container .vac-template-info{display:flex;overflow:hidden;padding:0 20px;align-items:center}.vac-template-container .vac-template-tag{font-size:14px;font-weight:700;margin-right:10px}.vac-template-container .vac-template-text{font-size:14px}@media only screen and (max-width: 768px){.vac-template-container .vac-template-box{height:50px}.vac-template-container .vac-template-info{padding:0 12px}}.vac-rooms-container{display:flex;flex-flow:column;flex:0 0 25%;min-width:260px;max-width:500px;position:relative;background:var(--chat-sidemenu-bg-color);height:100%;border-top-left-radius:var(--chat-container-border-radius);border-bottom-left-radius:var(--chat-container-border-radius)}.vac-rooms-container.vac-rooms-container-full{flex:0 0 100%;max-width:100%}.vac-rooms-container .vac-rooms-empty{font-size:14px;color:#9ca6af;font-style:italic;text-align:center;margin:40px 0;line-height:20px;white-space:pre-line}.vac-rooms-container .vac-room-list{flex:1;position:relative;max-width:100%;cursor:pointer;padding:0 10px 5px;overflow-y:auto}.vac-rooms-container .vac-room-item{border-radius:8px;align-items:center;display:flex;flex:1 1 100%;margin-bottom:5px;padding:0 14px;position:relative;min-height:71px;transition:background-color .3s cubic-bezier(.25,.8,.5,1)}.vac-rooms-container .vac-room-item:hover{background:var(--chat-sidemenu-bg-color-hover)}.vac-rooms-container .vac-room-selected{color:var(--chat-sidemenu-color-active)!important;background:var(--chat-sidemenu-bg-color-active)!important}.vac-rooms-container .vac-room-selected:hover{background:var(--chat-sidemenu-bg-color-active)!important}@media only screen and (max-width: 768px){.vac-rooms-container .vac-room-list{padding:0 7px 5px}.vac-rooms-container .vac-room-item{min-height:60px;padding:0 8px}}.vac-room-container{display:flex;flex:1;align-items:center;width:100%}.vac-room-container .vac-name-container{flex:1}.vac-room-container .vac-title-container{display:flex;align-items:center;line-height:25px}.vac-room-container .vac-state-circle{width:9px;height:9px;border-radius:50%;background-color:var(--chat-room-color-offline);margin-right:6px;transition:.3s}.vac-room-container .vac-state-online{background-color:var(--chat-room-color-online)}.vac-room-container .vac-room-name{flex:1;color:var(--chat-room-color-username);font-weight:500}.vac-room-container .vac-text-date{margin-left:5px;font-size:11px;color:var(--chat-room-color-timestamp)}.vac-room-container .vac-text-last{display:flex;align-items:center;font-size:12px;line-height:19px;color:var(--chat-room-color-message)}.vac-room-container .vac-message-new{color:var(--chat-room-color-username);font-weight:500}.vac-room-container .vac-icon-check{display:flex;vertical-align:middle;height:14px;width:14px;margin-top:-2px;margin-right:2px}.vac-room-container .vac-icon-microphone{height:15px;width:15px;vertical-align:middle;margin:-3px 1px 0 -2px;fill:var(--chat-room-color-message)}.vac-room-container .vac-room-options-container{display:flex;margin-left:auto}.vac-room-container .vac-room-badge{background-color:var(--chat-room-bg-color-badge);color:var(--chat-room-color-badge);margin-left:5px}.vac-room-container .vac-list-room-options{height:19px;width:19px;align-items:center;margin-left:5px}.vac-box-empty{margin-top:10px}@media only screen and (max-width: 768px){.vac-box-empty{margin-top:7px}}.vac-box-search{position:sticky;display:flex;align-items:center;height:64px;padding:0 15px}.vac-box-search .vac-icon-search{display:flex;position:absolute;left:30px}.vac-box-search .vac-icon-search svg{width:18px;height:18px}.vac-box-search .vac-input{height:38px;width:100%;background:var(--chat-bg-color-input);color:var(--chat-color);font-size:15px;outline:0;caret-color:var(--chat-color-caret);padding:10px 10px 10px 40px;border:1px solid var(--chat-sidemenu-border-color-search);border-radius:20px}.vac-box-search .vac-input::placeholder{color:var(--chat-color-placeholder)}.vac-box-search .vac-add-icon{margin-left:auto;padding-left:10px}@media only screen and (max-width: 768px){.vac-box-search{height:58px}}.vac-message-wrapper .vac-card-info{border-radius:4px;text-align:center;margin:10px auto;font-size:12px;padding:4px;display:block;overflow-wrap:break-word;position:relative;white-space:normal;box-shadow:0 1px 1px -1px #0000001a,0 1px 1px -1px #0000001c,0 1px 2px -1px #0000001c}.vac-message-wrapper .vac-card-date{max-width:150px;font-weight:500;text-transform:uppercase;color:var(--chat-message-color-date);background-color:var(--chat-message-bg-color-date)}.vac-message-wrapper .vac-card-system{max-width:250px;padding:8px 4px;color:var(--chat-message-color-system);background-color:var(--chat-message-bg-color-system)}.vac-message-wrapper .vac-line-new{color:var(--chat-message-color-new-messages);position:relative;text-align:center;font-size:13px;padding:10px 0}.vac-message-wrapper .vac-line-new:after,.vac-message-wrapper .vac-line-new:before{border-top:1px solid var(--chat-message-color-new-messages);content:\"\";left:0;position:absolute;top:50%;width:calc(50% - 60px)}.vac-message-wrapper .vac-line-new:before{left:auto;right:0}.vac-message-wrapper .vac-message-box{display:flex;flex:0 0 50%;max-width:50%;justify-content:flex-start;line-height:1.4}.vac-message-wrapper .vac-avatar{height:28px;width:28px;min-height:28px;min-width:28px;margin:0 0 2px;align-self:flex-end}.vac-message-wrapper .vac-avatar-current-offset{margin-right:28px}.vac-message-wrapper .vac-avatar-offset{margin-left:28px}.vac-message-wrapper .vac-failure-container{position:relative;align-self:flex-end;height:20px;width:20px;margin:0 0 2px -4px;border-radius:50%;background-color:#f44336}.vac-message-wrapper .vac-failure-container.vac-failure-container-avatar{margin-right:6px}.vac-message-wrapper .vac-failure-container .vac-failure-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-size:15px;font-weight:700}.vac-message-wrapper .vac-message-container{position:relative;padding:2px 10px;align-items:end;min-width:100px;box-sizing:content-box}.vac-message-wrapper .vac-message-container-offset{margin-top:10px}.vac-message-wrapper .vac-offset-current{margin-left:50%;justify-content:flex-end}.vac-message-wrapper .vac-message-card{background-color:var(--chat-message-bg-color);color:var(--chat-message-color);border-radius:8px;font-size:14px;padding:6px 9px 3px;white-space:pre-line;max-width:100%;-webkit-transition-property:box-shadow,opacity;transition-property:box-shadow,opacity;transition:box-shadow .28s cubic-bezier(.4,0,.2,1);will-change:box-shadow;box-shadow:0 1px 1px -1px #0000001a,0 1px 1px -1px #0000001c,0 1px 2px -1px #0000001c}.vac-message-wrapper .vac-message-highlight{box-shadow:0 1px 2px -1px #0000001a,0 1px 2px -1px #0000001c,0 1px 5px -1px #0000001c}.vac-message-wrapper .vac-message-current{background-color:var(--chat-message-bg-color-me)!important}.vac-message-wrapper .vac-message-deleted{color:var(--chat-message-color-deleted)!important;font-size:13px!important;font-style:italic!important;background-color:var(--chat-message-bg-color-deleted)!important}.vac-message-wrapper .vac-message-selected{background-color:var(--chat-message-bg-color-selected)!important;transition:background-color .2s}.vac-message-wrapper .vac-message-image{position:relative;background-color:var(--chat-message-bg-color-image)!important;background-size:cover!important;background-position:center center!important;background-repeat:no-repeat!important;height:250px;width:250px;max-width:100%;border-radius:4px;margin:4px auto 5px;transition:.4s filter linear}.vac-message-wrapper .vac-text-username{font-size:13px;color:var(--chat-message-color-username);margin-bottom:2px}.vac-message-wrapper .vac-username-reply{margin-bottom:5px}.vac-message-wrapper .vac-text-timestamp{font-size:10px;color:var(--chat-message-color-timestamp);text-align:right}.vac-message-wrapper .vac-progress-time{float:left;margin:-2px 0 0 40px;color:var(--chat-color);font-size:12px}.vac-message-wrapper .vac-icon-edited{-webkit-box-align:center;align-items:center;display:-webkit-inline-box;display:inline-flex;justify-content:center;letter-spacing:normal;line-height:1;text-indent:0;vertical-align:middle;margin:0 4px 2px}.vac-message-wrapper .vac-icon-edited svg{height:12px;width:12px}.vac-message-wrapper .vac-icon-check{height:14px;width:14px;vertical-align:middle;margin:-3px -3px 0 3px}@media only screen and (max-width: 768px){.vac-message-wrapper .vac-message-container{padding:2px 3px 1px}.vac-message-wrapper .vac-message-container-offset{margin-top:10px}.vac-message-wrapper .vac-message-box{flex:0 0 80%;max-width:80%}.vac-message-wrapper .vac-avatar{height:25px;width:25px;min-height:25px;min-width:25px;margin:0 6px 1px 0}.vac-message-wrapper .vac-avatar.vac-avatar-current{margin:0 0 1px 6px}.vac-message-wrapper .vac-avatar-current-offset{margin-right:31px}.vac-message-wrapper .vac-avatar-offset{margin-left:31px}.vac-message-wrapper .vac-failure-container{margin-left:2px}.vac-message-wrapper .vac-failure-container.vac-failure-container-avatar{margin-right:0}.vac-message-wrapper .vac-offset-current{margin-left:20%}.vac-message-wrapper .vac-progress-time{margin-left:37px}}.vac-audio-player{display:flex;margin:8px 0 5px}.vac-audio-player .vac-svg-button{max-width:18px;margin-left:7px}@media only screen and (max-width: 768px){.vac-audio-player{margin:4px 0 0}.vac-audio-player .vac-svg-button{max-width:16px;margin-left:5px}}.vac-player-bar{display:flex;align-items:center;max-width:calc(100% - 18px);margin-right:7px;margin-left:20px}.vac-player-bar .vac-player-progress{width:190px}.vac-player-bar .vac-player-progress .vac-line-container{position:relative;height:4px;border-radius:5px;background-color:var(--chat-message-bg-color-audio-line)}.vac-player-bar .vac-player-progress .vac-line-container .vac-line-progress{position:absolute;height:inherit;background-color:var(--chat-message-bg-color-audio-progress);border-radius:inherit}.vac-player-bar .vac-player-progress .vac-line-container .vac-line-dot{position:absolute;top:-5px;margin-left:-7px;height:14px;width:14px;border-radius:50%;background-color:var(--chat-message-bg-color-audio-progress-selector);transition:transform .25s}.vac-player-bar .vac-player-progress .vac-line-container .vac-line-dot__active{transform:scale(1.2)}@media only screen and (max-width: 768px){.vac-player-bar{margin-right:5px}.vac-player-bar .vac-player-progress .vac-line-container{height:3px}.vac-player-bar .vac-player-progress .vac-line-container .vac-line-dot{height:12px;width:12px;top:-5px;margin-left:-5px}}.vac-message-actions-wrapper .vac-options-container{position:absolute;top:2px;right:10px;height:40px;width:70px;overflow:hidden;border-top-right-radius:8px}.vac-message-actions-wrapper .vac-blur-container{position:absolute;height:100%;width:100%;left:8px;bottom:10px;background:var(--chat-message-bg-color);filter:blur(3px);border-bottom-left-radius:8px}.vac-message-actions-wrapper .vac-options-me{background:var(--chat-message-bg-color-me)}.vac-message-actions-wrapper .vac-message-options{background:var(--chat-icon-bg-dropdown-message);border-radius:50%;position:absolute;top:7px;right:7px}.vac-message-actions-wrapper .vac-message-options svg{height:17px;width:17px;padding:5px;margin:-5px}.vac-message-actions-wrapper .vac-message-emojis{position:absolute;top:6px;right:30px}.vac-message-actions-wrapper .vac-menu-options{right:15px}.vac-message-actions-wrapper .vac-menu-left{right:-118px}@media only screen and (max-width: 768px){.vac-message-actions-wrapper .vac-options-container{right:3px}.vac-message-actions-wrapper .vac-menu-left{right:-50px}}.vac-message-files-container .vac-file-wrapper{position:relative;width:fit-content}.vac-message-files-container .vac-file-wrapper .vac-file-container{height:60px;width:60px;margin:3px 0 5px;cursor:pointer;transition:all .6s}.vac-message-files-container .vac-file-wrapper .vac-file-container:hover{opacity:.85}.vac-message-files-container .vac-file-wrapper .vac-file-container svg{height:30px;width:30px}.vac-message-files-container .vac-file-wrapper .vac-file-container.vac-file-container-progress{background-color:#0000004d}.vac-message-file-container{position:relative;z-index:0}.vac-message-file-container .vac-message-image-container{cursor:pointer}.vac-message-file-container .vac-image-buttons{position:absolute;width:100%;height:100%;border-radius:4px;background:linear-gradient(to bottom,rgba(0,0,0,0) 55%,rgba(0,0,0,.02) 60%,rgba(0,0,0,.05) 65%,rgba(0,0,0,.1) 70%,rgba(0,0,0,.2) 75%,rgba(0,0,0,.3) 80%,rgba(0,0,0,.5) 85%,rgba(0,0,0,.6) 90%,rgba(0,0,0,.7) 95%,rgba(0,0,0,.8) 100%)}.vac-message-file-container .vac-image-buttons svg{height:26px;width:26px}.vac-message-file-container .vac-image-buttons .vac-button-view,.vac-message-file-container .vac-image-buttons .vac-button-download{position:absolute;bottom:6px;left:7px}.vac-message-file-container .vac-image-buttons :first-child{left:40px}.vac-message-file-container .vac-image-buttons .vac-button-view{max-width:18px;bottom:8px}.vac-message-file-container .vac-video-container{width:350px;max-width:100%;margin:4px auto 5px;cursor:pointer}.vac-message-file-container .vac-video-container video{width:100%;height:100%;border-radius:4px}.vac-button-reaction{display:inline-flex;align-items:center;border:var(--chat-message-border-style-reaction);outline:none;background:var(--chat-message-bg-color-reaction);border-radius:4px;margin:4px 2px 0;transition:.3s;padding:0 5px;font-size:18px;line-height:23px}.vac-button-reaction span{font-size:11px;font-weight:500;min-width:7px;color:var(--chat-message-color-reaction-counter)}.vac-button-reaction:hover{border:var(--chat-message-border-style-reaction-hover);background:var(--chat-message-bg-color-reaction-hover);cursor:pointer}.vac-button-reaction.vac-reaction-me{border:var(--chat-message-border-style-reaction-me);background:var(--chat-message-bg-color-reaction-me)}.vac-button-reaction.vac-reaction-me span{color:var(--chat-message-color-reaction-counter-me)}.vac-button-reaction.vac-reaction-me:hover{border:var(--chat-message-border-style-reaction-hover-me);background:var(--chat-message-bg-color-reaction-hover-me)}.vac-reply-message{background:var(--chat-message-bg-color-reply);border-radius:4px;margin:-1px -5px 8px;padding:8px 10px}.vac-reply-message .vac-reply-username{color:var(--chat-message-color-reply-username);font-size:12px;line-height:15px;margin-bottom:2px}.vac-reply-message .vac-image-reply-container{width:70px}.vac-reply-message .vac-image-reply-container .vac-message-image-reply{height:70px;width:70px;margin:4px auto 3px}.vac-reply-message .vac-video-reply-container{width:200px;max-width:100%}.vac-reply-message .vac-video-reply-container video{width:100%;height:100%;border-radius:4px}.vac-reply-message .vac-reply-content{font-size:12px;color:var(--chat-message-color-reply-content)}.vac-reply-message .vac-file-container{height:60px;width:60px}.vac-emoji-wrapper{position:relative;display:flex}.vac-emoji-wrapper .vac-emoji-reaction svg{height:19px;width:19px}.vac-emoji-wrapper .vac-emoji-picker{position:absolute;z-index:9999;bottom:32px;right:10px;width:300px;padding-top:4px;overflow:scroll;box-sizing:border-box;border-radius:.5rem;background:var(--chat-emoji-bg-color);box-shadow:0 1px 2px -2px #0000001a,0 1px 2px -1px #0000001a,0 1px 2px 1px #0000001a;scrollbar-width:none}.vac-emoji-wrapper .vac-emoji-picker::-webkit-scrollbar{display:none}.vac-emoji-wrapper .vac-emoji-picker.vac-picker-reaction{position:fixed;top:initial;right:initial}.vac-emoji-wrapper .vac-emoji-picker emoji-picker{height:100%;width:100%;--emoji-size: 1.2rem;--background: var(--chat-emoji-bg-color);--emoji-padding: .4rem;--border-color: var(--chat-sidemenu-border-color-search);--button-hover-background: var(--chat-sidemenu-bg-color-hover);--button-active-background: var(--chat-sidemenu-bg-color-hover)}.vac-format-message-wrapper .vac-format-container{display:inline}.vac-format-message-wrapper .vac-icon-deleted{height:14px;width:14px;vertical-align:middle;margin:-2px 2px 0 0;fill:var(--chat-message-color-deleted)}.vac-format-message-wrapper .vac-icon-deleted.vac-icon-deleted-room{margin:-3px 1px 0 0;fill:var(--chat-room-color-message)}.vac-format-message-wrapper .vac-image-link-container{background-color:var(--chat-message-bg-color-media);padding:8px;margin:2px auto;border-radius:4px}.vac-format-message-wrapper .vac-image-link{position:relative;background-color:var(--chat-message-bg-color-image)!important;background-size:contain;background-position:center center!important;background-repeat:no-repeat!important;height:150px;width:150px;max-width:100%;border-radius:4px;margin:0 auto}.vac-format-message-wrapper .vac-image-link-message{max-width:166px;font-size:12px}.vac-loader-wrapper.vac-container-center{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:9}.vac-loader-wrapper.vac-container-top{padding:21px}.vac-loader-wrapper.vac-container-top #vac-circle{height:20px;width:20px}.vac-loader-wrapper #vac-circle{margin:auto;height:28px;width:28px;border:3px rgba(0,0,0,.25) solid;border-top:3px var(--chat-color-spinner) solid;border-right:3px var(--chat-color-spinner) solid;border-bottom:3px var(--chat-color-spinner) solid;border-radius:50%;-webkit-animation:vac-spin 1s infinite linear;animation:vac-spin 1s infinite linear}@media only screen and (max-width: 768px){.vac-loader-wrapper #vac-circle{height:24px;width:24px}.vac-loader-wrapper.vac-container-top{padding:18px}.vac-loader-wrapper.vac-container-top #vac-circle{height:16px;width:16px}}@-webkit-keyframes vac-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes vac-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}#vac-icon-search{fill:var(--chat-icon-color-search)}#vac-icon-add{fill:var(--chat-icon-color-add)}#vac-icon-toggle{fill:var(--chat-icon-color-toggle)}#vac-icon-menu{fill:var(--chat-icon-color-menu)}#vac-icon-close{fill:var(--chat-icon-color-close)}#vac-icon-close-image{fill:var(--chat-icon-color-close-image)}#vac-icon-file{fill:var(--chat-icon-color-file)}#vac-icon-paperclip{fill:var(--chat-icon-color-paperclip)}#vac-icon-close-outline{fill:var(--chat-icon-color-close-outline)}#vac-icon-close-outline-preview{fill:var(--chat-icon-color-close-preview)}#vac-icon-send{fill:var(--chat-icon-color-send)}#vac-icon-send-disabled{fill:var(--chat-icon-color-send-disabled)}#vac-icon-emoji{fill:var(--chat-icon-color-emoji)}#vac-icon-emoji-reaction{fill:var(--chat-icon-color-emoji-reaction)}#vac-icon-document{fill:var(--chat-icon-color-document)}#vac-icon-pencil{fill:var(--chat-icon-color-pencil)}#vac-icon-checkmark,#vac-icon-double-checkmark{fill:var(--chat-icon-color-checkmark)}#vac-icon-checkmark-seen,#vac-icon-double-checkmark-seen{fill:var(--chat-icon-color-checkmark-seen)}#vac-icon-eye{fill:var(--chat-icon-color-eye)}#vac-icon-dropdown-message{fill:var(--chat-icon-color-dropdown-message)}#vac-icon-dropdown-room{fill:var(--chat-icon-color-dropdown-room)}#vac-icon-dropdown-scroll{fill:var(--chat-icon-color-dropdown-scroll)}#vac-icon-audio-play{fill:var(--chat-icon-color-audio-play)}#vac-icon-audio-pause{fill:var(--chat-icon-color-audio-pause)}.vac-progress-wrapper{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:9}.vac-progress-wrapper circle{transition:stroke-dashoffset .35s;transform:rotate(-90deg);transform-origin:50% 50%}.vac-progress-wrapper .vac-progress-content{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:-1;margin-top:-2px;background-color:#000000b3;border-radius:50%}.vac-progress-wrapper .vac-progress-content .vac-progress-text{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-weight:700;color:#fff}.vac-progress-wrapper .vac-progress-content .vac-progress-text .vac-progress-pourcent{font-size:9px;font-weight:400}\\n';\nconst _sfc_main = {\n name: \"ChatContainer\",\n components: {\n RoomsList,\n Room,\n MediaPreview\n },\n props: {\n height: { type: String, default: \"600px\" },\n theme: { type: String, default: \"light\" },\n styles: { type: [Object, String], default: () => ({}) },\n responsiveBreakpoint: { type: Number, default: 900 },\n singleRoom: { type: [Boolean, String], default: false },\n roomsListOpened: { type: [Boolean, String], default: true },\n textMessages: { type: [Object, String], default: () => ({}) },\n currentUserId: { type: String, default: \"\" },\n rooms: { type: [Array, String], default: () => [] },\n roomsOrder: { type: String, default: \"desc\" },\n loadingRooms: { type: [Boolean, String], default: false },\n roomsLoaded: { type: [Boolean, String], default: false },\n roomId: { type: String, default: null },\n loadFirstRoom: { type: [Boolean, String], default: true },\n messages: { type: [Array, String], default: () => [] },\n messagesLoaded: { type: [Boolean, String], default: false },\n roomActions: { type: [Array, String], default: () => [] },\n menuActions: { type: [Array, String], default: () => [] },\n messageActions: {\n type: [Array, String],\n default: () => [\n { name: \"replyMessage\", title: \"Reply\" },\n { name: \"editMessage\", title: \"Edit Message\", onlyMe: true },\n { name: \"deleteMessage\", title: \"Delete Message\", onlyMe: true },\n { name: \"selectMessages\", title: \"Select\" }\n ]\n },\n messageSelectionActions: { type: [Array, String], default: () => [] },\n autoScroll: {\n type: [Object, String],\n default: () => {\n return {\n send: {\n new: true,\n newAfterScrollUp: true\n },\n receive: {\n new: true,\n newAfterScrollUp: false\n }\n };\n }\n },\n customSearchRoomEnabled: { type: [Boolean, String], default: false },\n showSearch: { type: [Boolean, String], default: true },\n showAddRoom: { type: [Boolean, String], default: true },\n showSendIcon: { type: [Boolean, String], default: true },\n showFiles: { type: [Boolean, String], default: true },\n showAudio: { type: [Boolean, String], default: true },\n audioBitRate: { type: Number, default: 128 },\n audioSampleRate: { type: Number, default: 44100 },\n showEmojis: { type: [Boolean, String], default: true },\n showReactionEmojis: { type: [Boolean, String], default: true },\n showNewMessagesDivider: { type: [Boolean, String], default: true },\n showFooter: { type: [Boolean, String], default: true },\n textFormatting: {\n type: [Object, String],\n default: () => ({\n disabled: false,\n italic: \"_\",\n bold: \"*\",\n strike: \"~\",\n underline: \"\\xB0\",\n multilineCode: \"```\",\n inlineCode: \"`\"\n })\n },\n linkOptions: {\n type: [Object, String],\n default: () => ({ disabled: false, target: \"_blank\", rel: null })\n },\n roomInfoEnabled: { type: [Boolean, String], default: false },\n textareaActionEnabled: { type: [Boolean, String], default: false },\n textareaAutoFocus: { type: [Boolean, String], default: true },\n userTagsEnabled: { type: [Boolean, String], default: true },\n emojisSuggestionEnabled: { type: [Boolean, String], default: true },\n roomMessage: { type: String, default: \"\" },\n scrollDistance: { type: Number, default: 60 },\n acceptedFiles: { type: String, default: \"*\" },\n templatesText: { type: [Array, String], default: () => [] },\n mediaPreviewEnabled: { type: [Boolean, String], default: true },\n usernameOptions: {\n type: [Object, String],\n default: () => ({ minUsers: 3, currentUser: false })\n },\n emojiDataSource: { type: String, default: void 0 }\n },\n emits: [\n \"toggle-rooms-list\",\n \"room-info\",\n \"fetch-messages\",\n \"send-message\",\n \"edit-message\",\n \"delete-message\",\n \"open-file\",\n \"open-user-tag\",\n \"open-failed-message\",\n \"menu-action-handler\",\n \"message-action-handler\",\n \"send-message-reaction\",\n \"typing-message\",\n \"textarea-action-handler\",\n \"fetch-more-rooms\",\n \"add-room\",\n \"search-room\",\n \"room-action-handler\",\n \"message-selection-action-handler\"\n ],\n data() {\n return {\n slots: [],\n room: {},\n loadingMoreRooms: false,\n showRoomsList: true,\n isMobile: false,\n showMediaPreview: false,\n previewFile: {}\n };\n },\n computed: {\n t() {\n return {\n ...locales,\n ...this.textMessagesCasted\n };\n },\n cssVars() {\n const defaultStyles = defaultThemeStyles[this.theme];\n const customStyles = {};\n Object.keys(defaultStyles).map((key) => {\n customStyles[key] = {\n ...defaultStyles[key],\n ...this.stylesCasted[key] || {}\n };\n });\n return cssThemeVars(customStyles);\n },\n orderedRooms() {\n return this.roomsCasted.slice().sort((a, b) => {\n const aVal = a.index || 0;\n const bVal = b.index || 0;\n if (this.roomsOrder === \"asc\") {\n return aVal < bVal ? -1 : bVal < aVal ? 1 : 0;\n }\n return aVal > bVal ? -1 : bVal > aVal ? 1 : 0;\n });\n },\n singleRoomCasted() {\n return this.castBoolean(this.singleRoom);\n },\n roomsListOpenedCasted() {\n return this.castBoolean(this.roomsListOpened);\n },\n loadingRoomsCasted() {\n return this.castBoolean(this.loadingRooms);\n },\n roomsLoadedCasted() {\n return this.castBoolean(this.roomsLoaded);\n },\n loadFirstRoomCasted() {\n return this.castBoolean(this.loadFirstRoom);\n },\n messagesLoadedCasted() {\n return this.castBoolean(this.messagesLoaded);\n },\n showSearchCasted() {\n return this.castBoolean(this.showSearch);\n },\n showAddRoomCasted() {\n return this.castBoolean(this.showAddRoom);\n },\n showSendIconCasted() {\n return this.castBoolean(this.showSendIcon);\n },\n showFilesCasted() {\n return this.castBoolean(this.showFiles);\n },\n showAudioCasted() {\n return this.castBoolean(this.showAudio);\n },\n showEmojisCasted() {\n return this.castBoolean(this.showEmojis);\n },\n showReactionEmojisCasted() {\n return this.castBoolean(this.showReactionEmojis);\n },\n showNewMessagesDividerCasted() {\n return this.castBoolean(this.showNewMessagesDivider);\n },\n showFooterCasted() {\n return this.castBoolean(this.showFooter);\n },\n roomInfoEnabledCasted() {\n return this.castBoolean(this.roomInfoEnabled);\n },\n textareaActionEnabledCasted() {\n return this.castBoolean(this.textareaActionEnabled);\n },\n textareaAutoFocusCasted() {\n return this.castBoolean(this.textareaAutoFocus);\n },\n userTagsEnabledCasted() {\n return this.castBoolean(this.userTagsEnabled);\n },\n emojisSuggestionEnabledCasted() {\n return this.castBoolean(this.emojisSuggestionEnabled);\n },\n mediaPreviewEnabledCasted() {\n return this.castBoolean(this.mediaPreviewEnabled);\n },\n roomsCasted() {\n return this.castArray(this.rooms);\n },\n messagesCasted() {\n return this.castArray(this.messages);\n },\n roomActionsCasted() {\n return this.castArray(this.roomActions);\n },\n menuActionsCasted() {\n return this.castArray(this.menuActions);\n },\n messageActionsCasted() {\n return this.castArray(this.messageActions);\n },\n messageSelectionActionsCasted() {\n return this.castArray(this.messageSelectionActions);\n },\n templatesTextCasted() {\n return this.castArray(this.templatesText);\n },\n stylesCasted() {\n return this.castObject(this.styles);\n },\n textMessagesCasted() {\n return this.castObject(this.textMessages);\n },\n autoScrollCasted() {\n return this.castObject(this.autoScroll);\n },\n textFormattingCasted() {\n return this.castObject(this.textFormatting);\n },\n linkOptionsCasted() {\n return this.castObject(this.linkOptions);\n },\n usernameOptionsCasted() {\n return this.castObject(this.usernameOptions);\n }\n },\n watch: {\n roomsCasted: {\n immediate: true,\n deep: true,\n handler(newVal, oldVal) {\n if (!newVal[0] || !newVal.find((room) => room.roomId === this.room.roomId)) {\n this.showRoomsList = true;\n }\n if (!this.loadingMoreRooms && this.loadFirstRoomCasted && newVal[0] && (!oldVal || newVal.length !== oldVal.length)) {\n if (this.roomId) {\n const room = newVal.find((r) => r.roomId === this.roomId) || {};\n this.fetchRoom({ room });\n } else if (!this.isMobile || this.singleRoomCasted) {\n this.fetchRoom({ room: this.orderedRooms[0] });\n } else {\n this.showRoomsList = true;\n }\n }\n }\n },\n loadingRoomsCasted(val) {\n if (val)\n this.room = {};\n },\n roomId: {\n immediate: true,\n handler(newVal, oldVal) {\n if (newVal && !this.loadingRoomsCasted && this.roomsCasted.length) {\n const room = this.roomsCasted.find((r) => r.roomId === newVal);\n this.fetchRoom({ room });\n } else if (oldVal && !newVal) {\n this.room = {};\n }\n }\n },\n room(val) {\n if (!val || Object.entries(val).length === 0)\n return;\n roomsValidation(val);\n val.users.forEach((user) => {\n partcipantsValidation(user);\n });\n },\n roomsListOpenedCasted: {\n immediate: true,\n handler(val) {\n this.showRoomsList = val;\n }\n }\n },\n created() {\n this.updateResponsive();\n window.addEventListener(\"resize\", (ev) => {\n if (ev.isTrusted)\n this.updateResponsive();\n });\n },\n updated() {\n const slots = document.querySelectorAll(\"[slot]\");\n if (this.slots.length !== slots.length) {\n this.slots = slots;\n }\n },\n methods: {\n castBoolean(val) {\n return val === \"true\" || val === true;\n },\n castArray(val) {\n return !val ? [] : Array.isArray(val) ? val : JSON.parse(val);\n },\n castObject(val) {\n return !val ? {} : typeof val === \"object\" ? val : JSON.parse(val);\n },\n updateResponsive() {\n this.isMobile = window.innerWidth < Number(this.responsiveBreakpoint);\n },\n toggleRoomsList() {\n this.showRoomsList = !this.showRoomsList;\n if (this.isMobile)\n this.room = {};\n this.$emit(\"toggle-rooms-list\", { opened: this.showRoomsList });\n },\n fetchRoom({ room }) {\n this.room = room;\n this.fetchMessages({ reset: true });\n if (this.isMobile)\n this.showRoomsList = false;\n },\n fetchMoreRooms() {\n this.$emit(\"fetch-more-rooms\");\n },\n roomInfo() {\n this.$emit(\"room-info\", this.room);\n },\n addRoom() {\n this.$emit(\"add-room\");\n },\n searchRoom(val) {\n this.$emit(\"search-room\", { value: val, roomId: this.room.roomId });\n },\n fetchMessages(options2) {\n this.$emit(\"fetch-messages\", { room: this.room, options: options2 });\n },\n sendMessage(message) {\n this.$emit(\"send-message\", { ...message, roomId: this.room.roomId });\n },\n editMessage(message) {\n this.$emit(\"edit-message\", { ...message, roomId: this.room.roomId });\n },\n deleteMessage(message) {\n this.$emit(\"delete-message\", { message, roomId: this.room.roomId });\n },\n openFile({ message, file }) {\n if (this.mediaPreviewEnabledCasted && file.action === \"preview\") {\n this.previewFile = file.file;\n this.showMediaPreview = true;\n } else {\n this.$emit(\"open-file\", { message, file });\n }\n },\n openUserTag({ user }) {\n this.$emit(\"open-user-tag\", { user });\n },\n openFailedMessage({ message }) {\n this.$emit(\"open-failed-message\", {\n message,\n roomId: this.room.roomId\n });\n },\n menuActionHandler(ev) {\n this.$emit(\"menu-action-handler\", {\n action: ev,\n roomId: this.room.roomId\n });\n },\n roomActionHandler({ action, roomId }) {\n this.$emit(\"room-action-handler\", {\n action,\n roomId\n });\n },\n messageActionHandler(ev) {\n this.$emit(\"message-action-handler\", {\n ...ev,\n roomId: this.room.roomId\n });\n },\n messageSelectionActionHandler(ev) {\n this.$emit(\"message-selection-action-handler\", {\n ...ev,\n roomId: this.room.roomId\n });\n },\n sendMessageReaction(messageReaction) {\n this.$emit(\"send-message-reaction\", {\n ...messageReaction,\n roomId: this.room.roomId\n });\n },\n typingMessage(message) {\n this.$emit(\"typing-message\", {\n message,\n roomId: this.room.roomId\n });\n },\n textareaActionHandler(message) {\n this.$emit(\"textarea-action-handler\", {\n message,\n roomId: this.room.roomId\n });\n }\n }\n};\nconst _hoisted_1 = { class: \"vac-chat-container\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_rooms_list = resolveComponent(\"rooms-list\");\n const _component_room = resolveComponent(\"room\");\n const _component_media_preview = resolveComponent(\"media-preview\");\n return openBlock(), createElementBlock(\"div\", {\n class: \"vac-card-window\",\n style: normalizeStyle([{ height: $props.height }, $options.cssVars])\n }, [\n createBaseVNode(\"div\", _hoisted_1, [\n !$options.singleRoomCasted ? (openBlock(), createBlock(_component_rooms_list, {\n key: 0,\n \"current-user-id\": $props.currentUserId,\n rooms: $options.orderedRooms,\n \"loading-rooms\": $options.loadingRoomsCasted,\n \"rooms-loaded\": $options.roomsLoadedCasted,\n room: $data.room,\n \"room-actions\": $options.roomActionsCasted,\n \"custom-search-room-enabled\": $props.customSearchRoomEnabled,\n \"text-messages\": $options.t,\n \"show-search\": $options.showSearchCasted,\n \"show-add-room\": $options.showAddRoomCasted,\n \"show-rooms-list\": $data.showRoomsList && $options.roomsListOpenedCasted,\n \"text-formatting\": $options.textFormattingCasted,\n \"link-options\": $options.linkOptionsCasted,\n \"is-mobile\": $data.isMobile,\n \"scroll-distance\": $props.scrollDistance,\n onFetchRoom: $options.fetchRoom,\n onFetchMoreRooms: $options.fetchMoreRooms,\n onLoadingMoreRooms: _cache[0] || (_cache[0] = ($event) => $data.loadingMoreRooms = $event),\n onAddRoom: $options.addRoom,\n onSearchRoom: $options.searchRoom,\n onRoomActionHandler: $options.roomActionHandler\n }, createSlots({ _: 2 }, [\n renderList($data.slots, (el) => {\n return {\n name: el.slot,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, el.slot, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"current-user-id\", \"rooms\", \"loading-rooms\", \"rooms-loaded\", \"room\", \"room-actions\", \"custom-search-room-enabled\", \"text-messages\", \"show-search\", \"show-add-room\", \"show-rooms-list\", \"text-formatting\", \"link-options\", \"is-mobile\", \"scroll-distance\", \"onFetchRoom\", \"onFetchMoreRooms\", \"onAddRoom\", \"onSearchRoom\", \"onRoomActionHandler\"])) : createCommentVNode(\"\", true),\n createVNode(_component_room, {\n \"current-user-id\": $props.currentUserId,\n rooms: $options.roomsCasted,\n \"room-id\": $data.room.roomId || \"\",\n \"load-first-room\": $options.loadFirstRoomCasted,\n messages: $options.messagesCasted,\n \"room-message\": $props.roomMessage,\n \"messages-loaded\": $options.messagesLoadedCasted,\n \"menu-actions\": $options.menuActionsCasted,\n \"message-actions\": $options.messageActionsCasted,\n \"message-selection-actions\": $options.messageSelectionActionsCasted,\n \"auto-scroll\": $options.autoScrollCasted,\n \"show-send-icon\": $options.showSendIconCasted,\n \"show-files\": $options.showFilesCasted,\n \"show-audio\": $options.showAudioCasted,\n \"audio-bit-rate\": $props.audioBitRate,\n \"audio-sample-rate\": $props.audioSampleRate,\n \"show-emojis\": $options.showEmojisCasted,\n \"show-reaction-emojis\": $options.showReactionEmojisCasted,\n \"show-new-messages-divider\": $options.showNewMessagesDividerCasted,\n \"show-footer\": $options.showFooterCasted,\n \"text-messages\": $options.t,\n \"single-room\": $options.singleRoomCasted,\n \"show-rooms-list\": $data.showRoomsList && $options.roomsListOpenedCasted,\n \"text-formatting\": $options.textFormattingCasted,\n \"link-options\": $options.linkOptionsCasted,\n \"is-mobile\": $data.isMobile,\n \"loading-rooms\": $options.loadingRoomsCasted,\n \"room-info-enabled\": $options.roomInfoEnabledCasted,\n \"textarea-action-enabled\": $options.textareaActionEnabledCasted,\n \"textarea-auto-focus\": $options.textareaAutoFocusCasted,\n \"user-tags-enabled\": $options.userTagsEnabledCasted,\n \"emojis-suggestion-enabled\": $options.emojisSuggestionEnabledCasted,\n \"scroll-distance\": $props.scrollDistance,\n \"accepted-files\": $props.acceptedFiles,\n \"templates-text\": $options.templatesTextCasted,\n \"username-options\": $options.usernameOptionsCasted,\n \"emoji-data-source\": $props.emojiDataSource,\n onToggleRoomsList: $options.toggleRoomsList,\n onRoomInfo: $options.roomInfo,\n onFetchMessages: $options.fetchMessages,\n onSendMessage: $options.sendMessage,\n onEditMessage: $options.editMessage,\n onDeleteMessage: $options.deleteMessage,\n onOpenFile: $options.openFile,\n onOpenUserTag: $options.openUserTag,\n onOpenFailedMessage: $options.openFailedMessage,\n onMenuActionHandler: $options.menuActionHandler,\n onMessageActionHandler: $options.messageActionHandler,\n onMessageSelectionActionHandler: $options.messageSelectionActionHandler,\n onSendMessageReaction: $options.sendMessageReaction,\n onTypingMessage: $options.typingMessage,\n onTextareaActionHandler: $options.textareaActionHandler\n }, createSlots({ _: 2 }, [\n renderList($data.slots, (el) => {\n return {\n name: el.slot,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, el.slot, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"current-user-id\", \"rooms\", \"room-id\", \"load-first-room\", \"messages\", \"room-message\", \"messages-loaded\", \"menu-actions\", \"message-actions\", \"message-selection-actions\", \"auto-scroll\", \"show-send-icon\", \"show-files\", \"show-audio\", \"audio-bit-rate\", \"audio-sample-rate\", \"show-emojis\", \"show-reaction-emojis\", \"show-new-messages-divider\", \"show-footer\", \"text-messages\", \"single-room\", \"show-rooms-list\", \"text-formatting\", \"link-options\", \"is-mobile\", \"loading-rooms\", \"room-info-enabled\", \"textarea-action-enabled\", \"textarea-auto-focus\", \"user-tags-enabled\", \"emojis-suggestion-enabled\", \"scroll-distance\", \"accepted-files\", \"templates-text\", \"username-options\", \"emoji-data-source\", \"onToggleRoomsList\", \"onRoomInfo\", \"onFetchMessages\", \"onSendMessage\", \"onEditMessage\", \"onDeleteMessage\", \"onOpenFile\", \"onOpenUserTag\", \"onOpenFailedMessage\", \"onMenuActionHandler\", \"onMessageActionHandler\", \"onMessageSelectionActionHandler\", \"onSendMessageReaction\", \"onTypingMessage\", \"onTextareaActionHandler\"])\n ]),\n createVNode(Transition, {\n name: \"vac-fade-preview\",\n appear: \"\"\n }, {\n default: withCtx(() => [\n $data.showMediaPreview ? (openBlock(), createBlock(_component_media_preview, {\n key: 0,\n file: $data.previewFile,\n onCloseMediaPreview: _cache[1] || (_cache[1] = ($event) => $data.showMediaPreview = false)\n }, createSlots({ _: 2 }, [\n renderList($data.slots, (el) => {\n return {\n name: el.slot,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, el.slot, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1032, [\"file\"])) : createCommentVNode(\"\", true)\n ]),\n _: 3\n })\n ], 4);\n}\nvar ChatWindow = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"styles\", [_style_0]]]);\nconst VueAdvancedChat = defineCustomElement(ChatWindow);\nconst PACKAGE_NAME = \"vue-advanced-chat\";\nfunction register() {\n if (!customElements.get(PACKAGE_NAME)) {\n customElements.define(PACKAGE_NAME, VueAdvancedChat);\n }\n}\nexport { VueAdvancedChat, register };\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chats.vue?vue&type=style&index=0&id=4797df9d&prod&lang=scss&\""],"sourceRoot":""}