{"version":3,"sources":["webpack:///./app/javascript/custom-elements/helpers/registerCustomElement.js","webpack:///./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack:///./app/javascript/packs/front_pages.js","webpack:///./node_modules/stimulus-scroll-reveal/dist/stimulus-scroll-reveal.es.js","webpack:///./app/javascript/helpers/metal/isEmpty.ts","webpack:///./app/javascript/controllers/focus_controller.js","webpack:///./app/javascript/controllers/pop_card_controller.js","webpack:///./app/javascript/controllers/toast_controller.js","webpack:///./app/javascript/controllers/tray_card_controller.js","webpack:///./app/javascript/controllers/tray_nav_controller.js","webpack:///./app/javascript/lib/logger.js","webpack:///./app/javascript/channels/room_visitor_channel.js","webpack:///./app/javascript/helpers/credentials-disciplines.js","webpack:///./node_modules/vue/dist/vue.runtime.esm.js","webpack:///./app/javascript/controllers/carousel_controller.js","webpack:///./app/javascript/controllers/landing_page_nav_controller.js","webpack:///./app/javascript/controllers/pricing_page_controller.js","webpack:///./app/javascript/controllers/side_nav_controller.js","webpack:///./app/javascript/controllers/toggle_section_controller.js","webpack:///./app/javascript/controllers/section_anchor_controller.js","webpack:///./app/javascript/channels/visual_schedule_channel.js","webpack:///./app/javascript/lib/datepickers.js","webpack:///./app/javascript/lib/async-localstorage.js","webpack:///./app/javascript/visual-schedules/lib/channel_creator.js","webpack:///./app/javascript/helpers/dom-helper.js","webpack:///./app/javascript/helpers/nested-fields/diagnosisCodes.js","webpack:///./app/javascript/channels/reactions_channel.js","webpack:///./app/javascript/channels/room_chat_channel.js","webpack:///./app/javascript/helpers/goals-editor.js","webpack:///./app/javascript/helpers/nested-fields/addFields.js","webpack:///./node_modules/bootstrap/dist/js/bootstrap.js","webpack:///./node_modules/trix/dist/trix.esm.min.js","webpack:///./app/javascript/lib/autocomplete.js","webpack:///./app/javascript/custom-elements/command-palette-element.js","webpack:///./app/javascript/custom-elements/command-palette/command-palette-group-element.js","webpack:///./app/javascript/custom-elements/command-palette/command-palette-header-element.js","webpack:///./app/javascript/custom-elements/command-palette/command-palette-item-element.js","webpack:///./app/javascript/custom-elements/details-dialog-element.js","webpack:///./app/javascript/helpers/timing.js","webpack:///./app/javascript/custom-elements/command-palette/command-palette-stack-element.js","webpack:///./app/javascript/helpers/observers.js","webpack:///./app/javascript/helpers/strongPassword.js","webpack:///./app/javascript/rooms/event-bus.js","webpack:///./app/javascript/channels/room_channel.js","webpack:///./app/javascript/channels/room_session_channel.js","webpack:///./app/javascript/helpers/selectize_helpers.js","webpack:///./app/javascript/controllers/front_pages_index.js","webpack:///./app/javascript/channels/notification_channel.js","webpack:///./node_modules/selectize/dist/js/selectize.js","webpack:///./node_modules/sifter/sifter.js","webpack:///./node_modules/microplugin/src/microplugin.js","webpack:///./app/javascript/lib/mobile-search.js","webpack:///./app/javascript/lib/turbolinks-reloader.js","webpack:///./app/javascript/custom-elements sync details-dialog-element\\.js$","webpack:///./app/javascript/channels/consumer.js","webpack:///./app/javascript/visual-schedules/event-bus.js","webpack:///./app/javascript/helpers/url.ts","webpack:///./app/javascript/channels/calendar_event_channel.js","webpack:///./app/javascript/channels/calendar_events_channel.js","webpack:///./app/javascript/channels/calendar_resources_channel.js","webpack:///./app/javascript/lib/helpers.js","webpack:///./app/javascript/rooms/components/seamless-swap/constants.js","webpack:///./app/javascript/controllers/application_controller.js","webpack:///./app/javascript/lib/tooltip.js","webpack:///./app/javascript/fonts sync \\.(eot|ttf|woff|woff2|otf)$/","webpack:///./app/javascript/fonts/FiraSans-Bold.ttf","webpack:///./app/javascript/fonts/FiraSans-Medium.ttf","webpack:///./app/javascript/fonts/FiraSans-Regular.ttf","webpack:///./app/javascript/fonts/FiraSans-SemiBold.ttf","webpack:///./app/javascript/fonts/KumbhSans-Bold.ttf","webpack:///./app/javascript/fonts/KumbhSans-Light.ttf","webpack:///./app/javascript/fonts/KumbhSans-Regular.ttf","webpack:///./app/javascript/fonts/NotoEmoji.ttf","webpack:///./app/javascript/fonts/NotoSerif-Regular.ttf","webpack:///./app/javascript/fonts/Quicksand-Bold.ttf","webpack:///./app/javascript/fonts/Quicksand-Light.ttf","webpack:///./app/javascript/fonts/Quicksand-Medium.ttf","webpack:///./app/javascript/fonts/Quicksand-Regular.ttf","webpack:///./app/javascript/fonts/Quicksand-SemiBold.ttf","webpack:///./app/javascript/fonts/Roboto-Black.ttf","webpack:///./app/javascript/fonts/Roboto-BlackItalic.ttf","webpack:///./app/javascript/fonts/Roboto-Bold.ttf","webpack:///./app/javascript/fonts/Roboto-BoldItalic.ttf","webpack:///./app/javascript/fonts/Roboto-Italic.ttf","webpack:///./app/javascript/fonts/Roboto-Light.ttf","webpack:///./app/javascript/helpers/metal/isHexCode.ts","webpack:///./app/javascript/fonts/Roboto-LightItalic.ttf","webpack:///./app/javascript/fonts/Roboto-Medium.ttf","webpack:///./app/javascript/fonts/Roboto-MediumItalic.ttf","webpack:///./app/javascript/fonts/Roboto-Regular.ttf","webpack:///./app/javascript/fonts/Roboto-Thin.ttf","webpack:///./app/javascript/fonts/Roboto-ThinItalic.ttf","webpack:///./app/javascript/fonts/SeptemberMornings.ttf","webpack:///./app/javascript/channels/index.js","webpack:///./app/javascript/channels sync _channel\\.js$","webpack:///./app/javascript/helpers/nested-fields/removeFields.js","webpack:///./app/javascript/custom-elements sync command-palette-.*element\\.js$","webpack:///./app/javascript/helpers/trix-editor-configs/goal-editor.js","webpack:///./app/javascript/helpers/trix-editors.js","webpack:///./node_modules/@rails/actiontext/app/javascript/actiontext/attachment_upload.js","webpack:///./node_modules/@rails/actiontext/app/javascript/actiontext/index.js","webpack:///./app/javascript/helpers/random-id.js"],"names":["registerCustomElement","r","keys","forEach","key","identifier","logicalName","match","array","split","length","identifierForContextKey","module","definition","name","window","customElements","get","define","defineCustomElement","factory","_typeof","Symbol","iterator","obj","constructor","prototype","exports","sparkMd5","fn","createCommonjsModule","undefined","hex_chr","md5cycle","x","k","a","b","c","d","md5blk","s","i","md5blks","charCodeAt","md5blk_array","md51","tail","tmp","lo","hi","n","state","substring","toString","parseInt","md51_array","subarray","Uint8Array","rhex","j","hex","join","toUtf8","str","test","unescape","encodeURIComponent","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arr","arrayBuffer2Utf8Str","String","fromCharCode","apply","concatenateArrayBuffers","first","second","result","byteLength","set","buffer","hexToBinaryString","bytes","push","substr","SparkMD5","this","reset","slice","clamp","val","Math","max","min","from","to","num","target","targetArray","sourceArray","begin","end","append","appendBinary","contents","_buff","_length","_hash","raw","ret","_finish","getState","hash","setState","destroy","hashBinary","content","call","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","Object","defineProperty","protoProps","staticProps","fileSlice","File","mozSlice","webkitSlice","FileChecksum","file","chunkSize","chunkCount","ceil","size","chunkIndex","value","callback","create","_this","md5Buffer","fileReader","FileReader","addEventListener","event","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","btoa","start","readAsArrayBuffer","findElement","root","selector","document","querySelector","dispatchEvent","element","type","eventInit","arguments","disabled","bubbles","cancelable","detail","createEvent","initEvent","toArray$1","Array","isArray","BlobRecord","checksum","url","attributes","filename","content_type","byte_size","xhr","XMLHttpRequest","open","responseType","setRequestHeader","csrfToken","head","getAttribute","getMetaValue","requestDidLoad","requestDidError","send","JSON","stringify","blob","status","response","direct_upload","directUploadData","toJSON","_xhr","parse","BlobUpload","_blob$directUploadDat","headers","id","DirectUpload","delegate","error","notify","upload","object","methodName","_len","messages","_key","DirectUploadController","input","directUpload","dispatch","hiddenInput","createElement","insertAdjacentElement","parentNode","removeChild","dispatchError","signed_id","progress","loaded","total","defaultPrevented","alert","_this2","uploadRequestDidProgress","DirectUploadsController","form","inputs","querySelectorAll","filter","files","controllers","createDirectUploadControllers","startNextController","controller","shift","processingAttribute","submitButtonsByForm","WeakMap","started","didClick","didSubmitForm","didSubmitRemoteElement","tagName","handleFormSubmissionEvent","hasAttribute","preventDefault","setAttribute","disable","removeAttribute","enable","button","focus","click","style","display","appendChild","delete","submitForm","setTimeout","ActiveStorage","require","Turbolinks","selectize","axios","defaults","common","$","each","history","scrollRestoration","SCROLL_POSITION","PAGE_INVALIDATED","BrowserAdapter","reload","sessionStorage","setItem","location","scrollX","scrollY","href","scrollPosition","getItem","shouldScroll","scrollTo","removeItem","sortField","on","e","Event","toggleElement","classList","remove","contains","required","add","plugins","searchField","delimiter","positionDropdownOriginal","positionDropdown","settings","dropdownDirection","$control","offset","dropdownParent","position","$dropdown","css","width","outerWidth","top","outerHeight","left","addClass","$wrapper","getElementById","pageJSLoading","then","taxonomy","passwordInput","passConfirmInput","termsAndPrivacyAgreement","sp","StrongPassword","container","debouncedQuery","debounce","validate","valid","confirmInput","matches","dataset","passwordValid","signUpButton","agreeToTermsAndPrivacy","buttonEnable","checked","expandableImage","lightBoxes","reg","sideNavCard","submit","attr","_classCallCheck","_defineProperties","_setPrototypeOf","o","p","setPrototypeOf","bind","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","self","ReferenceError","_assertThisInitialized","getPrototypeOf","src_default","_Controller","subClass","superClass","_inherits","_super","intersectionObserverCallback","class","classValue","defaultOptions","threshold","thresholdValue","rootMargin","rootMarginValue","observer","IntersectionObserver","intersectionObserverOptions","itemTargets","item","observe","unobserve","entries","_this3","entry","intersectionRatio","delay","transitionDelay","targets","values","Number","isEmpty","hasOwnProperty","nextFrame","hasFocusableTarget","focusableTarget","ApplicationController","hideEl","show","triggerTarget","popElTarget","overlay","showEl","CustomEvent","toggleElShow","closeOnEsc","tooltip","hide","toast","off","setToastId","hasTypeValue","toastId","typeValue","targetIdValue","targetId","body","overflow","zIndexBottomEls","el","zIndex","trayElTarget","returnMainMenu","hasDangerLinkTarget","dangerLinkTargets","link","subLevelTrayMenuTarget","topLevelTrayNavTarget","showSubLevel","subTrigger","menu","subMenuContentsTarget","innerHTML","childNodes","copy","cloneNode","topLevel","subMenuTitleTarget","title","getElementsByClassName","subTriggerTargets","hasReturnMainMenuTarget","returnMainMenuTarget","hasCloseBtnTarget","closeBtnTarget","hasSubLevelTrayMenuTarget","COMPACT_ATTR_NAME","isTurbolinksPreview","renderFromCache","toggle","toggleClass","sidebarCache","toggleAttribute","isExpanded","classes","logLevel","localStorage","log","info","msg","args","includes","console","warn","debug","likeEmoji","fromCodePoint","RoomVisitorChannel","options","init","Promise","resolve","isResolved","createSubscription","line","roomId","store","channel","consumer","subscriptions","room","connected","disconnected","received","data","publishedTo","commit","message","sentBy","sent_by","requestedHelp","ownerId","visitor","post","start_time","recurrenceId","constructURL","recurrence_id","t","eventId","patientId","eventStartTime","params","eventPatient","AsyncLocalStorage","speech","occupational","physical","feeding","STUDENT","CF_SLP","CCC_SLP","SLPA","OTA","COTA","OTR_L","PTA","CPTA","PT","disciplines","revealDisciplinesList","hideDisciplinesList","resetAllDisciplines","closest","currentlyChecked","showCheckbox","checkCheckbox","computeDisciplines","credentialIds","emptyObject","freeze","isUndef","v","isDef","isTrue","isPrimitive","isObject","_toString","isPlainObject","isRegExp","isValidArrayIndex","parseFloat","floor","isFinite","isPromise","catch","toNumber","isNaN","makeMap","expectsLowerCase","map","list","toLowerCase","isReservedAttribute","index","indexOf","splice","hasOwn","cached","cache","camelizeRE","camelize","replace","_","toUpperCase","capitalize","charAt","hyphenateRE","hyphenate","Function","ctx","boundFn","l","toArray","extend","_from","toObject","res","noop","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","Date","getTime","keysA","keysB","looseIndexOf","once","called","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","config","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","unicodeRegExp","isReserved","def","bailRE","RegExp","source","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","navigator","userAgent","isIE","isIE9","isEdge","isIOS","isFF","nativeWatch","watch","supportsPassive","opts","isServerRendering","global","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","Ctor","_Set","hasSymbol","ownKeys","Set","has","clear","uid","Dep","subs","addSub","sub","removeSub","depend","addDep","update","targetStack","pushTarget","popTarget","pop","VNode","tag","children","text","elm","context","componentOptions","asyncFactory","ns","fnContext","fnOptions","fnScopeId","componentInstance","parent","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","child","createEmptyVNode","node","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","method","original","len","inserted","ob","__ob__","observeArray","dep","arrayKeys","getOwnPropertyNames","shouldObserve","toggleObserving","Observer","vmCount","src","protoAugment","copyAugment","walk","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","shallow","property","getOwnPropertyDescriptor","getter","setter","childOb","dependArray","newVal","del","items","strats","mergeData","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","concat","hooks","dedupeHooks","mergeAssets","hook","key$1","methods","inject","computed","provide","defaultStrat","mergeOptions","normalizeProps","normalized","normalizeInject","dirs","directives","def$$1","normalizeDirectives","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","prop","absent","booleanIndex","getTypeIndex","stringIndex","default","$options","_props","getType","getPropDefaultValue","prevShouldObserve","functionTypeCheckRE","isSameType","expectedTypes","handleError","err","cur","$parent","errorCaptured","globalHandleError","invokeWithErrorHandling","handler","_handled","logError","timerFunc","isUsingMicroTask","callbacks","pending","flushCallbacks","copies","MutationObserver","setImmediate","counter","textNode","createTextNode","characterData","nextTick","cb","_resolve","seenObjects","traverse","_traverse","seen","isA","isFrozen","depId","normalizeEvent","passive","once$$1","capture","createFnInvoker","fns","invoker","arguments$1","updateListeners","oldOn","remove$$1","createOnceHandler","old","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","checkProp","altKey","preserve","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","lastIndex","last","_isVList","resolveInject","provideKey","_provided","provideDefault","resolveSlots","slots","attrs","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","render","next","done","renderSlot","fallbackRender","bindObject","nodes","scopedSlotFn","$scopedSlots","$slots","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","loop","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","tree","markStatic","staticRenderFns","_renderProxy","markOnce","markStaticNode","bindObjectListeners","existing","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","symbol","installRenderHelpers","_o","_n","_s","_l","_t","_q","_i","_m","_f","_k","_b","_v","_e","_u","_g","_d","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","_compiled","needNormalization","listeners","injections","scopedSlots","_scopeId","_c","cloneAndMarkFunctionalResult","renderContext","clone","mergeProps","componentVNodeHooks","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","inlineTemplate","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","parentVnode","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","_renderChildren","$vnode","_vnode","$attrs","$listeners","propKeys","_propKeys","oldListeners","_parentListeners","updateComponentListeners","$forceUpdate","updateChildComponent","insert","_isMounted","callHook","_inactive","activatedChildren","activateChildComponent","deactivateChildComponent","$destroy","hooksToMerge","createComponent","baseCtor","cid","errorComp","resolved","owner","currentRenderingInstance","owners","loading","loadingComp","sync","timerLoading","timerTimeout","$on","forceRender","renderCompleted","clearTimeout","ensureCtor","reject","reason","component","timeout","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","transformModel","extractPropsFromVNodeData","functional","vnodes","createFunctionalComponent","nativeOn","abstract","toMerge","_merged","mergeHook$1","installComponentHooks","f1","f2","normalizationType","alwaysNormalize","is","simpleNormalizeChildren","pre","applyNS","registerDeepBindings","_createElement","force","comp","base","__esModule","toStringTag","getFirstComponentChild","remove$1","$off","_target","onceHandler","setActiveInstance","prevActiveInstance","isInInactiveTree","direct","_directInactive","$children","handlers","_hasHookEvent","$emit","queue","waiting","flushing","currentFlushTimestamp","getNow","now","timeStamp","flushSchedulerQueue","watcher","sort","before","run","activatedQueue","updatedQueue","callActivatedHooks","_watcher","callUpdatedHooks","emit","uid$2","Watcher","expOrFn","isRenderWatcher","_watchers","deep","user","lazy","active","dirty","deps","newDeps","depIds","newDepIds","expression","path","segments","parsePath","cleanupDeps","queueWatcher","oldValue","evaluate","teardown","_isBeingDestroyed","sharedPropertyDefinition","sourceKey","initState","propsOptions","initProps","initMethods","_data","getData","initData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed","createWatcher","initWatch","shouldCache","createComputedGetter","createGetterInvoker","$watch","uid$3","super","superOptions","modifiedOptions","modified","latest","sealed","sealedOptions","resolveModifiedOptions","extendOptions","components","Vue","_init","initExtend","SuperId","cachedCtors","_Ctor","Sub","Comp","initProps$1","initComputed$1","mixin","use","getComponentName","pattern","pruneCache","keepAliveInstance","pruneCacheEntry","current","_uid","vnodeComponentOptions","_componentTag","initInternalComponent","_self","$root","$refs","initLifecycle","_events","initEvents","parentData","initRender","initInjections","initProvide","initMixin","dataDef","propsDef","$set","$delete","immediate","stateMixin","hookRE","$once","i$1","cbs","eventsMixin","_update","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","lifecycleMixin","$nextTick","_render","ref","renderMixin","patternTypes","KeepAlive","include","exclude","cacheVNode","vnodeToCache","keyToCache","created","destroyed","mounted","updated","builtInComponents","configDef","util","defineReactive","observable","plugin","installedPlugins","_installedPlugins","unshift","install","initUse","initMixin$1","initAssetRegisters","initGlobalAPI","ssrContext","version","acceptValue","isEnumeratedAttr","isValidContentEditableValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","isFalsyAttrValue","genClassForVnode","childNode","mergeClassData","staticClass","dynamicClass","stringifyClass","renderClass","stringified","stringifyArray","stringifyObject","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","nodeOps","multiple","createElementNS","namespace","createComment","insertBefore","newNode","referenceNode","nextSibling","setTextContent","textContent","setStyleScope","scopeId","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldDir","dir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","arg","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","isInPre","baseSetAttr","convertEnumeratedValue","setAttributeNS","__ieph","blocker","stopImmediatePropagation","removeEventListener","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","target$1","klass","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","currentTarget","ownerDocument","updateDOMListeners","change","normalizeEvents","svgContainer","events","updateDOMProps","oldProps","_value","strCur","shouldUpdateValue","firstChild","checkVal","composing","notInFocus","activeElement","isNotInFocusAndDirty","_vModifiers","number","trim","isDirtyWithModifiers","parseStyleText","cssText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","emptyStyle","cssVarRE","importantRE","setProp","setProperty","normalizedName","normalize","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","whitespaceRE","removeClass","tar","resolveTransition","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","requestAnimationFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","styles","getComputedStyle","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","nodeType","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","_pending","isValidDuration","leave","rm","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","patch","backend","modules","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","childElm","createRmCb","findIdxInOld","oldCh","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","initial","isRenderedModule","inVPre","hasChildNodes","childrenMatch","fullInvoke","isInitialPatch","isRealElement","oldElm","patchable","i$2","createPatchFunction","vmodel","trigger","directive","binding","_vOptions","setSelected","getValue","onCompositionStart","onCompositionEnd","prevOptions","curOptions","some","hasNoMatchingOption","actuallySetSelected","isMultiple","selected","option","selectedIndex","locateNode","transition$$1","originalDisplay","__vOriginalDisplay","unbind","platformDirectives","transitionProps","mode","getRealChild","compOptions","extractTransitionData","placeholder","h","rawChild","isNotTextNode","isVShowDirective","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave","moveClass","callPendingCbs","_moveCb","recordPosition","newPos","getBoundingClientRect","applyTranslation","oldPos","pos","dx","dy","moved","transform","WebkitTransform","transitionDuration","platformComponents","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","c$1","hasMove","_reflow","offsetHeight","propertyName","_hasMove","HTMLUnknownElement","HTMLElement","updateComponent","mountComponent","query","startCarousel","stopCarousel","noAutoTargets","showNextDiv","interval","setInterval","clearInterval","infoTargets","paths","stroke","updateVisibleDiv","toggleRunning","floatingMenu","navBtnClosed","navBtnOpen","closeMenu","stopPropagation","toggleAddOn","iconToggle","flexible","therapy_tools","teletherapy","controlledIconTargets","elem","controlledIcon","processButtons","processValues","controlledButtonsTargets","controlledButtons","controlledValuesTargets","controlledValues","icon","showCurrentSlide","hasRunFirst","indexValue","uncontrolledIndex","uncontrolledTargets","uncontrolledActive","controlledTargets","hidden","controlledIndex","targetSection","targetSectionId","highlightTargetSection","scrollIntoView","scrollProperty","unregisterHighlightRemovalEvent","highlightValue","targetHighlightClass","registerHighlightRemovalEvent","boundRemoveHighlight","removeHighlight","newObject","hasObjectValue","objectValue","behavior","block","inline","hasHighlightClass","highlightClass","highlight","VisualScheduleChannel","sessionId","visual_schedule","unsubscribe","visualSchedule","staticRevealer","EventBus","initializeDatepickers","datepickers","dropdown","sharedOptions","buttonClass","format","datepicker","maxDate","combinedOptions","Datepicker","createPromise","VisualScheduleChannelCreator","createChannel","dataChannel","safeRegion","height","positions","leftOffset","topOffset","y","isPositionBottom","bottom","isPositionRight","right","cancel","getElementOffset","doc","box","offsetAttributes","borderLeftWidth","borderTopWidth","paddingLeft","paddingTop","getElementStyle","docElem","documentElement","scrollLeftTop","docElement","scrollLeft","scrollTop","host","getScrollLeftTop","clientLeft","clientTop","defaultView","currentStyle","insertAfter","existingNode","visible","HTMLInputElement","offsetWidth","enabled","focusable","tabIndex","reflow","Delegate","Element","elements","ElementObserver","attributeFilter","metaValue","DiagnosisCodes","preservePlaceholder","placeholderSelectize","$input","$control_input","diagnosisCodeAlertMap","registerExistingSelectComponents","registerDeleteItem","injectDisciplineAddFieldEvent","toggleDisciplineEvent","toggleDiscipline","formSubmitCleanUp","submitButton","emptyFields","selectElements","selectComplete","select","deleteElement","autoComplete","disciplineId","diagComponents","diagElement","fieldset","parentElement","formInput","offsetParent","selectedComponent","selectedAlertId","alertIds","deleteClicked","classThis","hasClass","addNewDiagnosisSelectComponent","awc","controlLoop","handleRemove","checkCodeCombinations","hardDelete","diagnosisCodesValidation","put","hide_autism_validation","selectizeDiagnosisCode","parentScope","valueField","labelField","onDropdownClose","load","ajax","dataType","q","success","onChange","onChangeHandler","diagnosisCodeText","selectHtmlElement","domControl","regexTest","alertControl","selectComponent","diagnosisCode","domChild","childId","regex","code","domId","toggleClassListDisplay","setAlertId","generateUuid","random","alertType","isSelectize","selectedText","itemInMemory","findIndex","domTarget","domIds","medicalAlert","noMedicalCodeRCodeAlert","medicalCode","containsMedicalCode","fCodeWithMedical","fCodeWithTreatment","rCodeWithTreatment","hasAutismAlert","hasNoSpecificAlert","focusedComponent","selectItems","domIDs","selectItem","controlObjects","treatmentCode","rCode","fCode","htmlElement","newIndex","isMedical","objectIndex","mapTemplate","extra","getHours","getMinutes","getSeconds","round","ReactionsChannel","roomsSessionId","reaction","meta","publicReaction","directLine","lines","find","admin","testing","RoomChat","username","sentAt","sent_at","publicChat","chat","correction","goalPositionTracker","previousString","defaultValueData","setDefaultDataValue","resetGoalFormPositions","getElementsByName","getAllIndexes","indexes","addObjectPronounGoalFormElement","dfElement","containerElement","containerElementInner","newElementLabel","containerElementSpan","newElementPosition","newElementName","newElementVal","intVal","pronoun","option2","addPossessivePronounGoalFormElement","defaultValue","addPositionInWordGoalFormElement","position_in_words","addTargetLevelGoalFormElement","target_levels","addBlendGoalFormElement","blends","addBlendGroupGoalFormElement","blendGroups","addPhonemeCategoryGoalFormElement","phonemeCategories","addPhonemeGroupGoalFormElement","phonemeGroups","addPhonemeGoalFormElement","phonemes","optionGroup","inner_array","addStringGoalFormElement","addIntegerGoalFormElement","addPercentageGoalFormElement","containerElementInputGroup","newElementGroup","newElementSpan","addPatientNameGoalFormElement","selectAll","range","createRange","selectNode","getSelection","removeAllRanges","addRange","setUpCustomTagListeners","customTags","rebuildDynamicElements","editor","getDocument","goalsTrixInitialize","toolbar","toolbarElement","ttools","btools","ftools","insertAdjacentHTML","getElementsByTagName","tfElement","newElement","newContent","actionName","insertString","els","trixString","patientNameCount","percentageCount","integerCount","stringCount","possessivePronounCount","objectPronounCount","phonemeCategoryCount","phonemeGroupCount","blendCount","blendGroupCount","phonemeCount","targetLevelCount","positionInWordCount","array1","array2","patientNameCounter","percentageCounter","integerCounter","stringCounter","possessivePronounCounter","objectPronounCounter","phonemeCategoryCounter","phonemeGroupCounter","blendCounter","blendGroupCounter","phonemeCounter","targetLevelCounter","positionInWordCounter","AddFields","diagnosisCodeManager","diagnosisCodesManager","links","parsedHTML","iterateLinks","relatedField","addLinksListener","handleClick","newFieldsHtml","time","linkId","regexp","newFields","fields","parseHTMLResponse","selectizeTreatability","selectizeText","selectizeNPI","selectizeGoal","selectizeWord","selectizeWordGroup","selectizeActivityList","selectizeActivityItem","selectizeResource","selectizeCredentials","selectizeMinimalPairs","selectizeSchool","selectizeDistrict","selectizeReferenceLink","patientForm","billingSequence","newSequence","uniqueIdentifier","targetContainer","appendFieldsWithoutUniqueId","dataElement","removeLinks","patientFormValidationAlert","tabToDisplay","escape","description","maxItems","preload","addressAttributeDelineation","delineationElement","delineation","first_name","last_name","middle_name","organization_name","suffix","primary_taxonomy_name","primary_taxonomy_number","states","AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY","DC","PR","AS","GU","VI","FM","MH","MP","PW","addressTypes","LOCATION","MAILING","phoneNumberTypes","mapFields","address_1","address_2","address_purpose","address_type","city","country_code","country_name","fax_number","postal_code","telephone_number","addresses","address","workPhoneElement","workPhoneTypeElement","workFaxElement","workFaxTypeElement","idx","field","mappedField","fieldValue","fieldElement","onInitialize","addOption","selectedItems","addItem","dataAttr","author","credentialFields","credentialFieldsValues","fieldAdded","HTML","newFromFieldsIndex","getNewIndexFromTimeString","responseDocument","DOMParser","parseFromString","firstElementChild","Popper","_interopDefaultLegacy","$__default","Popper__default","_createClass","_extends","assign","TRANSITION_END","transitionEndEmulator","one","Util","triggerTransitionEnd","getUID","prefix","getSelectorFromElement","hrefAttr","getTransitionDurationFromElement","floatTransitionDuration","floatTransitionDelay","supportsTransitionEnd","isElement","typeCheckConfig","componentName","configTypes","valueType","Error","findShadowRoot","attachShadow","getRootNode","ShadowRoot","jQueryDetection","jquery","emulateTransitionEnd","special","bindType","delegateType","handle","handleObj","DATA_KEY$a","JQUERY_NO_CONFLICT$a","Alert","_element","_proto","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","closeEvent","_destroyElement","detach","_jQueryInterface","$element","_handleDismiss","alertInstance","noConflict","DATA_KEY$9","JQUERY_NO_CONFLICT$9","CLASS_NAME_ACTIVE$3","SELECTOR_DATA_TOGGLE_CARROT","SELECTOR_INPUT","SELECTOR_BUTTON","Button","shouldAvoidTriggerChange","triggerChangeEvent","addAriaPressed","avoidTriggerChange","initialButton","inputBtn","buttons","_button","NAME$8","DATA_KEY$8","EVENT_KEY$8","JQUERY_NO_CONFLICT$8","CLASS_NAME_ACTIVE$2","DIRECTION_NEXT","DIRECTION_PREV","EVENT_SLID","SELECTOR_ACTIVE_ITEM","Default$7","keyboard","slide","pause","wrap","touch","DefaultType$7","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","_slide","nextWhenVisible","prev","cycle","_updateInterval","visibilityState","activeIndex","_getItemIndex","direction","_handleSwipe","absDeltax","abs","_keydown","_addTouchEventListeners","originalEvent","pointerType","clientX","touches","move","which","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","_setActiveIndicatorElement","indicators","nextIndicator","elementInterval","defaultInterval","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$7","DATA_KEY$7","JQUERY_NO_CONFLICT$7","CLASS_NAME_SHOW$6","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","DIMENSION_WIDTH","SELECTOR_DATA_TOGGLE$3","Default$6","DefaultType$6","Collapse","_isTransitioning","_triggerArray","toggleList","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","actives","activesData","not","startEvent","dimension","_getDimension","setTransitioning","scrollSize","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","$trigger","selectors","$target","NAME$6","DATA_KEY$6","EVENT_KEY$6","JQUERY_NO_CONFLICT$6","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","CLASS_NAME_DISABLED$1","CLASS_NAME_SHOW$5","CLASS_NAME_MENURIGHT","EVENT_HIDE$3","EVENT_HIDDEN$3","EVENT_CLICK_DATA_API$2","EVENT_KEYDOWN_DATA_API","SELECTOR_DATA_TOGGLE$2","SELECTOR_MENU","Default$5","flip","boundary","reference","popperConfig","DefaultType$5","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","hideEvent","scheduleUpdate","Default","DefaultType","_getPlacement","$parentDropdown","placement","_getOffset","offsets","preventOverflow","boundariesElement","applyStyle","toggles","clickEvent","dropdownMenu","_dataApiKeydownHandler","NAME$5","DATA_KEY$5","EVENT_KEY$5","JQUERY_NO_CONFLICT$5","CLASS_NAME_OPEN","CLASS_NAME_FADE$4","CLASS_NAME_SHOW$4","CLASS_NAME_STATIC","EVENT_HIDDEN$2","EVENT_SHOW$2","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS$1","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEDOWN_DISMISS","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","Default$4","backdrop","DefaultType$4","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","scrollHeight","clientHeight","overflowY","modalTransitionDuration","modalBody","Node","ELEMENT_NODE","_enforceFocus","shownEvent","transitionComplete","_this5","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","animate","className","appendTo","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","paddingRight","rect","innerWidth","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","margin","scrollDiv","scrollbarWidth","clientWidth","_this11","uriAttrs","DefaultWhitelist","area","br","col","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","small","span","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","whitelistKeys","_loop","elName","nodeName","attributeList","whitelistedAttributes","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","allowedAttribute","NAME$4","DATA_KEY$4","EVENT_KEY$4","JQUERY_NO_CONFLICT$4","BSCLS_PREFIX_REGEX$1","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE$3","CLASS_NAME_SHOW$3","HOVER_STATE_SHOW","HOVER_STATE_OUT","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$3","animation","template","html","fallbackPlacement","customClass","sanitize","DefaultType$3","Event$1","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","_isWithActiveTrigger","_leave","getTipElement","EVENT_KEY","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","NAME","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","CLASS_PREFIX$1","setElementContent","empty","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","eventIn","eventOut","_fixTitle","titleType","dataAttributes","$tip","tabClass","popperData","popper","initConfigAnimation","NAME$3","DATA_KEY$3","EVENT_KEY$3","JQUERY_NO_CONFLICT$3","BSCLS_PREFIX_REGEX","Default$2","DefaultType$2","Popover","_Tooltip","_getContent","CLASS_PREFIX","CLASS_NAME_FADE$2","NAME$2","DATA_KEY$2","EVENT_KEY$2","JQUERY_NO_CONFLICT$2","CLASS_NAME_ACTIVE$1","METHOD_POSITION","SELECTOR_NAV_LIST_GROUP$1","SELECTOR_NAV_LINKS","Default$1","DefaultType$1","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","pageYOffset","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","$link","parents","scrollSpys","$spy","DATA_KEY$1","JQUERY_NO_CONFLICT$1","CLASS_NAME_ACTIVE","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$1","SELECTOR_ACTIVE","SELECTOR_ACTIVE_UL","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","$this","JQUERY_NO_CONFLICT","CLASS_NAME_HIDE","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","EVENT_CLICK_DISMISS","autohide","Toast","_clearTimeout","_close","Scrollspy","_wrapNativeSuper","Class","_cache","Map","_isNativeFunction","Wrapper","_construct","_get","receiver","_superPropBase","desc","Parent","_createForOfIteratorHelper","allowArrayLike","it","_unsupportedIterableToArray","F","_e59","f","normalCompletion","didErr","step","_e60","return","_slicedToArray","_arrayWithHoles","_arr","_iterableToArrayLimit","_nonIterableRest","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","minLen","iter","arr2","w","G","Y","et","preview","presentation","caption","quote","nestable","heading1","terminal","breakOnReturn","group","htmlAttributes","plaintext","bulletList","bullet","listAttribute","numberList","attachmentGallery","exclusive","composesExistingText","recentAndroid","samsungAndroid","forcesObjectResizing","supportsInputEvents","InputEvent","ADD_ATTR","SAFE_FOR_XML","RETURN_DOM","attachFiles","bold","bullets","byte","captionPlaceholder","indent","italic","numbers","outdent","redo","strike","undo","unlink","urlPlaceholder","GB","KB","MB","PB","TB","precision","formatter","_e2","_i2","_n2","pow","toFixed","g","m","_e3","_i3","_ref","onElement","matchingSelector","withCallback","inPhase","times","_ref2","A","_ref3","untilNode","C","E","previousSibling","S","R","_ref4","onlyNodesOfType","usingFilter","expandEntityReferences","NodeFilter","SHOW_ELEMENT","SHOW_TEXT","SHOW_COMMENT","SHOW_ALL","createTreeWalker","T","editable","contenteditable","L","_t2","_e4","D","I","N","_ref5","strict","O","COMMENT_NODE","_ref6","B","trixCursorTarget","P","M","TEXT_NODE","level2Enabled","getLevel","pickFiles","fileInputId","removeBlankTableCells","tableCellSeparator","tableRowSeparator","W","inheritable","parser","fontWeight","fontStyle","groupTagName","frozen","backgroundColor","U","getDefaultHTML","V","z","attachments","blockAttributes","browser","attachmentCaption","attachmentCaptionEditor","attachmentMetadata","attachmentMetadataContainer","attachmentName","attachmentProgress","attachmentSize","attachmentToolbar","dompurify","fileSize","keyNames","lang","textAttributes","_H","H","toMethod","toProperty","optional","J","K","X","ucs2String","codepoints","ucs2Length","_this$codepoints","fromCodepoints","fromUCS2String","Z","Q","codePointAt","tt","_r2","_e5","nt","rt","_q2","_super2","contentsForInspection","_i4","_n3","fromJSON","ot","_i5","st","at","lt","dirName","FormData","ct","ut","ht","dt","gt","bt","pt","mt","ft","vt","At","yt","xt","_e6","nonce","_i6","Ct","Et","_t3","St","metaKey","ctrlKey","Rt","kt","_i7","_n4","Tt","_i8","wt","Nt","Lt","_wt2","It","Dt","_wt4","_wt6","Ot","_q3","_super3","selectionManagers","stop","selectionDidChange","notifySelectionManagersOfSelectionChange","Ft","Pt","rangeCount","Mt","getRangeAt","Bt","jt","startContainer","endContainer","Wt","Ut","Vt","zt","isEqualTo","qt","utf16String","_s2","Ht","_rt","_super4","Gt","merge","Jt","Kt","$t","Yt","getKeys","_t4","_e7","_i9","getKeysCommonToHash","_t5","_n5","Xt","_ref7","depth","asTree","objects","groupObjects","getObjects","getCacheKey","_ref8","canBeGrouped","canBeGroupedWith","Zt","_q4","_super5","Qt","te","trixStoreKey","ee","_q5","_super6","performing","performed","succeeded","promise","perform","proxyMethod","ie","_q6","_super7","childViews","rootView","createNodes","parentView","invalidate","findViewForObject","getCachedViewForObject","recordChildView","createChildView","cacheViewForObject","viewClass","ne","getAllChildViews","findElementForObject","_step","_iterator","_e8","getViewCache","isViewCachingEnabled","viewCache","shouldCacheViews","_e9","_i10","_ie","_super8","_this12","objectGroup","_this13","findOrCreateCachedChildView","createContainerElement","getChildViews","getNodes","getDepth","re","oe","se","ae","le","ce","ue","seal","he","_ref9","de","ge","ke","me","Te","pe","fe","be","ve","Ae","ye","xe","Ce","Ee","Se","Re","we","_r3","_t6","Le","_e10","De","_step2","_iterator2","_ref11","_i11","_n6","Ne","_i12","Ie","Oe","Fe","Pe","Me","Be","je","We","Ue","Ve","ze","qe","He","Je","Ke","Ge","Ye","$e","Xe","Ze","Qe","ARIA_ATTR","ATTR_WHITESPACE","CUSTOM_ELEMENT","DATA_ATTR","DOCTYPE_NAME","ERB_EXPR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","MUSTACHE_EXPR","TMPLIT_EXPR","oi","si","isSupported","currentScript","DocumentFragment","HTMLTemplateElement","_e$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","trustedTypes","_t7","_n7","implementation","createNodeIterator","createDocumentFragment","importNode","afterSanitizeAttributes","afterSanitizeElements","afterSanitizeShadowDOM","beforeSanitizeAttributes","beforeSanitizeElements","beforeSanitizeShadowDOM","uponSanitizeAttribute","uponSanitizeElement","uponSanitizeShadowNode","createHTMLDocument","tagNameCheck","attributeNameCheck","allowCustomizedBuiltInElements","PARSER_MEDIA_TYPE","ALLOWED_TAGS","ALLOWED_ATTR","ALLOWED_NAMESPACES","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","FORBID_CONTENTS","FORBID_TAGS","FORBID_ATTR","USE_PROFILES","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","FORCE_BODY","SANITIZE_DOM","SANITIZE_NAMED_PROPS","KEEP_CONTENT","IN_PLACE","ALLOWED_URI_REGEXP","NAMESPACE","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","CUSTOM_ELEMENT_HANDLING","svgFilters","mathMl","ADD_TAGS","table","tbody","TRUSTED_TYPES_POLICY","createHTML","createScriptURL","createPolicy","attribute","getAttributeNode","_e11","createDocument","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","namespaceURI","allowedTags","_e12","_i13","_n8","_r4","__removalCount","attrValue","keepAttr","allowedAttributes","forceKeepAttr","getAttributeType","nextNode","_e13","shadowroot","shadowrootmode","outerHTML","doctype","setConfig","clearConfig","isValidAttribute","addHook","removeHook","removeHooks","removeAllHooks","ai","ci","ui","_q7","_super9","_this14","_ref13","forbiddenProtocols","forbiddenElements","sanitizeElements","normalizeListElementNesting","_i14","currentNode","elementIsRemovable","sanitizeElement","_this15","protocol","previousElementSibling","elementIsForbidden","elementIsntSerializable","getHTML","di","gi","_ie2","_super10","_this16","uploadProgressDelegate","attachmentPiece","piece","getClassName","getHref","tabindex","hasContent","setHTML","getContent","createContentNodes","createCaptionElement","isPending","progressElement","getUploadProgress","trixMutable","mi","getCaption","_e14","_i15","_n9","getCaptionConfig","getFilename","getFormattedFilesize","_i16","_n10","getExtension","trixAttachment","trixContentType","getContentType","trixId","trixAttributes","trixSerialize","pi","findProgressElement","fi","_gi","_super11","_this17","previewDelegate","image","updateAttributesForImage","getURL","getPreviewURL","_i17","getWidth","getHeight","bi","_ie3","_super12","_this18","getAttributes","textConfig","string","createAttachmentNodes","createStringNodes","_i18","isPreviewable","_t8","_e15","_i19","_n11","_e16","_e17","preserveSpaces","_o2","_e18","styleProperty","_t9","_e19","_i20","_n12","isLast","isFirst","followsWhitespace","vi","_ie4","_super13","_this19","getPieces","_r5","_o3","_s3","Ai","_a","yi","xi","_ie5","_super14","_this20","_i21","getLastAttribute","_n13","shouldAddExtraNewlineElement","_e20","_i22","isRTL","_r6","_mt","_mt$htmlAttributes","_t10","getBlockBreakPosition","_t11","Ci","_ie6","_super15","_this21","elementStore","setDocument","_this22","shadowElement","_t12","getBlocks","Si","createDocumentFragmentForSync","lastChild","didSync","_this23","Ei","garbageCollectCachedViews","_this24","replaceChild","Ri","ki","Ti","_invoke","wi","toPrimitive","Li","Di","Oi","Ii","Ni","Fi","Pi","Mi","Bi","asyncIterator","throw","_rt2","_super16","_this25","copyWithAttributes","hasSameConstructorAs","hasSameStringValueAsPiece","hasSameAttributesAsPiece","inspect","types","ji","_ee","_super17","_this26","_this27","Image","onload","naturalWidth","naturalHeight","onerror","Wi","_rt3","_super18","_this28","releaseFile","didChangeAttributes","attachmentDidChangeAttributes","preloadURL","previewablePattern","preloadFile","releasePreloadedFile","uploadProgress","attachmentDidChangeUploadProgress","previewURL","preloadingURL","attachmentDidChangePreviewURL","fileObjectURL","URL","createObjectURL","revokeObjectURL","_this29","setAttributes","setPreviewURL","attributesForFile","setFile","filesize","contentType","Ui","_i23","_super19","_this30","ensureAttachmentExclusivelyHasAttribute","removeProhibitedAttributes","permittedAttributes","registerType","Vi","_i24","_super20","_this31","zi","_rt4","_super21","_this32","_this$splitObjectAtPo2","splitObjectAtPosition","insertSplittableListAtIndex","replaceObjectAtIndex","_this$splitObjectsAtR2","splitObjectsAtRange","_this$splitObjectsAtR4","_this$splitObjectsAtR6","_this$constructor$spl2","_this$splitObjectAtPo4","Hi","Ji","findIndexAndOffsetAtPosition","_this$findIndexAndOff2","_t13$splitAtOffset2","getObjectAtIndex","splitAtOffset","_s4","_a2","getLength","canBeConsolidatedWith","consolidateWith","consolidate","_n14","_n15","_r7","_this33","endPosition","qi","_n16","_r8","Ki","_rt5","_super22","_this34","pieceList","copyWithPieceList","insertTextAtPosition","insertSplittableListAtPosition","removeObjectsInRange","removeTextAtRange","getTextAtRange","addAttributesAtRange","transformObjectsInRange","copyWithAdditionalAttributes","copyWithoutAttribute","getObjectAtPosition","fromCommonAttributesOfObjects","getCommonAttributes","getCommonAttributesAtRange","getSplittableListInRange","getStringAtRange","getAttachmentPieces","_step3","_iterator3","_n17","getAttachmentAndPositionById","getRangeOfAttachment","getEndPosition","isBlockBreak","eachObject","selectSplittableList","isSerializable","toConsole","getDirection","Gi","_rt6","_super23","_this35","Yi","copyWithText","copyUsingObjectMap","en","rn","nn","getAttributeLevel","getNestableAttributes","getLastNestableAttribute","_e21","lastIndexOf","_i25","hasAttributes","textForStringWithAttributes","getTextWithoutBlockBreak","appendText","Qi","_t14","_e22","$i","Zi","tn","Xi","blockBreak","_rt7","_super24","_this36","blockList","getBlockAtIndex","consolidateBlocks","_this$locationFromPos","locationFromPosition","getBlockAtPosition","removeObjectAtIndex","getBaseBlockAttributes","_e27","copyWithBaseBlockAttributes","getBlockCount","_t15","insertTextAtRange","_e28","insertDocumentAtRange","_this$locationFromPos2","editObjectAtIndex","_t17","_Array$from2","locationRangeFromRange","getStringAtPosition","_t18","_i26","_n18","_r9","_o4","_t20","getDocumentAtRange","_o$getBlocks","_o$getBlocks2","eachBlockAtRange","addAttribute","addAttributeAtRange","eachBlock","removeAttributeAtRange","getTextAtIndex","updateAttributesForAttachment","addHTMLAttribute","replaceBlock","expandRangeToLineBreaksAndSplitBlocks","_e31","removeLastListAttributeAtRange","exceptAttributeName","convertLineBreaksToBlockBreaksInRange","removeBlockAttributesAtRange","removeLastTerminalAttributeAtRange","consolidateBlocksAtRange","copyWithoutAttributes","_t24","findLineBreakInDirectionFromPosition","positionFromLocation","insertBlockBreakAtRange","_t25","_t29","consolidateFromIndexToIndex","_this$locationFromPos7","getPieceAtPosition","_this$locationFromPos8","editCount","_t31","_t32","getCommonAttributesAtPosition","_e32","_i27","sn","_this$locationFromPos9","getAttributesAtPosition","_this$locationFromPos10","_Array$from6","getExpandedRangeForAttributeAtOffset","_this37","_loop2","_e33","_r10","_step4","_iterator4","getAttachments","_e34","_n19","_r11","_o5","_step5","_iterator5","_e35","_ref14","withValue","_t35","findPositionAtIndexAndOffset","_Array$from8","getTexts","toSerializableText","an","ln","cn","_q8","_super25","_this38","_ref15","blocks","blockElements","processedElements","createHiddenContainer","_t36","gn","processNode","translateBlockElementMarginsToNewlines","removeHiddenContainer","isInsignificantTextNode","appendBlockForTextNode","processTextNode","appendBlockForElement","processElement","currentBlockElement","isBlockElement","appendStringWithAttributes","_t37","getBlockAttributes","_n20","getBlockHTMLAttributes","currentBlock","appendBlockForAttributesWithElement","_e36","_n21","_e37","findParentBlockElement","appendEmptyBlock","un","mn","getTextAttributes","_i28","appendAttachmentWithAttributes","isExtraBR","_i29","_t38","_n22","needsTableSeparator","appendPiece","_n23","_r12","_step6","_o6","_iterator6","findBlockElementAncestors","_i30","_n24","_t39","_r13","_o7","reverse","_i31","pn","hn","_i32","getMarginOfDefaultBlockElement","_e38","_i33","getMarginOfBlockElementAtIndex","prependStringToTextAtIndex","appendStringToTextAtIndex","dn","whiteSpace","marginTop","marginBottom","FILTER_REJECT","FILTER_ACCEPT","bn","vn","An","yn","xn","toSerializableDocument","toJSONString","_e39","_i34","_n25","Cn","En","_q9","_super26","_this39","attachmentManager","requestRemovalOfAttachment","Sn","_q10","_super27","_this40","managedAttachments","manageAttachment","_e40","_i35","attachmentIsManaged","attachmentManagerDidRequestRemovalOfAttachment","Rn","composition","getSelectedRange","startPosition","startLocation","endLocation","breaksOnReturn","previousCharacter","nextCharacter","isListItem","kn","_q11","_super28","_this41","currentAttributes","revision","refreshAttachments","compositionDidChangeDocument","selectedRange","compositionWillLoadSnapshot","setSelection","compositionDidLoadSnapshot","_ref16","updatePosition","notifyDelegateOfInsertionAtRange","insertDocument","getCurrentTextAttributes","insertText","shouldDecreaseListLevel","decreaseListLevel","shouldPrependListItem","_e41","copyWithoutText","shouldInsertBlockBreak","insertBlockBreak","shouldRemoveLastBlockAttribute","removeLastBlockAttribute","shouldBreakFormattedBlock","breakFormattedBlock","mergeDocumentAtRange","copyUsingObjectsFromDocument","getLocationRange","rangeFromLocationRange","insertFiles","_this42","compositionShouldAcceptFile","_i36","attachmentForFile","insertAttachments","_this43","textForAttachmentWithAttributes","shouldManageMovingCursorInDirection","_ref17","canDecreaseBlockAttributeLevel","_t40","getBlock","decreaseBlockAttributeLevel","getExpandedRangeInDirection","getAttachmentAtRange","editAttachment","moveTextFromRangeToPosition","stopEditingAttachment","_Array$from12","removeCurrentAttribute","placeholderPosition","getPosition","setSelectedRange","setCurrentAttribute","canSetCurrentBlockAttribute","canSetCurrentTextAttribute","getSelectedDocument","_i37","_Array$from13","isTerminalBlock","setBlockAttribute","setTextAttribute","notifyDelegateOfCurrentAttributesChange","_n26","setHTMLAttributeAtPosition","_Array$from15","_t42","canSetCurrentAttribute","applyBlockAttributeAtRange","removeBlockAttribute","updateCurrentAttributes","removeTextAttribute","getNestingLevel","_t43","getPreviousBlock","getListItemAttributes","decreaseNestingLevel","increaseNestingLevel","_this44","ignoreLock","_e42","_e43","_i38","hasCurrentAttribute","compositionDidRequestChangingSelectionToLocationRange","getSelectionManager","setLocationRange","targetLocationRange","withTargetLocationRange","createLocationRangeFromDOMRange","_ref18","_Array$from18","_Array$from19","translateUTF16PositionFromOffset","editingAttachment","_n27","_t44","_ref19","expandSelectionAroundCommonAttribute","getRangeOfCommonAttributeAtPosition","getSelectedAttachments","positionIsCursorTarget","locationIsCursorTarget","_this45","_ref20","added","compositionDidRemoveAttachment","compositionDidAddAttachment","compositionDidEditAttachment","compositionDidChangeAttachmentPreviewURL","compositionDidStartEditingAttachment","compositionDidStopEditingAttachment","removeAttributeForAttachment","removeLastAttribute","_e44","compositionDidChangeCurrentAttributes","compositionDidPerformInsertionAtRange","toUTF16String","offsetFromUCS2Offset","offsetToUCS2Offset","Tn","_q12","_super29","_this46","undoEntries","redoEntries","_ref21","consolidatable","wn","_i39","createEntry","_e45","loadSnapshot","snapshot","_e46","_ref22","getSnapshot","Ln","Dn","applyBlockAttribute","_this47","findRangesOfBlocks","_this48","findRangesOfPieces","getCharacterAtPosition","moveSelectedRangeForward","findRangesForBlockAttribute","findRangesForTextAttribute","Nn","In","On","selectionManager","undoManager","filters","loadDocument","deleteInDirection","insertAttachment","insertFile","insertHTML","insertLineBreak","getClientRectAtLocationRange","expandSelectionInDirection","moveCursorInDirection","setHTMLAtributeAtPosition","canDecreaseNestingLevel","canIncreaseNestingLevel","canRedo","canUndo","_ref23","recordUndoEntry","Fn","_ref24","findAttachmentElementParentForNode","_s5","Pn","_this$findNodeAndOffs2","findNodeAndOffsetFromLocation","_step7","_iterator7","getSignificantNodesForIndex","_r14","_o8","Mn","_o9","Bn","jn","caretPositionFromPoint","_document$caretPositi","_t45","offsetNode","_r15","setStart","caretRangeFromPoint","createTextRange","_t46","_t47","moveToPoint","getClientRects","Wn","_q13","_super30","_this49","didMouseDown","locationMapper","pointMapper","lockCount","currentLocationRange","lockedLocationRange","createDOMRangeFromLocationRange","updateCurrentLocationRange","getLocationAtPoint","getClientRectsForDOMRange","_t48","collapsed","selectionIsCollapsed","domRangeWithinElement","findLocationFromContainerAndOffset","startOffset","endOffset","pauseTemporarily","_this50","paused","locationRangeDidChange","findContainerAndOffsetFromLocation","_t49","setEnd","createDOMRangeFromPoint","ar","Un","Attachment","AttachmentManager","AttachmentPiece","Block","Composition","Document","Editor","HTMLParser","HTMLSanitizer","LineBreakInsertion","LocationMapper","ManagedAttachment","Piece","PointMapper","SelectionManager","SplittableList","StringPiece","Text","UndoManager","Vn","ObjectView","AttachmentView","BlockView","DocumentView","PieceView","PreviewableAttachmentView","TextView","zn","qn","Hn","Jn","do","undos","Kn","_q14","_super31","_this51","trixAction","didClickToolbar","didClickActionButton","didInputCaption","didKeyDownCaption","didChangeCaption","didBlurCaption","editCaption","makeElementMutable","addToolbar","installCaptionEditor","savePendingCaption","didUninstallAttachmentEditor","pendingCaption","_r16","attachmentEditorDidRequestUpdatingAttributesForAttachment","attachmentEditorDidRequestRemovingAttributeForAttachment","attachmentEditorDidRequestRemovalOfAttachment","keyCode","attachmentEditorDidRequestDeselectingAttachment","Gn","_q15","_super32","_this52","didFocus","didBlur","didClickAttachment","documentView","_this53","focused","compositionControllerDidFocus","blurPromise","_this54","compositionControllerDidBlur","findAttachmentForElement","compositionControllerDidSelectAttachment","isEditingAttachment","canSyncDocumentView","isSynced","compositionControllerWillSyncDocumentView","compositionControllerDidSyncDocumentView","compositionControllerDidRender","invalidateViewForObject","enableViewCaching","disableViewCaching","attachmentEditor","uninstallAttachmentEditor","getAttachmentPieceForAttachment","uninstall","compositionControllerWillUpdateAttachment","compositionControllerDidRequestRemovalOfAttachment","compositionControllerDidRequestDeselectingAttachment","getAttachmentById","Yn","_q16","_super33","$n","Xn","Zn","childList","characterDataOldValue","subtree","Qn","_q17","_super34","_this55","didMutate","disconnect","_this$mutations","mutations","findSignificantMutations","elementDidMutate","getMutationSummary","_this56","mutationIsSignificant","nodeIsMutable","_i40","_Array$from20","nodesModifiedByMutation","_e47","nodeIsSignificant","attributeName","addedNodes","removedNodes","getTextMutationSummary","_this$getTextChangesF","getTextChangesFromCharacterData","additions","deletions","getTextChangesFromChildList","textAdded","textDeleted","getMutationsByType","tr","_n28","_r17","_o10","_zt","_zt2","_zt3","_zt4","_i41","_Array$from21","_i42","er","_ee2","_super35","_this57","_this58","abort","ir","previousEvent","checkSamsungKeyboardBuggyModeStart","checkSamsungKeyboardBuggyModeEnd","buggyMode","insertingLongTextAfterUnidentifiedChar","nr","innerText","inputType","isBeforeInputInsertText","previousEventWasUnidentifiedKeydown","or","rr","sr","_q18","_super36","_this59","_t50","mutationObserver","flakyKeyboardDetector","handlerFor","inputControllerDidRequestRender","inputControllerDidRequestReparse","requestRender","_this60","all","handleInput","inputControllerWillAttachFiles","responder","_this61","shouldIgnore","eventName","inputControllerWillHandleInput","inputControllerDidHandleInput","lr","cr","ur","_sr","_super37","_this62","resetInputSummary","_e48","inputSummary","_i43","isComposing","inputControllerDidAllowUnhandledInput","mutationIsExpected","requestReparse","preferDocument","didDelete","_t51","_i44","positionIsBlockBreak","compositionInput","getEndData","fr","isEnded","setInputSummary","setData","_e49","_i45","Files","_this63","pageXOffset","opacity","keydown","didInput","_n29","keyName","_e50","_i46","inputControllerDidReceiveKeyboardCommand","keypress","mr","inputControllerWillPerformTyping","selectionIsExpanded","textInput","_t52","dragenter","dragstart","serializeSelectionToDataTransfer","dataTransfer","draggedRange","inputControllerDidStartDrag","dragover","canAcceptDataTransfer","_n30","clientY","draggingPoint","inputControllerDidReceiveDragOverPoint","dragend","inputControllerDidCancelDrag","drop","setLocationRangeFromPointRange","inputControllerWillMoveText","moveTextFromRange","_t53","fromJSONString","cut","clipboardData","inputControllerWillCutText","paste","_this64","testClipboardData","clipboard","pr","_t54","createLinkHTML","inputControllerWillPaste","inputControllerDidPaste","_t55","getAsFile","_e51","dr","getPastedHTMLUsingHiddenElement","compositionstart","getCompositionInput","compositionupdate","compositionend","beforeinput","backspace","tab","selectionIsInCursorTarget","control","alt","gr","_e52","charCode","_step8","_iterator8","_t56","_i47","_n31","_t57","_i48","_q19","_super38","_this65","inputController","isSignificant","insertPlaceholder","_t58","selectPlaceholder","forgetPlaceholder","canApplyToDocument","_sr2","_super39","_this66","scheduledRender","reparse","cancelAnimationFrame","afterRender","withTargetDOMRange","inputControllerWillPerformFormatting","toggleCurrentAttribute","_this67","_ref25","getTargetDOMRange","minLength","_ref26","getTargetRanges","_t59","vr","_i49","Er","_e53","shiftKey","_i50","withEvent","xr","Cr","inputTypes","scheduleRender","selectionContainsAttachments","dragging","point","Sr","Ar","_i51","_e54","ArrowLeft","ArrowRight","Backspace","shouldManageDeletingInDirection","deleteByComposition","deleteByCut","deleteByDrag","deleteByDragRange","deleteCompositionText","deleteContent","deleteContentBackward","deleteContentForward","deleteEntireSoftLine","deleteHardLineBackward","deleteHardLineForward","deleteSoftLineBackward","deleteSoftLineForward","deleteWordBackward","deleteWordForward","formatBackColor","activateAttributeIfSupported","formatBold","toggleAttributeIfSupported","formatFontColor","formatFontName","formatIndent","formatItalic","formatJustifyCenter","formatJustifyFull","formatJustifyLeft","formatJustifyRight","formatOutdent","formatRemove","_i52","getCurrentAttributes","formatSetBlockTextDirection","formatSetInlineTextDirection","formatStrikeThrough","formatSubscript","formatSuperscript","formatUnderline","historyRedo","inputControllerWillPerformRedo","historyUndo","inputControllerWillPerformUndo","insertCompositionText","insertFromComposition","insertFromDrop","insertFromPaste","_this68","_n32","_o11","yr","insertFromYank","insertLink","insertOrderedList","insertParagraph","insertReplacementText","_this69","insertTranspose","insertUnorderedList","Rr","kr","Tr","wr","Lr","Dr","Nr","Ir","Fr","Or","Pr","_q20","_super40","_this70","didClickAttributeButton","didClickDialogButton","didKeyDownDialogInput","actions","resetDialogInputs","toolbarDidClickButton","getDialog","toggleDialog","toolbarDidInvokeAction","toolbarDidToggleAttribute","refreshAttributeButtons","_i53","_n33","hideDialog","refreshActionButtons","_this71","eachActionButton","_this72","eachAttributeButton","dialogIsVisible","_i54","_Array$from22","_t60","_i55","showDialog","toolbarWillShowDialog","_e55","toolbarDidShowDialog","willValidate","setCustomValidity","checkValidity","isSafeAttribute","toolbarDidUpdateAttribute","toolbarDidRemoveAttribute","toolbarDidHideDialog","Mr","_Yn","_super41","_this73","editorElement","compositionController","toolbarController","loadHTML","registerSelectionManager","unregisterSelectionManager","replaceHTML","notifyEditorElement","handlingInput","updateAttributes","updateCurrentActions","pasting","pastedRange","rerenderViewForObject","unmanageAttachment","attachmentLocationRange","getLocationRangeOfAttachment","installAttachmentEditorForAttachment","loadingSnapshot","isFocused","requestedLocationRange","compositionRevisionWhenLocationRangeRequested","refreshViewCache","removeAttachment","editorWillSyncDocumentView","lock","clearSelection","editorDidSyncDocumentView","unlock","renderedCompositionRevision","runEditorFilters","isFocusedInvisibly","requestedRender","recordTypingUndoEntry","recordFormattingUndoEntry","applyKeyboardCommand","locationRangeBeforeDrag","invokeAction","selectionFrozen","expandSelectionForEditing","freezeSelection","dialogName","thawSelection","actionIsExternal","invokingElement","_e56","canInvokeAction","getCurrentActions","currentActions","updateActions","_this74","_t61","getSerializableElement","setFormValue","documentChangedSinceLastRender","updateInputElement","getUndoContext","getLocationContext","getTimeContext","canActivateAttribute","Br","AttachmentEditorController","CompositionController","Controller","EditorController","InputController","Level0InputController","Level2InputController","ToolbarController","_r","SelectionChangeObserver","jr","FileVerificationOperation","ImagePreloadOperation","Wr","_HTMLElement","_super42","Ur","zr","qr","Hr","queryCommandSupported","execCommand","_t62","Jr","Kr","Gr","WeakSet","Yr","attachInternals","$r","labels","inputElement","validity","validationMessage","reportValidity","_this$element","setValidity","valueMissing","customError","Xr","Zr","Qr","_this75","eo","io","_HTMLElement2","_super43","_this76","formAssociated","localName","_t63","_e57","_t64","_e58","nextElementSibling","editorController","_this77","Vr","connectedCallback","disconnectedCallback","VERSION","core","models","views","observers","operations","TrixEditorElement","TrixToolbarElement","Filter","attachmentGalleryFilter","Trix","disableAutoSelect","preventSubmit","emptyMsg","fetch","labelAttr","suggestions","label","performSearch","onSelect","onSelectPath","visit","debounceWaitMs","autocomplete","CommandPaletteElement","keyMappings","registerKeyMappings","combobox","Combobox","onKeydown","onInput","startLoading","stopLoading","initializePalette","details","onToggle","destroyPalette","newValue","parsedNewValue","groups","filterGroup","setActive","activableItems","removeScope","header","palette","anchor","updateScope","targetGroupId","updateScopeFromItem","activeGroup","parsedActiveGroup","mapping","triggerKeys","parsedTriggerKeys","autofocus","activable","groupId","groupTitle","stack","stringifiedObject","CommandPaletteGroupElement","brandedId","titleId","fetchResults","isGroupActive","initializeFetch","groupItems","filterItems","matching","accept","allItems","addScope","CommandPaletteItemElement","DetailsDialogElement","onClick","registerActivationHotkey","summary","hotkey","tinykeys","dialog","checkFormSubmission","interceptTabbing","autofocusableElement","focusFirstElement","focusableElements","movement","currentFocus","currentIndex","nextEventLoop","waitForTransition","transitionElement","CommandPaletteStack","activateNamedGroup","activateDefaultGroup","isConnected","observeMutations","toggleDataEmpty","allHidden","password","results","resultContainer","existingResults","resultsHtml","confirmation","existingMsg","sufficientStrength","strengthResponse","score","sufficientLength","explanation","strength","color","styled","RoomChannel","viewerId","user_id","sendReply","visitorId","visitor_left","roomVisitorChannels","base64Audio","audio","enteredName","userId","RoomSessionChannel","for_viewer","room_started","meeting_mode","participant_connected_to_session","roomSessionChannel","syncState","syncSupervisorState","participant_entered_session","sendCurrentSessionState","therapist_entered_session","activeVisitors","sync_state","therapist_left_session","sync_whiteboard_for","syncWhiteBoardCanvasObjects","sync_resources_for","syncResourceCanvasObjects","toast_errors","whiteboard_status","canvas_object","canvas_object_update","artistId","canvas_clear","canvasId","canvas_clear_object","resource_canvas_lock_active","selectableState","screenshare_status","resource_status","resource_selection","canvas_position","click_beacon_active","click_beacon_coordinates","participant","getters","resource_interact_mode","patient","patients","organization","streamerId","timePassed","showTimer","startTimer","playSound","payload","mutation","visitor_id","supervisor_is_visible","targetUserId","activeSessionId","layout","sharingMedia","demoMode","whiteBoardMode","resourceMode","resource","sharingResourceId","canvas","canvasPositions","interactMode","clickBeaconActive","locked","resourceDrawingLocked","isVisualScheduleSharing","visualScheduleSharing","roomTimer","visibleToParticipants","running","demoingParticipant","supervisors","supervisorIsVisible","supervisorIds","wbCanvas","canvases","_objects","jsonObj","sourcePath","toDatalessObject","resourceCanvas","application","Application","Stimulus","register","FocusController","PopCardController","PricingPageController","LandingPageNavController","ScrollReveal","SideNavController","ToastController","ToggleSectionController","TrayCardController","TrayNavController","CarouselController","SectionAnchorController","count","unread_count","unreadCount","Sifter","MicroPlugin","skip","search","spannode","middlebit","splitText","middleclone","MicroEvent","fct","destObject","IS_MAC","KEY_A","KEY_RETURN","KEY_ESC","KEY_LEFT","KEY_UP","KEY_P","KEY_RIGHT","KEY_DOWN","KEY_N","KEY_BACKSPACE","KEY_DELETE","KEY_SHIFT","KEY_CMD","KEY_CTRL","KEY_TAB","TAG_SELECT","TAG_INPUT","SUPPORTS_VALIDITY_API","isset","hash_key","escape_html","debounce_events","event_args","watchChildEvent","selectionStart","selectionEnd","selection","sel","selLen","moveStart","transferStyles","$from","$to","properties","measureString","Selectize","$testInput","autoGrow","currentWidth","printable","character","triggerHandler","domToString","groupEnd","computedStyle","getPropertyValue","order","tagType","rtl","eventNS","highlightedValue","isBlurring","isDisabled","isRequired","isInvalid","isLocked","isInputHidden","isSetup","isShiftDown","isCmdDown","isCtrlDown","ignoreFocus","ignoreBlur","ignoreHover","hasOptions","currentResults","lastValue","caretPos","loadedSearches","$activeOption","$activeItems","optgroups","userOptions","renderCache","onSearchChange","loadThrottle","sifter","diacritics","registerOption","registerOptionGroup","hideSelected","initializePlugins","setupCallbacks","setupTemplates","setup","$dropdown_content","$dropdown_parent","inputMode","classes_plugins","inputId","$window","$document","wrapperClass","inputClass","dropdownClass","dropdownContentClass","copyClassesToDropdown","names","splitOn","delimiterEscaped","onOptionHover","onOptionSelect","onItemSelect","mousedown","onMouseDown","onKeyDown","keyup","onKeyUp","onKeyPress","resize","blur","onBlur","onFocus","onPaste","revertSettings","after","setValue","refreshState","updateOriginalInput","refreshItems","updatePlaceholder","field_label","field_optgroup","optgroupLabelField","templates","setActiveItem","isFull","pastedText","splitInput","createItem","$next","getAdjacentOption","setActiveOption","$prev","advanceSelection","selectOnTab","deleteSelection","refreshOptions","wasFocused","showInput","openOnFocus","dest","deactivate","setTextboxValue","setCaret","createOnBlur","closeAfterSelect","lastQuery","getOption","loadingClass","addItems","$item","swap","$last","hideInput","$option","scroll","height_menu","height_item","scroll_top","scroll_bottom","scrollDuration","getScoreFunction","getSearchOptions","conjunction","searchConjunction","nesting","calculateScore","triggerDropdown","groups_order","option_html","optgroup","html_children","has_create_option","$active","$active_before","$create","active_before","maxOptions","optgroupField","lockOptgroupOrder","$order","dom","tokens","canCreate","prepend","addPrecedence","optgroupValueField","addOptionGroup","removeOptionGroup","clearOptionGroups","updateOption","$item_new","value_new","index_item","cache_items","cache_options","order_old","replaceWith","removeOption","clearOptions","getElementWithValue","eq","$els","value_next","wasFull","insertAtCaret","persist","caret","output","refreshValidityState","refreshClasses","invalid","isEmptyObject","removeAttr","visibility","option_select","$option_select","$tail","onDelete","valueLength","advanceCaret","$adj","$child","templateName","disabledField","clearCache","createFilter","allowEmptyOption","settings_user","attr_data","field_value","field_disabled","field_optgroup_label","field_optgroup_value","init_textbox","settings_element","data_raw","init_select","optionsMap","readData","addGroup","$optgroup","tag_name","support","sortable","forcePlaceholderSize","helper","headerClass","titleRowClass","labelClass","closeClass","$dropdown_header","equalizeWidth","equalizeHeight","getScrollbarWidth","equalizeSizes","height_max","width_last","width_parent","$optgroups","singleClose","thisRef","html_container","html_element","render_item","multiClose","tokenize","letter","words","escape_regex","DIACRITICS","is_array","token_count","prepareSearch","field_count","scoreValue","token","scoreObject","getattr","sum","getSortFunction","fields_count","multiplier","multipliers","get_field","implicit_score","sort_empty","cmp","option_fields","option_sort","option_sort_empty","fn_sort","fn_score","limit","asciifold","chunk","foreignletters","lookup","foreignletter","Interface","requested","utils","loadPlugin","vArg","mobileSearchActivationBtn","mobileSearchBackBtn","nav","reloadTurbolinks","webpackContext","req","webpackContextResolve","__webpack_require__","createConsumer","getURLDetails","searchParams","qs","sorted","reduce","acc","arrayFormat","skipNulls","baseURL","URLSearchParams","CalendarEventChannel","currentOrgId","organization_id","eventCreateDelegate","addEvent","updateEvent","destroyEvent","eventModifyDelegate","metadata","update_type","updateCurrent","updateThisAndFollowing","updateAll","eventDestroyDelegate","removal_type","destroyCurrent","destroyThisAndFollowing","destroyAll","calendar","CalendarEventsChannel","orgid","acknowledge","messageId","message_id","icons","dis_cal","batchRendering","existingEvent","getEventById","iconsContainer","CalendarResourcesChannel","calendarSettings","mainCalendar","isAdmin","resources","getResourceById","addResource","replaceCamelKeyWithSnake","snake","mungeAllowedParams","allowed","nextUntil","endId","siblings","truncateString","ordinal","brandColors","ambikiBlue","ambikiSalmon","ambikiPink","ambikiTurquoise","ambikiYellow","IDLE","CREATING_SESSION","SYNCING_PATIENTS","READY","ERROR","LOCAL_STORAGE_KEY","Intl","DateTimeFormat","resolvedOptions","timeZone","isFunction","isHexCode","channels","RemoveFields","firstDelete","fieldParent","selectComponents","removeButtons","visibleElements","requiredElements","deleteField","GoalEditorSetup","trix","AttachmentUpload","directUploadUrl","directUploadDidComplete","setUploadProgress","sgid","attachable_sgid","createBlobUrl","signedId","blobUrlTemplate"],"mappings":"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","file":"js/front_pages-ae4bc9909b2ac3ddec05.chunk.js","sourcesContent":["function defineCustomElement(module, identifier) {\n  const definition = module.default;\n  const { name } = definition;\n  if (typeof definition !== 'function') return;\n\n  if (!window.customElements.get(identifier)) {\n    window[name] = definition;\n    window.customElements.define(identifier, definition);\n  }\n}\n\nfunction identifierForContextKey(key) {\n  const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[-]element\\..+?)$/) || [])[1];\n  if (logicalName) {\n    const array = logicalName.split('/');\n    return array[array.length - 1];\n  }\n\n  return false;\n}\n\nexport default function registerCustomElement(r) {\n  r.keys().forEach((key) => {\n    const identifier = identifierForContextKey(key);\n    if (identifier) {\n      defineCustomElement(r(key), identifier);\n    }\n  });\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function (global, factory) {\n  (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([\"exports\"], factory) : factory(global.ActiveStorage = {});\n})(this, function (exports) {\n  \"use strict\";\n\n  function createCommonjsModule(fn, module) {\n    return module = {\n      exports: {}\n    }, fn(module, module.exports), module.exports;\n  }\n\n  var sparkMd5 = createCommonjsModule(function (module, exports) {\n    (function (factory) {\n      {\n        module.exports = factory();\n      }\n    })(function (undefined) {\n      var hex_chr = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\n\n      function md5cycle(x, k) {\n        var a = x[0],\n            b = x[1],\n            c = x[2],\n            d = x[3];\n        a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[10] - 42063 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b ^ c ^ d) + k[5] - 378558 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        x[0] = a + x[0] | 0;\n        x[1] = b + x[1] | 0;\n        x[2] = c + x[2] | 0;\n        x[3] = d + x[3] | 0;\n      }\n\n      function md5blk(s) {\n        var md5blks = [],\n            i;\n\n        for (i = 0; i < 64; i += 4) {\n          md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n        }\n\n        return md5blks;\n      }\n\n      function md5blk_array(a) {\n        var md5blks = [],\n            i;\n\n        for (i = 0; i < 64; i += 4) {\n          md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n        }\n\n        return md5blks;\n      }\n\n      function md51(s) {\n        var n = s.length,\n            state = [1732584193, -271733879, -1732584194, 271733878],\n            i,\n            length,\n            tail,\n            tmp,\n            lo,\n            hi;\n\n        for (i = 64; i <= n; i += 64) {\n          md5cycle(state, md5blk(s.substring(i - 64, i)));\n        }\n\n        s = s.substring(i - 64);\n        length = s.length;\n        tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n        }\n\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n\n        if (i > 55) {\n          md5cycle(state, tail);\n\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(state, tail);\n        return state;\n      }\n\n      function md51_array(a) {\n        var n = a.length,\n            state = [1732584193, -271733879, -1732584194, 271733878],\n            i,\n            length,\n            tail,\n            tmp,\n            lo,\n            hi;\n\n        for (i = 64; i <= n; i += 64) {\n          md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n        }\n\n        a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n        length = a.length;\n        tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= a[i] << (i % 4 << 3);\n        }\n\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n\n        if (i > 55) {\n          md5cycle(state, tail);\n\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(state, tail);\n        return state;\n      }\n\n      function rhex(n) {\n        var s = \"\",\n            j;\n\n        for (j = 0; j < 4; j += 1) {\n          s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n        }\n\n        return s;\n      }\n\n      function hex(x) {\n        var i;\n\n        for (i = 0; i < x.length; i += 1) {\n          x[i] = rhex(x[i]);\n        }\n\n        return x.join(\"\");\n      }\n\n      if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n\n      if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n        (function () {\n          function clamp(val, length) {\n            val = val | 0 || 0;\n\n            if (val < 0) {\n              return Math.max(val + length, 0);\n            }\n\n            return Math.min(val, length);\n          }\n\n          ArrayBuffer.prototype.slice = function (from, to) {\n            var length = this.byteLength,\n                begin = clamp(from, length),\n                end = length,\n                num,\n                target,\n                targetArray,\n                sourceArray;\n\n            if (to !== undefined) {\n              end = clamp(to, length);\n            }\n\n            if (begin > end) {\n              return new ArrayBuffer(0);\n            }\n\n            num = end - begin;\n            target = new ArrayBuffer(num);\n            targetArray = new Uint8Array(target);\n            sourceArray = new Uint8Array(this, begin, num);\n            targetArray.set(sourceArray);\n            return target;\n          };\n        })();\n      }\n\n      function toUtf8(str) {\n        if (/[\\u0080-\\uFFFF]/.test(str)) {\n          str = unescape(encodeURIComponent(str));\n        }\n\n        return str;\n      }\n\n      function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n        var length = str.length,\n            buff = new ArrayBuffer(length),\n            arr = new Uint8Array(buff),\n            i;\n\n        for (i = 0; i < length; i += 1) {\n          arr[i] = str.charCodeAt(i);\n        }\n\n        return returnUInt8Array ? arr : buff;\n      }\n\n      function arrayBuffer2Utf8Str(buff) {\n        return String.fromCharCode.apply(null, new Uint8Array(buff));\n      }\n\n      function concatenateArrayBuffers(first, second, returnUInt8Array) {\n        var result = new Uint8Array(first.byteLength + second.byteLength);\n        result.set(new Uint8Array(first));\n        result.set(new Uint8Array(second), first.byteLength);\n        return returnUInt8Array ? result : result.buffer;\n      }\n\n      function hexToBinaryString(hex) {\n        var bytes = [],\n            length = hex.length,\n            x;\n\n        for (x = 0; x < length - 1; x += 2) {\n          bytes.push(parseInt(hex.substr(x, 2), 16));\n        }\n\n        return String.fromCharCode.apply(String, bytes);\n      }\n\n      function SparkMD5() {\n        this.reset();\n      }\n\n      SparkMD5.prototype.append = function (str) {\n        this.appendBinary(toUtf8(str));\n        return this;\n      };\n\n      SparkMD5.prototype.appendBinary = function (contents) {\n        this._buff += contents;\n        this._length += contents.length;\n        var length = this._buff.length,\n            i;\n\n        for (i = 64; i <= length; i += 64) {\n          md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n        }\n\n        this._buff = this._buff.substring(i - 64);\n        return this;\n      };\n\n      SparkMD5.prototype.end = function (raw) {\n        var buff = this._buff,\n            length = buff.length,\n            i,\n            tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n            ret;\n\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n        }\n\n        this._finish(tail, length);\n\n        ret = hex(this._hash);\n\n        if (raw) {\n          ret = hexToBinaryString(ret);\n        }\n\n        this.reset();\n        return ret;\n      };\n\n      SparkMD5.prototype.reset = function () {\n        this._buff = \"\";\n        this._length = 0;\n        this._hash = [1732584193, -271733879, -1732584194, 271733878];\n        return this;\n      };\n\n      SparkMD5.prototype.getState = function () {\n        return {\n          buff: this._buff,\n          length: this._length,\n          hash: this._hash\n        };\n      };\n\n      SparkMD5.prototype.setState = function (state) {\n        this._buff = state.buff;\n        this._length = state.length;\n        this._hash = state.hash;\n        return this;\n      };\n\n      SparkMD5.prototype.destroy = function () {\n        delete this._hash;\n        delete this._buff;\n        delete this._length;\n      };\n\n      SparkMD5.prototype._finish = function (tail, length) {\n        var i = length,\n            tmp,\n            lo,\n            hi;\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n\n        if (i > 55) {\n          md5cycle(this._hash, tail);\n\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n\n        tmp = this._length * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(this._hash, tail);\n      };\n\n      SparkMD5.hash = function (str, raw) {\n        return SparkMD5.hashBinary(toUtf8(str), raw);\n      };\n\n      SparkMD5.hashBinary = function (content, raw) {\n        var hash = md51(content),\n            ret = hex(hash);\n        return raw ? hexToBinaryString(ret) : ret;\n      };\n\n      SparkMD5.ArrayBuffer = function () {\n        this.reset();\n      };\n\n      SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n        var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n            length = buff.length,\n            i;\n        this._length += arr.byteLength;\n\n        for (i = 64; i <= length; i += 64) {\n          md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n        }\n\n        this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n        return this;\n      };\n\n      SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n        var buff = this._buff,\n            length = buff.length,\n            tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n            i,\n            ret;\n\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= buff[i] << (i % 4 << 3);\n        }\n\n        this._finish(tail, length);\n\n        ret = hex(this._hash);\n\n        if (raw) {\n          ret = hexToBinaryString(ret);\n        }\n\n        this.reset();\n        return ret;\n      };\n\n      SparkMD5.ArrayBuffer.prototype.reset = function () {\n        this._buff = new Uint8Array(0);\n        this._length = 0;\n        this._hash = [1732584193, -271733879, -1732584194, 271733878];\n        return this;\n      };\n\n      SparkMD5.ArrayBuffer.prototype.getState = function () {\n        var state = SparkMD5.prototype.getState.call(this);\n        state.buff = arrayBuffer2Utf8Str(state.buff);\n        return state;\n      };\n\n      SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n        state.buff = utf8Str2ArrayBuffer(state.buff, true);\n        return SparkMD5.prototype.setState.call(this, state);\n      };\n\n      SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n      SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n\n      SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n        var hash = md51_array(new Uint8Array(arr)),\n            ret = hex(hash);\n        return raw ? hexToBinaryString(ret) : ret;\n      };\n\n      return SparkMD5;\n    });\n  });\n\n  var classCallCheck = function classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  };\n\n  var createClass = function () {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n\n    return function (Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  }();\n\n  var fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n\n  var FileChecksum = function () {\n    createClass(FileChecksum, null, [{\n      key: \"create\",\n      value: function create(file, callback) {\n        var instance = new FileChecksum(file);\n        instance.create(callback);\n      }\n    }]);\n\n    function FileChecksum(file) {\n      classCallCheck(this, FileChecksum);\n      this.file = file;\n      this.chunkSize = 2097152;\n      this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n      this.chunkIndex = 0;\n    }\n\n    createClass(FileChecksum, [{\n      key: \"create\",\n      value: function create(callback) {\n        var _this = this;\n\n        this.callback = callback;\n        this.md5Buffer = new sparkMd5.ArrayBuffer();\n        this.fileReader = new FileReader();\n        this.fileReader.addEventListener(\"load\", function (event) {\n          return _this.fileReaderDidLoad(event);\n        });\n        this.fileReader.addEventListener(\"error\", function (event) {\n          return _this.fileReaderDidError(event);\n        });\n        this.readNextChunk();\n      }\n    }, {\n      key: \"fileReaderDidLoad\",\n      value: function fileReaderDidLoad(event) {\n        this.md5Buffer.append(event.target.result);\n\n        if (!this.readNextChunk()) {\n          var binaryDigest = this.md5Buffer.end(true);\n          var base64digest = btoa(binaryDigest);\n          this.callback(null, base64digest);\n        }\n      }\n    }, {\n      key: \"fileReaderDidError\",\n      value: function fileReaderDidError(event) {\n        this.callback(\"Error reading \" + this.file.name);\n      }\n    }, {\n      key: \"readNextChunk\",\n      value: function readNextChunk() {\n        if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n          var start = this.chunkIndex * this.chunkSize;\n          var end = Math.min(start + this.chunkSize, this.file.size);\n          var bytes = fileSlice.call(this.file, start, end);\n          this.fileReader.readAsArrayBuffer(bytes);\n          this.chunkIndex++;\n          return true;\n        } else {\n          return false;\n        }\n      }\n    }]);\n    return FileChecksum;\n  }();\n\n  function getMetaValue(name) {\n    var element = findElement(document.head, 'meta[name=\"' + name + '\"]');\n\n    if (element) {\n      return element.getAttribute(\"content\");\n    }\n  }\n\n  function findElements(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n\n    var elements = root.querySelectorAll(selector);\n    return toArray$1(elements);\n  }\n\n  function findElement(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n\n    return root.querySelector(selector);\n  }\n\n  function dispatchEvent(element, type) {\n    var eventInit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var disabled = element.disabled;\n    var bubbles = eventInit.bubbles,\n        cancelable = eventInit.cancelable,\n        detail = eventInit.detail;\n    var event = document.createEvent(\"Event\");\n    event.initEvent(type, bubbles || true, cancelable || true);\n    event.detail = detail || {};\n\n    try {\n      element.disabled = false;\n      element.dispatchEvent(event);\n    } finally {\n      element.disabled = disabled;\n    }\n\n    return event;\n  }\n\n  function toArray$1(value) {\n    if (Array.isArray(value)) {\n      return value;\n    } else if (Array.from) {\n      return Array.from(value);\n    } else {\n      return [].slice.call(value);\n    }\n  }\n\n  var BlobRecord = function () {\n    function BlobRecord(file, checksum, url) {\n      var _this = this;\n\n      classCallCheck(this, BlobRecord);\n      this.file = file;\n      this.attributes = {\n        filename: file.name,\n        content_type: file.type || \"application/octet-stream\",\n        byte_size: file.size,\n        checksum: checksum\n      };\n      this.xhr = new XMLHttpRequest();\n      this.xhr.open(\"POST\", url, true);\n      this.xhr.responseType = \"json\";\n      this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n      this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n      this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n      var csrfToken = getMetaValue(\"csrf-token\");\n\n      if (csrfToken != undefined) {\n        this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n      }\n\n      this.xhr.addEventListener(\"load\", function (event) {\n        return _this.requestDidLoad(event);\n      });\n      this.xhr.addEventListener(\"error\", function (event) {\n        return _this.requestDidError(event);\n      });\n    }\n\n    createClass(BlobRecord, [{\n      key: \"create\",\n      value: function create(callback) {\n        this.callback = callback;\n        this.xhr.send(JSON.stringify({\n          blob: this.attributes\n        }));\n      }\n    }, {\n      key: \"requestDidLoad\",\n      value: function requestDidLoad(event) {\n        if (this.status >= 200 && this.status < 300) {\n          var response = this.response;\n          var direct_upload = response.direct_upload;\n          delete response.direct_upload;\n          this.attributes = response;\n          this.directUploadData = direct_upload;\n          this.callback(null, this.toJSON());\n        } else {\n          this.requestDidError(event);\n        }\n      }\n    }, {\n      key: \"requestDidError\",\n      value: function requestDidError(event) {\n        this.callback('Error creating Blob for \"' + this.file.name + '\". Status: ' + this.status);\n      }\n    }, {\n      key: \"toJSON\",\n      value: function toJSON() {\n        var result = {};\n\n        for (var key in this.attributes) {\n          result[key] = this.attributes[key];\n        }\n\n        return result;\n      }\n    }, {\n      key: \"status\",\n      get: function get$$1() {\n        return this.xhr.status;\n      }\n    }, {\n      key: \"response\",\n      get: function get$$1() {\n        var _xhr = this.xhr,\n            responseType = _xhr.responseType,\n            response = _xhr.response;\n\n        if (responseType == \"json\") {\n          return response;\n        } else {\n          return JSON.parse(response);\n        }\n      }\n    }]);\n    return BlobRecord;\n  }();\n\n  var BlobUpload = function () {\n    function BlobUpload(blob) {\n      var _this = this;\n\n      classCallCheck(this, BlobUpload);\n      this.blob = blob;\n      this.file = blob.file;\n      var _blob$directUploadDat = blob.directUploadData,\n          url = _blob$directUploadDat.url,\n          headers = _blob$directUploadDat.headers;\n      this.xhr = new XMLHttpRequest();\n      this.xhr.open(\"PUT\", url, true);\n      this.xhr.responseType = \"text\";\n\n      for (var key in headers) {\n        this.xhr.setRequestHeader(key, headers[key]);\n      }\n\n      this.xhr.addEventListener(\"load\", function (event) {\n        return _this.requestDidLoad(event);\n      });\n      this.xhr.addEventListener(\"error\", function (event) {\n        return _this.requestDidError(event);\n      });\n    }\n\n    createClass(BlobUpload, [{\n      key: \"create\",\n      value: function create(callback) {\n        this.callback = callback;\n        this.xhr.send(this.file.slice());\n      }\n    }, {\n      key: \"requestDidLoad\",\n      value: function requestDidLoad(event) {\n        var _xhr = this.xhr,\n            status = _xhr.status,\n            response = _xhr.response;\n\n        if (status >= 200 && status < 300) {\n          this.callback(null, response);\n        } else {\n          this.requestDidError(event);\n        }\n      }\n    }, {\n      key: \"requestDidError\",\n      value: function requestDidError(event) {\n        this.callback('Error storing \"' + this.file.name + '\". Status: ' + this.xhr.status);\n      }\n    }]);\n    return BlobUpload;\n  }();\n\n  var id = 0;\n\n  var DirectUpload = function () {\n    function DirectUpload(file, url, delegate) {\n      classCallCheck(this, DirectUpload);\n      this.id = ++id;\n      this.file = file;\n      this.url = url;\n      this.delegate = delegate;\n    }\n\n    createClass(DirectUpload, [{\n      key: \"create\",\n      value: function create(callback) {\n        var _this = this;\n\n        FileChecksum.create(this.file, function (error, checksum) {\n          if (error) {\n            callback(error);\n            return;\n          }\n\n          var blob = new BlobRecord(_this.file, checksum, _this.url);\n          notify(_this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n          blob.create(function (error) {\n            if (error) {\n              callback(error);\n            } else {\n              var upload = new BlobUpload(blob);\n              notify(_this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n              upload.create(function (error) {\n                if (error) {\n                  callback(error);\n                } else {\n                  callback(null, blob.toJSON());\n                }\n              });\n            }\n          });\n        });\n      }\n    }]);\n    return DirectUpload;\n  }();\n\n  function notify(object, methodName) {\n    if (object && typeof object[methodName] == \"function\") {\n      for (var _len = arguments.length, messages = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n        messages[_key - 2] = arguments[_key];\n      }\n\n      return object[methodName].apply(object, messages);\n    }\n  }\n\n  var DirectUploadController = function () {\n    function DirectUploadController(input, file) {\n      classCallCheck(this, DirectUploadController);\n      this.input = input;\n      this.file = file;\n      this.directUpload = new DirectUpload(this.file, this.url, this);\n      this.dispatch(\"initialize\");\n    }\n\n    createClass(DirectUploadController, [{\n      key: \"start\",\n      value: function start(callback) {\n        var _this = this;\n\n        var hiddenInput = document.createElement(\"input\");\n        hiddenInput.type = \"hidden\";\n        hiddenInput.name = this.input.name;\n        this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n        this.dispatch(\"start\");\n        this.directUpload.create(function (error, attributes) {\n          if (error) {\n            hiddenInput.parentNode.removeChild(hiddenInput);\n\n            _this.dispatchError(error);\n          } else {\n            hiddenInput.value = attributes.signed_id;\n          }\n\n          _this.dispatch(\"end\");\n\n          callback(error);\n        });\n      }\n    }, {\n      key: \"uploadRequestDidProgress\",\n      value: function uploadRequestDidProgress(event) {\n        var progress = event.loaded / event.total * 100;\n\n        if (progress) {\n          this.dispatch(\"progress\", {\n            progress: progress\n          });\n        }\n      }\n    }, {\n      key: \"dispatch\",\n      value: function dispatch(name) {\n        var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        detail.file = this.file;\n        detail.id = this.directUpload.id;\n        return dispatchEvent(this.input, \"direct-upload:\" + name, {\n          detail: detail\n        });\n      }\n    }, {\n      key: \"dispatchError\",\n      value: function dispatchError(error) {\n        var event = this.dispatch(\"error\", {\n          error: error\n        });\n\n        if (!event.defaultPrevented) {\n          alert(error);\n        }\n      }\n    }, {\n      key: \"directUploadWillCreateBlobWithXHR\",\n      value: function directUploadWillCreateBlobWithXHR(xhr) {\n        this.dispatch(\"before-blob-request\", {\n          xhr: xhr\n        });\n      }\n    }, {\n      key: \"directUploadWillStoreFileWithXHR\",\n      value: function directUploadWillStoreFileWithXHR(xhr) {\n        var _this2 = this;\n\n        this.dispatch(\"before-storage-request\", {\n          xhr: xhr\n        });\n        xhr.upload.addEventListener(\"progress\", function (event) {\n          return _this2.uploadRequestDidProgress(event);\n        });\n      }\n    }, {\n      key: \"url\",\n      get: function get$$1() {\n        return this.input.getAttribute(\"data-direct-upload-url\");\n      }\n    }]);\n    return DirectUploadController;\n  }();\n\n  var inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n\n  var DirectUploadsController = function () {\n    function DirectUploadsController(form) {\n      classCallCheck(this, DirectUploadsController);\n      this.form = form;\n      this.inputs = findElements(form, inputSelector).filter(function (input) {\n        return input.files.length;\n      });\n    }\n\n    createClass(DirectUploadsController, [{\n      key: \"start\",\n      value: function start(callback) {\n        var _this = this;\n\n        var controllers = this.createDirectUploadControllers();\n\n        var startNextController = function startNextController() {\n          var controller = controllers.shift();\n\n          if (controller) {\n            controller.start(function (error) {\n              if (error) {\n                callback(error);\n\n                _this.dispatch(\"end\");\n              } else {\n                startNextController();\n              }\n            });\n          } else {\n            callback();\n\n            _this.dispatch(\"end\");\n          }\n        };\n\n        this.dispatch(\"start\");\n        startNextController();\n      }\n    }, {\n      key: \"createDirectUploadControllers\",\n      value: function createDirectUploadControllers() {\n        var controllers = [];\n        this.inputs.forEach(function (input) {\n          toArray$1(input.files).forEach(function (file) {\n            var controller = new DirectUploadController(input, file);\n            controllers.push(controller);\n          });\n        });\n        return controllers;\n      }\n    }, {\n      key: \"dispatch\",\n      value: function dispatch(name) {\n        var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        return dispatchEvent(this.form, \"direct-uploads:\" + name, {\n          detail: detail\n        });\n      }\n    }]);\n    return DirectUploadsController;\n  }();\n\n  var processingAttribute = \"data-direct-uploads-processing\";\n  var submitButtonsByForm = new WeakMap();\n  var started = false;\n\n  function start() {\n    if (!started) {\n      started = true;\n      document.addEventListener(\"click\", didClick, true);\n      document.addEventListener(\"submit\", didSubmitForm);\n      document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n    }\n  }\n\n  function didClick(event) {\n    var target = event.target;\n\n    if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n      submitButtonsByForm.set(target.form, target);\n    }\n  }\n\n  function didSubmitForm(event) {\n    handleFormSubmissionEvent(event);\n  }\n\n  function didSubmitRemoteElement(event) {\n    if (event.target.tagName == \"FORM\") {\n      handleFormSubmissionEvent(event);\n    }\n  }\n\n  function handleFormSubmissionEvent(event) {\n    var form = event.target;\n\n    if (form.hasAttribute(processingAttribute)) {\n      event.preventDefault();\n      return;\n    }\n\n    var controller = new DirectUploadsController(form);\n    var inputs = controller.inputs;\n\n    if (inputs.length) {\n      event.preventDefault();\n      form.setAttribute(processingAttribute, \"\");\n      inputs.forEach(disable);\n      controller.start(function (error) {\n        form.removeAttribute(processingAttribute);\n\n        if (error) {\n          inputs.forEach(enable);\n        } else {\n          submitForm(form);\n        }\n      });\n    }\n  }\n\n  function submitForm(form) {\n    var button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n\n    if (button) {\n      var _button = button,\n          disabled = _button.disabled;\n      button.disabled = false;\n      button.focus();\n      button.click();\n      button.disabled = disabled;\n    } else {\n      button = document.createElement(\"input\");\n      button.type = \"submit\";\n      button.style.display = \"none\";\n      form.appendChild(button);\n      button.click();\n      form.removeChild(button);\n    }\n\n    submitButtonsByForm.delete(form);\n  }\n\n  function disable(input) {\n    input.disabled = true;\n  }\n\n  function enable(input) {\n    input.disabled = false;\n  }\n\n  function autostart() {\n    if (window.ActiveStorage) {\n      start();\n    }\n  }\n\n  setTimeout(autostart, 1);\n  exports.start = start;\n  exports.DirectUpload = DirectUpload;\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n});","// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\nimport axios from 'axios';\nimport debounce from 'lodash.debounce';\nimport StrongPassword from '../helpers/strongPassword';\nimport '../controllers/front_pages_index';\nimport 'lib/tooltip';\n\nimport registerCustomElement from '../custom-elements/helpers/registerCustomElement';\nimport 'bootstrap-icons/font/bootstrap-icons.css';\nimport '../stylesheets/front_pages.scss';\n\nrequire.context('../fonts/', true, /\\.(eot|ttf|woff|woff2|otf)$/i);\n\nrequire('@rails/ujs').start();\nconst Turbolinks = require('turbolinks');\nrequire('../helpers/nested-fields/addFields');\nrequire('../helpers/nested-fields/removeFields');\nconst selectize = require('selectize');\nrequire('@rails/activestorage').start();\nrequire('channels');\nrequire('bootstrap');\nrequire('../lib/autocomplete');\nrequire('helpers/trix-editors');\nrequire('@rails/actiontext');\nrequire('../lib/mobile-search');\n\nTurbolinks.start();\nrequire('../lib/turbolinks-reloader');\n\n// Issue: Turbolinks does not reset scroll position when a new link is clicked\n// Try clicking a link the footer to reproduce.\n// Using window.scrollTo(0, 0) causes the page to jump to top of the current page before loading\n// the new page which is jarring.\n// https://github.com/turbolinks/turbolinks/issues/181\n\nif (document.querySelector('meta[name=\"csrf-token\"]')) {\n  axios.defaults.headers.common['X-CSRF-Token'] = document\n    .querySelector('meta[name=\"csrf-token\"]')\n    .getAttribute('content');\n}\n\n// If using a third party plugin like selectize.js that manipulates the DOM,\n// unhook it from the elements it's attached to before turbolinks caches it.\ndocument.addEventListener('turbolinks:before-cache', () => {\n  $('.selectized').each(function () {\n    if (this.selectize) {\n      this.selectize.destroy();\n    }\n  });\n});\n\n(function () {\n  // Tell the browser not to handle scrolling when restoring via the history or when reloading\n  if ('scrollRestoration' in history) history.scrollRestoration = 'manual';\n\n  const SCROLL_POSITION = 'scroll-position';\n  const PAGE_INVALIDATED = 'page-invalidated';\n\n  // Patch the reload method to flag that the following page load originated from the page being invalidated\n  Turbolinks.BrowserAdapter.prototype.reload = function () {\n    sessionStorage.setItem(PAGE_INVALIDATED, 'true');\n    location.reload();\n  };\n\n  // Persist the scroll position when leaving a page\n  addEventListener('beforeunload', () => {\n    sessionStorage.setItem(\n      SCROLL_POSITION,\n      JSON.stringify({\n        scrollX,\n        scrollY,\n        location: location.href,\n      })\n    );\n  });\n\n  // When a page is fully loaded:\n  // 1. Get the persisted scroll position\n  // 2. If the locations match and the load did not originate from a page invalidation, scroll to the persisted position\n  // 3. Remove the persisted information\n  addEventListener('DOMContentLoaded', (event) => {\n    const scrollPosition = JSON.parse(sessionStorage.getItem(SCROLL_POSITION));\n\n    if (shouldScroll(scrollPosition)) {\n      scrollTo(scrollPosition.scrollX, scrollPosition.scrollY);\n    }\n\n    sessionStorage.removeItem(SCROLL_POSITION);\n    sessionStorage.removeItem(PAGE_INVALIDATED);\n  });\n\n  function shouldScroll(scrollPosition) {\n    return (\n      scrollPosition &&\n      scrollPosition.location === location.href &&\n      !JSON.parse(sessionStorage.getItem(PAGE_INVALIDATED))\n    );\n  }\n})();\n\ndocument.addEventListener('turbolinks:load', () => {\n  registerCustomElement(require.context('../custom-elements', true, /details-dialog-element\\.js$/));\n  registerCustomElement(require.context('../custom-elements', true, /command-palette-.*element\\.js$/));\n\n  // messages form relies on this to reupdate form when changes are made\n  $('.m-select.filterable')\n    .selectize({\n      create: false,\n      sortField: 'id',\n    })\n    .on('change', (e) => {\n      e.target.dispatchEvent(new Event('selectize-change'));\n    });\n\n  // set up selectize filterables\n  $('.select.filterable')\n    .selectize({\n      create: false,\n      sortField: 'id',\n    })\n    .on('change', (e) => {\n      // The below will check for an element that we would like to toggle based on an item selected.\n      // The toggable element must have the below class and should have it's id set to the value\n      // of the dropdown select item.\n      const toggleElement = document.querySelector('.select-toggle-element');\n      if (!toggleElement) return;\n\n      const valueToMatch = toggleElement.id;\n\n      if (valueToMatch === e.target.value) {\n        toggleElement.classList.remove('d-none');\n\n        if (toggleElement.classList.contains('add-required')) {\n          toggleElement.required = true;\n        }\n      } else {\n        toggleElement.classList.add('d-none');\n\n        if (toggleElement.classList.contains('add-required')) {\n          toggleElement.required = false;\n        }\n      }\n    });\n\n  // Setup multi select with selectize().\n  $('.multi-select').selectize({\n    create: false,\n    plugins: ['remove_button'],\n    searchField: ['text', 'optgroup'],\n    delimiter: ',',\n  });\n\n  // mount selectize\n  $('.select.filterable-text')\n    .selectize({\n      create: false,\n      sortField: 'text',\n    })\n    .on('change', (e) => {\n      // The below will check for an element that we would like to toggle based on an item selected.\n      // The toggable element must have the below class and should have it's id set to the value\n      // of the dropdown select item.\n      const toggleElement = document.querySelector('.select-toggle-element');\n      if (!toggleElement) return;\n\n      const valueToMatch = toggleElement.id;\n\n      if (valueToMatch === e.target.value) {\n        toggleElement.classList.remove('d-none');\n\n        if (toggleElement.classList.contains('add-required')) {\n          toggleElement.required = true;\n        }\n      } else {\n        toggleElement.classList.add('d-none');\n\n        if (toggleElement.classList.contains('add-required')) {\n          toggleElement.required = false;\n        }\n      }\n    });\n\n  if (!selectize.prototype.positionDropdownOriginal) {\n    selectize.prototype.positionDropdownOriginal = selectize.prototype.positionDropdown;\n    selectize.prototype.positionDropdown = function () {\n      if (this.settings.dropdownDirection === 'up') {\n        const { $control } = this;\n        const offset = this.settings.dropdownParent === 'body' ? $control.offset() : $control.position();\n\n        this.$dropdown.css({\n          width: $control.outerWidth(),\n          top: offset.top - this.$dropdown.outerHeight(),\n          left: offset.left,\n        });\n        this.$dropdown.addClass(`direction-${this.settings.dropdownDirection}`);\n        this.$control.addClass(`direction-${this.settings.dropdownDirection}`);\n        this.$wrapper.addClass(`direction-${this.settings.dropdownDirection}`);\n      } else {\n        selectize.prototype.positionDropdownOriginal.apply(this, arguments);\n      }\n    };\n  }\n\n  $('.select.filterable-text-up').selectize({\n    create: false,\n    sortField: 'text',\n    dropdownDirection: 'up',\n  });\n\n  if (document.getElementById('taxonomy-container')) {\n    // https://stackoverflow.com/a/59495659/1276696\n    window.pageJSLoading = true;\n    import('../pages/taxonomy').then((module) => {\n      const taxonomy = module.default;\n      if (taxonomy !== undefined) taxonomy();\n      window.pageJSLoading = false;\n    }); // webpack will load this JS async\n  }\n\n  // Strong Password\n  const passwordInput = document.getElementById('password_validator');\n  const passConfirmInput = document.getElementById('user_password_confirmation');\n  const termsAndPrivacyAgreement = document.getElementById('terms_and_privacy_agreement');\n  if (passwordInput && !termsAndPrivacyAgreement) {\n    // Non-sign up page (password reset, etc.)\n    const sp = new StrongPassword({ container: passwordInput });\n    const debouncedQuery = debounce(() => {\n      sp.validate(passwordInput.value).then((valid) => {\n        passwordInput.form.querySelector('input[type=\"submit\"]').disabled = !valid;\n      });\n    }, 200);\n    passwordInput.addEventListener('keyup', debouncedQuery);\n    passwordInput.addEventListener('change', debouncedQuery);\n    if (passConfirmInput) {\n      const confirmInput = () => {\n        const valid = sp.matches(passConfirmInput.value);\n        passwordInput.form.querySelector('input[type=\"submit\"]').disabled = !valid;\n      };\n      passConfirmInput.addEventListener('keyup', confirmInput);\n      passConfirmInput.addEventListener('change', confirmInput);\n    }\n  } else if (passwordInput && termsAndPrivacyAgreement) {\n    // Sign-up page only. Check Terms and Privacy checkbox too.\n\n    const sp = new StrongPassword({ container: passwordInput });\n    const debouncedQuery = debounce(() => {\n      sp.validate(passwordInput.value).then((valid) => {\n        document.getElementById('sign_up_submit').dataset.passwordValid = valid;\n        const signUpButton = document.getElementById('sign_up_submit');\n        document.getElementById('sign_up_submit').disabled = !(\n          signUpButton.dataset.agreeToTermsAndPrivacy === 'true' &&\n          signUpButton.dataset.passwordValid === 'true' &&\n          signUpButton.dataset.buttonEnable === 'true'\n        );\n      });\n    }, 200);\n    passwordInput.addEventListener('keyup', debouncedQuery);\n    passwordInput.addEventListener('change', debouncedQuery);\n    if (passConfirmInput) {\n      const confirmInput = () => {\n        const valid = sp.matches(passConfirmInput.value);\n        document.getElementById('sign_up_submit').dataset.passwordValid = valid;\n        const signUpButton = document.getElementById('sign_up_submit');\n        document.getElementById('sign_up_submit').disabled = !(\n          signUpButton.dataset.agreeToTermsAndPrivacy === 'true' &&\n          signUpButton.dataset.passwordValid === 'true' &&\n          signUpButton.dataset.buttonEnable === 'true'\n        );\n      };\n      passConfirmInput.addEventListener('keyup', confirmInput);\n      passConfirmInput.addEventListener('change', confirmInput);\n    }\n\n    if (termsAndPrivacyAgreement) {\n      termsAndPrivacyAgreement.addEventListener('change', (event) => {\n        document.getElementById('sign_up_submit').dataset.agreeToTermsAndPrivacy = event.target.checked;\n        const signUpButton = document.getElementById('sign_up_submit');\n        document.getElementById('sign_up_submit').disabled = !(\n          signUpButton.dataset.agreeToTermsAndPrivacy === 'true' &&\n          signUpButton.dataset.passwordValid === 'true' &&\n          signUpButton.dataset.buttonEnable === 'true'\n        );\n      });\n    }\n  }\n\n  const expandableImage = [...document.querySelectorAll('.expand-image-r')];\n  if (expandableImage.length) {\n    window.pageJSLoading = true;\n    import('../components/common/index').then((module) => {\n      const lightBoxes = module.default;\n      if (lightBoxes !== undefined) lightBoxes(expandableImage);\n      window.pageJSLoading = false;\n    });\n  }\n\n  const reg = document.getElementById('registration_modal');\n  if (reg) {\n    window.pageJSLoading = true;\n    import('../registration-modal').then((module) => {\n      module.default(reg);\n      window.pageJSLoading = false;\n    });\n  }\n\n  const sideNavCard = document.getElementById('side-navigation-card');\n  if (sideNavCard) {\n    window.pageJSLoading = true;\n    import('../components/common/SideNavIndex').then((module) => {\n      module.default(sideNavCard);\n      window.pageJSLoading = false;\n    });\n  }\n\n  // Remove unused parameters from URL in GET request by disabling the form fields\n  $('.search-get-form').submit(() => {\n    $('input').each(() => {\n      if ($(this).val() === '') {\n        $(this).attr('disabled', true);\n      }\n    });\n\n    $('select').each(() => {\n      if ($(this).val() === '' || $(this).val() === null || $(this).val() === undefined) {\n        $(this).attr('disabled', true);\n      }\n    });\n\n    $('button').each(() => {\n      $(this).attr('disabled', true);\n    });\n  });\n});\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { Controller } from \"@hotwired/stimulus\";\n\nvar src_default = /*#__PURE__*/function (_Controller) {\n  _inherits(src_default, _Controller);\n\n  var _super = _createSuper(src_default);\n\n  function src_default() {\n    _classCallCheck(this, src_default);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(src_default, [{\n    key: \"initialize\",\n    value: function initialize() {\n      this.intersectionObserverCallback = this.intersectionObserverCallback.bind(this);\n    }\n  }, {\n    key: \"connect\",\n    value: function connect() {\n      var _this = this;\n\n      this.class = this.classValue || this.defaultOptions.class || \"in\";\n      this.threshold = this.thresholdValue || this.defaultOptions.threshold || 0.1;\n      this.rootMargin = this.rootMarginValue || this.defaultOptions.rootMargin || \"0px\";\n      this.observer = new IntersectionObserver(this.intersectionObserverCallback, this.intersectionObserverOptions);\n      this.itemTargets.forEach(function (item) {\n        return _this.observer.observe(item);\n      });\n    }\n  }, {\n    key: \"disconnect\",\n    value: function disconnect() {\n      var _this2 = this;\n\n      this.itemTargets.forEach(function (item) {\n        return _this2.observer.unobserve(item);\n      });\n    }\n  }, {\n    key: \"intersectionObserverCallback\",\n    value: function intersectionObserverCallback(entries, observer) {\n      var _this3 = this;\n\n      entries.forEach(function (entry) {\n        if (entry.intersectionRatio > _this3.threshold) {\n          var target = entry.target;\n          target.classList.add(_this3.class);\n\n          if (target.dataset.delay) {\n            target.style.transitionDelay = target.dataset.delay;\n          }\n\n          observer.unobserve(target);\n        }\n      });\n    }\n  }, {\n    key: \"intersectionObserverOptions\",\n    get: function get() {\n      return {\n        threshold: this.threshold,\n        rootMargin: this.rootMargin\n      };\n    }\n  }, {\n    key: \"defaultOptions\",\n    get: function get() {\n      return {};\n    }\n  }]);\n\n  return src_default;\n}(Controller);\n\nsrc_default.targets = [\"item\"];\nsrc_default.values = {\n  class: String,\n  threshold: Number,\n  rootMargin: String\n};\nexport { src_default as default };","/**\n * Checks if `value` is empty.\n * @example\n *\n * isEmpty(null)\n * // => true\n *\n * isEmpty(true)\n * // => true\n *\n * isEmpty(1)\n * // => true\n *\n * isEmpty('abc')\n * // => false\n *\n * isEmpty({ a: 1 })\n * // => false\n *\n * isEmpty([1, 2, 3])\n * // => false\n *\n * isEmpty({})\n * // => true\n *\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport default function isEmpty(value: any): boolean {\n  if (value === null) return true;\n\n  if (Array.isArray(value)) {\n    return value.length === 0;\n  }\n\n  // eslint-disable-next-line no-restricted-syntax\n  for (const key in value) {\n    if (Object.hasOwnProperty.call(value, key)) {\n      return false;\n    }\n  }\n\n  return true;\n}\n","import { nextFrame } from 'helpers/timing';\nimport ApplicationController from './application_controller';\n\nexport default class extends ApplicationController {\n  static targets = ['focusable'];\n\n  async focus() {\n    await nextFrame();\n    if (this.hasFocusableTarget) {\n      this.focusableTarget.focus();\n    }\n  }\n}\n","import { closeOnEsc } from '../lib/helpers';\nimport ApplicationController from './application_controller';\n\nexport default class extends ApplicationController {\n  static targets = ['popEl', 'trigger'];\n\n  initialize() {\n    this.show = false;\n    this.overlay = document.getElementById('pageOverlay');\n  }\n\n  connect() {\n    this.triggerTarget.addEventListener('click', () => {\n      this.toggleElShow();\n    });\n    closeOnEsc(this.hideEl);\n    // Prevent tooltip from getting stuck in visible mode\n    $(this.triggerTarget).on('show.bs.tooltip', () => {\n      setTimeout(() => {\n        if (this.show) $(this.triggerTarget).tooltip('hide');\n      }, 1);\n    });\n  }\n\n  hideEl = () => {\n    this.show = false;\n    this.triggerTarget.classList.remove('active');\n    this.popElTarget.classList.add('d-none');\n    if (this.overlay) this.overlay.style.display = 'none';\n  };\n\n  showEl = () => {\n    this.show = true;\n    this.triggerTarget.classList.add('active');\n    this.popElTarget.classList.remove('d-none');\n    // Dispatch an event that the pop card is shown\n    // Listen (if you need to do something when this opens)\n    // for this event like data-action=\"pop-card-shown@window->functionName\"\n    const event = new CustomEvent('pop-card-shown');\n    window.dispatchEvent(event);\n    if (this.overlay) {\n      // The delay ensures overlay shows if another tray trigger is clicked\n      setTimeout(() => {\n        this.overlay.style.display = 'block';\n      }, 10);\n    }\n  };\n\n  toggleElShow = () => (this.show ? this.hideEl() : this.showEl());\n\n  closeOnOutsideClick(event) {\n    if (!this.show) return;\n    if (this.element.contains(event.target)) return;\n    this.hideEl();\n  }\n}\n","import ApplicationController from './application_controller';\n\n/**\n * @example\n *\n * <button type=\"button\" data-controller=\"toast\" data-toast-target-id-value=\"clipboard-toast\" data-action=\"toast#show\">\n *   Open toast\n * </button>\n * <div id=\"clipboard-toast\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" data-delay=\"2000\" class=\"toast toast-success hide\">\n *   <div class=\"toast-header\">\n *     <i class=\"bi bi-check-circle-fill text-success mr-2\"></i>\n *     <p class=\"mr-auto mb-0\">Copied to clipboard!</p>\n *   </div>\n * </div>\n *\n * To handle multiple toasts in a single element:\n *\n * <button type=\"button\" data-controller=\"toast\" data-toast-type-value=\"{'click': 'clipboard-toast', 'focus': 'updated-toast'}\" data-action=\"click->toast#show focus->toast#show\">\n *   Open toast\n * </button>\n */\n\nexport default class extends ApplicationController {\n  static values = { targetId: String, type: Object };\n\n  initialize() {\n    this.hide = this.hide.bind(this);\n  }\n\n  disconnect() {\n    $(this.toast).off('hidden.bs.toast', this.hide);\n  }\n\n  targetIdValueChanged(value) {\n    const toast = document.getElementById(value);\n    $(toast).on('hidden.bs.toast', this.hide);\n  }\n\n  show(event) {\n    this.setToastId(event.type);\n\n    $(this.toast).toast('show');\n    this.element.setAttribute('aria-describedby', this.toast.id);\n  }\n\n  hide() {\n    this.element.removeAttribute('aria-describedby');\n  }\n\n  // Private\n\n  setToastId(type) {\n    if (!this.hasTypeValue || !type) return;\n\n    const toastId = this.typeValue[type];\n    if (!toastId) return;\n\n    this.targetIdValue = toastId;\n  }\n\n  get toast() {\n    return document.getElementById(this.targetIdValue);\n  }\n}\n","/* eslint-disable no-return-assign */\nimport ApplicationController from './application_controller';\nimport { closeOnEsc } from '../lib/helpers';\n\nexport default class extends ApplicationController {\n  static targets = [\n    'closeBtn',\n    'dangerLink',\n    'returnMainMenu',\n    'subLevelTrayMenu',\n    'subMenuContents',\n    'subMenuTitle',\n    'subTrigger',\n    'topLevelTrayNav',\n    'trayEl',\n    'trigger',\n  ];\n\n  initialize() {\n    this.show = false;\n    this.overlay = document.getElementById('pageOverlay');\n    this.zIndexBottomEls = [...document.getElementsByClassName('behind__active-tray')];\n  }\n\n  connect() {\n    ['click'].forEach((event) => {\n      this.triggerTarget.addEventListener(event, this.toggleElShow);\n    });\n    closeOnEsc(this.hideEl);\n  }\n\n  trayElTargetConnected() {\n    ['click'].forEach((event) => {\n      this.subTriggerTargets.forEach((subTrigger) => {\n        subTrigger.addEventListener(event, () => {\n          this.showSubLevel(subTrigger);\n        });\n      });\n      if (this.hasReturnMainMenuTarget) this.returnMainMenuTarget.addEventListener(event, this.returnMainMenu);\n      if (this.hasCloseBtnTarget) this.closeBtnTarget.addEventListener(event, this.hideEl);\n\n      // Hide the sublevel menu after the click events added for the button\n      if (this.hasSubLevelTrayMenuTarget) this.subLevelTrayMenuTarget.classList.add('d-none');\n    });\n  }\n\n  hideEl = () => {\n    this.show = false;\n    document.body.style.overflow = 'inherit';\n    this.zIndexBottomEls.forEach((el) => (el.style.zIndex = 'inherit'));\n    this.trayElTarget.classList.add('d-none');\n    if (this.overlay) this.overlay.style.display = 'none';\n  };\n\n  returnMainMenu = () => {\n    // If a link could lead to an undesired result and is going to be\n    // where the user's mouse is after returning to the main nav, tmp disable it\n    if (this.hasDangerLinkTarget) {\n      this.dangerLinkTargets.forEach((link) => {\n        link.classList.add('disabled');\n        setTimeout(() => {\n          link.classList.remove('disabled');\n        }, 1500);\n      });\n    }\n    this.subLevelTrayMenuTarget.classList.add('d-none');\n    this.topLevelTrayNavTarget.classList.remove('d-none');\n  };\n\n  showEl = () => {\n    this.show = true;\n    document.body.style.overflow = 'hidden';\n    this.zIndexBottomEls.forEach((el) => (el.style.zIndex = -1));\n    if (this.overlay) {\n      // The delay ensures overlay shows if another tray trigger is clicked\n      setTimeout(() => {\n        this.overlay.style.display = 'block';\n      }, 10);\n    }\n    this.trayElTarget.classList.remove('d-none');\n  };\n\n  showSubLevel = (subTrigger) => {\n    let { menu } = subTrigger.dataset;\n    const { target } = subTrigger.dataset;\n    menu = JSON.parse(menu);\n    this.subMenuContentsTarget.innerHTML = ''; // clear out prev content\n\n    const subMenu = document.getElementById(target);\n    const subMenuContents = subMenu.childNodes;\n    subMenuContents.forEach((content) => {\n      const copy = content.cloneNode(true);\n      this.subMenuContentsTarget.appendChild(copy);\n    });\n\n    if (menu.topLevel) {\n      this.subMenuTitleTarget.innerHTML = `${menu.title} | <small>${menu.topLevel}</small>`;\n    } else {\n      this.subMenuTitleTarget.innerHTML = menu.title;\n    }\n\n    // this.subMenuContentsTarget.appendChild(subMenuContents);\n\n    this.subLevelTrayMenuTarget.classList.remove('d-none');\n    this.topLevelTrayNavTarget.classList.add('d-none');\n  };\n\n  toggleElShow = () => (this.show ? this.hideEl() : this.showEl());\n\n  closeOnOutsideClick(event) {\n    if (!this.show) return;\n    if (this.element.contains(event.target)) return;\n    this.hideEl();\n  }\n}\n","import ApplicationController from './application_controller';\n\nconst COMPACT_ATTR_NAME = 'data-sidebar-compact';\n\nexport default class extends ApplicationController {\n  static classes = ['toggle'];\n\n  connect() {\n    if (this.isTurbolinksPreview) {\n      this.renderFromCache();\n    }\n  }\n\n  disconnect() {\n    this.renderFromCache();\n  }\n\n  toggleNavSize() {\n    this.element.classList.toggle(this.toggleClass);\n    this.sidebarCache?.toggleAttribute(COMPACT_ATTR_NAME, !this.isExpanded);\n  }\n\n  // Private\n\n  renderFromCache() {\n    if (!this.sidebarCache) return;\n    this.element.classList.toggle(this.toggleClass, this.sidebarCache.hasAttribute(COMPACT_ATTR_NAME));\n  }\n\n  get isExpanded() {\n    return !this.element.classList.contains(this.toggleClass);\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  get sidebarCache() {\n    return document.getElementById('turbolinks-sidebar-cache');\n  }\n}\n","// Copy the comment below into your developer console to see the JavaScript logs from the application.\n// localStorage.setItem('logLevel', JSON.stringify(['all'])); - To get all messages. Select from options below.\n// localStorage.setItem('logLevel', JSON.stringify(['all', 'log', 'debug', 'warn', 'error']));\n\nconst logLevel = localStorage.getItem('logLevel') ? JSON.parse(localStorage.getItem('logLevel')) : [];\n\nconst log = {\n  style: 'color: #FFFFFF; padding: 2px 5px;',\n  info: (msg, ...args) => (logLevel.includes('log') || logLevel.includes('all')) && console.log(`%c${msg}`, `background: #5DADE2; ${log.style}`, ...args),\n  warn: (msg, ...args) => console.warn(`%c${msg}`, `background: #FF8C00; ${log.style}`, ...args),\n  error: (msg, ...args) => console.error(`%c${msg}`, `background: #FF0000; ${log.style}`, ...args),\n  debug: (...args) => (logLevel.includes('debug') || logLevel.includes('all')) && console.log(...args),\n};\n\nconst likeEmoji = String.fromCodePoint(0x1F44D);\nlog.info('Info level logging enabled!', likeEmoji);\nlog.debug('Debug level logging enabled!', likeEmoji);\n\nexport default log;\n","/* eslint-disable no-underscore-dangle */\nimport axios from 'axios';\nimport { constructURL } from 'helpers/url';\nimport consumer from './consumer';\nimport log from '../lib/logger';\nimport AsyncLocalStorage from '../lib/async-localstorage';\nimport * as c from '../rooms/components/seamless-swap/constants';\n\nexport default class RoomVisitorChannel {\n  constructor(options = {}) {\n    this.roomId = options.roomId;\n    this.line = options.line; // Pass in object with participant IDs\n    this.store = options.store; // Vuex store\n    this.channel = null;\n    this.isResolved = null;\n  }\n\n  init = () =>\n    new Promise((resolve) => {\n      this.isResolved = resolve;\n      this.createSubscription();\n    });\n\n  createSubscription = () => {\n    const { line, roomId, store, isResolved } = this;\n\n    this.channel = consumer.subscriptions.create(\n      {\n        channel: 'RoomVisitorChannel',\n        room: `${roomId}_${line.value}`,\n      },\n      {\n        connected() {\n          isResolved();\n          // Called when the subscription is ready for use on the server\n          log.info('Room visitor channel connected');\n          log.debug('Room visitor channel', line);\n        },\n\n        disconnected() {\n          // Called when the subscription has been terminated by the server\n        },\n\n        async received(data) {\n          // Called when there's incoming data on the websocket for this channel\n          // Create a subscription to this new channel\n          log.debug('Received visitor channel message', data);\n          if (data.type === 'message') {\n            log.debug('Visitor channel message', data);\n            const publishedTo = `${roomId}_${line.value}`;\n            if (store) {\n              store.commit('frontDeskChat/storeChatMessage', {\n                line: publishedTo,\n                id: data.id,\n                message: data.message,\n                sentBy: data.sent_by,\n              });\n              store.commit(\n                'updateVisitor',\n                {\n                  requestedHelp: false,\n                },\n                { root: true }\n              );\n            }\n          } else if (data.type === 'confirm_patient_id') {\n            // Ignore action of room owner\n            if (store.state.ownerId === store.state.visitor.id) return;\n\n            await axios.post('/api/v2/teletherapy/confirm-p', { value: data.value });\n            // reload so we can reset all subscriptions and properly show patient\n            window.location.reload();\n          } else if (data.type === 'assign_event') {\n            if (store.state.ownerId === store.state.visitor.id) return;\n\n            // `recurrenceId` should be in UTC to handle DST\n            await axios.post('/api/v2/teletherapy/confirm-a', { value: data.value, start_time: data.recurrenceId });\n            const url = constructURL(window.location.href, { recurrence_id: data.recurrenceId, t: data.id });\n            window.location.href = url;\n          } else if (data.type === 'assign_appointment') {\n            // Ignore action of room owner\n            if (store.state.ownerId === store.state.visitor.id) return;\n            await axios.post('/api/v2/teletherapy/confirm-a', { value: data.value });\n            // reload so we can reset all subscriptions and properly show patient\n            window.location.reload();\n          } else if (data.type === 'seamless_swap') {\n            if (store.state.ownerId === store.state.visitor.id) return;\n\n            const { eventId, patientId, eventStartTime } = data;\n            if (!eventId || !patientId) {\n              // Show session rating modal for non-continuing patients\n              store.commit('layout/setCallRatingVisibility', true);\n              return;\n            }\n\n            try {\n              await axios.post('/api/v2/teletherapy/confirm-a', { value: eventId, start_time: eventStartTime });\n              const { data: eventPatient } = await axios.get(`/api/v2/events/${eventId}/patients/${patientId}`, {\n                params: {\n                  recurrence_id: eventStartTime,\n                },\n              });\n\n              // localStorage item to be used in WaitingArea `sessionReadyToJoin` watcher\n              await new AsyncLocalStorage().setItem(c.LOCAL_STORAGE_KEY, 'true');\n              const url = constructURL(window.location.href, {\n                recurrence_id: eventPatient.recurrenceId,\n                t: eventPatient.id,\n              });\n              window.location.href = url;\n            } catch (error) {\n              window.location.href = '/';\n            }\n          }\n        },\n      }\n    );\n  };\n}\n","const speech = \"babd3761-8f1a-444f-8a5f-0274356dd1ea\";\nconst occupational = \"648dddb8-aff6-4ddd-a366-1ad662d015fb\";\nconst physical = \"5426ba7e-4c68-4245-8486-49cb236481e1\";\nconst feeding = \"9361c1a2-4a5d-4257-8bda-c41c15207364\";\nconst STUDENT = \"95ff432d-b431-46f3-bbf7-eae2ac43be0b\";\nconst CF_SLP = \"3c27a747-67bf-4d28-8f47-4098e363f79e\";\nconst SLP = \"5f2af811-73f4-42d1-abad-382e08fdad5b\";\nconst CCC_SLP = \"6fe1fec2-6290-4e78-8734-21f3bf483d64\";\nconst SLPA = \"10035165-37ae-4d7c-b660-ed5dcb62853b\";\nconst OTA = \"bde804e1-4781-4b01-8eb1-b8ba49fd3a67\";\nconst COTA = \"84f30885-7e8d-4ea1-92e4-cf353c0b8aad\";\nconst OTR_L = \"b0617ed7-f834-40d6-a669-c86c3416463d\";\nconst PTA = \"c7400581-49a0-4e92-9f70-0231f5577f13\";\nconst CPTA = \"2340e5cf-8ef8-481e-96a1-da0421772ec7\";\nconst PT = \"91cfc361-083a-4c45-a56f-a842c5b75118\";\n\nconst disciplines = [\n  \"babd3761-8f1a-444f-8a5f-0274356dd1ea\",\n  \"648dddb8-aff6-4ddd-a366-1ad662d015fb\",\n  \"5426ba7e-4c68-4245-8486-49cb236481e1\",\n  \"9361c1a2-4a5d-4257-8bda-c41c15207364\"\n];\n\nconst revealDisciplinesList = () => {\n  document.querySelector('#users_disciplines_div').classList.remove('d-none');\n};\n\nconst hideDisciplinesList = () => {\n  document.querySelector('#users_disciplines_div').classList.add('d-none');\n};\n\nconst resetDiscipline = (id) => {\n  document.querySelector(`#user_discipline_ids_${id}`).checked = false;\n  document.querySelector(`#user_discipline_ids_${id}`).closest('.custom-checkbox').classList.add('d-none');\n};\n\nconst resetAllDisciplines = () => {\n  for (var i = 0; i < disciplines.length; i++) {\n    resetDiscipline(disciplines[i]);\n  }\n};\n\nconst currentlyChecked = () => {\n  const checked = [];\n  for (var i = 0; i < disciplines.length; i++) {\n    var id = disciplines[i];\n    if (document.querySelector(`#user_discipline_ids_${id}:checked`) !== null) {\n      checked.push(id);\n    }\n  }\n  return checked;\n};\n\nconst showCheckbox = (id) => {\n  document.querySelector(`#user_discipline_ids_${id}`).closest('.custom-checkbox').classList.remove('d-none');\n};\n\nconst checkCheckbox = (id) => {\n  document.querySelector(`#user_discipline_ids_${id}`).checked = true;\n};\n\nconst computeDisciplines = (credentialIds, reset = true) => {\n  revealDisciplinesList();\n  const checked = currentlyChecked();\n\n  if (reset) {\n    resetAllDisciplines();\n  }\n\n  if (credentialIds.includes(STUDENT)) {\n    showCheckbox(speech);\n    if (checked.includes(speech)) { checkCheckbox(speech); }\n    showCheckbox(occupational);\n    if (checked.includes(occupational)) { checkCheckbox(occupational); }\n    showCheckbox(physical);\n    if (checked.includes(physical)) { checkCheckbox(physical); }\n    showCheckbox(feeding);\n    if (checked.includes(feeding)) { checkCheckbox(feeding); }\n  }\n\n  if (credentialIds.includes(CF_SLP) || credentialIds.includes(CCC_SLP) || credentialIds.includes(SLPA)) {\n    showCheckbox(speech);\n    if (checked.includes(speech)) { checkCheckbox(speech); }\n    showCheckbox(feeding);\n    if (checked.includes(feeding)) { checkCheckbox(feeding); }\n  }\n\n  if (credentialIds.includes(OTR_L) || credentialIds.includes(COTA) || credentialIds.includes(OTA)) {\n    // As we don't want to give them the ability to uncheck the discipline\n    // and since there will be only one checkbox option, there is no need to\n    // so this to the user\n    // showCheckbox(occupational);\n    checkCheckbox(occupational);\n    hideDisciplinesList();\n  }\n\n  if (credentialIds.includes(PT) || credentialIds.includes(PTA) || credentialIds.includes(CPTA)) {\n    // As we don't want to give them the ability to uncheck the discipline\n    // and since there will be only one checkbox option, there is no need to\n    // so this to the user\n    // showCheckbox(physical);\n    checkCheckbox(physical);\n    hideDisciplinesList();\n  }\n};\n\nexport default computeDisciplines;\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * Vue.js v2.6.14\n * (c) 2014-2021 Evan You\n * Released under the MIT License.\n */\n\n/*  */\nvar emptyObject = Object.freeze({}); // These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\n\nfunction isUndef(v) {\n  return v === undefined || v === null;\n}\n\nfunction isDef(v) {\n  return v !== undefined && v !== null;\n}\n\nfunction isTrue(v) {\n  return v === true;\n}\n\nfunction isFalse(v) {\n  return v === false;\n}\n/**\n * Check if value is primitive.\n */\n\n\nfunction isPrimitive(value) {\n  return typeof value === 'string' || typeof value === 'number' || // $flow-disable-line\n  _typeof(value) === 'symbol' || typeof value === 'boolean';\n}\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\n\n\nfunction isObject(obj) {\n  return obj !== null && _typeof(obj) === 'object';\n}\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\n\n\nvar _toString = Object.prototype.toString;\n\nfunction toRawType(value) {\n  return _toString.call(value).slice(8, -1);\n}\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\n\n\nfunction isPlainObject(obj) {\n  return _toString.call(obj) === '[object Object]';\n}\n\nfunction isRegExp(v) {\n  return _toString.call(v) === '[object RegExp]';\n}\n/**\n * Check if val is a valid array index.\n */\n\n\nfunction isValidArrayIndex(val) {\n  var n = parseFloat(String(val));\n  return n >= 0 && Math.floor(n) === n && isFinite(val);\n}\n\nfunction isPromise(val) {\n  return isDef(val) && typeof val.then === 'function' && typeof val.catch === 'function';\n}\n/**\n * Convert a value to a string that is actually rendered.\n */\n\n\nfunction toString(val) {\n  return val == null ? '' : Array.isArray(val) || isPlainObject(val) && val.toString === _toString ? JSON.stringify(val, null, 2) : String(val);\n}\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\n\n\nfunction toNumber(val) {\n  var n = parseFloat(val);\n  return isNaN(n) ? val : n;\n}\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\n\n\nfunction makeMap(str, expectsLowerCase) {\n  var map = Object.create(null);\n  var list = str.split(',');\n\n  for (var i = 0; i < list.length; i++) {\n    map[list[i]] = true;\n  }\n\n  return expectsLowerCase ? function (val) {\n    return map[val.toLowerCase()];\n  } : function (val) {\n    return map[val];\n  };\n}\n/**\n * Check if a tag is a built-in tag.\n */\n\n\nvar isBuiltInTag = makeMap('slot,component', true);\n/**\n * Check if an attribute is a reserved attribute.\n */\n\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n/**\n * Remove an item from an array.\n */\n\nfunction remove(arr, item) {\n  if (arr.length) {\n    var index = arr.indexOf(item);\n\n    if (index > -1) {\n      return arr.splice(index, 1);\n    }\n  }\n}\n/**\n * Check whether an object has the property.\n */\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction hasOwn(obj, key) {\n  return hasOwnProperty.call(obj, key);\n}\n/**\n * Create a cached version of a pure function.\n */\n\n\nfunction cached(fn) {\n  var cache = Object.create(null);\n  return function cachedFn(str) {\n    var hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n}\n/**\n * Camelize a hyphen-delimited string.\n */\n\n\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n  return str.replace(camelizeRE, function (_, c) {\n    return c ? c.toUpperCase() : '';\n  });\n});\n/**\n * Capitalize a string.\n */\n\nvar capitalize = cached(function (str) {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n});\n/**\n * Hyphenate a camelCase string.\n */\n\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n  return str.replace(hyphenateRE, '-$1').toLowerCase();\n});\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\n\nfunction polyfillBind(fn, ctx) {\n  function boundFn(a) {\n    var l = arguments.length;\n    return l ? l > 1 ? fn.apply(ctx, arguments) : fn.call(ctx, a) : fn.call(ctx);\n  }\n\n  boundFn._length = fn.length;\n  return boundFn;\n}\n\nfunction nativeBind(fn, ctx) {\n  return fn.bind(ctx);\n}\n\nvar bind = Function.prototype.bind ? nativeBind : polyfillBind;\n/**\n * Convert an Array-like object to a real Array.\n */\n\nfunction toArray(list, start) {\n  start = start || 0;\n  var i = list.length - start;\n  var ret = new Array(i);\n\n  while (i--) {\n    ret[i] = list[i + start];\n  }\n\n  return ret;\n}\n/**\n * Mix properties into target object.\n */\n\n\nfunction extend(to, _from) {\n  for (var key in _from) {\n    to[key] = _from[key];\n  }\n\n  return to;\n}\n/**\n * Merge an Array of Objects into a single Object.\n */\n\n\nfunction toObject(arr) {\n  var res = {};\n\n  for (var i = 0; i < arr.length; i++) {\n    if (arr[i]) {\n      extend(res, arr[i]);\n    }\n  }\n\n  return res;\n}\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\n\n\nfunction noop(a, b, c) {}\n/**\n * Always return false.\n */\n\n\nvar no = function no(a, b, c) {\n  return false;\n};\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\n\n\nvar identity = function identity(_) {\n  return _;\n};\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\n\n\nfunction looseEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n\n  var isObjectA = isObject(a);\n  var isObjectB = isObject(b);\n\n  if (isObjectA && isObjectB) {\n    try {\n      var isArrayA = Array.isArray(a);\n      var isArrayB = Array.isArray(b);\n\n      if (isArrayA && isArrayB) {\n        return a.length === b.length && a.every(function (e, i) {\n          return looseEqual(e, b[i]);\n        });\n      } else if (a instanceof Date && b instanceof Date) {\n        return a.getTime() === b.getTime();\n      } else if (!isArrayA && !isArrayB) {\n        var keysA = Object.keys(a);\n        var keysB = Object.keys(b);\n        return keysA.length === keysB.length && keysA.every(function (key) {\n          return looseEqual(a[key], b[key]);\n        });\n      } else {\n        /* istanbul ignore next */\n        return false;\n      }\n    } catch (e) {\n      /* istanbul ignore next */\n      return false;\n    }\n  } else if (!isObjectA && !isObjectB) {\n    return String(a) === String(b);\n  } else {\n    return false;\n  }\n}\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\n\n\nfunction looseIndexOf(arr, val) {\n  for (var i = 0; i < arr.length; i++) {\n    if (looseEqual(arr[i], val)) {\n      return i;\n    }\n  }\n\n  return -1;\n}\n/**\n * Ensure a function is called only once.\n */\n\n\nfunction once(fn) {\n  var called = false;\n  return function () {\n    if (!called) {\n      called = true;\n      fn.apply(this, arguments);\n    }\n  };\n}\n\nvar SSR_ATTR = 'data-server-rendered';\nvar ASSET_TYPES = ['component', 'directive', 'filter'];\nvar LIFECYCLE_HOOKS = ['beforeCreate', 'created', 'beforeMount', 'mounted', 'beforeUpdate', 'updated', 'beforeDestroy', 'destroyed', 'activated', 'deactivated', 'errorCaptured', 'serverPrefetch'];\n/*  */\n\nvar config = {\n  /**\n   * Option merge strategies (used in core/util/options)\n   */\n  // $flow-disable-line\n  optionMergeStrategies: Object.create(null),\n\n  /**\n   * Whether to suppress warnings.\n   */\n  silent: false,\n\n  /**\n   * Show production mode tip message on boot?\n   */\n  productionTip: process.env.NODE_ENV !== 'production',\n\n  /**\n   * Whether to enable devtools\n   */\n  devtools: process.env.NODE_ENV !== 'production',\n\n  /**\n   * Whether to record perf\n   */\n  performance: false,\n\n  /**\n   * Error handler for watcher errors\n   */\n  errorHandler: null,\n\n  /**\n   * Warn handler for watcher warns\n   */\n  warnHandler: null,\n\n  /**\n   * Ignore certain custom elements\n   */\n  ignoredElements: [],\n\n  /**\n   * Custom user key aliases for v-on\n   */\n  // $flow-disable-line\n  keyCodes: Object.create(null),\n\n  /**\n   * Check if a tag is reserved so that it cannot be registered as a\n   * component. This is platform-dependent and may be overwritten.\n   */\n  isReservedTag: no,\n\n  /**\n   * Check if an attribute is reserved so that it cannot be used as a component\n   * prop. This is platform-dependent and may be overwritten.\n   */\n  isReservedAttr: no,\n\n  /**\n   * Check if a tag is an unknown element.\n   * Platform-dependent.\n   */\n  isUnknownElement: no,\n\n  /**\n   * Get the namespace of an element\n   */\n  getTagNamespace: noop,\n\n  /**\n   * Parse the real tag name for the specific platform.\n   */\n  parsePlatformTagName: identity,\n\n  /**\n   * Check if an attribute must be bound using property, e.g. value\n   * Platform-dependent.\n   */\n  mustUseProp: no,\n\n  /**\n   * Perform updates asynchronously. Intended to be used by Vue Test Utils\n   * This will significantly reduce performance if set to false.\n   */\n  async: true,\n\n  /**\n   * Exposed for legacy reasons\n   */\n  _lifecycleHooks: LIFECYCLE_HOOKS\n};\n/*  */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\n\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n/**\n * Check if a string starts with $ or _\n */\n\nfunction isReserved(str) {\n  var c = (str + '').charCodeAt(0);\n  return c === 0x24 || c === 0x5F;\n}\n/**\n * Define a property.\n */\n\n\nfunction def(obj, key, val, enumerable) {\n  Object.defineProperty(obj, key, {\n    value: val,\n    enumerable: !!enumerable,\n    writable: true,\n    configurable: true\n  });\n}\n/**\n * Parse simple path.\n */\n\n\nvar bailRE = new RegExp(\"[^\" + unicodeRegExp.source + \".$_\\\\d]\");\n\nfunction parsePath(path) {\n  if (bailRE.test(path)) {\n    return;\n  }\n\n  var segments = path.split('.');\n  return function (obj) {\n    for (var i = 0; i < segments.length; i++) {\n      if (!obj) {\n        return;\n      }\n\n      obj = obj[segments[i]];\n    }\n\n    return obj;\n  };\n}\n/*  */\n// can we use __proto__?\n\n\nvar hasProto = ('__proto__' in {}); // Browser environment sniffing\n\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = UA && UA.indexOf('android') > 0 || weexPlatform === 'android';\nvar isIOS = UA && /iphone|ipad|ipod|ios/.test(UA) || weexPlatform === 'ios';\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/); // Firefox has a \"watch\" function on Object.prototype...\n\nvar nativeWatch = {}.watch;\nvar supportsPassive = false;\n\nif (inBrowser) {\n  try {\n    var opts = {};\n    Object.defineProperty(opts, 'passive', {\n      get: function get() {\n        /* istanbul ignore next */\n        supportsPassive = true;\n      }\n    }); // https://github.com/facebook/flow/issues/285\n\n    window.addEventListener('test-passive', null, opts);\n  } catch (e) {}\n} // this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\n\n\nvar _isServer;\n\nvar isServerRendering = function isServerRendering() {\n  if (_isServer === undefined) {\n    /* istanbul ignore if */\n    if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n      // detect presence of vue-server-renderer and avoid\n      // Webpack shimming the process\n      _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n    } else {\n      _isServer = false;\n    }\n  }\n\n  return _isServer;\n}; // detect devtools\n\n\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n/* istanbul ignore next */\n\nfunction isNative(Ctor) {\n  return typeof Ctor === 'function' && /native code/.test(Ctor.toString());\n}\n\nvar hasSymbol = typeof Symbol !== 'undefined' && isNative(Symbol) && typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */\n// $flow-disable-line\n\n\nif (typeof Set !== 'undefined' && isNative(Set)) {\n  // use native Set when available.\n  _Set = Set;\n} else {\n  // a non-standard Set polyfill that only works with primitive keys.\n  _Set = /*@__PURE__*/function () {\n    function Set() {\n      this.set = Object.create(null);\n    }\n\n    Set.prototype.has = function has(key) {\n      return this.set[key] === true;\n    };\n\n    Set.prototype.add = function add(key) {\n      this.set[key] = true;\n    };\n\n    Set.prototype.clear = function clear() {\n      this.set = Object.create(null);\n    };\n\n    return Set;\n  }();\n}\n/*  */\n\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = noop; // work around flow check\n\nvar formatComponentName = noop;\n\nif (process.env.NODE_ENV !== 'production') {\n  var hasConsole = typeof console !== 'undefined';\n  var classifyRE = /(?:^|[-_])(\\w)/g;\n\n  var classify = function classify(str) {\n    return str.replace(classifyRE, function (c) {\n      return c.toUpperCase();\n    }).replace(/[-_]/g, '');\n  };\n\n  warn = function warn(msg, vm) {\n    var trace = vm ? generateComponentTrace(vm) : '';\n\n    if (config.warnHandler) {\n      config.warnHandler.call(null, msg, vm, trace);\n    } else if (hasConsole && !config.silent) {\n      console.error(\"[Vue warn]: \" + msg + trace);\n    }\n  };\n\n  tip = function tip(msg, vm) {\n    if (hasConsole && !config.silent) {\n      console.warn(\"[Vue tip]: \" + msg + (vm ? generateComponentTrace(vm) : ''));\n    }\n  };\n\n  formatComponentName = function formatComponentName(vm, includeFile) {\n    if (vm.$root === vm) {\n      return '<Root>';\n    }\n\n    var options = typeof vm === 'function' && vm.cid != null ? vm.options : vm._isVue ? vm.$options || vm.constructor.options : vm;\n    var name = options.name || options._componentTag;\n    var file = options.__file;\n\n    if (!name && file) {\n      var match = file.match(/([^/\\\\]+)\\.vue$/);\n      name = match && match[1];\n    }\n\n    return (name ? \"<\" + classify(name) + \">\" : \"<Anonymous>\") + (file && includeFile !== false ? \" at \" + file : '');\n  };\n\n  var repeat = function repeat(str, n) {\n    var res = '';\n\n    while (n) {\n      if (n % 2 === 1) {\n        res += str;\n      }\n\n      if (n > 1) {\n        str += str;\n      }\n\n      n >>= 1;\n    }\n\n    return res;\n  };\n\n  generateComponentTrace = function generateComponentTrace(vm) {\n    if (vm._isVue && vm.$parent) {\n      var tree = [];\n      var currentRecursiveSequence = 0;\n\n      while (vm) {\n        if (tree.length > 0) {\n          var last = tree[tree.length - 1];\n\n          if (last.constructor === vm.constructor) {\n            currentRecursiveSequence++;\n            vm = vm.$parent;\n            continue;\n          } else if (currentRecursiveSequence > 0) {\n            tree[tree.length - 1] = [last, currentRecursiveSequence];\n            currentRecursiveSequence = 0;\n          }\n        }\n\n        tree.push(vm);\n        vm = vm.$parent;\n      }\n\n      return '\\n\\nfound in\\n\\n' + tree.map(function (vm, i) {\n        return \"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm) ? formatComponentName(vm[0]) + \"... (\" + vm[1] + \" recursive calls)\" : formatComponentName(vm));\n      }).join('\\n');\n    } else {\n      return \"\\n\\n(found in \" + formatComponentName(vm) + \")\";\n    }\n  };\n}\n/*  */\n\n\nvar uid = 0;\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\n\nvar Dep = function Dep() {\n  this.id = uid++;\n  this.subs = [];\n};\n\nDep.prototype.addSub = function addSub(sub) {\n  this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub(sub) {\n  remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend() {\n  if (Dep.target) {\n    Dep.target.addDep(this);\n  }\n};\n\nDep.prototype.notify = function notify() {\n  // stabilize the subscriber list first\n  var subs = this.subs.slice();\n\n  if (process.env.NODE_ENV !== 'production' && !config.async) {\n    // subs aren't sorted in scheduler if not running async\n    // we need to sort them now to make sure they fire in correct\n    // order\n    subs.sort(function (a, b) {\n      return a.id - b.id;\n    });\n  }\n\n  for (var i = 0, l = subs.length; i < l; i++) {\n    subs[i].update();\n  }\n}; // The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\n\n\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget(target) {\n  targetStack.push(target);\n  Dep.target = target;\n}\n\nfunction popTarget() {\n  targetStack.pop();\n  Dep.target = targetStack[targetStack.length - 1];\n}\n/*  */\n\n\nvar VNode = function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) {\n  this.tag = tag;\n  this.data = data;\n  this.children = children;\n  this.text = text;\n  this.elm = elm;\n  this.ns = undefined;\n  this.context = context;\n  this.fnContext = undefined;\n  this.fnOptions = undefined;\n  this.fnScopeId = undefined;\n  this.key = data && data.key;\n  this.componentOptions = componentOptions;\n  this.componentInstance = undefined;\n  this.parent = undefined;\n  this.raw = false;\n  this.isStatic = false;\n  this.isRootInsert = true;\n  this.isComment = false;\n  this.isCloned = false;\n  this.isOnce = false;\n  this.asyncFactory = asyncFactory;\n  this.asyncMeta = undefined;\n  this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = {\n  child: {\n    configurable: true\n  }\n}; // DEPRECATED: alias for componentInstance for backwards compat.\n\n/* istanbul ignore next */\n\nprototypeAccessors.child.get = function () {\n  return this.componentInstance;\n};\n\nObject.defineProperties(VNode.prototype, prototypeAccessors);\n\nvar createEmptyVNode = function createEmptyVNode(text) {\n  if (text === void 0) text = '';\n  var node = new VNode();\n  node.text = text;\n  node.isComment = true;\n  return node;\n};\n\nfunction createTextVNode(val) {\n  return new VNode(undefined, undefined, undefined, String(val));\n} // optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\n\n\nfunction cloneVNode(vnode) {\n  var cloned = new VNode(vnode.tag, vnode.data, // #7975\n  // clone children array to avoid mutating original in case of cloning\n  // a child.\n  vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory);\n  cloned.ns = vnode.ns;\n  cloned.isStatic = vnode.isStatic;\n  cloned.key = vnode.key;\n  cloned.isComment = vnode.isComment;\n  cloned.fnContext = vnode.fnContext;\n  cloned.fnOptions = vnode.fnOptions;\n  cloned.fnScopeId = vnode.fnScopeId;\n  cloned.asyncMeta = vnode.asyncMeta;\n  cloned.isCloned = true;\n  return cloned;\n}\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\nvar methodsToPatch = ['push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'];\n/**\n * Intercept mutating methods and emit events\n */\n\nmethodsToPatch.forEach(function (method) {\n  // cache original method\n  var original = arrayProto[method];\n  def(arrayMethods, method, function mutator() {\n    var args = [],\n        len = arguments.length;\n\n    while (len--) {\n      args[len] = arguments[len];\n    }\n\n    var result = original.apply(this, args);\n    var ob = this.__ob__;\n    var inserted;\n\n    switch (method) {\n      case 'push':\n      case 'unshift':\n        inserted = args;\n        break;\n\n      case 'splice':\n        inserted = args.slice(2);\n        break;\n    }\n\n    if (inserted) {\n      ob.observeArray(inserted);\n    } // notify change\n\n\n    ob.dep.notify();\n    return result;\n  });\n});\n/*  */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\n\nvar shouldObserve = true;\n\nfunction toggleObserving(value) {\n  shouldObserve = value;\n}\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\n\n\nvar Observer = function Observer(value) {\n  this.value = value;\n  this.dep = new Dep();\n  this.vmCount = 0;\n  def(value, '__ob__', this);\n\n  if (Array.isArray(value)) {\n    if (hasProto) {\n      protoAugment(value, arrayMethods);\n    } else {\n      copyAugment(value, arrayMethods, arrayKeys);\n    }\n\n    this.observeArray(value);\n  } else {\n    this.walk(value);\n  }\n};\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\n\n\nObserver.prototype.walk = function walk(obj) {\n  var keys = Object.keys(obj);\n\n  for (var i = 0; i < keys.length; i++) {\n    defineReactive$$1(obj, keys[i]);\n  }\n};\n/**\n * Observe a list of Array items.\n */\n\n\nObserver.prototype.observeArray = function observeArray(items) {\n  for (var i = 0, l = items.length; i < l; i++) {\n    observe(items[i]);\n  }\n}; // helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\n\n\nfunction protoAugment(target, src) {\n  /* eslint-disable no-proto */\n  target.__proto__ = src;\n  /* eslint-enable no-proto */\n}\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n\n/* istanbul ignore next */\n\n\nfunction copyAugment(target, src, keys) {\n  for (var i = 0, l = keys.length; i < l; i++) {\n    var key = keys[i];\n    def(target, key, src[key]);\n  }\n}\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\n\n\nfunction observe(value, asRootData) {\n  if (!isObject(value) || value instanceof VNode) {\n    return;\n  }\n\n  var ob;\n\n  if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n    ob = value.__ob__;\n  } else if (shouldObserve && !isServerRendering() && (Array.isArray(value) || isPlainObject(value)) && Object.isExtensible(value) && !value._isVue) {\n    ob = new Observer(value);\n  }\n\n  if (asRootData && ob) {\n    ob.vmCount++;\n  }\n\n  return ob;\n}\n/**\n * Define a reactive property on an Object.\n */\n\n\nfunction defineReactive$$1(obj, key, val, customSetter, shallow) {\n  var dep = new Dep();\n  var property = Object.getOwnPropertyDescriptor(obj, key);\n\n  if (property && property.configurable === false) {\n    return;\n  } // cater for pre-defined getter/setters\n\n\n  var getter = property && property.get;\n  var setter = property && property.set;\n\n  if ((!getter || setter) && arguments.length === 2) {\n    val = obj[key];\n  }\n\n  var childOb = !shallow && observe(val);\n  Object.defineProperty(obj, key, {\n    enumerable: true,\n    configurable: true,\n    get: function reactiveGetter() {\n      var value = getter ? getter.call(obj) : val;\n\n      if (Dep.target) {\n        dep.depend();\n\n        if (childOb) {\n          childOb.dep.depend();\n\n          if (Array.isArray(value)) {\n            dependArray(value);\n          }\n        }\n      }\n\n      return value;\n    },\n    set: function reactiveSetter(newVal) {\n      var value = getter ? getter.call(obj) : val;\n      /* eslint-disable no-self-compare */\n\n      if (newVal === value || newVal !== newVal && value !== value) {\n        return;\n      }\n      /* eslint-enable no-self-compare */\n\n\n      if (process.env.NODE_ENV !== 'production' && customSetter) {\n        customSetter();\n      } // #7981: for accessor properties without setter\n\n\n      if (getter && !setter) {\n        return;\n      }\n\n      if (setter) {\n        setter.call(obj, newVal);\n      } else {\n        val = newVal;\n      }\n\n      childOb = !shallow && observe(newVal);\n      dep.notify();\n    }\n  });\n}\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\n\n\nfunction set(target, key, val) {\n  if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\n    warn(\"Cannot set reactive property on undefined, null, or primitive value: \" + target);\n  }\n\n  if (Array.isArray(target) && isValidArrayIndex(key)) {\n    target.length = Math.max(target.length, key);\n    target.splice(key, 1, val);\n    return val;\n  }\n\n  if (key in target && !(key in Object.prototype)) {\n    target[key] = val;\n    return val;\n  }\n\n  var ob = target.__ob__;\n\n  if (target._isVue || ob && ob.vmCount) {\n    process.env.NODE_ENV !== 'production' && warn('Avoid adding reactive properties to a Vue instance or its root $data ' + 'at runtime - declare it upfront in the data option.');\n    return val;\n  }\n\n  if (!ob) {\n    target[key] = val;\n    return val;\n  }\n\n  defineReactive$$1(ob.value, key, val);\n  ob.dep.notify();\n  return val;\n}\n/**\n * Delete a property and trigger change if necessary.\n */\n\n\nfunction del(target, key) {\n  if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\n    warn(\"Cannot delete reactive property on undefined, null, or primitive value: \" + target);\n  }\n\n  if (Array.isArray(target) && isValidArrayIndex(key)) {\n    target.splice(key, 1);\n    return;\n  }\n\n  var ob = target.__ob__;\n\n  if (target._isVue || ob && ob.vmCount) {\n    process.env.NODE_ENV !== 'production' && warn('Avoid deleting properties on a Vue instance or its root $data ' + '- just set it to null.');\n    return;\n  }\n\n  if (!hasOwn(target, key)) {\n    return;\n  }\n\n  delete target[key];\n\n  if (!ob) {\n    return;\n  }\n\n  ob.dep.notify();\n}\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\n\n\nfunction dependArray(value) {\n  for (var e = void 0, i = 0, l = value.length; i < l; i++) {\n    e = value[i];\n    e && e.__ob__ && e.__ob__.dep.depend();\n\n    if (Array.isArray(e)) {\n      dependArray(e);\n    }\n  }\n}\n/*  */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\n\n\nvar strats = config.optionMergeStrategies;\n/**\n * Options with restrictions\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  strats.el = strats.propsData = function (parent, child, vm, key) {\n    if (!vm) {\n      warn(\"option \\\"\" + key + \"\\\" can only be used during instance \" + 'creation with the `new` keyword.');\n    }\n\n    return defaultStrat(parent, child);\n  };\n}\n/**\n * Helper that recursively merges two data objects together.\n */\n\n\nfunction mergeData(to, from) {\n  if (!from) {\n    return to;\n  }\n\n  var key, toVal, fromVal;\n  var keys = hasSymbol ? Reflect.ownKeys(from) : Object.keys(from);\n\n  for (var i = 0; i < keys.length; i++) {\n    key = keys[i]; // in case the object is already observed...\n\n    if (key === '__ob__') {\n      continue;\n    }\n\n    toVal = to[key];\n    fromVal = from[key];\n\n    if (!hasOwn(to, key)) {\n      set(to, key, fromVal);\n    } else if (toVal !== fromVal && isPlainObject(toVal) && isPlainObject(fromVal)) {\n      mergeData(toVal, fromVal);\n    }\n  }\n\n  return to;\n}\n/**\n * Data\n */\n\n\nfunction mergeDataOrFn(parentVal, childVal, vm) {\n  if (!vm) {\n    // in a Vue.extend merge, both should be functions\n    if (!childVal) {\n      return parentVal;\n    }\n\n    if (!parentVal) {\n      return childVal;\n    } // when parentVal & childVal are both present,\n    // we need to return a function that returns the\n    // merged result of both functions... no need to\n    // check if parentVal is a function here because\n    // it has to be a function to pass previous merges.\n\n\n    return function mergedDataFn() {\n      return mergeData(typeof childVal === 'function' ? childVal.call(this, this) : childVal, typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal);\n    };\n  } else {\n    return function mergedInstanceDataFn() {\n      // instance merge\n      var instanceData = typeof childVal === 'function' ? childVal.call(vm, vm) : childVal;\n      var defaultData = typeof parentVal === 'function' ? parentVal.call(vm, vm) : parentVal;\n\n      if (instanceData) {\n        return mergeData(instanceData, defaultData);\n      } else {\n        return defaultData;\n      }\n    };\n  }\n}\n\nstrats.data = function (parentVal, childVal, vm) {\n  if (!vm) {\n    if (childVal && typeof childVal !== 'function') {\n      process.env.NODE_ENV !== 'production' && warn('The \"data\" option should be a function ' + 'that returns a per-instance value in component ' + 'definitions.', vm);\n      return parentVal;\n    }\n\n    return mergeDataOrFn(parentVal, childVal);\n  }\n\n  return mergeDataOrFn(parentVal, childVal, vm);\n};\n/**\n * Hooks and props are merged as arrays.\n */\n\n\nfunction mergeHook(parentVal, childVal) {\n  var res = childVal ? parentVal ? parentVal.concat(childVal) : Array.isArray(childVal) ? childVal : [childVal] : parentVal;\n  return res ? dedupeHooks(res) : res;\n}\n\nfunction dedupeHooks(hooks) {\n  var res = [];\n\n  for (var i = 0; i < hooks.length; i++) {\n    if (res.indexOf(hooks[i]) === -1) {\n      res.push(hooks[i]);\n    }\n  }\n\n  return res;\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n  strats[hook] = mergeHook;\n});\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\n\nfunction mergeAssets(parentVal, childVal, vm, key) {\n  var res = Object.create(parentVal || null);\n\n  if (childVal) {\n    process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n    return extend(res, childVal);\n  } else {\n    return res;\n  }\n}\n\nASSET_TYPES.forEach(function (type) {\n  strats[type + 's'] = mergeAssets;\n});\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\n\nstrats.watch = function (parentVal, childVal, vm, key) {\n  // work around Firefox's Object.prototype.watch...\n  if (parentVal === nativeWatch) {\n    parentVal = undefined;\n  }\n\n  if (childVal === nativeWatch) {\n    childVal = undefined;\n  }\n  /* istanbul ignore if */\n\n\n  if (!childVal) {\n    return Object.create(parentVal || null);\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    assertObjectType(key, childVal, vm);\n  }\n\n  if (!parentVal) {\n    return childVal;\n  }\n\n  var ret = {};\n  extend(ret, parentVal);\n\n  for (var key$1 in childVal) {\n    var parent = ret[key$1];\n    var child = childVal[key$1];\n\n    if (parent && !Array.isArray(parent)) {\n      parent = [parent];\n    }\n\n    ret[key$1] = parent ? parent.concat(child) : Array.isArray(child) ? child : [child];\n  }\n\n  return ret;\n};\n/**\n * Other object hashes.\n */\n\n\nstrats.props = strats.methods = strats.inject = strats.computed = function (parentVal, childVal, vm, key) {\n  if (childVal && process.env.NODE_ENV !== 'production') {\n    assertObjectType(key, childVal, vm);\n  }\n\n  if (!parentVal) {\n    return childVal;\n  }\n\n  var ret = Object.create(null);\n  extend(ret, parentVal);\n\n  if (childVal) {\n    extend(ret, childVal);\n  }\n\n  return ret;\n};\n\nstrats.provide = mergeDataOrFn;\n/**\n * Default strategy.\n */\n\nvar defaultStrat = function defaultStrat(parentVal, childVal) {\n  return childVal === undefined ? parentVal : childVal;\n};\n/**\n * Validate component names\n */\n\n\nfunction checkComponents(options) {\n  for (var key in options.components) {\n    validateComponentName(key);\n  }\n}\n\nfunction validateComponentName(name) {\n  if (!new RegExp(\"^[a-zA-Z][\\\\-\\\\.0-9_\" + unicodeRegExp.source + \"]*$\").test(name)) {\n    warn('Invalid component name: \"' + name + '\". Component names ' + 'should conform to valid custom element name in html5 specification.');\n  }\n\n  if (isBuiltInTag(name) || config.isReservedTag(name)) {\n    warn('Do not use built-in or reserved HTML elements as component ' + 'id: ' + name);\n  }\n}\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\n\n\nfunction normalizeProps(options, vm) {\n  var props = options.props;\n\n  if (!props) {\n    return;\n  }\n\n  var res = {};\n  var i, val, name;\n\n  if (Array.isArray(props)) {\n    i = props.length;\n\n    while (i--) {\n      val = props[i];\n\n      if (typeof val === 'string') {\n        name = camelize(val);\n        res[name] = {\n          type: null\n        };\n      } else if (process.env.NODE_ENV !== 'production') {\n        warn('props must be strings when using array syntax.');\n      }\n    }\n  } else if (isPlainObject(props)) {\n    for (var key in props) {\n      val = props[key];\n      name = camelize(key);\n      res[name] = isPlainObject(val) ? val : {\n        type: val\n      };\n    }\n  } else if (process.env.NODE_ENV !== 'production') {\n    warn(\"Invalid value for option \\\"props\\\": expected an Array or an Object, \" + \"but got \" + toRawType(props) + \".\", vm);\n  }\n\n  options.props = res;\n}\n/**\n * Normalize all injections into Object-based format\n */\n\n\nfunction normalizeInject(options, vm) {\n  var inject = options.inject;\n\n  if (!inject) {\n    return;\n  }\n\n  var normalized = options.inject = {};\n\n  if (Array.isArray(inject)) {\n    for (var i = 0; i < inject.length; i++) {\n      normalized[inject[i]] = {\n        from: inject[i]\n      };\n    }\n  } else if (isPlainObject(inject)) {\n    for (var key in inject) {\n      var val = inject[key];\n      normalized[key] = isPlainObject(val) ? extend({\n        from: key\n      }, val) : {\n        from: val\n      };\n    }\n  } else if (process.env.NODE_ENV !== 'production') {\n    warn(\"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" + \"but got \" + toRawType(inject) + \".\", vm);\n  }\n}\n/**\n * Normalize raw function directives into object format.\n */\n\n\nfunction normalizeDirectives(options) {\n  var dirs = options.directives;\n\n  if (dirs) {\n    for (var key in dirs) {\n      var def$$1 = dirs[key];\n\n      if (typeof def$$1 === 'function') {\n        dirs[key] = {\n          bind: def$$1,\n          update: def$$1\n        };\n      }\n    }\n  }\n}\n\nfunction assertObjectType(name, value, vm) {\n  if (!isPlainObject(value)) {\n    warn(\"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" + \"but got \" + toRawType(value) + \".\", vm);\n  }\n}\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\n\n\nfunction mergeOptions(parent, child, vm) {\n  if (process.env.NODE_ENV !== 'production') {\n    checkComponents(child);\n  }\n\n  if (typeof child === 'function') {\n    child = child.options;\n  }\n\n  normalizeProps(child, vm);\n  normalizeInject(child, vm);\n  normalizeDirectives(child); // Apply extends and mixins on the child options,\n  // but only if it is a raw options object that isn't\n  // the result of another mergeOptions call.\n  // Only merged options has the _base property.\n\n  if (!child._base) {\n    if (child.extends) {\n      parent = mergeOptions(parent, child.extends, vm);\n    }\n\n    if (child.mixins) {\n      for (var i = 0, l = child.mixins.length; i < l; i++) {\n        parent = mergeOptions(parent, child.mixins[i], vm);\n      }\n    }\n  }\n\n  var options = {};\n  var key;\n\n  for (key in parent) {\n    mergeField(key);\n  }\n\n  for (key in child) {\n    if (!hasOwn(parent, key)) {\n      mergeField(key);\n    }\n  }\n\n  function mergeField(key) {\n    var strat = strats[key] || defaultStrat;\n    options[key] = strat(parent[key], child[key], vm, key);\n  }\n\n  return options;\n}\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\n\n\nfunction resolveAsset(options, type, id, warnMissing) {\n  /* istanbul ignore if */\n  if (typeof id !== 'string') {\n    return;\n  }\n\n  var assets = options[type]; // check local registration variations first\n\n  if (hasOwn(assets, id)) {\n    return assets[id];\n  }\n\n  var camelizedId = camelize(id);\n\n  if (hasOwn(assets, camelizedId)) {\n    return assets[camelizedId];\n  }\n\n  var PascalCaseId = capitalize(camelizedId);\n\n  if (hasOwn(assets, PascalCaseId)) {\n    return assets[PascalCaseId];\n  } // fallback to prototype chain\n\n\n  var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n\n  if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n    warn('Failed to resolve ' + type.slice(0, -1) + ': ' + id, options);\n  }\n\n  return res;\n}\n/*  */\n\n\nfunction validateProp(key, propOptions, propsData, vm) {\n  var prop = propOptions[key];\n  var absent = !hasOwn(propsData, key);\n  var value = propsData[key]; // boolean casting\n\n  var booleanIndex = getTypeIndex(Boolean, prop.type);\n\n  if (booleanIndex > -1) {\n    if (absent && !hasOwn(prop, 'default')) {\n      value = false;\n    } else if (value === '' || value === hyphenate(key)) {\n      // only cast empty string / same name to boolean if\n      // boolean has higher priority\n      var stringIndex = getTypeIndex(String, prop.type);\n\n      if (stringIndex < 0 || booleanIndex < stringIndex) {\n        value = true;\n      }\n    }\n  } // check default value\n\n\n  if (value === undefined) {\n    value = getPropDefaultValue(vm, prop, key); // since the default value is a fresh copy,\n    // make sure to observe it.\n\n    var prevShouldObserve = shouldObserve;\n    toggleObserving(true);\n    observe(value);\n    toggleObserving(prevShouldObserve);\n  }\n\n  if (process.env.NODE_ENV !== 'production' && // skip validation for weex recycle-list child component props\n  !false) {\n    assertProp(prop, key, value, vm, absent);\n  }\n\n  return value;\n}\n/**\n * Get the default value of a prop.\n */\n\n\nfunction getPropDefaultValue(vm, prop, key) {\n  // no default, return undefined\n  if (!hasOwn(prop, 'default')) {\n    return undefined;\n  }\n\n  var def = prop.default; // warn against non-factory defaults for Object & Array\n\n  if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n    warn('Invalid default value for prop \"' + key + '\": ' + 'Props with type Object/Array must use a factory function ' + 'to return the default value.', vm);\n  } // the raw prop value was also undefined from previous render,\n  // return previous default value to avoid unnecessary watcher trigger\n\n\n  if (vm && vm.$options.propsData && vm.$options.propsData[key] === undefined && vm._props[key] !== undefined) {\n    return vm._props[key];\n  } // call factory function for non-Function types\n  // a value is Function if its prototype is function even across different execution context\n\n\n  return typeof def === 'function' && getType(prop.type) !== 'Function' ? def.call(vm) : def;\n}\n/**\n * Assert whether a prop is valid.\n */\n\n\nfunction assertProp(prop, name, value, vm, absent) {\n  if (prop.required && absent) {\n    warn('Missing required prop: \"' + name + '\"', vm);\n    return;\n  }\n\n  if (value == null && !prop.required) {\n    return;\n  }\n\n  var type = prop.type;\n  var valid = !type || type === true;\n  var expectedTypes = [];\n\n  if (type) {\n    if (!Array.isArray(type)) {\n      type = [type];\n    }\n\n    for (var i = 0; i < type.length && !valid; i++) {\n      var assertedType = assertType(value, type[i], vm);\n      expectedTypes.push(assertedType.expectedType || '');\n      valid = assertedType.valid;\n    }\n  }\n\n  var haveExpectedTypes = expectedTypes.some(function (t) {\n    return t;\n  });\n\n  if (!valid && haveExpectedTypes) {\n    warn(getInvalidTypeMessage(name, value, expectedTypes), vm);\n    return;\n  }\n\n  var validator = prop.validator;\n\n  if (validator) {\n    if (!validator(value)) {\n      warn('Invalid prop: custom validator check failed for prop \"' + name + '\".', vm);\n    }\n  }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol|BigInt)$/;\n\nfunction assertType(value, type, vm) {\n  var valid;\n  var expectedType = getType(type);\n\n  if (simpleCheckRE.test(expectedType)) {\n    var t = _typeof(value);\n\n    valid = t === expectedType.toLowerCase(); // for primitive wrapper objects\n\n    if (!valid && t === 'object') {\n      valid = value instanceof type;\n    }\n  } else if (expectedType === 'Object') {\n    valid = isPlainObject(value);\n  } else if (expectedType === 'Array') {\n    valid = Array.isArray(value);\n  } else {\n    try {\n      valid = value instanceof type;\n    } catch (e) {\n      warn('Invalid prop type: \"' + String(type) + '\" is not a constructor', vm);\n      valid = false;\n    }\n  }\n\n  return {\n    valid: valid,\n    expectedType: expectedType\n  };\n}\n\nvar functionTypeCheckRE = /^\\s*function (\\w+)/;\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\n\nfunction getType(fn) {\n  var match = fn && fn.toString().match(functionTypeCheckRE);\n  return match ? match[1] : '';\n}\n\nfunction isSameType(a, b) {\n  return getType(a) === getType(b);\n}\n\nfunction getTypeIndex(type, expectedTypes) {\n  if (!Array.isArray(expectedTypes)) {\n    return isSameType(expectedTypes, type) ? 0 : -1;\n  }\n\n  for (var i = 0, len = expectedTypes.length; i < len; i++) {\n    if (isSameType(expectedTypes[i], type)) {\n      return i;\n    }\n  }\n\n  return -1;\n}\n\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n  var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" + \" Expected \" + expectedTypes.map(capitalize).join(', ');\n  var expectedType = expectedTypes[0];\n  var receivedType = toRawType(value); // check if we need to specify expected value\n\n  if (expectedTypes.length === 1 && isExplicable(expectedType) && isExplicable(_typeof(value)) && !isBoolean(expectedType, receivedType)) {\n    message += \" with value \" + styleValue(value, expectedType);\n  }\n\n  message += \", got \" + receivedType + \" \"; // check if we need to specify received value\n\n  if (isExplicable(receivedType)) {\n    message += \"with value \" + styleValue(value, receivedType) + \".\";\n  }\n\n  return message;\n}\n\nfunction styleValue(value, type) {\n  if (type === 'String') {\n    return \"\\\"\" + value + \"\\\"\";\n  } else if (type === 'Number') {\n    return \"\" + Number(value);\n  } else {\n    return \"\" + value;\n  }\n}\n\nvar EXPLICABLE_TYPES = ['string', 'number', 'boolean'];\n\nfunction isExplicable(value) {\n  return EXPLICABLE_TYPES.some(function (elem) {\n    return value.toLowerCase() === elem;\n  });\n}\n\nfunction isBoolean() {\n  var args = [],\n      len = arguments.length;\n\n  while (len--) {\n    args[len] = arguments[len];\n  }\n\n  return args.some(function (elem) {\n    return elem.toLowerCase() === 'boolean';\n  });\n}\n/*  */\n\n\nfunction handleError(err, vm, info) {\n  // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n  // See: https://github.com/vuejs/vuex/issues/1505\n  pushTarget();\n\n  try {\n    if (vm) {\n      var cur = vm;\n\n      while (cur = cur.$parent) {\n        var hooks = cur.$options.errorCaptured;\n\n        if (hooks) {\n          for (var i = 0; i < hooks.length; i++) {\n            try {\n              var capture = hooks[i].call(cur, err, vm, info) === false;\n\n              if (capture) {\n                return;\n              }\n            } catch (e) {\n              globalHandleError(e, cur, 'errorCaptured hook');\n            }\n          }\n        }\n      }\n    }\n\n    globalHandleError(err, vm, info);\n  } finally {\n    popTarget();\n  }\n}\n\nfunction invokeWithErrorHandling(handler, context, args, vm, info) {\n  var res;\n\n  try {\n    res = args ? handler.apply(context, args) : handler.call(context);\n\n    if (res && !res._isVue && isPromise(res) && !res._handled) {\n      res.catch(function (e) {\n        return handleError(e, vm, info + \" (Promise/async)\");\n      }); // issue #9511\n      // avoid catch triggering multiple times when nested calls\n\n      res._handled = true;\n    }\n  } catch (e) {\n    handleError(e, vm, info);\n  }\n\n  return res;\n}\n\nfunction globalHandleError(err, vm, info) {\n  if (config.errorHandler) {\n    try {\n      return config.errorHandler.call(null, err, vm, info);\n    } catch (e) {\n      // if the user intentionally throws the original error in the handler,\n      // do not log it twice\n      if (e !== err) {\n        logError(e, null, 'config.errorHandler');\n      }\n    }\n  }\n\n  logError(err, vm, info);\n}\n\nfunction logError(err, vm, info) {\n  if (process.env.NODE_ENV !== 'production') {\n    warn(\"Error in \" + info + \": \\\"\" + err.toString() + \"\\\"\", vm);\n  }\n  /* istanbul ignore else */\n\n\n  if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n    console.error(err);\n  } else {\n    throw err;\n  }\n}\n/*  */\n\n\nvar isUsingMicroTask = false;\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks() {\n  pending = false;\n  var copies = callbacks.slice(0);\n  callbacks.length = 0;\n\n  for (var i = 0; i < copies.length; i++) {\n    copies[i]();\n  }\n} // Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\n\n\nvar timerFunc; // The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n\n/* istanbul ignore next, $flow-disable-line */\n\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n  var p = Promise.resolve();\n\n  timerFunc = function timerFunc() {\n    p.then(flushCallbacks); // In problematic UIWebViews, Promise.then doesn't completely break, but\n    // it can get stuck in a weird state where callbacks are pushed into the\n    // microtask queue but the queue isn't being flushed, until the browser\n    // needs to do some other work, e.g. handle a timer. Therefore we can\n    // \"force\" the microtask queue to be flushed by adding an empty timer.\n\n    if (isIOS) {\n      setTimeout(noop);\n    }\n  };\n\n  isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (isNative(MutationObserver) || // PhantomJS and iOS 7.x\nMutationObserver.toString() === '[object MutationObserverConstructor]')) {\n  // Use MutationObserver where native Promise is not available,\n  // e.g. PhantomJS, iOS7, Android 4.4\n  // (#6466 MutationObserver is unreliable in IE11)\n  var counter = 1;\n  var observer = new MutationObserver(flushCallbacks);\n  var textNode = document.createTextNode(String(counter));\n  observer.observe(textNode, {\n    characterData: true\n  });\n\n  timerFunc = function timerFunc() {\n    counter = (counter + 1) % 2;\n    textNode.data = String(counter);\n  };\n\n  isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n  // Fallback to setImmediate.\n  // Technically it leverages the (macro) task queue,\n  // but it is still a better choice than setTimeout.\n  timerFunc = function timerFunc() {\n    setImmediate(flushCallbacks);\n  };\n} else {\n  // Fallback to setTimeout.\n  timerFunc = function timerFunc() {\n    setTimeout(flushCallbacks, 0);\n  };\n}\n\nfunction nextTick(cb, ctx) {\n  var _resolve;\n\n  callbacks.push(function () {\n    if (cb) {\n      try {\n        cb.call(ctx);\n      } catch (e) {\n        handleError(e, ctx, 'nextTick');\n      }\n    } else if (_resolve) {\n      _resolve(ctx);\n    }\n  });\n\n  if (!pending) {\n    pending = true;\n    timerFunc();\n  } // $flow-disable-line\n\n\n  if (!cb && typeof Promise !== 'undefined') {\n    return new Promise(function (resolve) {\n      _resolve = resolve;\n    });\n  }\n}\n/*  */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n  var allowedGlobals = makeMap('Infinity,undefined,NaN,isFinite,isNaN,' + 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' + 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,' + 'require' // for Webpack/Browserify\n  );\n\n  var warnNonPresent = function warnNonPresent(target, key) {\n    warn(\"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" + 'referenced during render. Make sure that this property is reactive, ' + 'either in the data option, or for class-based components, by ' + 'initializing the property. ' + 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.', target);\n  };\n\n  var warnReservedPrefix = function warnReservedPrefix(target, key) {\n    warn(\"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" + 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' + 'prevent conflicts with Vue internals. ' + 'See: https://vuejs.org/v2/api/#data', target);\n  };\n\n  var hasProxy = typeof Proxy !== 'undefined' && isNative(Proxy);\n\n  if (hasProxy) {\n    var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n    config.keyCodes = new Proxy(config.keyCodes, {\n      set: function set(target, key, value) {\n        if (isBuiltInModifier(key)) {\n          warn(\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key);\n          return false;\n        } else {\n          target[key] = value;\n          return true;\n        }\n      }\n    });\n  }\n\n  var hasHandler = {\n    has: function has(target, key) {\n      var has = (key in target);\n      var isAllowed = allowedGlobals(key) || typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data);\n\n      if (!has && !isAllowed) {\n        if (key in target.$data) {\n          warnReservedPrefix(target, key);\n        } else {\n          warnNonPresent(target, key);\n        }\n      }\n\n      return has || !isAllowed;\n    }\n  };\n  var getHandler = {\n    get: function get(target, key) {\n      if (typeof key === 'string' && !(key in target)) {\n        if (key in target.$data) {\n          warnReservedPrefix(target, key);\n        } else {\n          warnNonPresent(target, key);\n        }\n      }\n\n      return target[key];\n    }\n  };\n\n  initProxy = function initProxy(vm) {\n    if (hasProxy) {\n      // determine which proxy handler to use\n      var options = vm.$options;\n      var handlers = options.render && options.render._withStripped ? getHandler : hasHandler;\n      vm._renderProxy = new Proxy(vm, handlers);\n    } else {\n      vm._renderProxy = vm;\n    }\n  };\n}\n/*  */\n\n\nvar seenObjects = new _Set();\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\n\nfunction traverse(val) {\n  _traverse(val, seenObjects);\n\n  seenObjects.clear();\n}\n\nfunction _traverse(val, seen) {\n  var i, keys;\n  var isA = Array.isArray(val);\n\n  if (!isA && !isObject(val) || Object.isFrozen(val) || val instanceof VNode) {\n    return;\n  }\n\n  if (val.__ob__) {\n    var depId = val.__ob__.dep.id;\n\n    if (seen.has(depId)) {\n      return;\n    }\n\n    seen.add(depId);\n  }\n\n  if (isA) {\n    i = val.length;\n\n    while (i--) {\n      _traverse(val[i], seen);\n    }\n  } else {\n    keys = Object.keys(val);\n    i = keys.length;\n\n    while (i--) {\n      _traverse(val[keys[i]], seen);\n    }\n  }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n  var perf = inBrowser && window.performance;\n  /* istanbul ignore if */\n\n  if (perf && perf.mark && perf.measure && perf.clearMarks && perf.clearMeasures) {\n    mark = function mark(tag) {\n      return perf.mark(tag);\n    };\n\n    measure = function measure(name, startTag, endTag) {\n      perf.measure(name, startTag, endTag);\n      perf.clearMarks(startTag);\n      perf.clearMarks(endTag); // perf.clearMeasures(name)\n    };\n  }\n}\n/*  */\n\n\nvar normalizeEvent = cached(function (name) {\n  var passive = name.charAt(0) === '&';\n  name = passive ? name.slice(1) : name;\n  var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n\n  name = once$$1 ? name.slice(1) : name;\n  var capture = name.charAt(0) === '!';\n  name = capture ? name.slice(1) : name;\n  return {\n    name: name,\n    once: once$$1,\n    capture: capture,\n    passive: passive\n  };\n});\n\nfunction createFnInvoker(fns, vm) {\n  function invoker() {\n    var arguments$1 = arguments;\n    var fns = invoker.fns;\n\n    if (Array.isArray(fns)) {\n      var cloned = fns.slice();\n\n      for (var i = 0; i < cloned.length; i++) {\n        invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n      }\n    } else {\n      // return handler return value for single handlers\n      return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\");\n    }\n  }\n\n  invoker.fns = fns;\n  return invoker;\n}\n\nfunction updateListeners(on, oldOn, add, remove$$1, createOnceHandler, vm) {\n  var name, def$$1, cur, old, event;\n\n  for (name in on) {\n    def$$1 = cur = on[name];\n    old = oldOn[name];\n    event = normalizeEvent(name);\n\n    if (isUndef(cur)) {\n      process.env.NODE_ENV !== 'production' && warn(\"Invalid handler for event \\\"\" + event.name + \"\\\": got \" + String(cur), vm);\n    } else if (isUndef(old)) {\n      if (isUndef(cur.fns)) {\n        cur = on[name] = createFnInvoker(cur, vm);\n      }\n\n      if (isTrue(event.once)) {\n        cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n      }\n\n      add(event.name, cur, event.capture, event.passive, event.params);\n    } else if (cur !== old) {\n      old.fns = cur;\n      on[name] = old;\n    }\n  }\n\n  for (name in oldOn) {\n    if (isUndef(on[name])) {\n      event = normalizeEvent(name);\n      remove$$1(event.name, oldOn[name], event.capture);\n    }\n  }\n}\n/*  */\n\n\nfunction mergeVNodeHook(def, hookKey, hook) {\n  if (def instanceof VNode) {\n    def = def.data.hook || (def.data.hook = {});\n  }\n\n  var invoker;\n  var oldHook = def[hookKey];\n\n  function wrappedHook() {\n    hook.apply(this, arguments); // important: remove merged hook to ensure it's called only once\n    // and prevent memory leak\n\n    remove(invoker.fns, wrappedHook);\n  }\n\n  if (isUndef(oldHook)) {\n    // no existing hook\n    invoker = createFnInvoker([wrappedHook]);\n  } else {\n    /* istanbul ignore if */\n    if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n      // already a merged invoker\n      invoker = oldHook;\n      invoker.fns.push(wrappedHook);\n    } else {\n      // existing plain hook\n      invoker = createFnInvoker([oldHook, wrappedHook]);\n    }\n  }\n\n  invoker.merged = true;\n  def[hookKey] = invoker;\n}\n/*  */\n\n\nfunction extractPropsFromVNodeData(data, Ctor, tag) {\n  // we are only extracting raw values here.\n  // validation and default values are handled in the child\n  // component itself.\n  var propOptions = Ctor.options.props;\n\n  if (isUndef(propOptions)) {\n    return;\n  }\n\n  var res = {};\n  var attrs = data.attrs;\n  var props = data.props;\n\n  if (isDef(attrs) || isDef(props)) {\n    for (var key in propOptions) {\n      var altKey = hyphenate(key);\n\n      if (process.env.NODE_ENV !== 'production') {\n        var keyInLowerCase = key.toLowerCase();\n\n        if (key !== keyInLowerCase && attrs && hasOwn(attrs, keyInLowerCase)) {\n          tip(\"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" + formatComponentName(tag || Ctor) + \", but the declared prop name is\" + \" \\\"\" + key + \"\\\". \" + \"Note that HTML attributes are case-insensitive and camelCased \" + \"props need to use their kebab-case equivalents when using in-DOM \" + \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\");\n        }\n      }\n\n      checkProp(res, props, key, altKey, true) || checkProp(res, attrs, key, altKey, false);\n    }\n  }\n\n  return res;\n}\n\nfunction checkProp(res, hash, key, altKey, preserve) {\n  if (isDef(hash)) {\n    if (hasOwn(hash, key)) {\n      res[key] = hash[key];\n\n      if (!preserve) {\n        delete hash[key];\n      }\n\n      return true;\n    } else if (hasOwn(hash, altKey)) {\n      res[key] = hash[altKey];\n\n      if (!preserve) {\n        delete hash[altKey];\n      }\n\n      return true;\n    }\n  }\n\n  return false;\n}\n/*  */\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\n\n\nfunction simpleNormalizeChildren(children) {\n  for (var i = 0; i < children.length; i++) {\n    if (Array.isArray(children[i])) {\n      return Array.prototype.concat.apply([], children);\n    }\n  }\n\n  return children;\n} // 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\n\n\nfunction normalizeChildren(children) {\n  return isPrimitive(children) ? [createTextVNode(children)] : Array.isArray(children) ? normalizeArrayChildren(children) : undefined;\n}\n\nfunction isTextNode(node) {\n  return isDef(node) && isDef(node.text) && isFalse(node.isComment);\n}\n\nfunction normalizeArrayChildren(children, nestedIndex) {\n  var res = [];\n  var i, c, lastIndex, last;\n\n  for (i = 0; i < children.length; i++) {\n    c = children[i];\n\n    if (isUndef(c) || typeof c === 'boolean') {\n      continue;\n    }\n\n    lastIndex = res.length - 1;\n    last = res[lastIndex]; //  nested\n\n    if (Array.isArray(c)) {\n      if (c.length > 0) {\n        c = normalizeArrayChildren(c, (nestedIndex || '') + \"_\" + i); // merge adjacent text nodes\n\n        if (isTextNode(c[0]) && isTextNode(last)) {\n          res[lastIndex] = createTextVNode(last.text + c[0].text);\n          c.shift();\n        }\n\n        res.push.apply(res, c);\n      }\n    } else if (isPrimitive(c)) {\n      if (isTextNode(last)) {\n        // merge adjacent text nodes\n        // this is necessary for SSR hydration because text nodes are\n        // essentially merged when rendered to HTML strings\n        res[lastIndex] = createTextVNode(last.text + c);\n      } else if (c !== '') {\n        // convert primitive to vnode\n        res.push(createTextVNode(c));\n      }\n    } else {\n      if (isTextNode(c) && isTextNode(last)) {\n        // merge adjacent text nodes\n        res[lastIndex] = createTextVNode(last.text + c.text);\n      } else {\n        // default key for nested array children (likely generated by v-for)\n        if (isTrue(children._isVList) && isDef(c.tag) && isUndef(c.key) && isDef(nestedIndex)) {\n          c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n        }\n\n        res.push(c);\n      }\n    }\n  }\n\n  return res;\n}\n/*  */\n\n\nfunction initProvide(vm) {\n  var provide = vm.$options.provide;\n\n  if (provide) {\n    vm._provided = typeof provide === 'function' ? provide.call(vm) : provide;\n  }\n}\n\nfunction initInjections(vm) {\n  var result = resolveInject(vm.$options.inject, vm);\n\n  if (result) {\n    toggleObserving(false);\n    Object.keys(result).forEach(function (key) {\n      /* istanbul ignore else */\n      if (process.env.NODE_ENV !== 'production') {\n        defineReactive$$1(vm, key, result[key], function () {\n          warn(\"Avoid mutating an injected value directly since the changes will be \" + \"overwritten whenever the provided component re-renders. \" + \"injection being mutated: \\\"\" + key + \"\\\"\", vm);\n        });\n      } else {\n        defineReactive$$1(vm, key, result[key]);\n      }\n    });\n    toggleObserving(true);\n  }\n}\n\nfunction resolveInject(inject, vm) {\n  if (inject) {\n    // inject is :any because flow is not smart enough to figure out cached\n    var result = Object.create(null);\n    var keys = hasSymbol ? Reflect.ownKeys(inject) : Object.keys(inject);\n\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i]; // #6574 in case the inject object is observed...\n\n      if (key === '__ob__') {\n        continue;\n      }\n\n      var provideKey = inject[key].from;\n      var source = vm;\n\n      while (source) {\n        if (source._provided && hasOwn(source._provided, provideKey)) {\n          result[key] = source._provided[provideKey];\n          break;\n        }\n\n        source = source.$parent;\n      }\n\n      if (!source) {\n        if ('default' in inject[key]) {\n          var provideDefault = inject[key].default;\n          result[key] = typeof provideDefault === 'function' ? provideDefault.call(vm) : provideDefault;\n        } else if (process.env.NODE_ENV !== 'production') {\n          warn(\"Injection \\\"\" + key + \"\\\" not found\", vm);\n        }\n      }\n    }\n\n    return result;\n  }\n}\n/*  */\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\n\n\nfunction resolveSlots(children, context) {\n  if (!children || !children.length) {\n    return {};\n  }\n\n  var slots = {};\n\n  for (var i = 0, l = children.length; i < l; i++) {\n    var child = children[i];\n    var data = child.data; // remove slot attribute if the node is resolved as a Vue slot node\n\n    if (data && data.attrs && data.attrs.slot) {\n      delete data.attrs.slot;\n    } // named slots should only be respected if the vnode was rendered in the\n    // same context.\n\n\n    if ((child.context === context || child.fnContext === context) && data && data.slot != null) {\n      var name = data.slot;\n      var slot = slots[name] || (slots[name] = []);\n\n      if (child.tag === 'template') {\n        slot.push.apply(slot, child.children || []);\n      } else {\n        slot.push(child);\n      }\n    } else {\n      (slots.default || (slots.default = [])).push(child);\n    }\n  } // ignore slots that contains only whitespace\n\n\n  for (var name$1 in slots) {\n    if (slots[name$1].every(isWhitespace)) {\n      delete slots[name$1];\n    }\n  }\n\n  return slots;\n}\n\nfunction isWhitespace(node) {\n  return node.isComment && !node.asyncFactory || node.text === ' ';\n}\n/*  */\n\n\nfunction isAsyncPlaceholder(node) {\n  return node.isComment && node.asyncFactory;\n}\n/*  */\n\n\nfunction normalizeScopedSlots(slots, normalSlots, prevSlots) {\n  var res;\n  var hasNormalSlots = Object.keys(normalSlots).length > 0;\n  var isStable = slots ? !!slots.$stable : !hasNormalSlots;\n  var key = slots && slots.$key;\n\n  if (!slots) {\n    res = {};\n  } else if (slots._normalized) {\n    // fast path 1: child component re-render only, parent did not change\n    return slots._normalized;\n  } else if (isStable && prevSlots && prevSlots !== emptyObject && key === prevSlots.$key && !hasNormalSlots && !prevSlots.$hasNormal) {\n    // fast path 2: stable scoped slots w/ no normal slots to proxy,\n    // only need to normalize once\n    return prevSlots;\n  } else {\n    res = {};\n\n    for (var key$1 in slots) {\n      if (slots[key$1] && key$1[0] !== '$') {\n        res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n      }\n    }\n  } // expose normal slots on scopedSlots\n\n\n  for (var key$2 in normalSlots) {\n    if (!(key$2 in res)) {\n      res[key$2] = proxyNormalSlot(normalSlots, key$2);\n    }\n  } // avoriaz seems to mock a non-extensible $scopedSlots object\n  // and when that is passed down this would cause an error\n\n\n  if (slots && Object.isExtensible(slots)) {\n    slots._normalized = res;\n  }\n\n  def(res, '$stable', isStable);\n  def(res, '$key', key);\n  def(res, '$hasNormal', hasNormalSlots);\n  return res;\n}\n\nfunction normalizeScopedSlot(normalSlots, key, fn) {\n  var normalized = function normalized() {\n    var res = arguments.length ? fn.apply(null, arguments) : fn({});\n    res = res && _typeof(res) === 'object' && !Array.isArray(res) ? [res] // single vnode\n    : normalizeChildren(res);\n    var vnode = res && res[0];\n    return res && (!vnode || res.length === 1 && vnode.isComment && !isAsyncPlaceholder(vnode) // #9658, #10391\n    ) ? undefined : res;\n  }; // this is a slot using the new v-slot syntax without scope. although it is\n  // compiled as a scoped slot, render fn users would expect it to be present\n  // on this.$slots because the usage is semantically a normal slot.\n\n\n  if (fn.proxy) {\n    Object.defineProperty(normalSlots, key, {\n      get: normalized,\n      enumerable: true,\n      configurable: true\n    });\n  }\n\n  return normalized;\n}\n\nfunction proxyNormalSlot(slots, key) {\n  return function () {\n    return slots[key];\n  };\n}\n/*  */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\n\n\nfunction renderList(val, render) {\n  var ret, i, l, keys, key;\n\n  if (Array.isArray(val) || typeof val === 'string') {\n    ret = new Array(val.length);\n\n    for (i = 0, l = val.length; i < l; i++) {\n      ret[i] = render(val[i], i);\n    }\n  } else if (typeof val === 'number') {\n    ret = new Array(val);\n\n    for (i = 0; i < val; i++) {\n      ret[i] = render(i + 1, i);\n    }\n  } else if (isObject(val)) {\n    if (hasSymbol && val[Symbol.iterator]) {\n      ret = [];\n      var iterator = val[Symbol.iterator]();\n      var result = iterator.next();\n\n      while (!result.done) {\n        ret.push(render(result.value, ret.length));\n        result = iterator.next();\n      }\n    } else {\n      keys = Object.keys(val);\n      ret = new Array(keys.length);\n\n      for (i = 0, l = keys.length; i < l; i++) {\n        key = keys[i];\n        ret[i] = render(val[key], key, i);\n      }\n    }\n  }\n\n  if (!isDef(ret)) {\n    ret = [];\n  }\n\n  ret._isVList = true;\n  return ret;\n}\n/*  */\n\n/**\n * Runtime helper for rendering <slot>\n */\n\n\nfunction renderSlot(name, fallbackRender, props, bindObject) {\n  var scopedSlotFn = this.$scopedSlots[name];\n  var nodes;\n\n  if (scopedSlotFn) {\n    // scoped slot\n    props = props || {};\n\n    if (bindObject) {\n      if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n        warn('slot v-bind without argument expects an Object', this);\n      }\n\n      props = extend(extend({}, bindObject), props);\n    }\n\n    nodes = scopedSlotFn(props) || (typeof fallbackRender === 'function' ? fallbackRender() : fallbackRender);\n  } else {\n    nodes = this.$slots[name] || (typeof fallbackRender === 'function' ? fallbackRender() : fallbackRender);\n  }\n\n  var target = props && props.slot;\n\n  if (target) {\n    return this.$createElement('template', {\n      slot: target\n    }, nodes);\n  } else {\n    return nodes;\n  }\n}\n/*  */\n\n/**\n * Runtime helper for resolving filters\n */\n\n\nfunction resolveFilter(id) {\n  return resolveAsset(this.$options, 'filters', id, true) || identity;\n}\n/*  */\n\n\nfunction isKeyNotMatch(expect, actual) {\n  if (Array.isArray(expect)) {\n    return expect.indexOf(actual) === -1;\n  } else {\n    return expect !== actual;\n  }\n}\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\n\n\nfunction checkKeyCodes(eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) {\n  var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n\n  if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n    return isKeyNotMatch(builtInKeyName, eventKeyName);\n  } else if (mappedKeyCode) {\n    return isKeyNotMatch(mappedKeyCode, eventKeyCode);\n  } else if (eventKeyName) {\n    return hyphenate(eventKeyName) !== key;\n  }\n\n  return eventKeyCode === undefined;\n}\n/*  */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\n\n\nfunction bindObjectProps(data, tag, value, asProp, isSync) {\n  if (value) {\n    if (!isObject(value)) {\n      process.env.NODE_ENV !== 'production' && warn('v-bind without argument expects an Object or Array value', this);\n    } else {\n      if (Array.isArray(value)) {\n        value = toObject(value);\n      }\n\n      var hash;\n\n      var loop = function loop(key) {\n        if (key === 'class' || key === 'style' || isReservedAttribute(key)) {\n          hash = data;\n        } else {\n          var type = data.attrs && data.attrs.type;\n          hash = asProp || config.mustUseProp(tag, type, key) ? data.domProps || (data.domProps = {}) : data.attrs || (data.attrs = {});\n        }\n\n        var camelizedKey = camelize(key);\n        var hyphenatedKey = hyphenate(key);\n\n        if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n          hash[key] = value[key];\n\n          if (isSync) {\n            var on = data.on || (data.on = {});\n\n            on[\"update:\" + key] = function ($event) {\n              value[key] = $event;\n            };\n          }\n        }\n      };\n\n      for (var key in value) {\n        loop(key);\n      }\n    }\n  }\n\n  return data;\n}\n/*  */\n\n/**\n * Runtime helper for rendering static trees.\n */\n\n\nfunction renderStatic(index, isInFor) {\n  var cached = this._staticTrees || (this._staticTrees = []);\n  var tree = cached[index]; // if has already-rendered static tree and not inside v-for,\n  // we can reuse the same tree.\n\n  if (tree && !isInFor) {\n    return tree;\n  } // otherwise, render a fresh tree.\n\n\n  tree = cached[index] = this.$options.staticRenderFns[index].call(this._renderProxy, null, this // for render fns generated for functional component templates\n  );\n  markStatic(tree, \"__static__\" + index, false);\n  return tree;\n}\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\n\n\nfunction markOnce(tree, index, key) {\n  markStatic(tree, \"__once__\" + index + (key ? \"_\" + key : \"\"), true);\n  return tree;\n}\n\nfunction markStatic(tree, key, isOnce) {\n  if (Array.isArray(tree)) {\n    for (var i = 0; i < tree.length; i++) {\n      if (tree[i] && typeof tree[i] !== 'string') {\n        markStaticNode(tree[i], key + \"_\" + i, isOnce);\n      }\n    }\n  } else {\n    markStaticNode(tree, key, isOnce);\n  }\n}\n\nfunction markStaticNode(node, key, isOnce) {\n  node.isStatic = true;\n  node.key = key;\n  node.isOnce = isOnce;\n}\n/*  */\n\n\nfunction bindObjectListeners(data, value) {\n  if (value) {\n    if (!isPlainObject(value)) {\n      process.env.NODE_ENV !== 'production' && warn('v-on without argument expects an Object value', this);\n    } else {\n      var on = data.on = data.on ? extend({}, data.on) : {};\n\n      for (var key in value) {\n        var existing = on[key];\n        var ours = value[key];\n        on[key] = existing ? [].concat(existing, ours) : ours;\n      }\n    }\n  }\n\n  return data;\n}\n/*  */\n\n\nfunction resolveScopedSlots(fns, // see flow/vnode\nres, // the following are added in 2.6\nhasDynamicKeys, contentHashKey) {\n  res = res || {\n    $stable: !hasDynamicKeys\n  };\n\n  for (var i = 0; i < fns.length; i++) {\n    var slot = fns[i];\n\n    if (Array.isArray(slot)) {\n      resolveScopedSlots(slot, res, hasDynamicKeys);\n    } else if (slot) {\n      // marker for reverse proxying v-slot without scope on this.$slots\n      if (slot.proxy) {\n        slot.fn.proxy = true;\n      }\n\n      res[slot.key] = slot.fn;\n    }\n  }\n\n  if (contentHashKey) {\n    res.$key = contentHashKey;\n  }\n\n  return res;\n}\n/*  */\n\n\nfunction bindDynamicKeys(baseObj, values) {\n  for (var i = 0; i < values.length; i += 2) {\n    var key = values[i];\n\n    if (typeof key === 'string' && key) {\n      baseObj[values[i]] = values[i + 1];\n    } else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n      // null is a special value for explicitly removing a binding\n      warn(\"Invalid value for dynamic directive argument (expected string or null): \" + key, this);\n    }\n  }\n\n  return baseObj;\n} // helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\n\n\nfunction prependModifier(value, symbol) {\n  return typeof value === 'string' ? symbol + value : value;\n}\n/*  */\n\n\nfunction installRenderHelpers(target) {\n  target._o = markOnce;\n  target._n = toNumber;\n  target._s = toString;\n  target._l = renderList;\n  target._t = renderSlot;\n  target._q = looseEqual;\n  target._i = looseIndexOf;\n  target._m = renderStatic;\n  target._f = resolveFilter;\n  target._k = checkKeyCodes;\n  target._b = bindObjectProps;\n  target._v = createTextVNode;\n  target._e = createEmptyVNode;\n  target._u = resolveScopedSlots;\n  target._g = bindObjectListeners;\n  target._d = bindDynamicKeys;\n  target._p = prependModifier;\n}\n/*  */\n\n\nfunction FunctionalRenderContext(data, props, children, parent, Ctor) {\n  var this$1 = this;\n  var options = Ctor.options; // ensure the createElement function in functional components\n  // gets a unique context - this is necessary for correct named slot check\n\n  var contextVm;\n\n  if (hasOwn(parent, '_uid')) {\n    contextVm = Object.create(parent); // $flow-disable-line\n\n    contextVm._original = parent;\n  } else {\n    // the context vm passed in is a functional context as well.\n    // in this case we want to make sure we are able to get a hold to the\n    // real context instance.\n    contextVm = parent; // $flow-disable-line\n\n    parent = parent._original;\n  }\n\n  var isCompiled = isTrue(options._compiled);\n  var needNormalization = !isCompiled;\n  this.data = data;\n  this.props = props;\n  this.children = children;\n  this.parent = parent;\n  this.listeners = data.on || emptyObject;\n  this.injections = resolveInject(options.inject, parent);\n\n  this.slots = function () {\n    if (!this$1.$slots) {\n      normalizeScopedSlots(data.scopedSlots, this$1.$slots = resolveSlots(children, parent));\n    }\n\n    return this$1.$slots;\n  };\n\n  Object.defineProperty(this, 'scopedSlots', {\n    enumerable: true,\n    get: function get() {\n      return normalizeScopedSlots(data.scopedSlots, this.slots());\n    }\n  }); // support for compiled functional template\n\n  if (isCompiled) {\n    // exposing $options for renderStatic()\n    this.$options = options; // pre-resolve slots for renderSlot()\n\n    this.$slots = this.slots();\n    this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n  }\n\n  if (options._scopeId) {\n    this._c = function (a, b, c, d) {\n      var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n\n      if (vnode && !Array.isArray(vnode)) {\n        vnode.fnScopeId = options._scopeId;\n        vnode.fnContext = parent;\n      }\n\n      return vnode;\n    };\n  } else {\n    this._c = function (a, b, c, d) {\n      return createElement(contextVm, a, b, c, d, needNormalization);\n    };\n  }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent(Ctor, propsData, data, contextVm, children) {\n  var options = Ctor.options;\n  var props = {};\n  var propOptions = options.props;\n\n  if (isDef(propOptions)) {\n    for (var key in propOptions) {\n      props[key] = validateProp(key, propOptions, propsData || emptyObject);\n    }\n  } else {\n    if (isDef(data.attrs)) {\n      mergeProps(props, data.attrs);\n    }\n\n    if (isDef(data.props)) {\n      mergeProps(props, data.props);\n    }\n  }\n\n  var renderContext = new FunctionalRenderContext(data, props, children, contextVm, Ctor);\n  var vnode = options.render.call(null, renderContext._c, renderContext);\n\n  if (vnode instanceof VNode) {\n    return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext);\n  } else if (Array.isArray(vnode)) {\n    var vnodes = normalizeChildren(vnode) || [];\n    var res = new Array(vnodes.length);\n\n    for (var i = 0; i < vnodes.length; i++) {\n      res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n    }\n\n    return res;\n  }\n}\n\nfunction cloneAndMarkFunctionalResult(vnode, data, contextVm, options, renderContext) {\n  // #7817 clone node before setting fnContext, otherwise if the node is reused\n  // (e.g. it was from a cached normal slot) the fnContext causes named slots\n  // that should not be matched to match.\n  var clone = cloneVNode(vnode);\n  clone.fnContext = contextVm;\n  clone.fnOptions = options;\n\n  if (process.env.NODE_ENV !== 'production') {\n    (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n  }\n\n  if (data.slot) {\n    (clone.data || (clone.data = {})).slot = data.slot;\n  }\n\n  return clone;\n}\n\nfunction mergeProps(to, from) {\n  for (var key in from) {\n    to[camelize(key)] = from[key];\n  }\n}\n/*  */\n\n/*  */\n\n/*  */\n\n/*  */\n// inline hooks to be invoked on component VNodes during patch\n\n\nvar componentVNodeHooks = {\n  init: function init(vnode, hydrating) {\n    if (vnode.componentInstance && !vnode.componentInstance._isDestroyed && vnode.data.keepAlive) {\n      // kept-alive components, treat as a patch\n      var mountedNode = vnode; // work around flow\n\n      componentVNodeHooks.prepatch(mountedNode, mountedNode);\n    } else {\n      var child = vnode.componentInstance = createComponentInstanceForVnode(vnode, activeInstance);\n      child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n    }\n  },\n  prepatch: function prepatch(oldVnode, vnode) {\n    var options = vnode.componentOptions;\n    var child = vnode.componentInstance = oldVnode.componentInstance;\n    updateChildComponent(child, options.propsData, // updated props\n    options.listeners, // updated listeners\n    vnode, // new parent vnode\n    options.children // new children\n    );\n  },\n  insert: function insert(vnode) {\n    var context = vnode.context;\n    var componentInstance = vnode.componentInstance;\n\n    if (!componentInstance._isMounted) {\n      componentInstance._isMounted = true;\n      callHook(componentInstance, 'mounted');\n    }\n\n    if (vnode.data.keepAlive) {\n      if (context._isMounted) {\n        // vue-router#1212\n        // During updates, a kept-alive component's child components may\n        // change, so directly walking the tree here may call activated hooks\n        // on incorrect children. Instead we push them into a queue which will\n        // be processed after the whole patch process ended.\n        queueActivatedComponent(componentInstance);\n      } else {\n        activateChildComponent(componentInstance, true\n        /* direct */\n        );\n      }\n    }\n  },\n  destroy: function destroy(vnode) {\n    var componentInstance = vnode.componentInstance;\n\n    if (!componentInstance._isDestroyed) {\n      if (!vnode.data.keepAlive) {\n        componentInstance.$destroy();\n      } else {\n        deactivateChildComponent(componentInstance, true\n        /* direct */\n        );\n      }\n    }\n  }\n};\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent(Ctor, data, context, children, tag) {\n  if (isUndef(Ctor)) {\n    return;\n  }\n\n  var baseCtor = context.$options._base; // plain options object: turn it into a constructor\n\n  if (isObject(Ctor)) {\n    Ctor = baseCtor.extend(Ctor);\n  } // if at this stage it's not a constructor or an async component factory,\n  // reject.\n\n\n  if (typeof Ctor !== 'function') {\n    if (process.env.NODE_ENV !== 'production') {\n      warn(\"Invalid Component definition: \" + String(Ctor), context);\n    }\n\n    return;\n  } // async component\n\n\n  var asyncFactory;\n\n  if (isUndef(Ctor.cid)) {\n    asyncFactory = Ctor;\n    Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n\n    if (Ctor === undefined) {\n      // return a placeholder node for async component, which is rendered\n      // as a comment node but preserves all the raw information for the node.\n      // the information will be used for async server-rendering and hydration.\n      return createAsyncPlaceholder(asyncFactory, data, context, children, tag);\n    }\n  }\n\n  data = data || {}; // resolve constructor options in case global mixins are applied after\n  // component constructor creation\n\n  resolveConstructorOptions(Ctor); // transform component v-model data into props & events\n\n  if (isDef(data.model)) {\n    transformModel(Ctor.options, data);\n  } // extract props\n\n\n  var propsData = extractPropsFromVNodeData(data, Ctor, tag); // functional component\n\n  if (isTrue(Ctor.options.functional)) {\n    return createFunctionalComponent(Ctor, propsData, data, context, children);\n  } // extract listeners, since these needs to be treated as\n  // child component listeners instead of DOM listeners\n\n\n  var listeners = data.on; // replace with listeners with .native modifier\n  // so it gets processed during parent component patch.\n\n  data.on = data.nativeOn;\n\n  if (isTrue(Ctor.options.abstract)) {\n    // abstract components do not keep anything\n    // other than props & listeners & slot\n    // work around flow\n    var slot = data.slot;\n    data = {};\n\n    if (slot) {\n      data.slot = slot;\n    }\n  } // install component management hooks onto the placeholder node\n\n\n  installComponentHooks(data); // return a placeholder vnode\n\n  var name = Ctor.options.name || tag;\n  var vnode = new VNode(\"vue-component-\" + Ctor.cid + (name ? \"-\" + name : ''), data, undefined, undefined, undefined, context, {\n    Ctor: Ctor,\n    propsData: propsData,\n    listeners: listeners,\n    tag: tag,\n    children: children\n  }, asyncFactory);\n  return vnode;\n}\n\nfunction createComponentInstanceForVnode( // we know it's MountedComponentVNode but flow doesn't\nvnode, // activeInstance in lifecycle state\nparent) {\n  var options = {\n    _isComponent: true,\n    _parentVnode: vnode,\n    parent: parent\n  }; // check inline-template render functions\n\n  var inlineTemplate = vnode.data.inlineTemplate;\n\n  if (isDef(inlineTemplate)) {\n    options.render = inlineTemplate.render;\n    options.staticRenderFns = inlineTemplate.staticRenderFns;\n  }\n\n  return new vnode.componentOptions.Ctor(options);\n}\n\nfunction installComponentHooks(data) {\n  var hooks = data.hook || (data.hook = {});\n\n  for (var i = 0; i < hooksToMerge.length; i++) {\n    var key = hooksToMerge[i];\n    var existing = hooks[key];\n    var toMerge = componentVNodeHooks[key];\n\n    if (existing !== toMerge && !(existing && existing._merged)) {\n      hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n    }\n  }\n}\n\nfunction mergeHook$1(f1, f2) {\n  var merged = function merged(a, b) {\n    // flow complains about extra args which is why we use any\n    f1(a, b);\n    f2(a, b);\n  };\n\n  merged._merged = true;\n  return merged;\n} // transform component v-model info (value and callback) into\n// prop and event handler respectively.\n\n\nfunction transformModel(options, data) {\n  var prop = options.model && options.model.prop || 'value';\n  var event = options.model && options.model.event || 'input';\n  (data.attrs || (data.attrs = {}))[prop] = data.model.value;\n  var on = data.on || (data.on = {});\n  var existing = on[event];\n  var callback = data.model.callback;\n\n  if (isDef(existing)) {\n    if (Array.isArray(existing) ? existing.indexOf(callback) === -1 : existing !== callback) {\n      on[event] = [callback].concat(existing);\n    }\n  } else {\n    on[event] = callback;\n  }\n}\n/*  */\n\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2; // wrapper function for providing a more flexible interface\n// without getting yelled at by flow\n\nfunction createElement(context, tag, data, children, normalizationType, alwaysNormalize) {\n  if (Array.isArray(data) || isPrimitive(data)) {\n    normalizationType = children;\n    children = data;\n    data = undefined;\n  }\n\n  if (isTrue(alwaysNormalize)) {\n    normalizationType = ALWAYS_NORMALIZE;\n  }\n\n  return _createElement(context, tag, data, children, normalizationType);\n}\n\nfunction _createElement(context, tag, data, children, normalizationType) {\n  if (isDef(data) && isDef(data.__ob__)) {\n    process.env.NODE_ENV !== 'production' && warn(\"Avoid using observed data object as vnode data: \" + JSON.stringify(data) + \"\\n\" + 'Always create fresh vnode data objects in each render!', context);\n    return createEmptyVNode();\n  } // object syntax in v-bind\n\n\n  if (isDef(data) && isDef(data.is)) {\n    tag = data.is;\n  }\n\n  if (!tag) {\n    // in case of component :is set to falsy value\n    return createEmptyVNode();\n  } // warn against non-primitive key\n\n\n  if (process.env.NODE_ENV !== 'production' && isDef(data) && isDef(data.key) && !isPrimitive(data.key)) {\n    {\n      warn('Avoid using non-primitive value as key, ' + 'use string/number value instead.', context);\n    }\n  } // support single function children as default scoped slot\n\n\n  if (Array.isArray(children) && typeof children[0] === 'function') {\n    data = data || {};\n    data.scopedSlots = {\n      default: children[0]\n    };\n    children.length = 0;\n  }\n\n  if (normalizationType === ALWAYS_NORMALIZE) {\n    children = normalizeChildren(children);\n  } else if (normalizationType === SIMPLE_NORMALIZE) {\n    children = simpleNormalizeChildren(children);\n  }\n\n  var vnode, ns;\n\n  if (typeof tag === 'string') {\n    var Ctor;\n    ns = context.$vnode && context.$vnode.ns || config.getTagNamespace(tag);\n\n    if (config.isReservedTag(tag)) {\n      // platform built-in elements\n      if (process.env.NODE_ENV !== 'production' && isDef(data) && isDef(data.nativeOn) && data.tag !== 'component') {\n        warn(\"The .native modifier for v-on is only valid on components but it was used on <\" + tag + \">.\", context);\n      }\n\n      vnode = new VNode(config.parsePlatformTagName(tag), data, children, undefined, undefined, context);\n    } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n      // component\n      vnode = createComponent(Ctor, data, context, children, tag);\n    } else {\n      // unknown or unlisted namespaced elements\n      // check at runtime because it may get assigned a namespace when its\n      // parent normalizes children\n      vnode = new VNode(tag, data, children, undefined, undefined, context);\n    }\n  } else {\n    // direct component options / constructor\n    vnode = createComponent(tag, data, context, children);\n  }\n\n  if (Array.isArray(vnode)) {\n    return vnode;\n  } else if (isDef(vnode)) {\n    if (isDef(ns)) {\n      applyNS(vnode, ns);\n    }\n\n    if (isDef(data)) {\n      registerDeepBindings(data);\n    }\n\n    return vnode;\n  } else {\n    return createEmptyVNode();\n  }\n}\n\nfunction applyNS(vnode, ns, force) {\n  vnode.ns = ns;\n\n  if (vnode.tag === 'foreignObject') {\n    // use default namespace inside foreignObject\n    ns = undefined;\n    force = true;\n  }\n\n  if (isDef(vnode.children)) {\n    for (var i = 0, l = vnode.children.length; i < l; i++) {\n      var child = vnode.children[i];\n\n      if (isDef(child.tag) && (isUndef(child.ns) || isTrue(force) && child.tag !== 'svg')) {\n        applyNS(child, ns, force);\n      }\n    }\n  }\n} // ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\n\n\nfunction registerDeepBindings(data) {\n  if (isObject(data.style)) {\n    traverse(data.style);\n  }\n\n  if (isObject(data.class)) {\n    traverse(data.class);\n  }\n}\n/*  */\n\n\nfunction initRender(vm) {\n  vm._vnode = null; // the root of the child tree\n\n  vm._staticTrees = null; // v-once cached trees\n\n  var options = vm.$options;\n  var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n\n  var renderContext = parentVnode && parentVnode.context;\n  vm.$slots = resolveSlots(options._renderChildren, renderContext);\n  vm.$scopedSlots = emptyObject; // bind the createElement fn to this instance\n  // so that we get proper render context inside it.\n  // args order: tag, data, children, normalizationType, alwaysNormalize\n  // internal version is used by render functions compiled from templates\n\n  vm._c = function (a, b, c, d) {\n    return createElement(vm, a, b, c, d, false);\n  }; // normalization is always applied for the public version, used in\n  // user-written render functions.\n\n\n  vm.$createElement = function (a, b, c, d) {\n    return createElement(vm, a, b, c, d, true);\n  }; // $attrs & $listeners are exposed for easier HOC creation.\n  // they need to be reactive so that HOCs using them are always updated\n\n\n  var parentData = parentVnode && parentVnode.data;\n  /* istanbul ignore else */\n\n  if (process.env.NODE_ENV !== 'production') {\n    defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n      !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n    }, true);\n    defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n      !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n    }, true);\n  } else {\n    defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n    defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n  }\n}\n\nvar currentRenderingInstance = null;\n\nfunction renderMixin(Vue) {\n  // install runtime convenience helpers\n  installRenderHelpers(Vue.prototype);\n\n  Vue.prototype.$nextTick = function (fn) {\n    return nextTick(fn, this);\n  };\n\n  Vue.prototype._render = function () {\n    var vm = this;\n    var ref = vm.$options;\n    var render = ref.render;\n    var _parentVnode = ref._parentVnode;\n\n    if (_parentVnode) {\n      vm.$scopedSlots = normalizeScopedSlots(_parentVnode.data.scopedSlots, vm.$slots, vm.$scopedSlots);\n    } // set parent vnode. this allows render functions to have access\n    // to the data on the placeholder node.\n\n\n    vm.$vnode = _parentVnode; // render self\n\n    var vnode;\n\n    try {\n      // There's no need to maintain a stack because all render fns are called\n      // separately from one another. Nested component's render fns are called\n      // when parent component is patched.\n      currentRenderingInstance = vm;\n      vnode = render.call(vm._renderProxy, vm.$createElement);\n    } catch (e) {\n      handleError(e, vm, \"render\"); // return error render result,\n      // or previous vnode to prevent render error causing blank component\n\n      /* istanbul ignore else */\n\n      if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n        try {\n          vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n        } catch (e) {\n          handleError(e, vm, \"renderError\");\n          vnode = vm._vnode;\n        }\n      } else {\n        vnode = vm._vnode;\n      }\n    } finally {\n      currentRenderingInstance = null;\n    } // if the returned array contains only a single node, allow it\n\n\n    if (Array.isArray(vnode) && vnode.length === 1) {\n      vnode = vnode[0];\n    } // return empty vnode in case the render function errored out\n\n\n    if (!(vnode instanceof VNode)) {\n      if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n        warn('Multiple root nodes returned from render function. Render function ' + 'should return a single root node.', vm);\n      }\n\n      vnode = createEmptyVNode();\n    } // set parent\n\n\n    vnode.parent = _parentVnode;\n    return vnode;\n  };\n}\n/*  */\n\n\nfunction ensureCtor(comp, base) {\n  if (comp.__esModule || hasSymbol && comp[Symbol.toStringTag] === 'Module') {\n    comp = comp.default;\n  }\n\n  return isObject(comp) ? base.extend(comp) : comp;\n}\n\nfunction createAsyncPlaceholder(factory, data, context, children, tag) {\n  var node = createEmptyVNode();\n  node.asyncFactory = factory;\n  node.asyncMeta = {\n    data: data,\n    context: context,\n    children: children,\n    tag: tag\n  };\n  return node;\n}\n\nfunction resolveAsyncComponent(factory, baseCtor) {\n  if (isTrue(factory.error) && isDef(factory.errorComp)) {\n    return factory.errorComp;\n  }\n\n  if (isDef(factory.resolved)) {\n    return factory.resolved;\n  }\n\n  var owner = currentRenderingInstance;\n\n  if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n    // already pending\n    factory.owners.push(owner);\n  }\n\n  if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n    return factory.loadingComp;\n  }\n\n  if (owner && !isDef(factory.owners)) {\n    var owners = factory.owners = [owner];\n    var sync = true;\n    var timerLoading = null;\n    var timerTimeout = null;\n    owner.$on('hook:destroyed', function () {\n      return remove(owners, owner);\n    });\n\n    var forceRender = function forceRender(renderCompleted) {\n      for (var i = 0, l = owners.length; i < l; i++) {\n        owners[i].$forceUpdate();\n      }\n\n      if (renderCompleted) {\n        owners.length = 0;\n\n        if (timerLoading !== null) {\n          clearTimeout(timerLoading);\n          timerLoading = null;\n        }\n\n        if (timerTimeout !== null) {\n          clearTimeout(timerTimeout);\n          timerTimeout = null;\n        }\n      }\n    };\n\n    var resolve = once(function (res) {\n      // cache resolved\n      factory.resolved = ensureCtor(res, baseCtor); // invoke callbacks only if this is not a synchronous resolve\n      // (async resolves are shimmed as synchronous during SSR)\n\n      if (!sync) {\n        forceRender(true);\n      } else {\n        owners.length = 0;\n      }\n    });\n    var reject = once(function (reason) {\n      process.env.NODE_ENV !== 'production' && warn(\"Failed to resolve async component: \" + String(factory) + (reason ? \"\\nReason: \" + reason : ''));\n\n      if (isDef(factory.errorComp)) {\n        factory.error = true;\n        forceRender(true);\n      }\n    });\n    var res = factory(resolve, reject);\n\n    if (isObject(res)) {\n      if (isPromise(res)) {\n        // () => Promise\n        if (isUndef(factory.resolved)) {\n          res.then(resolve, reject);\n        }\n      } else if (isPromise(res.component)) {\n        res.component.then(resolve, reject);\n\n        if (isDef(res.error)) {\n          factory.errorComp = ensureCtor(res.error, baseCtor);\n        }\n\n        if (isDef(res.loading)) {\n          factory.loadingComp = ensureCtor(res.loading, baseCtor);\n\n          if (res.delay === 0) {\n            factory.loading = true;\n          } else {\n            timerLoading = setTimeout(function () {\n              timerLoading = null;\n\n              if (isUndef(factory.resolved) && isUndef(factory.error)) {\n                factory.loading = true;\n                forceRender(false);\n              }\n            }, res.delay || 200);\n          }\n        }\n\n        if (isDef(res.timeout)) {\n          timerTimeout = setTimeout(function () {\n            timerTimeout = null;\n\n            if (isUndef(factory.resolved)) {\n              reject(process.env.NODE_ENV !== 'production' ? \"timeout (\" + res.timeout + \"ms)\" : null);\n            }\n          }, res.timeout);\n        }\n      }\n    }\n\n    sync = false; // return in case resolved synchronously\n\n    return factory.loading ? factory.loadingComp : factory.resolved;\n  }\n}\n/*  */\n\n\nfunction getFirstComponentChild(children) {\n  if (Array.isArray(children)) {\n    for (var i = 0; i < children.length; i++) {\n      var c = children[i];\n\n      if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n        return c;\n      }\n    }\n  }\n}\n/*  */\n\n/*  */\n\n\nfunction initEvents(vm) {\n  vm._events = Object.create(null);\n  vm._hasHookEvent = false; // init parent attached events\n\n  var listeners = vm.$options._parentListeners;\n\n  if (listeners) {\n    updateComponentListeners(vm, listeners);\n  }\n}\n\nvar target;\n\nfunction add(event, fn) {\n  target.$on(event, fn);\n}\n\nfunction remove$1(event, fn) {\n  target.$off(event, fn);\n}\n\nfunction createOnceHandler(event, fn) {\n  var _target = target;\n  return function onceHandler() {\n    var res = fn.apply(null, arguments);\n\n    if (res !== null) {\n      _target.$off(event, onceHandler);\n    }\n  };\n}\n\nfunction updateComponentListeners(vm, listeners, oldListeners) {\n  target = vm;\n  updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n  target = undefined;\n}\n\nfunction eventsMixin(Vue) {\n  var hookRE = /^hook:/;\n\n  Vue.prototype.$on = function (event, fn) {\n    var vm = this;\n\n    if (Array.isArray(event)) {\n      for (var i = 0, l = event.length; i < l; i++) {\n        vm.$on(event[i], fn);\n      }\n    } else {\n      (vm._events[event] || (vm._events[event] = [])).push(fn); // optimize hook:event cost by using a boolean flag marked at registration\n      // instead of a hash lookup\n\n      if (hookRE.test(event)) {\n        vm._hasHookEvent = true;\n      }\n    }\n\n    return vm;\n  };\n\n  Vue.prototype.$once = function (event, fn) {\n    var vm = this;\n\n    function on() {\n      vm.$off(event, on);\n      fn.apply(vm, arguments);\n    }\n\n    on.fn = fn;\n    vm.$on(event, on);\n    return vm;\n  };\n\n  Vue.prototype.$off = function (event, fn) {\n    var vm = this; // all\n\n    if (!arguments.length) {\n      vm._events = Object.create(null);\n      return vm;\n    } // array of events\n\n\n    if (Array.isArray(event)) {\n      for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n        vm.$off(event[i$1], fn);\n      }\n\n      return vm;\n    } // specific event\n\n\n    var cbs = vm._events[event];\n\n    if (!cbs) {\n      return vm;\n    }\n\n    if (!fn) {\n      vm._events[event] = null;\n      return vm;\n    } // specific handler\n\n\n    var cb;\n    var i = cbs.length;\n\n    while (i--) {\n      cb = cbs[i];\n\n      if (cb === fn || cb.fn === fn) {\n        cbs.splice(i, 1);\n        break;\n      }\n    }\n\n    return vm;\n  };\n\n  Vue.prototype.$emit = function (event) {\n    var vm = this;\n\n    if (process.env.NODE_ENV !== 'production') {\n      var lowerCaseEvent = event.toLowerCase();\n\n      if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n        tip(\"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" + formatComponentName(vm) + \" but the handler is registered for \\\"\" + event + \"\\\". \" + \"Note that HTML attributes are case-insensitive and you cannot use \" + \"v-on to listen to camelCase events when using in-DOM templates. \" + \"You should probably use \\\"\" + hyphenate(event) + \"\\\" instead of \\\"\" + event + \"\\\".\");\n      }\n    }\n\n    var cbs = vm._events[event];\n\n    if (cbs) {\n      cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n      var args = toArray(arguments, 1);\n      var info = \"event handler for \\\"\" + event + \"\\\"\";\n\n      for (var i = 0, l = cbs.length; i < l; i++) {\n        invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n      }\n    }\n\n    return vm;\n  };\n}\n/*  */\n\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n  var prevActiveInstance = activeInstance;\n  activeInstance = vm;\n  return function () {\n    activeInstance = prevActiveInstance;\n  };\n}\n\nfunction initLifecycle(vm) {\n  var options = vm.$options; // locate first non-abstract parent\n\n  var parent = options.parent;\n\n  if (parent && !options.abstract) {\n    while (parent.$options.abstract && parent.$parent) {\n      parent = parent.$parent;\n    }\n\n    parent.$children.push(vm);\n  }\n\n  vm.$parent = parent;\n  vm.$root = parent ? parent.$root : vm;\n  vm.$children = [];\n  vm.$refs = {};\n  vm._watcher = null;\n  vm._inactive = null;\n  vm._directInactive = false;\n  vm._isMounted = false;\n  vm._isDestroyed = false;\n  vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin(Vue) {\n  Vue.prototype._update = function (vnode, hydrating) {\n    var vm = this;\n    var prevEl = vm.$el;\n    var prevVnode = vm._vnode;\n    var restoreActiveInstance = setActiveInstance(vm);\n    vm._vnode = vnode; // Vue.prototype.__patch__ is injected in entry points\n    // based on the rendering backend used.\n\n    if (!prevVnode) {\n      // initial render\n      vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false\n      /* removeOnly */\n      );\n    } else {\n      // updates\n      vm.$el = vm.__patch__(prevVnode, vnode);\n    }\n\n    restoreActiveInstance(); // update __vue__ reference\n\n    if (prevEl) {\n      prevEl.__vue__ = null;\n    }\n\n    if (vm.$el) {\n      vm.$el.__vue__ = vm;\n    } // if parent is an HOC, update its $el as well\n\n\n    if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n      vm.$parent.$el = vm.$el;\n    } // updated hook is called by the scheduler to ensure that children are\n    // updated in a parent's updated hook.\n\n  };\n\n  Vue.prototype.$forceUpdate = function () {\n    var vm = this;\n\n    if (vm._watcher) {\n      vm._watcher.update();\n    }\n  };\n\n  Vue.prototype.$destroy = function () {\n    var vm = this;\n\n    if (vm._isBeingDestroyed) {\n      return;\n    }\n\n    callHook(vm, 'beforeDestroy');\n    vm._isBeingDestroyed = true; // remove self from parent\n\n    var parent = vm.$parent;\n\n    if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n      remove(parent.$children, vm);\n    } // teardown watchers\n\n\n    if (vm._watcher) {\n      vm._watcher.teardown();\n    }\n\n    var i = vm._watchers.length;\n\n    while (i--) {\n      vm._watchers[i].teardown();\n    } // remove reference from data ob\n    // frozen object may not have observer.\n\n\n    if (vm._data.__ob__) {\n      vm._data.__ob__.vmCount--;\n    } // call the last hook...\n\n\n    vm._isDestroyed = true; // invoke destroy hooks on current rendered tree\n\n    vm.__patch__(vm._vnode, null); // fire destroyed hook\n\n\n    callHook(vm, 'destroyed'); // turn off all instance listeners.\n\n    vm.$off(); // remove __vue__ reference\n\n    if (vm.$el) {\n      vm.$el.__vue__ = null;\n    } // release circular reference (#6759)\n\n\n    if (vm.$vnode) {\n      vm.$vnode.parent = null;\n    }\n  };\n}\n\nfunction mountComponent(vm, el, hydrating) {\n  vm.$el = el;\n\n  if (!vm.$options.render) {\n    vm.$options.render = createEmptyVNode;\n\n    if (process.env.NODE_ENV !== 'production') {\n      /* istanbul ignore if */\n      if (vm.$options.template && vm.$options.template.charAt(0) !== '#' || vm.$options.el || el) {\n        warn('You are using the runtime-only build of Vue where the template ' + 'compiler is not available. Either pre-compile the templates into ' + 'render functions, or use the compiler-included build.', vm);\n      } else {\n        warn('Failed to mount component: template or render function not defined.', vm);\n      }\n    }\n  }\n\n  callHook(vm, 'beforeMount');\n  var updateComponent;\n  /* istanbul ignore if */\n\n  if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n    updateComponent = function updateComponent() {\n      var name = vm._name;\n      var id = vm._uid;\n      var startTag = \"vue-perf-start:\" + id;\n      var endTag = \"vue-perf-end:\" + id;\n      mark(startTag);\n\n      var vnode = vm._render();\n\n      mark(endTag);\n      measure(\"vue \" + name + \" render\", startTag, endTag);\n      mark(startTag);\n\n      vm._update(vnode, hydrating);\n\n      mark(endTag);\n      measure(\"vue \" + name + \" patch\", startTag, endTag);\n    };\n  } else {\n    updateComponent = function updateComponent() {\n      vm._update(vm._render(), hydrating);\n    };\n  } // we set this to vm._watcher inside the watcher's constructor\n  // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n  // component's mounted hook), which relies on vm._watcher being already defined\n\n\n  new Watcher(vm, updateComponent, noop, {\n    before: function before() {\n      if (vm._isMounted && !vm._isDestroyed) {\n        callHook(vm, 'beforeUpdate');\n      }\n    }\n  }, true\n  /* isRenderWatcher */\n  );\n  hydrating = false; // manually mounted instance, call mounted on self\n  // mounted is called for render-created child components in its inserted hook\n\n  if (vm.$vnode == null) {\n    vm._isMounted = true;\n    callHook(vm, 'mounted');\n  }\n\n  return vm;\n}\n\nfunction updateChildComponent(vm, propsData, listeners, parentVnode, renderChildren) {\n  if (process.env.NODE_ENV !== 'production') {\n    isUpdatingChildComponent = true;\n  } // determine whether component has slot children\n  // we need to do this before overwriting $options._renderChildren.\n  // check if there are dynamic scopedSlots (hand-written or compiled but with\n  // dynamic slot names). Static scoped slots compiled from template has the\n  // \"$stable\" marker.\n\n\n  var newScopedSlots = parentVnode.data.scopedSlots;\n  var oldScopedSlots = vm.$scopedSlots;\n  var hasDynamicScopedSlot = !!(newScopedSlots && !newScopedSlots.$stable || oldScopedSlots !== emptyObject && !oldScopedSlots.$stable || newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key || !newScopedSlots && vm.$scopedSlots.$key); // Any static slot children from the parent may have changed during parent's\n  // update. Dynamic scoped slots may also have changed. In such cases, a forced\n  // update is necessary to ensure correctness.\n\n  var needsForceUpdate = !!(renderChildren || // has new static slots\n  vm.$options._renderChildren || // has old static slots\n  hasDynamicScopedSlot);\n  vm.$options._parentVnode = parentVnode;\n  vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n  if (vm._vnode) {\n    // update child tree's parent\n    vm._vnode.parent = parentVnode;\n  }\n\n  vm.$options._renderChildren = renderChildren; // update $attrs and $listeners hash\n  // these are also reactive so they may trigger child update if the child\n  // used them during render\n\n  vm.$attrs = parentVnode.data.attrs || emptyObject;\n  vm.$listeners = listeners || emptyObject; // update props\n\n  if (propsData && vm.$options.props) {\n    toggleObserving(false);\n    var props = vm._props;\n    var propKeys = vm.$options._propKeys || [];\n\n    for (var i = 0; i < propKeys.length; i++) {\n      var key = propKeys[i];\n      var propOptions = vm.$options.props; // wtf flow?\n\n      props[key] = validateProp(key, propOptions, propsData, vm);\n    }\n\n    toggleObserving(true); // keep a copy of raw propsData\n\n    vm.$options.propsData = propsData;\n  } // update listeners\n\n\n  listeners = listeners || emptyObject;\n  var oldListeners = vm.$options._parentListeners;\n  vm.$options._parentListeners = listeners;\n  updateComponentListeners(vm, listeners, oldListeners); // resolve slots + force update if has children\n\n  if (needsForceUpdate) {\n    vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n    vm.$forceUpdate();\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    isUpdatingChildComponent = false;\n  }\n}\n\nfunction isInInactiveTree(vm) {\n  while (vm && (vm = vm.$parent)) {\n    if (vm._inactive) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction activateChildComponent(vm, direct) {\n  if (direct) {\n    vm._directInactive = false;\n\n    if (isInInactiveTree(vm)) {\n      return;\n    }\n  } else if (vm._directInactive) {\n    return;\n  }\n\n  if (vm._inactive || vm._inactive === null) {\n    vm._inactive = false;\n\n    for (var i = 0; i < vm.$children.length; i++) {\n      activateChildComponent(vm.$children[i]);\n    }\n\n    callHook(vm, 'activated');\n  }\n}\n\nfunction deactivateChildComponent(vm, direct) {\n  if (direct) {\n    vm._directInactive = true;\n\n    if (isInInactiveTree(vm)) {\n      return;\n    }\n  }\n\n  if (!vm._inactive) {\n    vm._inactive = true;\n\n    for (var i = 0; i < vm.$children.length; i++) {\n      deactivateChildComponent(vm.$children[i]);\n    }\n\n    callHook(vm, 'deactivated');\n  }\n}\n\nfunction callHook(vm, hook) {\n  // #7573 disable dep collection when invoking lifecycle hooks\n  pushTarget();\n  var handlers = vm.$options[hook];\n  var info = hook + \" hook\";\n\n  if (handlers) {\n    for (var i = 0, j = handlers.length; i < j; i++) {\n      invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n    }\n  }\n\n  if (vm._hasHookEvent) {\n    vm.$emit('hook:' + hook);\n  }\n\n  popTarget();\n}\n/*  */\n\n\nvar MAX_UPDATE_COUNT = 100;\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n/**\n * Reset the scheduler's state.\n */\n\nfunction resetSchedulerState() {\n  index = queue.length = activatedChildren.length = 0;\n  has = {};\n\n  if (process.env.NODE_ENV !== 'production') {\n    circular = {};\n  }\n\n  waiting = flushing = false;\n} // Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\n\n\nvar currentFlushTimestamp = 0; // Async edge case fix requires storing an event listener's attach timestamp.\n\nvar getNow = Date.now; // Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\n\nif (inBrowser && !isIE) {\n  var performance = window.performance;\n\n  if (performance && typeof performance.now === 'function' && getNow() > document.createEvent('Event').timeStamp) {\n    // if the event timestamp, although evaluated AFTER the Date.now(), is\n    // smaller than it, it means the event is using a hi-res timestamp,\n    // and we need to use the hi-res version for event listener timestamps as\n    // well.\n    getNow = function getNow() {\n      return performance.now();\n    };\n  }\n}\n/**\n * Flush both queues and run the watchers.\n */\n\n\nfunction flushSchedulerQueue() {\n  currentFlushTimestamp = getNow();\n  flushing = true;\n  var watcher, id; // Sort queue before flush.\n  // This ensures that:\n  // 1. Components are updated from parent to child. (because parent is always\n  //    created before the child)\n  // 2. A component's user watchers are run before its render watcher (because\n  //    user watchers are created before the render watcher)\n  // 3. If a component is destroyed during a parent component's watcher run,\n  //    its watchers can be skipped.\n\n  queue.sort(function (a, b) {\n    return a.id - b.id;\n  }); // do not cache length because more watchers might be pushed\n  // as we run existing watchers\n\n  for (index = 0; index < queue.length; index++) {\n    watcher = queue[index];\n\n    if (watcher.before) {\n      watcher.before();\n    }\n\n    id = watcher.id;\n    has[id] = null;\n    watcher.run(); // in dev build, check and stop circular updates.\n\n    if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n      circular[id] = (circular[id] || 0) + 1;\n\n      if (circular[id] > MAX_UPDATE_COUNT) {\n        warn('You may have an infinite update loop ' + (watcher.user ? \"in watcher with expression \\\"\" + watcher.expression + \"\\\"\" : \"in a component render function.\"), watcher.vm);\n        break;\n      }\n    }\n  } // keep copies of post queues before resetting state\n\n\n  var activatedQueue = activatedChildren.slice();\n  var updatedQueue = queue.slice();\n  resetSchedulerState(); // call component updated and activated hooks\n\n  callActivatedHooks(activatedQueue);\n  callUpdatedHooks(updatedQueue); // devtool hook\n\n  /* istanbul ignore if */\n\n  if (devtools && config.devtools) {\n    devtools.emit('flush');\n  }\n}\n\nfunction callUpdatedHooks(queue) {\n  var i = queue.length;\n\n  while (i--) {\n    var watcher = queue[i];\n    var vm = watcher.vm;\n\n    if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n      callHook(vm, 'updated');\n    }\n  }\n}\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\n\n\nfunction queueActivatedComponent(vm) {\n  // setting _inactive to false here so that a render function can\n  // rely on checking whether it's in an inactive tree (e.g. router-view)\n  vm._inactive = false;\n  activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks(queue) {\n  for (var i = 0; i < queue.length; i++) {\n    queue[i]._inactive = true;\n    activateChildComponent(queue[i], true\n    /* true */\n    );\n  }\n}\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\n\n\nfunction queueWatcher(watcher) {\n  var id = watcher.id;\n\n  if (has[id] == null) {\n    has[id] = true;\n\n    if (!flushing) {\n      queue.push(watcher);\n    } else {\n      // if already flushing, splice the watcher based on its id\n      // if already past its id, it will be run next immediately.\n      var i = queue.length - 1;\n\n      while (i > index && queue[i].id > watcher.id) {\n        i--;\n      }\n\n      queue.splice(i + 1, 0, watcher);\n    } // queue the flush\n\n\n    if (!waiting) {\n      waiting = true;\n\n      if (process.env.NODE_ENV !== 'production' && !config.async) {\n        flushSchedulerQueue();\n        return;\n      }\n\n      nextTick(flushSchedulerQueue);\n    }\n  }\n}\n/*  */\n\n\nvar uid$2 = 0;\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\n\nvar Watcher = function Watcher(vm, expOrFn, cb, options, isRenderWatcher) {\n  this.vm = vm;\n\n  if (isRenderWatcher) {\n    vm._watcher = this;\n  }\n\n  vm._watchers.push(this); // options\n\n\n  if (options) {\n    this.deep = !!options.deep;\n    this.user = !!options.user;\n    this.lazy = !!options.lazy;\n    this.sync = !!options.sync;\n    this.before = options.before;\n  } else {\n    this.deep = this.user = this.lazy = this.sync = false;\n  }\n\n  this.cb = cb;\n  this.id = ++uid$2; // uid for batching\n\n  this.active = true;\n  this.dirty = this.lazy; // for lazy watchers\n\n  this.deps = [];\n  this.newDeps = [];\n  this.depIds = new _Set();\n  this.newDepIds = new _Set();\n  this.expression = process.env.NODE_ENV !== 'production' ? expOrFn.toString() : ''; // parse expression for getter\n\n  if (typeof expOrFn === 'function') {\n    this.getter = expOrFn;\n  } else {\n    this.getter = parsePath(expOrFn);\n\n    if (!this.getter) {\n      this.getter = noop;\n      process.env.NODE_ENV !== 'production' && warn(\"Failed watching path: \\\"\" + expOrFn + \"\\\" \" + 'Watcher only accepts simple dot-delimited paths. ' + 'For full control, use a function instead.', vm);\n    }\n  }\n\n  this.value = this.lazy ? undefined : this.get();\n};\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\n\n\nWatcher.prototype.get = function get() {\n  pushTarget(this);\n  var value;\n  var vm = this.vm;\n\n  try {\n    value = this.getter.call(vm, vm);\n  } catch (e) {\n    if (this.user) {\n      handleError(e, vm, \"getter for watcher \\\"\" + this.expression + \"\\\"\");\n    } else {\n      throw e;\n    }\n  } finally {\n    // \"touch\" every property so they are all tracked as\n    // dependencies for deep watching\n    if (this.deep) {\n      traverse(value);\n    }\n\n    popTarget();\n    this.cleanupDeps();\n  }\n\n  return value;\n};\n/**\n * Add a dependency to this directive.\n */\n\n\nWatcher.prototype.addDep = function addDep(dep) {\n  var id = dep.id;\n\n  if (!this.newDepIds.has(id)) {\n    this.newDepIds.add(id);\n    this.newDeps.push(dep);\n\n    if (!this.depIds.has(id)) {\n      dep.addSub(this);\n    }\n  }\n};\n/**\n * Clean up for dependency collection.\n */\n\n\nWatcher.prototype.cleanupDeps = function cleanupDeps() {\n  var i = this.deps.length;\n\n  while (i--) {\n    var dep = this.deps[i];\n\n    if (!this.newDepIds.has(dep.id)) {\n      dep.removeSub(this);\n    }\n  }\n\n  var tmp = this.depIds;\n  this.depIds = this.newDepIds;\n  this.newDepIds = tmp;\n  this.newDepIds.clear();\n  tmp = this.deps;\n  this.deps = this.newDeps;\n  this.newDeps = tmp;\n  this.newDeps.length = 0;\n};\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\n\n\nWatcher.prototype.update = function update() {\n  /* istanbul ignore else */\n  if (this.lazy) {\n    this.dirty = true;\n  } else if (this.sync) {\n    this.run();\n  } else {\n    queueWatcher(this);\n  }\n};\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\n\n\nWatcher.prototype.run = function run() {\n  if (this.active) {\n    var value = this.get();\n\n    if (value !== this.value || // Deep watchers and watchers on Object/Arrays should fire even\n    // when the value is the same, because the value may\n    // have mutated.\n    isObject(value) || this.deep) {\n      // set new value\n      var oldValue = this.value;\n      this.value = value;\n\n      if (this.user) {\n        var info = \"callback for watcher \\\"\" + this.expression + \"\\\"\";\n        invokeWithErrorHandling(this.cb, this.vm, [value, oldValue], this.vm, info);\n      } else {\n        this.cb.call(this.vm, value, oldValue);\n      }\n    }\n  }\n};\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\n\n\nWatcher.prototype.evaluate = function evaluate() {\n  this.value = this.get();\n  this.dirty = false;\n};\n/**\n * Depend on all deps collected by this watcher.\n */\n\n\nWatcher.prototype.depend = function depend() {\n  var i = this.deps.length;\n\n  while (i--) {\n    this.deps[i].depend();\n  }\n};\n/**\n * Remove self from all dependencies' subscriber list.\n */\n\n\nWatcher.prototype.teardown = function teardown() {\n  if (this.active) {\n    // remove self from vm's watcher list\n    // this is a somewhat expensive operation so we skip it\n    // if the vm is being destroyed.\n    if (!this.vm._isBeingDestroyed) {\n      remove(this.vm._watchers, this);\n    }\n\n    var i = this.deps.length;\n\n    while (i--) {\n      this.deps[i].removeSub(this);\n    }\n\n    this.active = false;\n  }\n};\n/*  */\n\n\nvar sharedPropertyDefinition = {\n  enumerable: true,\n  configurable: true,\n  get: noop,\n  set: noop\n};\n\nfunction proxy(target, sourceKey, key) {\n  sharedPropertyDefinition.get = function proxyGetter() {\n    return this[sourceKey][key];\n  };\n\n  sharedPropertyDefinition.set = function proxySetter(val) {\n    this[sourceKey][key] = val;\n  };\n\n  Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState(vm) {\n  vm._watchers = [];\n  var opts = vm.$options;\n\n  if (opts.props) {\n    initProps(vm, opts.props);\n  }\n\n  if (opts.methods) {\n    initMethods(vm, opts.methods);\n  }\n\n  if (opts.data) {\n    initData(vm);\n  } else {\n    observe(vm._data = {}, true\n    /* asRootData */\n    );\n  }\n\n  if (opts.computed) {\n    initComputed(vm, opts.computed);\n  }\n\n  if (opts.watch && opts.watch !== nativeWatch) {\n    initWatch(vm, opts.watch);\n  }\n}\n\nfunction initProps(vm, propsOptions) {\n  var propsData = vm.$options.propsData || {};\n  var props = vm._props = {}; // cache prop keys so that future props updates can iterate using Array\n  // instead of dynamic object key enumeration.\n\n  var keys = vm.$options._propKeys = [];\n  var isRoot = !vm.$parent; // root instance props should be converted\n\n  if (!isRoot) {\n    toggleObserving(false);\n  }\n\n  var loop = function loop(key) {\n    keys.push(key);\n    var value = validateProp(key, propsOptions, propsData, vm);\n    /* istanbul ignore else */\n\n    if (process.env.NODE_ENV !== 'production') {\n      var hyphenatedKey = hyphenate(key);\n\n      if (isReservedAttribute(hyphenatedKey) || config.isReservedAttr(hyphenatedKey)) {\n        warn(\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\", vm);\n      }\n\n      defineReactive$$1(props, key, value, function () {\n        if (!isRoot && !isUpdatingChildComponent) {\n          warn(\"Avoid mutating a prop directly since the value will be \" + \"overwritten whenever the parent component re-renders. \" + \"Instead, use a data or computed property based on the prop's \" + \"value. Prop being mutated: \\\"\" + key + \"\\\"\", vm);\n        }\n      });\n    } else {\n      defineReactive$$1(props, key, value);\n    } // static props are already proxied on the component's prototype\n    // during Vue.extend(). We only need to proxy props defined at\n    // instantiation here.\n\n\n    if (!(key in vm)) {\n      proxy(vm, \"_props\", key);\n    }\n  };\n\n  for (var key in propsOptions) {\n    loop(key);\n  }\n\n  toggleObserving(true);\n}\n\nfunction initData(vm) {\n  var data = vm.$options.data;\n  data = vm._data = typeof data === 'function' ? getData(data, vm) : data || {};\n\n  if (!isPlainObject(data)) {\n    data = {};\n    process.env.NODE_ENV !== 'production' && warn('data functions should return an object:\\n' + 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function', vm);\n  } // proxy data on instance\n\n\n  var keys = Object.keys(data);\n  var props = vm.$options.props;\n  var methods = vm.$options.methods;\n  var i = keys.length;\n\n  while (i--) {\n    var key = keys[i];\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (methods && hasOwn(methods, key)) {\n        warn(\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\", vm);\n      }\n    }\n\n    if (props && hasOwn(props, key)) {\n      process.env.NODE_ENV !== 'production' && warn(\"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" + \"Use prop default value instead.\", vm);\n    } else if (!isReserved(key)) {\n      proxy(vm, \"_data\", key);\n    }\n  } // observe data\n\n\n  observe(data, true\n  /* asRootData */\n  );\n}\n\nfunction getData(data, vm) {\n  // #7573 disable dep collection when invoking data getters\n  pushTarget();\n\n  try {\n    return data.call(vm, vm);\n  } catch (e) {\n    handleError(e, vm, \"data()\");\n    return {};\n  } finally {\n    popTarget();\n  }\n}\n\nvar computedWatcherOptions = {\n  lazy: true\n};\n\nfunction initComputed(vm, computed) {\n  // $flow-disable-line\n  var watchers = vm._computedWatchers = Object.create(null); // computed properties are just getters during SSR\n\n  var isSSR = isServerRendering();\n\n  for (var key in computed) {\n    var userDef = computed[key];\n    var getter = typeof userDef === 'function' ? userDef : userDef.get;\n\n    if (process.env.NODE_ENV !== 'production' && getter == null) {\n      warn(\"Getter is missing for computed property \\\"\" + key + \"\\\".\", vm);\n    }\n\n    if (!isSSR) {\n      // create internal watcher for the computed property.\n      watchers[key] = new Watcher(vm, getter || noop, noop, computedWatcherOptions);\n    } // component-defined computed properties are already defined on the\n    // component prototype. We only need to define computed properties defined\n    // at instantiation here.\n\n\n    if (!(key in vm)) {\n      defineComputed(vm, key, userDef);\n    } else if (process.env.NODE_ENV !== 'production') {\n      if (key in vm.$data) {\n        warn(\"The computed property \\\"\" + key + \"\\\" is already defined in data.\", vm);\n      } else if (vm.$options.props && key in vm.$options.props) {\n        warn(\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\", vm);\n      } else if (vm.$options.methods && key in vm.$options.methods) {\n        warn(\"The computed property \\\"\" + key + \"\\\" is already defined as a method.\", vm);\n      }\n    }\n  }\n}\n\nfunction defineComputed(target, key, userDef) {\n  var shouldCache = !isServerRendering();\n\n  if (typeof userDef === 'function') {\n    sharedPropertyDefinition.get = shouldCache ? createComputedGetter(key) : createGetterInvoker(userDef);\n    sharedPropertyDefinition.set = noop;\n  } else {\n    sharedPropertyDefinition.get = userDef.get ? shouldCache && userDef.cache !== false ? createComputedGetter(key) : createGetterInvoker(userDef.get) : noop;\n    sharedPropertyDefinition.set = userDef.set || noop;\n  }\n\n  if (process.env.NODE_ENV !== 'production' && sharedPropertyDefinition.set === noop) {\n    sharedPropertyDefinition.set = function () {\n      warn(\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\", this);\n    };\n  }\n\n  Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter(key) {\n  return function computedGetter() {\n    var watcher = this._computedWatchers && this._computedWatchers[key];\n\n    if (watcher) {\n      if (watcher.dirty) {\n        watcher.evaluate();\n      }\n\n      if (Dep.target) {\n        watcher.depend();\n      }\n\n      return watcher.value;\n    }\n  };\n}\n\nfunction createGetterInvoker(fn) {\n  return function computedGetter() {\n    return fn.call(this, this);\n  };\n}\n\nfunction initMethods(vm, methods) {\n  var props = vm.$options.props;\n\n  for (var key in methods) {\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof methods[key] !== 'function') {\n        warn(\"Method \\\"\" + key + \"\\\" has type \\\"\" + _typeof(methods[key]) + \"\\\" in the component definition. \" + \"Did you reference the function correctly?\", vm);\n      }\n\n      if (props && hasOwn(props, key)) {\n        warn(\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\", vm);\n      }\n\n      if (key in vm && isReserved(key)) {\n        warn(\"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" + \"Avoid defining component methods that start with _ or $.\");\n      }\n    }\n\n    vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n  }\n}\n\nfunction initWatch(vm, watch) {\n  for (var key in watch) {\n    var handler = watch[key];\n\n    if (Array.isArray(handler)) {\n      for (var i = 0; i < handler.length; i++) {\n        createWatcher(vm, key, handler[i]);\n      }\n    } else {\n      createWatcher(vm, key, handler);\n    }\n  }\n}\n\nfunction createWatcher(vm, expOrFn, handler, options) {\n  if (isPlainObject(handler)) {\n    options = handler;\n    handler = handler.handler;\n  }\n\n  if (typeof handler === 'string') {\n    handler = vm[handler];\n  }\n\n  return vm.$watch(expOrFn, handler, options);\n}\n\nfunction stateMixin(Vue) {\n  // flow somehow has problems with directly declared definition object\n  // when using Object.defineProperty, so we have to procedurally build up\n  // the object here.\n  var dataDef = {};\n\n  dataDef.get = function () {\n    return this._data;\n  };\n\n  var propsDef = {};\n\n  propsDef.get = function () {\n    return this._props;\n  };\n\n  if (process.env.NODE_ENV !== 'production') {\n    dataDef.set = function () {\n      warn('Avoid replacing instance root $data. ' + 'Use nested data properties instead.', this);\n    };\n\n    propsDef.set = function () {\n      warn(\"$props is readonly.\", this);\n    };\n  }\n\n  Object.defineProperty(Vue.prototype, '$data', dataDef);\n  Object.defineProperty(Vue.prototype, '$props', propsDef);\n  Vue.prototype.$set = set;\n  Vue.prototype.$delete = del;\n\n  Vue.prototype.$watch = function (expOrFn, cb, options) {\n    var vm = this;\n\n    if (isPlainObject(cb)) {\n      return createWatcher(vm, expOrFn, cb, options);\n    }\n\n    options = options || {};\n    options.user = true;\n    var watcher = new Watcher(vm, expOrFn, cb, options);\n\n    if (options.immediate) {\n      var info = \"callback for immediate watcher \\\"\" + watcher.expression + \"\\\"\";\n      pushTarget();\n      invokeWithErrorHandling(cb, vm, [watcher.value], vm, info);\n      popTarget();\n    }\n\n    return function unwatchFn() {\n      watcher.teardown();\n    };\n  };\n}\n/*  */\n\n\nvar uid$3 = 0;\n\nfunction initMixin(Vue) {\n  Vue.prototype._init = function (options) {\n    var vm = this; // a uid\n\n    vm._uid = uid$3++;\n    var startTag, endTag;\n    /* istanbul ignore if */\n\n    if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n      startTag = \"vue-perf-start:\" + vm._uid;\n      endTag = \"vue-perf-end:\" + vm._uid;\n      mark(startTag);\n    } // a flag to avoid this being observed\n\n\n    vm._isVue = true; // merge options\n\n    if (options && options._isComponent) {\n      // optimize internal component instantiation\n      // since dynamic options merging is pretty slow, and none of the\n      // internal component options needs special treatment.\n      initInternalComponent(vm, options);\n    } else {\n      vm.$options = mergeOptions(resolveConstructorOptions(vm.constructor), options || {}, vm);\n    }\n    /* istanbul ignore else */\n\n\n    if (process.env.NODE_ENV !== 'production') {\n      initProxy(vm);\n    } else {\n      vm._renderProxy = vm;\n    } // expose real self\n\n\n    vm._self = vm;\n    initLifecycle(vm);\n    initEvents(vm);\n    initRender(vm);\n    callHook(vm, 'beforeCreate');\n    initInjections(vm); // resolve injections before data/props\n\n    initState(vm);\n    initProvide(vm); // resolve provide after data/props\n\n    callHook(vm, 'created');\n    /* istanbul ignore if */\n\n    if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n      vm._name = formatComponentName(vm, false);\n      mark(endTag);\n      measure(\"vue \" + vm._name + \" init\", startTag, endTag);\n    }\n\n    if (vm.$options.el) {\n      vm.$mount(vm.$options.el);\n    }\n  };\n}\n\nfunction initInternalComponent(vm, options) {\n  var opts = vm.$options = Object.create(vm.constructor.options); // doing this because it's faster than dynamic enumeration.\n\n  var parentVnode = options._parentVnode;\n  opts.parent = options.parent;\n  opts._parentVnode = parentVnode;\n  var vnodeComponentOptions = parentVnode.componentOptions;\n  opts.propsData = vnodeComponentOptions.propsData;\n  opts._parentListeners = vnodeComponentOptions.listeners;\n  opts._renderChildren = vnodeComponentOptions.children;\n  opts._componentTag = vnodeComponentOptions.tag;\n\n  if (options.render) {\n    opts.render = options.render;\n    opts.staticRenderFns = options.staticRenderFns;\n  }\n}\n\nfunction resolveConstructorOptions(Ctor) {\n  var options = Ctor.options;\n\n  if (Ctor.super) {\n    var superOptions = resolveConstructorOptions(Ctor.super);\n    var cachedSuperOptions = Ctor.superOptions;\n\n    if (superOptions !== cachedSuperOptions) {\n      // super option changed,\n      // need to resolve new options.\n      Ctor.superOptions = superOptions; // check if there are any late-modified/attached options (#4976)\n\n      var modifiedOptions = resolveModifiedOptions(Ctor); // update base extend options\n\n      if (modifiedOptions) {\n        extend(Ctor.extendOptions, modifiedOptions);\n      }\n\n      options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n\n      if (options.name) {\n        options.components[options.name] = Ctor;\n      }\n    }\n  }\n\n  return options;\n}\n\nfunction resolveModifiedOptions(Ctor) {\n  var modified;\n  var latest = Ctor.options;\n  var sealed = Ctor.sealedOptions;\n\n  for (var key in latest) {\n    if (latest[key] !== sealed[key]) {\n      if (!modified) {\n        modified = {};\n      }\n\n      modified[key] = latest[key];\n    }\n  }\n\n  return modified;\n}\n\nfunction Vue(options) {\n  if (process.env.NODE_ENV !== 'production' && !(this instanceof Vue)) {\n    warn('Vue is a constructor and should be called with the `new` keyword');\n  }\n\n  this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n/*  */\n\nfunction initUse(Vue) {\n  Vue.use = function (plugin) {\n    var installedPlugins = this._installedPlugins || (this._installedPlugins = []);\n\n    if (installedPlugins.indexOf(plugin) > -1) {\n      return this;\n    } // additional parameters\n\n\n    var args = toArray(arguments, 1);\n    args.unshift(this);\n\n    if (typeof plugin.install === 'function') {\n      plugin.install.apply(plugin, args);\n    } else if (typeof plugin === 'function') {\n      plugin.apply(null, args);\n    }\n\n    installedPlugins.push(plugin);\n    return this;\n  };\n}\n/*  */\n\n\nfunction initMixin$1(Vue) {\n  Vue.mixin = function (mixin) {\n    this.options = mergeOptions(this.options, mixin);\n    return this;\n  };\n}\n/*  */\n\n\nfunction initExtend(Vue) {\n  /**\n   * Each instance constructor, including Vue, has a unique\n   * cid. This enables us to create wrapped \"child\n   * constructors\" for prototypal inheritance and cache them.\n   */\n  Vue.cid = 0;\n  var cid = 1;\n  /**\n   * Class inheritance\n   */\n\n  Vue.extend = function (extendOptions) {\n    extendOptions = extendOptions || {};\n    var Super = this;\n    var SuperId = Super.cid;\n    var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n\n    if (cachedCtors[SuperId]) {\n      return cachedCtors[SuperId];\n    }\n\n    var name = extendOptions.name || Super.options.name;\n\n    if (process.env.NODE_ENV !== 'production' && name) {\n      validateComponentName(name);\n    }\n\n    var Sub = function VueComponent(options) {\n      this._init(options);\n    };\n\n    Sub.prototype = Object.create(Super.prototype);\n    Sub.prototype.constructor = Sub;\n    Sub.cid = cid++;\n    Sub.options = mergeOptions(Super.options, extendOptions);\n    Sub['super'] = Super; // For props and computed properties, we define the proxy getters on\n    // the Vue instances at extension time, on the extended prototype. This\n    // avoids Object.defineProperty calls for each instance created.\n\n    if (Sub.options.props) {\n      initProps$1(Sub);\n    }\n\n    if (Sub.options.computed) {\n      initComputed$1(Sub);\n    } // allow further extension/mixin/plugin usage\n\n\n    Sub.extend = Super.extend;\n    Sub.mixin = Super.mixin;\n    Sub.use = Super.use; // create asset registers, so extended classes\n    // can have their private assets too.\n\n    ASSET_TYPES.forEach(function (type) {\n      Sub[type] = Super[type];\n    }); // enable recursive self-lookup\n\n    if (name) {\n      Sub.options.components[name] = Sub;\n    } // keep a reference to the super options at extension time.\n    // later at instantiation we can check if Super's options have\n    // been updated.\n\n\n    Sub.superOptions = Super.options;\n    Sub.extendOptions = extendOptions;\n    Sub.sealedOptions = extend({}, Sub.options); // cache constructor\n\n    cachedCtors[SuperId] = Sub;\n    return Sub;\n  };\n}\n\nfunction initProps$1(Comp) {\n  var props = Comp.options.props;\n\n  for (var key in props) {\n    proxy(Comp.prototype, \"_props\", key);\n  }\n}\n\nfunction initComputed$1(Comp) {\n  var computed = Comp.options.computed;\n\n  for (var key in computed) {\n    defineComputed(Comp.prototype, key, computed[key]);\n  }\n}\n/*  */\n\n\nfunction initAssetRegisters(Vue) {\n  /**\n   * Create asset registration methods.\n   */\n  ASSET_TYPES.forEach(function (type) {\n    Vue[type] = function (id, definition) {\n      if (!definition) {\n        return this.options[type + 's'][id];\n      } else {\n        /* istanbul ignore if */\n        if (process.env.NODE_ENV !== 'production' && type === 'component') {\n          validateComponentName(id);\n        }\n\n        if (type === 'component' && isPlainObject(definition)) {\n          definition.name = definition.name || id;\n          definition = this.options._base.extend(definition);\n        }\n\n        if (type === 'directive' && typeof definition === 'function') {\n          definition = {\n            bind: definition,\n            update: definition\n          };\n        }\n\n        this.options[type + 's'][id] = definition;\n        return definition;\n      }\n    };\n  });\n}\n/*  */\n\n\nfunction getComponentName(opts) {\n  return opts && (opts.Ctor.options.name || opts.tag);\n}\n\nfunction matches(pattern, name) {\n  if (Array.isArray(pattern)) {\n    return pattern.indexOf(name) > -1;\n  } else if (typeof pattern === 'string') {\n    return pattern.split(',').indexOf(name) > -1;\n  } else if (isRegExp(pattern)) {\n    return pattern.test(name);\n  }\n  /* istanbul ignore next */\n\n\n  return false;\n}\n\nfunction pruneCache(keepAliveInstance, filter) {\n  var cache = keepAliveInstance.cache;\n  var keys = keepAliveInstance.keys;\n  var _vnode = keepAliveInstance._vnode;\n\n  for (var key in cache) {\n    var entry = cache[key];\n\n    if (entry) {\n      var name = entry.name;\n\n      if (name && !filter(name)) {\n        pruneCacheEntry(cache, key, keys, _vnode);\n      }\n    }\n  }\n}\n\nfunction pruneCacheEntry(cache, key, keys, current) {\n  var entry = cache[key];\n\n  if (entry && (!current || entry.tag !== current.tag)) {\n    entry.componentInstance.$destroy();\n  }\n\n  cache[key] = null;\n  remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\nvar KeepAlive = {\n  name: 'keep-alive',\n  abstract: true,\n  props: {\n    include: patternTypes,\n    exclude: patternTypes,\n    max: [String, Number]\n  },\n  methods: {\n    cacheVNode: function cacheVNode() {\n      var ref = this;\n      var cache = ref.cache;\n      var keys = ref.keys;\n      var vnodeToCache = ref.vnodeToCache;\n      var keyToCache = ref.keyToCache;\n\n      if (vnodeToCache) {\n        var tag = vnodeToCache.tag;\n        var componentInstance = vnodeToCache.componentInstance;\n        var componentOptions = vnodeToCache.componentOptions;\n        cache[keyToCache] = {\n          name: getComponentName(componentOptions),\n          tag: tag,\n          componentInstance: componentInstance\n        };\n        keys.push(keyToCache); // prune oldest entry\n\n        if (this.max && keys.length > parseInt(this.max)) {\n          pruneCacheEntry(cache, keys[0], keys, this._vnode);\n        }\n\n        this.vnodeToCache = null;\n      }\n    }\n  },\n  created: function created() {\n    this.cache = Object.create(null);\n    this.keys = [];\n  },\n  destroyed: function destroyed() {\n    for (var key in this.cache) {\n      pruneCacheEntry(this.cache, key, this.keys);\n    }\n  },\n  mounted: function mounted() {\n    var this$1 = this;\n    this.cacheVNode();\n    this.$watch('include', function (val) {\n      pruneCache(this$1, function (name) {\n        return matches(val, name);\n      });\n    });\n    this.$watch('exclude', function (val) {\n      pruneCache(this$1, function (name) {\n        return !matches(val, name);\n      });\n    });\n  },\n  updated: function updated() {\n    this.cacheVNode();\n  },\n  render: function render() {\n    var slot = this.$slots.default;\n    var vnode = getFirstComponentChild(slot);\n    var componentOptions = vnode && vnode.componentOptions;\n\n    if (componentOptions) {\n      // check pattern\n      var name = getComponentName(componentOptions);\n      var ref = this;\n      var include = ref.include;\n      var exclude = ref.exclude;\n\n      if ( // not included\n      include && (!name || !matches(include, name)) || // excluded\n      exclude && name && matches(exclude, name)) {\n        return vnode;\n      }\n\n      var ref$1 = this;\n      var cache = ref$1.cache;\n      var keys = ref$1.keys;\n      var key = vnode.key == null // same constructor may get registered as different local components\n      // so cid alone is not enough (#3269)\n      ? componentOptions.Ctor.cid + (componentOptions.tag ? \"::\" + componentOptions.tag : '') : vnode.key;\n\n      if (cache[key]) {\n        vnode.componentInstance = cache[key].componentInstance; // make current key freshest\n\n        remove(keys, key);\n        keys.push(key);\n      } else {\n        // delay setting the cache until update\n        this.vnodeToCache = vnode;\n        this.keyToCache = key;\n      }\n\n      vnode.data.keepAlive = true;\n    }\n\n    return vnode || slot && slot[0];\n  }\n};\nvar builtInComponents = {\n  KeepAlive: KeepAlive\n};\n/*  */\n\nfunction initGlobalAPI(Vue) {\n  // config\n  var configDef = {};\n\n  configDef.get = function () {\n    return config;\n  };\n\n  if (process.env.NODE_ENV !== 'production') {\n    configDef.set = function () {\n      warn('Do not replace the Vue.config object, set individual fields instead.');\n    };\n  }\n\n  Object.defineProperty(Vue, 'config', configDef); // exposed util methods.\n  // NOTE: these are not considered part of the public API - avoid relying on\n  // them unless you are aware of the risk.\n\n  Vue.util = {\n    warn: warn,\n    extend: extend,\n    mergeOptions: mergeOptions,\n    defineReactive: defineReactive$$1\n  };\n  Vue.set = set;\n  Vue.delete = del;\n  Vue.nextTick = nextTick; // 2.6 explicit observable API\n\n  Vue.observable = function (obj) {\n    observe(obj);\n    return obj;\n  };\n\n  Vue.options = Object.create(null);\n  ASSET_TYPES.forEach(function (type) {\n    Vue.options[type + 's'] = Object.create(null);\n  }); // this is used to identify the \"base\" constructor to extend all plain-object\n  // components with in Weex's multi-instance scenarios.\n\n  Vue.options._base = Vue;\n  extend(Vue.options.components, builtInComponents);\n  initUse(Vue);\n  initMixin$1(Vue);\n  initExtend(Vue);\n  initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\nObject.defineProperty(Vue.prototype, '$isServer', {\n  get: isServerRendering\n});\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n  get: function get() {\n    /* istanbul ignore next */\n    return this.$vnode && this.$vnode.ssrContext;\n  }\n}); // expose FunctionalRenderContext for ssr runtime helper installation\n\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n  value: FunctionalRenderContext\n});\nVue.version = '2.6.14';\n/*  */\n// these are reserved for web because they are directly compiled away\n// during template compilation\n\nvar isReservedAttr = makeMap('style,class'); // attributes that should be using props for binding\n\nvar acceptValue = makeMap('input,textarea,option,select,progress');\n\nvar mustUseProp = function mustUseProp(tag, type, attr) {\n  return attr === 'value' && acceptValue(tag) && type !== 'button' || attr === 'selected' && tag === 'option' || attr === 'checked' && tag === 'input' || attr === 'muted' && tag === 'video';\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\nvar isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\n\nvar convertEnumeratedValue = function convertEnumeratedValue(key, value) {\n  return isFalsyAttrValue(value) || value === 'false' ? 'false' // allow arbitrary string value for contenteditable\n  : key === 'contenteditable' && isValidContentEditableValue(value) ? value : 'true';\n};\n\nvar isBooleanAttr = makeMap('allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' + 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' + 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' + 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' + 'required,reversed,scoped,seamless,selected,sortable,' + 'truespeed,typemustmatch,visible');\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function isXlink(name) {\n  return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink';\n};\n\nvar getXlinkProp = function getXlinkProp(name) {\n  return isXlink(name) ? name.slice(6, name.length) : '';\n};\n\nvar isFalsyAttrValue = function isFalsyAttrValue(val) {\n  return val == null || val === false;\n};\n/*  */\n\n\nfunction genClassForVnode(vnode) {\n  var data = vnode.data;\n  var parentNode = vnode;\n  var childNode = vnode;\n\n  while (isDef(childNode.componentInstance)) {\n    childNode = childNode.componentInstance._vnode;\n\n    if (childNode && childNode.data) {\n      data = mergeClassData(childNode.data, data);\n    }\n  }\n\n  while (isDef(parentNode = parentNode.parent)) {\n    if (parentNode && parentNode.data) {\n      data = mergeClassData(data, parentNode.data);\n    }\n  }\n\n  return renderClass(data.staticClass, data.class);\n}\n\nfunction mergeClassData(child, parent) {\n  return {\n    staticClass: concat(child.staticClass, parent.staticClass),\n    class: isDef(child.class) ? [child.class, parent.class] : parent.class\n  };\n}\n\nfunction renderClass(staticClass, dynamicClass) {\n  if (isDef(staticClass) || isDef(dynamicClass)) {\n    return concat(staticClass, stringifyClass(dynamicClass));\n  }\n  /* istanbul ignore next */\n\n\n  return '';\n}\n\nfunction concat(a, b) {\n  return a ? b ? a + ' ' + b : a : b || '';\n}\n\nfunction stringifyClass(value) {\n  if (Array.isArray(value)) {\n    return stringifyArray(value);\n  }\n\n  if (isObject(value)) {\n    return stringifyObject(value);\n  }\n\n  if (typeof value === 'string') {\n    return value;\n  }\n  /* istanbul ignore next */\n\n\n  return '';\n}\n\nfunction stringifyArray(value) {\n  var res = '';\n  var stringified;\n\n  for (var i = 0, l = value.length; i < l; i++) {\n    if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n      if (res) {\n        res += ' ';\n      }\n\n      res += stringified;\n    }\n  }\n\n  return res;\n}\n\nfunction stringifyObject(value) {\n  var res = '';\n\n  for (var key in value) {\n    if (value[key]) {\n      if (res) {\n        res += ' ';\n      }\n\n      res += key;\n    }\n  }\n\n  return res;\n}\n/*  */\n\n\nvar namespaceMap = {\n  svg: 'http://www.w3.org/2000/svg',\n  math: 'http://www.w3.org/1998/Math/MathML'\n};\nvar isHTMLTag = makeMap('html,body,base,head,link,meta,style,title,' + 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' + 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' + 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' + 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' + 'embed,object,param,source,canvas,script,noscript,del,ins,' + 'caption,col,colgroup,table,thead,tbody,td,th,tr,' + 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' + 'output,progress,select,textarea,' + 'details,dialog,menu,menuitem,summary,' + 'content,element,shadow,template,blockquote,iframe,tfoot'); // this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\n\nvar isSVG = makeMap('svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' + 'foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' + 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view', true);\n\nvar isReservedTag = function isReservedTag(tag) {\n  return isHTMLTag(tag) || isSVG(tag);\n};\n\nfunction getTagNamespace(tag) {\n  if (isSVG(tag)) {\n    return 'svg';\n  } // basic support for MathML\n  // note it doesn't support other MathML elements being component roots\n\n\n  if (tag === 'math') {\n    return 'math';\n  }\n}\n\nvar unknownElementCache = Object.create(null);\n\nfunction isUnknownElement(tag) {\n  /* istanbul ignore if */\n  if (!inBrowser) {\n    return true;\n  }\n\n  if (isReservedTag(tag)) {\n    return false;\n  }\n\n  tag = tag.toLowerCase();\n  /* istanbul ignore if */\n\n  if (unknownElementCache[tag] != null) {\n    return unknownElementCache[tag];\n  }\n\n  var el = document.createElement(tag);\n\n  if (tag.indexOf('-') > -1) {\n    // http://stackoverflow.com/a/28210364/1070244\n    return unknownElementCache[tag] = el.constructor === window.HTMLUnknownElement || el.constructor === window.HTMLElement;\n  } else {\n    return unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString());\n  }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n/*  */\n\n/**\n * Query an element selector if it's not an element already.\n */\n\nfunction query(el) {\n  if (typeof el === 'string') {\n    var selected = document.querySelector(el);\n\n    if (!selected) {\n      process.env.NODE_ENV !== 'production' && warn('Cannot find element: ' + el);\n      return document.createElement('div');\n    }\n\n    return selected;\n  } else {\n    return el;\n  }\n}\n/*  */\n\n\nfunction createElement$1(tagName, vnode) {\n  var elm = document.createElement(tagName);\n\n  if (tagName !== 'select') {\n    return elm;\n  } // false or null will remove the attribute but undefined will not\n\n\n  if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n    elm.setAttribute('multiple', 'multiple');\n  }\n\n  return elm;\n}\n\nfunction createElementNS(namespace, tagName) {\n  return document.createElementNS(namespaceMap[namespace], tagName);\n}\n\nfunction createTextNode(text) {\n  return document.createTextNode(text);\n}\n\nfunction createComment(text) {\n  return document.createComment(text);\n}\n\nfunction insertBefore(parentNode, newNode, referenceNode) {\n  parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild(node, child) {\n  node.removeChild(child);\n}\n\nfunction appendChild(node, child) {\n  node.appendChild(child);\n}\n\nfunction parentNode(node) {\n  return node.parentNode;\n}\n\nfunction nextSibling(node) {\n  return node.nextSibling;\n}\n\nfunction tagName(node) {\n  return node.tagName;\n}\n\nfunction setTextContent(node, text) {\n  node.textContent = text;\n}\n\nfunction setStyleScope(node, scopeId) {\n  node.setAttribute(scopeId, '');\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n  createElement: createElement$1,\n  createElementNS: createElementNS,\n  createTextNode: createTextNode,\n  createComment: createComment,\n  insertBefore: insertBefore,\n  removeChild: removeChild,\n  appendChild: appendChild,\n  parentNode: parentNode,\n  nextSibling: nextSibling,\n  tagName: tagName,\n  setTextContent: setTextContent,\n  setStyleScope: setStyleScope\n});\n/*  */\n\nvar ref = {\n  create: function create(_, vnode) {\n    registerRef(vnode);\n  },\n  update: function update(oldVnode, vnode) {\n    if (oldVnode.data.ref !== vnode.data.ref) {\n      registerRef(oldVnode, true);\n      registerRef(vnode);\n    }\n  },\n  destroy: function destroy(vnode) {\n    registerRef(vnode, true);\n  }\n};\n\nfunction registerRef(vnode, isRemoval) {\n  var key = vnode.data.ref;\n\n  if (!isDef(key)) {\n    return;\n  }\n\n  var vm = vnode.context;\n  var ref = vnode.componentInstance || vnode.elm;\n  var refs = vm.$refs;\n\n  if (isRemoval) {\n    if (Array.isArray(refs[key])) {\n      remove(refs[key], ref);\n    } else if (refs[key] === ref) {\n      refs[key] = undefined;\n    }\n  } else {\n    if (vnode.data.refInFor) {\n      if (!Array.isArray(refs[key])) {\n        refs[key] = [ref];\n      } else if (refs[key].indexOf(ref) < 0) {\n        // $flow-disable-line\n        refs[key].push(ref);\n      }\n    } else {\n      refs[key] = ref;\n    }\n  }\n}\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\n\nvar emptyNode = new VNode('', {}, []);\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode(a, b) {\n  return a.key === b.key && a.asyncFactory === b.asyncFactory && (a.tag === b.tag && a.isComment === b.isComment && isDef(a.data) === isDef(b.data) && sameInputType(a, b) || isTrue(a.isAsyncPlaceholder) && isUndef(b.asyncFactory.error));\n}\n\nfunction sameInputType(a, b) {\n  if (a.tag !== 'input') {\n    return true;\n  }\n\n  var i;\n  var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n  var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n  return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB);\n}\n\nfunction createKeyToOldIdx(children, beginIdx, endIdx) {\n  var i, key;\n  var map = {};\n\n  for (i = beginIdx; i <= endIdx; ++i) {\n    key = children[i].key;\n\n    if (isDef(key)) {\n      map[key] = i;\n    }\n  }\n\n  return map;\n}\n\nfunction createPatchFunction(backend) {\n  var i, j;\n  var cbs = {};\n  var modules = backend.modules;\n  var nodeOps = backend.nodeOps;\n\n  for (i = 0; i < hooks.length; ++i) {\n    cbs[hooks[i]] = [];\n\n    for (j = 0; j < modules.length; ++j) {\n      if (isDef(modules[j][hooks[i]])) {\n        cbs[hooks[i]].push(modules[j][hooks[i]]);\n      }\n    }\n  }\n\n  function emptyNodeAt(elm) {\n    return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm);\n  }\n\n  function createRmCb(childElm, listeners) {\n    function remove$$1() {\n      if (--remove$$1.listeners === 0) {\n        removeNode(childElm);\n      }\n    }\n\n    remove$$1.listeners = listeners;\n    return remove$$1;\n  }\n\n  function removeNode(el) {\n    var parent = nodeOps.parentNode(el); // element may have already been removed due to v-html / v-text\n\n    if (isDef(parent)) {\n      nodeOps.removeChild(parent, el);\n    }\n  }\n\n  function isUnknownElement$$1(vnode, inVPre) {\n    return !inVPre && !vnode.ns && !(config.ignoredElements.length && config.ignoredElements.some(function (ignore) {\n      return isRegExp(ignore) ? ignore.test(vnode.tag) : ignore === vnode.tag;\n    })) && config.isUnknownElement(vnode.tag);\n  }\n\n  var creatingElmInVPre = 0;\n\n  function createElm(vnode, insertedVnodeQueue, parentElm, refElm, nested, ownerArray, index) {\n    if (isDef(vnode.elm) && isDef(ownerArray)) {\n      // This vnode was used in a previous render!\n      // now it's used as a new node, overwriting its elm would cause\n      // potential patch errors down the road when it's used as an insertion\n      // reference node. Instead, we clone the node on-demand before creating\n      // associated DOM element for it.\n      vnode = ownerArray[index] = cloneVNode(vnode);\n    }\n\n    vnode.isRootInsert = !nested; // for transition enter check\n\n    if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n      return;\n    }\n\n    var data = vnode.data;\n    var children = vnode.children;\n    var tag = vnode.tag;\n\n    if (isDef(tag)) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (data && data.pre) {\n          creatingElmInVPre++;\n        }\n\n        if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n          warn('Unknown custom element: <' + tag + '> - did you ' + 'register the component correctly? For recursive components, ' + 'make sure to provide the \"name\" option.', vnode.context);\n        }\n      }\n\n      vnode.elm = vnode.ns ? nodeOps.createElementNS(vnode.ns, tag) : nodeOps.createElement(tag, vnode);\n      setScope(vnode);\n      /* istanbul ignore if */\n\n      {\n        createChildren(vnode, children, insertedVnodeQueue);\n\n        if (isDef(data)) {\n          invokeCreateHooks(vnode, insertedVnodeQueue);\n        }\n\n        insert(parentElm, vnode.elm, refElm);\n      }\n\n      if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n        creatingElmInVPre--;\n      }\n    } else if (isTrue(vnode.isComment)) {\n      vnode.elm = nodeOps.createComment(vnode.text);\n      insert(parentElm, vnode.elm, refElm);\n    } else {\n      vnode.elm = nodeOps.createTextNode(vnode.text);\n      insert(parentElm, vnode.elm, refElm);\n    }\n  }\n\n  function createComponent(vnode, insertedVnodeQueue, parentElm, refElm) {\n    var i = vnode.data;\n\n    if (isDef(i)) {\n      var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n\n      if (isDef(i = i.hook) && isDef(i = i.init)) {\n        i(vnode, false\n        /* hydrating */\n        );\n      } // after calling the init hook, if the vnode is a child component\n      // it should've created a child instance and mounted it. the child\n      // component also has set the placeholder vnode's elm.\n      // in that case we can just return the element and be done.\n\n\n      if (isDef(vnode.componentInstance)) {\n        initComponent(vnode, insertedVnodeQueue);\n        insert(parentElm, vnode.elm, refElm);\n\n        if (isTrue(isReactivated)) {\n          reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n        }\n\n        return true;\n      }\n    }\n  }\n\n  function initComponent(vnode, insertedVnodeQueue) {\n    if (isDef(vnode.data.pendingInsert)) {\n      insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n      vnode.data.pendingInsert = null;\n    }\n\n    vnode.elm = vnode.componentInstance.$el;\n\n    if (isPatchable(vnode)) {\n      invokeCreateHooks(vnode, insertedVnodeQueue);\n      setScope(vnode);\n    } else {\n      // empty component root.\n      // skip all element-related modules except for ref (#3455)\n      registerRef(vnode); // make sure to invoke the insert hook\n\n      insertedVnodeQueue.push(vnode);\n    }\n  }\n\n  function reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm) {\n    var i; // hack for #4339: a reactivated component with inner transition\n    // does not trigger because the inner node's created hooks are not called\n    // again. It's not ideal to involve module-specific logic in here but\n    // there doesn't seem to be a better way to do it.\n\n    var innerNode = vnode;\n\n    while (innerNode.componentInstance) {\n      innerNode = innerNode.componentInstance._vnode;\n\n      if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n        for (i = 0; i < cbs.activate.length; ++i) {\n          cbs.activate[i](emptyNode, innerNode);\n        }\n\n        insertedVnodeQueue.push(innerNode);\n        break;\n      }\n    } // unlike a newly created component,\n    // a reactivated keep-alive component doesn't insert itself\n\n\n    insert(parentElm, vnode.elm, refElm);\n  }\n\n  function insert(parent, elm, ref$$1) {\n    if (isDef(parent)) {\n      if (isDef(ref$$1)) {\n        if (nodeOps.parentNode(ref$$1) === parent) {\n          nodeOps.insertBefore(parent, elm, ref$$1);\n        }\n      } else {\n        nodeOps.appendChild(parent, elm);\n      }\n    }\n  }\n\n  function createChildren(vnode, children, insertedVnodeQueue) {\n    if (Array.isArray(children)) {\n      if (process.env.NODE_ENV !== 'production') {\n        checkDuplicateKeys(children);\n      }\n\n      for (var i = 0; i < children.length; ++i) {\n        createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n      }\n    } else if (isPrimitive(vnode.text)) {\n      nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n    }\n  }\n\n  function isPatchable(vnode) {\n    while (vnode.componentInstance) {\n      vnode = vnode.componentInstance._vnode;\n    }\n\n    return isDef(vnode.tag);\n  }\n\n  function invokeCreateHooks(vnode, insertedVnodeQueue) {\n    for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n      cbs.create[i$1](emptyNode, vnode);\n    }\n\n    i = vnode.data.hook; // Reuse variable\n\n    if (isDef(i)) {\n      if (isDef(i.create)) {\n        i.create(emptyNode, vnode);\n      }\n\n      if (isDef(i.insert)) {\n        insertedVnodeQueue.push(vnode);\n      }\n    }\n  } // set scope id attribute for scoped CSS.\n  // this is implemented as a special case to avoid the overhead\n  // of going through the normal attribute patching process.\n\n\n  function setScope(vnode) {\n    var i;\n\n    if (isDef(i = vnode.fnScopeId)) {\n      nodeOps.setStyleScope(vnode.elm, i);\n    } else {\n      var ancestor = vnode;\n\n      while (ancestor) {\n        if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n          nodeOps.setStyleScope(vnode.elm, i);\n        }\n\n        ancestor = ancestor.parent;\n      }\n    } // for slot content they should also get the scopeId from the host instance.\n\n\n    if (isDef(i = activeInstance) && i !== vnode.context && i !== vnode.fnContext && isDef(i = i.$options._scopeId)) {\n      nodeOps.setStyleScope(vnode.elm, i);\n    }\n  }\n\n  function addVnodes(parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n    for (; startIdx <= endIdx; ++startIdx) {\n      createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n    }\n  }\n\n  function invokeDestroyHook(vnode) {\n    var i, j;\n    var data = vnode.data;\n\n    if (isDef(data)) {\n      if (isDef(i = data.hook) && isDef(i = i.destroy)) {\n        i(vnode);\n      }\n\n      for (i = 0; i < cbs.destroy.length; ++i) {\n        cbs.destroy[i](vnode);\n      }\n    }\n\n    if (isDef(i = vnode.children)) {\n      for (j = 0; j < vnode.children.length; ++j) {\n        invokeDestroyHook(vnode.children[j]);\n      }\n    }\n  }\n\n  function removeVnodes(vnodes, startIdx, endIdx) {\n    for (; startIdx <= endIdx; ++startIdx) {\n      var ch = vnodes[startIdx];\n\n      if (isDef(ch)) {\n        if (isDef(ch.tag)) {\n          removeAndInvokeRemoveHook(ch);\n          invokeDestroyHook(ch);\n        } else {\n          // Text node\n          removeNode(ch.elm);\n        }\n      }\n    }\n  }\n\n  function removeAndInvokeRemoveHook(vnode, rm) {\n    if (isDef(rm) || isDef(vnode.data)) {\n      var i;\n      var listeners = cbs.remove.length + 1;\n\n      if (isDef(rm)) {\n        // we have a recursively passed down rm callback\n        // increase the listeners count\n        rm.listeners += listeners;\n      } else {\n        // directly removing\n        rm = createRmCb(vnode.elm, listeners);\n      } // recursively invoke hooks on child component root node\n\n\n      if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n        removeAndInvokeRemoveHook(i, rm);\n      }\n\n      for (i = 0; i < cbs.remove.length; ++i) {\n        cbs.remove[i](vnode, rm);\n      }\n\n      if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n        i(vnode, rm);\n      } else {\n        rm();\n      }\n    } else {\n      removeNode(vnode.elm);\n    }\n  }\n\n  function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n    var oldStartIdx = 0;\n    var newStartIdx = 0;\n    var oldEndIdx = oldCh.length - 1;\n    var oldStartVnode = oldCh[0];\n    var oldEndVnode = oldCh[oldEndIdx];\n    var newEndIdx = newCh.length - 1;\n    var newStartVnode = newCh[0];\n    var newEndVnode = newCh[newEndIdx];\n    var oldKeyToIdx, idxInOld, vnodeToMove, refElm; // removeOnly is a special flag used only by <transition-group>\n    // to ensure removed elements stay in correct relative positions\n    // during leaving transitions\n\n    var canMove = !removeOnly;\n\n    if (process.env.NODE_ENV !== 'production') {\n      checkDuplicateKeys(newCh);\n    }\n\n    while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n      if (isUndef(oldStartVnode)) {\n        oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n      } else if (isUndef(oldEndVnode)) {\n        oldEndVnode = oldCh[--oldEndIdx];\n      } else if (sameVnode(oldStartVnode, newStartVnode)) {\n        patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n        oldStartVnode = oldCh[++oldStartIdx];\n        newStartVnode = newCh[++newStartIdx];\n      } else if (sameVnode(oldEndVnode, newEndVnode)) {\n        patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n        oldEndVnode = oldCh[--oldEndIdx];\n        newEndVnode = newCh[--newEndIdx];\n      } else if (sameVnode(oldStartVnode, newEndVnode)) {\n        // Vnode moved right\n        patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n        canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n        oldStartVnode = oldCh[++oldStartIdx];\n        newEndVnode = newCh[--newEndIdx];\n      } else if (sameVnode(oldEndVnode, newStartVnode)) {\n        // Vnode moved left\n        patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n        canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n        oldEndVnode = oldCh[--oldEndIdx];\n        newStartVnode = newCh[++newStartIdx];\n      } else {\n        if (isUndef(oldKeyToIdx)) {\n          oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);\n        }\n\n        idxInOld = isDef(newStartVnode.key) ? oldKeyToIdx[newStartVnode.key] : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n\n        if (isUndef(idxInOld)) {\n          // New element\n          createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n        } else {\n          vnodeToMove = oldCh[idxInOld];\n\n          if (sameVnode(vnodeToMove, newStartVnode)) {\n            patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n            oldCh[idxInOld] = undefined;\n            canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n          } else {\n            // same key but different element. treat as new element\n            createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n          }\n        }\n\n        newStartVnode = newCh[++newStartIdx];\n      }\n    }\n\n    if (oldStartIdx > oldEndIdx) {\n      refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n      addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n    } else if (newStartIdx > newEndIdx) {\n      removeVnodes(oldCh, oldStartIdx, oldEndIdx);\n    }\n  }\n\n  function checkDuplicateKeys(children) {\n    var seenKeys = {};\n\n    for (var i = 0; i < children.length; i++) {\n      var vnode = children[i];\n      var key = vnode.key;\n\n      if (isDef(key)) {\n        if (seenKeys[key]) {\n          warn(\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\", vnode.context);\n        } else {\n          seenKeys[key] = true;\n        }\n      }\n    }\n  }\n\n  function findIdxInOld(node, oldCh, start, end) {\n    for (var i = start; i < end; i++) {\n      var c = oldCh[i];\n\n      if (isDef(c) && sameVnode(node, c)) {\n        return i;\n      }\n    }\n  }\n\n  function patchVnode(oldVnode, vnode, insertedVnodeQueue, ownerArray, index, removeOnly) {\n    if (oldVnode === vnode) {\n      return;\n    }\n\n    if (isDef(vnode.elm) && isDef(ownerArray)) {\n      // clone reused vnode\n      vnode = ownerArray[index] = cloneVNode(vnode);\n    }\n\n    var elm = vnode.elm = oldVnode.elm;\n\n    if (isTrue(oldVnode.isAsyncPlaceholder)) {\n      if (isDef(vnode.asyncFactory.resolved)) {\n        hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n      } else {\n        vnode.isAsyncPlaceholder = true;\n      }\n\n      return;\n    } // reuse element for static trees.\n    // note we only do this if the vnode is cloned -\n    // if the new node is not cloned it means the render functions have been\n    // reset by the hot-reload-api and we need to do a proper re-render.\n\n\n    if (isTrue(vnode.isStatic) && isTrue(oldVnode.isStatic) && vnode.key === oldVnode.key && (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))) {\n      vnode.componentInstance = oldVnode.componentInstance;\n      return;\n    }\n\n    var i;\n    var data = vnode.data;\n\n    if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n      i(oldVnode, vnode);\n    }\n\n    var oldCh = oldVnode.children;\n    var ch = vnode.children;\n\n    if (isDef(data) && isPatchable(vnode)) {\n      for (i = 0; i < cbs.update.length; ++i) {\n        cbs.update[i](oldVnode, vnode);\n      }\n\n      if (isDef(i = data.hook) && isDef(i = i.update)) {\n        i(oldVnode, vnode);\n      }\n    }\n\n    if (isUndef(vnode.text)) {\n      if (isDef(oldCh) && isDef(ch)) {\n        if (oldCh !== ch) {\n          updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly);\n        }\n      } else if (isDef(ch)) {\n        if (process.env.NODE_ENV !== 'production') {\n          checkDuplicateKeys(ch);\n        }\n\n        if (isDef(oldVnode.text)) {\n          nodeOps.setTextContent(elm, '');\n        }\n\n        addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n      } else if (isDef(oldCh)) {\n        removeVnodes(oldCh, 0, oldCh.length - 1);\n      } else if (isDef(oldVnode.text)) {\n        nodeOps.setTextContent(elm, '');\n      }\n    } else if (oldVnode.text !== vnode.text) {\n      nodeOps.setTextContent(elm, vnode.text);\n    }\n\n    if (isDef(data)) {\n      if (isDef(i = data.hook) && isDef(i = i.postpatch)) {\n        i(oldVnode, vnode);\n      }\n    }\n  }\n\n  function invokeInsertHook(vnode, queue, initial) {\n    // delay insert hooks for component root nodes, invoke them after the\n    // element is really inserted\n    if (isTrue(initial) && isDef(vnode.parent)) {\n      vnode.parent.data.pendingInsert = queue;\n    } else {\n      for (var i = 0; i < queue.length; ++i) {\n        queue[i].data.hook.insert(queue[i]);\n      }\n    }\n  }\n\n  var hydrationBailed = false; // list of modules that can skip create hook during hydration because they\n  // are already rendered on the client or has no need for initialization\n  // Note: style is excluded because it relies on initial clone for future\n  // deep updates (#7063).\n\n  var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key'); // Note: this is a browser-only function so we can assume elms are DOM nodes.\n\n  function hydrate(elm, vnode, insertedVnodeQueue, inVPre) {\n    var i;\n    var tag = vnode.tag;\n    var data = vnode.data;\n    var children = vnode.children;\n    inVPre = inVPre || data && data.pre;\n    vnode.elm = elm;\n\n    if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n      vnode.isAsyncPlaceholder = true;\n      return true;\n    } // assert node match\n\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (!assertNodeMatch(elm, vnode, inVPre)) {\n        return false;\n      }\n    }\n\n    if (isDef(data)) {\n      if (isDef(i = data.hook) && isDef(i = i.init)) {\n        i(vnode, true\n        /* hydrating */\n        );\n      }\n\n      if (isDef(i = vnode.componentInstance)) {\n        // child component. it should have hydrated its own tree.\n        initComponent(vnode, insertedVnodeQueue);\n        return true;\n      }\n    }\n\n    if (isDef(tag)) {\n      if (isDef(children)) {\n        // empty element, allow client to pick up and populate children\n        if (!elm.hasChildNodes()) {\n          createChildren(vnode, children, insertedVnodeQueue);\n        } else {\n          // v-html and domProps: innerHTML\n          if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n            if (i !== elm.innerHTML) {\n              /* istanbul ignore if */\n              if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined' && !hydrationBailed) {\n                hydrationBailed = true;\n                console.warn('Parent: ', elm);\n                console.warn('server innerHTML: ', i);\n                console.warn('client innerHTML: ', elm.innerHTML);\n              }\n\n              return false;\n            }\n          } else {\n            // iterate and compare children lists\n            var childrenMatch = true;\n            var childNode = elm.firstChild;\n\n            for (var i$1 = 0; i$1 < children.length; i$1++) {\n              if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n                childrenMatch = false;\n                break;\n              }\n\n              childNode = childNode.nextSibling;\n            } // if childNode is not null, it means the actual childNodes list is\n            // longer than the virtual children list.\n\n\n            if (!childrenMatch || childNode) {\n              /* istanbul ignore if */\n              if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined' && !hydrationBailed) {\n                hydrationBailed = true;\n                console.warn('Parent: ', elm);\n                console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n              }\n\n              return false;\n            }\n          }\n        }\n      }\n\n      if (isDef(data)) {\n        var fullInvoke = false;\n\n        for (var key in data) {\n          if (!isRenderedModule(key)) {\n            fullInvoke = true;\n            invokeCreateHooks(vnode, insertedVnodeQueue);\n            break;\n          }\n        }\n\n        if (!fullInvoke && data['class']) {\n          // ensure collecting deps for deep class bindings for future updates\n          traverse(data['class']);\n        }\n      }\n    } else if (elm.data !== vnode.text) {\n      elm.data = vnode.text;\n    }\n\n    return true;\n  }\n\n  function assertNodeMatch(node, vnode, inVPre) {\n    if (isDef(vnode.tag)) {\n      return vnode.tag.indexOf('vue-component') === 0 || !isUnknownElement$$1(vnode, inVPre) && vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase());\n    } else {\n      return node.nodeType === (vnode.isComment ? 8 : 3);\n    }\n  }\n\n  return function patch(oldVnode, vnode, hydrating, removeOnly) {\n    if (isUndef(vnode)) {\n      if (isDef(oldVnode)) {\n        invokeDestroyHook(oldVnode);\n      }\n\n      return;\n    }\n\n    var isInitialPatch = false;\n    var insertedVnodeQueue = [];\n\n    if (isUndef(oldVnode)) {\n      // empty mount (likely as component), create new root element\n      isInitialPatch = true;\n      createElm(vnode, insertedVnodeQueue);\n    } else {\n      var isRealElement = isDef(oldVnode.nodeType);\n\n      if (!isRealElement && sameVnode(oldVnode, vnode)) {\n        // patch existing root node\n        patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n      } else {\n        if (isRealElement) {\n          // mounting to a real element\n          // check if this is server-rendered content and if we can perform\n          // a successful hydration.\n          if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n            oldVnode.removeAttribute(SSR_ATTR);\n            hydrating = true;\n          }\n\n          if (isTrue(hydrating)) {\n            if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n              invokeInsertHook(vnode, insertedVnodeQueue, true);\n              return oldVnode;\n            } else if (process.env.NODE_ENV !== 'production') {\n              warn('The client-side rendered virtual DOM tree is not matching ' + 'server-rendered content. This is likely caused by incorrect ' + 'HTML markup, for example nesting block-level elements inside ' + '<p>, or missing <tbody>. Bailing hydration and performing ' + 'full client-side render.');\n            }\n          } // either not server-rendered, or hydration failed.\n          // create an empty node and replace it\n\n\n          oldVnode = emptyNodeAt(oldVnode);\n        } // replacing existing element\n\n\n        var oldElm = oldVnode.elm;\n        var parentElm = nodeOps.parentNode(oldElm); // create new node\n\n        createElm(vnode, insertedVnodeQueue, // extremely rare edge case: do not insert if old element is in a\n        // leaving transition. Only happens when combining transition +\n        // keep-alive + HOCs. (#4590)\n        oldElm._leaveCb ? null : parentElm, nodeOps.nextSibling(oldElm)); // update parent placeholder node element, recursively\n\n        if (isDef(vnode.parent)) {\n          var ancestor = vnode.parent;\n          var patchable = isPatchable(vnode);\n\n          while (ancestor) {\n            for (var i = 0; i < cbs.destroy.length; ++i) {\n              cbs.destroy[i](ancestor);\n            }\n\n            ancestor.elm = vnode.elm;\n\n            if (patchable) {\n              for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n                cbs.create[i$1](emptyNode, ancestor);\n              } // #6513\n              // invoke insert hooks that may have been merged by create hooks.\n              // e.g. for directives that uses the \"inserted\" hook.\n\n\n              var insert = ancestor.data.hook.insert;\n\n              if (insert.merged) {\n                // start at index 1 to avoid re-invoking component mounted hook\n                for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n                  insert.fns[i$2]();\n                }\n              }\n            } else {\n              registerRef(ancestor);\n            }\n\n            ancestor = ancestor.parent;\n          }\n        } // destroy old node\n\n\n        if (isDef(parentElm)) {\n          removeVnodes([oldVnode], 0, 0);\n        } else if (isDef(oldVnode.tag)) {\n          invokeDestroyHook(oldVnode);\n        }\n      }\n    }\n\n    invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n    return vnode.elm;\n  };\n}\n/*  */\n\n\nvar directives = {\n  create: updateDirectives,\n  update: updateDirectives,\n  destroy: function unbindDirectives(vnode) {\n    updateDirectives(vnode, emptyNode);\n  }\n};\n\nfunction updateDirectives(oldVnode, vnode) {\n  if (oldVnode.data.directives || vnode.data.directives) {\n    _update(oldVnode, vnode);\n  }\n}\n\nfunction _update(oldVnode, vnode) {\n  var isCreate = oldVnode === emptyNode;\n  var isDestroy = vnode === emptyNode;\n  var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n  var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n  var dirsWithInsert = [];\n  var dirsWithPostpatch = [];\n  var key, oldDir, dir;\n\n  for (key in newDirs) {\n    oldDir = oldDirs[key];\n    dir = newDirs[key];\n\n    if (!oldDir) {\n      // new directive, bind\n      callHook$1(dir, 'bind', vnode, oldVnode);\n\n      if (dir.def && dir.def.inserted) {\n        dirsWithInsert.push(dir);\n      }\n    } else {\n      // existing directive, update\n      dir.oldValue = oldDir.value;\n      dir.oldArg = oldDir.arg;\n      callHook$1(dir, 'update', vnode, oldVnode);\n\n      if (dir.def && dir.def.componentUpdated) {\n        dirsWithPostpatch.push(dir);\n      }\n    }\n  }\n\n  if (dirsWithInsert.length) {\n    var callInsert = function callInsert() {\n      for (var i = 0; i < dirsWithInsert.length; i++) {\n        callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n      }\n    };\n\n    if (isCreate) {\n      mergeVNodeHook(vnode, 'insert', callInsert);\n    } else {\n      callInsert();\n    }\n  }\n\n  if (dirsWithPostpatch.length) {\n    mergeVNodeHook(vnode, 'postpatch', function () {\n      for (var i = 0; i < dirsWithPostpatch.length; i++) {\n        callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n      }\n    });\n  }\n\n  if (!isCreate) {\n    for (key in oldDirs) {\n      if (!newDirs[key]) {\n        // no longer present, unbind\n        callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n      }\n    }\n  }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1(dirs, vm) {\n  var res = Object.create(null);\n\n  if (!dirs) {\n    // $flow-disable-line\n    return res;\n  }\n\n  var i, dir;\n\n  for (i = 0; i < dirs.length; i++) {\n    dir = dirs[i];\n\n    if (!dir.modifiers) {\n      // $flow-disable-line\n      dir.modifiers = emptyModifiers;\n    }\n\n    res[getRawDirName(dir)] = dir;\n    dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n  } // $flow-disable-line\n\n\n  return res;\n}\n\nfunction getRawDirName(dir) {\n  return dir.rawName || dir.name + \".\" + Object.keys(dir.modifiers || {}).join('.');\n}\n\nfunction callHook$1(dir, hook, vnode, oldVnode, isDestroy) {\n  var fn = dir.def && dir.def[hook];\n\n  if (fn) {\n    try {\n      fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n    } catch (e) {\n      handleError(e, vnode.context, \"directive \" + dir.name + \" \" + hook + \" hook\");\n    }\n  }\n}\n\nvar baseModules = [ref, directives];\n/*  */\n\nfunction updateAttrs(oldVnode, vnode) {\n  var opts = vnode.componentOptions;\n\n  if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n    return;\n  }\n\n  if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n    return;\n  }\n\n  var key, cur, old;\n  var elm = vnode.elm;\n  var oldAttrs = oldVnode.data.attrs || {};\n  var attrs = vnode.data.attrs || {}; // clone observed objects, as the user probably wants to mutate it\n\n  if (isDef(attrs.__ob__)) {\n    attrs = vnode.data.attrs = extend({}, attrs);\n  }\n\n  for (key in attrs) {\n    cur = attrs[key];\n    old = oldAttrs[key];\n\n    if (old !== cur) {\n      setAttr(elm, key, cur, vnode.data.pre);\n    }\n  } // #4391: in IE9, setting type can reset value for input[type=radio]\n  // #6666: IE/Edge forces progress value down to 1 before setting a max\n\n  /* istanbul ignore if */\n\n\n  if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n    setAttr(elm, 'value', attrs.value);\n  }\n\n  for (key in oldAttrs) {\n    if (isUndef(attrs[key])) {\n      if (isXlink(key)) {\n        elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n      } else if (!isEnumeratedAttr(key)) {\n        elm.removeAttribute(key);\n      }\n    }\n  }\n}\n\nfunction setAttr(el, key, value, isInPre) {\n  if (isInPre || el.tagName.indexOf('-') > -1) {\n    baseSetAttr(el, key, value);\n  } else if (isBooleanAttr(key)) {\n    // set attribute for blank value\n    // e.g. <option disabled>Select one</option>\n    if (isFalsyAttrValue(value)) {\n      el.removeAttribute(key);\n    } else {\n      // technically allowfullscreen is a boolean attribute for <iframe>,\n      // but Flash expects a value of \"true\" when used on <embed> tag\n      value = key === 'allowfullscreen' && el.tagName === 'EMBED' ? 'true' : key;\n      el.setAttribute(key, value);\n    }\n  } else if (isEnumeratedAttr(key)) {\n    el.setAttribute(key, convertEnumeratedValue(key, value));\n  } else if (isXlink(key)) {\n    if (isFalsyAttrValue(value)) {\n      el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n    } else {\n      el.setAttributeNS(xlinkNS, key, value);\n    }\n  } else {\n    baseSetAttr(el, key, value);\n  }\n}\n\nfunction baseSetAttr(el, key, value) {\n  if (isFalsyAttrValue(value)) {\n    el.removeAttribute(key);\n  } else {\n    // #7138: IE10 & 11 fires input event when setting placeholder on\n    // <textarea>... block the first input event and remove the blocker\n    // immediately.\n\n    /* istanbul ignore if */\n    if (isIE && !isIE9 && el.tagName === 'TEXTAREA' && key === 'placeholder' && value !== '' && !el.__ieph) {\n      var blocker = function blocker(e) {\n        e.stopImmediatePropagation();\n        el.removeEventListener('input', blocker);\n      };\n\n      el.addEventListener('input', blocker); // $flow-disable-line\n\n      el.__ieph = true;\n      /* IE placeholder patched */\n    }\n\n    el.setAttribute(key, value);\n  }\n}\n\nvar attrs = {\n  create: updateAttrs,\n  update: updateAttrs\n};\n/*  */\n\nfunction updateClass(oldVnode, vnode) {\n  var el = vnode.elm;\n  var data = vnode.data;\n  var oldData = oldVnode.data;\n\n  if (isUndef(data.staticClass) && isUndef(data.class) && (isUndef(oldData) || isUndef(oldData.staticClass) && isUndef(oldData.class))) {\n    return;\n  }\n\n  var cls = genClassForVnode(vnode); // handle transition classes\n\n  var transitionClass = el._transitionClasses;\n\n  if (isDef(transitionClass)) {\n    cls = concat(cls, stringifyClass(transitionClass));\n  } // set the class\n\n\n  if (cls !== el._prevClass) {\n    el.setAttribute('class', cls);\n    el._prevClass = cls;\n  }\n}\n\nvar klass = {\n  create: updateClass,\n  update: updateClass\n};\n/*  */\n\n/*  */\n\n/*  */\n\n/*  */\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\n\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n/*  */\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\n\nfunction normalizeEvents(on) {\n  /* istanbul ignore if */\n  if (isDef(on[RANGE_TOKEN])) {\n    // IE input[type=range] only supports `change` event\n    var event = isIE ? 'change' : 'input';\n    on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n    delete on[RANGE_TOKEN];\n  } // This was originally intended to fix #4521 but no longer necessary\n  // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n\n  /* istanbul ignore if */\n\n\n  if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n    on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n    delete on[CHECKBOX_RADIO_TOKEN];\n  }\n}\n\nvar target$1;\n\nfunction createOnceHandler$1(event, handler, capture) {\n  var _target = target$1; // save current target element in closure\n\n  return function onceHandler() {\n    var res = handler.apply(null, arguments);\n\n    if (res !== null) {\n      remove$2(event, onceHandler, capture, _target);\n    }\n  };\n} // #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp\n// implementation and does not fire microtasks in between event propagation, so\n// safe to exclude.\n\n\nvar useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);\n\nfunction add$1(name, handler, capture, passive) {\n  // async edge case #6566: inner click event triggers patch, event handler\n  // attached to outer element during patch, and triggered again. This\n  // happens because browsers fire microtask ticks between event propagation.\n  // the solution is simple: we save the timestamp when a handler is attached,\n  // and the handler would only fire if the event passed to it was fired\n  // AFTER it was attached.\n  if (useMicrotaskFix) {\n    var attachedTimestamp = currentFlushTimestamp;\n    var original = handler;\n\n    handler = original._wrapper = function (e) {\n      if ( // no bubbling, should always fire.\n      // this is just a safety net in case event.timeStamp is unreliable in\n      // certain weird environments...\n      e.target === e.currentTarget || // event is fired after handler attachment\n      e.timeStamp >= attachedTimestamp || // bail for environments that have buggy event.timeStamp implementations\n      // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState\n      // #9681 QtWebEngine event.timeStamp is negative value\n      e.timeStamp <= 0 || // #9448 bail if event is fired in another document in a multi-page\n      // electron/nw.js app, since event.timeStamp will be using a different\n      // starting reference\n      e.target.ownerDocument !== document) {\n        return original.apply(this, arguments);\n      }\n    };\n  }\n\n  target$1.addEventListener(name, handler, supportsPassive ? {\n    capture: capture,\n    passive: passive\n  } : capture);\n}\n\nfunction remove$2(name, handler, capture, _target) {\n  (_target || target$1).removeEventListener(name, handler._wrapper || handler, capture);\n}\n\nfunction updateDOMListeners(oldVnode, vnode) {\n  if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n    return;\n  }\n\n  var on = vnode.data.on || {};\n  var oldOn = oldVnode.data.on || {};\n  target$1 = vnode.elm;\n  normalizeEvents(on);\n  updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context);\n  target$1 = undefined;\n}\n\nvar events = {\n  create: updateDOMListeners,\n  update: updateDOMListeners\n};\n/*  */\n\nvar svgContainer;\n\nfunction updateDOMProps(oldVnode, vnode) {\n  if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n    return;\n  }\n\n  var key, cur;\n  var elm = vnode.elm;\n  var oldProps = oldVnode.data.domProps || {};\n  var props = vnode.data.domProps || {}; // clone observed objects, as the user probably wants to mutate it\n\n  if (isDef(props.__ob__)) {\n    props = vnode.data.domProps = extend({}, props);\n  }\n\n  for (key in oldProps) {\n    if (!(key in props)) {\n      elm[key] = '';\n    }\n  }\n\n  for (key in props) {\n    cur = props[key]; // ignore children if the node has textContent or innerHTML,\n    // as these will throw away existing DOM nodes and cause removal errors\n    // on subsequent patches (#3360)\n\n    if (key === 'textContent' || key === 'innerHTML') {\n      if (vnode.children) {\n        vnode.children.length = 0;\n      }\n\n      if (cur === oldProps[key]) {\n        continue;\n      } // #6601 work around Chrome version <= 55 bug where single textNode\n      // replaced by innerHTML/textContent retains its parentNode property\n\n\n      if (elm.childNodes.length === 1) {\n        elm.removeChild(elm.childNodes[0]);\n      }\n    }\n\n    if (key === 'value' && elm.tagName !== 'PROGRESS') {\n      // store value as _value as well since\n      // non-string values will be stringified\n      elm._value = cur; // avoid resetting cursor position when value is the same\n\n      var strCur = isUndef(cur) ? '' : String(cur);\n\n      if (shouldUpdateValue(elm, strCur)) {\n        elm.value = strCur;\n      }\n    } else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {\n      // IE doesn't support innerHTML for SVG elements\n      svgContainer = svgContainer || document.createElement('div');\n      svgContainer.innerHTML = \"<svg>\" + cur + \"</svg>\";\n      var svg = svgContainer.firstChild;\n\n      while (elm.firstChild) {\n        elm.removeChild(elm.firstChild);\n      }\n\n      while (svg.firstChild) {\n        elm.appendChild(svg.firstChild);\n      }\n    } else if ( // skip the update if old and new VDOM state is the same.\n    // `value` is handled separately because the DOM value may be temporarily\n    // out of sync with VDOM state due to focus, composition and modifiers.\n    // This  #4521 by skipping the unnecessary `checked` update.\n    cur !== oldProps[key]) {\n      // some property updates can throw\n      // e.g. `value` on <progress> w/ non-finite value\n      try {\n        elm[key] = cur;\n      } catch (e) {}\n    }\n  }\n} // check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue(elm, checkVal) {\n  return !elm.composing && (elm.tagName === 'OPTION' || isNotInFocusAndDirty(elm, checkVal) || isDirtyWithModifiers(elm, checkVal));\n}\n\nfunction isNotInFocusAndDirty(elm, checkVal) {\n  // return true when textbox (.number and .trim) loses focus and its value is\n  // not equal to the updated value\n  var notInFocus = true; // #6157\n  // work around IE bug when accessing document.activeElement in an iframe\n\n  try {\n    notInFocus = document.activeElement !== elm;\n  } catch (e) {}\n\n  return notInFocus && elm.value !== checkVal;\n}\n\nfunction isDirtyWithModifiers(elm, newVal) {\n  var value = elm.value;\n  var modifiers = elm._vModifiers; // injected by v-model runtime\n\n  if (isDef(modifiers)) {\n    if (modifiers.number) {\n      return toNumber(value) !== toNumber(newVal);\n    }\n\n    if (modifiers.trim) {\n      return value.trim() !== newVal.trim();\n    }\n  }\n\n  return value !== newVal;\n}\n\nvar domProps = {\n  create: updateDOMProps,\n  update: updateDOMProps\n};\n/*  */\n\nvar parseStyleText = cached(function (cssText) {\n  var res = {};\n  var listDelimiter = /;(?![^(]*\\))/g;\n  var propertyDelimiter = /:(.+)/;\n  cssText.split(listDelimiter).forEach(function (item) {\n    if (item) {\n      var tmp = item.split(propertyDelimiter);\n      tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n    }\n  });\n  return res;\n}); // merge static and dynamic style data on the same vnode\n\nfunction normalizeStyleData(data) {\n  var style = normalizeStyleBinding(data.style); // static style is pre-processed into an object during compilation\n  // and is always a fresh object, so it's safe to merge into it\n\n  return data.staticStyle ? extend(data.staticStyle, style) : style;\n} // normalize possible array / string values into Object\n\n\nfunction normalizeStyleBinding(bindingStyle) {\n  if (Array.isArray(bindingStyle)) {\n    return toObject(bindingStyle);\n  }\n\n  if (typeof bindingStyle === 'string') {\n    return parseStyleText(bindingStyle);\n  }\n\n  return bindingStyle;\n}\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\n\n\nfunction getStyle(vnode, checkChild) {\n  var res = {};\n  var styleData;\n\n  if (checkChild) {\n    var childNode = vnode;\n\n    while (childNode.componentInstance) {\n      childNode = childNode.componentInstance._vnode;\n\n      if (childNode && childNode.data && (styleData = normalizeStyleData(childNode.data))) {\n        extend(res, styleData);\n      }\n    }\n  }\n\n  if (styleData = normalizeStyleData(vnode.data)) {\n    extend(res, styleData);\n  }\n\n  var parentNode = vnode;\n\n  while (parentNode = parentNode.parent) {\n    if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n      extend(res, styleData);\n    }\n  }\n\n  return res;\n}\n/*  */\n\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\n\nvar setProp = function setProp(el, name, val) {\n  /* istanbul ignore if */\n  if (cssVarRE.test(name)) {\n    el.style.setProperty(name, val);\n  } else if (importantRE.test(val)) {\n    el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');\n  } else {\n    var normalizedName = normalize(name);\n\n    if (Array.isArray(val)) {\n      // Support values array created by autoprefixer, e.g.\n      // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n      // Set them one by one, and the browser will only set those it can recognize\n      for (var i = 0, len = val.length; i < len; i++) {\n        el.style[normalizedName] = val[i];\n      }\n    } else {\n      el.style[normalizedName] = val;\n    }\n  }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n  emptyStyle = emptyStyle || document.createElement('div').style;\n  prop = camelize(prop);\n\n  if (prop !== 'filter' && prop in emptyStyle) {\n    return prop;\n  }\n\n  var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n\n  for (var i = 0; i < vendorNames.length; i++) {\n    var name = vendorNames[i] + capName;\n\n    if (name in emptyStyle) {\n      return name;\n    }\n  }\n});\n\nfunction updateStyle(oldVnode, vnode) {\n  var data = vnode.data;\n  var oldData = oldVnode.data;\n\n  if (isUndef(data.staticStyle) && isUndef(data.style) && isUndef(oldData.staticStyle) && isUndef(oldData.style)) {\n    return;\n  }\n\n  var cur, name;\n  var el = vnode.elm;\n  var oldStaticStyle = oldData.staticStyle;\n  var oldStyleBinding = oldData.normalizedStyle || oldData.style || {}; // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n\n  var oldStyle = oldStaticStyle || oldStyleBinding;\n  var style = normalizeStyleBinding(vnode.data.style) || {}; // store normalized style under a different key for next diff\n  // make sure to clone it if it's reactive, since the user likely wants\n  // to mutate it.\n\n  vnode.data.normalizedStyle = isDef(style.__ob__) ? extend({}, style) : style;\n  var newStyle = getStyle(vnode, true);\n\n  for (name in oldStyle) {\n    if (isUndef(newStyle[name])) {\n      setProp(el, name, '');\n    }\n  }\n\n  for (name in newStyle) {\n    cur = newStyle[name];\n\n    if (cur !== oldStyle[name]) {\n      // ie9 setting to null has no effect, must use empty string\n      setProp(el, name, cur == null ? '' : cur);\n    }\n  }\n}\n\nvar style = {\n  create: updateStyle,\n  update: updateStyle\n};\n/*  */\n\nvar whitespaceRE = /\\s+/;\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\n\nfunction addClass(el, cls) {\n  /* istanbul ignore if */\n  if (!cls || !(cls = cls.trim())) {\n    return;\n  }\n  /* istanbul ignore else */\n\n\n  if (el.classList) {\n    if (cls.indexOf(' ') > -1) {\n      cls.split(whitespaceRE).forEach(function (c) {\n        return el.classList.add(c);\n      });\n    } else {\n      el.classList.add(cls);\n    }\n  } else {\n    var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n\n    if (cur.indexOf(' ' + cls + ' ') < 0) {\n      el.setAttribute('class', (cur + cls).trim());\n    }\n  }\n}\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\n\n\nfunction removeClass(el, cls) {\n  /* istanbul ignore if */\n  if (!cls || !(cls = cls.trim())) {\n    return;\n  }\n  /* istanbul ignore else */\n\n\n  if (el.classList) {\n    if (cls.indexOf(' ') > -1) {\n      cls.split(whitespaceRE).forEach(function (c) {\n        return el.classList.remove(c);\n      });\n    } else {\n      el.classList.remove(cls);\n    }\n\n    if (!el.classList.length) {\n      el.removeAttribute('class');\n    }\n  } else {\n    var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n    var tar = ' ' + cls + ' ';\n\n    while (cur.indexOf(tar) >= 0) {\n      cur = cur.replace(tar, ' ');\n    }\n\n    cur = cur.trim();\n\n    if (cur) {\n      el.setAttribute('class', cur);\n    } else {\n      el.removeAttribute('class');\n    }\n  }\n}\n/*  */\n\n\nfunction resolveTransition(def$$1) {\n  if (!def$$1) {\n    return;\n  }\n  /* istanbul ignore else */\n\n\n  if (_typeof(def$$1) === 'object') {\n    var res = {};\n\n    if (def$$1.css !== false) {\n      extend(res, autoCssTransition(def$$1.name || 'v'));\n    }\n\n    extend(res, def$$1);\n    return res;\n  } else if (typeof def$$1 === 'string') {\n    return autoCssTransition(def$$1);\n  }\n}\n\nvar autoCssTransition = cached(function (name) {\n  return {\n    enterClass: name + \"-enter\",\n    enterToClass: name + \"-enter-to\",\n    enterActiveClass: name + \"-enter-active\",\n    leaveClass: name + \"-leave\",\n    leaveToClass: name + \"-leave-to\",\n    leaveActiveClass: name + \"-leave-active\"\n  };\n});\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation'; // Transition property/event sniffing\n\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\n\nif (hasTransition) {\n  /* istanbul ignore if */\n  if (window.ontransitionend === undefined && window.onwebkittransitionend !== undefined) {\n    transitionProp = 'WebkitTransition';\n    transitionEndEvent = 'webkitTransitionEnd';\n  }\n\n  if (window.onanimationend === undefined && window.onwebkitanimationend !== undefined) {\n    animationProp = 'WebkitAnimation';\n    animationEndEvent = 'webkitAnimationEnd';\n  }\n} // binding to window is necessary to make hot reload work in IE in strict mode\n\n\nvar raf = inBrowser ? window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : setTimeout :\n/* istanbul ignore next */\nfunction (fn) {\n  return fn();\n};\n\nfunction nextFrame(fn) {\n  raf(function () {\n    raf(fn);\n  });\n}\n\nfunction addTransitionClass(el, cls) {\n  var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n\n  if (transitionClasses.indexOf(cls) < 0) {\n    transitionClasses.push(cls);\n    addClass(el, cls);\n  }\n}\n\nfunction removeTransitionClass(el, cls) {\n  if (el._transitionClasses) {\n    remove(el._transitionClasses, cls);\n  }\n\n  removeClass(el, cls);\n}\n\nfunction whenTransitionEnds(el, expectedType, cb) {\n  var ref = getTransitionInfo(el, expectedType);\n  var type = ref.type;\n  var timeout = ref.timeout;\n  var propCount = ref.propCount;\n\n  if (!type) {\n    return cb();\n  }\n\n  var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n  var ended = 0;\n\n  var end = function end() {\n    el.removeEventListener(event, onEnd);\n    cb();\n  };\n\n  var onEnd = function onEnd(e) {\n    if (e.target === el) {\n      if (++ended >= propCount) {\n        end();\n      }\n    }\n  };\n\n  setTimeout(function () {\n    if (ended < propCount) {\n      end();\n    }\n  }, timeout + 1);\n  el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo(el, expectedType) {\n  var styles = window.getComputedStyle(el); // JSDOM may return undefined for transition properties\n\n  var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\n  var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\n  var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n  var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\n  var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\n  var animationTimeout = getTimeout(animationDelays, animationDurations);\n  var type;\n  var timeout = 0;\n  var propCount = 0;\n  /* istanbul ignore if */\n\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\n  var hasTransform = type === TRANSITION && transformRE.test(styles[transitionProp + 'Property']);\n  return {\n    type: type,\n    timeout: timeout,\n    propCount: propCount,\n    hasTransform: hasTransform\n  };\n}\n\nfunction getTimeout(delays, durations) {\n  /* istanbul ignore next */\n  while (delays.length < durations.length) {\n    delays = delays.concat(delays);\n  }\n\n  return Math.max.apply(null, durations.map(function (d, i) {\n    return toMs(d) + toMs(delays[i]);\n  }));\n} // Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\n// in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\n// as a floor function) causing unexpected behaviors\n\n\nfunction toMs(s) {\n  return Number(s.slice(0, -1).replace(',', '.')) * 1000;\n}\n/*  */\n\n\nfunction enter(vnode, toggleDisplay) {\n  var el = vnode.elm; // call leave callback now\n\n  if (isDef(el._leaveCb)) {\n    el._leaveCb.cancelled = true;\n\n    el._leaveCb();\n  }\n\n  var data = resolveTransition(vnode.data.transition);\n\n  if (isUndef(data)) {\n    return;\n  }\n  /* istanbul ignore if */\n\n\n  if (isDef(el._enterCb) || el.nodeType !== 1) {\n    return;\n  }\n\n  var css = data.css;\n  var type = data.type;\n  var enterClass = data.enterClass;\n  var enterToClass = data.enterToClass;\n  var enterActiveClass = data.enterActiveClass;\n  var appearClass = data.appearClass;\n  var appearToClass = data.appearToClass;\n  var appearActiveClass = data.appearActiveClass;\n  var beforeEnter = data.beforeEnter;\n  var enter = data.enter;\n  var afterEnter = data.afterEnter;\n  var enterCancelled = data.enterCancelled;\n  var beforeAppear = data.beforeAppear;\n  var appear = data.appear;\n  var afterAppear = data.afterAppear;\n  var appearCancelled = data.appearCancelled;\n  var duration = data.duration; // activeInstance will always be the <transition> component managing this\n  // transition. One edge case to check is when the <transition> is placed\n  // as the root node of a child component. In that case we need to check\n  // <transition>'s parent for appear check.\n\n  var context = activeInstance;\n  var transitionNode = activeInstance.$vnode;\n\n  while (transitionNode && transitionNode.parent) {\n    context = transitionNode.context;\n    transitionNode = transitionNode.parent;\n  }\n\n  var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n  if (isAppear && !appear && appear !== '') {\n    return;\n  }\n\n  var startClass = isAppear && appearClass ? appearClass : enterClass;\n  var activeClass = isAppear && appearActiveClass ? appearActiveClass : enterActiveClass;\n  var toClass = isAppear && appearToClass ? appearToClass : enterToClass;\n  var beforeEnterHook = isAppear ? beforeAppear || beforeEnter : beforeEnter;\n  var enterHook = isAppear ? typeof appear === 'function' ? appear : enter : enter;\n  var afterEnterHook = isAppear ? afterAppear || afterEnter : afterEnter;\n  var enterCancelledHook = isAppear ? appearCancelled || enterCancelled : enterCancelled;\n  var explicitEnterDuration = toNumber(isObject(duration) ? duration.enter : duration);\n\n  if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n    checkDuration(explicitEnterDuration, 'enter', vnode);\n  }\n\n  var expectsCSS = css !== false && !isIE9;\n  var userWantsControl = getHookArgumentsLength(enterHook);\n  var cb = el._enterCb = once(function () {\n    if (expectsCSS) {\n      removeTransitionClass(el, toClass);\n      removeTransitionClass(el, activeClass);\n    }\n\n    if (cb.cancelled) {\n      if (expectsCSS) {\n        removeTransitionClass(el, startClass);\n      }\n\n      enterCancelledHook && enterCancelledHook(el);\n    } else {\n      afterEnterHook && afterEnterHook(el);\n    }\n\n    el._enterCb = null;\n  });\n\n  if (!vnode.data.show) {\n    // remove pending leave element on enter by injecting an insert hook\n    mergeVNodeHook(vnode, 'insert', function () {\n      var parent = el.parentNode;\n      var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n\n      if (pendingNode && pendingNode.tag === vnode.tag && pendingNode.elm._leaveCb) {\n        pendingNode.elm._leaveCb();\n      }\n\n      enterHook && enterHook(el, cb);\n    });\n  } // start enter transition\n\n\n  beforeEnterHook && beforeEnterHook(el);\n\n  if (expectsCSS) {\n    addTransitionClass(el, startClass);\n    addTransitionClass(el, activeClass);\n    nextFrame(function () {\n      removeTransitionClass(el, startClass);\n\n      if (!cb.cancelled) {\n        addTransitionClass(el, toClass);\n\n        if (!userWantsControl) {\n          if (isValidDuration(explicitEnterDuration)) {\n            setTimeout(cb, explicitEnterDuration);\n          } else {\n            whenTransitionEnds(el, type, cb);\n          }\n        }\n      }\n    });\n  }\n\n  if (vnode.data.show) {\n    toggleDisplay && toggleDisplay();\n    enterHook && enterHook(el, cb);\n  }\n\n  if (!expectsCSS && !userWantsControl) {\n    cb();\n  }\n}\n\nfunction leave(vnode, rm) {\n  var el = vnode.elm; // call enter callback now\n\n  if (isDef(el._enterCb)) {\n    el._enterCb.cancelled = true;\n\n    el._enterCb();\n  }\n\n  var data = resolveTransition(vnode.data.transition);\n\n  if (isUndef(data) || el.nodeType !== 1) {\n    return rm();\n  }\n  /* istanbul ignore if */\n\n\n  if (isDef(el._leaveCb)) {\n    return;\n  }\n\n  var css = data.css;\n  var type = data.type;\n  var leaveClass = data.leaveClass;\n  var leaveToClass = data.leaveToClass;\n  var leaveActiveClass = data.leaveActiveClass;\n  var beforeLeave = data.beforeLeave;\n  var leave = data.leave;\n  var afterLeave = data.afterLeave;\n  var leaveCancelled = data.leaveCancelled;\n  var delayLeave = data.delayLeave;\n  var duration = data.duration;\n  var expectsCSS = css !== false && !isIE9;\n  var userWantsControl = getHookArgumentsLength(leave);\n  var explicitLeaveDuration = toNumber(isObject(duration) ? duration.leave : duration);\n\n  if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n    checkDuration(explicitLeaveDuration, 'leave', vnode);\n  }\n\n  var cb = el._leaveCb = once(function () {\n    if (el.parentNode && el.parentNode._pending) {\n      el.parentNode._pending[vnode.key] = null;\n    }\n\n    if (expectsCSS) {\n      removeTransitionClass(el, leaveToClass);\n      removeTransitionClass(el, leaveActiveClass);\n    }\n\n    if (cb.cancelled) {\n      if (expectsCSS) {\n        removeTransitionClass(el, leaveClass);\n      }\n\n      leaveCancelled && leaveCancelled(el);\n    } else {\n      rm();\n      afterLeave && afterLeave(el);\n    }\n\n    el._leaveCb = null;\n  });\n\n  if (delayLeave) {\n    delayLeave(performLeave);\n  } else {\n    performLeave();\n  }\n\n  function performLeave() {\n    // the delayed leave may have already been cancelled\n    if (cb.cancelled) {\n      return;\n    } // record leaving element\n\n\n    if (!vnode.data.show && el.parentNode) {\n      (el.parentNode._pending || (el.parentNode._pending = {}))[vnode.key] = vnode;\n    }\n\n    beforeLeave && beforeLeave(el);\n\n    if (expectsCSS) {\n      addTransitionClass(el, leaveClass);\n      addTransitionClass(el, leaveActiveClass);\n      nextFrame(function () {\n        removeTransitionClass(el, leaveClass);\n\n        if (!cb.cancelled) {\n          addTransitionClass(el, leaveToClass);\n\n          if (!userWantsControl) {\n            if (isValidDuration(explicitLeaveDuration)) {\n              setTimeout(cb, explicitLeaveDuration);\n            } else {\n              whenTransitionEnds(el, type, cb);\n            }\n          }\n        }\n      });\n    }\n\n    leave && leave(el, cb);\n\n    if (!expectsCSS && !userWantsControl) {\n      cb();\n    }\n  }\n} // only used in dev mode\n\n\nfunction checkDuration(val, name, vnode) {\n  if (typeof val !== 'number') {\n    warn(\"<transition> explicit \" + name + \" duration is not a valid number - \" + \"got \" + JSON.stringify(val) + \".\", vnode.context);\n  } else if (isNaN(val)) {\n    warn(\"<transition> explicit \" + name + \" duration is NaN - \" + 'the duration expression might be incorrect.', vnode.context);\n  }\n}\n\nfunction isValidDuration(val) {\n  return typeof val === 'number' && !isNaN(val);\n}\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\n\n\nfunction getHookArgumentsLength(fn) {\n  if (isUndef(fn)) {\n    return false;\n  }\n\n  var invokerFns = fn.fns;\n\n  if (isDef(invokerFns)) {\n    // invoker\n    return getHookArgumentsLength(Array.isArray(invokerFns) ? invokerFns[0] : invokerFns);\n  } else {\n    return (fn._length || fn.length) > 1;\n  }\n}\n\nfunction _enter(_, vnode) {\n  if (vnode.data.show !== true) {\n    enter(vnode);\n  }\n}\n\nvar transition = inBrowser ? {\n  create: _enter,\n  activate: _enter,\n  remove: function remove$$1(vnode, rm) {\n    /* istanbul ignore else */\n    if (vnode.data.show !== true) {\n      leave(vnode, rm);\n    } else {\n      rm();\n    }\n  }\n} : {};\nvar platformModules = [attrs, klass, events, domProps, style, transition];\n/*  */\n// the directive module should be applied last, after all\n// built-in modules have been applied.\n\nvar modules = platformModules.concat(baseModules);\nvar patch = createPatchFunction({\n  nodeOps: nodeOps,\n  modules: modules\n});\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\n\nif (isIE9) {\n  // http://www.matts411.com/post/internet-explorer-9-oninput/\n  document.addEventListener('selectionchange', function () {\n    var el = document.activeElement;\n\n    if (el && el.vmodel) {\n      trigger(el, 'input');\n    }\n  });\n}\n\nvar directive = {\n  inserted: function inserted(el, binding, vnode, oldVnode) {\n    if (vnode.tag === 'select') {\n      // #6903\n      if (oldVnode.elm && !oldVnode.elm._vOptions) {\n        mergeVNodeHook(vnode, 'postpatch', function () {\n          directive.componentUpdated(el, binding, vnode);\n        });\n      } else {\n        setSelected(el, binding, vnode.context);\n      }\n\n      el._vOptions = [].map.call(el.options, getValue);\n    } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n      el._vModifiers = binding.modifiers;\n\n      if (!binding.modifiers.lazy) {\n        el.addEventListener('compositionstart', onCompositionStart);\n        el.addEventListener('compositionend', onCompositionEnd); // Safari < 10.2 & UIWebView doesn't fire compositionend when\n        // switching focus before confirming composition choice\n        // this also fixes the issue where some browsers e.g. iOS Chrome\n        // fires \"change\" instead of \"input\" on autocomplete.\n\n        el.addEventListener('change', onCompositionEnd);\n        /* istanbul ignore if */\n\n        if (isIE9) {\n          el.vmodel = true;\n        }\n      }\n    }\n  },\n  componentUpdated: function componentUpdated(el, binding, vnode) {\n    if (vnode.tag === 'select') {\n      setSelected(el, binding, vnode.context); // in case the options rendered by v-for have changed,\n      // it's possible that the value is out-of-sync with the rendered options.\n      // detect such cases and filter out values that no longer has a matching\n      // option in the DOM.\n\n      var prevOptions = el._vOptions;\n      var curOptions = el._vOptions = [].map.call(el.options, getValue);\n\n      if (curOptions.some(function (o, i) {\n        return !looseEqual(o, prevOptions[i]);\n      })) {\n        // trigger change event if\n        // no matching option found for at least one value\n        var needReset = el.multiple ? binding.value.some(function (v) {\n          return hasNoMatchingOption(v, curOptions);\n        }) : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n\n        if (needReset) {\n          trigger(el, 'change');\n        }\n      }\n    }\n  }\n};\n\nfunction setSelected(el, binding, vm) {\n  actuallySetSelected(el, binding, vm);\n  /* istanbul ignore if */\n\n  if (isIE || isEdge) {\n    setTimeout(function () {\n      actuallySetSelected(el, binding, vm);\n    }, 0);\n  }\n}\n\nfunction actuallySetSelected(el, binding, vm) {\n  var value = binding.value;\n  var isMultiple = el.multiple;\n\n  if (isMultiple && !Array.isArray(value)) {\n    process.env.NODE_ENV !== 'production' && warn(\"<select multiple v-model=\\\"\" + binding.expression + \"\\\"> \" + \"expects an Array value for its binding, but got \" + Object.prototype.toString.call(value).slice(8, -1), vm);\n    return;\n  }\n\n  var selected, option;\n\n  for (var i = 0, l = el.options.length; i < l; i++) {\n    option = el.options[i];\n\n    if (isMultiple) {\n      selected = looseIndexOf(value, getValue(option)) > -1;\n\n      if (option.selected !== selected) {\n        option.selected = selected;\n      }\n    } else {\n      if (looseEqual(getValue(option), value)) {\n        if (el.selectedIndex !== i) {\n          el.selectedIndex = i;\n        }\n\n        return;\n      }\n    }\n  }\n\n  if (!isMultiple) {\n    el.selectedIndex = -1;\n  }\n}\n\nfunction hasNoMatchingOption(value, options) {\n  return options.every(function (o) {\n    return !looseEqual(o, value);\n  });\n}\n\nfunction getValue(option) {\n  return '_value' in option ? option._value : option.value;\n}\n\nfunction onCompositionStart(e) {\n  e.target.composing = true;\n}\n\nfunction onCompositionEnd(e) {\n  // prevent triggering an input event for no reason\n  if (!e.target.composing) {\n    return;\n  }\n\n  e.target.composing = false;\n  trigger(e.target, 'input');\n}\n\nfunction trigger(el, type) {\n  var e = document.createEvent('HTMLEvents');\n  e.initEvent(type, true, true);\n  el.dispatchEvent(e);\n}\n/*  */\n// recursively search for possible transition defined inside the component root\n\n\nfunction locateNode(vnode) {\n  return vnode.componentInstance && (!vnode.data || !vnode.data.transition) ? locateNode(vnode.componentInstance._vnode) : vnode;\n}\n\nvar show = {\n  bind: function bind(el, ref, vnode) {\n    var value = ref.value;\n    vnode = locateNode(vnode);\n    var transition$$1 = vnode.data && vnode.data.transition;\n    var originalDisplay = el.__vOriginalDisplay = el.style.display === 'none' ? '' : el.style.display;\n\n    if (value && transition$$1) {\n      vnode.data.show = true;\n      enter(vnode, function () {\n        el.style.display = originalDisplay;\n      });\n    } else {\n      el.style.display = value ? originalDisplay : 'none';\n    }\n  },\n  update: function update(el, ref, vnode) {\n    var value = ref.value;\n    var oldValue = ref.oldValue;\n    /* istanbul ignore if */\n\n    if (!value === !oldValue) {\n      return;\n    }\n\n    vnode = locateNode(vnode);\n    var transition$$1 = vnode.data && vnode.data.transition;\n\n    if (transition$$1) {\n      vnode.data.show = true;\n\n      if (value) {\n        enter(vnode, function () {\n          el.style.display = el.__vOriginalDisplay;\n        });\n      } else {\n        leave(vnode, function () {\n          el.style.display = 'none';\n        });\n      }\n    } else {\n      el.style.display = value ? el.__vOriginalDisplay : 'none';\n    }\n  },\n  unbind: function unbind(el, binding, vnode, oldVnode, isDestroy) {\n    if (!isDestroy) {\n      el.style.display = el.__vOriginalDisplay;\n    }\n  }\n};\nvar platformDirectives = {\n  model: directive,\n  show: show\n};\n/*  */\n\nvar transitionProps = {\n  name: String,\n  appear: Boolean,\n  css: Boolean,\n  mode: String,\n  type: String,\n  enterClass: String,\n  leaveClass: String,\n  enterToClass: String,\n  leaveToClass: String,\n  enterActiveClass: String,\n  leaveActiveClass: String,\n  appearClass: String,\n  appearActiveClass: String,\n  appearToClass: String,\n  duration: [Number, String, Object]\n}; // in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\n\nfunction getRealChild(vnode) {\n  var compOptions = vnode && vnode.componentOptions;\n\n  if (compOptions && compOptions.Ctor.options.abstract) {\n    return getRealChild(getFirstComponentChild(compOptions.children));\n  } else {\n    return vnode;\n  }\n}\n\nfunction extractTransitionData(comp) {\n  var data = {};\n  var options = comp.$options; // props\n\n  for (var key in options.propsData) {\n    data[key] = comp[key];\n  } // events.\n  // extract listeners and pass them directly to the transition methods\n\n\n  var listeners = options._parentListeners;\n\n  for (var key$1 in listeners) {\n    data[camelize(key$1)] = listeners[key$1];\n  }\n\n  return data;\n}\n\nfunction placeholder(h, rawChild) {\n  if (/\\d-keep-alive$/.test(rawChild.tag)) {\n    return h('keep-alive', {\n      props: rawChild.componentOptions.propsData\n    });\n  }\n}\n\nfunction hasParentTransition(vnode) {\n  while (vnode = vnode.parent) {\n    if (vnode.data.transition) {\n      return true;\n    }\n  }\n}\n\nfunction isSameChild(child, oldChild) {\n  return oldChild.key === child.key && oldChild.tag === child.tag;\n}\n\nvar isNotTextNode = function isNotTextNode(c) {\n  return c.tag || isAsyncPlaceholder(c);\n};\n\nvar isVShowDirective = function isVShowDirective(d) {\n  return d.name === 'show';\n};\n\nvar Transition = {\n  name: 'transition',\n  props: transitionProps,\n  abstract: true,\n  render: function render(h) {\n    var this$1 = this;\n    var children = this.$slots.default;\n\n    if (!children) {\n      return;\n    } // filter out text nodes (possible whitespaces)\n\n\n    children = children.filter(isNotTextNode);\n    /* istanbul ignore if */\n\n    if (!children.length) {\n      return;\n    } // warn multiple elements\n\n\n    if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n      warn('<transition> can only be used on a single element. Use ' + '<transition-group> for lists.', this.$parent);\n    }\n\n    var mode = this.mode; // warn invalid mode\n\n    if (process.env.NODE_ENV !== 'production' && mode && mode !== 'in-out' && mode !== 'out-in') {\n      warn('invalid <transition> mode: ' + mode, this.$parent);\n    }\n\n    var rawChild = children[0]; // if this is a component root node and the component's\n    // parent container node also has transition, skip.\n\n    if (hasParentTransition(this.$vnode)) {\n      return rawChild;\n    } // apply transition data to child\n    // use getRealChild() to ignore abstract components e.g. keep-alive\n\n\n    var child = getRealChild(rawChild);\n    /* istanbul ignore if */\n\n    if (!child) {\n      return rawChild;\n    }\n\n    if (this._leaving) {\n      return placeholder(h, rawChild);\n    } // ensure a key that is unique to the vnode type and to this transition\n    // component instance. This key will be used to remove pending leaving nodes\n    // during entering.\n\n\n    var id = \"__transition-\" + this._uid + \"-\";\n    child.key = child.key == null ? child.isComment ? id + 'comment' : id + child.tag : isPrimitive(child.key) ? String(child.key).indexOf(id) === 0 ? child.key : id + child.key : child.key;\n    var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n    var oldRawChild = this._vnode;\n    var oldChild = getRealChild(oldRawChild); // mark v-show\n    // so that the transition module can hand over the control to the directive\n\n    if (child.data.directives && child.data.directives.some(isVShowDirective)) {\n      child.data.show = true;\n    }\n\n    if (oldChild && oldChild.data && !isSameChild(child, oldChild) && !isAsyncPlaceholder(oldChild) && // #6687 component root is a comment node\n    !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)) {\n      // replace old child transition data with fresh one\n      // important for dynamic transitions!\n      var oldData = oldChild.data.transition = extend({}, data); // handle transition mode\n\n      if (mode === 'out-in') {\n        // return placeholder node and queue update when leave finishes\n        this._leaving = true;\n        mergeVNodeHook(oldData, 'afterLeave', function () {\n          this$1._leaving = false;\n          this$1.$forceUpdate();\n        });\n        return placeholder(h, rawChild);\n      } else if (mode === 'in-out') {\n        if (isAsyncPlaceholder(child)) {\n          return oldRawChild;\n        }\n\n        var delayedLeave;\n\n        var performLeave = function performLeave() {\n          delayedLeave();\n        };\n\n        mergeVNodeHook(data, 'afterEnter', performLeave);\n        mergeVNodeHook(data, 'enterCancelled', performLeave);\n        mergeVNodeHook(oldData, 'delayLeave', function (leave) {\n          delayedLeave = leave;\n        });\n      }\n    }\n\n    return rawChild;\n  }\n};\n/*  */\n\nvar props = extend({\n  tag: String,\n  moveClass: String\n}, transitionProps);\ndelete props.mode;\nvar TransitionGroup = {\n  props: props,\n  beforeMount: function beforeMount() {\n    var this$1 = this;\n    var update = this._update;\n\n    this._update = function (vnode, hydrating) {\n      var restoreActiveInstance = setActiveInstance(this$1); // force removing pass\n\n      this$1.__patch__(this$1._vnode, this$1.kept, false, // hydrating\n      true // removeOnly (!important, avoids unnecessary moves)\n      );\n\n      this$1._vnode = this$1.kept;\n      restoreActiveInstance();\n      update.call(this$1, vnode, hydrating);\n    };\n  },\n  render: function render(h) {\n    var tag = this.tag || this.$vnode.data.tag || 'span';\n    var map = Object.create(null);\n    var prevChildren = this.prevChildren = this.children;\n    var rawChildren = this.$slots.default || [];\n    var children = this.children = [];\n    var transitionData = extractTransitionData(this);\n\n    for (var i = 0; i < rawChildren.length; i++) {\n      var c = rawChildren[i];\n\n      if (c.tag) {\n        if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n          children.push(c);\n          map[c.key] = c;\n          (c.data || (c.data = {})).transition = transitionData;\n        } else if (process.env.NODE_ENV !== 'production') {\n          var opts = c.componentOptions;\n          var name = opts ? opts.Ctor.options.name || opts.tag || '' : c.tag;\n          warn(\"<transition-group> children must be keyed: <\" + name + \">\");\n        }\n      }\n    }\n\n    if (prevChildren) {\n      var kept = [];\n      var removed = [];\n\n      for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n        var c$1 = prevChildren[i$1];\n        c$1.data.transition = transitionData;\n        c$1.data.pos = c$1.elm.getBoundingClientRect();\n\n        if (map[c$1.key]) {\n          kept.push(c$1);\n        } else {\n          removed.push(c$1);\n        }\n      }\n\n      this.kept = h(tag, null, kept);\n      this.removed = removed;\n    }\n\n    return h(tag, null, children);\n  },\n  updated: function updated() {\n    var children = this.prevChildren;\n    var moveClass = this.moveClass || (this.name || 'v') + '-move';\n\n    if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n      return;\n    } // we divide the work into three loops to avoid mixing DOM reads and writes\n    // in each iteration - which helps prevent layout thrashing.\n\n\n    children.forEach(callPendingCbs);\n    children.forEach(recordPosition);\n    children.forEach(applyTranslation); // force reflow to put everything in position\n    // assign to this to avoid being removed in tree-shaking\n    // $flow-disable-line\n\n    this._reflow = document.body.offsetHeight;\n    children.forEach(function (c) {\n      if (c.data.moved) {\n        var el = c.elm;\n        var s = el.style;\n        addTransitionClass(el, moveClass);\n        s.transform = s.WebkitTransform = s.transitionDuration = '';\n        el.addEventListener(transitionEndEvent, el._moveCb = function cb(e) {\n          if (e && e.target !== el) {\n            return;\n          }\n\n          if (!e || /transform$/.test(e.propertyName)) {\n            el.removeEventListener(transitionEndEvent, cb);\n            el._moveCb = null;\n            removeTransitionClass(el, moveClass);\n          }\n        });\n      }\n    });\n  },\n  methods: {\n    hasMove: function hasMove(el, moveClass) {\n      /* istanbul ignore if */\n      if (!hasTransition) {\n        return false;\n      }\n      /* istanbul ignore if */\n\n\n      if (this._hasMove) {\n        return this._hasMove;\n      } // Detect whether an element with the move class applied has\n      // CSS transitions. Since the element may be inside an entering\n      // transition at this very moment, we make a clone of it and remove\n      // all other transition classes applied to ensure only the move class\n      // is applied.\n\n\n      var clone = el.cloneNode();\n\n      if (el._transitionClasses) {\n        el._transitionClasses.forEach(function (cls) {\n          removeClass(clone, cls);\n        });\n      }\n\n      addClass(clone, moveClass);\n      clone.style.display = 'none';\n      this.$el.appendChild(clone);\n      var info = getTransitionInfo(clone);\n      this.$el.removeChild(clone);\n      return this._hasMove = info.hasTransform;\n    }\n  }\n};\n\nfunction callPendingCbs(c) {\n  /* istanbul ignore if */\n  if (c.elm._moveCb) {\n    c.elm._moveCb();\n  }\n  /* istanbul ignore if */\n\n\n  if (c.elm._enterCb) {\n    c.elm._enterCb();\n  }\n}\n\nfunction recordPosition(c) {\n  c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation(c) {\n  var oldPos = c.data.pos;\n  var newPos = c.data.newPos;\n  var dx = oldPos.left - newPos.left;\n  var dy = oldPos.top - newPos.top;\n\n  if (dx || dy) {\n    c.data.moved = true;\n    var s = c.elm.style;\n    s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n    s.transitionDuration = '0s';\n  }\n}\n\nvar platformComponents = {\n  Transition: Transition,\n  TransitionGroup: TransitionGroup\n};\n/*  */\n// install platform specific utils\n\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement; // install platform runtime directives & components\n\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents); // install platform patch function\n\nVue.prototype.__patch__ = inBrowser ? patch : noop; // public mount method\n\nVue.prototype.$mount = function (el, hydrating) {\n  el = el && inBrowser ? query(el) : undefined;\n  return mountComponent(this, el, hydrating);\n}; // devtools global hook\n\n/* istanbul ignore next */\n\n\nif (inBrowser) {\n  setTimeout(function () {\n    if (config.devtools) {\n      if (devtools) {\n        devtools.emit('init', Vue);\n      } else if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test') {\n        console[console.info ? 'info' : 'log']('Download the Vue Devtools extension for a better development experience:\\n' + 'https://github.com/vuejs/vue-devtools');\n      }\n    }\n\n    if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test' && config.productionTip !== false && typeof console !== 'undefined') {\n      console[console.info ? 'info' : 'log'](\"You are running Vue in development mode.\\n\" + \"Make sure to turn on production mode when deploying for production.\\n\" + \"See more tips at https://vuejs.org/guide/deployment.html\");\n    }\n  }, 0);\n}\n/*  */\n\n\nexport default Vue;","import ApplicationController from './application_controller';\n\nexport default class extends ApplicationController {\n  static targets = ['info', 'noAuto'];\n\n  initialize() {\n    this.index = 0;\n    this.items = 3;\n  }\n\n  connect() {\n    this.startCarousel();\n  }\n\n  disconnect() {\n    this.stopCarousel();\n  }\n\n  startCarousel() {\n    if (this.noAutoTargets.length === 0) {\n      this.showNextDiv();\n      this.interval = setInterval(() => {\n        this.showNextDiv();\n      }, 6000);\n    }\n  }\n\n  stopCarousel() {\n    clearInterval(this.interval);\n  }\n\n  next() {\n    this.showNextDiv();\n  }\n\n  show(event) {\n    this.stopCarousel();\n    this.infoTargets.forEach((element, index) => {\n      const svg = document.getElementById(`icon${index}`);\n      let paths = null;\n      if (svg) {\n        paths = svg.querySelectorAll('path');\n      }\n      if (index.toString() === event.params.id.toString()) {\n        element.classList.remove('d-none');\n        if (paths) {\n          paths.forEach((path) => {\n            path.style.stroke = '#2da3dc';\n          });\n        }\n      } else {\n        element.classList.add('d-none');\n        if (paths) {\n          paths.forEach((path) => {\n            path.style.stroke = '#b9e5fb';\n          });\n        }\n      }\n    });\n  }\n\n  hide() {\n    this.infoTargets.forEach((element, index) => {\n      element.classList.add('d-none');\n    });\n    this.startCarousel();\n  }\n\n  showNextDiv() {\n    this.index = (this.index + 1) % this.infoTargets.length;\n    this.updateVisibleDiv();\n  }\n\n  updateVisibleDiv() {\n    this.infoTargets.forEach((element, index) => {\n      const svg = document.getElementById(`icon${index}`);\n      let paths = null;\n      if (svg) {\n        paths = svg.querySelectorAll('path');\n      }\n      if (index === this.index) {\n        element.classList.remove('d-none');\n        if (paths) {\n          paths.forEach((path) => {\n            path.style.stroke = '#2da3dc';\n          });\n        }\n      } else {\n        element.classList.add('d-none');\n        if (paths) {\n          paths.forEach((path) => {\n            path.style.stroke = '#b9e5fb';\n          });\n        }\n      }\n    });\n  }\n}\n","import ApplicationController from './application_controller';\nimport { closeOnEsc } from '../lib/helpers';\n\n/**\n *\n * This controls the navigation component use to go through landing pages.\n *\n * @controller landing-page-nav\n *\n */\nexport default class extends ApplicationController {\n  initialize() {\n    this.show = false;\n    this.toggleRunning = false;\n  }\n\n  /**\n   *\n   * Listen's for clicks both inside the menu (Stop the event from triggering) and outside,\n   * to trigger a close of the menu.\n   * @function toggleMenu\n   * @param {*} event\n   *\n   */\n  connect() {\n    const floatingMenu = document.getElementById('floating-menu');\n    const navBtnClosed = document.getElementById('nav-button-closed');\n    const navBtnOpen = document.getElementById('nav-button-open');\n\n    closeOnEsc(closeMenu);\n\n    window.addEventListener('click', () => {\n      if (!this.show && this.toggleRunning) return;\n      closeMenu();\n      this.show = false;\n    });\n    floatingMenu.addEventListener('click', (event) => {\n      event.stopPropagation();\n    });\n\n    function closeMenu() {\n      floatingMenu.classList.add('d-none');\n      navBtnClosed.classList.remove('d-none');\n      navBtnOpen.classList.add('d-none');\n    }\n  }\n\n  /**\n   *\n   * Shows the menu\n   * @function toggleMenu\n   * @param {*} event\n   *\n   */\n  toggleMenu() {\n    this.toggleRunning = true;\n\n    const floatingMenu = document.getElementById('floating-menu');\n    const navBtnClosed = document.getElementById('nav-button-closed');\n    const navBtnOpen = document.getElementById('nav-button-open');\n\n    if (floatingMenu.classList.contains('d-none')) {\n      floatingMenu.classList.remove('d-none');\n      navBtnClosed.classList.add('d-none');\n      navBtnOpen.classList.remove('d-none');\n\n      setTimeout(() => {\n        this.show = true;\n        this.toggleRunning = false;\n      }, 200);\n    }\n  }\n}\n","import ApplicationController from './application_controller';\n\nexport default class extends ApplicationController {\n  static targets = ['controlledIcon', 'controlledButtons', 'controlledValues'];\n\n  toggleAddOn = (event) => {\n    const element = event.target;\n    this.iconToggle(!element.classList.contains('bi-toggle-on'), element.classList);\n\n    let normal,\n      flexible,\n      therapy_tools,\n      teletherapy = false;\n\n    this.controlledIconTargets.forEach((elem) => {\n      if (elem.dataset.controlledIcon === 'therapy_tools' && elem.classList.contains('bi-toggle-on'))\n        therapy_tools = true;\n      if (elem.dataset.controlledIcon === 'teletherapy' && elem.classList.contains('bi-toggle-on'))\n        teletherapy = true;\n    });\n\n    if (therapy_tools && teletherapy) flexible = true;\n    if (!therapy_tools && !teletherapy && !flexible) normal = true;\n\n    if (flexible) {\n      this.processButtons('b-flexible');\n      this.processValues('v-flexible');\n    }\n    else {\n      if (therapy_tools) {\n        this.processButtons('b-therapy_tools');\n        this.processValues('v-therapy_tools');\n      }\n      else if (teletherapy) {\n        this.processButtons('b-teletherapy');\n        this.processValues('v-teletherapy');\n      } else {\n        this.processButtons('b');\n        this.processValues('v');\n      }\n    }\n  };\n\n  processButtons(active) {\n    this.controlledButtonsTargets.forEach((item) => {\n      if (item.dataset.controlledButtons === active) {\n        item.classList.remove('d-none');\n      } else {\n        item.classList.add('d-none');\n      }\n    });\n  }\n\n  processValues(active) {\n    this.controlledValuesTargets.forEach((item) => {\n      if (item.dataset.controlledValues === active) {\n        item.classList.remove('d-none');\n      } else {\n        item.classList.add('d-none');\n      }\n    });\n  }\n\n  iconToggle(on, icon) {\n    if (on) {\n      icon.remove('bi-toggle-off');\n      icon.add('bi-toggle-on', 'text-primary');\n    } else {\n      icon.remove('bi-toggle-on', 'text-primary');\n      icon.add('bi-toggle-off');\n    }\n  }\n}\n","import ApplicationController from './application_controller';\n\n/**\n *\n * This controls the side-navigation components active index and hides/displays the relevant items\n * to the right of the navigation container.\n *\n * @controller side-nav\n * @example please look at the site_map.html.erb and the relevant controller.\n *\n */\nexport default class extends ApplicationController {\n  static targets = ['controlled', 'uncontrolled'];\n  static values = { index: Number, active: Boolean, hasRunFirst: Boolean };\n\n  initialize() {\n    this.showCurrentSlide();\n    this.hasRunFirst = true;\n  }\n\n  /**\n   *\n   * Updates the active index.\n   * @function changeActiveIndex\n   * @param {*} event\n   *\n   */\n  changeActiveIndex(event) {\n    const element = event.target;\n    this.indexValue = element.dataset.uncontrolledIndex;\n    this.showCurrentSlide();\n  }\n\n  /**\n   *\n   * Loops through the related subItems of the side navigation items\n   * updates relevant classes and hides/shows the relevant items\n   * based on the active index.\n   * @function showCurrentSlide\n   *\n   */\n  showCurrentSlide() {\n    this.uncontrolledTargets.forEach((element, index) => {\n      if (this.indexValue < -1) {\n        this.indexValue = 0;\n      }\n      if (index === 0) element.classList.add('top-item');\n\n      if (element.dataset.uncontrolledActive !== undefined && !this.hasRunFirst) {\n        if (element.dataset.uncontrolledActive === 'true') {\n          this.indexValue = element.dataset.uncontrolledIndex;\n          element.classList.add('active-btn-site-map');\n        } else {\n          element.classList.remove('active-btn-site-map');\n        }\n      } else if (index === this.indexValue) {\n        element.classList.add('active-btn-site-map');\n      } else {\n        element.classList.remove('active-btn-site-map');\n      }\n    });\n\n    this.controlledTargets.forEach((element, index) => {\n      if (this.indexValue < -1) {\n        this.indexValue = 0;\n      }\n      element.hidden = index !== this.indexValue;\n    });\n  }\n}\n","import ApplicationController from './application_controller';\n\n/**\n *\n * This controls the side-navigation components active index and hides/displays the relevant items\n * to the right of the navigation container.\n *\n * @controller side-nav\n * @example please look at the site_map.html.erb and the relevant controller.\n *\n */\nexport default class extends ApplicationController {\n  static targets = ['controlled', 'uncontrolled'];\n  static values = { index: String, hasRunFirst: Boolean };\n\n  /**\n   *\n   * Updates the active index.\n   * @function changeActiveIndex\n   * @param {*} event\n   *\n   */\n  changeActiveIndex(event) {\n    const element = event.target;\n    this.indexValue = element.dataset.uncontrolledIndex;\n    this.showCurrentSlide();\n  }\n\n  /**\n   *\n   * Loops through the related subItems of the side navigation items\n   * updates relevant classes and hides/shows the relevant items\n   * based on the active index.\n   * @function showCurrentSlide\n   *\n   */\n  showCurrentSlide() {\n    this.controlledTargets.forEach((element) => {\n      if (element.dataset.controlledIndex === this.indexValue) {\n        element.classList.remove('d-none');\n      } else {\n        element.classList.add('d-none');\n      }\n    });\n  }\n}\n","import ApplicationController from './application_controller';\n\nexport default class extends ApplicationController {\n  static values = { object: String, highlight: Boolean };\n\n  static classes = ['highlight'];\n\n  targetSection = null;\n\n  scrollIntoView(event) {\n    event.preventDefault();\n    const targetSectionId = event.target.href.split('#')[1];\n    if (!targetSectionId) return;\n\n    const targetSection = document.getElementById(targetSectionId);\n    this.targetSection = targetSection;\n    this.targetSection.classList.add('section-anchor');\n    this.highlightTargetSection();\n    targetSection.scrollIntoView(this.scrollProperty);\n  }\n\n  disconnect() {\n    this.unregisterHighlightRemovalEvent();\n  }\n\n  // Private\n\n  highlightTargetSection() {\n    if (this.highlightValue) {\n      this.targetSection.classList.add(this.targetHighlightClass);\n      this.registerHighlightRemovalEvent();\n    }\n  }\n\n  registerHighlightRemovalEvent() {\n    // https://www.betterstimulus.com/events.html\n    this.boundRemoveHighlight = this.removeHighlight.bind(this);\n    document.addEventListener('click', this.boundRemoveHighlight);\n  }\n\n  unregisterHighlightRemovalEvent() {\n    document.removeEventListener('click', this.boundRemoveHighlight);\n  }\n\n  removeHighlight(event) {\n    if (!this.targetSection.contains(event.target) && !this.element.contains(event.target)) {\n      this.targetSection.classList.remove(this.targetHighlightClass);\n    }\n  }\n\n  get scrollProperty() {\n    let newObject = {};\n    if (this.hasObjectValue) {\n      newObject = JSON.parse(this.objectValue);\n    }\n\n    return {\n      behavior: 'smooth',\n      block: 'start',\n      inline: 'nearest',\n      ...newObject,\n    };\n  }\n\n  get targetHighlightClass() {\n    return this.hasHighlightClass ? this.highlightClass : 'bg-info';\n  }\n}\n","import consumer from './consumer';\nimport { EventBus } from '../visual-schedules/event-bus';\n\nexport default class VisualScheduleChannel {\n  constructor(options = {}) {\n    this.sessionId = options.sessionId; // Either a room_session ID or one generated that\n    this.store = options.store; // Vuex store\n    this.channel = null;\n  }\n\n  init = async () => {\n    await this.createSubscription();\n  }\n\n  createSubscription = () => {\n    const {\n      sessionId, store,\n    } = this;\n\n    this.channel = consumer.subscriptions.create({\n      channel: 'VisualScheduleChannel',\n      visual_schedule: `visual_schedule_${sessionId}`,\n    }, {\n      connected() {\n        // Called when the subscription is ready for use on the server\n      },\n\n      disconnected() {\n        // Called when the subscription has been terminated by the server\n        if (this.channel) this.channel.unsubscribe();\n      },\n\n      received(data) {\n        // Do nothing if it's the schedule owner\n        if (store.state.visitor.id === data.id) return;\n\n        if (data.type === 'update_visual_schedule') {\n          const visualSchedule = { ...store.state.visualSchedule };\n          data.visualSchedule.staticRevealer = visualSchedule.staticRevealer;\n          store.commit('setVisualSchedule', data.visualSchedule);\n        } else if (data.type === 'update_image_revealer') {\n          const visualSchedule = { ...store.state.visualSchedule };\n          visualSchedule.staticRevealer = data.staticRevealer;\n          store.commit('setVisualSchedule', visualSchedule);\n        } else if (data.type === 'timer_start') {\n          EventBus.$emit('timer-state', true);\n        } else if (data.type === 'paused') {\n          EventBus.$emit('timer-state', false);\n        } else if (data.type === 'timer_reset') {\n          EventBus.$emit('timer-reset');\n        } else if (data.type === 'timer_duration') {\n          EventBus.$emit('timer-duration', data.value);\n        }\n      },\n    });\n  }\n}\n","import { Datepicker } from 'vanillajs-datepicker';\n\n// make sure not to make additional dropdowns\nconst removeExisting = () => {\n  const existing = document.querySelectorAll('.datepicker.datepicker-dropdown');\n  existing.forEach((dropdown) => dropdown.remove());\n};\n\nconst initializeDatepickers = () => {\n  const datepickers = document.querySelectorAll('[data-datepicker]');\n  if (datepickers.length) {\n    removeExisting(datepickers);\n    const sharedOptions = {\n      buttonClass: 'btn',\n      format: 'y-mm-dd',\n    };\n    datepickers.forEach((input) => {\n      const options = JSON.parse(input.dataset.datepicker);\n      if (options.maxDate === 'today') options.maxDate = new Date();\n      const combinedOptions = { ...sharedOptions, ...options };\n      const dp = new Datepicker(input, combinedOptions);\n    });\n  }\n};\n\nexport default initializeDatepickers;\n","/* eslint-disable class-methods-use-this */\n\nconst createPromise = (getValue) =>\n  new Promise((resolve, reject) => {\n    try {\n      const value = getValue();\n      resolve(value);\n    } catch (err) {\n      reject(err);\n    }\n  });\n\nexport default class AsyncLocalStorage {\n  getItem(key) {\n    return createPromise(() => window.localStorage.getItem(key));\n  }\n\n  setItem(key, value) {\n    return createPromise(() => window.localStorage.setItem(key, value));\n  }\n\n  removeItem(key) {\n    return createPromise(() => window.localStorage.removeItem(key));\n  }\n}\n","// This class creates a general action cable channel\n// for teletherapy participants\nimport VisualScheduleChannel from '../../channels/visual_schedule_channel';\n\nexport default class VisualScheduleChannelCreator {\n  constructor(options = {}) {\n    this.store = options.store;\n    this.sessionId = options.sessionId;\n  }\n\n  createChannel = async () => {\n    const dataChannel = new VisualScheduleChannel({\n      store: this.store,\n      sessionId: this.sessionId,\n    });\n    await dataChannel.init().then(() => {\n      this.store.commit('storeVisualScheduleChannel', dataChannel.channel);\n    });\n  }\n}\n","import { ElementObserver } from '@ambiki/impulse';\n\n/**\n * @param {number} height - The height of the wrapping element\n * @param {number} width - The width of the wrapping element\n * @param {number} x - Left offset / width of the mouse pointer\n * @param {number} y - Top offset / height of the mouse pointer\n */\n// eslint-disable-next-line\nexport function safeRegion({ height, width, x, y }) {\n  const positions = {};\n  const leftOffset = x * width;\n  const topOffset = y * height;\n\n  const isPositionBottom = height - topOffset > topOffset;\n  positions.bottom = isPositionBottom;\n  positions.top = !isPositionBottom;\n\n  const isPositionRight = width - leftOffset > leftOffset;\n  positions.right = isPositionRight;\n  positions.left = !isPositionRight;\n\n  return positions;\n}\n\n/**\n * @param {Event} event\n */\nexport function cancel(event) {\n  event.preventDefault();\n  event.stopPropagation();\n}\n\n/**\n * @typedef {Object} Point\n * @property {number} left - The x-coordinate\n * @property {number} top - The y-coordinate\n * @param {HTMLElement} element\n * @return {Point}\n */\nexport function getScrollLeftTop(element) {\n  let left = 0;\n  let top = 0;\n  const docElement = document.documentElement;\n  const body = document.body || { scrollLeft: 0, scrollTop: 0 };\n\n  // While loop checks (and then sets element to) .parentNode OR .host\n  // to account for ShadowDOM. We still want to traverse up out of ShadowDOM,\n  // but the .parentNode of a root ShadowDOM node will always be null, instead\n  // it should be accessed through .host. See http://stackoverflow.com/a/24765528/4383938\n  while (element && (element.parentNode || element.host)) {\n    // Set element to element parent, or 'host' in case of ShadowDOM\n    // eslint-disable-next-line no-param-reassign\n    element = element.parentNode || element.host;\n\n    if (element === document) {\n      left = body.scrollLeft || docElement.scrollLeft || 0;\n      top = body.scrollTop || docElement.scrollTop || 0;\n    } else {\n      left += element.scrollLeft || 0;\n      top += element.scrollTop || 0;\n    }\n\n    if (element.nodeType === 1 && element.style.position === 'fixed') break;\n  }\n\n  return {\n    left,\n    top,\n  };\n}\n\n/**\n * @typedef {Object} Point\n * @property {number} left - The x-coordinate\n * @property {number} top - The y-coordinate\n * @param {HTMLElement} element\n * @return {Point}\n */\nexport function getElementOffset(element) {\n  const doc = element && element.ownerDocument;\n  let box = { left: 0, top: 0 };\n  const offset = { left: 0, top: 0 };\n  const offsetAttributes = {\n    borderLeftWidth: 'left',\n    borderTopWidth: 'top',\n    paddingLeft: 'left',\n    paddingTop: 'top',\n  };\n\n  if (!doc) return offset;\n\n  // eslint-disable-next-line no-restricted-syntax, guard-for-in\n  for (const attr in offsetAttributes) {\n    offset[offsetAttributes[attr]] += parseInt(getElementStyle(element, attr), 10) || 0;\n  }\n\n  const docElem = doc.documentElement;\n  if (typeof element.getBoundingClientRect !== 'undefined') {\n    box = element.getBoundingClientRect();\n  }\n\n  const scrollLeftTop = getScrollLeftTop(element);\n\n  return {\n    left: box.left + scrollLeftTop.left - (docElem.clientLeft || 0) + offset.left,\n    top: box.top + scrollLeftTop.top - (docElem.clientTop || 0) + offset.top,\n  };\n}\n\nfunction getElementStyle(element, attr) {\n  if (document.defaultView && document.defaultView.getComputedStyle) {\n    const style = document.defaultView.getComputedStyle(element, null);\n    return style ? style[attr] : undefined;\n  }\n\n  let value = element.style[attr];\n  if (!value && element.currentStyle) {\n    value = element.currentStyle[attr];\n  }\n  return value;\n}\n\nexport function insertAfter(newNode, existingNode) {\n  existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);\n}\n\nexport function insertBefore(newNode, existingNode) {\n  existingNode.parentNode.insertBefore(newNode, existingNode);\n}\n\n/**\n * @param {HTMLElement} element\n * @return {Boolean}\n */\nexport function visible(element) {\n  return (\n    !element.hidden &&\n    !(element instanceof HTMLInputElement && element.type === 'hidden') &&\n    (element.offsetWidth > 0 || element.offsetHeight > 0)\n  );\n}\n\n/**\n * @param {HTMLElement} element\n * @return {Boolean}\n */\nexport function enabled(element) {\n  return !element.disabled && element.getAttribute('aria-disabled') !== 'true';\n}\n\n/**\n * @param {HTMLElement} element\n * @return {Boolean}\n */\nexport function focusable(element) {\n  return element.tabIndex >= 0 && !element.disabled && visible(element);\n}\n\n/**\n * @description Initializes the `offsetHeight` of the element. Generally used when the element is transitioning.\n * @param {HTMLElement} element\n */\nexport function reflow(element) {\n  // eslint-disable-next-line no-unused-expressions\n  element.offsetHeight;\n}\n\n/**\n * @param {String} selector\n * @param {Object} options\n * @param {Function} options.connected - Called when the element is connected to the DOM.\n * @param {Function} options.disconnected - Called when the element is disconnected from the DOM.\n *\n * @description Observes the DOM for elements that match the selector.\n *\n * @example\n *\n * observe('[data-toggle=\"tooltip\"]', {\n *   // Called when the element is connected to the DOM.\n *   connected(element) {\n *     $(element).tooltip();\n *   },\n *\n *   // Called when the element is disconnected from the DOM.\n *   disconnected(element) {\n *     $(element).tooltip('dispose');\n *   },\n * });\n */\nexport function observe(selector, options = {}) {\n  class Delegate {\n    elementConnected(element) {\n      options.connected?.(element);\n    }\n\n    elementDisconnected(element) {\n      options.disconnected?.(element);\n    }\n\n    getMatchingElements(element) {\n      if (element instanceof Element) {\n        const elements = Array.from(element.querySelectorAll(selector));\n        if (element.hasAttribute(selector)) {\n          elements.unshift(element);\n        }\n        return elements;\n      }\n    }\n  }\n\n  const delegate = new Delegate();\n  const observer = new ElementObserver(document.documentElement, delegate, { attributeFilter: [selector] });\n  observer.start();\n}\n\n/**\n * @description Returns the `content` of the `meta` tag found in `head`\n * @param {string} name\n * @returns {string | null}\n */\nexport function metaValue(name) {\n  const element = document.head.querySelector(`meta[name=\"${name}\"]`);\n  return element && element.getAttribute('content');\n}\n","import { onDropdownClose } from 'helpers/selectize_helpers';\nimport axios from 'axios';\n\nexport default class DiagnosisCodes {\n  constructor() {\n    this.diagnosisCodeAlertMap = [];\n    this.registerExistingSelectComponents();\n    this.registerDeleteItem();\n    this.injectDisciplineAddFieldEvent();\n    this.toggleDisciplineEvent();\n    this.toggleDiscipline();\n    this.formSubmitCleanUp();\n  }\n\n  static domControl = [\n    {\n      regex: /F84.0/i,\n      childId: 'autism-alert',\n      alertType: 'autism-alert',\n    },\n    {\n      regex: /F80.9|H91.90|H90.5|R63.30/i,\n      childId: 'non-specific-alert',\n      alertType: 'non-specific-alert',\n    },\n    {\n      regex: /Medical/i,\n      childId: 'medical-code-present',\n      alertType: 'medical-code-present',\n    },\n    {\n      regex: /Treatment/i,\n      childId: 'treatment-code-present',\n      alertType: 'treatment-code-present',\n    },\n    {\n      regex: /^F\\d+(\\.\\d+)?/i,\n      childId: 'medical-code-violation',\n      alertType: 'medical-code-violation',\n    },\n    {\n      regex: /^R\\d+(\\.\\d+)?/i,\n      childId: 'medical-code-violation',\n      alertType: 'medical-code-violation',\n    },\n  ];\n\n  /**\n   * Removes hidden fields from a discipline change and ensure all fields are filled in. If not an error message is shown.\n   *\n   * @function formSubmitCleanUp\n   * @return void\n   */\n  formSubmitCleanUp() {\n    const submitButton = document.querySelector('#form-buttons-target button[type=submit]');\n    if (!submitButton) return;\n    submitButton.addEventListener('click', (event) => {\n      let emptyFields = 0;\n      const selectElements = document.querySelectorAll(\n        'div.form-group.patients-diagnosis-code:not(.deleted):not(.hidden)'\n      );\n      if (!selectElements) return;\n\n      selectElements.forEach((element) => {\n        const selectComplete = element.querySelectorAll('awc-autocomplete');\n        if (!selectElements) return;\n\n        selectComplete.forEach((select) => {\n          if (select.input.value === '') {\n            // eslint-disable-next-line no-plusplus\n            emptyFields++;\n          }\n        });\n      });\n\n      if (emptyFields !== 0) {\n        const error = document.getElementById('addCodeError');\n        error.classList.remove('hidden');\n        event.preventDefault();\n      } else {\n        const error = document.getElementById('addCodeError');\n        error.classList.add('hidden');\n\n        const elements = document.querySelectorAll('div.form-group.patients-diagnosis-code');\n        elements.forEach((deleteElement) => {\n          if (deleteElement.classList.contains('hidden') && !deleteElement.classList.contains('deleted')) {\n            deleteElement.remove();\n          }\n        });\n      }\n    });\n  }\n\n  /**\n   * Event listener to toggle the feilds when the discipline changes.\n   *\n   * @function toggleDisciplineEvent\n   * @return void\n   */\n  toggleDisciplineEvent() {\n    const autoComplete = document.querySelector('auto-complete.discipline-selector');\n    if (!autoComplete) return;\n    autoComplete.addEventListener('click', (event) => {\n      this.toggleDiscipline();\n    });\n  }\n\n  /**\n   * Toggles the visibility of the of the form fields depending on the select discipline.\n   * This function is used by toggleDisciplineEvent and get's called on initial load.\n   *\n   * @function toggleDiscipline\n   * @reutrn void\n   */\n  toggleDiscipline() {\n    const autoComplete = document.querySelector('auto-complete.discipline-selector');\n    if (!autoComplete) return;\n\n    const disciplineId = autoComplete.querySelector('input[type=\"hidden\"]').value;\n    if (!disciplineId) return;\n\n    const diagComponents = document.querySelectorAll('div.patients-diagnosis-code');\n    if (!diagComponents) return;\n    diagComponents.forEach((diagElement) => {\n      diagElement.classList.add('hidden');\n    });\n\n    const fieldsetElements = document.querySelectorAll(`fieldset.nested-fields.discipline-${disciplineId}`);\n    fieldsetElements.forEach((fieldset) => {\n      const target = fieldset.parentElement;\n      target.classList.remove('hidden');\n      const formInput = target.querySelector('input.destroy');\n      if (!formInput) return;\n      formInput.value = 'false';\n    });\n  }\n\n  /**\n   * Listens for new fields being added to the DOM. Once added we replace the discipline placeholders with the current\n   * selected discipline.\n   *\n   * @function injectDisciplineAddFieldEvent\n   * @return void\n   */\n  injectDisciplineAddFieldEvent() {\n    document.addEventListener('click', (event) => {\n      if (['add_fields', 'patients_diagnosis_codes'].every((klass) => event.target.classList.contains(klass))) {\n        const element = document.querySelector('auto-complete.discipline-selector');\n        if (!element || element.offsetParent === null) return;\n\n        const disciplineId = element.querySelector('input[type=\"hidden\"]').value;\n        if (!disciplineId) return;\n\n        setTimeout(() => {\n          const fieldsetElements = document.querySelectorAll('fieldset.discipline---discipline---');\n          fieldsetElements.forEach((fieldset) => {\n            fieldset.classList.add(`discipline-${disciplineId}`);\n            fieldset.classList.remove('discipline---discipline---');\n          });\n\n          const inputElements = document.querySelectorAll('input.discipline---discipline---');\n          inputElements.forEach((input) => {\n            input.classList.remove('discipline---discipline---');\n            input.value = disciplineId;\n          });\n        }, 100);\n      }\n    });\n  }\n\n  /**\n   * Listens for click events to the trash button. Once triggered we add the necessary classes and trigger an event for\n   * a clean up of the in memory alert IDs and UI alerts.\n   *\n   * @function registerDeleteItem\n   * @return void\n   */\n  registerDeleteItem() {\n    document.addEventListener('click', (event) => {\n      const container = event.target.parentElement;\n\n      if (container.classList.contains('trash-row')) {\n        const parent = container.closest('div.form-group.patients-diagnosis-code');\n        if (!parent) return;\n\n        const selectedComponent = container.closest('.nested-fields');\n        if (!selectedComponent) return;\n\n        // We need to remove the required attribute from the component otherwise the form will be invalid.\n        [...selectedComponent.querySelectorAll('awc-autocomplete')].forEach((element) => {\n          element.required = false;\n        });\n\n        const selectedAlertId = selectedComponent.querySelectorAll('[alert-id]');\n        if (!selectedAlertId) return;\n\n        const alertIds = [];\n        selectedAlertId.forEach((element) => {\n          alertIds.push(element.getAttribute('alert-id'));\n        });\n\n        const deleteClicked = new CustomEvent('deleteClicked', {\n          detail: {\n            alertIds,\n          },\n        });\n\n        parent.classList.add('hidden', 'deleted');\n        document.dispatchEvent(deleteClicked);\n\n        const formInput = parent.querySelector('input.destroy');\n        if (!formInput) return;\n        formInput.value = 'true';\n      }\n    });\n  }\n\n  /**\n   * Finds all instances of diagnosis code select components and performs\n   * related functions.\n   * @function registerExistingSelectComponents\n   */\n  registerExistingSelectComponents() {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const classThis = this;\n\n    $('.select.diagnosis-code-select').each((index, select) => {\n      if (!$(select).hasClass('selectized')) {\n        classThis.addNewDiagnosisSelectComponent(select);\n      }\n    });\n\n    const existingAutocompleteElements = document.querySelectorAll('awc-autocomplete');\n    existingAutocompleteElements.forEach((awc) => {\n      setTimeout(() => {\n        this.controlLoop(awc.input.value, awc).handleRemove(awc, false).checkCodeCombinations();\n      }, 600);\n    });\n\n    document.addEventListener('awc-autocomplete:commit', (event) => {\n      const parent = event.detail.target.closest('awc-autocomplete');\n      this.controlLoop(event.detail.target.querySelector('span').textContent, parent)\n        .handleRemove(parent, false)\n        .checkCodeCombinations();\n    });\n\n    document.addEventListener('deleteClicked', (event) => {\n      this.hardDelete(event.detail.alertIds).checkCodeCombinations();\n    });\n\n    this.diagnosisCodesValidation();\n    this.checkCodeCombinations();\n\n    $('#hide-forever').on('click', (e) => {\n      e.preventDefault();\n      try {\n        axios.put('/settings', {\n          user: {\n            hide_autism_validation: true,\n          },\n        });\n        $('#hide-forever-container').remove();\n      } catch (error) {\n        console.error(error);\n      }\n    });\n  }\n\n  /**\n   * Instantiates selectize for our select components.\n   * @function addNewDiagnosisSelectComponent\n   * @param selectizeDiagnosisCode\n   * @returns {*}\n   */\n  addNewDiagnosisSelectComponent(selectizeDiagnosisCode) {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const parentScope = this;\n\n    $(selectizeDiagnosisCode).selectize({\n      valueField: 'id',\n      labelField: 'name',\n      searchField: 'name',\n      placeholder: 'Start typing to search for a diagnosis code...',\n      options: [],\n      create: false,\n      onDropdownClose,\n      // eslint-disable-next-line consistent-return\n      load(query, callback) {\n        if (!query.length) return callback();\n        $.ajax({\n          url: '/api/v2/diagnosis-codes',\n          type: 'GET',\n          dataType: 'json',\n          data: {\n            q: query,\n          },\n          error() {\n            callback();\n          },\n          success(res) {\n            callback(res);\n          },\n        });\n      },\n      onChange(value) {\n        parentScope.onChangeHandler(this);\n      },\n    });\n  }\n\n  /**\n   * Handles the change event.\n   * @function onChangeHandler\n   * @param selectize - The instance of selectize\n   */\n  onChangeHandler(selectize) {\n    const select = selectize.$input[0];\n    const diagnosisCodeText = select.querySelector('option[selected=\"selected\"]').textContent.toString();\n\n    this.controlLoop(diagnosisCodeText, select).handleRemove(selectize, true).checkCodeCombinations();\n  }\n\n  controlLoop(diagnosisCodeText, selectHtmlElement) {\n    DiagnosisCodes.domControl.forEach((regexTest) => {\n      this.alertControl(regexTest, diagnosisCodeText, selectHtmlElement);\n    });\n\n    return this;\n  }\n\n  /**\n   *\n   * This function checks if the existing records violate any alerts.\n   * When we load the components the onChange handler doesn't get triggered.\n   * @function diagnosisCodesValidation\n   * @returns null\n   *\n   */\n  diagnosisCodesValidation() {\n    const codes = document.querySelectorAll('.select.diagnosis-code-select');\n\n    codes.forEach((selectComponent) => {\n      const diagnosisCode = selectComponent.querySelector('option[selected=\"selected\"]');\n\n      if (diagnosisCode) {\n        const diagnosisCodeText = diagnosisCode.textContent.toString();\n\n        DiagnosisCodes.domControl.forEach((regexTest) => {\n          this.alertControl(regexTest, diagnosisCodeText, selectComponent);\n        });\n      }\n    });\n  }\n\n  /**\n   * This function checks the select component code to our regexes and\n   * calls any necessary functions.\n   * @function alertControl\n   * @param regexTest - The dom control object.\n   * @param diagnosisCodeText - The text from the select component.\n   * @param selectOptionInFocus - The HTML select option.\n   */\n  alertControl(regexTest, diagnosisCodeText, selectHtmlElement) {\n    const domChild = document.querySelectorAll(`.${regexTest.childId}`);\n\n    // If we have a match we need to show the alert and preform tasks.\n    if (regexTest.regex.test(diagnosisCodeText)) {\n      const code = diagnosisCodeText.match(regexTest.regex);\n      const domId = selectHtmlElement.getAttribute('alert-id');\n\n      this.toggleClassListDisplay(domChild, 'show');\n      this.setAlertId(\n        selectHtmlElement,\n        domId || this.generateUuid(`medical-code-present-${Math.floor(Math.random() * 100).toString()}`),\n        regexTest,\n        code[0],\n        diagnosisCodeText,\n        regexTest.alertType === 'medical-code-present',\n        !!domId\n      );\n    }\n  }\n\n  /**\n   * Goes through our memory store and checks if an HTML option that\n   * has our alert flag has been remove from the DOM. Performs actions based on the above.\n   * @function handleRemove\n   */\n  handleRemove(selectize, isSelectize) {\n    let domId;\n    let selectedText;\n\n    if (isSelectize) {\n      selectedText = selectize.getItem(selectize.getValue()).text();\n      domId = selectize.$input[0].getAttribute('alert-id');\n    } else {\n      domId = selectize.getAttribute('alert-id');\n      if (selectize) {\n        selectedText = selectize.querySelector('input[type=\"hidden\"]').getAttribute('data-text');\n      }\n    }\n\n    if (domId && selectedText) {\n      const itemInMemory = this.diagnosisCodeAlertMap.findIndex((obj) => obj.domTarget === domId);\n      if (itemInMemory !== -1 && this.diagnosisCodeAlertMap[itemInMemory].textContent !== selectedText) {\n        this.diagnosisCodeAlertMap.splice(itemInMemory, 1);\n      }\n    }\n\n    return this;\n  }\n\n  hardDelete(domIds) {\n    domIds.forEach((id) => {\n      const itemInMemory = this.diagnosisCodeAlertMap.findIndex((obj) => obj.domTarget === id);\n      this.diagnosisCodeAlertMap.splice(itemInMemory, 1);\n    });\n\n    return this;\n  }\n\n  /**\n   *\n   * @function checkCodeCombinations\n   */\n  checkCodeCombinations() {\n    const medicalAlert = document.querySelectorAll('.medical-code-present');\n    const noMedicalCodeRCodeAlert = document.querySelectorAll('.no-medical-code-present');\n\n    const medicalCode = this.diagnosisCodeAlertMap.findIndex((obj) => obj.containsMedicalCode === true);\n    let fCodeWithMedical = false;\n    let fCodeWithTreatment = false;\n    let rCodeWithTreatment = false;\n    const hasAutismAlert = this.diagnosisCodeAlertMap.findIndex((obj) => obj.code === 'F84.0');\n    const hasNoSpecificAlert = this.diagnosisCodeAlertMap.filter((obj) =>\n      ['F80.9', 'H91.90', 'H90.5', 'R63.30'].includes(obj.code)\n    );\n\n    this.toggleClassListDisplay(document.querySelectorAll('.autism-alert'), hasAutismAlert !== -1 ? 'show' : 'hide');\n    this.toggleClassListDisplay(\n      document.querySelectorAll('.non-specific-alert'),\n      hasNoSpecificAlert.length > 0 ? 'show' : 'hide'\n    );\n\n    this.diagnosisCodeAlertMap.forEach((code) => {\n      const focusedComponent = document.querySelector(`[alert-id=\"${code.domTarget}\"]`);\n\n      if (focusedComponent) {\n        const parentContainer = focusedComponent.closest('.nested-fields');\n        const selectItems = parentContainer.querySelectorAll('[alert-id]');\n        const domIDs = [];\n        selectItems.forEach((selectItem) => {\n          domIDs.push(selectItem.getAttribute('alert-id'));\n        });\n\n        const controlObjects = this.diagnosisCodeAlertMap.filter((obj) => domIDs.includes(obj.domTarget));\n\n        const treatmentCode = controlObjects.findIndex((obj) => /^Treatment/i.test(obj.code));\n        const rCode = controlObjects.findIndex((obj) => /^R\\d+/i.test(obj.code) && !/R48.2/i.test(obj.code));\n        const fCode = controlObjects.findIndex((obj) => /^F\\d+/i.test(obj.code) && !/F80.0/i.test(obj.code));\n        const scopeMedicalCode = controlObjects.findIndex((obj) => obj.containsMedicalCode);\n\n        if (scopeMedicalCode !== -1 && fCode !== -1) fCodeWithMedical = true;\n        if (treatmentCode !== -1 && fCode !== -1) fCodeWithTreatment = true;\n        if (treatmentCode !== -1 && rCode !== -1) rCodeWithTreatment = true;\n      }\n    });\n\n    if (medicalCode !== -1) {\n      this.toggleClassListDisplay(medicalAlert, !rCodeWithTreatment && fCodeWithMedical ? 'show' : 'hide');\n      this.toggleClassListDisplay(noMedicalCodeRCodeAlert, 'hide');\n    } else {\n      this.toggleClassListDisplay(noMedicalCodeRCodeAlert, !fCodeWithTreatment ? 'show' : 'hide');\n      this.toggleClassListDisplay(medicalAlert, 'hide');\n    }\n  }\n\n  setAlertId(htmlElement, newIndex, regexTest, code, textContent, isMedical, update) {\n    const objectIndex = this.diagnosisCodeAlertMap.findIndex((obj) => obj.domTarget === newIndex);\n\n    if (update && objectIndex !== -1) {\n      this.diagnosisCodeAlertMap[objectIndex] = {\n        domTarget: newIndex,\n        alertType: regexTest.alertType,\n        code,\n        textContent,\n        containsMedicalCode: isMedical,\n      };\n    } else {\n      const mapTemplate = {\n        domTarget: newIndex,\n        alertType: regexTest.alertType,\n        code,\n        textContent,\n        containsMedicalCode: isMedical,\n      };\n\n      // Set the index we store in memory as an attribute\n      htmlElement.setAttribute('alert-id', newIndex);\n      // Add our new item in memory\n      this.diagnosisCodeAlertMap.push(mapTemplate);\n    }\n  }\n\n  generateUuid(extra) {\n    const now = new Date();\n    return `${\n      now.getHours().toString() + now.getMinutes().toString() + now.getSeconds().toString()\n    }-${extra}${Math.round(performance.now())}`;\n  }\n\n  toggleClassListDisplay(htmlElement, type) {\n    if (type === 'show') {\n      htmlElement.forEach((alert) => {\n        alert.classList.remove('d-none');\n      });\n    } else {\n      htmlElement.forEach((alert) => {\n        if (!alert.classList.contains('d-none')) {\n          alert.classList.add('d-none');\n        }\n      });\n    }\n  }\n\n  preservePlaceholder = (placeholderSelectize) => {\n    const placeholder = placeholderSelectize.$input[0].getAttribute('placeholder');\n    if (placeholder) {\n      placeholderSelectize.$control_input[0].placeholder = placeholder;\n    }\n  };\n}\n","import consumer from './consumer';\nimport { EventBus } from '../rooms/event-bus';\nimport log from '../lib/logger';\n\nexport default class ReactionsChannel {\n  constructor(options = {}) {\n    this.roomsSessionId = options.roomsSessionId;\n    this.line = options.line; // Pass in object with participant IDs\n    this.store = options.store; // Vuex store\n    this.channel = null;\n    this.isResolved = null;\n  }\n\n  init = () =>\n    new Promise((resolve) => {\n      this.isResolved = resolve;\n      this.createSubscription();\n    });\n\n  createSubscription() {\n    const { line, roomsSessionId, store, isResolved } = this;\n\n    if (line === undefined) return;\n\n    this.channel = consumer.subscriptions.create(\n      {\n        channel: 'RoomReactionsChannel',\n        room: `${roomsSessionId}_${line.value}`,\n      },\n      {\n        connected() {\n          isResolved();\n          // Called when the subscription is ready for use on the server\n          log.info('Reaction channel connected');\n          log.debug('Reaction channel', line);\n          if (store) store.dispatch('reaction/storeLine', line);\n        },\n\n        disconnected() {\n          // Called when the subscription has been terminated by the server\n          if (this.channel) this.channel.unsubscribe();\n        },\n\n        received(data) {\n          log.debug('Reaction received,', data);\n          if (data.type === 'reaction') {\n            EventBus.$emit('show-reaction', { ...data.reaction, meta: data.meta });\n          } else if (data.type === 'request_dm_line') {\n            if (store.state.visitor.id !== data.id) {\n              const { publicReaction } = store.state.reaction;\n              if (!publicReaction) return;\n              // Send a message on the public channel so other subscribers can also\n              // subscribe to this direct channel\n              publicReaction.send({\n                type: 'dm_invitation',\n                sentBy: store.state.visitor.id,\n                directLine: store.state.reaction.lines.find((l) => l.value.includes(store.state.visitor.id)),\n              });\n            }\n          } else if (data.type === 'dm_invitation') {\n            const { sentBy, directLine } = data;\n            if (store && !store.state.admin.testing) {\n              log.info('Responding to direct reaction channel invitation');\n              store.dispatch('reaction/handleDMChannelInvitation', {\n                sentBy,\n                directLine,\n                store,\n              });\n            }\n          }\n        },\n      }\n    );\n  }\n}\n","/* eslint-disable no-underscore-dangle */\nimport consumer from './consumer';\nimport log from '../lib/logger';\n\nexport default class RoomChat {\n  constructor(options = {}) {\n    this.roomsSessionId = options.roomsSessionId;\n    this.line = options.line; // Pass in object with participant IDs\n    this.username = options.username; // An identifier in this channel\n    this.store = options.store; // Vuex store\n    this.channel = null;\n  }\n\n  async init() {\n    await this.createSubscription();\n  }\n\n  createSubscription() {\n    const {\n      line, roomsSessionId, store,\n    } = this;\n\n    if (line === undefined) return;\n\n    this.channel = consumer.subscriptions.create({\n      channel: 'RoomChatChannel',\n      room: `${roomsSessionId}_${line.value}`,\n    }, {\n      connected() {\n        // Called when the subscription is ready for use on the server\n        log.info('Chat channel connected');\n        log.debug('Chat channel', line);\n        if (store) store.dispatch('chat/storeLine', line);\n      },\n\n      disconnected() {\n        // Called when the subscription has been terminated by the server\n        if (this.channel) this.channel.unsubscribe();\n      },\n\n      received(data) {\n        // Called when there's incoming data on the websocket for this channel\n        // Store message in Vuex\n        if (data.type === 'message') {\n          const publishedTo = `${roomsSessionId}_${line.value}`;\n          if (store) {\n            store.commit('chat/setActiveLine', line.value);\n            store.commit('chat/storeChatMessage', {\n              line: publishedTo,\n              id: data.id,\n              message: data.message,\n              sentBy: data.sent_by,\n              sentAt: data.sent_at,\n              username: data.username,\n            });\n          }\n        } else if (data.type === 'request_dm_line') {\n          if (store.state.visitor.id !== data.id) {\n            const { publicChat } = store.state.chat;\n            if (!publicChat) return;\n            // Send a message on the public channel so other subscribers can also\n            // subscribe to this direct channel\n            publicChat.send({\n              type: 'dm_invitation',\n              sentBy: store.state.visitor.id,\n              directLine: store.state.chat.lines.find((l) => l.value.includes(store.state.visitor.id)),\n            });\n          }\n        } else if (data.type === 'dm_invitation') {\n          const { sentBy, directLine } = data;\n          if (store && !store.state.admin.testing) {\n            store.dispatch('chat/handleDMChannelInvitation', {\n              sentBy, directLine, store,\n            });\n          }\n        } else if (data.type === 'blockChatUser') {\n          store.dispatch('permissions/blockChat', data.id);\n        } else if (data.type === 'unBlockChatUser') {\n          store.dispatch('permissions/unBlockChat', data.id);\n        } else if (data.type === 'correction_received') {\n          if (data.sentBy !== store.state.visitor.id) {\n            store.commit('chat/storeCorrection', data.correction);\n          }\n        }\n      },\n    });\n  }\n}\n","let goalPositionTracker = 1;\nlet previousString = '';\nlet defaultValueData = '';\n\nfunction setDefaultDataValue() {\n  if (document.getElementById('default_value_data') !== null) {\n    defaultValueData = JSON.parse(document.getElementById('default_value_data').dataset.source);\n  }\n}\n\nfunction resetGoalFormPositions() {\n  const elements = document.getElementsByName('goal[default_values][default][][position]');\n  elements.forEach((el, i) => {\n    el.value = i + 1;\n  });\n}\n\nfunction getAllIndexes(arr, val) {\n  const indexes = [];\n  let i = -1;\n  while ((i = arr.indexOf(val, i + 1)) != -1) {\n    indexes.push(i);\n  }\n  return indexes;\n}\n\nfunction addObjectPronounGoalFormElement() {\n  const dfElement = document.getElementById('default_fields_container');\n  dfElement.classList.remove('d-none');\n\n  const containerElement = document.createElement('div');\n  containerElement.classList.add('form-row');\n  containerElement.classList.add('flex-row');\n  containerElement.classList.add('mb-2');\n  containerElement.classList.add('object-pronoun-container');\n\n  const containerElementInner = document.createElement('div');\n  containerElementInner.classList.add('col-6');\n\n  dfElement.appendChild(containerElement);\n  containerElement.appendChild(containerElementInner);\n\n  const newElementLabel = document.createElement('label');\n  newElementLabel.innerHTML = 'Object pronoun ';\n  const containerElementSpan = document.createElement('span');\n  containerElementSpan.classList.add('required-field');\n  containerElementSpan.innerHTML = '*';\n  newElementLabel.appendChild(containerElementSpan);\n  containerElementInner.appendChild(newElementLabel);\n\n  const newElementPosition = document.createElement('input');\n  newElementPosition.setAttribute('type', 'hidden');\n  newElementPosition.value = goalPositionTracker;\n  goalPositionTracker += 1;\n  newElementPosition.name = 'goal[default_values][default][][position]';\n  containerElementInner.appendChild(newElementPosition);\n\n  const newElementName = document.createElement('input');\n  newElementName.setAttribute('type', 'hidden');\n  newElementName.value = 'object_pronoun';\n  newElementName.name = 'goal[default_values][default][][name]';\n  containerElementInner.appendChild(newElementName);\n\n  const newElementVal = document.createElement('select');\n  newElementVal.classList.add('form-control');\n  newElementVal.required = true;\n  newElementVal.name = 'goal[default_values][default][][value]';\n\n  const array = ['she', 'he', 'they'];\n  const option = document.createElement('option');\n  option.value = '';\n  option.text = 'Select object pronoun';\n  option.disabled = true;\n  option.selected = true;\n  newElementVal.appendChild(option);\n  array.forEach((pronoun) => {\n    const option2 = document.createElement('option');\n    option2.value = pronoun;\n    option2.text = pronoun;\n    newElementVal.appendChild(option2);\n  });\n\n  if (defaultValueData.default) {\n    let intVal;\n    defaultValueData.default.forEach((d) => {\n      if (d.name === 'object_pronoun') {\n        intVal = d.value;\n      }\n    });\n    if (intVal !== undefined) {\n      newElementVal.value = intVal;\n    }\n  }\n\n  containerElementInner.appendChild(newElementVal);\n}\n\nfunction addPossessivePronounGoalFormElement() {\n  const dfElement = document.getElementById('default_fields_container');\n  dfElement.classList.remove('d-none');\n\n  const containerElement = document.createElement('div');\n  containerElement.classList.add('form-row');\n  containerElement.classList.add('flex-row');\n  containerElement.classList.add('mb-2');\n  containerElement.classList.add('possessive-pronoun-container');\n\n  const containerElementInner = document.createElement('div');\n  containerElementInner.classList.add('col-6');\n\n  dfElement.appendChild(containerElement);\n  containerElement.appendChild(containerElementInner);\n\n  const newElementLabel = document.createElement('label');\n  newElementLabel.innerHTML = 'Possessive pronoun ';\n  const containerElementSpan = document.createElement('span');\n  containerElementSpan.classList.add('required-field');\n  containerElementSpan.innerHTML = '*';\n  newElementLabel.appendChild(containerElementSpan);\n  containerElementInner.appendChild(newElementLabel);\n\n  const newElementPosition = document.createElement('input');\n  newElementPosition.setAttribute('type', 'hidden');\n  newElementPosition.value = goalPositionTracker;\n  goalPositionTracker += 1;\n  newElementPosition.name = 'goal[default_values][default][][position]';\n  containerElementInner.appendChild(newElementPosition);\n\n  const newElementName = document.createElement('input');\n  newElementName.setAttribute('type', 'hidden');\n  newElementName.value = 'possessive_pronoun';\n  newElementName.name = 'goal[default_values][default][][name]';\n  containerElementInner.appendChild(newElementName);\n\n  const newElementVal = document.createElement('select');\n  newElementVal.classList.add('form-control');\n  newElementVal.required = true;\n  newElementVal.name = 'goal[default_values][default][][value]';\n\n  const array = ['her', 'his', 'their'];\n  const option = document.createElement('option');\n  option.value = '';\n  option.text = 'Select possessive pronoun';\n  option.disabled = true;\n  option.selected = true;\n  newElementVal.appendChild(option);\n  array.forEach((pronoun) => {\n    const option2 = document.createElement('option');\n    option2.value = pronoun;\n    option2.text = pronoun;\n    newElementVal.appendChild(option2);\n  });\n\n  if (defaultValueData.default) {\n    let intVal;\n    for (let i = 0; i < defaultValueData.default.length; i += 1) {\n      const defaultValue = defaultValueData.default[i];\n      if (defaultValue.name === 'possessive_pronoun') {\n        intVal = defaultValue.value;\n      }\n    }\n    if (intVal !== undefined) {\n      newElementVal.value = intVal;\n    }\n  }\n\n  containerElementInner.appendChild(newElementVal);\n}\n\nfunction addPositionInWordGoalFormElement() {\n  const position_in_words = JSON.parse(document.getElementById('position_in_word_data').dataset.source);\n\n  const dfElement = document.getElementById('default_fields_container');\n  dfElement.classList.remove('d-none');\n\n  const containerElement = document.createElement('div');\n  containerElement.classList.add('form-row');\n  containerElement.classList.add('flex-row');\n  containerElement.classList.add('mb-2');\n  containerElement.classList.add('position-in-word-container');\n\n  const containerElementInner = document.createElement('div');\n  containerElementInner.classList.add('col-6');\n\n  dfElement.appendChild(containerElement);\n  containerElement.appendChild(containerElementInner);\n\n  const newElementLabel = document.createElement('label');\n  newElementLabel.innerHTML = 'Position in word ';\n  const containerElementSpan = document.createElement('span');\n  containerElementSpan.classList.add('required-field');\n  containerElementSpan.innerHTML = '*';\n  newElementLabel.appendChild(containerElementSpan);\n  containerElementInner.appendChild(newElementLabel);\n\n  const newElementPosition = document.createElement('input');\n  newElementPosition.setAttribute('type', 'hidden');\n  newElementPosition.value = goalPositionTracker;\n  goalPositionTracker += 1;\n  newElementPosition.name = 'goal[default_values][default][][position]';\n  containerElementInner.appendChild(newElementPosition);\n\n  const newElementName = document.createElement('input');\n  newElementName.setAttribute('type', 'hidden');\n  newElementName.value = 'position_in_word';\n  newElementName.name = 'goal[default_values][default][][name]';\n  containerElementInner.appendChild(newElementName);\n\n  const newElementVal = document.createElement('select');\n  newElementVal.classList.add('form-control');\n  newElementVal.required = true;\n  newElementVal.name = 'goal[default_values][default][][value]';\n\n  const array = position_in_words;\n  var option = document.createElement('option');\n  option.value = '';\n  option.text = 'Select position in word';\n  option.disabled = true;\n  option.selected = true;\n  newElementVal.appendChild(option);\n  for (let i = 0; i < array.length; i += 1) {\n    var option = document.createElement('option');\n    option.value = array[i];\n    option.text = array[i];\n    newElementVal.appendChild(option);\n  }\n\n  if (defaultValueData.default) {\n    let intVal;\n    for (let i = 0; i < defaultValueData.default.length; i += 1) {\n      const defaultValue = defaultValueData.default[i];\n      if (defaultValue.name === 'position_in_word') {\n        intVal = defaultValue.value;\n      }\n    }\n    if (intVal !== undefined) {\n      newElementVal.value = intVal;\n    }\n  }\n\n  containerElementInner.appendChild(newElementVal);\n}\n\nfunction addTargetLevelGoalFormElement() {\n  const target_levels = JSON.parse(document.getElementById('target_level_data').dataset.source);\n\n  const dfElement = document.getElementById('default_fields_container');\n  dfElement.classList.remove('d-none');\n\n  const containerElement = document.createElement('div');\n  containerElement.classList.add('form-row');\n  containerElement.classList.add('flex-row');\n  containerElement.classList.add('mb-2');\n  containerElement.classList.add('target-level-container');\n\n  const containerElementInner = document.createElement('div');\n  containerElementInner.classList.add('col-6');\n\n  dfElement.appendChild(containerElement);\n  containerElement.appendChild(containerElementInner);\n\n  const newElementLabel = document.createElement('label');\n  newElementLabel.innerHTML = 'Target level ';\n  const containerElementSpan = document.createElement('span');\n  containerElementSpan.classList.add('required-field');\n  containerElementSpan.innerHTML = '*';\n  newElementLabel.appendChild(containerElementSpan);\n  containerElementInner.appendChild(newElementLabel);\n\n  const newElementPosition = document.createElement('input');\n  newElementPosition.setAttribute('type', 'hidden');\n  newElementPosition.value = goalPositionTracker;\n  goalPositionTracker += 1;\n  newElementPosition.name = 'goal[default_values][default][][position]';\n  containerElementInner.appendChild(newElementPosition);\n\n  const newElementName = document.createElement('input');\n  newElementName.setAttribute('type', 'hidden');\n  newElementName.value = 'target_level';\n  newElementName.name = 'goal[default_values][default][][name]';\n  containerElementInner.appendChild(newElementName);\n\n  const newElementVal = document.createElement('select');\n  newElementVal.classList.add('form-control');\n  newElementVal.required = true;\n  newElementVal.name = 'goal[default_values][default][][value]';\n\n  const array = target_levels;\n  var option = document.createElement('option');\n  option.value = '';\n  option.text = 'Select target level';\n  option.disabled = true;\n  option.selected = true;\n  newElementVal.appendChild(option);\n  for (let i = 0; i < array.length; i += 1) {\n    var option = document.createElement('option');\n    option.value = array[i];\n    option.text = array[i];\n    newElementVal.appendChild(option);\n  }\n\n  if (defaultValueData.default) {\n    let intVal;\n    for (let i = 0; i < defaultValueData.default.length; i += 1) {\n      const defaultValue = defaultValueData.default[i];\n      if (defaultValue.name === 'target_level') {\n        intVal = defaultValue.value;\n      }\n    }\n    if (intVal !== undefined) {\n      newElementVal.value = intVal;\n    }\n  }\n\n  containerElementInner.appendChild(newElementVal);\n}\n\nfunction addBlendGoalFormElement() {\n  const blends = JSON.parse(document.getElementById('blend_data').dataset.source);\n\n  const dfElement = document.getElementById('default_fields_container');\n  dfElement.classList.remove('d-none');\n\n  const containerElement = document.createElement('div');\n  containerElement.classList.add('form-row');\n  containerElement.classList.add('flex-row');\n  containerElement.classList.add('mb-2');\n  containerElement.classList.add('blend-container');\n\n  const containerElementInner = document.createElement('div');\n  containerElementInner.classList.add('col-6');\n\n  dfElement.appendChild(containerElement);\n  containerElement.appendChild(containerElementInner);\n\n  const newElementLabel = document.createElement('label');\n  newElementLabel.innerHTML = 'Blend ';\n  const containerElementSpan = document.createElement('span');\n  containerElementSpan.classList.add('required-field');\n  containerElementSpan.innerHTML = '*';\n  newElementLabel.appendChild(containerElementSpan);\n  containerElementInner.appendChild(newElementLabel);\n\n  const newElementPosition = document.createElement('input');\n  newElementPosition.setAttribute('type', 'hidden');\n  newElementPosition.value = goalPositionTracker;\n  goalPositionTracker += 1;\n  newElementPosition.name = 'goal[default_values][default][][position]';\n  containerElementInner.appendChild(newElementPosition);\n\n  const newElementName = document.createElement('input');\n  newElementName.setAttribute('type', 'hidden');\n  newElementName.value = 'blend';\n  newElementName.name = 'goal[default_values][default][][name]';\n  containerElementInner.appendChild(newElementName);\n\n  const newElementVal = document.createElement('select');\n  newElementVal.classList.add('form-control');\n  newElementVal.required = true;\n  newElementVal.name = 'goal[default_values][default][][value]';\n\n  const array = blends;\n  var option = document.createElement('option');\n  option.value = '';\n  option.text = 'Select blend';\n  option.disabled = true;\n  option.selected = true;\n  newElementVal.appendChild(option);\n  for (let i = 0; i < array.length; i += 1) {\n    var option = document.createElement('option');\n    option.value = array[i];\n    option.text = array[i];\n    newElementVal.appendChild(option);\n  }\n\n  if (defaultValueData.default) {\n    let intVal;\n    for (let i = 0; i < defaultValueData.default.length; i += 1) {\n      const defaultValue = defaultValueData.default[i];\n      if (defaultValue.name === 'blend') {\n        intVal = defaultValue.value;\n      }\n    }\n    if (intVal !== undefined) {\n      newElementVal.value = intVal;\n    }\n  }\n\n  containerElementInner.appendChild(newElementVal);\n}\n\nfunction addBlendGroupGoalFormElement() {\n  const blendGroups = JSON.parse(document.getElementById('blend_group_data').dataset.source);\n\n  const dfElement = document.getElementById('default_fields_container');\n  dfElement.classList.remove('d-none');\n\n  const containerElement = document.createElement('div');\n  containerElement.classList.add('form-row');\n  containerElement.classList.add('flex-row');\n  containerElement.classList.add('mb-2');\n  containerElement.classList.add('blend-group-container');\n\n  const containerElementInner = document.createElement('div');\n  containerElementInner.classList.add('col-6');\n\n  dfElement.appendChild(containerElement);\n  containerElement.appendChild(containerElementInner);\n\n  const newElementLabel = document.createElement('label');\n  newElementLabel.innerHTML = 'Blend group ';\n  const containerElementSpan = document.createElement('span');\n  containerElementSpan.classList.add('required-field');\n  containerElementSpan.innerHTML = '*';\n  newElementLabel.appendChild(containerElementSpan);\n  containerElementInner.appendChild(newElementLabel);\n\n  const newElementPosition = document.createElement('input');\n  newElementPosition.setAttribute('type', 'hidden');\n  newElementPosition.value = goalPositionTracker;\n  goalPositionTracker += 1;\n  newElementPosition.name = 'goal[default_values][default][][position]';\n  containerElementInner.appendChild(newElementPosition);\n\n  const newElementName = document.createElement('input');\n  newElementName.setAttribute('type', 'hidden');\n  newElementName.value = 'blend_group';\n  newElementName.name = 'goal[default_values][default][][name]';\n  containerElementInner.appendChild(newElementName);\n\n  const newElementVal = document.createElement('select');\n  newElementVal.classList.add('form-control');\n  newElementVal.required = true;\n  newElementVal.name = 'goal[default_values][default][][value]';\n\n  const array = blendGroups;\n  var option = document.createElement('option');\n  option.value = '';\n  option.text = 'Select blend group';\n  option.disabled = true;\n  option.selected = true;\n  newElementVal.appendChild(option);\n  for (let i = 0; i < array.length; i += 1) {\n    var option = document.createElement('option');\n    option.value = array[i];\n    option.text = array[i];\n    newElementVal.appendChild(option);\n  }\n  if (defaultValueData.default) {\n    let intVal;\n    for (let i = 0; i < defaultValueData.default.length; i += 1) {\n      const defaultValue = defaultValueData.default[i];\n      if (defaultValue.name === 'blend_group') {\n        intVal = defaultValue.value;\n      }\n    }\n    if (intVal !== undefined) {\n      newElementVal.value = intVal;\n    }\n  }\n\n  containerElementInner.appendChild(newElementVal);\n}\n\nfunction addPhonemeCategoryGoalFormElement() {\n  const phonemeCategories = JSON.parse(document.getElementById('phoneme_category_data').dataset.source);\n\n  const dfElement = document.getElementById('default_fields_container');\n  dfElement.classList.remove('d-none');\n\n  const containerElement = document.createElement('div');\n  containerElement.classList.add('form-row');\n  containerElement.classList.add('flex-row');\n  containerElement.classList.add('mb-2');\n  containerElement.classList.add('phoneme-category-container');\n\n  const containerElementInner = document.createElement('div');\n  containerElementInner.classList.add('col-6');\n\n  dfElement.appendChild(containerElement);\n  containerElement.appendChild(containerElementInner);\n\n  const newElementLabel = document.createElement('label');\n  newElementLabel.innerHTML = 'Phoneme category ';\n  const containerElementSpan = document.createElement('span');\n  containerElementSpan.classList.add('required-field');\n  containerElementSpan.innerHTML = '*';\n  newElementLabel.appendChild(containerElementSpan);\n  containerElementInner.appendChild(newElementLabel);\n\n  const newElementPosition = document.createElement('input');\n  newElementPosition.setAttribute('type', 'hidden');\n  newElementPosition.value = goalPositionTracker;\n  goalPositionTracker += 1;\n  newElementPosition.name = 'goal[default_values][default][][position]';\n  containerElementInner.appendChild(newElementPosition);\n\n  const newElementName = document.createElement('input');\n  newElementName.setAttribute('type', 'hidden');\n  newElementName.value = 'phoneme_category';\n  newElementName.name = 'goal[default_values][default][][name]';\n  containerElementInner.appendChild(newElementName);\n\n  const newElementVal = document.createElement('select');\n  newElementVal.classList.add('form-control');\n  newElementVal.required = true;\n  newElementVal.name = 'goal[default_values][default][][value]';\n\n  const array = phonemeCategories;\n  var option = document.createElement('option');\n  option.value = '';\n  option.text = 'Select phoneme category';\n  option.disabled = true;\n  option.selected = true;\n  newElementVal.appendChild(option);\n  for (let i = 0; i < array.length; i += 1) {\n    var option = document.createElement('option');\n    option.value = array[i];\n    option.text = array[i];\n    newElementVal.appendChild(option);\n  }\n  if (defaultValueData.default) {\n    let intVal;\n    for (let i = 0; i < defaultValueData.default.length; i += 1) {\n      const defaultValue = defaultValueData.default[i];\n      if (defaultValue.name === 'phoneme_category') {\n        intVal = defaultValue.value;\n      }\n    }\n    if (intVal !== undefined) {\n      newElementVal.value = intVal;\n    }\n  }\n\n  containerElementInner.appendChild(newElementVal);\n}\n\nfunction addPhonemeGroupGoalFormElement() {\n  const phonemeGroups = JSON.parse(document.getElementById('phoneme_group_data').dataset.source);\n\n  const dfElement = document.getElementById('default_fields_container');\n  dfElement.classList.remove('d-none');\n\n  const containerElement = document.createElement('div');\n  containerElement.classList.add('form-row');\n  containerElement.classList.add('flex-row');\n  containerElement.classList.add('mb-2');\n  containerElement.classList.add('phoneme-group-container');\n\n  const containerElementInner = document.createElement('div');\n  containerElementInner.classList.add('col-6');\n\n  dfElement.appendChild(containerElement);\n  containerElement.appendChild(containerElementInner);\n\n  const newElementLabel = document.createElement('label');\n  newElementLabel.innerHTML = 'Phoneme group ';\n  const containerElementSpan = document.createElement('span');\n  containerElementSpan.classList.add('required-field');\n  containerElementSpan.innerHTML = '*';\n  newElementLabel.appendChild(containerElementSpan);\n  containerElementInner.appendChild(newElementLabel);\n\n  const newElementPosition = document.createElement('input');\n  newElementPosition.setAttribute('type', 'hidden');\n  newElementPosition.value = goalPositionTracker;\n  goalPositionTracker += 1;\n  newElementPosition.name = 'goal[default_values][default][][position]';\n  containerElementInner.appendChild(newElementPosition);\n\n  const newElementName = document.createElement('input');\n  newElementName.setAttribute('type', 'hidden');\n  newElementName.value = 'phoneme_group';\n  newElementName.name = 'goal[default_values][default][][name]';\n  containerElementInner.appendChild(newElementName);\n\n  const newElementVal = document.createElement('select');\n  newElementVal.classList.add('form-control');\n  newElementVal.required = true;\n  newElementVal.name = 'goal[default_values][default][][value]';\n\n  const array = phonemeGroups;\n  var option = document.createElement('option');\n  option.value = '';\n  option.text = 'Select phoneme group';\n  option.disabled = true;\n  option.selected = true;\n  newElementVal.appendChild(option);\n  for (let i = 0; i < array.length; i += 1) {\n    var option = document.createElement('option');\n    option.value = array[i];\n    option.text = array[i];\n    newElementVal.appendChild(option);\n  }\n  if (defaultValueData.default) {\n    let intVal;\n    for (let i = 0; i < defaultValueData.default.length; i += 1) {\n      const defaultValue = defaultValueData.default[i];\n      if (defaultValue.name === 'phoneme_group') {\n        intVal = defaultValue.value;\n      }\n    }\n    if (intVal !== undefined) {\n      newElementVal.value = intVal;\n    }\n  }\n\n  containerElementInner.appendChild(newElementVal);\n}\n\nfunction addPhonemeGoalFormElement() {\n  const phonemes = JSON.parse(document.getElementById('phoneme_data').dataset.source);\n  const dfElement = document.getElementById('default_fields_container');\n  dfElement.classList.remove('d-none');\n\n  const containerElement = document.createElement('div');\n  containerElement.classList.add('form-row');\n  containerElement.classList.add('flex-row');\n  containerElement.classList.add('mb-2');\n  containerElement.classList.add('phoneme-container');\n\n  const containerElementInner = document.createElement('div');\n  containerElementInner.classList.add('col-6');\n\n  dfElement.appendChild(containerElement);\n  containerElement.appendChild(containerElementInner);\n\n  const newElementLabel = document.createElement('label');\n  newElementLabel.innerHTML = 'Phoneme ';\n  const containerElementSpan = document.createElement('span');\n  containerElementSpan.classList.add('required-field');\n  containerElementSpan.innerHTML = '*';\n  newElementLabel.appendChild(containerElementSpan);\n  containerElementInner.appendChild(newElementLabel);\n\n  const newElementPosition = document.createElement('input');\n  newElementPosition.setAttribute('type', 'hidden');\n  newElementPosition.value = goalPositionTracker;\n  goalPositionTracker += 1;\n  newElementPosition.name = 'goal[default_values][default][][position]';\n  containerElementInner.appendChild(newElementPosition);\n\n  const newElementName = document.createElement('input');\n  newElementName.setAttribute('type', 'hidden');\n  newElementName.value = 'phoneme';\n  newElementName.name = 'goal[default_values][default][][name]';\n  containerElementInner.appendChild(newElementName);\n\n  const newElementVal = document.createElement('select');\n  newElementVal.classList.add('form-control');\n  newElementVal.required = true;\n  newElementVal.name = 'goal[default_values][default][][value]';\n\n  const array = phonemes;\n  var option = document.createElement('option');\n  option.value = '';\n  option.text = 'Select phoneme';\n  option.disabled = true;\n  option.selected = true;\n  newElementVal.appendChild(option);\n  for (let i = 0; i < array.length; i += 1) {\n    const optionGroup = document.createElement('optgroup');\n    optionGroup.setAttribute('label', array[i][0]);\n    const inner_array = array[i][1];\n    for (let j = 0; j < inner_array.length; j++) {\n      var option = document.createElement('option');\n      option.value = inner_array[j][1];\n      option.text = inner_array[j][0];\n      optionGroup.appendChild(option);\n    }\n    newElementVal.appendChild(optionGroup);\n  }\n  if (defaultValueData.default) {\n    let intVal;\n    for (let i = 0; i < defaultValueData.default.length; i += 1) {\n      const defaultValue = defaultValueData.default[i];\n      if (defaultValue.name === 'phoneme') {\n        intVal = defaultValue.value;\n      }\n    }\n    if (intVal !== undefined) {\n      newElementVal.value = intVal;\n    }\n  }\n\n  containerElementInner.appendChild(newElementVal);\n}\n\nfunction addStringGoalFormElement() {\n  const dfElement = document.getElementById('default_fields_container');\n  dfElement.classList.remove('d-none');\n\n  const containerElement = document.createElement('div');\n  containerElement.classList.add('form-row');\n  containerElement.classList.add('flex-row');\n  containerElement.classList.add('mb-2');\n  containerElement.classList.add('string-container');\n\n  const containerElementInner = document.createElement('div');\n  containerElementInner.classList.add('col-6');\n\n  dfElement.appendChild(containerElement);\n  containerElement.appendChild(containerElementInner);\n\n  const newElementLabel = document.createElement('label');\n  newElementLabel.innerHTML = 'String ';\n  const containerElementSpan = document.createElement('span');\n  containerElementSpan.classList.add('required-field');\n  containerElementSpan.innerHTML = '*';\n  newElementLabel.appendChild(containerElementSpan);\n  containerElementInner.appendChild(newElementLabel);\n\n  const newElementPosition = document.createElement('input');\n  newElementPosition.setAttribute('type', 'hidden');\n  newElementPosition.value = goalPositionTracker;\n  goalPositionTracker += 1;\n  newElementPosition.name = 'goal[default_values][default][][position]';\n  containerElementInner.appendChild(newElementPosition);\n\n  const newElementName = document.createElement('input');\n  newElementName.setAttribute('type', 'hidden');\n  if (defaultValueData.default) {\n    let intVal;\n    for (let i = 0; i < defaultValueData.default.length; i += 1) {\n      const defaultValue = defaultValueData.default[i];\n      if (defaultValue.name === 'string') {\n        intVal = defaultValue.value;\n      }\n    }\n    if (intVal === undefined) {\n      newElementName.value = 'string';\n    } else {\n      newElementVal.value = intVal;\n    }\n  } else {\n    newElementName.value = 'string';\n  }\n  newElementName.name = 'goal[default_values][default][][name]';\n  containerElementInner.appendChild(newElementName);\n\n  const newElementVal = document.createElement('input');\n  newElementVal.setAttribute('type', 'text');\n  newElementVal.setAttribute('placeholder', 'Add a default value');\n  newElementVal.required = true;\n  newElementVal.classList.add('form-control');\n  newElementVal.name = 'goal[default_values][default][][value]';\n  containerElementInner.appendChild(newElementVal);\n}\n\nfunction addIntegerGoalFormElement() {\n  const dfElement = document.getElementById('default_fields_container');\n  dfElement.classList.remove('d-none');\n\n  const containerElement = document.createElement('div');\n  containerElement.classList.add('form-row');\n  containerElement.classList.add('flex-row');\n  containerElement.classList.add('mb-2');\n  containerElement.classList.add('integer-container');\n\n  const containerElementInner = document.createElement('div');\n  containerElementInner.classList.add('col-6');\n\n  dfElement.appendChild(containerElement);\n  containerElement.appendChild(containerElementInner);\n\n  const newElementLabel = document.createElement('label');\n  newElementLabel.innerHTML = 'Integer ';\n  const containerElementSpan = document.createElement('span');\n  containerElementSpan.classList.add('required-field');\n  containerElementSpan.innerHTML = '*';\n  newElementLabel.appendChild(containerElementSpan);\n  containerElementInner.appendChild(newElementLabel);\n\n  const newElementPosition = document.createElement('input');\n  newElementPosition.setAttribute('type', 'hidden');\n  newElementPosition.value = goalPositionTracker;\n  goalPositionTracker += 1;\n  newElementPosition.name = 'goal[default_values][default][][position]';\n  containerElementInner.appendChild(newElementPosition);\n\n  const newElementName = document.createElement('input');\n  newElementName.setAttribute('type', 'hidden');\n  newElementName.value = 'integer';\n  newElementName.name = 'goal[default_values][default][][name]';\n  containerElementInner.appendChild(newElementName);\n\n  const newElementVal = document.createElement('input');\n  newElementVal.setAttribute('type', 'number');\n  newElementVal.required = true;\n  if (defaultValueData.default) {\n    let intVal;\n    for (let i = 0; i < defaultValueData.default.length; i += 1) {\n      const defaultValue = defaultValueData.default[i];\n      if (defaultValue.name === 'integer') {\n        intVal = defaultValue.value;\n      }\n    }\n    if (intVal === undefined) {\n      newElementVal.value = 5;\n    } else {\n      newElementVal.value = intVal;\n    }\n  } else {\n    newElementVal.value = 5;\n  }\n  newElementVal.classList.add('form-control');\n  newElementVal.name = 'goal[default_values][default][][value]';\n  containerElementInner.appendChild(newElementVal);\n}\n\nfunction addPercentageGoalFormElement() {\n  const dfElement = document.getElementById('default_fields_container');\n  dfElement.classList.remove('d-none');\n\n  const containerElement = document.createElement('div');\n  containerElement.classList.add('form-row');\n  containerElement.classList.add('flex-row');\n  containerElement.classList.add('mb-2');\n  containerElement.classList.add('percentage-container');\n\n  const containerElementInner = document.createElement('div');\n  containerElementInner.classList.add('col-6');\n\n  const containerElementInputGroup = document.createElement('div');\n  containerElementInputGroup.classList.add('input-group');\n\n  dfElement.appendChild(containerElement);\n  containerElement.appendChild(containerElementInner);\n\n  const newElementLabel = document.createElement('label');\n  newElementLabel.innerHTML = 'Percentage ';\n  const containerElementSpan = document.createElement('span');\n  containerElementSpan.classList.add('required-field');\n  containerElementSpan.innerHTML = '*';\n  newElementLabel.appendChild(containerElementSpan);\n  containerElementInner.appendChild(newElementLabel);\n\n  containerElementInner.appendChild(containerElementInputGroup);\n\n  const newElementPosition = document.createElement('input');\n  newElementPosition.setAttribute('type', 'hidden');\n  newElementPosition.value = goalPositionTracker;\n  goalPositionTracker += 1;\n  newElementPosition.name = 'goal[default_values][default][][position]';\n  containerElementInputGroup.appendChild(newElementPosition);\n\n  const newElementName = document.createElement('input');\n  newElementName.setAttribute('type', 'hidden');\n  newElementName.value = 'percentage';\n  newElementName.name = 'goal[default_values][default][][name]';\n  containerElementInputGroup.appendChild(newElementName);\n\n  const newElementVal = document.createElement('input');\n  newElementVal.setAttribute('type', 'number');\n  newElementVal.required = true;\n  if (defaultValueData.default) {\n    let intVal;\n    for (let i = 0; i < defaultValueData.default.length; i += 1) {\n      const defaultValue = defaultValueData.default[i];\n      if (defaultValue.name === 'percentage') {\n        intVal = defaultValue.value;\n      }\n    }\n    if (intVal === undefined) {\n      newElementVal.value = 80;\n    } else {\n      newElementVal.value = intVal;\n    }\n  } else {\n    newElementVal.value = 80;\n  }\n  newElementVal.classList.add('form-control');\n  newElementVal.name = 'goal[default_values][default][][value]';\n  containerElementInputGroup.appendChild(newElementVal);\n\n  const newElementGroup = document.createElement('div');\n  newElementGroup.classList.add('input-group-append');\n\n  const newElementSpan = document.createElement('span');\n  newElementSpan.classList.add('input-group-text');\n  newElementSpan.innerHTML = '%';\n\n  newElementGroup.appendChild(newElementSpan);\n  containerElementInputGroup.appendChild(newElementGroup);\n}\n\nfunction addPatientNameGoalFormElement() {\n  const dfElement = document.getElementById('default_fields_container');\n  dfElement.classList.remove('d-none');\n\n  const containerElement = document.createElement('div');\n  containerElement.classList.add('form-row');\n  containerElement.classList.add('flex-row');\n  containerElement.classList.add('mb-2');\n  containerElement.classList.add('patient-name-container');\n\n  const containerElementInner = document.createElement('div');\n  containerElementInner.classList.add('col-6');\n\n  dfElement.appendChild(containerElement);\n  containerElement.appendChild(containerElementInner);\n\n  const newElementLabel = document.createElement('label');\n  newElementLabel.innerHTML = 'Patient name ';\n  const containerElementSpan = document.createElement('span');\n  containerElementSpan.classList.add('required-field');\n  containerElementSpan.innerHTML = '*';\n  newElementLabel.appendChild(containerElementSpan);\n  containerElementInner.appendChild(newElementLabel);\n\n  const newElementPosition = document.createElement('input');\n  newElementPosition.setAttribute('type', 'hidden');\n  newElementPosition.value = goalPositionTracker;\n  goalPositionTracker += 1;\n  newElementPosition.name = 'goal[default_values][default][][position]';\n  containerElementInner.appendChild(newElementPosition);\n\n  const newElementName = document.createElement('input');\n  newElementName.setAttribute('type', 'hidden');\n  newElementName.value = 'patient_name';\n  newElementName.name = 'goal[default_values][default][][name]';\n  containerElementInner.appendChild(newElementName);\n\n  const newElementVal = document.createElement('input');\n  newElementVal.setAttribute('type', 'text');\n  newElementVal.required = true;\n  if (defaultValueData.default) {\n    let intVal;\n    for (let i = 0; i < defaultValueData.default.length; i += 1) {\n      const defaultValue = defaultValueData.default[i];\n      if (defaultValue.name === 'patient_name') {\n        intVal = defaultValue.value;\n      }\n    }\n    if (intVal === undefined) {\n      newElementVal.value = 'Jane';\n    } else {\n      newElementVal.value = intVal;\n    }\n  } else {\n    newElementVal.value = 'Jane';\n  }\n  newElementVal.classList.add('form-control');\n  newElementVal.name = 'goal[default_values][default][][value]';\n  containerElementInner.appendChild(newElementVal);\n}\n\nfunction selectAll(e) {\n  const range = document.createRange();\n  range.selectNode(e.target);\n  window.getSelection().removeAllRanges();\n  window.getSelection().addRange(range);\n}\n\nfunction setUpCustomTagListeners() {\n  const customTags = document.querySelectorAll('gc-who, gc-skill ,gc-context, gc-measurable, gc-reason, gc-timeframe');\n  for (let i = 0; i < customTags.length; i += 1) {\n    const tag = customTags[i];\n    tag.removeEventListener('click', selectAll);\n    tag.addEventListener('click', selectAll);\n  }\n}\n\nexport function rebuildDynamicElements() {\n  if (!defaultValueData) setDefaultDataValue();\n  const dfElement = document.getElementById('default_fields_container');\n  while (dfElement.firstChild) {\n    dfElement.removeChild(dfElement.firstChild);\n  }\n  const containerElement = document.createElement('h4');\n  containerElement.textContent = 'Default values';\n  dfElement.appendChild(containerElement);\n\n  const element = document.querySelector('trix-editor');\n  const trixDocument = element.editor.getDocument();\n  const trixString = trixDocument.toString();\n  const matches = trixString.match(/{{[^{]*}}/g);\n\n  if (matches !== null) {\n    for (let i = 0; i < matches.length; i += 1) {\n      if (matches[i] === '{{patient_name}}') {\n        addPatientNameGoalFormElement();\n      } else if (matches[i] === '{{percentage}}') {\n        addPercentageGoalFormElement();\n      } else if (matches[i] === '{{integer}}') {\n        addIntegerGoalFormElement();\n      } else if (matches[i] === '{{string}}') {\n        addStringGoalFormElement();\n      } else if (matches[i] === '{{phoneme}}') {\n        addPhonemeGoalFormElement();\n      } else if (matches[i] === '{{phoneme_category}}') {\n        addPhonemeCategoryGoalFormElement();\n      } else if (matches[i] === '{{phoneme_group}}') {\n        addPhonemeGroupGoalFormElement();\n      } else if (matches[i] === '{{blend}}') {\n        addBlendGoalFormElement();\n      } else if (matches[i] === '{{blend_group}}') {\n        addBlendGroupGoalFormElement();\n      } else if (matches[i] === '{{target_level}}') {\n        addTargetLevelGoalFormElement();\n      } else if (matches[i] === '{{position_in_word}}') {\n        addPositionInWordGoalFormElement();\n      } else if (matches[i] === '{{possessive_pronoun}}') {\n        addPossessivePronounGoalFormElement();\n      } else if (matches[i] === '{{object_pronoun}}') {\n        addObjectPronounGoalFormElement();\n      }\n    }\n  }\n  resetGoalFormPositions();\n}\n\nexport function goalsTrixInitialize(event) {\n  if (!defaultValueData) setDefaultDataValue();\n  const editor = event.target;\n  const toolbar = editor.toolbarElement;\n  const ttools = toolbar.querySelector('.trix-button-group--text-tools');\n  const btools = toolbar.querySelector('.trix-button-group--block-tools');\n  const ftools = toolbar.querySelector('.trix-button-group--file-tools');\n\n  const goals = `\n      <span class=\"trix-button-group trix-button-group--goal-tools\" data-trix-button-group=\"goal-tools\">\n        <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-patient\" data-trix-action=\"x-patient\" title=\"Add patient name\" tabindex=\"-1\">Patient name</button>\n        <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-percentage\" data-trix-action=\"x-percentage\" title=\"Add number blank (percentage)\" tabindex=\"-1\">Percentage</button>\n        <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-integer\" data-trix-action=\"x-integer\" title=\"Add number blank (integer)\" tabindex=\"-1\">Integer</button>\n        <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-string\" data-trix-action=\"x-string\" title=\"Add text blank\" tabindex=\"-1\">String</button>\n        <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-possessive-pronoun\" data-trix-action=\"x-possessive-pronoun\" title=\"Add possessive pronoun (e.g. her, his, their)\" tabindex=\"-1\">Possessive pronoun</button>\n        <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-object-pronoun\" data-trix-action=\"x-object-pronoun\" title=\"Add object pronoun (e.g. she, he, they)\" tabindex=\"-1\">Object pronoun</button>\n      </span>\n    `;\n\n  const speechGoals = `\n      <span class=\"trix-button-group trix-button-group--speech-goal-tools\" data-trix-button-group=\"speech-goal-tools\">\n        <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-phoneme\" data-trix-action=\"x-phoneme\" title=\"Add phoneme\" tabindex=\"-1\">Phoneme</button>\n        <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-phoneme-category\" data-trix-action=\"x-phoneme-category\" title=\"Add phoneme category\" tabindex=\"-1\">Phoneme category</button>\n        <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-phoneme-group\" data-trix-action=\"x-phoneme-group\" title=\"Add phoneme group\" tabindex=\"-1\">Phoneme group</button>\n        <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-blend\" data-trix-action=\"x-blend\" title=\"Add blend\" tabindex=\"-1\">Blend</button>\n        <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-blend-group\" data-trix-action=\"x-blend-group\" title=\"Add blend group\" tabindex=\"-1\">Blend group</button>\n        <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-target-level\" data-trix-action=\"x-target-level\" title=\"Add target level\" tabindex=\"-1\">Target level</button>\n        <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"g-position-in-word\" data-trix-action=\"x-position-in-word\" title=\"Add position in word of phoneme/blend\" tabindex=\"-1\">Position in word</button>\n      </span>\n    `;\n\n  const components = `\n      <span class=\"trix-button-group trix-button-group--component-tools\" data-trix-button-group=\"component-tools\">\n        <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"gc-who\" data-trix-action=\"x-gcwho\" title=\"Goal component - Who\" tabindex=\"-1\">Who</button>\n        <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"gc-skill\" data-trix-action=\"x-gcimpairment\" title=\"Goal component - Skill / impairment\" tabindex=\"-1\">Skill</button>\n        <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"gc-context\" data-trix-action=\"x-gccontext\" title=\"Goal component - Context\" tabindex=\"-1\">Context</button>\n        <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"gc-measurable\" data-trix-action=\"x-gcmeasurable\" title=\"Goal component - Measurable\" tabindex=\"-1\">Measurable</button>\n        <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"gc-reason\" data-trix-action=\"x-gcreason\" title=\"Goal component - Reason\" tabindex=\"-1\">Reason</button>\n        <button type=\"button\" class=\"trix-button\" data-trix-attribute=\"gc-timeframe\" data-trix-action=\"x-gctimeframe\" title=\"Goal component - Time frame\" tabindex=\"-1\">Time frame</button>\n      </span>\n    `;\n\n  ttools.insertAdjacentHTML('beforebegin', goals);\n  ttools.insertAdjacentHTML('beforebegin', speechGoals);\n  ttools.insertAdjacentHTML('beforebegin', components);\n  ttools.remove();\n  btools.remove();\n  ftools.remove();\n\n  const element = document.querySelector('trix-editor');\n  const trixDocument = element.editor.getDocument();\n  const trixString = trixDocument.toString();\n  const matches = trixString.match(/{{[^{]*}}/g);\n\n  if (matches !== null) {\n    for (let i = 0; i < matches.length; i += 1) {\n      if (matches[i] === '{{patient_name}}') {\n        addPatientNameGoalFormElement();\n      } else if (matches[i] === '{{percentage}}') {\n        addPercentageGoalFormElement();\n      } else if (matches[i] === '{{integer}}') {\n        addIntegerGoalFormElement();\n      } else if (matches[i] === '{{string}}') {\n        addStringGoalFormElement();\n      } else if (matches[i] === '{{phoneme}}') {\n        addPhonemeGoalFormElement();\n      } else if (matches[i] === '{{phoneme_category}}') {\n        addPhonemeCategoryGoalFormElement();\n      } else if (matches[i] === '{{phoneme_group}}') {\n        addPhonemeGroupGoalFormElement();\n      } else if (matches[i] === '{{blend}}') {\n        addBlendGoalFormElement();\n      } else if (matches[i] === '{{blend_group}}') {\n        addBlendGroupGoalFormElement();\n      } else if (matches[i] === '{{target_level}}') {\n        addTargetLevelGoalFormElement();\n      } else if (matches[i] === '{{position_in_word}}') {\n        addPositionInWordGoalFormElement();\n      } else if (matches[i] === '{{possessive_pronoun}}') {\n        addPossessivePronounGoalFormElement();\n      } else if (matches[i] === '{{object_pronoun}}') {\n        addObjectPronounGoalFormElement();\n      }\n    }\n  }\n  resetGoalFormPositions();\n  setUpCustomTagListeners();\n\n  if (document.getElementsByTagName('gc-who').length > 0) {\n    const tfElement = document.getElementById('goal-who');\n    while (tfElement.firstChild) {\n      tfElement.removeChild(tfElement.firstChild);\n    }\n    const newElement = document.createElement('s');\n    const newContent = document.createTextNode('Who');\n    newElement.classList.add('text-muted');\n    newElement.appendChild(newContent);\n    tfElement.appendChild(newElement);\n  }\n\n  if (document.getElementsByTagName('gc-skill').length > 0) {\n    const tfElement = document.getElementById('goal-skill');\n    while (tfElement.firstChild) {\n      tfElement.removeChild(tfElement.firstChild);\n    }\n    const newElement = document.createElement('s');\n    const newContent = document.createTextNode('Skill');\n    newElement.classList.add('text-muted');\n    newElement.appendChild(newContent);\n    tfElement.appendChild(newElement);\n  }\n\n  if (document.getElementsByTagName('gc-context').length > 0) {\n    const tfElement = document.getElementById('goal-context');\n    while (tfElement.firstChild) {\n      tfElement.removeChild(tfElement.firstChild);\n    }\n    const newElement = document.createElement('s');\n    const newContent = document.createTextNode('Context');\n    newElement.classList.add('text-muted');\n    newElement.appendChild(newContent);\n    tfElement.appendChild(newElement);\n  }\n\n  if (document.getElementsByTagName('gc-measurable').length > 0) {\n    const tfElement = document.getElementById('goal-measurable');\n    while (tfElement.firstChild) {\n      tfElement.removeChild(tfElement.firstChild);\n    }\n    const newElement = document.createElement('s');\n    const newContent = document.createTextNode('Measurable');\n    newElement.classList.add('text-muted');\n    newElement.appendChild(newContent);\n    tfElement.appendChild(newElement);\n  }\n\n  if (document.getElementsByTagName('gc-reason').length > 0) {\n    const tfElement = document.getElementById('goal-function');\n    while (tfElement.firstChild) {\n      tfElement.removeChild(tfElement.firstChild);\n    }\n    const newElement = document.createElement('s');\n    const newContent = document.createTextNode('Reason');\n    newElement.classList.add('text-muted');\n    newElement.appendChild(newContent);\n    tfElement.appendChild(newElement);\n  }\n\n  if (document.getElementsByTagName('gc-timeframe').length > 0) {\n    const tfElement = document.getElementById('goal-timeframe');\n    while (tfElement.firstChild) {\n      tfElement.removeChild(tfElement.firstChild);\n    }\n    const newElement = document.createElement('s');\n    const newContent = document.createTextNode('Time Frame');\n    newElement.classList.add('text-muted');\n    newElement.appendChild(newContent);\n    tfElement.appendChild(newElement);\n  }\n\n  document.addEventListener('trix-action-invoke', (e) => {\n    setUpCustomTagListeners();\n    if (e.actionName === 'x-gcwho') {\n      // I can't find an event that fires after trix-active is added, so we'll have\n      // to settle for a hacky setTimeout for now.\n      setTimeout(() => {\n        const tfCount = document.getElementsByTagName('gc-who').length;\n        if (tfCount > 0) {\n          const tfElement = document.getElementById('goal-who');\n          while (tfElement.firstChild) {\n            tfElement.removeChild(tfElement.firstChild);\n          }\n          const newElement = document.createElement('s');\n          const newContent = document.createTextNode('Who');\n          newElement.classList.add('text-muted');\n          newElement.appendChild(newContent);\n          tfElement.appendChild(newElement);\n        } else {\n          const tfElement = document.getElementById('goal-who');\n          const tfText = tfElement.textContent;\n          while (tfElement.firstChild) {\n            tfElement.removeChild(tfElement.firstChild);\n          }\n          tfElement.textContent = 'Who';\n        }\n      }, 1);\n    }\n\n    if (e.actionName === 'x-gcimpairment') {\n      // I can't find an event that fires after trix-active is added, so we'll have\n      // to settle for a hacky setTimeout for now.\n      setTimeout(() => {\n        const tfCount = document.getElementsByTagName('gc-skill').length;\n        if (tfCount > 0) {\n          const tfElement = document.getElementById('goal-skill');\n          while (tfElement.firstChild) {\n            tfElement.removeChild(tfElement.firstChild);\n          }\n          const newElement = document.createElement('s');\n          const newContent = document.createTextNode('Skill');\n          newElement.classList.add('text-muted');\n          newElement.appendChild(newContent);\n          tfElement.appendChild(newElement);\n        } else {\n          const tfElement = document.getElementById('goal-skill');\n          const tfText = tfElement.textContent;\n          while (tfElement.firstChild) {\n            tfElement.removeChild(tfElement.firstChild);\n          }\n          tfElement.textContent = 'Skill';\n        }\n      }, 1);\n    }\n\n    if (e.actionName === 'x-gccontext') {\n      // I can't find an event that fires after trix-active is added, so we'll have\n      // to settle for a hacky setTimeout for now.\n      setTimeout(() => {\n        const tfCount = document.getElementsByTagName('gc-context').length;\n        if (tfCount > 0) {\n          const tfElement = document.getElementById('goal-context');\n          while (tfElement.firstChild) {\n            tfElement.removeChild(tfElement.firstChild);\n          }\n          const newElement = document.createElement('s');\n          const newContent = document.createTextNode('Context');\n          newElement.classList.add('text-muted');\n          newElement.appendChild(newContent);\n          tfElement.appendChild(newElement);\n        } else {\n          const tfElement = document.getElementById('goal-context');\n          const tfText = tfElement.textContent;\n          while (tfElement.firstChild) {\n            tfElement.removeChild(tfElement.firstChild);\n          }\n          tfElement.textContent = 'Context';\n        }\n      }, 1);\n    }\n\n    if (e.actionName === 'x-gcmeasurable') {\n      // I can't find an event that fires after trix-active is added, so we'll have\n      // to settle for a hacky setTimeout for now.\n      setTimeout(() => {\n        const tfCount = document.getElementsByTagName('gc-measurable').length;\n        if (tfCount > 0) {\n          const tfElement = document.getElementById('goal-measurable');\n          while (tfElement.firstChild) {\n            tfElement.removeChild(tfElement.firstChild);\n          }\n          const newElement = document.createElement('s');\n          const newContent = document.createTextNode('Measurable');\n          newElement.classList.add('text-muted');\n          newElement.appendChild(newContent);\n          tfElement.appendChild(newElement);\n        } else {\n          const tfElement = document.getElementById('goal-measurable');\n          const tfText = tfElement.textContent;\n          while (tfElement.firstChild) {\n            tfElement.removeChild(tfElement.firstChild);\n          }\n          tfElement.textContent = 'Measurable';\n        }\n      }, 1);\n    }\n\n    if (e.actionName === 'x-gcreason') {\n      // I can't find an event that fires after trix-active is added, so we'll have\n      // to settle for a hacky setTimeout for now.\n      setTimeout(() => {\n        const tfCount = document.getElementsByTagName('gc-reason').length;\n        if (tfCount > 0) {\n          const tfElement = document.getElementById('goal-function');\n          while (tfElement.firstChild) {\n            tfElement.removeChild(tfElement.firstChild);\n          }\n          const newElement = document.createElement('s');\n          const newContent = document.createTextNode('Reason');\n          newElement.classList.add('text-muted');\n          newElement.appendChild(newContent);\n          tfElement.appendChild(newElement);\n        } else {\n          const tfElement = document.getElementById('goal-function');\n          const tfText = tfElement.textContent;\n          while (tfElement.firstChild) {\n            tfElement.removeChild(tfElement.firstChild);\n          }\n          tfElement.textContent = 'Reason';\n        }\n      }, 1);\n    }\n\n    if (e.actionName === 'x-gctimeframe') {\n      // I can't find an event that fires after trix-active is added, so we'll have\n      // to settle for a hacky setTimeout for now.\n      setTimeout(() => {\n        const tfCount = document.getElementsByTagName('gc-timeframe').length;\n        if (tfCount > 0) {\n          const tfElement = document.getElementById('goal-timeframe');\n          while (tfElement.firstChild) {\n            tfElement.removeChild(tfElement.firstChild);\n          }\n          const newElement = document.createElement('s');\n          const newContent = document.createTextNode('Time Frame');\n          newElement.classList.add('text-muted');\n          newElement.appendChild(newContent);\n          tfElement.appendChild(newElement);\n        } else {\n          const tfElement = document.getElementById('goal-timeframe');\n          const tfText = tfElement.textContent;\n          while (tfElement.firstChild) {\n            tfElement.removeChild(tfElement.firstChild);\n          }\n          tfElement.textContent = 'Time Frame';\n        }\n      }, 1);\n    }\n\n    if (e.actionName === 'x-patient') {\n      element.editor.insertString('{{patient_name}} ');\n\n      addPatientNameGoalFormElement();\n      // I can't find an event that fires after trix-active is added, so we'll have\n      // to settle for a hacky setTimeout for now.\n      setTimeout(() => {\n        const els = document.getElementsByClassName('trix-active');\n        for (let i = 0; i < els.length; i += 1) {\n          els[i].classList.remove('trix-active');\n        }\n      }, 1);\n    }\n\n    if (e.actionName === 'x-percentage') {\n      element.editor.insertString('{{percentage}}% ');\n      addPercentageGoalFormElement();\n      // I can't find an event that fires after trix-active is added, so we'll have\n      // to settle for a hacky setTimeout for now.\n      setTimeout(() => {\n        const els = document.getElementsByClassName('trix-active');\n        for (let i = 0; i < els.length; i += 1) {\n          els[i].classList.remove('trix-active');\n        }\n      }, 1);\n    }\n\n    if (e.actionName === 'x-integer') {\n      element.editor.insertString('{{integer}} ');\n      addIntegerGoalFormElement();\n\n      // I can't find an event that fires after trix-active is added, so we'll have\n      // to settle for a hacky setTimeout for now.\n      setTimeout(() => {\n        const els = document.getElementsByClassName('trix-active');\n        for (let i = 0; i < els.length; i += 1) {\n          els[i].classList.remove('trix-active');\n        }\n      }, 1);\n    }\n\n    if (e.actionName === 'x-string') {\n      element.editor.insertString('{{string}} ');\n      addStringGoalFormElement();\n\n      // I can't find an event that fires after trix-active is added, so we'll have\n      // to settle for a hacky setTimeout for now.\n      setTimeout(() => {\n        const els = document.getElementsByClassName('trix-active');\n        for (let i = 0; i < els.length; i += 1) {\n          els[i].classList.remove('trix-active');\n        }\n      }, 1);\n    }\n\n    if (e.actionName === 'x-phoneme') {\n      element.editor.insertString('/{{phoneme}}/ ');\n      addPhonemeGoalFormElement();\n\n      // I can't find an event that fires after trix-active is added, so we'll have\n      // to settle for a hacky setTimeout for now.\n      setTimeout(() => {\n        const els = document.getElementsByClassName('trix-active');\n        for (let i = 0; i < els.length; i += 1) {\n          els[i].classList.remove('trix-active');\n        }\n      }, 1);\n    }\n\n    if (e.actionName === 'x-phoneme-category') {\n      element.editor.insertString('{{phoneme_category}} ');\n      addPhonemeCategoryGoalFormElement();\n\n      // I can't find an event that fires after trix-active is added, so we'll have\n      // to settle for a hacky setTimeout for now.\n      setTimeout(() => {\n        const els = document.getElementsByClassName('trix-active');\n        for (let i = 0; i < els.length; i += 1) {\n          els[i].classList.remove('trix-active');\n        }\n      }, 1);\n    }\n\n    if (e.actionName === 'x-phoneme-group') {\n      element.editor.insertString('{{phoneme_group}} ');\n      addPhonemeGroupGoalFormElement();\n\n      // I can't find an event that fires after trix-active is added, so we'll have\n      // to settle for a hacky setTimeout for now.\n      setTimeout(() => {\n        const els = document.getElementsByClassName('trix-active');\n        for (let i = 0; i < els.length; i += 1) {\n          els[i].classList.remove('trix-active');\n        }\n      }, 1);\n    }\n\n    if (e.actionName === 'x-blend') {\n      element.editor.insertString('{{blend}} ');\n      addBlendGoalFormElement();\n\n      // I can't find an event that fires after trix-active is added, so we'll have\n      // to settle for a hacky setTimeout for now.\n      setTimeout(() => {\n        const els = document.getElementsByClassName('trix-active');\n        for (let i = 0; i < els.length; i += 1) {\n          els[i].classList.remove('trix-active');\n        }\n      }, 1);\n    }\n\n    if (e.actionName === 'x-blend-group') {\n      element.editor.insertString('{{blend_group}} ');\n      addBlendGroupGoalFormElement();\n\n      // I can't find an event that fires after trix-active is added, so we'll have\n      // to settle for a hacky setTimeout for now.\n      setTimeout(() => {\n        const els = document.getElementsByClassName('trix-active');\n        for (let i = 0; i < els.length; i += 1) {\n          els[i].classList.remove('trix-active');\n        }\n      }, 1);\n    }\n\n    if (e.actionName === 'x-target-level') {\n      element.editor.insertString('{{target_level}} ');\n      addTargetLevelGoalFormElement();\n\n      // I can't find an event that fires after trix-active is added, so we'll have\n      // to settle for a hacky setTimeout for now.\n      setTimeout(() => {\n        const els = document.getElementsByClassName('trix-active');\n        for (let i = 0; i < els.length; i += 1) {\n          els[i].classList.remove('trix-active');\n        }\n      }, 1);\n    }\n\n    if (e.actionName === 'x-position-in-word') {\n      element.editor.insertString('{{position_in_word}} ');\n      addPositionInWordGoalFormElement();\n\n      // I can't find an event that fires after trix-active is added, so we'll have\n      // to settle for a hacky setTimeout for now.\n      setTimeout(() => {\n        const els = document.getElementsByClassName('trix-active');\n        for (let i = 0; i < els.length; i += 1) {\n          els[i].classList.remove('trix-active');\n        }\n      }, 1);\n    }\n\n    if (e.actionName === 'x-possessive-pronoun') {\n      element.editor.insertString('{{possessive_pronoun}} ');\n      addPossessivePronounGoalFormElement();\n\n      // I can't find an event that fires after trix-active is added, so we'll have\n      // to settle for a hacky setTimeout for now.\n      setTimeout(() => {\n        const els = document.getElementsByClassName('trix-active');\n        for (let i = 0; i < els.length; i += 1) {\n          els[i].classList.remove('trix-active');\n        }\n      }, 1);\n    }\n\n    if (e.actionName === 'x-object-pronoun') {\n      element.editor.insertString('{{object_pronoun}} ');\n      addObjectPronounGoalFormElement();\n\n      // I can't find an event that fires after trix-active is added, so we'll have\n      // to settle for a hacky setTimeout for now.\n      setTimeout(() => {\n        const els = document.getElementsByClassName('trix-active');\n        for (let i = 0; i < els.length; i += 1) {\n          els[i].classList.remove('trix-active');\n        }\n      }, 1);\n    }\n  });\n\n  document.addEventListener('trix-change', () => {\n    setUpCustomTagListeners();\n\n    const trixDocument = element.editor.getDocument();\n    const trixString = trixDocument.toString();\n    const patientNameCount = (trixString.match(/{{patient_name}}/g) || []).length;\n    const percentageCount = (trixString.match(/{{percentage}}/g) || []).length;\n    const integerCount = (trixString.match(/{{integer}}/g) || []).length;\n    const stringCount = (trixString.match(/{{string}}/g) || []).length;\n    const possessivePronounCount = (trixString.match(/{{possessive_pronoun}}/g) || []).length;\n    const objectPronounCount = (trixString.match(/{{object_pronoun}}/g) || []).length;\n    const phonemeCategoryCount = (trixString.match(/{{phoneme_category}}/g) || []).length;\n    const phonemeGroupCount = (trixString.match(/{{phoneme_group}}/g) || []).length;\n    const blendCount = (trixString.match(/{{blend}}/g) || []).length;\n    const blendGroupCount = (trixString.match(/{{blend_group}}/g) || []).length;\n    const phonemeCount = (trixString.match(/{{phoneme}}/g) || []).length;\n    const targetLevelCount = (trixString.match(/{{target_level}}/g) || []).length;\n    const positionInWordCount = (trixString.match(/{{position_in_word}}/g) || []).length;\n\n    const array1 = previousString.match(/{{[^{]*}}/g);\n    let patientNameIndices1;\n    let percentageIndices1;\n    let integerIndices1;\n    let stringIndices1;\n    let possessivePronounIndices1;\n    let objectPronounIndices1;\n    let phonemeCategoryIndices1;\n    let phonemeGroupIndices1;\n    let blendIndices1;\n    let blendGroupIndices1;\n    let phonemeIndices1;\n    let targetLevelIndices1;\n    let positionInWordIndices1;\n    if (array1) {\n      patientNameIndices1 = getAllIndexes(array1, '{{patient_name}}');\n      percentageIndices1 = getAllIndexes(array1, '{{percentage}}');\n      integerIndices1 = getAllIndexes(array1, '{{integer}}');\n      stringIndices1 = getAllIndexes(array1, '{{string}}');\n      possessivePronounIndices1 = getAllIndexes(array1, '{{possessive_pronoun}}');\n      objectPronounIndices1 = getAllIndexes(array1, '{{object_pronoun}}');\n      phonemeCategoryIndices1 = getAllIndexes(array1, '{{phoneme_category}}');\n      phonemeGroupIndices1 = getAllIndexes(array1, '{{phoneme_group}}');\n      blendIndices1 = getAllIndexes(array1, '{{blend}}');\n      blendGroupIndices1 = getAllIndexes(array1, '{{blend_group}}');\n      phonemeIndices1 = getAllIndexes(array1, '{{phoneme}}');\n      targetLevelIndices1 = getAllIndexes(array1, '{{target_level}}');\n      positionInWordIndices1 = getAllIndexes(array1, '{{position_in_word}}');\n    }\n\n    const array2 = trixString.match(/{{[^{]*}}/g);\n    let patientNameIndices2;\n    let percentageIndices2;\n    let integerIndices2;\n    let stringIndices2;\n    let possessivePronounIndices2;\n    let objectPronounIndices2;\n    let phonemeCategoryIndices2;\n    let phonemeGroupIndices2;\n    let blendIndices2;\n    let blendGroupIndices2;\n    let phonemeIndices2;\n    let targetLevelIndices2;\n    let positionInWordIndices2;\n    if (array2) {\n      patientNameIndices2 = getAllIndexes(array2, '{{patient_name}}');\n      percentageIndices2 = getAllIndexes(array2, '{{percentage}}');\n      integerIndices2 = getAllIndexes(array2, '{{integer}}');\n      stringIndices2 = getAllIndexes(array2, '{{string}}');\n      possessivePronounIndices2 = getAllIndexes(array2, '{{possessive_pronoun}}');\n      objectPronounIndices2 = getAllIndexes(array2, '{{object_pronoun}}');\n      phonemeCategoryIndices2 = getAllIndexes(array2, '{{phoneme_category}}');\n      phonemeGroupIndices2 = getAllIndexes(array2, '{{phoneme_group}}');\n      blendIndices2 = getAllIndexes(array2, '{{blend}}');\n      blendGroupIndices2 = getAllIndexes(array2, '{{blend_group}}');\n      phonemeIndices2 = getAllIndexes(array2, '{{phoneme}}');\n      targetLevelIndices2 = getAllIndexes(array2, '{{target_level}}');\n      positionInWordIndices2 = getAllIndexes(array2, '{{position_in_word}}');\n    }\n\n    const elements = document.getElementsByName('goal[default_values][default][][name]');\n    let patientNameCounter = 0;\n    let percentageCounter = 0;\n    let integerCounter = 0;\n    let stringCounter = 0;\n    let possessivePronounCounter = 0;\n    let objectPronounCounter = 0;\n    let phonemeCategoryCounter = 0;\n    let phonemeGroupCounter = 0;\n    let blendCounter = 0;\n    let blendGroupCounter = 0;\n    let phonemeCounter = 0;\n    let targetLevelCounter = 0;\n    let positionInWordCounter = 0;\n    setTimeout(() => {\n      for (let i = 0; i < elements.length; i += 1) {\n        if (elements[i].value === 'patient_name') {\n          patientNameCounter += 1;\n        }\n        if (elements[i].value === 'percentage') {\n          percentageCounter += 1;\n        }\n        if (elements[i].value === 'integer') {\n          integerCounter += 1;\n        }\n        if (elements[i].value === 'string') {\n          stringCounter += 1;\n        }\n        if (elements[i].value === 'possessive_pronoun') {\n          possessivePronounCounter += 1;\n        }\n        if (elements[i].value === 'object_pronoun') {\n          objectPronounCounter += 1;\n        }\n        if (elements[i].value === 'phoneme_category') {\n          phonemeCategoryCounter += 1;\n        }\n        if (elements[i].value === 'phoneme_group') {\n          phonemeGroupCounter += 1;\n        }\n        if (elements[i].value === 'blend') {\n          blendCounter += 1;\n        }\n        if (elements[i].value === 'blend_group') {\n          blendGroupCounter += 1;\n        }\n        if (elements[i].value === 'phoneme') {\n          phonemeCounter += 1;\n        }\n        if (elements[i].value === 'target_level') {\n          targetLevelCounter += 1;\n        }\n        if (elements[i].value === 'position_in_word') {\n          positionInWordCounter += 1;\n        }\n      }\n      if (\n        patientNameCounter > patientNameCount ||\n        percentageCounter > percentageCount ||\n        integerCounter > integerCount ||\n        stringCounter > stringCount ||\n        possessivePronounCounter > possessivePronounCount ||\n        objectPronounCounter > objectPronounCount ||\n        phonemeCategoryCounter > phonemeCategoryCount ||\n        phonemeGroupCounter > phonemeGroupCount ||\n        blendCounter > blendCount ||\n        blendGroupCounter > blendGroupCount ||\n        phonemeCounter > phonemeCount ||\n        targetLevelCounter > targetLevelCount ||\n        positionInWordCounter > positionInWordCount\n      ) {\n        rebuildDynamicElements();\n      }\n      resetGoalFormPositions();\n    }, 1);\n\n    previousString = trixString;\n  });\n}\n","/* eslint-disable consistent-return */\nimport initializeDatepickers from '../../lib/datepickers';\nimport { onDropdownClose } from '../selectize_helpers';\nimport computeDisciplines from '../credentials-disciplines';\nimport DiagnosisCodes from './diagnosisCodes';\n\nclass AddFields {\n  // This executes when the function is instantiated.\n  constructor(diagnosisCodeManager) {\n    this.diagnosisCodesManager = diagnosisCodeManager;\n    this.links = document.querySelectorAll('.add_fields');\n    this.parsedHTML = '';\n    this.iterateLinks();\n  }\n\n  iterateLinks() {\n    // If there are no links on the page, stop the function from executing.\n    if (this.links.length === 0) return;\n    // Loop over each link on the page. A page could have multiple nested forms.\n    this.links.forEach((link) => {\n      const target = link.getAttribute('data-target');\n      const relatedField = document.querySelector(`[data-fields=\"${target}\"]`);\n      if (relatedField) {\n        relatedField.setAttribute('data-nested', 'true');\n        relatedField.id = `${target}_nested_field_container`;\n      }\n      // We want to set the EventListener for new elements added\n      // to the DOM but not for elements already in the DOM\n      if (link.dataset.addLinksListener !== 'set') {\n        link.addEventListener('click', (e) => {\n          this.handleClick(link, e);\n        });\n      }\n\n      link.dataset.addLinksListener = 'set';\n    });\n  }\n\n  appendFieldsWithoutUniqueId(link, target, newFieldsHtml) {\n    // Add the new markup to the form if there are fields to add.\n    if (link.closest('.nested-fields')) {\n      // For cases where there is a nested form inside a nested form and there\n      // are multiple items in the first nested form\n      if (link.closest('.nested-fields').querySelector(`[data-fields='${target}']`)) {\n        link.closest('.nested-fields').querySelector(`[data-fields='${target}']`).append(newFieldsHtml);\n      } else {\n        document.querySelector(`[data-fields='${target}']`).append(newFieldsHtml);\n      }\n    } else if (document.querySelector(`[data-fields='${target}']`)) {\n      document.querySelector(`[data-fields='${target}']`).append(newFieldsHtml);\n    } else {\n      $(link).parent().find('.nested-wrapper').append(newFieldsHtml);\n    }\n  }\n\n  handleClick(link, e) {\n    // Run AddFields again for any new elements added to the DOM\n    setTimeout(() => {\n      // eslint-disable-next-line no-new\n      new AddFields(this.diagnosisCodesManager);\n    }, 100);\n\n    initializeDatepickers();\n\n    // Stop the function from executing if a link or event were not passed into the function.\n    if (!link || !e) return;\n    // Prevent the browser from following the URL.\n    e.preventDefault();\n    // Save a unique timestamp to ensure the key of the associated array is unique.\n    const time = new Date().getTime();\n    // Save the data id attribute into a variable. This corresponds to `new_object.object_id`.\n    const linkId = link.dataset.id;\n    // Create a new regular expression needed to find any instance of the `new_object.object_id` used in the fields data attribute if there's a value in `linkId`.\n    const regexp = linkId ? new RegExp(linkId, 'g') : null;\n    // Replace all instances of the `new_object.object_id` with `time`, and save markup into a variable if there's a value in `regexp`.\n    const newFields = regexp ? link.dataset.fields.replace(regexp, time) : null;\n\n    if (newFields) {\n      const preservePlaceholder = (placeholderSelectize) => {\n        const placeholder = placeholderSelectize.$input[0].getAttribute('placeholder');\n        if (placeholder) {\n          placeholderSelectize.$control_input[0].placeholder = placeholder;\n        }\n      };\n\n      const newFieldsHtml = this.parseHTMLResponse(newFields);\n      const selectize = newFieldsHtml.querySelectorAll('.select.filterable');\n      const selectizeTreatability = newFieldsHtml.querySelectorAll('.select.treatability');\n      const selectizeText = newFieldsHtml.querySelectorAll('.select.filterable-text');\n      const selectizeDiagnosisCode = newFieldsHtml.querySelectorAll('.select.diagnosis-code-select');\n      const selectizeNPI = newFieldsHtml.querySelectorAll('.select.npi-select');\n      const selectizeGoal = newFieldsHtml.querySelectorAll('.select.goal-select');\n      const selectizeWord = newFieldsHtml.querySelectorAll('.select.word-select');\n      const selectizeWordGroup = newFieldsHtml.querySelectorAll('.select.word-group-select');\n      const selectizeActivityList = newFieldsHtml.querySelectorAll('.select.activity-list-select');\n      const selectizeActivityItem = newFieldsHtml.querySelectorAll('.select.activity-item-select');\n      const selectizeResource = newFieldsHtml.querySelectorAll('.select.resource-select');\n      const selectizeCredentials = newFieldsHtml.querySelectorAll('.select.credential-select');\n      const selectizeMinimalPairs = newFieldsHtml.querySelectorAll('.select.minimal-pair-select');\n      const selectizeSchool = newFieldsHtml.querySelectorAll('.select.school-select');\n      const selectizeDistrict = newFieldsHtml.querySelectorAll('.select.district-select');\n      const selectizeReferenceLink = newFieldsHtml.querySelectorAll('.select.reference-link-select');\n      const patientForm = document.getElementById('patient_form');\n      const billingSequence = newFieldsHtml.querySelectorAll('.form-control.billing-sequence');\n      const increaseBillingSequence = link.id === 'add-dynamic-payment-method-link';\n      if (increaseBillingSequence && billingSequence) {\n        // Only run this on the \"Add payment method\" link click, not any others\n        const lastSequence = parseInt($('.billing-sequence:visible').last().val(), 10) || 0;\n        const newSequence = lastSequence + 1;\n        setTimeout(() => {\n          $('.billing-sequence:visible').last().val(newSequence);\n        }, 100);\n      }\n\n      // Check if we will insert somewhere else\n      const target = link.getAttribute('data-target');\n\n      // Toggle button for has-one-relationship\n      if (link.classList.contains('has-one-relationship')) {\n        link.classList.toggle('d-none');\n      }\n      // Add the new markup to the form if there are fields to add.\n      const { uniqueIdentifier } = link.dataset;\n\n      if (uniqueIdentifier) {\n        const targetContainer = document.querySelector(`[data-container-for='${uniqueIdentifier}']`);\n        if (targetContainer) {\n          targetContainer.append(newFieldsHtml);\n        } else {\n          this.appendFieldsWithoutUniqueId(link, target, newFieldsHtml);\n        }\n      } else {\n        this.appendFieldsWithoutUniqueId(link, target, newFieldsHtml);\n      }\n\n      const dataElement = document.querySelector(`[data-fields='${target}']`);\n\n      // STOP DELETE OPTION 2: START\n      // We want to visually hide our delete item text if it's the first link\n      // and our links contain the no_last_delete class.\n      // In the removeFields.js file we disable the first links functionality.\n      if (dataElement) {\n        const removeLinks = dataElement.querySelectorAll('.remove_fields.no_last_delete');\n\n        if (removeLinks.length > 0) {\n          removeLinks[0].textContent = '';\n        }\n      }\n      // STOP DELETE OPTION 2: START\n\n      if (patientForm) {\n        const patientFormValidationAlert = document.getElementById('patient_form_validation_error');\n\n        Array.from(patientForm.elements).forEach((element) => {\n          element.addEventListener(\n            'invalid',\n            (event) => {\n              let tabToDisplay = event.target.closest('div.tab-pane').dataset.name;\n              if (tabToDisplay === undefined) {\n                tabToDisplay = event.target.closest('div.modal').dataset.name;\n              }\n              patientFormValidationAlert.innerHTML = `There is a validation error with one of the fields on the \"${tabToDisplay}\" tab.`;\n              patientFormValidationAlert.classList.remove('hide');\n              document.body.scrollTop = 0;\n              document.documentElement.scrollTop = 0;\n            },\n            true\n          );\n        });\n      }\n      // Selectize\n      if (selectize) {\n        $(selectize).selectize({\n          create: false,\n          onDropdownClose,\n        });\n      }\n\n      if (selectizeText) {\n        $(selectizeText).selectize({\n          create: false,\n          sortField: 'text',\n          onDropdownClose,\n        });\n      }\n\n      if (selectizeTreatability) {\n        $(selectizeTreatability).selectize({\n          create: false,\n          sortField: 'id',\n          onDropdownClose,\n          render: {\n            option(data, escape) {\n              return `<div style=\"padding: 7px;\">${escape(data.text)}<br><small style=\"color:gray;\">${escape(\n                data.description\n              )}</small></div>`; // https://stackoverflow.com/a/36514076\n            },\n          },\n        });\n      }\n\n      if (selectizeDiagnosisCode) {\n        this.diagnosisCodesManager.addNewDiagnosisSelectComponent(selectizeDiagnosisCode);\n      }\n\n      if (selectizeNPI) {\n        $(selectizeNPI).selectize({\n          valueField: 'id',\n          labelField: 'name',\n          searchField: 'name',\n          maxItems: 1,\n          placeholder: 'Start typing to search for a provider...',\n          options: [],\n          preload: true,\n          create: false,\n          onDropdownClose,\n          load(query, callback) {\n            if (!query) return callback();\n            $.ajax({\n              url: '/api/v2/npi-search',\n              type: 'GET',\n              dataType: 'json',\n              data: {\n                q: query,\n              },\n              error() {\n                callback();\n              },\n              success: (res) => {\n                callback(res);\n              },\n            });\n          },\n          onChange(value) {\n            const select = this.$input[0];\n            $.ajax({\n              url: '/api/v2/npi-search',\n              type: 'GET',\n              dataType: 'json',\n              data: {\n                q: value,\n              },\n              error(err) {\n                console.log(err);\n              },\n              success: (res) => {\n                if (!res || !res[0]) return;\n                const result = res[0];\n\n                const delineationElement = select.closest('div').querySelector('.addressAttributeDelineation');\n                let addressAttributeDelineation;\n\n                if (delineationElement) {\n                  addressAttributeDelineation = delineationElement.dataset.delineation;\n                }\n\n                if (result.first_name)\n                  select.closest('div').querySelector('.provider_first_name').value = result.first_name;\n                if (result.last_name)\n                  select.closest('div').querySelector('.provider_last_name').value = result.last_name;\n                if (result.middle_name)\n                  select.closest('div').querySelector('.provider_middle_name').value = result.middle_name;\n                if (result.organization_name)\n                  select.closest('div').querySelector('.provider_organization_name').value = result.organization_name;\n                if (result.suffix) select.closest('div').querySelector('.provider_suffix').value = result.suffix;\n                if (result.active) select.closest('div').querySelector('.provider_active').value = result.active;\n                if (result.primary_taxonomy_name)\n                  select.closest('div').querySelector('.provider_primary_taxonomy_name').value =\n                    result.primary_taxonomy_name;\n                if (result.primary_taxonomy_number)\n                  select.closest('div').querySelector('.provider_primary_taxonomy_number').value =\n                    result.primary_taxonomy_number;\n\n                // do not set address attributes if there is no address attributes delineator\n                if (!addressAttributeDelineation) {\n                  return;\n                }\n\n                const states = {\n                  AL: '792cb3da-b81d-4b84-9fe2-5eb2e8ba2fe1',\n                  AK: '9761b2a2-64e3-44b7-ade7-8048a005b464',\n                  AZ: '5a2065a2-ff3c-44a9-9700-27478430ca5a',\n                  AR: '79a51f67-061b-4ab8-bf0e-89803c848190',\n                  CA: 'f8304174-c9d1-426d-9fe8-ed8b8ccc111b',\n                  CO: 'f8a476d8-f08c-4edf-a899-17ed68012611',\n                  CT: '7bacf4b6-0333-4079-81b3-4a132e533cac',\n                  DE: '3020b27e-e1ee-4e00-8ddc-632c15e174b0',\n                  FL: '31aab059-4059-468e-8093-3d43ddf784f6',\n                  GA: '35c4d00d-12c4-454d-b07c-0ae6fa3cf07e',\n                  HI: '20b70c99-1e4d-4c31-b080-2eee352b25d4',\n                  ID: '7dc74aa6-7dba-41e4-81e4-00e70dc276f2',\n                  IL: 'e9520da2-4db6-4394-9267-42d36ac9d414',\n                  IN: '5fffbfda-9a70-41ce-adef-6744af74bd33',\n                  IA: '9ca6d9ee-f97c-4ae4-87c7-8c48406338ab',\n                  KS: '86439c19-917e-43fa-820c-ca275e10ab91',\n                  KY: 'b3724b8d-2661-4d7b-9cba-efb79b13a3c5',\n                  LA: '4d1e896f-ffbd-4e58-ae27-04e9a61b98e9',\n                  ME: '22a7dc8e-b87d-4992-b6c7-4cd4f3fe351f',\n                  MD: 'da24b130-4488-4c33-a6e4-c7f1eecec046',\n                  MA: 'edd0adb7-cbce-486d-bff7-b9022b784ca0',\n                  MI: 'aeda968a-ddbb-402a-9553-6f7625b78d60',\n                  MN: 'df15f16d-0c20-45ae-b9ba-61caa5793599',\n                  MS: 'dd164fcb-7e1f-4f60-ad09-a82cff9c8c83',\n                  MO: '74926e67-b6e0-4bf6-936f-fbfb901a3628',\n                  MT: 'cb15ecc7-e6bc-4cec-abce-ed9c67f20132',\n                  NE: 'fada5e0c-d1fc-4903-b692-656e1ff67e90',\n                  NV: 'b2084b65-cf73-4dd6-aff0-9c3e04af758c',\n                  NH: '8ea0d008-37b7-4f0a-ac0e-f9fd9dbc4e9b',\n                  NJ: 'f59d589f-1a76-43c6-b5cb-33e1b633c666',\n                  NM: 'fd639e11-14f2-4596-b771-ade4fe42641f',\n                  NY: 'cc87d550-2fff-4eb4-ada0-1ee7928f7ce9',\n                  NC: 'bb8e1276-f348-48bb-af1d-19e670289706',\n                  ND: '75e3b344-c84a-4087-ae05-15556b5188ba',\n                  OH: 'c97f229b-5ea2-4e72-94a0-b747863ed408',\n                  OK: '336758ff-ad13-41a4-80c2-7b812e6e34af',\n                  OR: 'f42355d8-1282-4241-b063-5d77ebe2d682',\n                  PA: '9e4547c7-be31-4ebe-8471-75647fa2e1cd',\n                  RI: '07cedcb1-71a3-4653-9f88-03e5f4e34632',\n                  SC: 'ada5b0f2-4e86-4b28-8a03-b4d954fe40f2',\n                  SD: '62e2edb0-5b96-41b8-a75f-5294c9fde059',\n                  TN: '3e9e112c-3954-4001-b180-aac3a71a334c',\n                  TX: '45c2200c-3d40-4d59-886d-69f95863bb93',\n                  UT: '693d1508-dea8-4227-b168-0f343390bb5a',\n                  VT: 'e4aba46b-6bf3-498f-b9fc-4d0156b3630a',\n                  VA: 'cd92b344-01ce-44ed-b27d-dc9b2dc53387',\n                  WA: '8417da33-6057-4607-8770-d3dc46acfd62',\n                  WV: 'a188df66-9d72-492e-a5d3-61af7c3b7b03',\n                  WI: '1a9a1b72-229f-433d-8ae1-c0aae33845b2',\n                  WY: '24792adb-2104-470e-b007-89941e449edc',\n                  DC: '2d568ff0-0456-48c8-9ff4-c04fb8836185',\n                  PR: '80ceb63b-928d-4112-9e12-67f9388c17f4',\n                  AS: 'f4a3b53d-dd70-41d3-96f8-5fb4f269c492',\n                  GU: '17297d90-6e71-437b-ad5c-7cdeb6fa0d59',\n                  VI: 'c09bb695-c2f2-4db7-b4b1-273eba209e5b',\n                  FM: '5da2e734-c0b8-4858-b6dc-3a5b6508c8a1',\n                  MH: '600bd931-29e6-4274-b356-c230390a49a3',\n                  MP: 'c6e554e0-4697-4e0e-8151-3c428456605c',\n                  PW: '828066ee-7ae4-4176-9087-2e752434998f',\n                };\n\n                const addressTypes = {\n                  'LOCATION AND MAILING': 'f6749b20-b2e5-4992-bf11-6e5585b5df70',\n                  LOCATION: '319705a9-f58e-4da2-9dd7-dacdfb7a1e42',\n                  MAILING: 'ea876400-61b4-4bb9-a37e-b6a2171d88ab',\n                };\n\n                const phoneNumberTypes = {\n                  telephone_number: '80e9a6e6-14b5-4bff-9b48-bad20308eef6',\n                  fax_number: '31053637-ac84-4f96-8844-3bc829f3a251',\n                };\n\n                const fields = [\n                  'address_1',\n                  'address_2',\n                  'address_purpose',\n                  'address_type',\n                  'city',\n                  'country_code',\n                  'country_name',\n                  'fax_number',\n                  'postal_code',\n                  'state',\n                  'telephone_number',\n                ];\n\n                const mapFields = {\n                  address_1: 'address',\n                  address_2: 'address_2',\n                  // purpose is what we call addresstype\n                  address_purpose: 'address_type_id',\n                  address_type: '',\n                  city: 'city',\n                  country_code: 'country_code',\n                  country_name: 'country_name',\n                  fax_number: 'fax_number',\n                  postal_code: 'zip_code',\n                  state: 'state_id',\n                  telephone_number: 'telephone_number',\n                };\n\n                if (result.first_name)\n                  select.closest('div').querySelector('.provider_first_name').value = result.first_name;\n                if (result.last_name)\n                  select.closest('div').querySelector('.provider_last_name').value = result.last_name;\n                if (result.middle_name)\n                  select.closest('div').querySelector('.provider_middle_name').value = result.middle_name;\n                if (result.organization_name)\n                  select.closest('div').querySelector('.provider_organization_name').value = result.organization_name;\n                if (result.suffix) select.closest('div').querySelector('.provider_suffix').value = result.suffix;\n                if (result.active) select.closest('div').querySelector('.provider_active').value = result.active;\n                if (result.primary_taxonomy_name)\n                  select.closest('div').querySelector('.provider_primary_taxonomy_name').value =\n                    result.primary_taxonomy_name;\n                if (result.primary_taxonomy_number)\n                  select.closest('div').querySelector('.provider_primary_taxonomy_number').value =\n                    result.primary_taxonomy_number;\n\n                for (let index = 0; index < result.addresses.length; index++) {\n                  const address = result.addresses[index];\n\n                  // set phone numbers(telephone and fax)\n                  const workPhoneElement = document.getElementById(\n                    `${addressAttributeDelineation}_${index}_phone_numbers_attributes_0_number`\n                  );\n                  const workPhoneTypeElement = document.getElementById(\n                    `${addressAttributeDelineation}_${index}_phone_numbers_attributes_0_phone_number_type_id`\n                  );\n                  const workFaxElement = document.getElementById(\n                    `${addressAttributeDelineation}_${index}_phone_numbers_attributes_1_number`\n                  );\n                  const workFaxTypeElement = document.getElementById(\n                    `${addressAttributeDelineation}_${index}_phone_numbers_attributes_1_phone_number_type_id`\n                  );\n\n                  if (workPhoneElement && workPhoneTypeElement && address.telephone_number) {\n                    workPhoneElement.value = address.telephone_number;\n                    workPhoneTypeElement.value = phoneNumberTypes.telephone_number;\n                  }\n\n                  if (workFaxElement && workFaxTypeElement && address.fax_number) {\n                    workFaxElement.value = address.fax_number;\n                    workFaxTypeElement.value = phoneNumberTypes.fax_number;\n                  }\n\n                  // set other address fields\n                  for (let idx = 0; idx < fields.length; idx++) {\n                    const field = fields[idx];\n                    const mappedField = mapFields[field];\n                    let fieldValue = address[field];\n                    const id = `${addressAttributeDelineation}_${index}_${mappedField}`;\n                    const fieldElement = document.getElementById(id);\n                    if (field === 'address_purpose') {\n                      fieldValue = addressTypes[fieldValue];\n                    } else if (field === 'state') {\n                      fieldValue = states[fieldValue];\n                    } else if (field === 'postal_code') {\n                      fieldValue =\n                        fieldValue && fieldValue.length > 5\n                          ? `${fieldValue.slice(0, 5)}-${fieldValue.slice(5)}`\n                          : fieldValue;\n                    }\n\n                    if (fieldValue && fieldElement) fieldElement.value = fieldValue;\n                  }\n                }\n              },\n            });\n          },\n          onInitialize() {\n            preservePlaceholder(this);\n          },\n        });\n      }\n\n      if (selectizeDistrict) {\n        $(selectizeDistrict).selectize({\n          valueField: 'id',\n          labelField: 'name',\n          searchField: 'name',\n          maxItems: 1,\n          placeholder: 'Start typing to search for a district...',\n          options: [],\n          preload: true,\n          create: false,\n          onDropdownClose,\n          load(query, callback) {\n            if (!query) return callback();\n            $.ajax({\n              url: '/api/v2/districts',\n              type: 'GET',\n              dataType: 'json',\n              data: {\n                q: query,\n              },\n              error() {\n                callback();\n              },\n              success(res) {\n                callback(res);\n              },\n            });\n          },\n          onChange(value) {\n            const select = this.$input[0];\n            const option = select.options[0];\n            option.value = value;\n            select.value = value;\n          },\n          onInitialize() {\n            preservePlaceholder(this);\n            const select = this.$input[0].dataset;\n            $.ajax({\n              url: '/api/v2/districts',\n              type: 'GET',\n              dataType: 'json',\n              data: {\n                q: select.name,\n              },\n              error(err) {\n                console.log(err);\n              },\n              success: (res) => {\n                this.addOption(res);\n                const selectedItems = [];\n                selectedItems.push(select.id);\n                this.addItem(selectedItems);\n              },\n            });\n          },\n        });\n      }\n\n      if (selectizeSchool) {\n        $(selectizeSchool).selectize({\n          valueField: 'id',\n          labelField: 'name',\n          searchField: 'name',\n          maxItems: 1,\n          placeholder: 'Start typing to search for a school...',\n          options: [],\n          preload: true,\n          create: false,\n          onDropdownClose,\n          load(query, callback) {\n            if (!query) return callback();\n            $.ajax({\n              url: '/api/v2/schools',\n              type: 'GET',\n              dataType: 'json',\n              data: {\n                q: query,\n              },\n              error() {\n                callback();\n              },\n              success(res) {\n                callback(res);\n              },\n            });\n          },\n          onChange(value) {\n            const select = this.$input[0];\n            const option = select.options[0];\n            option.value = value;\n            select.value = value;\n          },\n          onInitialize() {\n            preservePlaceholder(this);\n            const select = this.$input[0].dataset;\n            $.ajax({\n              url: '/api/v2/schools',\n              type: 'GET',\n              dataType: 'json',\n              data: {\n                q: select.name,\n              },\n              error(err) {\n                console.log(err);\n              },\n              success: (res) => {\n                this.addOption(res);\n                const selectedItems = [];\n                selectedItems.push(select.id);\n                this.addItem(selectedItems);\n              },\n            });\n          },\n        });\n      }\n\n      if (selectizeReferenceLink) {\n        $(selectizeReferenceLink).selectize({\n          valueField: 'id',\n          labelField: 'title',\n          searchField: 'title',\n          dataAttr: 'description',\n          placeholder: 'Start typing to search for a reference link...',\n          options: [],\n          create: false,\n          onDropdownClose,\n          render: {\n            item(item, escape) {\n              if (item.author !== null && item.author !== undefined) {\n                return `<div class=\"p-1\">${item.title} <small>(${item.author})</small></div>`;\n              }\n              return `<div class=\"p-1\">${item.title}</div>`;\n            },\n            option(item, escape) {\n              if (item.author !== null && item.author !== undefined) {\n                return `<div class=\"p-1\">${item.title} <small>(${item.author})</small></div>`;\n              }\n              return `<div class=\"p-1\">${item.title}</div>`;\n            },\n          },\n          load(query, callback) {\n            if (!query.length) return callback();\n            $.ajax({\n              url: '/api/v2/reference-links',\n              type: 'GET',\n              dataType: 'json',\n              data: {\n                q: query,\n              },\n              error() {\n                callback();\n              },\n              success(res) {\n                callback(res);\n              },\n            });\n          },\n          onChange(value) {\n            const select = this.$input[0];\n            const option = select.options[0];\n            option.value = value;\n            select.value = value;\n            const data = this.options[value];\n            if (data && data.description)\n              select.closest('div').parentNode.querySelector('.description-field').value = data.description;\n          },\n          onInitialize() {\n            preservePlaceholder(this);\n            const select = this.$input[0].dataset;\n            $.ajax({\n              url: '/api/v2/reference-links',\n              type: 'GET',\n              dataType: 'json',\n              data: {\n                q: select.name,\n              },\n              error(err) {\n                console.log(err);\n              },\n              success: (res) => {\n                this.addOption(res);\n                const selectedItems = [];\n                selectedItems.push(select.id);\n                this.addItem(selectedItems);\n              },\n            });\n          },\n        });\n      }\n\n      if (selectizeGoal) {\n        $(selectizeGoal).selectize({\n          valueField: 'id',\n          labelField: 'goal',\n          searchField: 'goal',\n          placeholder: 'Start typing to search for a goal...',\n          options: [],\n          create: false,\n          onDropdownClose,\n          load(query, callback) {\n            if (!query.length) return callback();\n            $.ajax({\n              url: '/api/v2/goals',\n              type: 'GET',\n              dataType: 'json',\n              data: {\n                q: query,\n              },\n              error() {\n                callback();\n              },\n              success(res) {\n                callback(res);\n              },\n            });\n          },\n        });\n      }\n\n      if (selectizeWord) {\n        $(selectizeWord).selectize({\n          valueField: 'id',\n          labelField: 'word',\n          searchField: 'word',\n          placeholder: 'Start typing to search for a word...',\n          options: [],\n          create: false,\n          onDropdownClose,\n          load(query, callback) {\n            if (!query.length) return callback();\n            $.ajax({\n              url: '/api/v2/words',\n              type: 'GET',\n              dataType: 'json',\n              data: {\n                q: query,\n              },\n              error() {\n                callback();\n              },\n              success(res) {\n                callback(res);\n              },\n            });\n          },\n        });\n      }\n\n      if (selectizeWordGroup) {\n        $(selectizeWordGroup).selectize({\n          valueField: 'id',\n          labelField: 'name',\n          searchField: 'name',\n          placeholder: 'Start typing to search for a word group...',\n          options: [],\n          create: false,\n          onDropdownClose,\n          load(query, callback) {\n            if (!query.length) return callback();\n            $.ajax({\n              url: '/api/v2/word-groups',\n              type: 'GET',\n              dataType: 'json',\n              data: {\n                q: query,\n              },\n              error() {\n                callback();\n              },\n              success(res) {\n                callback(res);\n              },\n            });\n          },\n        });\n      }\n\n      if (selectizeActivityItem) {\n        $(selectizeActivityItem).selectize({\n          valueField: 'id',\n          labelField: 'name',\n          searchField: 'name',\n          placeholder: 'Start typing to search for an item...',\n          options: [],\n          create: false,\n          onDropdownClose,\n          load(query, callback) {\n            if (!query.length) return callback();\n            $.ajax({\n              url: '/api/v2/activity-items',\n              type: 'GET',\n              dataType: 'json',\n              data: {\n                q: query,\n              },\n              error() {\n                callback();\n              },\n              success(res) {\n                callback(res);\n              },\n            });\n          },\n        });\n      }\n\n      if (selectizeActivityList) {\n        $(selectizeActivityList).selectize({\n          valueField: 'id',\n          labelField: 'name',\n          searchField: 'name',\n          placeholder: 'Start typing to search for an activity list...',\n          options: [],\n          create: false,\n          onDropdownClose,\n          load(query, callback) {\n            if (!query.length) return callback();\n            $.ajax({\n              url: '/api/v2/activity-lists',\n              type: 'GET',\n              dataType: 'json',\n              data: {\n                q: query,\n              },\n              error() {\n                callback();\n              },\n              success(res) {\n                callback(res);\n              },\n            });\n          },\n        });\n      }\n\n      if (selectizeResource) {\n        $(selectizeResource).selectize({\n          valueField: 'id',\n          labelField: 'name',\n          searchField: 'name',\n          placeholder: 'Start typing to search for a PDF resource...',\n          options: [],\n          create: false,\n          onDropdownClose,\n          load(query, callback) {\n            if (!query.length) return callback();\n            $.ajax({\n              url: '/api/v2/resources',\n              type: 'GET',\n              dataType: 'json',\n              data: {\n                q: query,\n              },\n              error() {\n                callback();\n              },\n              success(res) {\n                callback(res);\n              },\n            });\n          },\n        });\n      }\n\n      if (selectizeMinimalPairs) {\n        $(selectizeMinimalPairs).selectize({\n          valueField: 'id',\n          labelField: 'name',\n          searchField: 'name',\n          placeholder: 'Start typing to search for a minimal pair...',\n          options: [],\n          create: false,\n          onDropdownClose,\n          load(query, callback) {\n            if (!query.length) return callback();\n            $.ajax({\n              url: '/api/v2/minimal-pairs',\n              type: 'GET',\n              dataType: 'json',\n              data: {\n                q: query,\n              },\n              error() {\n                callback();\n              },\n              success(res) {\n                callback(res);\n              },\n            });\n          },\n        });\n      }\n\n      const credentialSelectHandler = () => {\n        const credentialFields = document.querySelectorAll('.select.credential-select');\n        const credentialFieldsValues = Array.from(credentialFields).map((field) => field.value);\n        computeDisciplines(credentialFieldsValues);\n      };\n\n      if (selectizeCredentials) {\n        $(selectizeCredentials)\n          .selectize({\n            create: false,\n            sortField: 'id',\n            onDropdownClose,\n          })\n          .on('change', credentialSelectHandler);\n      }\n\n      // Fire an event to tell other files. Useful when you need to re-run a query select all.\n      const fieldAdded = new Event('fieldAdded');\n      document.dispatchEvent(fieldAdded);\n\n      // Show save button\n      $('.nested-field-save').show();\n    }\n  }\n\n  getNewIndexFromTimeString() {\n    const now = new Date();\n    return now.getHours().toString() + now.getMinutes().toString() + now.getSeconds().toString();\n  }\n\n  // From: https://stackoverflow.com/a/42658543/445724\n  // using .innerHTML= is risky. Instead we need to convert the HTML received\n  // into elements, then append them.\n  // It's wrapped in a <template> tag to avoid invalid (e.g. a block starting with <tr>)\n  // being mutated inappropriately.\n  parseHTMLResponse(HTML) {\n    // If the addFields is done through template injection then there will be a number of\n    // {index} strings that need to be replaced. There represent the index of form fields names eg:\n    // evaluation[some_time][{index}][the_field]\n    const newFromFieldsIndex = this.getNewIndexFromTimeString();\n    HTML = HTML.replace(/{index}/g, newFromFieldsIndex);\n\n    const parser = new DOMParser();\n    const responseDocument = parser.parseFromString(`<template>${HTML}</template>`, 'text/html');\n    this.parsedHTML = responseDocument.head.firstElementChild.content;\n    return this.parsedHTML;\n  }\n}\n\n// Wait for turbolinks to load, otherwise `document.querySelectorAll()` won't work\nwindow.addEventListener('turbolinks:load', () => new AddFields(new DiagnosisCodes()));\n\nexport default AddFields;\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n  * Bootstrap v4.6.1 (https://getbootstrap.com/)\n  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n(function (global, factory) {\n  (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) : typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n})(this, function (exports, $, Popper) {\n  'use strict';\n\n  function _interopDefaultLegacy(e) {\n    return e && _typeof(e) === 'object' && 'default' in e ? e : {\n      'default': e\n    };\n  }\n\n  var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n\n  var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);\n\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    return Constructor;\n  }\n\n  function _extends() {\n    _extends = Object.assign || function (target) {\n      for (var i = 1; i < arguments.length; i++) {\n        var source = arguments[i];\n\n        for (var key in source) {\n          if (Object.prototype.hasOwnProperty.call(source, key)) {\n            target[key] = source[key];\n          }\n        }\n      }\n\n      return target;\n    };\n\n    return _extends.apply(this, arguments);\n  }\n\n  function _inheritsLoose(subClass, superClass) {\n    subClass.prototype = Object.create(superClass.prototype);\n    subClass.prototype.constructor = subClass;\n\n    _setPrototypeOf(subClass, superClass);\n  }\n\n  function _setPrototypeOf(o, p) {\n    _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n      o.__proto__ = p;\n      return o;\n    };\n\n    return _setPrototypeOf(o, p);\n  }\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.6.1): util.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n  /**\n   * Private TransitionEnd Helpers\n   */\n\n\n  var TRANSITION_END = 'transitionend';\n  var MAX_UID = 1000000;\n  var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n  function toType(obj) {\n    if (obj === null || typeof obj === 'undefined') {\n      return \"\" + obj;\n    }\n\n    return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n  }\n\n  function getSpecialTransitionEndEvent() {\n    return {\n      bindType: TRANSITION_END,\n      delegateType: TRANSITION_END,\n      handle: function handle(event) {\n        if ($__default[\"default\"](event.target).is(this)) {\n          return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n        }\n\n        return undefined;\n      }\n    };\n  }\n\n  function transitionEndEmulator(duration) {\n    var _this = this;\n\n    var called = false;\n    $__default[\"default\"](this).one(Util.TRANSITION_END, function () {\n      called = true;\n    });\n    setTimeout(function () {\n      if (!called) {\n        Util.triggerTransitionEnd(_this);\n      }\n    }, duration);\n    return this;\n  }\n\n  function setTransitionEndSupport() {\n    $__default[\"default\"].fn.emulateTransitionEnd = transitionEndEmulator;\n    $__default[\"default\"].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n  }\n  /**\n   * Public Util API\n   */\n\n\n  var Util = {\n    TRANSITION_END: 'bsTransitionEnd',\n    getUID: function getUID(prefix) {\n      do {\n        // eslint-disable-next-line no-bitwise\n        prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n      } while (document.getElementById(prefix));\n\n      return prefix;\n    },\n    getSelectorFromElement: function getSelectorFromElement(element) {\n      var selector = element.getAttribute('data-target');\n\n      if (!selector || selector === '#') {\n        var hrefAttr = element.getAttribute('href');\n        selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n      }\n\n      try {\n        return document.querySelector(selector) ? selector : null;\n      } catch (_) {\n        return null;\n      }\n    },\n    getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n      if (!element) {\n        return 0;\n      } // Get transition-duration of the element\n\n\n      var transitionDuration = $__default[\"default\"](element).css('transition-duration');\n      var transitionDelay = $__default[\"default\"](element).css('transition-delay');\n      var floatTransitionDuration = parseFloat(transitionDuration);\n      var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n      if (!floatTransitionDuration && !floatTransitionDelay) {\n        return 0;\n      } // If multiple durations are defined, take the first\n\n\n      transitionDuration = transitionDuration.split(',')[0];\n      transitionDelay = transitionDelay.split(',')[0];\n      return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n    },\n    reflow: function reflow(element) {\n      return element.offsetHeight;\n    },\n    triggerTransitionEnd: function triggerTransitionEnd(element) {\n      $__default[\"default\"](element).trigger(TRANSITION_END);\n    },\n    supportsTransitionEnd: function supportsTransitionEnd() {\n      return Boolean(TRANSITION_END);\n    },\n    isElement: function isElement(obj) {\n      return (obj[0] || obj).nodeType;\n    },\n    typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n      for (var property in configTypes) {\n        if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n          var expectedTypes = configTypes[property];\n          var value = config[property];\n          var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n          if (!new RegExp(expectedTypes).test(valueType)) {\n            throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n          }\n        }\n      }\n    },\n    findShadowRoot: function findShadowRoot(element) {\n      if (!document.documentElement.attachShadow) {\n        return null;\n      } // Can find the shadow root otherwise it'll return the document\n\n\n      if (typeof element.getRootNode === 'function') {\n        var root = element.getRootNode();\n        return root instanceof ShadowRoot ? root : null;\n      }\n\n      if (element instanceof ShadowRoot) {\n        return element;\n      } // when we don't find a shadow root\n\n\n      if (!element.parentNode) {\n        return null;\n      }\n\n      return Util.findShadowRoot(element.parentNode);\n    },\n    jQueryDetection: function jQueryDetection() {\n      if (typeof $__default[\"default\"] === 'undefined') {\n        throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n      }\n\n      var version = $__default[\"default\"].fn.jquery.split(' ')[0].split('.');\n      var minMajor = 1;\n      var ltMajor = 2;\n      var minMinor = 9;\n      var minPatch = 1;\n      var maxMajor = 4;\n\n      if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n        throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n      }\n    }\n  };\n  Util.jQueryDetection();\n  setTransitionEndSupport();\n  /**\n   * Constants\n   */\n\n  var NAME$a = 'alert';\n  var VERSION$a = '4.6.1';\n  var DATA_KEY$a = 'bs.alert';\n  var EVENT_KEY$a = \".\" + DATA_KEY$a;\n  var DATA_API_KEY$7 = '.data-api';\n  var JQUERY_NO_CONFLICT$a = $__default[\"default\"].fn[NAME$a];\n  var CLASS_NAME_ALERT = 'alert';\n  var CLASS_NAME_FADE$5 = 'fade';\n  var CLASS_NAME_SHOW$7 = 'show';\n  var EVENT_CLOSE = \"close\" + EVENT_KEY$a;\n  var EVENT_CLOSED = \"closed\" + EVENT_KEY$a;\n  var EVENT_CLICK_DATA_API$6 = \"click\" + EVENT_KEY$a + DATA_API_KEY$7;\n  var SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n  /**\n   * Class definition\n   */\n\n  var Alert = /*#__PURE__*/function () {\n    function Alert(element) {\n      this._element = element;\n    } // Getters\n\n\n    var _proto = Alert.prototype; // Public\n\n    _proto.close = function close(element) {\n      var rootElement = this._element;\n\n      if (element) {\n        rootElement = this._getRootElement(element);\n      }\n\n      var customEvent = this._triggerCloseEvent(rootElement);\n\n      if (customEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._removeElement(rootElement);\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$a);\n      this._element = null;\n    } // Private\n    ;\n\n    _proto._getRootElement = function _getRootElement(element) {\n      var selector = Util.getSelectorFromElement(element);\n      var parent = false;\n\n      if (selector) {\n        parent = document.querySelector(selector);\n      }\n\n      if (!parent) {\n        parent = $__default[\"default\"](element).closest(\".\" + CLASS_NAME_ALERT)[0];\n      }\n\n      return parent;\n    };\n\n    _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n      var closeEvent = $__default[\"default\"].Event(EVENT_CLOSE);\n      $__default[\"default\"](element).trigger(closeEvent);\n      return closeEvent;\n    };\n\n    _proto._removeElement = function _removeElement(element) {\n      var _this = this;\n\n      $__default[\"default\"](element).removeClass(CLASS_NAME_SHOW$7);\n\n      if (!$__default[\"default\"](element).hasClass(CLASS_NAME_FADE$5)) {\n        this._destroyElement(element);\n\n        return;\n      }\n\n      var transitionDuration = Util.getTransitionDurationFromElement(element);\n      $__default[\"default\"](element).one(Util.TRANSITION_END, function (event) {\n        return _this._destroyElement(element, event);\n      }).emulateTransitionEnd(transitionDuration);\n    };\n\n    _proto._destroyElement = function _destroyElement(element) {\n      $__default[\"default\"](element).detach().trigger(EVENT_CLOSED).remove();\n    } // Static\n    ;\n\n    Alert._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY$a);\n\n        if (!data) {\n          data = new Alert(this);\n          $element.data(DATA_KEY$a, data);\n        }\n\n        if (config === 'close') {\n          data[config](this);\n        }\n      });\n    };\n\n    Alert._handleDismiss = function _handleDismiss(alertInstance) {\n      return function (event) {\n        if (event) {\n          event.preventDefault();\n        }\n\n        alertInstance.close(this);\n      };\n    };\n\n    _createClass(Alert, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$a;\n      }\n    }]);\n\n    return Alert;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$a] = Alert._jQueryInterface;\n  $__default[\"default\"].fn[NAME$a].Constructor = Alert;\n\n  $__default[\"default\"].fn[NAME$a].noConflict = function () {\n    $__default[\"default\"].fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n    return Alert._jQueryInterface;\n  };\n  /**\n   * Constants\n   */\n\n\n  var NAME$9 = 'button';\n  var VERSION$9 = '4.6.1';\n  var DATA_KEY$9 = 'bs.button';\n  var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n  var DATA_API_KEY$6 = '.data-api';\n  var JQUERY_NO_CONFLICT$9 = $__default[\"default\"].fn[NAME$9];\n  var CLASS_NAME_ACTIVE$3 = 'active';\n  var CLASS_NAME_BUTTON = 'btn';\n  var CLASS_NAME_FOCUS = 'focus';\n  var EVENT_CLICK_DATA_API$5 = \"click\" + EVENT_KEY$9 + DATA_API_KEY$6;\n  var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY$9 + DATA_API_KEY$6 + \" \" + (\"blur\" + EVENT_KEY$9 + DATA_API_KEY$6);\n  var EVENT_LOAD_DATA_API$2 = \"load\" + EVENT_KEY$9 + DATA_API_KEY$6;\n  var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]';\n  var SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]';\n  var SELECTOR_DATA_TOGGLE$4 = '[data-toggle=\"button\"]';\n  var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn';\n  var SELECTOR_INPUT = 'input:not([type=\"hidden\"])';\n  var SELECTOR_ACTIVE$2 = '.active';\n  var SELECTOR_BUTTON = '.btn';\n  /**\n   * Class definition\n   */\n\n  var Button = /*#__PURE__*/function () {\n    function Button(element) {\n      this._element = element;\n      this.shouldAvoidTriggerChange = false;\n    } // Getters\n\n\n    var _proto = Button.prototype; // Public\n\n    _proto.toggle = function toggle() {\n      var triggerChangeEvent = true;\n      var addAriaPressed = true;\n      var rootElement = $__default[\"default\"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];\n\n      if (rootElement) {\n        var input = this._element.querySelector(SELECTOR_INPUT);\n\n        if (input) {\n          if (input.type === 'radio') {\n            if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE$3)) {\n              triggerChangeEvent = false;\n            } else {\n              var activeElement = rootElement.querySelector(SELECTOR_ACTIVE$2);\n\n              if (activeElement) {\n                $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$3);\n              }\n            }\n          }\n\n          if (triggerChangeEvent) {\n            // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n            if (input.type === 'checkbox' || input.type === 'radio') {\n              input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE$3);\n            }\n\n            if (!this.shouldAvoidTriggerChange) {\n              $__default[\"default\"](input).trigger('change');\n            }\n          }\n\n          input.focus();\n          addAriaPressed = false;\n        }\n      }\n\n      if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n        if (addAriaPressed) {\n          this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE$3));\n        }\n\n        if (triggerChangeEvent) {\n          $__default[\"default\"](this._element).toggleClass(CLASS_NAME_ACTIVE$3);\n        }\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$9);\n      this._element = null;\n    } // Static\n    ;\n\n    Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY$9);\n\n        if (!data) {\n          data = new Button(this);\n          $element.data(DATA_KEY$9, data);\n        }\n\n        data.shouldAvoidTriggerChange = avoidTriggerChange;\n\n        if (config === 'toggle') {\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Button, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$9;\n      }\n    }]);\n\n    return Button;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n    var button = event.target;\n    var initialButton = button;\n\n    if (!$__default[\"default\"](button).hasClass(CLASS_NAME_BUTTON)) {\n      button = $__default[\"default\"](button).closest(SELECTOR_BUTTON)[0];\n    }\n\n    if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n      event.preventDefault(); // work around Firefox bug #1540995\n    } else {\n      var inputBtn = button.querySelector(SELECTOR_INPUT);\n\n      if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n        event.preventDefault(); // work around Firefox bug #1540995\n\n        return;\n      }\n\n      if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n        Button._jQueryInterface.call($__default[\"default\"](button), 'toggle', initialButton.tagName === 'INPUT');\n      }\n    }\n  }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n    var button = $__default[\"default\"](event.target).closest(SELECTOR_BUTTON)[0];\n    $__default[\"default\"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n  });\n  $__default[\"default\"](window).on(EVENT_LOAD_DATA_API$2, function () {\n    // ensure correct active class is set to match the controls' actual values/states\n    // find all checkboxes/readio buttons inside data-toggle groups\n    var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));\n\n    for (var i = 0, len = buttons.length; i < len; i++) {\n      var button = buttons[i];\n      var input = button.querySelector(SELECTOR_INPUT);\n\n      if (input.checked || input.hasAttribute('checked')) {\n        button.classList.add(CLASS_NAME_ACTIVE$3);\n      } else {\n        button.classList.remove(CLASS_NAME_ACTIVE$3);\n      }\n    } // find all button toggles\n\n\n    buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$4));\n\n    for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n      var _button = buttons[_i];\n\n      if (_button.getAttribute('aria-pressed') === 'true') {\n        _button.classList.add(CLASS_NAME_ACTIVE$3);\n      } else {\n        _button.classList.remove(CLASS_NAME_ACTIVE$3);\n      }\n    }\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$9] = Button._jQueryInterface;\n  $__default[\"default\"].fn[NAME$9].Constructor = Button;\n\n  $__default[\"default\"].fn[NAME$9].noConflict = function () {\n    $__default[\"default\"].fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n    return Button._jQueryInterface;\n  };\n  /**\n   * Constants\n   */\n\n\n  var NAME$8 = 'carousel';\n  var VERSION$8 = '4.6.1';\n  var DATA_KEY$8 = 'bs.carousel';\n  var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n  var DATA_API_KEY$5 = '.data-api';\n  var JQUERY_NO_CONFLICT$8 = $__default[\"default\"].fn[NAME$8];\n  var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n  var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n  var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n  var SWIPE_THRESHOLD = 40;\n  var CLASS_NAME_CAROUSEL = 'carousel';\n  var CLASS_NAME_ACTIVE$2 = 'active';\n  var CLASS_NAME_SLIDE = 'slide';\n  var CLASS_NAME_RIGHT = 'carousel-item-right';\n  var CLASS_NAME_LEFT = 'carousel-item-left';\n  var CLASS_NAME_NEXT = 'carousel-item-next';\n  var CLASS_NAME_PREV = 'carousel-item-prev';\n  var CLASS_NAME_POINTER_EVENT = 'pointer-event';\n  var DIRECTION_NEXT = 'next';\n  var DIRECTION_PREV = 'prev';\n  var DIRECTION_LEFT = 'left';\n  var DIRECTION_RIGHT = 'right';\n  var EVENT_SLIDE = \"slide\" + EVENT_KEY$8;\n  var EVENT_SLID = \"slid\" + EVENT_KEY$8;\n  var EVENT_KEYDOWN = \"keydown\" + EVENT_KEY$8;\n  var EVENT_MOUSEENTER = \"mouseenter\" + EVENT_KEY$8;\n  var EVENT_MOUSELEAVE = \"mouseleave\" + EVENT_KEY$8;\n  var EVENT_TOUCHSTART = \"touchstart\" + EVENT_KEY$8;\n  var EVENT_TOUCHMOVE = \"touchmove\" + EVENT_KEY$8;\n  var EVENT_TOUCHEND = \"touchend\" + EVENT_KEY$8;\n  var EVENT_POINTERDOWN = \"pointerdown\" + EVENT_KEY$8;\n  var EVENT_POINTERUP = \"pointerup\" + EVENT_KEY$8;\n  var EVENT_DRAG_START = \"dragstart\" + EVENT_KEY$8;\n  var EVENT_LOAD_DATA_API$1 = \"load\" + EVENT_KEY$8 + DATA_API_KEY$5;\n  var EVENT_CLICK_DATA_API$4 = \"click\" + EVENT_KEY$8 + DATA_API_KEY$5;\n  var SELECTOR_ACTIVE$1 = '.active';\n  var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n  var SELECTOR_ITEM = '.carousel-item';\n  var SELECTOR_ITEM_IMG = '.carousel-item img';\n  var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n  var SELECTOR_INDICATORS = '.carousel-indicators';\n  var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';\n  var SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]';\n  var Default$7 = {\n    interval: 5000,\n    keyboard: true,\n    slide: false,\n    pause: 'hover',\n    wrap: true,\n    touch: true\n  };\n  var DefaultType$7 = {\n    interval: '(number|boolean)',\n    keyboard: 'boolean',\n    slide: '(boolean|string)',\n    pause: '(string|boolean)',\n    wrap: 'boolean',\n    touch: 'boolean'\n  };\n  var PointerType = {\n    TOUCH: 'touch',\n    PEN: 'pen'\n  };\n  /**\n   * Class definition\n   */\n\n  var Carousel = /*#__PURE__*/function () {\n    function Carousel(element, config) {\n      this._items = null;\n      this._interval = null;\n      this._activeElement = null;\n      this._isPaused = false;\n      this._isSliding = false;\n      this.touchTimeout = null;\n      this.touchStartX = 0;\n      this.touchDeltaX = 0;\n      this._config = this._getConfig(config);\n      this._element = element;\n      this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);\n      this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n      this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n      this._addEventListeners();\n    } // Getters\n\n\n    var _proto = Carousel.prototype; // Public\n\n    _proto.next = function next() {\n      if (!this._isSliding) {\n        this._slide(DIRECTION_NEXT);\n      }\n    };\n\n    _proto.nextWhenVisible = function nextWhenVisible() {\n      var $element = $__default[\"default\"](this._element); // Don't call next when the page isn't visible\n      // or the carousel or its parent isn't visible\n\n      if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') {\n        this.next();\n      }\n    };\n\n    _proto.prev = function prev() {\n      if (!this._isSliding) {\n        this._slide(DIRECTION_PREV);\n      }\n    };\n\n    _proto.pause = function pause(event) {\n      if (!event) {\n        this._isPaused = true;\n      }\n\n      if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n        Util.triggerTransitionEnd(this._element);\n        this.cycle(true);\n      }\n\n      clearInterval(this._interval);\n      this._interval = null;\n    };\n\n    _proto.cycle = function cycle(event) {\n      if (!event) {\n        this._isPaused = false;\n      }\n\n      if (this._interval) {\n        clearInterval(this._interval);\n        this._interval = null;\n      }\n\n      if (this._config.interval && !this._isPaused) {\n        this._updateInterval();\n\n        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n      }\n    };\n\n    _proto.to = function to(index) {\n      var _this = this;\n\n      this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n      var activeIndex = this._getItemIndex(this._activeElement);\n\n      if (index > this._items.length - 1 || index < 0) {\n        return;\n      }\n\n      if (this._isSliding) {\n        $__default[\"default\"](this._element).one(EVENT_SLID, function () {\n          return _this.to(index);\n        });\n        return;\n      }\n\n      if (activeIndex === index) {\n        this.pause();\n        this.cycle();\n        return;\n      }\n\n      var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;\n\n      this._slide(direction, this._items[index]);\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"](this._element).off(EVENT_KEY$8);\n      $__default[\"default\"].removeData(this._element, DATA_KEY$8);\n      this._items = null;\n      this._config = null;\n      this._element = null;\n      this._interval = null;\n      this._isPaused = null;\n      this._isSliding = null;\n      this._activeElement = null;\n      this._indicatorsElement = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$7, config);\n      Util.typeCheckConfig(NAME$8, config, DefaultType$7);\n      return config;\n    };\n\n    _proto._handleSwipe = function _handleSwipe() {\n      var absDeltax = Math.abs(this.touchDeltaX);\n\n      if (absDeltax <= SWIPE_THRESHOLD) {\n        return;\n      }\n\n      var direction = absDeltax / this.touchDeltaX;\n      this.touchDeltaX = 0; // swipe left\n\n      if (direction > 0) {\n        this.prev();\n      } // swipe right\n\n\n      if (direction < 0) {\n        this.next();\n      }\n    };\n\n    _proto._addEventListeners = function _addEventListeners() {\n      var _this2 = this;\n\n      if (this._config.keyboard) {\n        $__default[\"default\"](this._element).on(EVENT_KEYDOWN, function (event) {\n          return _this2._keydown(event);\n        });\n      }\n\n      if (this._config.pause === 'hover') {\n        $__default[\"default\"](this._element).on(EVENT_MOUSEENTER, function (event) {\n          return _this2.pause(event);\n        }).on(EVENT_MOUSELEAVE, function (event) {\n          return _this2.cycle(event);\n        });\n      }\n\n      if (this._config.touch) {\n        this._addTouchEventListeners();\n      }\n    };\n\n    _proto._addTouchEventListeners = function _addTouchEventListeners() {\n      var _this3 = this;\n\n      if (!this._touchSupported) {\n        return;\n      }\n\n      var start = function start(event) {\n        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n          _this3.touchStartX = event.originalEvent.clientX;\n        } else if (!_this3._pointerEvent) {\n          _this3.touchStartX = event.originalEvent.touches[0].clientX;\n        }\n      };\n\n      var move = function move(event) {\n        // ensure swiping with one touch and not pinching\n        _this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX;\n      };\n\n      var end = function end(event) {\n        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n          _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n        }\n\n        _this3._handleSwipe();\n\n        if (_this3._config.pause === 'hover') {\n          // If it's a touch-enabled device, mouseenter/leave are fired as\n          // part of the mouse compatibility events on first tap - the carousel\n          // would stop cycling until user tapped out of it;\n          // here, we listen for touchend, explicitly pause the carousel\n          // (as if it's the second time we tap on it, mouseenter compat event\n          // is NOT fired) and after a timeout (to allow for mouse compatibility\n          // events to fire) we explicitly restart cycling\n          _this3.pause();\n\n          if (_this3.touchTimeout) {\n            clearTimeout(_this3.touchTimeout);\n          }\n\n          _this3.touchTimeout = setTimeout(function (event) {\n            return _this3.cycle(event);\n          }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n        }\n      };\n\n      $__default[\"default\"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {\n        return e.preventDefault();\n      });\n\n      if (this._pointerEvent) {\n        $__default[\"default\"](this._element).on(EVENT_POINTERDOWN, function (event) {\n          return start(event);\n        });\n        $__default[\"default\"](this._element).on(EVENT_POINTERUP, function (event) {\n          return end(event);\n        });\n\n        this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n      } else {\n        $__default[\"default\"](this._element).on(EVENT_TOUCHSTART, function (event) {\n          return start(event);\n        });\n        $__default[\"default\"](this._element).on(EVENT_TOUCHMOVE, function (event) {\n          return move(event);\n        });\n        $__default[\"default\"](this._element).on(EVENT_TOUCHEND, function (event) {\n          return end(event);\n        });\n      }\n    };\n\n    _proto._keydown = function _keydown(event) {\n      if (/input|textarea/i.test(event.target.tagName)) {\n        return;\n      }\n\n      switch (event.which) {\n        case ARROW_LEFT_KEYCODE:\n          event.preventDefault();\n          this.prev();\n          break;\n\n        case ARROW_RIGHT_KEYCODE:\n          event.preventDefault();\n          this.next();\n          break;\n      }\n    };\n\n    _proto._getItemIndex = function _getItemIndex(element) {\n      this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];\n      return this._items.indexOf(element);\n    };\n\n    _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n      var isNextDirection = direction === DIRECTION_NEXT;\n      var isPrevDirection = direction === DIRECTION_PREV;\n\n      var activeIndex = this._getItemIndex(activeElement);\n\n      var lastItemIndex = this._items.length - 1;\n      var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n      if (isGoingToWrap && !this._config.wrap) {\n        return activeElement;\n      }\n\n      var delta = direction === DIRECTION_PREV ? -1 : 1;\n      var itemIndex = (activeIndex + delta) % this._items.length;\n      return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n    };\n\n    _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n      var targetIndex = this._getItemIndex(relatedTarget);\n\n      var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));\n\n      var slideEvent = $__default[\"default\"].Event(EVENT_SLIDE, {\n        relatedTarget: relatedTarget,\n        direction: eventDirectionName,\n        from: fromIndex,\n        to: targetIndex\n      });\n      $__default[\"default\"](this._element).trigger(slideEvent);\n      return slideEvent;\n    };\n\n    _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n      if (this._indicatorsElement) {\n        var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));\n        $__default[\"default\"](indicators).removeClass(CLASS_NAME_ACTIVE$2);\n\n        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n        if (nextIndicator) {\n          $__default[\"default\"](nextIndicator).addClass(CLASS_NAME_ACTIVE$2);\n        }\n      }\n    };\n\n    _proto._updateInterval = function _updateInterval() {\n      var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n      if (!element) {\n        return;\n      }\n\n      var elementInterval = parseInt(element.getAttribute('data-interval'), 10);\n\n      if (elementInterval) {\n        this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n        this._config.interval = elementInterval;\n      } else {\n        this._config.interval = this._config.defaultInterval || this._config.interval;\n      }\n    };\n\n    _proto._slide = function _slide(direction, element) {\n      var _this4 = this;\n\n      var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n      var activeElementIndex = this._getItemIndex(activeElement);\n\n      var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n      var nextElementIndex = this._getItemIndex(nextElement);\n\n      var isCycling = Boolean(this._interval);\n      var directionalClassName;\n      var orderClassName;\n      var eventDirectionName;\n\n      if (direction === DIRECTION_NEXT) {\n        directionalClassName = CLASS_NAME_LEFT;\n        orderClassName = CLASS_NAME_NEXT;\n        eventDirectionName = DIRECTION_LEFT;\n      } else {\n        directionalClassName = CLASS_NAME_RIGHT;\n        orderClassName = CLASS_NAME_PREV;\n        eventDirectionName = DIRECTION_RIGHT;\n      }\n\n      if (nextElement && $__default[\"default\"](nextElement).hasClass(CLASS_NAME_ACTIVE$2)) {\n        this._isSliding = false;\n        return;\n      }\n\n      var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n      if (slideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (!activeElement || !nextElement) {\n        // Some weirdness is happening, so we bail\n        return;\n      }\n\n      this._isSliding = true;\n\n      if (isCycling) {\n        this.pause();\n      }\n\n      this._setActiveIndicatorElement(nextElement);\n\n      this._activeElement = nextElement;\n      var slidEvent = $__default[\"default\"].Event(EVENT_SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      });\n\n      if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SLIDE)) {\n        $__default[\"default\"](nextElement).addClass(orderClassName);\n        Util.reflow(nextElement);\n        $__default[\"default\"](activeElement).addClass(directionalClassName);\n        $__default[\"default\"](nextElement).addClass(directionalClassName);\n        var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n        $__default[\"default\"](activeElement).one(Util.TRANSITION_END, function () {\n          $__default[\"default\"](nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(CLASS_NAME_ACTIVE$2);\n          $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$2 + \" \" + orderClassName + \" \" + directionalClassName);\n          _this4._isSliding = false;\n          setTimeout(function () {\n            return $__default[\"default\"](_this4._element).trigger(slidEvent);\n          }, 0);\n        }).emulateTransitionEnd(transitionDuration);\n      } else {\n        $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$2);\n        $__default[\"default\"](nextElement).addClass(CLASS_NAME_ACTIVE$2);\n        this._isSliding = false;\n        $__default[\"default\"](this._element).trigger(slidEvent);\n      }\n\n      if (isCycling) {\n        this.cycle();\n      }\n    } // Static\n    ;\n\n    Carousel._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$8);\n\n        var _config = _extends({}, Default$7, $__default[\"default\"](this).data());\n\n        if (_typeof(config) === 'object') {\n          _config = _extends({}, _config, config);\n        }\n\n        var action = typeof config === 'string' ? config : _config.slide;\n\n        if (!data) {\n          data = new Carousel(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$8, data);\n        }\n\n        if (typeof config === 'number') {\n          data.to(config);\n        } else if (typeof action === 'string') {\n          if (typeof data[action] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n          }\n\n          data[action]();\n        } else if (_config.interval && _config.ride) {\n          data.pause();\n          data.cycle();\n        }\n      });\n    };\n\n    Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n      var selector = Util.getSelectorFromElement(this);\n\n      if (!selector) {\n        return;\n      }\n\n      var target = $__default[\"default\"](selector)[0];\n\n      if (!target || !$__default[\"default\"](target).hasClass(CLASS_NAME_CAROUSEL)) {\n        return;\n      }\n\n      var config = _extends({}, $__default[\"default\"](target).data(), $__default[\"default\"](this).data());\n\n      var slideIndex = this.getAttribute('data-slide-to');\n\n      if (slideIndex) {\n        config.interval = false;\n      }\n\n      Carousel._jQueryInterface.call($__default[\"default\"](target), config);\n\n      if (slideIndex) {\n        $__default[\"default\"](target).data(DATA_KEY$8).to(slideIndex);\n      }\n\n      event.preventDefault();\n    };\n\n    _createClass(Carousel, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$8;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$7;\n      }\n    }]);\n\n    return Carousel;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);\n  $__default[\"default\"](window).on(EVENT_LOAD_DATA_API$1, function () {\n    var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));\n\n    for (var i = 0, len = carousels.length; i < len; i++) {\n      var $carousel = $__default[\"default\"](carousels[i]);\n\n      Carousel._jQueryInterface.call($carousel, $carousel.data());\n    }\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$8] = Carousel._jQueryInterface;\n  $__default[\"default\"].fn[NAME$8].Constructor = Carousel;\n\n  $__default[\"default\"].fn[NAME$8].noConflict = function () {\n    $__default[\"default\"].fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n    return Carousel._jQueryInterface;\n  };\n  /**\n   * Constants\n   */\n\n\n  var NAME$7 = 'collapse';\n  var VERSION$7 = '4.6.1';\n  var DATA_KEY$7 = 'bs.collapse';\n  var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n  var DATA_API_KEY$4 = '.data-api';\n  var JQUERY_NO_CONFLICT$7 = $__default[\"default\"].fn[NAME$7];\n  var CLASS_NAME_SHOW$6 = 'show';\n  var CLASS_NAME_COLLAPSE = 'collapse';\n  var CLASS_NAME_COLLAPSING = 'collapsing';\n  var CLASS_NAME_COLLAPSED = 'collapsed';\n  var DIMENSION_WIDTH = 'width';\n  var DIMENSION_HEIGHT = 'height';\n  var EVENT_SHOW$4 = \"show\" + EVENT_KEY$7;\n  var EVENT_SHOWN$4 = \"shown\" + EVENT_KEY$7;\n  var EVENT_HIDE$4 = \"hide\" + EVENT_KEY$7;\n  var EVENT_HIDDEN$4 = \"hidden\" + EVENT_KEY$7;\n  var EVENT_CLICK_DATA_API$3 = \"click\" + EVENT_KEY$7 + DATA_API_KEY$4;\n  var SELECTOR_ACTIVES = '.show, .collapsing';\n  var SELECTOR_DATA_TOGGLE$3 = '[data-toggle=\"collapse\"]';\n  var Default$6 = {\n    toggle: true,\n    parent: ''\n  };\n  var DefaultType$6 = {\n    toggle: 'boolean',\n    parent: '(string|element)'\n  };\n  /**\n   * Class definition\n   */\n\n  var Collapse = /*#__PURE__*/function () {\n    function Collapse(element, config) {\n      this._isTransitioning = false;\n      this._element = element;\n      this._config = this._getConfig(config);\n      this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n      var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$3));\n\n      for (var i = 0, len = toggleList.length; i < len; i++) {\n        var elem = toggleList[i];\n        var selector = Util.getSelectorFromElement(elem);\n        var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n          return foundElem === element;\n        });\n\n        if (selector !== null && filterElement.length > 0) {\n          this._selector = selector;\n\n          this._triggerArray.push(elem);\n        }\n      }\n\n      this._parent = this._config.parent ? this._getParent() : null;\n\n      if (!this._config.parent) {\n        this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n      }\n\n      if (this._config.toggle) {\n        this.toggle();\n      }\n    } // Getters\n\n\n    var _proto = Collapse.prototype; // Public\n\n    _proto.toggle = function toggle() {\n      if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n        this.hide();\n      } else {\n        this.show();\n      }\n    };\n\n    _proto.show = function show() {\n      var _this = this;\n\n      if (this._isTransitioning || $__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n        return;\n      }\n\n      var actives;\n      var activesData;\n\n      if (this._parent) {\n        actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {\n          if (typeof _this._config.parent === 'string') {\n            return elem.getAttribute('data-parent') === _this._config.parent;\n          }\n\n          return elem.classList.contains(CLASS_NAME_COLLAPSE);\n        });\n\n        if (actives.length === 0) {\n          actives = null;\n        }\n      }\n\n      if (actives) {\n        activesData = $__default[\"default\"](actives).not(this._selector).data(DATA_KEY$7);\n\n        if (activesData && activesData._isTransitioning) {\n          return;\n        }\n      }\n\n      var startEvent = $__default[\"default\"].Event(EVENT_SHOW$4);\n      $__default[\"default\"](this._element).trigger(startEvent);\n\n      if (startEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (actives) {\n        Collapse._jQueryInterface.call($__default[\"default\"](actives).not(this._selector), 'hide');\n\n        if (!activesData) {\n          $__default[\"default\"](actives).data(DATA_KEY$7, null);\n        }\n      }\n\n      var dimension = this._getDimension();\n\n      $__default[\"default\"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);\n      this._element.style[dimension] = 0;\n\n      if (this._triggerArray.length) {\n        $__default[\"default\"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);\n      }\n\n      this.setTransitioning(true);\n\n      var complete = function complete() {\n        $__default[\"default\"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$6);\n        _this._element.style[dimension] = '';\n\n        _this.setTransitioning(false);\n\n        $__default[\"default\"](_this._element).trigger(EVENT_SHOWN$4);\n      };\n\n      var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n      var scrollSize = \"scroll\" + capitalizedDimension;\n      var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n      $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      this._element.style[dimension] = this._element[scrollSize] + \"px\";\n    };\n\n    _proto.hide = function hide() {\n      var _this2 = this;\n\n      if (this._isTransitioning || !$__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n        return;\n      }\n\n      var startEvent = $__default[\"default\"].Event(EVENT_HIDE$4);\n      $__default[\"default\"](this._element).trigger(startEvent);\n\n      if (startEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      var dimension = this._getDimension();\n\n      this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n      Util.reflow(this._element);\n      $__default[\"default\"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$6);\n      var triggerArrayLength = this._triggerArray.length;\n\n      if (triggerArrayLength > 0) {\n        for (var i = 0; i < triggerArrayLength; i++) {\n          var trigger = this._triggerArray[i];\n          var selector = Util.getSelectorFromElement(trigger);\n\n          if (selector !== null) {\n            var $elem = $__default[\"default\"]([].slice.call(document.querySelectorAll(selector)));\n\n            if (!$elem.hasClass(CLASS_NAME_SHOW$6)) {\n              $__default[\"default\"](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);\n            }\n          }\n        }\n      }\n\n      this.setTransitioning(true);\n\n      var complete = function complete() {\n        _this2.setTransitioning(false);\n\n        $__default[\"default\"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN$4);\n      };\n\n      this._element.style[dimension] = '';\n      var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n      $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n    };\n\n    _proto.setTransitioning = function setTransitioning(isTransitioning) {\n      this._isTransitioning = isTransitioning;\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$7);\n      this._config = null;\n      this._parent = null;\n      this._element = null;\n      this._triggerArray = null;\n      this._isTransitioning = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$6, config);\n      config.toggle = Boolean(config.toggle); // Coerce string values\n\n      Util.typeCheckConfig(NAME$7, config, DefaultType$6);\n      return config;\n    };\n\n    _proto._getDimension = function _getDimension() {\n      var hasWidth = $__default[\"default\"](this._element).hasClass(DIMENSION_WIDTH);\n      return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;\n    };\n\n    _proto._getParent = function _getParent() {\n      var _this3 = this;\n\n      var parent;\n\n      if (Util.isElement(this._config.parent)) {\n        parent = this._config.parent; // It's a jQuery object\n\n        if (typeof this._config.parent.jquery !== 'undefined') {\n          parent = this._config.parent[0];\n        }\n      } else {\n        parent = document.querySelector(this._config.parent);\n      }\n\n      var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n      var children = [].slice.call(parent.querySelectorAll(selector));\n      $__default[\"default\"](children).each(function (i, element) {\n        _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n      });\n      return parent;\n    };\n\n    _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n      var isOpen = $__default[\"default\"](element).hasClass(CLASS_NAME_SHOW$6);\n\n      if (triggerArray.length) {\n        $__default[\"default\"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n      }\n    } // Static\n    ;\n\n    Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n      var selector = Util.getSelectorFromElement(element);\n      return selector ? document.querySelector(selector) : null;\n    };\n\n    Collapse._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY$7);\n\n        var _config = _extends({}, Default$6, $element.data(), _typeof(config) === 'object' && config ? config : {});\n\n        if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n          _config.toggle = false;\n        }\n\n        if (!data) {\n          data = new Collapse(this, _config);\n          $element.data(DATA_KEY$7, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Collapse, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$7;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$6;\n      }\n    }]);\n\n    return Collapse;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n    if (event.currentTarget.tagName === 'A') {\n      event.preventDefault();\n    }\n\n    var $trigger = $__default[\"default\"](this);\n    var selector = Util.getSelectorFromElement(this);\n    var selectors = [].slice.call(document.querySelectorAll(selector));\n    $__default[\"default\"](selectors).each(function () {\n      var $target = $__default[\"default\"](this);\n      var data = $target.data(DATA_KEY$7);\n      var config = data ? 'toggle' : $trigger.data();\n\n      Collapse._jQueryInterface.call($target, config);\n    });\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$7] = Collapse._jQueryInterface;\n  $__default[\"default\"].fn[NAME$7].Constructor = Collapse;\n\n  $__default[\"default\"].fn[NAME$7].noConflict = function () {\n    $__default[\"default\"].fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n    return Collapse._jQueryInterface;\n  };\n  /**\n   * Constants\n   */\n\n\n  var NAME$6 = 'dropdown';\n  var VERSION$6 = '4.6.1';\n  var DATA_KEY$6 = 'bs.dropdown';\n  var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n  var DATA_API_KEY$3 = '.data-api';\n  var JQUERY_NO_CONFLICT$6 = $__default[\"default\"].fn[NAME$6];\n  var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n  var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n  var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n  var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n  var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n  var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n  var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE$1);\n  var CLASS_NAME_DISABLED$1 = 'disabled';\n  var CLASS_NAME_SHOW$5 = 'show';\n  var CLASS_NAME_DROPUP = 'dropup';\n  var CLASS_NAME_DROPRIGHT = 'dropright';\n  var CLASS_NAME_DROPLEFT = 'dropleft';\n  var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';\n  var CLASS_NAME_POSITION_STATIC = 'position-static';\n  var EVENT_HIDE$3 = \"hide\" + EVENT_KEY$6;\n  var EVENT_HIDDEN$3 = \"hidden\" + EVENT_KEY$6;\n  var EVENT_SHOW$3 = \"show\" + EVENT_KEY$6;\n  var EVENT_SHOWN$3 = \"shown\" + EVENT_KEY$6;\n  var EVENT_CLICK = \"click\" + EVENT_KEY$6;\n  var EVENT_CLICK_DATA_API$2 = \"click\" + EVENT_KEY$6 + DATA_API_KEY$3;\n  var EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY$6 + DATA_API_KEY$3;\n  var EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY$6 + DATA_API_KEY$3;\n  var SELECTOR_DATA_TOGGLE$2 = '[data-toggle=\"dropdown\"]';\n  var SELECTOR_FORM_CHILD = '.dropdown form';\n  var SELECTOR_MENU = '.dropdown-menu';\n  var SELECTOR_NAVBAR_NAV = '.navbar-nav';\n  var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n  var PLACEMENT_TOP = 'top-start';\n  var PLACEMENT_TOPEND = 'top-end';\n  var PLACEMENT_BOTTOM = 'bottom-start';\n  var PLACEMENT_BOTTOMEND = 'bottom-end';\n  var PLACEMENT_RIGHT = 'right-start';\n  var PLACEMENT_LEFT = 'left-start';\n  var Default$5 = {\n    offset: 0,\n    flip: true,\n    boundary: 'scrollParent',\n    reference: 'toggle',\n    display: 'dynamic',\n    popperConfig: null\n  };\n  var DefaultType$5 = {\n    offset: '(number|string|function)',\n    flip: 'boolean',\n    boundary: '(string|element)',\n    reference: '(string|element)',\n    display: 'string',\n    popperConfig: '(null|object)'\n  };\n  /**\n   * Class definition\n   */\n\n  var Dropdown = /*#__PURE__*/function () {\n    function Dropdown(element, config) {\n      this._element = element;\n      this._popper = null;\n      this._config = this._getConfig(config);\n      this._menu = this._getMenuElement();\n      this._inNavbar = this._detectNavbar();\n\n      this._addEventListeners();\n    } // Getters\n\n\n    var _proto = Dropdown.prototype; // Public\n\n    _proto.toggle = function toggle() {\n      if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1)) {\n        return;\n      }\n\n      var isActive = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5);\n\n      Dropdown._clearMenus();\n\n      if (isActive) {\n        return;\n      }\n\n      this.show(true);\n    };\n\n    _proto.show = function show(usePopper) {\n      if (usePopper === void 0) {\n        usePopper = false;\n      }\n\n      if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1) || $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var showEvent = $__default[\"default\"].Event(EVENT_SHOW$3, relatedTarget);\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      $__default[\"default\"](parent).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      } // Totally disable Popper for Dropdowns in Navbar\n\n\n      if (!this._inNavbar && usePopper) {\n        // Check for Popper dependency\n        if (typeof Popper__default[\"default\"] === 'undefined') {\n          throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n        }\n\n        var referenceElement = this._element;\n\n        if (this._config.reference === 'parent') {\n          referenceElement = parent;\n        } else if (Util.isElement(this._config.reference)) {\n          referenceElement = this._config.reference; // Check if it's jQuery element\n\n          if (typeof this._config.reference.jquery !== 'undefined') {\n            referenceElement = this._config.reference[0];\n          }\n        } // If boundary is not `scrollParent`, then set position to `static`\n        // to allow the menu to \"escape\" the scroll parent's boundaries\n        // https://github.com/twbs/bootstrap/issues/24251\n\n\n        if (this._config.boundary !== 'scrollParent') {\n          $__default[\"default\"](parent).addClass(CLASS_NAME_POSITION_STATIC);\n        }\n\n        this._popper = new Popper__default[\"default\"](referenceElement, this._menu, this._getPopperConfig());\n      } // If this is a touch-enabled device we add extra\n      // empty mouseover listeners to the body's immediate children;\n      // only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n      if ('ontouchstart' in document.documentElement && $__default[\"default\"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n        $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n      }\n\n      this._element.focus();\n\n      this._element.setAttribute('aria-expanded', true);\n\n      $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n      $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_SHOWN$3, relatedTarget));\n    };\n\n    _proto.hide = function hide() {\n      if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1) || !$__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$3, relatedTarget);\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      $__default[\"default\"](parent).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (this._popper) {\n        this._popper.destroy();\n      }\n\n      $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n      $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_HIDDEN$3, relatedTarget));\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$6);\n      $__default[\"default\"](this._element).off(EVENT_KEY$6);\n      this._element = null;\n      this._menu = null;\n\n      if (this._popper !== null) {\n        this._popper.destroy();\n\n        this._popper = null;\n      }\n    };\n\n    _proto.update = function update() {\n      this._inNavbar = this._detectNavbar();\n\n      if (this._popper !== null) {\n        this._popper.scheduleUpdate();\n      }\n    } // Private\n    ;\n\n    _proto._addEventListeners = function _addEventListeners() {\n      var _this = this;\n\n      $__default[\"default\"](this._element).on(EVENT_CLICK, function (event) {\n        event.preventDefault();\n        event.stopPropagation();\n\n        _this.toggle();\n      });\n    };\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, this.constructor.Default, $__default[\"default\"](this._element).data(), config);\n      Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n      return config;\n    };\n\n    _proto._getMenuElement = function _getMenuElement() {\n      if (!this._menu) {\n        var parent = Dropdown._getParentFromElement(this._element);\n\n        if (parent) {\n          this._menu = parent.querySelector(SELECTOR_MENU);\n        }\n      }\n\n      return this._menu;\n    };\n\n    _proto._getPlacement = function _getPlacement() {\n      var $parentDropdown = $__default[\"default\"](this._element.parentNode);\n      var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n      if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n        placement = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n      } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n        placement = PLACEMENT_RIGHT;\n      } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n        placement = PLACEMENT_LEFT;\n      } else if ($__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n        placement = PLACEMENT_BOTTOMEND;\n      }\n\n      return placement;\n    };\n\n    _proto._detectNavbar = function _detectNavbar() {\n      return $__default[\"default\"](this._element).closest('.navbar').length > 0;\n    };\n\n    _proto._getOffset = function _getOffset() {\n      var _this2 = this;\n\n      var offset = {};\n\n      if (typeof this._config.offset === 'function') {\n        offset.fn = function (data) {\n          data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element));\n          return data;\n        };\n      } else {\n        offset.offset = this._config.offset;\n      }\n\n      return offset;\n    };\n\n    _proto._getPopperConfig = function _getPopperConfig() {\n      var popperConfig = {\n        placement: this._getPlacement(),\n        modifiers: {\n          offset: this._getOffset(),\n          flip: {\n            enabled: this._config.flip\n          },\n          preventOverflow: {\n            boundariesElement: this._config.boundary\n          }\n        }\n      }; // Disable Popper if we have a static display\n\n      if (this._config.display === 'static') {\n        popperConfig.modifiers.applyStyle = {\n          enabled: false\n        };\n      }\n\n      return _extends({}, popperConfig, this._config.popperConfig);\n    } // Static\n    ;\n\n    Dropdown._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$6);\n\n        var _config = _typeof(config) === 'object' ? config : null;\n\n        if (!data) {\n          data = new Dropdown(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$6, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    Dropdown._clearMenus = function _clearMenus(event) {\n      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n        return;\n      }\n\n      var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));\n\n      for (var i = 0, len = toggles.length; i < len; i++) {\n        var parent = Dropdown._getParentFromElement(toggles[i]);\n\n        var context = $__default[\"default\"](toggles[i]).data(DATA_KEY$6);\n        var relatedTarget = {\n          relatedTarget: toggles[i]\n        };\n\n        if (event && event.type === 'click') {\n          relatedTarget.clickEvent = event;\n        }\n\n        if (!context) {\n          continue;\n        }\n\n        var dropdownMenu = context._menu;\n\n        if (!$__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW$5)) {\n          continue;\n        }\n\n        if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default[\"default\"].contains(parent, event.target)) {\n          continue;\n        }\n\n        var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$3, relatedTarget);\n        $__default[\"default\"](parent).trigger(hideEvent);\n\n        if (hideEvent.isDefaultPrevented()) {\n          continue;\n        } // If this is a touch-enabled device we remove the extra\n        // empty mouseover listeners we added for iOS support\n\n\n        if ('ontouchstart' in document.documentElement) {\n          $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n        }\n\n        toggles[i].setAttribute('aria-expanded', 'false');\n\n        if (context._popper) {\n          context._popper.destroy();\n        }\n\n        $__default[\"default\"](dropdownMenu).removeClass(CLASS_NAME_SHOW$5);\n        $__default[\"default\"](parent).removeClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_HIDDEN$3, relatedTarget));\n      }\n    };\n\n    Dropdown._getParentFromElement = function _getParentFromElement(element) {\n      var parent;\n      var selector = Util.getSelectorFromElement(element);\n\n      if (selector) {\n        parent = document.querySelector(selector);\n      }\n\n      return parent || element.parentNode;\n    } // eslint-disable-next-line complexity\n    ;\n\n    Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n      // If not input/textarea:\n      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n      // If input/textarea:\n      //  - If space key => not a dropdown command\n      //  - If key is other than escape\n      //    - If key is not up or down => not a dropdown command\n      //    - If trigger inside the menu => not a dropdown command\n      if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE$1 && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default[\"default\"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n        return;\n      }\n\n      if (this.disabled || $__default[\"default\"](this).hasClass(CLASS_NAME_DISABLED$1)) {\n        return;\n      }\n\n      var parent = Dropdown._getParentFromElement(this);\n\n      var isActive = $__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW$5);\n\n      if (!isActive && event.which === ESCAPE_KEYCODE$1) {\n        return;\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n\n      if (!isActive || event.which === ESCAPE_KEYCODE$1 || event.which === SPACE_KEYCODE) {\n        if (event.which === ESCAPE_KEYCODE$1) {\n          $__default[\"default\"](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');\n        }\n\n        $__default[\"default\"](this).trigger('click');\n        return;\n      }\n\n      var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {\n        return $__default[\"default\"](item).is(':visible');\n      });\n\n      if (items.length === 0) {\n        return;\n      }\n\n      var index = items.indexOf(event.target);\n\n      if (event.which === ARROW_UP_KEYCODE && index > 0) {\n        // Up\n        index--;\n      }\n\n      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n        // Down\n        index++;\n      }\n\n      if (index < 0) {\n        index = 0;\n      }\n\n      items[index].focus();\n    };\n\n    _createClass(Dropdown, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$6;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$5;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$5;\n      }\n    }]);\n\n    return Dropdown;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$2 + \" \" + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n    event.preventDefault();\n    event.stopPropagation();\n\n    Dropdown._jQueryInterface.call($__default[\"default\"](this), 'toggle');\n  }).on(EVENT_CLICK_DATA_API$2, SELECTOR_FORM_CHILD, function (e) {\n    e.stopPropagation();\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$6] = Dropdown._jQueryInterface;\n  $__default[\"default\"].fn[NAME$6].Constructor = Dropdown;\n\n  $__default[\"default\"].fn[NAME$6].noConflict = function () {\n    $__default[\"default\"].fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n    return Dropdown._jQueryInterface;\n  };\n  /**\n   * Constants\n   */\n\n\n  var NAME$5 = 'modal';\n  var VERSION$5 = '4.6.1';\n  var DATA_KEY$5 = 'bs.modal';\n  var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n  var DATA_API_KEY$2 = '.data-api';\n  var JQUERY_NO_CONFLICT$5 = $__default[\"default\"].fn[NAME$5];\n  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n  var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';\n  var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';\n  var CLASS_NAME_BACKDROP = 'modal-backdrop';\n  var CLASS_NAME_OPEN = 'modal-open';\n  var CLASS_NAME_FADE$4 = 'fade';\n  var CLASS_NAME_SHOW$4 = 'show';\n  var CLASS_NAME_STATIC = 'modal-static';\n  var EVENT_HIDE$2 = \"hide\" + EVENT_KEY$5;\n  var EVENT_HIDE_PREVENTED = \"hidePrevented\" + EVENT_KEY$5;\n  var EVENT_HIDDEN$2 = \"hidden\" + EVENT_KEY$5;\n  var EVENT_SHOW$2 = \"show\" + EVENT_KEY$5;\n  var EVENT_SHOWN$2 = \"shown\" + EVENT_KEY$5;\n  var EVENT_FOCUSIN = \"focusin\" + EVENT_KEY$5;\n  var EVENT_RESIZE = \"resize\" + EVENT_KEY$5;\n  var EVENT_CLICK_DISMISS$1 = \"click.dismiss\" + EVENT_KEY$5;\n  var EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\" + EVENT_KEY$5;\n  var EVENT_MOUSEUP_DISMISS = \"mouseup.dismiss\" + EVENT_KEY$5;\n  var EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\" + EVENT_KEY$5;\n  var EVENT_CLICK_DATA_API$1 = \"click\" + EVENT_KEY$5 + DATA_API_KEY$2;\n  var SELECTOR_DIALOG = '.modal-dialog';\n  var SELECTOR_MODAL_BODY = '.modal-body';\n  var SELECTOR_DATA_TOGGLE$1 = '[data-toggle=\"modal\"]';\n  var SELECTOR_DATA_DISMISS$1 = '[data-dismiss=\"modal\"]';\n  var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n  var SELECTOR_STICKY_CONTENT = '.sticky-top';\n  var Default$4 = {\n    backdrop: true,\n    keyboard: true,\n    focus: true,\n    show: true\n  };\n  var DefaultType$4 = {\n    backdrop: '(boolean|string)',\n    keyboard: 'boolean',\n    focus: 'boolean',\n    show: 'boolean'\n  };\n  /**\n   * Class definition\n   */\n\n  var Modal = /*#__PURE__*/function () {\n    function Modal(element, config) {\n      this._config = this._getConfig(config);\n      this._element = element;\n      this._dialog = element.querySelector(SELECTOR_DIALOG);\n      this._backdrop = null;\n      this._isShown = false;\n      this._isBodyOverflowing = false;\n      this._ignoreBackdropClick = false;\n      this._isTransitioning = false;\n      this._scrollbarWidth = 0;\n    } // Getters\n\n\n    var _proto = Modal.prototype; // Public\n\n    _proto.toggle = function toggle(relatedTarget) {\n      return this._isShown ? this.hide() : this.show(relatedTarget);\n    };\n\n    _proto.show = function show(relatedTarget) {\n      var _this = this;\n\n      if (this._isShown || this._isTransitioning) {\n        return;\n      }\n\n      var showEvent = $__default[\"default\"].Event(EVENT_SHOW$2, {\n        relatedTarget: relatedTarget\n      });\n      $__default[\"default\"](this._element).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._isShown = true;\n\n      if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n        this._isTransitioning = true;\n      }\n\n      this._checkScrollbar();\n\n      this._setScrollbar();\n\n      this._adjustDialog();\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function (event) {\n        return _this.hide(event);\n      });\n      $__default[\"default\"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {\n        $__default[\"default\"](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {\n          if ($__default[\"default\"](event.target).is(_this._element)) {\n            _this._ignoreBackdropClick = true;\n          }\n        });\n      });\n\n      this._showBackdrop(function () {\n        return _this._showElement(relatedTarget);\n      });\n    };\n\n    _proto.hide = function hide(event) {\n      var _this2 = this;\n\n      if (event) {\n        event.preventDefault();\n      }\n\n      if (!this._isShown || this._isTransitioning) {\n        return;\n      }\n\n      var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$2);\n      $__default[\"default\"](this._element).trigger(hideEvent);\n\n      if (!this._isShown || hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._isShown = false;\n      var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4);\n\n      if (transition) {\n        this._isTransitioning = true;\n      }\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      $__default[\"default\"](document).off(EVENT_FOCUSIN);\n      $__default[\"default\"](this._element).removeClass(CLASS_NAME_SHOW$4);\n      $__default[\"default\"](this._element).off(EVENT_CLICK_DISMISS$1);\n      $__default[\"default\"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);\n\n      if (transition) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $__default[\"default\"](this._element).one(Util.TRANSITION_END, function (event) {\n          return _this2._hideModal(event);\n        }).emulateTransitionEnd(transitionDuration);\n      } else {\n        this._hideModal();\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      [window, this._element, this._dialog].forEach(function (htmlElement) {\n        return $__default[\"default\"](htmlElement).off(EVENT_KEY$5);\n      });\n      /**\n       * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n       * Do not move `document` in `htmlElements` array\n       * It will remove `EVENT_CLICK_DATA_API` event that should remain\n       */\n\n      $__default[\"default\"](document).off(EVENT_FOCUSIN);\n      $__default[\"default\"].removeData(this._element, DATA_KEY$5);\n      this._config = null;\n      this._element = null;\n      this._dialog = null;\n      this._backdrop = null;\n      this._isShown = null;\n      this._isBodyOverflowing = null;\n      this._ignoreBackdropClick = null;\n      this._isTransitioning = null;\n      this._scrollbarWidth = null;\n    };\n\n    _proto.handleUpdate = function handleUpdate() {\n      this._adjustDialog();\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$4, config);\n      Util.typeCheckConfig(NAME$5, config, DefaultType$4);\n      return config;\n    };\n\n    _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n      var _this3 = this;\n\n      var hideEventPrevented = $__default[\"default\"].Event(EVENT_HIDE_PREVENTED);\n      $__default[\"default\"](this._element).trigger(hideEventPrevented);\n\n      if (hideEventPrevented.isDefaultPrevented()) {\n        return;\n      }\n\n      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n      if (!isModalOverflowing) {\n        this._element.style.overflowY = 'hidden';\n      }\n\n      this._element.classList.add(CLASS_NAME_STATIC);\n\n      var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n      $__default[\"default\"](this._element).off(Util.TRANSITION_END);\n      $__default[\"default\"](this._element).one(Util.TRANSITION_END, function () {\n        _this3._element.classList.remove(CLASS_NAME_STATIC);\n\n        if (!isModalOverflowing) {\n          $__default[\"default\"](_this3._element).one(Util.TRANSITION_END, function () {\n            _this3._element.style.overflowY = '';\n          }).emulateTransitionEnd(_this3._element, modalTransitionDuration);\n        }\n      }).emulateTransitionEnd(modalTransitionDuration);\n\n      this._element.focus();\n    };\n\n    _proto._showElement = function _showElement(relatedTarget) {\n      var _this4 = this;\n\n      var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4);\n      var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;\n\n      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n        // Don't move modal's DOM position\n        document.body.appendChild(this._element);\n      }\n\n      this._element.style.display = 'block';\n\n      this._element.removeAttribute('aria-hidden');\n\n      this._element.setAttribute('aria-modal', true);\n\n      this._element.setAttribute('role', 'dialog');\n\n      if ($__default[\"default\"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n        modalBody.scrollTop = 0;\n      } else {\n        this._element.scrollTop = 0;\n      }\n\n      if (transition) {\n        Util.reflow(this._element);\n      }\n\n      $__default[\"default\"](this._element).addClass(CLASS_NAME_SHOW$4);\n\n      if (this._config.focus) {\n        this._enforceFocus();\n      }\n\n      var shownEvent = $__default[\"default\"].Event(EVENT_SHOWN$2, {\n        relatedTarget: relatedTarget\n      });\n\n      var transitionComplete = function transitionComplete() {\n        if (_this4._config.focus) {\n          _this4._element.focus();\n        }\n\n        _this4._isTransitioning = false;\n        $__default[\"default\"](_this4._element).trigger(shownEvent);\n      };\n\n      if (transition) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n        $__default[\"default\"](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n      } else {\n        transitionComplete();\n      }\n    };\n\n    _proto._enforceFocus = function _enforceFocus() {\n      var _this5 = this;\n\n      $__default[\"default\"](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop\n      .on(EVENT_FOCUSIN, function (event) {\n        if (document !== event.target && _this5._element !== event.target && $__default[\"default\"](_this5._element).has(event.target).length === 0) {\n          _this5._element.focus();\n        }\n      });\n    };\n\n    _proto._setEscapeEvent = function _setEscapeEvent() {\n      var _this6 = this;\n\n      if (this._isShown) {\n        $__default[\"default\"](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {\n          if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n            event.preventDefault();\n\n            _this6.hide();\n          } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n            _this6._triggerBackdropTransition();\n          }\n        });\n      } else if (!this._isShown) {\n        $__default[\"default\"](this._element).off(EVENT_KEYDOWN_DISMISS);\n      }\n    };\n\n    _proto._setResizeEvent = function _setResizeEvent() {\n      var _this7 = this;\n\n      if (this._isShown) {\n        $__default[\"default\"](window).on(EVENT_RESIZE, function (event) {\n          return _this7.handleUpdate(event);\n        });\n      } else {\n        $__default[\"default\"](window).off(EVENT_RESIZE);\n      }\n    };\n\n    _proto._hideModal = function _hideModal() {\n      var _this8 = this;\n\n      this._element.style.display = 'none';\n\n      this._element.setAttribute('aria-hidden', true);\n\n      this._element.removeAttribute('aria-modal');\n\n      this._element.removeAttribute('role');\n\n      this._isTransitioning = false;\n\n      this._showBackdrop(function () {\n        $__default[\"default\"](document.body).removeClass(CLASS_NAME_OPEN);\n\n        _this8._resetAdjustments();\n\n        _this8._resetScrollbar();\n\n        $__default[\"default\"](_this8._element).trigger(EVENT_HIDDEN$2);\n      });\n    };\n\n    _proto._removeBackdrop = function _removeBackdrop() {\n      if (this._backdrop) {\n        $__default[\"default\"](this._backdrop).remove();\n        this._backdrop = null;\n      }\n    };\n\n    _proto._showBackdrop = function _showBackdrop(callback) {\n      var _this9 = this;\n\n      var animate = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4) ? CLASS_NAME_FADE$4 : '';\n\n      if (this._isShown && this._config.backdrop) {\n        this._backdrop = document.createElement('div');\n        this._backdrop.className = CLASS_NAME_BACKDROP;\n\n        if (animate) {\n          this._backdrop.classList.add(animate);\n        }\n\n        $__default[\"default\"](this._backdrop).appendTo(document.body);\n        $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS$1, function (event) {\n          if (_this9._ignoreBackdropClick) {\n            _this9._ignoreBackdropClick = false;\n            return;\n          }\n\n          if (event.target !== event.currentTarget) {\n            return;\n          }\n\n          if (_this9._config.backdrop === 'static') {\n            _this9._triggerBackdropTransition();\n          } else {\n            _this9.hide();\n          }\n        });\n\n        if (animate) {\n          Util.reflow(this._backdrop);\n        }\n\n        $__default[\"default\"](this._backdrop).addClass(CLASS_NAME_SHOW$4);\n\n        if (!callback) {\n          return;\n        }\n\n        if (!animate) {\n          callback();\n          return;\n        }\n\n        var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n        $__default[\"default\"](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n      } else if (!this._isShown && this._backdrop) {\n        $__default[\"default\"](this._backdrop).removeClass(CLASS_NAME_SHOW$4);\n\n        var callbackRemove = function callbackRemove() {\n          _this9._removeBackdrop();\n\n          if (callback) {\n            callback();\n          }\n        };\n\n        if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n          var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n          $__default[\"default\"](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n        } else {\n          callbackRemove();\n        }\n      } else if (callback) {\n        callback();\n      }\n    } // ----------------------------------------------------------------------\n    // the following methods are used to handle overflowing modals\n    // todo (fat): these should probably be refactored out of modal.js\n    // ----------------------------------------------------------------------\n    ;\n\n    _proto._adjustDialog = function _adjustDialog() {\n      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n      if (!this._isBodyOverflowing && isModalOverflowing) {\n        this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n      }\n\n      if (this._isBodyOverflowing && !isModalOverflowing) {\n        this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n      }\n    };\n\n    _proto._resetAdjustments = function _resetAdjustments() {\n      this._element.style.paddingLeft = '';\n      this._element.style.paddingRight = '';\n    };\n\n    _proto._checkScrollbar = function _checkScrollbar() {\n      var rect = document.body.getBoundingClientRect();\n      this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;\n      this._scrollbarWidth = this._getScrollbarWidth();\n    };\n\n    _proto._setScrollbar = function _setScrollbar() {\n      var _this10 = this;\n\n      if (this._isBodyOverflowing) {\n        // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n        //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n        var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n        var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding\n\n        $__default[\"default\"](fixedContent).each(function (index, element) {\n          var actualPadding = element.style.paddingRight;\n          var calculatedPadding = $__default[\"default\"](element).css('padding-right');\n          $__default[\"default\"](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\");\n        }); // Adjust sticky content margin\n\n        $__default[\"default\"](stickyContent).each(function (index, element) {\n          var actualMargin = element.style.marginRight;\n          var calculatedMargin = $__default[\"default\"](element).css('margin-right');\n          $__default[\"default\"](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + \"px\");\n        }); // Adjust body padding\n\n        var actualPadding = document.body.style.paddingRight;\n        var calculatedPadding = $__default[\"default\"](document.body).css('padding-right');\n        $__default[\"default\"](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n      }\n\n      $__default[\"default\"](document.body).addClass(CLASS_NAME_OPEN);\n    };\n\n    _proto._resetScrollbar = function _resetScrollbar() {\n      // Restore fixed content padding\n      var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n      $__default[\"default\"](fixedContent).each(function (index, element) {\n        var padding = $__default[\"default\"](element).data('padding-right');\n        $__default[\"default\"](element).removeData('padding-right');\n        element.style.paddingRight = padding ? padding : '';\n      }); // Restore sticky content\n\n      var elements = [].slice.call(document.querySelectorAll(\"\" + SELECTOR_STICKY_CONTENT));\n      $__default[\"default\"](elements).each(function (index, element) {\n        var margin = $__default[\"default\"](element).data('margin-right');\n\n        if (typeof margin !== 'undefined') {\n          $__default[\"default\"](element).css('margin-right', margin).removeData('margin-right');\n        }\n      }); // Restore body padding\n\n      var padding = $__default[\"default\"](document.body).data('padding-right');\n      $__default[\"default\"](document.body).removeData('padding-right');\n      document.body.style.paddingRight = padding ? padding : '';\n    };\n\n    _proto._getScrollbarWidth = function _getScrollbarWidth() {\n      // thx d.walsh\n      var scrollDiv = document.createElement('div');\n      scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;\n      document.body.appendChild(scrollDiv);\n      var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n      return scrollbarWidth;\n    } // Static\n    ;\n\n    Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$5);\n\n        var _config = _extends({}, Default$4, $__default[\"default\"](this).data(), _typeof(config) === 'object' && config ? config : {});\n\n        if (!data) {\n          data = new Modal(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$5, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config](relatedTarget);\n        } else if (_config.show) {\n          data.show(relatedTarget);\n        }\n      });\n    };\n\n    _createClass(Modal, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$5;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$4;\n      }\n    }]);\n\n    return Modal;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n    var _this11 = this;\n\n    var target;\n    var selector = Util.getSelectorFromElement(this);\n\n    if (selector) {\n      target = document.querySelector(selector);\n    }\n\n    var config = $__default[\"default\"](target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $__default[\"default\"](target).data(), $__default[\"default\"](this).data());\n\n    if (this.tagName === 'A' || this.tagName === 'AREA') {\n      event.preventDefault();\n    }\n\n    var $target = $__default[\"default\"](target).one(EVENT_SHOW$2, function (showEvent) {\n      if (showEvent.isDefaultPrevented()) {\n        // Only register focus restorer if modal will actually get shown\n        return;\n      }\n\n      $target.one(EVENT_HIDDEN$2, function () {\n        if ($__default[\"default\"](_this11).is(':visible')) {\n          _this11.focus();\n        }\n      });\n    });\n\n    Modal._jQueryInterface.call($__default[\"default\"](target), config, this);\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$5] = Modal._jQueryInterface;\n  $__default[\"default\"].fn[NAME$5].Constructor = Modal;\n\n  $__default[\"default\"].fn[NAME$5].noConflict = function () {\n    $__default[\"default\"].fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n    return Modal._jQueryInterface;\n  };\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.6.1): tools/sanitizer.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n\n  var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n  var DefaultWhitelist = {\n    // Global attributes allowed on any supplied element below.\n    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n    a: ['target', 'href', 'title', 'rel'],\n    area: [],\n    b: [],\n    br: [],\n    col: [],\n    code: [],\n    div: [],\n    em: [],\n    hr: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    i: [],\n    img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n    li: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    small: [],\n    span: [],\n    sub: [],\n    sup: [],\n    strong: [],\n    u: [],\n    ul: []\n  };\n  /**\n   * A pattern that recognizes a commonly useful subset of URLs that are safe.\n   *\n   * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n   */\n\n  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n  /**\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\n   *\n   * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n   */\n\n  var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\n  function allowedAttribute(attr, allowedAttributeList) {\n    var attrName = attr.nodeName.toLowerCase();\n\n    if (allowedAttributeList.indexOf(attrName) !== -1) {\n      if (uriAttrs.indexOf(attrName) !== -1) {\n        return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue));\n      }\n\n      return true;\n    }\n\n    var regExp = allowedAttributeList.filter(function (attrRegex) {\n      return attrRegex instanceof RegExp;\n    }); // Check if a regular expression validates the attribute.\n\n    for (var i = 0, len = regExp.length; i < len; i++) {\n      if (regExp[i].test(attrName)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n    if (unsafeHtml.length === 0) {\n      return unsafeHtml;\n    }\n\n    if (sanitizeFn && typeof sanitizeFn === 'function') {\n      return sanitizeFn(unsafeHtml);\n    }\n\n    var domParser = new window.DOMParser();\n    var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n    var whitelistKeys = Object.keys(whiteList);\n    var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n\n    var _loop = function _loop(i, len) {\n      var el = elements[i];\n      var elName = el.nodeName.toLowerCase();\n\n      if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n        el.parentNode.removeChild(el);\n        return \"continue\";\n      }\n\n      var attributeList = [].slice.call(el.attributes); // eslint-disable-next-line unicorn/prefer-spread\n\n      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n      attributeList.forEach(function (attr) {\n        if (!allowedAttribute(attr, whitelistedAttributes)) {\n          el.removeAttribute(attr.nodeName);\n        }\n      });\n    };\n\n    for (var i = 0, len = elements.length; i < len; i++) {\n      var _ret = _loop(i);\n\n      if (_ret === \"continue\") continue;\n    }\n\n    return createdDocument.body.innerHTML;\n  }\n  /**\n   * Constants\n   */\n\n\n  var NAME$4 = 'tooltip';\n  var VERSION$4 = '4.6.1';\n  var DATA_KEY$4 = 'bs.tooltip';\n  var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n  var JQUERY_NO_CONFLICT$4 = $__default[\"default\"].fn[NAME$4];\n  var CLASS_PREFIX$1 = 'bs-tooltip';\n  var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n  var CLASS_NAME_FADE$3 = 'fade';\n  var CLASS_NAME_SHOW$3 = 'show';\n  var HOVER_STATE_SHOW = 'show';\n  var HOVER_STATE_OUT = 'out';\n  var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n  var SELECTOR_ARROW = '.arrow';\n  var TRIGGER_HOVER = 'hover';\n  var TRIGGER_FOCUS = 'focus';\n  var TRIGGER_CLICK = 'click';\n  var TRIGGER_MANUAL = 'manual';\n  var AttachmentMap = {\n    AUTO: 'auto',\n    TOP: 'top',\n    RIGHT: 'right',\n    BOTTOM: 'bottom',\n    LEFT: 'left'\n  };\n  var Default$3 = {\n    animation: true,\n    template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    selector: false,\n    placement: 'top',\n    offset: 0,\n    container: false,\n    fallbackPlacement: 'flip',\n    boundary: 'scrollParent',\n    customClass: '',\n    sanitize: true,\n    sanitizeFn: null,\n    whiteList: DefaultWhitelist,\n    popperConfig: null\n  };\n  var DefaultType$3 = {\n    animation: 'boolean',\n    template: 'string',\n    title: '(string|element|function)',\n    trigger: 'string',\n    delay: '(number|object)',\n    html: 'boolean',\n    selector: '(string|boolean)',\n    placement: '(string|function)',\n    offset: '(number|string|function)',\n    container: '(string|element|boolean)',\n    fallbackPlacement: '(string|array)',\n    boundary: '(string|element)',\n    customClass: '(string|function)',\n    sanitize: 'boolean',\n    sanitizeFn: '(null|function)',\n    whiteList: 'object',\n    popperConfig: '(null|object)'\n  };\n  var Event$1 = {\n    HIDE: \"hide\" + EVENT_KEY$4,\n    HIDDEN: \"hidden\" + EVENT_KEY$4,\n    SHOW: \"show\" + EVENT_KEY$4,\n    SHOWN: \"shown\" + EVENT_KEY$4,\n    INSERTED: \"inserted\" + EVENT_KEY$4,\n    CLICK: \"click\" + EVENT_KEY$4,\n    FOCUSIN: \"focusin\" + EVENT_KEY$4,\n    FOCUSOUT: \"focusout\" + EVENT_KEY$4,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$4,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$4\n  };\n  /**\n   * Class definition\n   */\n\n  var Tooltip = /*#__PURE__*/function () {\n    function Tooltip(element, config) {\n      if (typeof Popper__default[\"default\"] === 'undefined') {\n        throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n      } // Private\n\n\n      this._isEnabled = true;\n      this._timeout = 0;\n      this._hoverState = '';\n      this._activeTrigger = {};\n      this._popper = null; // Protected\n\n      this.element = element;\n      this.config = this._getConfig(config);\n      this.tip = null;\n\n      this._setListeners();\n    } // Getters\n\n\n    var _proto = Tooltip.prototype; // Public\n\n    _proto.enable = function enable() {\n      this._isEnabled = true;\n    };\n\n    _proto.disable = function disable() {\n      this._isEnabled = false;\n    };\n\n    _proto.toggleEnabled = function toggleEnabled() {\n      this._isEnabled = !this._isEnabled;\n    };\n\n    _proto.toggle = function toggle(event) {\n      if (!this._isEnabled) {\n        return;\n      }\n\n      if (event) {\n        var dataKey = this.constructor.DATA_KEY;\n        var context = $__default[\"default\"](event.currentTarget).data(dataKey);\n\n        if (!context) {\n          context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n          $__default[\"default\"](event.currentTarget).data(dataKey, context);\n        }\n\n        context._activeTrigger.click = !context._activeTrigger.click;\n\n        if (context._isWithActiveTrigger()) {\n          context._enter(null, context);\n        } else {\n          context._leave(null, context);\n        }\n      } else {\n        if ($__default[\"default\"](this.getTipElement()).hasClass(CLASS_NAME_SHOW$3)) {\n          this._leave(null, this);\n\n          return;\n        }\n\n        this._enter(null, this);\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      clearTimeout(this._timeout);\n      $__default[\"default\"].removeData(this.element, this.constructor.DATA_KEY);\n      $__default[\"default\"](this.element).off(this.constructor.EVENT_KEY);\n      $__default[\"default\"](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);\n\n      if (this.tip) {\n        $__default[\"default\"](this.tip).remove();\n      }\n\n      this._isEnabled = null;\n      this._timeout = null;\n      this._hoverState = null;\n      this._activeTrigger = null;\n\n      if (this._popper) {\n        this._popper.destroy();\n      }\n\n      this._popper = null;\n      this.element = null;\n      this.config = null;\n      this.tip = null;\n    };\n\n    _proto.show = function show() {\n      var _this = this;\n\n      if ($__default[\"default\"](this.element).css('display') === 'none') {\n        throw new Error('Please use show on visible elements');\n      }\n\n      var showEvent = $__default[\"default\"].Event(this.constructor.Event.SHOW);\n\n      if (this.isWithContent() && this._isEnabled) {\n        $__default[\"default\"](this.element).trigger(showEvent);\n        var shadowRoot = Util.findShadowRoot(this.element);\n        var isInTheDom = $__default[\"default\"].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n        if (showEvent.isDefaultPrevented() || !isInTheDom) {\n          return;\n        }\n\n        var tip = this.getTipElement();\n        var tipId = Util.getUID(this.constructor.NAME);\n        tip.setAttribute('id', tipId);\n        this.element.setAttribute('aria-describedby', tipId);\n        this.setContent();\n\n        if (this.config.animation) {\n          $__default[\"default\"](tip).addClass(CLASS_NAME_FADE$3);\n        }\n\n        var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n        var attachment = this._getAttachment(placement);\n\n        this.addAttachmentClass(attachment);\n\n        var container = this._getContainer();\n\n        $__default[\"default\"](tip).data(this.constructor.DATA_KEY, this);\n\n        if (!$__default[\"default\"].contains(this.element.ownerDocument.documentElement, this.tip)) {\n          $__default[\"default\"](tip).appendTo(container);\n        }\n\n        $__default[\"default\"](this.element).trigger(this.constructor.Event.INSERTED);\n        this._popper = new Popper__default[\"default\"](this.element, tip, this._getPopperConfig(attachment));\n        $__default[\"default\"](tip).addClass(CLASS_NAME_SHOW$3);\n        $__default[\"default\"](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra\n        // empty mouseover listeners to the body's immediate children;\n        // only needed because of broken event delegation on iOS\n        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n        if ('ontouchstart' in document.documentElement) {\n          $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n        }\n\n        var complete = function complete() {\n          if (_this.config.animation) {\n            _this._fixTransition();\n          }\n\n          var prevHoverState = _this._hoverState;\n          _this._hoverState = null;\n          $__default[\"default\"](_this.element).trigger(_this.constructor.Event.SHOWN);\n\n          if (prevHoverState === HOVER_STATE_OUT) {\n            _this._leave(null, _this);\n          }\n        };\n\n        if ($__default[\"default\"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n          var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n          $__default[\"default\"](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n        } else {\n          complete();\n        }\n      }\n    };\n\n    _proto.hide = function hide(callback) {\n      var _this2 = this;\n\n      var tip = this.getTipElement();\n      var hideEvent = $__default[\"default\"].Event(this.constructor.Event.HIDE);\n\n      var complete = function complete() {\n        if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n          tip.parentNode.removeChild(tip);\n        }\n\n        _this2._cleanTipClass();\n\n        _this2.element.removeAttribute('aria-describedby');\n\n        $__default[\"default\"](_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n        if (_this2._popper !== null) {\n          _this2._popper.destroy();\n        }\n\n        if (callback) {\n          callback();\n        }\n      };\n\n      $__default[\"default\"](this.element).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      $__default[\"default\"](tip).removeClass(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra\n      // empty mouseover listeners we added for iOS support\n\n      if ('ontouchstart' in document.documentElement) {\n        $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n      }\n\n      this._activeTrigger[TRIGGER_CLICK] = false;\n      this._activeTrigger[TRIGGER_FOCUS] = false;\n      this._activeTrigger[TRIGGER_HOVER] = false;\n\n      if ($__default[\"default\"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n        var transitionDuration = Util.getTransitionDurationFromElement(tip);\n        $__default[\"default\"](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n\n      this._hoverState = '';\n    };\n\n    _proto.update = function update() {\n      if (this._popper !== null) {\n        this._popper.scheduleUpdate();\n      }\n    } // Protected\n    ;\n\n    _proto.isWithContent = function isWithContent() {\n      return Boolean(this.getTitle());\n    };\n\n    _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n      $__default[\"default\"](this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n    };\n\n    _proto.getTipElement = function getTipElement() {\n      this.tip = this.tip || $__default[\"default\"](this.config.template)[0];\n      return this.tip;\n    };\n\n    _proto.setContent = function setContent() {\n      var tip = this.getTipElement();\n      this.setElementContent($__default[\"default\"](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());\n      $__default[\"default\"](tip).removeClass(CLASS_NAME_FADE$3 + \" \" + CLASS_NAME_SHOW$3);\n    };\n\n    _proto.setElementContent = function setElementContent($element, content) {\n      if (_typeof(content) === 'object' && (content.nodeType || content.jquery)) {\n        // Content is a DOM node or a jQuery\n        if (this.config.html) {\n          if (!$__default[\"default\"](content).parent().is($element)) {\n            $element.empty().append(content);\n          }\n        } else {\n          $element.text($__default[\"default\"](content).text());\n        }\n\n        return;\n      }\n\n      if (this.config.html) {\n        if (this.config.sanitize) {\n          content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n        }\n\n        $element.html(content);\n      } else {\n        $element.text(content);\n      }\n    };\n\n    _proto.getTitle = function getTitle() {\n      var title = this.element.getAttribute('data-original-title');\n\n      if (!title) {\n        title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n      }\n\n      return title;\n    } // Private\n    ;\n\n    _proto._getPopperConfig = function _getPopperConfig(attachment) {\n      var _this3 = this;\n\n      var defaultBsConfig = {\n        placement: attachment,\n        modifiers: {\n          offset: this._getOffset(),\n          flip: {\n            behavior: this.config.fallbackPlacement\n          },\n          arrow: {\n            element: SELECTOR_ARROW\n          },\n          preventOverflow: {\n            boundariesElement: this.config.boundary\n          }\n        },\n        onCreate: function onCreate(data) {\n          if (data.originalPlacement !== data.placement) {\n            _this3._handlePopperPlacementChange(data);\n          }\n        },\n        onUpdate: function onUpdate(data) {\n          return _this3._handlePopperPlacementChange(data);\n        }\n      };\n      return _extends({}, defaultBsConfig, this.config.popperConfig);\n    };\n\n    _proto._getOffset = function _getOffset() {\n      var _this4 = this;\n\n      var offset = {};\n\n      if (typeof this.config.offset === 'function') {\n        offset.fn = function (data) {\n          data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element));\n          return data;\n        };\n      } else {\n        offset.offset = this.config.offset;\n      }\n\n      return offset;\n    };\n\n    _proto._getContainer = function _getContainer() {\n      if (this.config.container === false) {\n        return document.body;\n      }\n\n      if (Util.isElement(this.config.container)) {\n        return $__default[\"default\"](this.config.container);\n      }\n\n      return $__default[\"default\"](document).find(this.config.container);\n    };\n\n    _proto._getAttachment = function _getAttachment(placement) {\n      return AttachmentMap[placement.toUpperCase()];\n    };\n\n    _proto._setListeners = function _setListeners() {\n      var _this5 = this;\n\n      var triggers = this.config.trigger.split(' ');\n      triggers.forEach(function (trigger) {\n        if (trigger === 'click') {\n          $__default[\"default\"](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n            return _this5.toggle(event);\n          });\n        } else if (trigger !== TRIGGER_MANUAL) {\n          var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n          var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n          $__default[\"default\"](_this5.element).on(eventIn, _this5.config.selector, function (event) {\n            return _this5._enter(event);\n          }).on(eventOut, _this5.config.selector, function (event) {\n            return _this5._leave(event);\n          });\n        }\n      });\n\n      this._hideModalHandler = function () {\n        if (_this5.element) {\n          _this5.hide();\n        }\n      };\n\n      $__default[\"default\"](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);\n\n      if (this.config.selector) {\n        this.config = _extends({}, this.config, {\n          trigger: 'manual',\n          selector: ''\n        });\n      } else {\n        this._fixTitle();\n      }\n    };\n\n    _proto._fixTitle = function _fixTitle() {\n      var titleType = _typeof(this.element.getAttribute('data-original-title'));\n\n      if (this.element.getAttribute('title') || titleType !== 'string') {\n        this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n        this.element.setAttribute('title', '');\n      }\n    };\n\n    _proto._enter = function _enter(event, context) {\n      var dataKey = this.constructor.DATA_KEY;\n      context = context || $__default[\"default\"](event.currentTarget).data(dataKey);\n\n      if (!context) {\n        context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n        $__default[\"default\"](event.currentTarget).data(dataKey, context);\n      }\n\n      if (event) {\n        context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n      }\n\n      if ($__default[\"default\"](context.getTipElement()).hasClass(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) {\n        context._hoverState = HOVER_STATE_SHOW;\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HOVER_STATE_SHOW;\n\n      if (!context.config.delay || !context.config.delay.show) {\n        context.show();\n        return;\n      }\n\n      context._timeout = setTimeout(function () {\n        if (context._hoverState === HOVER_STATE_SHOW) {\n          context.show();\n        }\n      }, context.config.delay.show);\n    };\n\n    _proto._leave = function _leave(event, context) {\n      var dataKey = this.constructor.DATA_KEY;\n      context = context || $__default[\"default\"](event.currentTarget).data(dataKey);\n\n      if (!context) {\n        context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n        $__default[\"default\"](event.currentTarget).data(dataKey, context);\n      }\n\n      if (event) {\n        context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;\n      }\n\n      if (context._isWithActiveTrigger()) {\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HOVER_STATE_OUT;\n\n      if (!context.config.delay || !context.config.delay.hide) {\n        context.hide();\n        return;\n      }\n\n      context._timeout = setTimeout(function () {\n        if (context._hoverState === HOVER_STATE_OUT) {\n          context.hide();\n        }\n      }, context.config.delay.hide);\n    };\n\n    _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n      for (var trigger in this._activeTrigger) {\n        if (this._activeTrigger[trigger]) {\n          return true;\n        }\n      }\n\n      return false;\n    };\n\n    _proto._getConfig = function _getConfig(config) {\n      var dataAttributes = $__default[\"default\"](this.element).data();\n      Object.keys(dataAttributes).forEach(function (dataAttr) {\n        if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n          delete dataAttributes[dataAttr];\n        }\n      });\n      config = _extends({}, this.constructor.Default, dataAttributes, _typeof(config) === 'object' && config ? config : {});\n\n      if (typeof config.delay === 'number') {\n        config.delay = {\n          show: config.delay,\n          hide: config.delay\n        };\n      }\n\n      if (typeof config.title === 'number') {\n        config.title = config.title.toString();\n      }\n\n      if (typeof config.content === 'number') {\n        config.content = config.content.toString();\n      }\n\n      Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n\n      if (config.sanitize) {\n        config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n      }\n\n      return config;\n    };\n\n    _proto._getDelegateConfig = function _getDelegateConfig() {\n      var config = {};\n\n      if (this.config) {\n        for (var key in this.config) {\n          if (this.constructor.Default[key] !== this.config[key]) {\n            config[key] = this.config[key];\n          }\n        }\n      }\n\n      return config;\n    };\n\n    _proto._cleanTipClass = function _cleanTipClass() {\n      var $tip = $__default[\"default\"](this.getTipElement());\n      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n\n      if (tabClass !== null && tabClass.length) {\n        $tip.removeClass(tabClass.join(''));\n      }\n    };\n\n    _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n      this.tip = popperData.instance.popper;\n\n      this._cleanTipClass();\n\n      this.addAttachmentClass(this._getAttachment(popperData.placement));\n    };\n\n    _proto._fixTransition = function _fixTransition() {\n      var tip = this.getTipElement();\n      var initConfigAnimation = this.config.animation;\n\n      if (tip.getAttribute('x-placement') !== null) {\n        return;\n      }\n\n      $__default[\"default\"](tip).removeClass(CLASS_NAME_FADE$3);\n      this.config.animation = false;\n      this.hide();\n      this.show();\n      this.config.animation = initConfigAnimation;\n    } // Static\n    ;\n\n    Tooltip._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY$4);\n\n        var _config = _typeof(config) === 'object' && config;\n\n        if (!data && /dispose|hide/.test(config)) {\n          return;\n        }\n\n        if (!data) {\n          data = new Tooltip(this, _config);\n          $element.data(DATA_KEY$4, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Tooltip, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$4;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$3;\n      }\n    }, {\n      key: \"NAME\",\n      get: function get() {\n        return NAME$4;\n      }\n    }, {\n      key: \"DATA_KEY\",\n      get: function get() {\n        return DATA_KEY$4;\n      }\n    }, {\n      key: \"Event\",\n      get: function get() {\n        return Event$1;\n      }\n    }, {\n      key: \"EVENT_KEY\",\n      get: function get() {\n        return EVENT_KEY$4;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$3;\n      }\n    }]);\n\n    return Tooltip;\n  }();\n  /**\n   * jQuery\n   */\n\n\n  $__default[\"default\"].fn[NAME$4] = Tooltip._jQueryInterface;\n  $__default[\"default\"].fn[NAME$4].Constructor = Tooltip;\n\n  $__default[\"default\"].fn[NAME$4].noConflict = function () {\n    $__default[\"default\"].fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n    return Tooltip._jQueryInterface;\n  };\n  /**\n   * Constants\n   */\n\n\n  var NAME$3 = 'popover';\n  var VERSION$3 = '4.6.1';\n  var DATA_KEY$3 = 'bs.popover';\n  var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n  var JQUERY_NO_CONFLICT$3 = $__default[\"default\"].fn[NAME$3];\n  var CLASS_PREFIX = 'bs-popover';\n  var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n  var CLASS_NAME_FADE$2 = 'fade';\n  var CLASS_NAME_SHOW$2 = 'show';\n  var SELECTOR_TITLE = '.popover-header';\n  var SELECTOR_CONTENT = '.popover-body';\n\n  var Default$2 = _extends({}, Tooltip.Default, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div></div>'\n  });\n\n  var DefaultType$2 = _extends({}, Tooltip.DefaultType, {\n    content: '(string|element|function)'\n  });\n\n  var Event = {\n    HIDE: \"hide\" + EVENT_KEY$3,\n    HIDDEN: \"hidden\" + EVENT_KEY$3,\n    SHOW: \"show\" + EVENT_KEY$3,\n    SHOWN: \"shown\" + EVENT_KEY$3,\n    INSERTED: \"inserted\" + EVENT_KEY$3,\n    CLICK: \"click\" + EVENT_KEY$3,\n    FOCUSIN: \"focusin\" + EVENT_KEY$3,\n    FOCUSOUT: \"focusout\" + EVENT_KEY$3,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$3,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$3\n  };\n  /**\n   * Class definition\n   */\n\n  var Popover = /*#__PURE__*/function (_Tooltip) {\n    _inheritsLoose(Popover, _Tooltip);\n\n    function Popover() {\n      return _Tooltip.apply(this, arguments) || this;\n    }\n\n    var _proto = Popover.prototype; // Overrides\n\n    _proto.isWithContent = function isWithContent() {\n      return this.getTitle() || this._getContent();\n    };\n\n    _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n      $__default[\"default\"](this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n    };\n\n    _proto.getTipElement = function getTipElement() {\n      this.tip = this.tip || $__default[\"default\"](this.config.template)[0];\n      return this.tip;\n    };\n\n    _proto.setContent = function setContent() {\n      var $tip = $__default[\"default\"](this.getTipElement()); // We use append for html objects to maintain js events\n\n      this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());\n\n      var content = this._getContent();\n\n      if (typeof content === 'function') {\n        content = content.call(this.element);\n      }\n\n      this.setElementContent($tip.find(SELECTOR_CONTENT), content);\n      $tip.removeClass(CLASS_NAME_FADE$2 + \" \" + CLASS_NAME_SHOW$2);\n    } // Private\n    ;\n\n    _proto._getContent = function _getContent() {\n      return this.element.getAttribute('data-content') || this.config.content;\n    };\n\n    _proto._cleanTipClass = function _cleanTipClass() {\n      var $tip = $__default[\"default\"](this.getTipElement());\n      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n      if (tabClass !== null && tabClass.length > 0) {\n        $tip.removeClass(tabClass.join(''));\n      }\n    } // Static\n    ;\n\n    Popover._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$3);\n\n        var _config = _typeof(config) === 'object' ? config : null;\n\n        if (!data && /dispose|hide/.test(config)) {\n          return;\n        }\n\n        if (!data) {\n          data = new Popover(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$3, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Popover, null, [{\n      key: \"VERSION\",\n      get: // Getters\n      function get() {\n        return VERSION$3;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$2;\n      }\n    }, {\n      key: \"NAME\",\n      get: function get() {\n        return NAME$3;\n      }\n    }, {\n      key: \"DATA_KEY\",\n      get: function get() {\n        return DATA_KEY$3;\n      }\n    }, {\n      key: \"Event\",\n      get: function get() {\n        return Event;\n      }\n    }, {\n      key: \"EVENT_KEY\",\n      get: function get() {\n        return EVENT_KEY$3;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType$2;\n      }\n    }]);\n\n    return Popover;\n  }(Tooltip);\n  /**\n   * jQuery\n   */\n\n\n  $__default[\"default\"].fn[NAME$3] = Popover._jQueryInterface;\n  $__default[\"default\"].fn[NAME$3].Constructor = Popover;\n\n  $__default[\"default\"].fn[NAME$3].noConflict = function () {\n    $__default[\"default\"].fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n    return Popover._jQueryInterface;\n  };\n  /**\n   * Constants\n   */\n\n\n  var NAME$2 = 'scrollspy';\n  var VERSION$2 = '4.6.1';\n  var DATA_KEY$2 = 'bs.scrollspy';\n  var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n  var DATA_API_KEY$1 = '.data-api';\n  var JQUERY_NO_CONFLICT$2 = $__default[\"default\"].fn[NAME$2];\n  var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n  var CLASS_NAME_ACTIVE$1 = 'active';\n  var EVENT_ACTIVATE = \"activate\" + EVENT_KEY$2;\n  var EVENT_SCROLL = \"scroll\" + EVENT_KEY$2;\n  var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY$2 + DATA_API_KEY$1;\n  var METHOD_OFFSET = 'offset';\n  var METHOD_POSITION = 'position';\n  var SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]';\n  var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';\n  var SELECTOR_NAV_LINKS = '.nav-link';\n  var SELECTOR_NAV_ITEMS = '.nav-item';\n  var SELECTOR_LIST_ITEMS = '.list-group-item';\n  var SELECTOR_DROPDOWN$1 = '.dropdown';\n  var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\n  var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\n  var Default$1 = {\n    offset: 10,\n    method: 'auto',\n    target: ''\n  };\n  var DefaultType$1 = {\n    offset: 'number',\n    method: 'string',\n    target: '(string|element)'\n  };\n  /**\n   * Class definition\n   */\n\n  var ScrollSpy = /*#__PURE__*/function () {\n    function ScrollSpy(element, config) {\n      var _this = this;\n\n      this._element = element;\n      this._scrollElement = element.tagName === 'BODY' ? window : element;\n      this._config = this._getConfig(config);\n      this._selector = this._config.target + \" \" + SELECTOR_NAV_LINKS + \",\" + (this._config.target + \" \" + SELECTOR_LIST_ITEMS + \",\") + (this._config.target + \" \" + SELECTOR_DROPDOWN_ITEMS);\n      this._offsets = [];\n      this._targets = [];\n      this._activeTarget = null;\n      this._scrollHeight = 0;\n      $__default[\"default\"](this._scrollElement).on(EVENT_SCROLL, function (event) {\n        return _this._process(event);\n      });\n      this.refresh();\n\n      this._process();\n    } // Getters\n\n\n    var _proto = ScrollSpy.prototype; // Public\n\n    _proto.refresh = function refresh() {\n      var _this2 = this;\n\n      var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n      var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n      var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n      this._offsets = [];\n      this._targets = [];\n      this._scrollHeight = this._getScrollHeight();\n      var targets = [].slice.call(document.querySelectorAll(this._selector));\n      targets.map(function (element) {\n        var target;\n        var targetSelector = Util.getSelectorFromElement(element);\n\n        if (targetSelector) {\n          target = document.querySelector(targetSelector);\n        }\n\n        if (target) {\n          var targetBCR = target.getBoundingClientRect();\n\n          if (targetBCR.width || targetBCR.height) {\n            // TODO (fat): remove sketch reliance on jQuery position/offset\n            return [$__default[\"default\"](target)[offsetMethod]().top + offsetBase, targetSelector];\n          }\n        }\n\n        return null;\n      }).filter(function (item) {\n        return item;\n      }).sort(function (a, b) {\n        return a[0] - b[0];\n      }).forEach(function (item) {\n        _this2._offsets.push(item[0]);\n\n        _this2._targets.push(item[1]);\n      });\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$2);\n      $__default[\"default\"](this._scrollElement).off(EVENT_KEY$2);\n      this._element = null;\n      this._scrollElement = null;\n      this._config = null;\n      this._selector = null;\n      this._offsets = null;\n      this._targets = null;\n      this._activeTarget = null;\n      this._scrollHeight = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default$1, _typeof(config) === 'object' && config ? config : {});\n\n      if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n        var id = $__default[\"default\"](config.target).attr('id');\n\n        if (!id) {\n          id = Util.getUID(NAME$2);\n          $__default[\"default\"](config.target).attr('id', id);\n        }\n\n        config.target = \"#\" + id;\n      }\n\n      Util.typeCheckConfig(NAME$2, config, DefaultType$1);\n      return config;\n    };\n\n    _proto._getScrollTop = function _getScrollTop() {\n      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n    };\n\n    _proto._getScrollHeight = function _getScrollHeight() {\n      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n    };\n\n    _proto._getOffsetHeight = function _getOffsetHeight() {\n      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n    };\n\n    _proto._process = function _process() {\n      var scrollTop = this._getScrollTop() + this._config.offset;\n\n      var scrollHeight = this._getScrollHeight();\n\n      var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n      if (this._scrollHeight !== scrollHeight) {\n        this.refresh();\n      }\n\n      if (scrollTop >= maxScroll) {\n        var target = this._targets[this._targets.length - 1];\n\n        if (this._activeTarget !== target) {\n          this._activate(target);\n        }\n\n        return;\n      }\n\n      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n        this._activeTarget = null;\n\n        this._clear();\n\n        return;\n      }\n\n      for (var i = this._offsets.length; i--;) {\n        var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n        if (isActiveTarget) {\n          this._activate(this._targets[i]);\n        }\n      }\n    };\n\n    _proto._activate = function _activate(target) {\n      this._activeTarget = target;\n\n      this._clear();\n\n      var queries = this._selector.split(',').map(function (selector) {\n        return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n      });\n\n      var $link = $__default[\"default\"]([].slice.call(document.querySelectorAll(queries.join(','))));\n\n      if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n        $link.closest(SELECTOR_DROPDOWN$1).find(SELECTOR_DROPDOWN_TOGGLE$1).addClass(CLASS_NAME_ACTIVE$1);\n        $link.addClass(CLASS_NAME_ACTIVE$1);\n      } else {\n        // Set triggered link as active\n        $link.addClass(CLASS_NAME_ACTIVE$1); // Set triggered links parents as active\n        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n        $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_LINKS + \", \" + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$1); // Handle special case when .nav-link is inside .nav-item\n\n        $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$1);\n      }\n\n      $__default[\"default\"](this._scrollElement).trigger(EVENT_ACTIVATE, {\n        relatedTarget: target\n      });\n    };\n\n    _proto._clear = function _clear() {\n      [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {\n        return node.classList.contains(CLASS_NAME_ACTIVE$1);\n      }).forEach(function (node) {\n        return node.classList.remove(CLASS_NAME_ACTIVE$1);\n      });\n    } // Static\n    ;\n\n    ScrollSpy._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var data = $__default[\"default\"](this).data(DATA_KEY$2);\n\n        var _config = _typeof(config) === 'object' && config;\n\n        if (!data) {\n          data = new ScrollSpy(this, _config);\n          $__default[\"default\"](this).data(DATA_KEY$2, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(ScrollSpy, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$2;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default$1;\n      }\n    }]);\n\n    return ScrollSpy;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](window).on(EVENT_LOAD_DATA_API, function () {\n    var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));\n    var scrollSpysLength = scrollSpys.length;\n\n    for (var i = scrollSpysLength; i--;) {\n      var $spy = $__default[\"default\"](scrollSpys[i]);\n\n      ScrollSpy._jQueryInterface.call($spy, $spy.data());\n    }\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$2] = ScrollSpy._jQueryInterface;\n  $__default[\"default\"].fn[NAME$2].Constructor = ScrollSpy;\n\n  $__default[\"default\"].fn[NAME$2].noConflict = function () {\n    $__default[\"default\"].fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n    return ScrollSpy._jQueryInterface;\n  };\n  /**\n   * Constants\n   */\n\n\n  var NAME$1 = 'tab';\n  var VERSION$1 = '4.6.1';\n  var DATA_KEY$1 = 'bs.tab';\n  var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n  var DATA_API_KEY = '.data-api';\n  var JQUERY_NO_CONFLICT$1 = $__default[\"default\"].fn[NAME$1];\n  var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n  var CLASS_NAME_ACTIVE = 'active';\n  var CLASS_NAME_DISABLED = 'disabled';\n  var CLASS_NAME_FADE$1 = 'fade';\n  var CLASS_NAME_SHOW$1 = 'show';\n  var EVENT_HIDE$1 = \"hide\" + EVENT_KEY$1;\n  var EVENT_HIDDEN$1 = \"hidden\" + EVENT_KEY$1;\n  var EVENT_SHOW$1 = \"show\" + EVENT_KEY$1;\n  var EVENT_SHOWN$1 = \"shown\" + EVENT_KEY$1;\n  var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY$1 + DATA_API_KEY;\n  var SELECTOR_DROPDOWN = '.dropdown';\n  var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n  var SELECTOR_ACTIVE = '.active';\n  var SELECTOR_ACTIVE_UL = '> li > .active';\n  var SELECTOR_DATA_TOGGLE = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]';\n  var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n  var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';\n  /**\n   * Class definition\n   */\n\n  var Tab = /*#__PURE__*/function () {\n    function Tab(element) {\n      this._element = element;\n    } // Getters\n\n\n    var _proto = Tab.prototype; // Public\n\n    _proto.show = function show() {\n      var _this = this;\n\n      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default[\"default\"](this._element).hasClass(CLASS_NAME_ACTIVE) || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED)) {\n        return;\n      }\n\n      var target;\n      var previous;\n      var listElement = $__default[\"default\"](this._element).closest(SELECTOR_NAV_LIST_GROUP)[0];\n      var selector = Util.getSelectorFromElement(this._element);\n\n      if (listElement) {\n        var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;\n        previous = $__default[\"default\"].makeArray($__default[\"default\"](listElement).find(itemSelector));\n        previous = previous[previous.length - 1];\n      }\n\n      var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$1, {\n        relatedTarget: this._element\n      });\n      var showEvent = $__default[\"default\"].Event(EVENT_SHOW$1, {\n        relatedTarget: previous\n      });\n\n      if (previous) {\n        $__default[\"default\"](previous).trigger(hideEvent);\n      }\n\n      $__default[\"default\"](this._element).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      if (selector) {\n        target = document.querySelector(selector);\n      }\n\n      this._activate(this._element, listElement);\n\n      var complete = function complete() {\n        var hiddenEvent = $__default[\"default\"].Event(EVENT_HIDDEN$1, {\n          relatedTarget: _this._element\n        });\n        var shownEvent = $__default[\"default\"].Event(EVENT_SHOWN$1, {\n          relatedTarget: previous\n        });\n        $__default[\"default\"](previous).trigger(hiddenEvent);\n        $__default[\"default\"](_this._element).trigger(shownEvent);\n      };\n\n      if (target) {\n        this._activate(target, target.parentNode, complete);\n      } else {\n        complete();\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      $__default[\"default\"].removeData(this._element, DATA_KEY$1);\n      this._element = null;\n    } // Private\n    ;\n\n    _proto._activate = function _activate(element, container, callback) {\n      var _this2 = this;\n\n      var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $__default[\"default\"](container).find(SELECTOR_ACTIVE_UL) : $__default[\"default\"](container).children(SELECTOR_ACTIVE);\n      var active = activeElements[0];\n      var isTransitioning = callback && active && $__default[\"default\"](active).hasClass(CLASS_NAME_FADE$1);\n\n      var complete = function complete() {\n        return _this2._transitionComplete(element, active, callback);\n      };\n\n      if (active && isTransitioning) {\n        var transitionDuration = Util.getTransitionDurationFromElement(active);\n        $__default[\"default\"](active).removeClass(CLASS_NAME_SHOW$1).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n      if (active) {\n        $__default[\"default\"](active).removeClass(CLASS_NAME_ACTIVE);\n        var dropdownChild = $__default[\"default\"](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];\n\n        if (dropdownChild) {\n          $__default[\"default\"](dropdownChild).removeClass(CLASS_NAME_ACTIVE);\n        }\n\n        if (active.getAttribute('role') === 'tab') {\n          active.setAttribute('aria-selected', false);\n        }\n      }\n\n      $__default[\"default\"](element).addClass(CLASS_NAME_ACTIVE);\n\n      if (element.getAttribute('role') === 'tab') {\n        element.setAttribute('aria-selected', true);\n      }\n\n      Util.reflow(element);\n\n      if (element.classList.contains(CLASS_NAME_FADE$1)) {\n        element.classList.add(CLASS_NAME_SHOW$1);\n      }\n\n      var parent = element.parentNode;\n\n      if (parent && parent.nodeName === 'LI') {\n        parent = parent.parentNode;\n      }\n\n      if (parent && $__default[\"default\"](parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n        var dropdownElement = $__default[\"default\"](element).closest(SELECTOR_DROPDOWN)[0];\n\n        if (dropdownElement) {\n          var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE));\n          $__default[\"default\"](dropdownToggleList).addClass(CLASS_NAME_ACTIVE);\n        }\n\n        element.setAttribute('aria-expanded', true);\n      }\n\n      if (callback) {\n        callback();\n      }\n    } // Static\n    ;\n\n    Tab._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $this = $__default[\"default\"](this);\n        var data = $this.data(DATA_KEY$1);\n\n        if (!data) {\n          data = new Tab(this);\n          $this.data(DATA_KEY$1, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config]();\n        }\n      });\n    };\n\n    _createClass(Tab, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION$1;\n      }\n    }]);\n\n    return Tab;\n  }();\n  /**\n   * Data API implementation\n   */\n\n\n  $__default[\"default\"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n    event.preventDefault();\n\n    Tab._jQueryInterface.call($__default[\"default\"](this), 'show');\n  });\n  /**\n   * jQuery\n   */\n\n  $__default[\"default\"].fn[NAME$1] = Tab._jQueryInterface;\n  $__default[\"default\"].fn[NAME$1].Constructor = Tab;\n\n  $__default[\"default\"].fn[NAME$1].noConflict = function () {\n    $__default[\"default\"].fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n    return Tab._jQueryInterface;\n  };\n  /**\n   * Constants\n   */\n\n\n  var NAME = 'toast';\n  var VERSION = '4.6.1';\n  var DATA_KEY = 'bs.toast';\n  var EVENT_KEY = \".\" + DATA_KEY;\n  var JQUERY_NO_CONFLICT = $__default[\"default\"].fn[NAME];\n  var CLASS_NAME_FADE = 'fade';\n  var CLASS_NAME_HIDE = 'hide';\n  var CLASS_NAME_SHOW = 'show';\n  var CLASS_NAME_SHOWING = 'showing';\n  var EVENT_CLICK_DISMISS = \"click.dismiss\" + EVENT_KEY;\n  var EVENT_HIDE = \"hide\" + EVENT_KEY;\n  var EVENT_HIDDEN = \"hidden\" + EVENT_KEY;\n  var EVENT_SHOW = \"show\" + EVENT_KEY;\n  var EVENT_SHOWN = \"shown\" + EVENT_KEY;\n  var SELECTOR_DATA_DISMISS = '[data-dismiss=\"toast\"]';\n  var Default = {\n    animation: true,\n    autohide: true,\n    delay: 500\n  };\n  var DefaultType = {\n    animation: 'boolean',\n    autohide: 'boolean',\n    delay: 'number'\n  };\n  /**\n   * Class definition\n   */\n\n  var Toast = /*#__PURE__*/function () {\n    function Toast(element, config) {\n      this._element = element;\n      this._config = this._getConfig(config);\n      this._timeout = null;\n\n      this._setListeners();\n    } // Getters\n\n\n    var _proto = Toast.prototype; // Public\n\n    _proto.show = function show() {\n      var _this = this;\n\n      var showEvent = $__default[\"default\"].Event(EVENT_SHOW);\n      $__default[\"default\"](this._element).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._clearTimeout();\n\n      if (this._config.animation) {\n        this._element.classList.add(CLASS_NAME_FADE);\n      }\n\n      var complete = function complete() {\n        _this._element.classList.remove(CLASS_NAME_SHOWING);\n\n        _this._element.classList.add(CLASS_NAME_SHOW);\n\n        $__default[\"default\"](_this._element).trigger(EVENT_SHOWN);\n\n        if (_this._config.autohide) {\n          _this._timeout = setTimeout(function () {\n            _this.hide();\n          }, _this._config.delay);\n        }\n      };\n\n      this._element.classList.remove(CLASS_NAME_HIDE);\n\n      Util.reflow(this._element);\n\n      this._element.classList.add(CLASS_NAME_SHOWING);\n\n      if (this._config.animation) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto.hide = function hide() {\n      if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n        return;\n      }\n\n      var hideEvent = $__default[\"default\"].Event(EVENT_HIDE);\n      $__default[\"default\"](this._element).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      this._close();\n    };\n\n    _proto.dispose = function dispose() {\n      this._clearTimeout();\n\n      if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n        this._element.classList.remove(CLASS_NAME_SHOW);\n      }\n\n      $__default[\"default\"](this._element).off(EVENT_CLICK_DISMISS);\n      $__default[\"default\"].removeData(this._element, DATA_KEY);\n      this._element = null;\n      this._config = null;\n    } // Private\n    ;\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _extends({}, Default, $__default[\"default\"](this._element).data(), _typeof(config) === 'object' && config ? config : {});\n      Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);\n      return config;\n    };\n\n    _proto._setListeners = function _setListeners() {\n      var _this2 = this;\n\n      $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function () {\n        return _this2.hide();\n      });\n    };\n\n    _proto._close = function _close() {\n      var _this3 = this;\n\n      var complete = function complete() {\n        _this3._element.classList.add(CLASS_NAME_HIDE);\n\n        $__default[\"default\"](_this3._element).trigger(EVENT_HIDDEN);\n      };\n\n      this._element.classList.remove(CLASS_NAME_SHOW);\n\n      if (this._config.animation) {\n        var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n        $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n      } else {\n        complete();\n      }\n    };\n\n    _proto._clearTimeout = function _clearTimeout() {\n      clearTimeout(this._timeout);\n      this._timeout = null;\n    } // Static\n    ;\n\n    Toast._jQueryInterface = function _jQueryInterface(config) {\n      return this.each(function () {\n        var $element = $__default[\"default\"](this);\n        var data = $element.data(DATA_KEY);\n\n        var _config = _typeof(config) === 'object' && config;\n\n        if (!data) {\n          data = new Toast(this, _config);\n          $element.data(DATA_KEY, data);\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n          }\n\n          data[config](this);\n        }\n      });\n    };\n\n    _createClass(Toast, null, [{\n      key: \"VERSION\",\n      get: function get() {\n        return VERSION;\n      }\n    }, {\n      key: \"DefaultType\",\n      get: function get() {\n        return DefaultType;\n      }\n    }, {\n      key: \"Default\",\n      get: function get() {\n        return Default;\n      }\n    }]);\n\n    return Toast;\n  }();\n  /**\n   * jQuery\n   */\n\n\n  $__default[\"default\"].fn[NAME] = Toast._jQueryInterface;\n  $__default[\"default\"].fn[NAME].Constructor = Toast;\n\n  $__default[\"default\"].fn[NAME].noConflict = function () {\n    $__default[\"default\"].fn[NAME] = JQUERY_NO_CONFLICT;\n    return Toast._jQueryInterface;\n  };\n\n  exports.Alert = Alert;\n  exports.Button = Button;\n  exports.Carousel = Carousel;\n  exports.Collapse = Collapse;\n  exports.Dropdown = Dropdown;\n  exports.Modal = Modal;\n  exports.Popover = Popover;\n  exports.Scrollspy = ScrollSpy;\n  exports.Tab = Tab;\n  exports.Toast = Toast;\n  exports.Tooltip = Tooltip;\n  exports.Util = Util;\n  Object.defineProperty(exports, '__esModule', {\n    value: true\n  });\n});","function _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e59) { throw _e59; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e60) { didErr = true; err = _e60; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*\nTrix 2.1.12\nCopyright © 2024 37signals, LLC\n */\nvar t = \"2.1.12\";\n\nvar e = \"[data-trix-attachment]\",\n    i = {\n  preview: {\n    presentation: \"gallery\",\n    caption: {\n      name: !0,\n      size: !0\n    }\n  },\n  file: {\n    caption: {\n      size: !0\n    }\n  }\n},\n    n = {\n  default: {\n    tagName: \"div\",\n    parse: !1\n  },\n  quote: {\n    tagName: \"blockquote\",\n    nestable: !0\n  },\n  heading1: {\n    tagName: \"h1\",\n    terminal: !0,\n    breakOnReturn: !0,\n    group: !1\n  },\n  code: {\n    tagName: \"pre\",\n    terminal: !0,\n    htmlAttributes: [\"language\"],\n    text: {\n      plaintext: !0\n    }\n  },\n  bulletList: {\n    tagName: \"ul\",\n    parse: !1\n  },\n  bullet: {\n    tagName: \"li\",\n    listAttribute: \"bulletList\",\n    group: !1,\n    nestable: !0,\n    test: function test(t) {\n      return r(t.parentNode) === n[this.listAttribute].tagName;\n    }\n  },\n  numberList: {\n    tagName: \"ol\",\n    parse: !1\n  },\n  number: {\n    tagName: \"li\",\n    listAttribute: \"numberList\",\n    group: !1,\n    nestable: !0,\n    test: function test(t) {\n      return r(t.parentNode) === n[this.listAttribute].tagName;\n    }\n  },\n  attachmentGallery: {\n    tagName: \"div\",\n    exclusive: !0,\n    terminal: !0,\n    parse: !1,\n    group: !1\n  }\n},\n    r = function r(t) {\n  var e;\n  return null == t || null === (e = t.tagName) || void 0 === e ? void 0 : e.toLowerCase();\n},\n    o = navigator.userAgent.match(/android\\s([0-9]+.*Chrome)/i),\n    s = o && parseInt(o[1]);\n\nvar a = {\n  composesExistingText: /Android.*Chrome/.test(navigator.userAgent),\n  recentAndroid: s && s > 12,\n  samsungAndroid: s && navigator.userAgent.match(/Android.*SM-/),\n  forcesObjectResizing: /Trident.*rv:11/.test(navigator.userAgent),\n  supportsInputEvents: \"undefined\" != typeof InputEvent && [\"data\", \"getTargetRanges\", \"inputType\"].every(function (t) {\n    return t in InputEvent.prototype;\n  })\n},\n    l = {\n  ADD_ATTR: [\"language\"],\n  SAFE_FOR_XML: !1,\n  RETURN_DOM: !0\n},\n    c = {\n  attachFiles: \"Attach Files\",\n  bold: \"Bold\",\n  bullets: \"Bullets\",\n  byte: \"Byte\",\n  bytes: \"Bytes\",\n  captionPlaceholder: \"Add a caption…\",\n  code: \"Code\",\n  heading1: \"Heading\",\n  indent: \"Increase Level\",\n  italic: \"Italic\",\n  link: \"Link\",\n  numbers: \"Numbers\",\n  outdent: \"Decrease Level\",\n  quote: \"Quote\",\n  redo: \"Redo\",\n  remove: \"Remove\",\n  strike: \"Strikethrough\",\n  undo: \"Undo\",\n  unlink: \"Unlink\",\n  url: \"URL\",\n  urlPlaceholder: \"Enter a URL…\",\n  GB: \"GB\",\n  KB: \"KB\",\n  MB: \"MB\",\n  PB: \"PB\",\n  TB: \"TB\"\n};\nvar u = [c.bytes, c.KB, c.MB, c.GB, c.TB, c.PB];\nvar h = {\n  prefix: \"IEC\",\n  precision: 2,\n  formatter: function formatter(t) {\n    switch (t) {\n      case 0:\n        return \"0 \".concat(c.bytes);\n\n      case 1:\n        return \"1 \".concat(c.byte);\n\n      default:\n        var _e2;\n\n        \"SI\" === this.prefix ? _e2 = 1e3 : \"IEC\" === this.prefix && (_e2 = 1024);\n\n        var _i2 = Math.floor(Math.log(t) / Math.log(_e2)),\n            _n2 = (t / Math.pow(_e2, _i2)).toFixed(this.precision).replace(/0*$/, \"\").replace(/\\.$/, \"\");\n\n        return \"\".concat(_n2, \" \").concat(u[_i2]);\n    }\n  }\n};\n\nvar d = \"\\uFEFF\",\n    g = \" \",\n    m = function m(t) {\n  for (var _e3 in t) {\n    var _i3 = t[_e3];\n    this[_e3] = _i3;\n  }\n\n  return this;\n},\n    p = document.documentElement,\n    f = p.matches,\n    b = function b(t) {\n  var _ref = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n      e = _ref.onElement,\n      i = _ref.matchingSelector,\n      n = _ref.withCallback,\n      r = _ref.inPhase,\n      o = _ref.preventDefault,\n      s = _ref.times;\n\n  var a = e || p,\n      l = i,\n      c = \"capturing\" === r,\n      u = function u(t) {\n    null != s && 0 == --s && u.destroy();\n    var e = y(t.target, {\n      matchingSelector: l\n    });\n    null != e && (null == n || n.call(e, t, e), o && t.preventDefault());\n  };\n\n  return u.destroy = function () {\n    return a.removeEventListener(t, u, c);\n  }, a.addEventListener(t, u, c), u;\n},\n    v = function v(t) {\n  var _ref2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n      e = _ref2.onElement,\n      i = _ref2.bubbles,\n      n = _ref2.cancelable,\n      r = _ref2.attributes;\n\n  var o = null != e ? e : p;\n  i = !1 !== i, n = !1 !== n;\n  var s = document.createEvent(\"Events\");\n  return s.initEvent(t, i, n), null != r && m.call(s, r), o.dispatchEvent(s);\n},\n    A = function A(t, e) {\n  if (1 === (null == t ? void 0 : t.nodeType)) return f.call(t, e);\n},\n    y = function y(t) {\n  var _ref3 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n      e = _ref3.matchingSelector,\n      i = _ref3.untilNode;\n\n  for (; t && t.nodeType !== Node.ELEMENT_NODE;) {\n    t = t.parentNode;\n  }\n\n  if (null != t) {\n    if (null == e) return t;\n    if (t.closest && null == i) return t.closest(e);\n\n    for (; t && t !== i;) {\n      if (A(t, e)) return t;\n      t = t.parentNode;\n    }\n  }\n},\n    x = function x(t) {\n  return document.activeElement !== t && C(t, document.activeElement);\n},\n    C = function C(t, e) {\n  if (t && e) for (; e;) {\n    if (e === t) return !0;\n    e = e.parentNode;\n  }\n},\n    E = function E(t) {\n  var e;\n  if (null === (e = t) || void 0 === e || !e.parentNode) return;\n  var i = 0;\n\n  for (t = t.previousSibling; t;) {\n    i++, t = t.previousSibling;\n  }\n\n  return i;\n},\n    S = function S(t) {\n  var e;\n  return null == t || null === (e = t.parentNode) || void 0 === e ? void 0 : e.removeChild(t);\n},\n    R = function R(t) {\n  var _ref4 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n      e = _ref4.onlyNodesOfType,\n      i = _ref4.usingFilter,\n      n = _ref4.expandEntityReferences;\n\n  var r = function () {\n    switch (e) {\n      case \"element\":\n        return NodeFilter.SHOW_ELEMENT;\n\n      case \"text\":\n        return NodeFilter.SHOW_TEXT;\n\n      case \"comment\":\n        return NodeFilter.SHOW_COMMENT;\n\n      default:\n        return NodeFilter.SHOW_ALL;\n    }\n  }();\n\n  return document.createTreeWalker(t, r, null != i ? i : null, !0 === n);\n},\n    k = function k(t) {\n  var e;\n  return null == t || null === (e = t.tagName) || void 0 === e ? void 0 : e.toLowerCase();\n},\n    T = function T(t) {\n  var e,\n      i,\n      n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n  \"object\" == _typeof(t) ? (n = t, t = n.tagName) : n = {\n    attributes: n\n  };\n  var r = document.createElement(t);\n  if (null != n.editable && (null == n.attributes && (n.attributes = {}), n.attributes.contenteditable = n.editable), n.attributes) for (e in n.attributes) {\n    i = n.attributes[e], r.setAttribute(e, i);\n  }\n  if (n.style) for (e in n.style) {\n    i = n.style[e], r.style[e] = i;\n  }\n  if (n.data) for (e in n.data) {\n    i = n.data[e], r.dataset[e] = i;\n  }\n  return n.className && n.className.split(\" \").forEach(function (t) {\n    r.classList.add(t);\n  }), n.textContent && (r.textContent = n.textContent), n.childNodes && [].concat(n.childNodes).forEach(function (t) {\n    r.appendChild(t);\n  }), r;\n};\n\nvar w;\n\nvar L = function L() {\n  if (null != w) return w;\n  w = [];\n\n  for (var _t2 in n) {\n    var _e4 = n[_t2];\n    _e4.tagName && w.push(_e4.tagName);\n  }\n\n  return w;\n},\n    D = function D(t) {\n  return I(null == t ? void 0 : t.firstChild);\n},\n    N = function N(t) {\n  var _ref5 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {\n    strict: !0\n  },\n      e = _ref5.strict;\n\n  return e ? I(t) : I(t) || !I(t.firstChild) && function (t) {\n    return L().includes(k(t)) && !L().includes(k(t.firstChild));\n  }(t);\n},\n    I = function I(t) {\n  return O(t) && \"block\" === (null == t ? void 0 : t.data);\n},\n    O = function O(t) {\n  return (null == t ? void 0 : t.nodeType) === Node.COMMENT_NODE;\n},\n    F = function F(t) {\n  var _ref6 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n      e = _ref6.name;\n\n  if (t) return B(t) ? t.data === d ? !e || t.parentNode.dataset.trixCursorTarget === e : void 0 : F(t.firstChild);\n},\n    P = function P(t) {\n  return A(t, e);\n},\n    M = function M(t) {\n  return B(t) && \"\" === (null == t ? void 0 : t.data);\n},\n    B = function B(t) {\n  return (null == t ? void 0 : t.nodeType) === Node.TEXT_NODE;\n},\n    _ = {\n  level2Enabled: !0,\n  getLevel: function getLevel() {\n    return this.level2Enabled && a.supportsInputEvents ? 2 : 0;\n  },\n  pickFiles: function pickFiles(t) {\n    var e = T(\"input\", {\n      type: \"file\",\n      multiple: !0,\n      hidden: !0,\n      id: this.fileInputId\n    });\n    e.addEventListener(\"change\", function () {\n      t(e.files), S(e);\n    }), S(document.getElementById(this.fileInputId)), document.body.appendChild(e), e.click();\n  }\n};\n\nvar j = {\n  removeBlankTableCells: !1,\n  tableCellSeparator: \" | \",\n  tableRowSeparator: \"\\n\"\n},\n    W = {\n  bold: {\n    tagName: \"strong\",\n    inheritable: !0,\n    parser: function parser(t) {\n      var e = window.getComputedStyle(t);\n      return \"bold\" === e.fontWeight || e.fontWeight >= 600;\n    }\n  },\n  italic: {\n    tagName: \"em\",\n    inheritable: !0,\n    parser: function parser(t) {\n      return \"italic\" === window.getComputedStyle(t).fontStyle;\n    }\n  },\n  href: {\n    groupTagName: \"a\",\n    parser: function parser(t) {\n      var i = \"a:not(\".concat(e, \")\"),\n          n = t.closest(i);\n      if (n) return n.getAttribute(\"href\");\n    }\n  },\n  strike: {\n    tagName: \"del\",\n    inheritable: !0\n  },\n  frozen: {\n    style: {\n      backgroundColor: \"highlight\"\n    }\n  }\n},\n    U = {\n  getDefaultHTML: function getDefaultHTML() {\n    return '<div class=\"trix-button-row\">\\n      <span class=\"trix-button-group trix-button-group--text-tools\" data-trix-button-group=\"text-tools\">\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bold\" data-trix-attribute=\"bold\" data-trix-key=\"b\" title=\"'.concat(c.bold, '\" tabindex=\"-1\">').concat(c.bold, '</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-italic\" data-trix-attribute=\"italic\" data-trix-key=\"i\" title=\"').concat(c.italic, '\" tabindex=\"-1\">').concat(c.italic, '</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-strike\" data-trix-attribute=\"strike\" title=\"').concat(c.strike, '\" tabindex=\"-1\">').concat(c.strike, '</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-link\" data-trix-attribute=\"href\" data-trix-action=\"link\" data-trix-key=\"k\" title=\"').concat(c.link, '\" tabindex=\"-1\">').concat(c.link, '</button>\\n      </span>\\n\\n      <span class=\"trix-button-group trix-button-group--block-tools\" data-trix-button-group=\"block-tools\">\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-heading-1\" data-trix-attribute=\"heading1\" title=\"').concat(c.heading1, '\" tabindex=\"-1\">').concat(c.heading1, '</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-quote\" data-trix-attribute=\"quote\" title=\"').concat(c.quote, '\" tabindex=\"-1\">').concat(c.quote, '</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-code\" data-trix-attribute=\"code\" title=\"').concat(c.code, '\" tabindex=\"-1\">').concat(c.code, '</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bullet-list\" data-trix-attribute=\"bullet\" title=\"').concat(c.bullets, '\" tabindex=\"-1\">').concat(c.bullets, '</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-number-list\" data-trix-attribute=\"number\" title=\"').concat(c.numbers, '\" tabindex=\"-1\">').concat(c.numbers, '</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-decrease-nesting-level\" data-trix-action=\"decreaseNestingLevel\" title=\"').concat(c.outdent, '\" tabindex=\"-1\">').concat(c.outdent, '</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-increase-nesting-level\" data-trix-action=\"increaseNestingLevel\" title=\"').concat(c.indent, '\" tabindex=\"-1\">').concat(c.indent, '</button>\\n      </span>\\n\\n      <span class=\"trix-button-group trix-button-group--file-tools\" data-trix-button-group=\"file-tools\">\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-attach\" data-trix-action=\"attachFiles\" title=\"').concat(c.attachFiles, '\" tabindex=\"-1\">').concat(c.attachFiles, '</button>\\n      </span>\\n\\n      <span class=\"trix-button-group-spacer\"></span>\\n\\n      <span class=\"trix-button-group trix-button-group--history-tools\" data-trix-button-group=\"history-tools\">\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-undo\" data-trix-action=\"undo\" data-trix-key=\"z\" title=\"').concat(c.undo, '\" tabindex=\"-1\">').concat(c.undo, '</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-redo\" data-trix-action=\"redo\" data-trix-key=\"shift+z\" title=\"').concat(c.redo, '\" tabindex=\"-1\">').concat(c.redo, '</button>\\n      </span>\\n    </div>\\n\\n    <div class=\"trix-dialogs\" data-trix-dialogs>\\n      <div class=\"trix-dialog trix-dialog--link\" data-trix-dialog=\"href\" data-trix-dialog-attribute=\"href\">\\n        <div class=\"trix-dialog__link-fields\">\\n          <input type=\"url\" name=\"href\" class=\"trix-input trix-input--dialog\" placeholder=\"').concat(c.urlPlaceholder, '\" aria-label=\"').concat(c.url, '\" data-trix-validate-href required data-trix-input>\\n          <div class=\"trix-button-group\">\\n            <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"').concat(c.link, '\" data-trix-method=\"setAttribute\">\\n            <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"').concat(c.unlink, '\" data-trix-method=\"removeAttribute\">\\n          </div>\\n        </div>\\n      </div>\\n    </div>');\n  }\n};\nvar V = {\n  interval: 5e3\n};\nvar z = Object.freeze({\n  __proto__: null,\n  attachments: i,\n  blockAttributes: n,\n  browser: a,\n  css: {\n    attachment: \"attachment\",\n    attachmentCaption: \"attachment__caption\",\n    attachmentCaptionEditor: \"attachment__caption-editor\",\n    attachmentMetadata: \"attachment__metadata\",\n    attachmentMetadataContainer: \"attachment__metadata-container\",\n    attachmentName: \"attachment__name\",\n    attachmentProgress: \"attachment__progress\",\n    attachmentSize: \"attachment__size\",\n    attachmentToolbar: \"attachment__toolbar\",\n    attachmentGallery: \"attachment-gallery\"\n  },\n  dompurify: l,\n  fileSize: h,\n  input: _,\n  keyNames: {\n    8: \"backspace\",\n    9: \"tab\",\n    13: \"return\",\n    27: \"escape\",\n    37: \"left\",\n    39: \"right\",\n    46: \"delete\",\n    68: \"d\",\n    72: \"h\",\n    79: \"o\"\n  },\n  lang: c,\n  parser: j,\n  textAttributes: W,\n  toolbar: U,\n  undo: V\n});\n\nvar q = /*#__PURE__*/function () {\n  function q() {\n    _classCallCheck(this, q);\n  }\n\n  _createClass(q, null, [{\n    key: \"proxyMethod\",\n    value: function proxyMethod(t) {\n      var _H = H(t),\n          e = _H.name,\n          i = _H.toMethod,\n          n = _H.toProperty,\n          r = _H.optional;\n\n      this.prototype[e] = function () {\n        var t, o;\n        var s, a;\n        i ? o = r ? null === (s = this[i]) || void 0 === s ? void 0 : s.call(this) : this[i]() : n && (o = this[n]);\n        return r ? (t = null === (a = o) || void 0 === a ? void 0 : a[e], t ? J.call(t, o, arguments) : void 0) : (t = o[e], J.call(t, o, arguments));\n      };\n    }\n  }]);\n\n  return q;\n}();\n\nvar H = function H(t) {\n  var e = t.match(K);\n  if (!e) throw new Error(\"can't parse @proxyMethod expression: \".concat(t));\n  var i = {\n    name: e[4]\n  };\n  return null != e[2] ? i.toMethod = e[1] : i.toProperty = e[1], null != e[3] && (i.optional = !0), i;\n},\n    J = Function.prototype.apply,\n    K = new RegExp(\"^(.+?)(\\\\(\\\\))?(\\\\?)?\\\\.(.+?)$\");\n\nvar G, Y, $;\n\nvar X = /*#__PURE__*/function (_q) {\n  _inherits(X, _q);\n\n  var _super = _createSuper(X);\n\n  function X(t, e) {\n    var _this;\n\n    _classCallCheck(this, X);\n\n    _this = _super.apply(this, arguments), _this.ucs2String = t, _this.codepoints = e, _this.length = _this.codepoints.length, _this.ucs2Length = _this.ucs2String.length;\n    return _this;\n  }\n\n  _createClass(X, [{\n    key: \"offsetToUCS2Offset\",\n    value: function offsetToUCS2Offset(t) {\n      return it(this.codepoints.slice(0, Math.max(0, t))).length;\n    }\n  }, {\n    key: \"offsetFromUCS2Offset\",\n    value: function offsetFromUCS2Offset(t) {\n      return et(this.ucs2String.slice(0, Math.max(0, t))).length;\n    }\n  }, {\n    key: \"slice\",\n    value: function slice() {\n      var _this$codepoints;\n\n      return this.constructor.fromCodepoints((_this$codepoints = this.codepoints).slice.apply(_this$codepoints, arguments));\n    }\n  }, {\n    key: \"charAt\",\n    value: function charAt(t) {\n      return this.slice(t, t + 1);\n    }\n  }, {\n    key: \"isEqualTo\",\n    value: function isEqualTo(t) {\n      return this.constructor.box(t).ucs2String === this.ucs2String;\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return this.ucs2String;\n    }\n  }, {\n    key: \"getCacheKey\",\n    value: function getCacheKey() {\n      return this.ucs2String;\n    }\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      return this.ucs2String;\n    }\n  }], [{\n    key: \"box\",\n    value: function box() {\n      var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : \"\";\n      return t instanceof this ? t : this.fromUCS2String(null == t ? void 0 : t.toString());\n    }\n  }, {\n    key: \"fromUCS2String\",\n    value: function fromUCS2String(t) {\n      return new this(t, et(t));\n    }\n  }, {\n    key: \"fromCodepoints\",\n    value: function fromCodepoints(t) {\n      return new this(it(t), t);\n    }\n  }]);\n\n  return X;\n}(q);\n\nvar Z = 1 === (null === (G = Array.from) || void 0 === G ? void 0 : G.call(Array, \"👼\").length),\n    Q = null != (null === (Y = \" \".codePointAt) || void 0 === Y ? void 0 : Y.call(\" \", 0)),\n    tt = \" 👼\" === (null === ($ = String.fromCodePoint) || void 0 === $ ? void 0 : $.call(String, 32, 128124));\nvar et, it;\net = Z && Q ? function (t) {\n  return Array.from(t).map(function (t) {\n    return t.codePointAt(0);\n  });\n} : function (t) {\n  var e = [];\n  var i = 0;\n  var n = t.length;\n\n  for (; i < n;) {\n    var _r2 = t.charCodeAt(i++);\n\n    if (55296 <= _r2 && _r2 <= 56319 && i < n) {\n      var _e5 = t.charCodeAt(i++);\n\n      56320 == (64512 & _e5) ? _r2 = ((1023 & _r2) << 10) + (1023 & _e5) + 65536 : i--;\n    }\n\n    e.push(_r2);\n  }\n\n  return e;\n}, it = tt ? function (t) {\n  return String.fromCodePoint.apply(String, _toConsumableArray(Array.from(t || [])));\n} : function (t) {\n  return function () {\n    var e = [];\n    return Array.from(t).forEach(function (t) {\n      var i = \"\";\n      t > 65535 && (t -= 65536, i += String.fromCharCode(t >>> 10 & 1023 | 55296), t = 56320 | 1023 & t), e.push(i + String.fromCharCode(t));\n    }), e;\n  }().join(\"\");\n};\nvar nt = 0;\n\nvar rt = /*#__PURE__*/function (_q2) {\n  _inherits(rt, _q2);\n\n  var _super2 = _createSuper(rt);\n\n  function rt() {\n    var _this2;\n\n    _classCallCheck(this, rt);\n\n    _this2 = _super2.apply(this, arguments), _this2.id = ++nt;\n    return _this2;\n  }\n\n  _createClass(rt, [{\n    key: \"hasSameConstructorAs\",\n    value: function hasSameConstructorAs(t) {\n      return this.constructor === (null == t ? void 0 : t.constructor);\n    }\n  }, {\n    key: \"isEqualTo\",\n    value: function isEqualTo(t) {\n      return this === t;\n    }\n  }, {\n    key: \"inspect\",\n    value: function inspect() {\n      var t = [],\n          e = this.contentsForInspection() || {};\n\n      for (var _i4 in e) {\n        var _n3 = e[_i4];\n        t.push(\"\".concat(_i4, \"=\").concat(_n3));\n      }\n\n      return \"#<\".concat(this.constructor.name, \":\").concat(this.id).concat(t.length ? \" \".concat(t.join(\", \")) : \"\", \">\");\n    }\n  }, {\n    key: \"contentsForInspection\",\n    value: function contentsForInspection() {}\n  }, {\n    key: \"toJSONString\",\n    value: function toJSONString() {\n      return JSON.stringify(this);\n    }\n  }, {\n    key: \"toUTF16String\",\n    value: function toUTF16String() {\n      return X.box(this);\n    }\n  }, {\n    key: \"getCacheKey\",\n    value: function getCacheKey() {\n      return this.id.toString();\n    }\n  }], [{\n    key: \"fromJSONString\",\n    value: function fromJSONString(t) {\n      return this.fromJSON(JSON.parse(t));\n    }\n  }]);\n\n  return rt;\n}(q);\n\nvar ot = function ot() {\n  var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],\n      e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [];\n  if (t.length !== e.length) return !1;\n\n  for (var _i5 = 0; _i5 < t.length; _i5++) {\n    if (t[_i5] !== e[_i5]) return !1;\n  }\n\n  return !0;\n},\n    st = function st(t) {\n  var e = t.slice(0);\n\n  for (var i = arguments.length, n = new Array(i > 1 ? i - 1 : 0), r = 1; r < i; r++) {\n    n[r - 1] = arguments[r];\n  }\n\n  return e.splice.apply(e, n), e;\n},\n    at = /[\\u05BE\\u05C0\\u05C3\\u05D0-\\u05EA\\u05F0-\\u05F4\\u061B\\u061F\\u0621-\\u063A\\u0640-\\u064A\\u066D\\u0671-\\u06B7\\u06BA-\\u06BE\\u06C0-\\u06CE\\u06D0-\\u06D5\\u06E5\\u06E6\\u200F\\u202B\\u202E\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE72\\uFE74\\uFE76-\\uFEFC]/,\n    lt = function () {\n  var t = T(\"input\", {\n    dir: \"auto\",\n    name: \"x\",\n    dirName: \"x.dir\"\n  }),\n      e = T(\"textarea\", {\n    dir: \"auto\",\n    name: \"y\",\n    dirName: \"y.dir\"\n  }),\n      i = T(\"form\");\n  i.appendChild(t), i.appendChild(e);\n\n  var n = function () {\n    try {\n      return new FormData(i).has(e.dirName);\n    } catch (t) {\n      return !1;\n    }\n  }(),\n      r = function () {\n    try {\n      return t.matches(\":dir(ltr),:dir(rtl)\");\n    } catch (t) {\n      return !1;\n    }\n  }();\n\n  return n ? function (t) {\n    return e.value = t, new FormData(i).get(e.dirName);\n  } : r ? function (e) {\n    return t.value = e, t.matches(\":dir(rtl)\") ? \"rtl\" : \"ltr\";\n  } : function (t) {\n    var e = t.trim().charAt(0);\n    return at.test(e) ? \"rtl\" : \"ltr\";\n  };\n}();\n\nvar ct = null,\n    ut = null,\n    ht = null,\n    dt = null;\n\nvar gt = function gt() {\n  return ct || (ct = bt().concat(pt())), ct;\n},\n    mt = function mt(t) {\n  return n[t];\n},\n    pt = function pt() {\n  return ut || (ut = Object.keys(n)), ut;\n},\n    ft = function ft(t) {\n  return W[t];\n},\n    bt = function bt() {\n  return ht || (ht = Object.keys(W)), ht;\n},\n    vt = function vt(t, e) {\n  At(t).textContent = e.replace(/%t/g, t);\n},\n    At = function At(t) {\n  var e = document.createElement(\"style\");\n  e.setAttribute(\"type\", \"text/css\"), e.setAttribute(\"data-tag-name\", t.toLowerCase());\n  var i = yt();\n  return i && e.setAttribute(\"nonce\", i), document.head.insertBefore(e, document.head.firstChild), e;\n},\n    yt = function yt() {\n  var t = xt(\"trix-csp-nonce\") || xt(\"csp-nonce\");\n\n  if (t) {\n    var _e6 = t.nonce,\n        _i6 = t.content;\n    return \"\" == _e6 ? _i6 : _e6;\n  }\n},\n    xt = function xt(t) {\n  return document.head.querySelector(\"meta[name=\".concat(t, \"]\"));\n},\n    Ct = {\n  \"application/x-trix-feature-detection\": \"test\"\n},\n    Et = function Et(t) {\n  var e = t.getData(\"text/plain\"),\n      i = t.getData(\"text/html\");\n  if (!e || !i) return null == e ? void 0 : e.length;\n  {\n    var _DOMParser$parseFromS = new DOMParser().parseFromString(i, \"text/html\"),\n        _t3 = _DOMParser$parseFromS.body;\n\n    if (_t3.textContent === e) return !_t3.querySelector(\"*\");\n  }\n},\n    St = /Mac|^iP/.test(navigator.platform) ? function (t) {\n  return t.metaKey;\n} : function (t) {\n  return t.ctrlKey;\n};\n\nvar Rt = function Rt(t) {\n  return setTimeout(t, 1);\n},\n    kt = function kt() {\n  var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n  var e = {};\n\n  for (var _i7 in t) {\n    var _n4 = t[_i7];\n    e[_i7] = _n4;\n  }\n\n  return e;\n},\n    Tt = function Tt() {\n  var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},\n      e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n  if (Object.keys(t).length !== Object.keys(e).length) return !1;\n\n  for (var _i8 in t) {\n    if (t[_i8] !== e[_i8]) return !1;\n  }\n\n  return !0;\n},\n    wt = function wt(t) {\n  if (null != t) return Array.isArray(t) || (t = [t, t]), [Nt(t[0]), Nt(null != t[1] ? t[1] : t[0])];\n},\n    Lt = function Lt(t) {\n  if (null == t) return;\n\n  var _wt = wt(t),\n      _wt2 = _slicedToArray(_wt, 2),\n      e = _wt2[0],\n      i = _wt2[1];\n\n  return It(e, i);\n},\n    Dt = function Dt(t, e) {\n  if (null == t || null == e) return;\n\n  var _wt3 = wt(t),\n      _wt4 = _slicedToArray(_wt3, 2),\n      i = _wt4[0],\n      n = _wt4[1],\n      _wt5 = wt(e),\n      _wt6 = _slicedToArray(_wt5, 2),\n      r = _wt6[0],\n      o = _wt6[1];\n\n  return It(i, r) && It(n, o);\n},\n    Nt = function Nt(t) {\n  return \"number\" == typeof t ? t : kt(t);\n},\n    It = function It(t, e) {\n  return \"number\" == typeof t ? t === e : Tt(t, e);\n};\n\nvar Ot = /*#__PURE__*/function (_q3) {\n  _inherits(Ot, _q3);\n\n  var _super3 = _createSuper(Ot);\n\n  function Ot() {\n    var _this3;\n\n    _classCallCheck(this, Ot);\n\n    _this3 = _super3.apply(this, arguments), _this3.update = _this3.update.bind(_assertThisInitialized(_this3)), _this3.selectionManagers = [];\n    return _this3;\n  }\n\n  _createClass(Ot, [{\n    key: \"start\",\n    value: function start() {\n      this.started || (this.started = !0, document.addEventListener(\"selectionchange\", this.update, !0));\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      if (this.started) return this.started = !1, document.removeEventListener(\"selectionchange\", this.update, !0);\n    }\n  }, {\n    key: \"registerSelectionManager\",\n    value: function registerSelectionManager(t) {\n      if (!this.selectionManagers.includes(t)) return this.selectionManagers.push(t), this.start();\n    }\n  }, {\n    key: \"unregisterSelectionManager\",\n    value: function unregisterSelectionManager(t) {\n      if (this.selectionManagers = this.selectionManagers.filter(function (e) {\n        return e !== t;\n      }), 0 === this.selectionManagers.length) return this.stop();\n    }\n  }, {\n    key: \"notifySelectionManagersOfSelectionChange\",\n    value: function notifySelectionManagersOfSelectionChange() {\n      return this.selectionManagers.map(function (t) {\n        return t.selectionDidChange();\n      });\n    }\n  }, {\n    key: \"update\",\n    value: function update() {\n      this.notifySelectionManagersOfSelectionChange();\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      this.update();\n    }\n  }]);\n\n  return Ot;\n}(q);\n\nvar Ft = new Ot(),\n    Pt = function Pt() {\n  var t = window.getSelection();\n  if (t.rangeCount > 0) return t;\n},\n    Mt = function Mt() {\n  var t;\n  var e = null === (t = Pt()) || void 0 === t ? void 0 : t.getRangeAt(0);\n  if (e && !_t(e)) return e;\n},\n    Bt = function Bt(t) {\n  var e = window.getSelection();\n  return e.removeAllRanges(), e.addRange(t), Ft.update();\n},\n    _t = function _t(t) {\n  return jt(t.startContainer) || jt(t.endContainer);\n},\n    jt = function jt(t) {\n  return !Object.getPrototypeOf(t);\n},\n    Wt = function Wt(t) {\n  return t.replace(new RegExp(\"\".concat(d), \"g\"), \"\").replace(new RegExp(\"\".concat(g), \"g\"), \" \");\n},\n    Ut = new RegExp(\"[^\\\\S\".concat(g, \"]\")),\n    Vt = function Vt(t) {\n  return t.replace(new RegExp(\"\".concat(Ut.source), \"g\"), \" \").replace(/\\ {2,}/g, \" \");\n},\n    zt = function zt(t, e) {\n  if (t.isEqualTo(e)) return [\"\", \"\"];\n  var i = qt(t, e),\n      n = i.utf16String.length;\n  var r;\n\n  if (n) {\n    var _o = i.offset,\n        _s2 = t.codepoints.slice(0, _o).concat(t.codepoints.slice(_o + n));\n\n    r = qt(e, X.fromCodepoints(_s2));\n  } else r = qt(e, t);\n\n  return [i.utf16String.toString(), r.utf16String.toString()];\n},\n    qt = function qt(t, e) {\n  var i = 0,\n      n = t.length,\n      r = e.length;\n\n  for (; i < n && t.charAt(i).isEqualTo(e.charAt(i));) {\n    i++;\n  }\n\n  for (; n > i + 1 && t.charAt(n - 1).isEqualTo(e.charAt(r - 1));) {\n    n--, r--;\n  }\n\n  return {\n    utf16String: t.slice(i, n),\n    offset: i\n  };\n};\n\nvar Ht = /*#__PURE__*/function (_rt) {\n  _inherits(Ht, _rt);\n\n  var _super4 = _createSuper(Ht);\n\n  function Ht() {\n    var _this4;\n\n    _classCallCheck(this, Ht);\n\n    var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n    _this4 = _super4.apply(this, arguments), _this4.values = Gt(t);\n    return _this4;\n  }\n\n  _createClass(Ht, [{\n    key: \"add\",\n    value: function add(t, e) {\n      return this.merge(Jt(t, e));\n    }\n  }, {\n    key: \"remove\",\n    value: function remove(t) {\n      return new Ht(Gt(this.values, t));\n    }\n  }, {\n    key: \"get\",\n    value: function get(t) {\n      return this.values[t];\n    }\n  }, {\n    key: \"has\",\n    value: function has(t) {\n      return t in this.values;\n    }\n  }, {\n    key: \"merge\",\n    value: function merge(t) {\n      return new Ht(Kt(this.values, $t(t)));\n    }\n  }, {\n    key: \"slice\",\n    value: function slice(t) {\n      var _this5 = this;\n\n      var e = {};\n      return Array.from(t).forEach(function (t) {\n        _this5.has(t) && (e[t] = _this5.values[t]);\n      }), new Ht(e);\n    }\n  }, {\n    key: \"getKeys\",\n    value: function getKeys() {\n      return Object.keys(this.values);\n    }\n  }, {\n    key: \"getKeysCommonToHash\",\n    value: function getKeysCommonToHash(t) {\n      var _this6 = this;\n\n      return t = Yt(t), this.getKeys().filter(function (e) {\n        return _this6.values[e] === t.values[e];\n      });\n    }\n  }, {\n    key: \"isEqualTo\",\n    value: function isEqualTo(t) {\n      return ot(this.toArray(), Yt(t).toArray());\n    }\n  }, {\n    key: \"isEmpty\",\n    value: function isEmpty() {\n      return 0 === this.getKeys().length;\n    }\n  }, {\n    key: \"toArray\",\n    value: function toArray() {\n      if (!this.array) {\n        var _t4 = [];\n\n        for (var _e7 in this.values) {\n          var _i9 = this.values[_e7];\n\n          _t4.push(_t4.push(_e7, _i9));\n        }\n\n        this.array = _t4.slice(0);\n      }\n\n      return this.array;\n    }\n  }, {\n    key: \"toObject\",\n    value: function toObject() {\n      return Gt(this.values);\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return this.toObject();\n    }\n  }, {\n    key: \"contentsForInspection\",\n    value: function contentsForInspection() {\n      return {\n        values: JSON.stringify(this.values)\n      };\n    }\n  }], [{\n    key: \"fromCommonAttributesOfObjects\",\n    value: function fromCommonAttributesOfObjects() {\n      var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\n      if (!t.length) return new this();\n      var e = Yt(t[0]),\n          i = e.getKeys();\n      return t.slice(1).forEach(function (t) {\n        i = e.getKeysCommonToHash(Yt(t)), e = e.slice(i);\n      }), e;\n    }\n  }, {\n    key: \"box\",\n    value: function box(t) {\n      return Yt(t);\n    }\n  }]);\n\n  return Ht;\n}(rt);\n\nvar Jt = function Jt(t, e) {\n  var i = {};\n  return i[t] = e, i;\n},\n    Kt = function Kt(t, e) {\n  var i = Gt(t);\n\n  for (var _t5 in e) {\n    var _n5 = e[_t5];\n    i[_t5] = _n5;\n  }\n\n  return i;\n},\n    Gt = function Gt(t, e) {\n  var i = {};\n  return Object.keys(t).sort().forEach(function (n) {\n    n !== e && (i[n] = t[n]);\n  }), i;\n},\n    Yt = function Yt(t) {\n  return t instanceof Ht ? t : new Ht(t);\n},\n    $t = function $t(t) {\n  return t instanceof Ht ? t.values : t;\n};\n\nvar Xt = /*#__PURE__*/function () {\n  function Xt() {\n    _classCallCheck(this, Xt);\n\n    var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],\n        _ref7 = arguments.length > 1 ? arguments[1] : void 0,\n        e = _ref7.depth,\n        i = _ref7.asTree;\n\n    this.objects = t, i && (this.depth = e, this.objects = this.constructor.groupObjects(this.objects, {\n      asTree: i,\n      depth: this.depth + 1\n    }));\n  }\n\n  _createClass(Xt, [{\n    key: \"getObjects\",\n    value: function getObjects() {\n      return this.objects;\n    }\n  }, {\n    key: \"getDepth\",\n    value: function getDepth() {\n      return this.depth;\n    }\n  }, {\n    key: \"getCacheKey\",\n    value: function getCacheKey() {\n      var t = [\"objectGroup\"];\n      return Array.from(this.getObjects()).forEach(function (e) {\n        t.push(e.getCacheKey());\n      }), t.join(\"/\");\n    }\n  }], [{\n    key: \"groupObjects\",\n    value: function groupObjects() {\n      var _this7 = this;\n\n      var t,\n          e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],\n          _ref8 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n          i = _ref8.depth,\n          n = _ref8.asTree;\n\n      n && null == i && (i = 0);\n      var r = [];\n      return Array.from(e).forEach(function (e) {\n        var o;\n\n        if (t) {\n          var s, a, l;\n          if (null !== (s = e.canBeGrouped) && void 0 !== s && s.call(e, i) && null !== (a = (l = t[t.length - 1]).canBeGroupedWith) && void 0 !== a && a.call(l, e, i)) return void t.push(e);\n          r.push(new _this7(t, {\n            depth: i,\n            asTree: n\n          })), t = null;\n        }\n\n        null !== (o = e.canBeGrouped) && void 0 !== o && o.call(e, i) ? t = [e] : r.push(e);\n      }), t && r.push(new this(t, {\n        depth: i,\n        asTree: n\n      })), r;\n    }\n  }]);\n\n  return Xt;\n}();\n\nvar Zt = /*#__PURE__*/function (_q4) {\n  _inherits(Zt, _q4);\n\n  var _super5 = _createSuper(Zt);\n\n  function Zt() {\n    var _this8;\n\n    _classCallCheck(this, Zt);\n\n    var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\n    _this8 = _super5.apply(this, arguments), _this8.objects = {}, Array.from(t).forEach(function (t) {\n      var e = JSON.stringify(t);\n      null == _this8.objects[e] && (_this8.objects[e] = t);\n    });\n    return _this8;\n  }\n\n  _createClass(Zt, [{\n    key: \"find\",\n    value: function find(t) {\n      var e = JSON.stringify(t);\n      return this.objects[e];\n    }\n  }]);\n\n  return Zt;\n}(q);\n\nvar Qt = /*#__PURE__*/function () {\n  function Qt(t) {\n    _classCallCheck(this, Qt);\n\n    this.reset(t);\n  }\n\n  _createClass(Qt, [{\n    key: \"add\",\n    value: function add(t) {\n      var e = te(t);\n      this.elements[e] = t;\n    }\n  }, {\n    key: \"remove\",\n    value: function remove(t) {\n      var e = te(t),\n          i = this.elements[e];\n      if (i) return delete this.elements[e], i;\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      var _this9 = this;\n\n      var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\n      return this.elements = {}, Array.from(t).forEach(function (t) {\n        _this9.add(t);\n      }), t;\n    }\n  }]);\n\n  return Qt;\n}();\n\nvar te = function te(t) {\n  return t.dataset.trixStoreKey;\n};\n\nvar ee = /*#__PURE__*/function (_q5) {\n  _inherits(ee, _q5);\n\n  var _super6 = _createSuper(ee);\n\n  function ee() {\n    _classCallCheck(this, ee);\n\n    return _super6.apply(this, arguments);\n  }\n\n  _createClass(ee, [{\n    key: \"isPerforming\",\n    value: function isPerforming() {\n      return !0 === this.performing;\n    }\n  }, {\n    key: \"hasPerformed\",\n    value: function hasPerformed() {\n      return !0 === this.performed;\n    }\n  }, {\n    key: \"hasSucceeded\",\n    value: function hasSucceeded() {\n      return this.performed && this.succeeded;\n    }\n  }, {\n    key: \"hasFailed\",\n    value: function hasFailed() {\n      return this.performed && !this.succeeded;\n    }\n  }, {\n    key: \"getPromise\",\n    value: function getPromise() {\n      var _this10 = this;\n\n      return this.promise || (this.promise = new Promise(function (t, e) {\n        return _this10.performing = !0, _this10.perform(function (i, n) {\n          _this10.succeeded = i, _this10.performing = !1, _this10.performed = !0, _this10.succeeded ? t(n) : e(n);\n        });\n      })), this.promise;\n    }\n  }, {\n    key: \"perform\",\n    value: function perform(t) {\n      return t(!1);\n    }\n  }, {\n    key: \"release\",\n    value: function release() {\n      var t, e;\n      null === (t = this.promise) || void 0 === t || null === (e = t.cancel) || void 0 === e || e.call(t), this.promise = null, this.performing = null, this.performed = null, this.succeeded = null;\n    }\n  }]);\n\n  return ee;\n}(q);\n\nee.proxyMethod(\"getPromise().then\"), ee.proxyMethod(\"getPromise().catch\");\n\nvar ie = /*#__PURE__*/function (_q6) {\n  _inherits(ie, _q6);\n\n  var _super7 = _createSuper(ie);\n\n  function ie(t) {\n    var _this11;\n\n    _classCallCheck(this, ie);\n\n    var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n    _this11 = _super7.apply(this, arguments), _this11.object = t, _this11.options = e, _this11.childViews = [], _this11.rootView = _assertThisInitialized(_this11);\n    return _this11;\n  }\n\n  _createClass(ie, [{\n    key: \"getNodes\",\n    value: function getNodes() {\n      return this.nodes || (this.nodes = this.createNodes()), this.nodes.map(function (t) {\n        return t.cloneNode(!0);\n      });\n    }\n  }, {\n    key: \"invalidate\",\n    value: function invalidate() {\n      var t;\n      return this.nodes = null, this.childViews = [], null === (t = this.parentView) || void 0 === t ? void 0 : t.invalidate();\n    }\n  }, {\n    key: \"invalidateViewForObject\",\n    value: function invalidateViewForObject(t) {\n      var e;\n      return null === (e = this.findViewForObject(t)) || void 0 === e ? void 0 : e.invalidate();\n    }\n  }, {\n    key: \"findOrCreateCachedChildView\",\n    value: function findOrCreateCachedChildView(t, e, i) {\n      var n = this.getCachedViewForObject(e);\n      return n ? this.recordChildView(n) : (n = this.createChildView.apply(this, arguments), this.cacheViewForObject(n, e)), n;\n    }\n  }, {\n    key: \"createChildView\",\n    value: function createChildView(t, e) {\n      var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\n      e instanceof Xt && (i.viewClass = t, t = ne);\n      var n = new t(e, i);\n      return this.recordChildView(n);\n    }\n  }, {\n    key: \"recordChildView\",\n    value: function recordChildView(t) {\n      return t.parentView = this, t.rootView = this.rootView, this.childViews.push(t), t;\n    }\n  }, {\n    key: \"getAllChildViews\",\n    value: function getAllChildViews() {\n      var t = [];\n      return this.childViews.forEach(function (e) {\n        t.push(e), t = t.concat(e.getAllChildViews());\n      }), t;\n    }\n  }, {\n    key: \"findElement\",\n    value: function findElement() {\n      return this.findElementForObject(this.object);\n    }\n  }, {\n    key: \"findElementForObject\",\n    value: function findElementForObject(t) {\n      var e = null == t ? void 0 : t.id;\n      if (e) return this.rootView.element.querySelector(\"[data-trix-id='\".concat(e, \"']\"));\n    }\n  }, {\n    key: \"findViewForObject\",\n    value: function findViewForObject(t) {\n      var _iterator = _createForOfIteratorHelper(this.getAllChildViews()),\n          _step;\n\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var _e8 = _step.value;\n          if (_e8.object === t) return _e8;\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n    }\n  }, {\n    key: \"getViewCache\",\n    value: function getViewCache() {\n      return this.rootView !== this ? this.rootView.getViewCache() : this.isViewCachingEnabled() ? (this.viewCache || (this.viewCache = {}), this.viewCache) : void 0;\n    }\n  }, {\n    key: \"isViewCachingEnabled\",\n    value: function isViewCachingEnabled() {\n      return !1 !== this.shouldCacheViews;\n    }\n  }, {\n    key: \"enableViewCaching\",\n    value: function enableViewCaching() {\n      this.shouldCacheViews = !0;\n    }\n  }, {\n    key: \"disableViewCaching\",\n    value: function disableViewCaching() {\n      this.shouldCacheViews = !1;\n    }\n  }, {\n    key: \"getCachedViewForObject\",\n    value: function getCachedViewForObject(t) {\n      var e;\n      return null === (e = this.getViewCache()) || void 0 === e ? void 0 : e[t.getCacheKey()];\n    }\n  }, {\n    key: \"cacheViewForObject\",\n    value: function cacheViewForObject(t, e) {\n      var i = this.getViewCache();\n      i && (i[e.getCacheKey()] = t);\n    }\n  }, {\n    key: \"garbageCollectCachedViews\",\n    value: function garbageCollectCachedViews() {\n      var t = this.getViewCache();\n\n      if (t) {\n        var _e9 = this.getAllChildViews().concat(this).map(function (t) {\n          return t.object.getCacheKey();\n        });\n\n        for (var _i10 in t) {\n          _e9.includes(_i10) || delete t[_i10];\n        }\n      }\n    }\n  }]);\n\n  return ie;\n}(q);\n\nvar ne = /*#__PURE__*/function (_ie) {\n  _inherits(ne, _ie);\n\n  var _super8 = _createSuper(ne);\n\n  function ne() {\n    var _this12;\n\n    _classCallCheck(this, ne);\n\n    _this12 = _super8.apply(this, arguments), _this12.objectGroup = _this12.object, _this12.viewClass = _this12.options.viewClass, delete _this12.options.viewClass;\n    return _this12;\n  }\n\n  _createClass(ne, [{\n    key: \"getChildViews\",\n    value: function getChildViews() {\n      var _this13 = this;\n\n      return this.childViews.length || Array.from(this.objectGroup.getObjects()).forEach(function (t) {\n        _this13.findOrCreateCachedChildView(_this13.viewClass, t, _this13.options);\n      }), this.childViews;\n    }\n  }, {\n    key: \"createNodes\",\n    value: function createNodes() {\n      var t = this.createContainerElement();\n      return this.getChildViews().forEach(function (e) {\n        Array.from(e.getNodes()).forEach(function (e) {\n          t.appendChild(e);\n        });\n      }), [t];\n    }\n  }, {\n    key: \"createContainerElement\",\n    value: function createContainerElement() {\n      var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.objectGroup.getDepth();\n      return this.getChildViews()[0].createContainerElement(t);\n    }\n  }]);\n\n  return ne;\n}(ie);\n/*! @license DOMPurify 3.2.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.3/LICENSE */\n\n\nvar re = Object.entries,\n    oe = Object.setPrototypeOf,\n    se = Object.isFrozen,\n    ae = Object.getPrototypeOf,\n    le = Object.getOwnPropertyDescriptor;\n\nvar ce = Object.freeze,\n    ue = Object.seal,\n    he = Object.create,\n    _ref9 = \"undefined\" != typeof Reflect && Reflect,\n    de = _ref9.apply,\n    ge = _ref9.construct;\n\nce || (ce = function ce(t) {\n  return t;\n}), ue || (ue = function ue(t) {\n  return t;\n}), de || (de = function de(t, e, i) {\n  return t.apply(e, i);\n}), ge || (ge = function ge(t, e) {\n  return _construct(t, _toConsumableArray(e));\n});\nvar me = Te(Array.prototype.forEach),\n    pe = Te(Array.prototype.pop),\n    fe = Te(Array.prototype.push),\n    be = Te(String.prototype.toLowerCase),\n    ve = Te(String.prototype.toString),\n    Ae = Te(String.prototype.match),\n    ye = Te(String.prototype.replace),\n    xe = Te(String.prototype.indexOf),\n    Ce = Te(String.prototype.trim),\n    Ee = Te(Object.prototype.hasOwnProperty),\n    Se = Te(RegExp.prototype.test),\n    Re = (ke = TypeError, function () {\n  for (var t = arguments.length, e = new Array(t), i = 0; i < t; i++) {\n    e[i] = arguments[i];\n  }\n\n  return ge(ke, e);\n});\nvar ke;\n\nfunction Te(t) {\n  return function (e) {\n    for (var i = arguments.length, n = new Array(i > 1 ? i - 1 : 0), r = 1; r < i; r++) {\n      n[r - 1] = arguments[r];\n    }\n\n    return de(t, e, n);\n  };\n}\n\nfunction we(t, e) {\n  var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : be;\n  oe && oe(t, null);\n  var n = e.length;\n\n  for (; n--;) {\n    var _r3 = e[n];\n\n    if (\"string\" == typeof _r3) {\n      var _t6 = i(_r3);\n\n      _t6 !== _r3 && (se(e) || (e[n] = _t6), _r3 = _t6);\n    }\n\n    t[_r3] = !0;\n  }\n\n  return t;\n}\n\nfunction Le(t) {\n  for (var _e10 = 0; _e10 < t.length; _e10++) {\n    Ee(t, _e10) || (t[_e10] = null);\n  }\n\n  return t;\n}\n\nfunction De(t) {\n  var e = he(null);\n\n  var _iterator2 = _createForOfIteratorHelper(re(t)),\n      _step2;\n\n  try {\n    for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n      var _ref12 = _step2.value;\n\n      var _ref11 = _slicedToArray(_ref12, 2);\n\n      var _i11 = _ref11[0];\n      var _n6 = _ref11[1];\n      Ee(t, _i11) && (Array.isArray(_n6) ? e[_i11] = Le(_n6) : _n6 && \"object\" == _typeof(_n6) && _n6.constructor === Object ? e[_i11] = De(_n6) : e[_i11] = _n6);\n    }\n  } catch (err) {\n    _iterator2.e(err);\n  } finally {\n    _iterator2.f();\n  }\n\n  return e;\n}\n\nfunction Ne(t, e) {\n  for (; null !== t;) {\n    var _i12 = le(t, e);\n\n    if (_i12) {\n      if (_i12.get) return Te(_i12.get);\n      if (\"function\" == typeof _i12.value) return Te(_i12.value);\n    }\n\n    t = ae(t);\n  }\n\n  return function () {\n    return null;\n  };\n}\n\nvar Ie = ce([\"a\", \"abbr\", \"acronym\", \"address\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"bdi\", \"bdo\", \"big\", \"blink\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"center\", \"cite\", \"code\", \"col\", \"colgroup\", \"content\", \"data\", \"datalist\", \"dd\", \"decorator\", \"del\", \"details\", \"dfn\", \"dialog\", \"dir\", \"div\", \"dl\", \"dt\", \"element\", \"em\", \"fieldset\", \"figcaption\", \"figure\", \"font\", \"footer\", \"form\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"img\", \"input\", \"ins\", \"kbd\", \"label\", \"legend\", \"li\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meter\", \"nav\", \"nobr\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"picture\", \"pre\", \"progress\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"section\", \"select\", \"shadow\", \"small\", \"source\", \"spacer\", \"span\", \"strike\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"tr\", \"track\", \"tt\", \"u\", \"ul\", \"var\", \"video\", \"wbr\"]),\n    Oe = ce([\"svg\", \"a\", \"altglyph\", \"altglyphdef\", \"altglyphitem\", \"animatecolor\", \"animatemotion\", \"animatetransform\", \"circle\", \"clippath\", \"defs\", \"desc\", \"ellipse\", \"filter\", \"font\", \"g\", \"glyph\", \"glyphref\", \"hkern\", \"image\", \"line\", \"lineargradient\", \"marker\", \"mask\", \"metadata\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialgradient\", \"rect\", \"stop\", \"style\", \"switch\", \"symbol\", \"text\", \"textpath\", \"title\", \"tref\", \"tspan\", \"view\", \"vkern\"]),\n    Fe = ce([\"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDistantLight\", \"feDropShadow\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\"]),\n    Pe = ce([\"animate\", \"color-profile\", \"cursor\", \"discard\", \"font-face\", \"font-face-format\", \"font-face-name\", \"font-face-src\", \"font-face-uri\", \"foreignobject\", \"hatch\", \"hatchpath\", \"mesh\", \"meshgradient\", \"meshpatch\", \"meshrow\", \"missing-glyph\", \"script\", \"set\", \"solidcolor\", \"unknown\", \"use\"]),\n    Me = ce([\"math\", \"menclose\", \"merror\", \"mfenced\", \"mfrac\", \"mglyph\", \"mi\", \"mlabeledtr\", \"mmultiscripts\", \"mn\", \"mo\", \"mover\", \"mpadded\", \"mphantom\", \"mroot\", \"mrow\", \"ms\", \"mspace\", \"msqrt\", \"mstyle\", \"msub\", \"msup\", \"msubsup\", \"mtable\", \"mtd\", \"mtext\", \"mtr\", \"munder\", \"munderover\", \"mprescripts\"]),\n    Be = ce([\"maction\", \"maligngroup\", \"malignmark\", \"mlongdiv\", \"mscarries\", \"mscarry\", \"msgroup\", \"mstack\", \"msline\", \"msrow\", \"semantics\", \"annotation\", \"annotation-xml\", \"mprescripts\", \"none\"]),\n    _e = ce([\"#text\"]),\n    je = ce([\"accept\", \"action\", \"align\", \"alt\", \"autocapitalize\", \"autocomplete\", \"autopictureinpicture\", \"autoplay\", \"background\", \"bgcolor\", \"border\", \"capture\", \"cellpadding\", \"cellspacing\", \"checked\", \"cite\", \"class\", \"clear\", \"color\", \"cols\", \"colspan\", \"controls\", \"controlslist\", \"coords\", \"crossorigin\", \"datetime\", \"decoding\", \"default\", \"dir\", \"disabled\", \"disablepictureinpicture\", \"disableremoteplayback\", \"download\", \"draggable\", \"enctype\", \"enterkeyhint\", \"face\", \"for\", \"headers\", \"height\", \"hidden\", \"high\", \"href\", \"hreflang\", \"id\", \"inputmode\", \"integrity\", \"ismap\", \"kind\", \"label\", \"lang\", \"list\", \"loading\", \"loop\", \"low\", \"max\", \"maxlength\", \"media\", \"method\", \"min\", \"minlength\", \"multiple\", \"muted\", \"name\", \"nonce\", \"noshade\", \"novalidate\", \"nowrap\", \"open\", \"optimum\", \"pattern\", \"placeholder\", \"playsinline\", \"popover\", \"popovertarget\", \"popovertargetaction\", \"poster\", \"preload\", \"pubdate\", \"radiogroup\", \"readonly\", \"rel\", \"required\", \"rev\", \"reversed\", \"role\", \"rows\", \"rowspan\", \"spellcheck\", \"scope\", \"selected\", \"shape\", \"size\", \"sizes\", \"span\", \"srclang\", \"start\", \"src\", \"srcset\", \"step\", \"style\", \"summary\", \"tabindex\", \"title\", \"translate\", \"type\", \"usemap\", \"valign\", \"value\", \"width\", \"wrap\", \"xmlns\", \"slot\"]),\n    We = ce([\"accent-height\", \"accumulate\", \"additive\", \"alignment-baseline\", \"amplitude\", \"ascent\", \"attributename\", \"attributetype\", \"azimuth\", \"basefrequency\", \"baseline-shift\", \"begin\", \"bias\", \"by\", \"class\", \"clip\", \"clippathunits\", \"clip-path\", \"clip-rule\", \"color\", \"color-interpolation\", \"color-interpolation-filters\", \"color-profile\", \"color-rendering\", \"cx\", \"cy\", \"d\", \"dx\", \"dy\", \"diffuseconstant\", \"direction\", \"display\", \"divisor\", \"dur\", \"edgemode\", \"elevation\", \"end\", \"exponent\", \"fill\", \"fill-opacity\", \"fill-rule\", \"filter\", \"filterunits\", \"flood-color\", \"flood-opacity\", \"font-family\", \"font-size\", \"font-size-adjust\", \"font-stretch\", \"font-style\", \"font-variant\", \"font-weight\", \"fx\", \"fy\", \"g1\", \"g2\", \"glyph-name\", \"glyphref\", \"gradientunits\", \"gradienttransform\", \"height\", \"href\", \"id\", \"image-rendering\", \"in\", \"in2\", \"intercept\", \"k\", \"k1\", \"k2\", \"k3\", \"k4\", \"kerning\", \"keypoints\", \"keysplines\", \"keytimes\", \"lang\", \"lengthadjust\", \"letter-spacing\", \"kernelmatrix\", \"kernelunitlength\", \"lighting-color\", \"local\", \"marker-end\", \"marker-mid\", \"marker-start\", \"markerheight\", \"markerunits\", \"markerwidth\", \"maskcontentunits\", \"maskunits\", \"max\", \"mask\", \"media\", \"method\", \"mode\", \"min\", \"name\", \"numoctaves\", \"offset\", \"operator\", \"opacity\", \"order\", \"orient\", \"orientation\", \"origin\", \"overflow\", \"paint-order\", \"path\", \"pathlength\", \"patterncontentunits\", \"patterntransform\", \"patternunits\", \"points\", \"preservealpha\", \"preserveaspectratio\", \"primitiveunits\", \"r\", \"rx\", \"ry\", \"radius\", \"refx\", \"refy\", \"repeatcount\", \"repeatdur\", \"restart\", \"result\", \"rotate\", \"scale\", \"seed\", \"shape-rendering\", \"slope\", \"specularconstant\", \"specularexponent\", \"spreadmethod\", \"startoffset\", \"stddeviation\", \"stitchtiles\", \"stop-color\", \"stop-opacity\", \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\", \"stroke-miterlimit\", \"stroke-opacity\", \"stroke\", \"stroke-width\", \"style\", \"surfacescale\", \"systemlanguage\", \"tabindex\", \"tablevalues\", \"targetx\", \"targety\", \"transform\", \"transform-origin\", \"text-anchor\", \"text-decoration\", \"text-rendering\", \"textlength\", \"type\", \"u1\", \"u2\", \"unicode\", \"values\", \"viewbox\", \"visibility\", \"version\", \"vert-adv-y\", \"vert-origin-x\", \"vert-origin-y\", \"width\", \"word-spacing\", \"wrap\", \"writing-mode\", \"xchannelselector\", \"ychannelselector\", \"x\", \"x1\", \"x2\", \"xmlns\", \"y\", \"y1\", \"y2\", \"z\", \"zoomandpan\"]),\n    Ue = ce([\"accent\", \"accentunder\", \"align\", \"bevelled\", \"close\", \"columnsalign\", \"columnlines\", \"columnspan\", \"denomalign\", \"depth\", \"dir\", \"display\", \"displaystyle\", \"encoding\", \"fence\", \"frame\", \"height\", \"href\", \"id\", \"largeop\", \"length\", \"linethickness\", \"lspace\", \"lquote\", \"mathbackground\", \"mathcolor\", \"mathsize\", \"mathvariant\", \"maxsize\", \"minsize\", \"movablelimits\", \"notation\", \"numalign\", \"open\", \"rowalign\", \"rowlines\", \"rowspacing\", \"rowspan\", \"rspace\", \"rquote\", \"scriptlevel\", \"scriptminsize\", \"scriptsizemultiplier\", \"selection\", \"separator\", \"separators\", \"stretchy\", \"subscriptshift\", \"supscriptshift\", \"symmetric\", \"voffset\", \"width\", \"xmlns\"]),\n    Ve = ce([\"xlink:href\", \"xml:id\", \"xlink:title\", \"xml:space\", \"xmlns:xlink\"]),\n    ze = ue(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm),\n    qe = ue(/<%[\\w\\W]*|[\\w\\W]*%>/gm),\n    He = ue(/\\$\\{[\\w\\W]*}/gm),\n    Je = ue(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/),\n    Ke = ue(/^aria-[\\-\\w]+$/),\n    Ge = ue(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i),\n    Ye = ue(/^(?:\\w+script|data):/i),\n    $e = ue(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g),\n    Xe = ue(/^html$/i),\n    Ze = ue(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar Qe = Object.freeze({\n  __proto__: null,\n  ARIA_ATTR: Ke,\n  ATTR_WHITESPACE: $e,\n  CUSTOM_ELEMENT: Ze,\n  DATA_ATTR: Je,\n  DOCTYPE_NAME: Xe,\n  ERB_EXPR: qe,\n  IS_ALLOWED_URI: Ge,\n  IS_SCRIPT_OR_DATA: Ye,\n  MUSTACHE_EXPR: ze,\n  TMPLIT_EXPR: He\n});\n\nvar ti = 1,\n    ei = 3,\n    ii = 7,\n    ni = 8,\n    ri = 9,\n    oi = function oi() {\n  return \"undefined\" == typeof window ? null : window;\n};\n\nvar si = function t() {\n  var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : oi();\n\n  var i = function i(e) {\n    return t(e);\n  };\n\n  if (i.version = \"3.2.3\", i.removed = [], !e || !e.document || e.document.nodeType !== ri) return i.isSupported = !1, i;\n  var n = e.document;\n  var r = n,\n      o = r.currentScript,\n      s = e.DocumentFragment,\n      a = e.HTMLTemplateElement,\n      l = e.Node,\n      c = e.Element,\n      u = e.NodeFilter,\n      _e$NamedNodeMap = e.NamedNodeMap,\n      h = _e$NamedNodeMap === void 0 ? e.NamedNodeMap || e.MozNamedAttrMap : _e$NamedNodeMap,\n      d = e.HTMLFormElement,\n      g = e.DOMParser,\n      m = e.trustedTypes,\n      p = c.prototype,\n      f = Ne(p, \"cloneNode\"),\n      b = Ne(p, \"remove\"),\n      v = Ne(p, \"nextSibling\"),\n      A = Ne(p, \"childNodes\"),\n      y = Ne(p, \"parentNode\");\n\n  if (\"function\" == typeof a) {\n    var _t7 = n.createElement(\"template\");\n\n    _t7.content && _t7.content.ownerDocument && (n = _t7.content.ownerDocument);\n  }\n\n  var x,\n      C = \"\";\n  var _n7 = n,\n      E = _n7.implementation,\n      S = _n7.createNodeIterator,\n      R = _n7.createDocumentFragment,\n      k = _n7.getElementsByTagName,\n      T = r.importNode;\n  var w = {\n    afterSanitizeAttributes: [],\n    afterSanitizeElements: [],\n    afterSanitizeShadowDOM: [],\n    beforeSanitizeAttributes: [],\n    beforeSanitizeElements: [],\n    beforeSanitizeShadowDOM: [],\n    uponSanitizeAttribute: [],\n    uponSanitizeElement: [],\n    uponSanitizeShadowNode: []\n  };\n  i.isSupported = \"function\" == typeof re && \"function\" == typeof y && E && void 0 !== E.createHTMLDocument;\n  var L = Qe.MUSTACHE_EXPR,\n      D = Qe.ERB_EXPR,\n      N = Qe.TMPLIT_EXPR,\n      I = Qe.DATA_ATTR,\n      O = Qe.ARIA_ATTR,\n      F = Qe.IS_SCRIPT_OR_DATA,\n      P = Qe.ATTR_WHITESPACE,\n      M = Qe.CUSTOM_ELEMENT;\n  var B = Qe.IS_ALLOWED_URI,\n      _ = null;\n  var j = we({}, [].concat(_toConsumableArray(Ie), _toConsumableArray(Oe), _toConsumableArray(Fe), _toConsumableArray(Me), _toConsumableArray(_e)));\n  var W = null;\n  var U = we({}, [].concat(_toConsumableArray(je), _toConsumableArray(We), _toConsumableArray(Ue), _toConsumableArray(Ve)));\n  var V = Object.seal(he(null, {\n    tagNameCheck: {\n      writable: !0,\n      configurable: !1,\n      enumerable: !0,\n      value: null\n    },\n    attributeNameCheck: {\n      writable: !0,\n      configurable: !1,\n      enumerable: !0,\n      value: null\n    },\n    allowCustomizedBuiltInElements: {\n      writable: !0,\n      configurable: !1,\n      enumerable: !0,\n      value: !1\n    }\n  })),\n      z = null,\n      q = null,\n      H = !0,\n      J = !0,\n      K = !1,\n      G = !0,\n      Y = !1,\n      $ = !0,\n      X = !1,\n      Z = !1,\n      Q = !1,\n      tt = !1,\n      et = !1,\n      it = !1,\n      nt = !0,\n      rt = !1,\n      ot = !0,\n      st = !1,\n      at = {},\n      lt = null;\n  var ct = we({}, [\"annotation-xml\", \"audio\", \"colgroup\", \"desc\", \"foreignobject\", \"head\", \"iframe\", \"math\", \"mi\", \"mn\", \"mo\", \"ms\", \"mtext\", \"noembed\", \"noframes\", \"noscript\", \"plaintext\", \"script\", \"style\", \"svg\", \"template\", \"thead\", \"title\", \"video\", \"xmp\"]);\n  var ut = null;\n  var ht = we({}, [\"audio\", \"video\", \"img\", \"source\", \"image\", \"track\"]);\n  var dt = null;\n  var gt = we({}, [\"alt\", \"class\", \"for\", \"id\", \"label\", \"name\", \"pattern\", \"placeholder\", \"role\", \"summary\", \"title\", \"value\", \"style\", \"xmlns\"]),\n      mt = \"http://www.w3.org/1998/Math/MathML\",\n      pt = \"http://www.w3.org/2000/svg\",\n      ft = \"http://www.w3.org/1999/xhtml\";\n  var bt = ft,\n      vt = !1,\n      At = null;\n  var yt = we({}, [mt, pt, ft], ve);\n  var xt = we({}, [\"mi\", \"mo\", \"mn\", \"ms\", \"mtext\"]),\n      Ct = we({}, [\"annotation-xml\"]);\n  var Et = we({}, [\"title\", \"style\", \"font\", \"a\", \"script\"]);\n  var St = null;\n  var Rt = [\"application/xhtml+xml\", \"text/html\"];\n  var kt = null,\n      Tt = null;\n\n  var wt = n.createElement(\"form\"),\n      Lt = function Lt(t) {\n    return t instanceof RegExp || t instanceof Function;\n  },\n      Dt = function Dt() {\n    var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n\n    if (!Tt || Tt !== t) {\n      if (t && \"object\" == _typeof(t) || (t = {}), t = De(t), St = -1 === Rt.indexOf(t.PARSER_MEDIA_TYPE) ? \"text/html\" : t.PARSER_MEDIA_TYPE, kt = \"application/xhtml+xml\" === St ? ve : be, _ = Ee(t, \"ALLOWED_TAGS\") ? we({}, t.ALLOWED_TAGS, kt) : j, W = Ee(t, \"ALLOWED_ATTR\") ? we({}, t.ALLOWED_ATTR, kt) : U, At = Ee(t, \"ALLOWED_NAMESPACES\") ? we({}, t.ALLOWED_NAMESPACES, ve) : yt, dt = Ee(t, \"ADD_URI_SAFE_ATTR\") ? we(De(gt), t.ADD_URI_SAFE_ATTR, kt) : gt, ut = Ee(t, \"ADD_DATA_URI_TAGS\") ? we(De(ht), t.ADD_DATA_URI_TAGS, kt) : ht, lt = Ee(t, \"FORBID_CONTENTS\") ? we({}, t.FORBID_CONTENTS, kt) : ct, z = Ee(t, \"FORBID_TAGS\") ? we({}, t.FORBID_TAGS, kt) : {}, q = Ee(t, \"FORBID_ATTR\") ? we({}, t.FORBID_ATTR, kt) : {}, at = !!Ee(t, \"USE_PROFILES\") && t.USE_PROFILES, H = !1 !== t.ALLOW_ARIA_ATTR, J = !1 !== t.ALLOW_DATA_ATTR, K = t.ALLOW_UNKNOWN_PROTOCOLS || !1, G = !1 !== t.ALLOW_SELF_CLOSE_IN_ATTR, Y = t.SAFE_FOR_TEMPLATES || !1, $ = !1 !== t.SAFE_FOR_XML, X = t.WHOLE_DOCUMENT || !1, tt = t.RETURN_DOM || !1, et = t.RETURN_DOM_FRAGMENT || !1, it = t.RETURN_TRUSTED_TYPE || !1, Q = t.FORCE_BODY || !1, nt = !1 !== t.SANITIZE_DOM, rt = t.SANITIZE_NAMED_PROPS || !1, ot = !1 !== t.KEEP_CONTENT, st = t.IN_PLACE || !1, B = t.ALLOWED_URI_REGEXP || Ge, bt = t.NAMESPACE || ft, xt = t.MATHML_TEXT_INTEGRATION_POINTS || xt, Ct = t.HTML_INTEGRATION_POINTS || Ct, V = t.CUSTOM_ELEMENT_HANDLING || {}, t.CUSTOM_ELEMENT_HANDLING && Lt(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck) && (V.tagNameCheck = t.CUSTOM_ELEMENT_HANDLING.tagNameCheck), t.CUSTOM_ELEMENT_HANDLING && Lt(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck) && (V.attributeNameCheck = t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck), t.CUSTOM_ELEMENT_HANDLING && \"boolean\" == typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (V.allowCustomizedBuiltInElements = t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements), Y && (J = !1), et && (tt = !0), at && (_ = we({}, _e), W = [], !0 === at.html && (we(_, Ie), we(W, je)), !0 === at.svg && (we(_, Oe), we(W, We), we(W, Ve)), !0 === at.svgFilters && (we(_, Fe), we(W, We), we(W, Ve)), !0 === at.mathMl && (we(_, Me), we(W, Ue), we(W, Ve))), t.ADD_TAGS && (_ === j && (_ = De(_)), we(_, t.ADD_TAGS, kt)), t.ADD_ATTR && (W === U && (W = De(W)), we(W, t.ADD_ATTR, kt)), t.ADD_URI_SAFE_ATTR && we(dt, t.ADD_URI_SAFE_ATTR, kt), t.FORBID_CONTENTS && (lt === ct && (lt = De(lt)), we(lt, t.FORBID_CONTENTS, kt)), ot && (_[\"#text\"] = !0), X && we(_, [\"html\", \"head\", \"body\"]), _.table && (we(_, [\"tbody\"]), delete z.tbody), t.TRUSTED_TYPES_POLICY) {\n        if (\"function\" != typeof t.TRUSTED_TYPES_POLICY.createHTML) throw Re('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n        if (\"function\" != typeof t.TRUSTED_TYPES_POLICY.createScriptURL) throw Re('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n        x = t.TRUSTED_TYPES_POLICY, C = x.createHTML(\"\");\n      } else void 0 === x && (x = function (t, e) {\n        if (\"object\" != _typeof(t) || \"function\" != typeof t.createPolicy) return null;\n        var i = null;\n        var n = \"data-tt-policy-suffix\";\n        e && e.hasAttribute(n) && (i = e.getAttribute(n));\n        var r = \"dompurify\" + (i ? \"#\" + i : \"\");\n\n        try {\n          return t.createPolicy(r, {\n            createHTML: function createHTML(t) {\n              return t;\n            },\n            createScriptURL: function createScriptURL(t) {\n              return t;\n            }\n          });\n        } catch (t) {\n          return console.warn(\"TrustedTypes policy \" + r + \" could not be created.\"), null;\n        }\n      }(m, o)), null !== x && \"string\" == typeof C && (C = x.createHTML(\"\"));\n\n      ce && ce(t), Tt = t;\n    }\n  },\n      Nt = we({}, [].concat(_toConsumableArray(Oe), _toConsumableArray(Fe), _toConsumableArray(Pe))),\n      It = we({}, [].concat(_toConsumableArray(Me), _toConsumableArray(Be))),\n      Ot = function Ot(t) {\n    fe(i.removed, {\n      element: t\n    });\n\n    try {\n      y(t).removeChild(t);\n    } catch (e) {\n      b(t);\n    }\n  },\n      Ft = function Ft(t, e) {\n    try {\n      fe(i.removed, {\n        attribute: e.getAttributeNode(t),\n        from: e\n      });\n    } catch (t) {\n      fe(i.removed, {\n        attribute: null,\n        from: e\n      });\n    }\n\n    if (e.removeAttribute(t), \"is\" === t) if (tt || et) try {\n      Ot(e);\n    } catch (t) {} else try {\n      e.setAttribute(t, \"\");\n    } catch (t) {}\n  },\n      Pt = function Pt(t) {\n    var e = null,\n        i = null;\n    if (Q) t = \"<remove></remove>\" + t;else {\n      var _e11 = Ae(t, /^[\\r\\n\\t ]+/);\n\n      i = _e11 && _e11[0];\n    }\n    \"application/xhtml+xml\" === St && bt === ft && (t = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + t + \"</body></html>\");\n    var r = x ? x.createHTML(t) : t;\n    if (bt === ft) try {\n      e = new g().parseFromString(r, St);\n    } catch (t) {}\n\n    if (!e || !e.documentElement) {\n      e = E.createDocument(bt, \"template\", null);\n\n      try {\n        e.documentElement.innerHTML = vt ? C : r;\n      } catch (t) {}\n    }\n\n    var o = e.body || e.documentElement;\n    return t && i && o.insertBefore(n.createTextNode(i), o.childNodes[0] || null), bt === ft ? k.call(e, X ? \"html\" : \"body\")[0] : X ? e.documentElement : o;\n  },\n      Mt = function Mt(t) {\n    return S.call(t.ownerDocument || t, t, u.SHOW_ELEMENT | u.SHOW_COMMENT | u.SHOW_TEXT | u.SHOW_PROCESSING_INSTRUCTION | u.SHOW_CDATA_SECTION, null);\n  },\n      Bt = function Bt(t) {\n    return t instanceof d && (\"string\" != typeof t.nodeName || \"string\" != typeof t.textContent || \"function\" != typeof t.removeChild || !(t.attributes instanceof h) || \"function\" != typeof t.removeAttribute || \"function\" != typeof t.setAttribute || \"string\" != typeof t.namespaceURI || \"function\" != typeof t.insertBefore || \"function\" != typeof t.hasChildNodes);\n  },\n      _t = function _t(t) {\n    return \"function\" == typeof l && t instanceof l;\n  };\n\n  function jt(t, e, n) {\n    me(t, function (t) {\n      t.call(i, e, n, Tt);\n    });\n  }\n\n  var Wt = function Wt(t) {\n    var e = null;\n    if (jt(w.beforeSanitizeElements, t, null), Bt(t)) return Ot(t), !0;\n    var n = kt(t.nodeName);\n    if (jt(w.uponSanitizeElement, t, {\n      tagName: n,\n      allowedTags: _\n    }), t.hasChildNodes() && !_t(t.firstElementChild) && Se(/<[/\\w]/g, t.innerHTML) && Se(/<[/\\w]/g, t.textContent)) return Ot(t), !0;\n    if (t.nodeType === ii) return Ot(t), !0;\n    if ($ && t.nodeType === ni && Se(/<[/\\w]/g, t.data)) return Ot(t), !0;\n\n    if (!_[n] || z[n]) {\n      if (!z[n] && Vt(n)) {\n        if (V.tagNameCheck instanceof RegExp && Se(V.tagNameCheck, n)) return !1;\n        if (V.tagNameCheck instanceof Function && V.tagNameCheck(n)) return !1;\n      }\n\n      if (ot && !lt[n]) {\n        var _e12 = y(t) || t.parentNode,\n            _i13 = A(t) || t.childNodes;\n\n        if (_i13 && _e12) {\n          for (var _n8 = _i13.length - 1; _n8 >= 0; --_n8) {\n            var _r4 = f(_i13[_n8], !0);\n\n            _r4.__removalCount = (t.__removalCount || 0) + 1, _e12.insertBefore(_r4, v(t));\n          }\n        }\n      }\n\n      return Ot(t), !0;\n    }\n\n    return t instanceof c && !function (t) {\n      var e = y(t);\n      e && e.tagName || (e = {\n        namespaceURI: bt,\n        tagName: \"template\"\n      });\n      var i = be(t.tagName),\n          n = be(e.tagName);\n      return !!At[t.namespaceURI] && (t.namespaceURI === pt ? e.namespaceURI === ft ? \"svg\" === i : e.namespaceURI === mt ? \"svg\" === i && (\"annotation-xml\" === n || xt[n]) : Boolean(Nt[i]) : t.namespaceURI === mt ? e.namespaceURI === ft ? \"math\" === i : e.namespaceURI === pt ? \"math\" === i && Ct[n] : Boolean(It[i]) : t.namespaceURI === ft ? !(e.namespaceURI === pt && !Ct[n]) && !(e.namespaceURI === mt && !xt[n]) && !It[i] && (Et[i] || !Nt[i]) : !(\"application/xhtml+xml\" !== St || !At[t.namespaceURI]));\n    }(t) ? (Ot(t), !0) : \"noscript\" !== n && \"noembed\" !== n && \"noframes\" !== n || !Se(/<\\/no(script|embed|frames)/i, t.innerHTML) ? (Y && t.nodeType === ei && (e = t.textContent, me([L, D, N], function (t) {\n      e = ye(e, t, \" \");\n    }), t.textContent !== e && (fe(i.removed, {\n      element: t.cloneNode()\n    }), t.textContent = e)), jt(w.afterSanitizeElements, t, null), !1) : (Ot(t), !0);\n  },\n      Ut = function Ut(t, e, i) {\n    if (nt && (\"id\" === e || \"name\" === e) && (i in n || i in wt)) return !1;\n    if (J && !q[e] && Se(I, e)) ;else if (H && Se(O, e)) ;else if (!W[e] || q[e]) {\n      if (!(Vt(t) && (V.tagNameCheck instanceof RegExp && Se(V.tagNameCheck, t) || V.tagNameCheck instanceof Function && V.tagNameCheck(t)) && (V.attributeNameCheck instanceof RegExp && Se(V.attributeNameCheck, e) || V.attributeNameCheck instanceof Function && V.attributeNameCheck(e)) || \"is\" === e && V.allowCustomizedBuiltInElements && (V.tagNameCheck instanceof RegExp && Se(V.tagNameCheck, i) || V.tagNameCheck instanceof Function && V.tagNameCheck(i)))) return !1;\n    } else if (dt[e]) ;else if (Se(B, ye(i, P, \"\"))) ;else if (\"src\" !== e && \"xlink:href\" !== e && \"href\" !== e || \"script\" === t || 0 !== xe(i, \"data:\") || !ut[t]) {\n      if (K && !Se(F, ye(i, P, \"\"))) ;else if (i) return !1;\n    } else ;\n    return !0;\n  },\n      Vt = function Vt(t) {\n    return \"annotation-xml\" !== t && Ae(t, M);\n  },\n      zt = function zt(t) {\n    jt(w.beforeSanitizeAttributes, t, null);\n    var e = t.attributes;\n    if (!e || Bt(t)) return;\n    var n = {\n      attrName: \"\",\n      attrValue: \"\",\n      keepAttr: !0,\n      allowedAttributes: W,\n      forceKeepAttr: void 0\n    };\n    var r = e.length;\n\n    var _loop = function _loop() {\n      var o = e[r],\n          s = o.name,\n          a = o.namespaceURI,\n          l = o.value,\n          c = kt(s);\n      var u = \"value\" === s ? l : Ce(l);\n\n      if (n.attrName = c, n.attrValue = u, n.keepAttr = !0, n.forceKeepAttr = void 0, jt(w.uponSanitizeAttribute, t, n), u = n.attrValue, !rt || \"id\" !== c && \"name\" !== c || (Ft(s, t), u = \"user-content-\" + u), $ && Se(/((--!?|])>)|<\\/(style|title)/i, u)) {\n        Ft(s, t);\n        return \"continue\";\n      }\n\n      if (n.forceKeepAttr) return \"continue\";\n      if (Ft(s, t), !n.keepAttr) return \"continue\";\n\n      if (!G && Se(/\\/>/i, u)) {\n        Ft(s, t);\n        return \"continue\";\n      }\n\n      Y && me([L, D, N], function (t) {\n        u = ye(u, t, \" \");\n      });\n      var h = kt(t.nodeName);\n\n      if (Ut(h, c, u)) {\n        if (x && \"object\" == _typeof(m) && \"function\" == typeof m.getAttributeType) if (a) ;else switch (m.getAttributeType(h, c)) {\n          case \"TrustedHTML\":\n            u = x.createHTML(u);\n            break;\n\n          case \"TrustedScriptURL\":\n            u = x.createScriptURL(u);\n        }\n\n        try {\n          a ? t.setAttributeNS(a, s, u) : t.setAttribute(s, u), Bt(t) ? Ot(t) : pe(i.removed);\n        } catch (t) {}\n      }\n    };\n\n    for (; r--;) {\n      var _ret = _loop();\n\n      if (_ret === \"continue\") continue;\n    }\n\n    jt(w.afterSanitizeAttributes, t, null);\n  },\n      qt = function t(e) {\n    var i = null;\n    var n = Mt(e);\n\n    for (jt(w.beforeSanitizeShadowDOM, e, null); i = n.nextNode();) {\n      jt(w.uponSanitizeShadowNode, i, null), Wt(i), zt(i), i.content instanceof s && t(i.content);\n    }\n\n    jt(w.afterSanitizeShadowDOM, e, null);\n  };\n\n  return i.sanitize = function (t) {\n    var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n        n = null,\n        o = null,\n        a = null,\n        c = null;\n\n    if (vt = !t, vt && (t = \"\\x3c!--\\x3e\"), \"string\" != typeof t && !_t(t)) {\n      if (\"function\" != typeof t.toString) throw Re(\"toString is not a function\");\n      if (\"string\" != typeof (t = t.toString())) throw Re(\"dirty is not a string, aborting\");\n    }\n\n    if (!i.isSupported) return t;\n\n    if (Z || Dt(e), i.removed = [], \"string\" == typeof t && (st = !1), st) {\n      if (t.nodeName) {\n        var _e13 = kt(t.nodeName);\n\n        if (!_[_e13] || z[_e13]) throw Re(\"root node is forbidden and cannot be sanitized in-place\");\n      }\n    } else if (t instanceof l) n = Pt(\"\\x3c!----\\x3e\"), o = n.ownerDocument.importNode(t, !0), o.nodeType === ti && \"BODY\" === o.nodeName || \"HTML\" === o.nodeName ? n = o : n.appendChild(o);else {\n      if (!tt && !Y && !X && -1 === t.indexOf(\"<\")) return x && it ? x.createHTML(t) : t;\n      if (n = Pt(t), !n) return tt ? null : it ? C : \"\";\n    }\n\n    n && Q && Ot(n.firstChild);\n    var u = Mt(st ? t : n);\n\n    for (; a = u.nextNode();) {\n      Wt(a), zt(a), a.content instanceof s && qt(a.content);\n    }\n\n    if (st) return t;\n\n    if (tt) {\n      if (et) for (c = R.call(n.ownerDocument); n.firstChild;) {\n        c.appendChild(n.firstChild);\n      } else c = n;\n      return (W.shadowroot || W.shadowrootmode) && (c = T.call(r, c, !0)), c;\n    }\n\n    var h = X ? n.outerHTML : n.innerHTML;\n    return X && _[\"!doctype\"] && n.ownerDocument && n.ownerDocument.doctype && n.ownerDocument.doctype.name && Se(Xe, n.ownerDocument.doctype.name) && (h = \"<!DOCTYPE \" + n.ownerDocument.doctype.name + \">\\n\" + h), Y && me([L, D, N], function (t) {\n      h = ye(h, t, \" \");\n    }), x && it ? x.createHTML(h) : h;\n  }, i.setConfig = function () {\n    Dt(arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}), Z = !0;\n  }, i.clearConfig = function () {\n    Tt = null, Z = !1;\n  }, i.isValidAttribute = function (t, e, i) {\n    Tt || Dt({});\n    var n = kt(t),\n        r = kt(e);\n    return Ut(n, r, i);\n  }, i.addHook = function (t, e) {\n    \"function\" == typeof e && fe(w[t], e);\n  }, i.removeHook = function (t) {\n    return pe(w[t]);\n  }, i.removeHooks = function (t) {\n    w[t] = [];\n  }, i.removeAllHooks = function () {\n    w = {\n      afterSanitizeAttributes: [],\n      afterSanitizeElements: [],\n      afterSanitizeShadowDOM: [],\n      beforeSanitizeAttributes: [],\n      beforeSanitizeElements: [],\n      beforeSanitizeShadowDOM: [],\n      uponSanitizeAttribute: [],\n      uponSanitizeElement: [],\n      uponSanitizeShadowNode: []\n    };\n  }, i;\n}();\n\nsi.addHook(\"uponSanitizeAttribute\", function (t, e) {\n  /^data-trix-/.test(e.attrName) && (e.forceKeepAttr = !0);\n});\nvar ai = \"style href src width height language class\".split(\" \"),\n    li = \"javascript:\".split(\" \"),\n    ci = \"script iframe form noscript\".split(\" \");\n\nvar ui = /*#__PURE__*/function (_q7) {\n  _inherits(ui, _q7);\n\n  var _super9 = _createSuper(ui);\n\n  function ui(t) {\n    var _this14;\n\n    _classCallCheck(this, ui);\n\n    var _ref13 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n        e = _ref13.allowedAttributes,\n        i = _ref13.forbiddenProtocols,\n        n = _ref13.forbiddenElements;\n\n    _this14 = _super9.apply(this, arguments), _this14.allowedAttributes = e || ai, _this14.forbiddenProtocols = i || li, _this14.forbiddenElements = n || ci, _this14.body = hi(t);\n    return _this14;\n  }\n\n  _createClass(ui, [{\n    key: \"sanitize\",\n    value: function sanitize() {\n      return this.sanitizeElements(), this.normalizeListElementNesting(), si.setConfig(l), this.body = si.sanitize(this.body), this.body;\n    }\n  }, {\n    key: \"getHTML\",\n    value: function getHTML() {\n      return this.body.innerHTML;\n    }\n  }, {\n    key: \"getBody\",\n    value: function getBody() {\n      return this.body;\n    }\n  }, {\n    key: \"sanitizeElements\",\n    value: function sanitizeElements() {\n      var t = R(this.body),\n          e = [];\n\n      for (; t.nextNode();) {\n        var _i14 = t.currentNode;\n\n        switch (_i14.nodeType) {\n          case Node.ELEMENT_NODE:\n            this.elementIsRemovable(_i14) ? e.push(_i14) : this.sanitizeElement(_i14);\n            break;\n\n          case Node.COMMENT_NODE:\n            e.push(_i14);\n        }\n      }\n\n      return e.forEach(function (t) {\n        return S(t);\n      }), this.body;\n    }\n  }, {\n    key: \"sanitizeElement\",\n    value: function sanitizeElement(t) {\n      var _this15 = this;\n\n      return t.hasAttribute(\"href\") && this.forbiddenProtocols.includes(t.protocol) && t.removeAttribute(\"href\"), Array.from(t.attributes).forEach(function (e) {\n        var i = e.name;\n        _this15.allowedAttributes.includes(i) || 0 === i.indexOf(\"data-trix\") || t.removeAttribute(i);\n      }), t;\n    }\n  }, {\n    key: \"normalizeListElementNesting\",\n    value: function normalizeListElementNesting() {\n      return Array.from(this.body.querySelectorAll(\"ul,ol\")).forEach(function (t) {\n        var e = t.previousElementSibling;\n        e && \"li\" === k(e) && e.appendChild(t);\n      }), this.body;\n    }\n  }, {\n    key: \"elementIsRemovable\",\n    value: function elementIsRemovable(t) {\n      if ((null == t ? void 0 : t.nodeType) === Node.ELEMENT_NODE) return this.elementIsForbidden(t) || this.elementIsntSerializable(t);\n    }\n  }, {\n    key: \"elementIsForbidden\",\n    value: function elementIsForbidden(t) {\n      return this.forbiddenElements.includes(k(t));\n    }\n  }, {\n    key: \"elementIsntSerializable\",\n    value: function elementIsntSerializable(t) {\n      return \"false\" === t.getAttribute(\"data-trix-serialize\") && !P(t);\n    }\n  }], [{\n    key: \"setHTML\",\n    value: function setHTML(t, e) {\n      var i = new this(e).sanitize(),\n          n = i.getHTML ? i.getHTML() : i.outerHTML;\n      t.innerHTML = n;\n    }\n  }, {\n    key: \"sanitize\",\n    value: function sanitize(t, e) {\n      var i = new this(t, e);\n      return i.sanitize(), i;\n    }\n  }]);\n\n  return ui;\n}(q);\n\nvar hi = function hi() {\n  var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : \"\";\n  t = t.replace(/<\\/html[^>]*>[^]*$/i, \"</html>\");\n  var e = document.implementation.createHTMLDocument(\"\");\n  return e.documentElement.innerHTML = t, Array.from(e.head.querySelectorAll(\"style\")).forEach(function (t) {\n    e.body.appendChild(t);\n  }), e.body;\n},\n    di = z.css;\n\nvar gi = /*#__PURE__*/function (_ie2) {\n  _inherits(gi, _ie2);\n\n  var _super10 = _createSuper(gi);\n\n  function gi() {\n    var _this16;\n\n    _classCallCheck(this, gi);\n\n    _this16 = _super10.apply(this, arguments), _this16.attachment = _this16.object, _this16.attachment.uploadProgressDelegate = _assertThisInitialized(_this16), _this16.attachmentPiece = _this16.options.piece;\n    return _this16;\n  }\n\n  _createClass(gi, [{\n    key: \"createContentNodes\",\n    value: function createContentNodes() {\n      return [];\n    }\n  }, {\n    key: \"createNodes\",\n    value: function createNodes() {\n      var t;\n      var e = t = T({\n        tagName: \"figure\",\n        className: this.getClassName(),\n        data: this.getData(),\n        editable: !1\n      }),\n          i = this.getHref();\n      return i && (t = T({\n        tagName: \"a\",\n        editable: !1,\n        attributes: {\n          href: i,\n          tabindex: -1\n        }\n      }), e.appendChild(t)), this.attachment.hasContent() ? ui.setHTML(t, this.attachment.getContent()) : this.createContentNodes().forEach(function (e) {\n        t.appendChild(e);\n      }), t.appendChild(this.createCaptionElement()), this.attachment.isPending() && (this.progressElement = T({\n        tagName: \"progress\",\n        attributes: {\n          class: di.attachmentProgress,\n          value: this.attachment.getUploadProgress(),\n          max: 100\n        },\n        data: {\n          trixMutable: !0,\n          trixStoreKey: [\"progressElement\", this.attachment.id].join(\"/\")\n        }\n      }), e.appendChild(this.progressElement)), [mi(\"left\"), e, mi(\"right\")];\n    }\n  }, {\n    key: \"createCaptionElement\",\n    value: function createCaptionElement() {\n      var t = T({\n        tagName: \"figcaption\",\n        className: di.attachmentCaption\n      }),\n          e = this.attachmentPiece.getCaption();\n      if (e) t.classList.add(\"\".concat(di.attachmentCaption, \"--edited\")), t.textContent = e;else {\n        var _e14, _i15;\n\n        var _n9 = this.getCaptionConfig();\n\n        if (_n9.name && (_e14 = this.attachment.getFilename()), _n9.size && (_i15 = this.attachment.getFormattedFilesize()), _e14) {\n          var _i16 = T({\n            tagName: \"span\",\n            className: di.attachmentName,\n            textContent: _e14\n          });\n\n          t.appendChild(_i16);\n        }\n\n        if (_i15) {\n          _e14 && t.appendChild(document.createTextNode(\" \"));\n\n          var _n10 = T({\n            tagName: \"span\",\n            className: di.attachmentSize,\n            textContent: _i15\n          });\n\n          t.appendChild(_n10);\n        }\n      }\n      return t;\n    }\n  }, {\n    key: \"getClassName\",\n    value: function getClassName() {\n      var t = [di.attachment, \"\".concat(di.attachment, \"--\").concat(this.attachment.getType())],\n          e = this.attachment.getExtension();\n      return e && t.push(\"\".concat(di.attachment, \"--\").concat(e)), t.join(\" \");\n    }\n  }, {\n    key: \"getData\",\n    value: function getData() {\n      var t = {\n        trixAttachment: JSON.stringify(this.attachment),\n        trixContentType: this.attachment.getContentType(),\n        trixId: this.attachment.id\n      },\n          e = this.attachmentPiece.attributes;\n      return e.isEmpty() || (t.trixAttributes = JSON.stringify(e)), this.attachment.isPending() && (t.trixSerialize = !1), t;\n    }\n  }, {\n    key: \"getHref\",\n    value: function getHref() {\n      if (!pi(this.attachment.getContent(), \"a\")) return this.attachment.getHref();\n    }\n  }, {\n    key: \"getCaptionConfig\",\n    value: function getCaptionConfig() {\n      var t;\n      var e = this.attachment.getType(),\n          n = kt(null === (t = i[e]) || void 0 === t ? void 0 : t.caption);\n      return \"file\" === e && (n.name = !0), n;\n    }\n  }, {\n    key: \"findProgressElement\",\n    value: function findProgressElement() {\n      var t;\n      return null === (t = this.findElement()) || void 0 === t ? void 0 : t.querySelector(\"progress\");\n    }\n  }, {\n    key: \"attachmentDidChangeUploadProgress\",\n    value: function attachmentDidChangeUploadProgress() {\n      var t = this.attachment.getUploadProgress(),\n          e = this.findProgressElement();\n      e && (e.value = t);\n    }\n  }]);\n\n  return gi;\n}(ie);\n\nvar mi = function mi(t) {\n  return T({\n    tagName: \"span\",\n    textContent: d,\n    data: {\n      trixCursorTarget: t,\n      trixSerialize: !1\n    }\n  });\n},\n    pi = function pi(t, e) {\n  var i = T(\"div\");\n  return ui.setHTML(i, t || \"\"), i.querySelector(e);\n};\n\nvar fi = /*#__PURE__*/function (_gi) {\n  _inherits(fi, _gi);\n\n  var _super11 = _createSuper(fi);\n\n  function fi() {\n    var _this17;\n\n    _classCallCheck(this, fi);\n\n    _this17 = _super11.apply(this, arguments), _this17.attachment.previewDelegate = _assertThisInitialized(_this17);\n    return _this17;\n  }\n\n  _createClass(fi, [{\n    key: \"createContentNodes\",\n    value: function createContentNodes() {\n      return this.image = T({\n        tagName: \"img\",\n        attributes: {\n          src: \"\"\n        },\n        data: {\n          trixMutable: !0\n        }\n      }), this.refresh(this.image), [this.image];\n    }\n  }, {\n    key: \"createCaptionElement\",\n    value: function createCaptionElement() {\n      var t = _get(_getPrototypeOf(fi.prototype), \"createCaptionElement\", this).apply(this, arguments);\n\n      return t.textContent || t.setAttribute(\"data-trix-placeholder\", c.captionPlaceholder), t;\n    }\n  }, {\n    key: \"refresh\",\n    value: function refresh(t) {\n      var e;\n      t || (t = null === (e = this.findElement()) || void 0 === e ? void 0 : e.querySelector(\"img\"));\n      if (t) return this.updateAttributesForImage(t);\n    }\n  }, {\n    key: \"updateAttributesForImage\",\n    value: function updateAttributesForImage(t) {\n      var e = this.attachment.getURL(),\n          i = this.attachment.getPreviewURL();\n      if (t.src = i || e, i === e) t.removeAttribute(\"data-trix-serialized-attributes\");else {\n        var _i17 = JSON.stringify({\n          src: e\n        });\n\n        t.setAttribute(\"data-trix-serialized-attributes\", _i17);\n      }\n      var n = this.attachment.getWidth(),\n          r = this.attachment.getHeight();\n      null != n && (t.width = n), null != r && (t.height = r);\n      var o = [\"imageElement\", this.attachment.id, t.src, t.width, t.height].join(\"/\");\n      t.dataset.trixStoreKey = o;\n    }\n  }, {\n    key: \"attachmentDidChangeAttributes\",\n    value: function attachmentDidChangeAttributes() {\n      return this.refresh(this.image), this.refresh();\n    }\n  }]);\n\n  return fi;\n}(gi);\n\nvar bi = /*#__PURE__*/function (_ie3) {\n  _inherits(bi, _ie3);\n\n  var _super12 = _createSuper(bi);\n\n  function bi() {\n    var _this18;\n\n    _classCallCheck(this, bi);\n\n    _this18 = _super12.apply(this, arguments), _this18.piece = _this18.object, _this18.attributes = _this18.piece.getAttributes(), _this18.textConfig = _this18.options.textConfig, _this18.context = _this18.options.context, _this18.piece.attachment ? _this18.attachment = _this18.piece.attachment : _this18.string = _this18.piece.toString();\n    return _this18;\n  }\n\n  _createClass(bi, [{\n    key: \"createNodes\",\n    value: function createNodes() {\n      var t = this.attachment ? this.createAttachmentNodes() : this.createStringNodes();\n      var e = this.createElement();\n\n      if (e) {\n        var _i18 = function (t) {\n          for (; null !== (e = t) && void 0 !== e && e.firstElementChild;) {\n            var e;\n            t = t.firstElementChild;\n          }\n\n          return t;\n        }(e);\n\n        Array.from(t).forEach(function (t) {\n          _i18.appendChild(t);\n        }), t = [e];\n      }\n\n      return t;\n    }\n  }, {\n    key: \"createAttachmentNodes\",\n    value: function createAttachmentNodes() {\n      var t = this.attachment.isPreviewable() ? fi : gi;\n      return this.createChildView(t, this.piece.attachment, {\n        piece: this.piece\n      }).getNodes();\n    }\n  }, {\n    key: \"createStringNodes\",\n    value: function createStringNodes() {\n      var t;\n      if (null !== (t = this.textConfig) && void 0 !== t && t.plaintext) return [document.createTextNode(this.string)];\n      {\n        var _t8 = [],\n            _e15 = this.string.split(\"\\n\");\n\n        for (var _i19 = 0; _i19 < _e15.length; _i19++) {\n          var _n11 = _e15[_i19];\n\n          if (_i19 > 0) {\n            var _e16 = T(\"br\");\n\n            _t8.push(_e16);\n          }\n\n          if (_n11.length) {\n            var _e17 = document.createTextNode(this.preserveSpaces(_n11));\n\n            _t8.push(_e17);\n          }\n        }\n\n        return _t8;\n      }\n    }\n  }, {\n    key: \"createElement\",\n    value: function createElement() {\n      var t, e, i;\n      var n = {};\n\n      for (e in this.attributes) {\n        i = this.attributes[e];\n\n        var _o2 = ft(e);\n\n        if (_o2) {\n          if (_o2.tagName) {\n            var r;\n\n            var _e18 = T(_o2.tagName);\n\n            r ? (r.appendChild(_e18), r = _e18) : t = r = _e18;\n          }\n\n          if (_o2.styleProperty && (n[_o2.styleProperty] = i), _o2.style) for (e in _o2.style) {\n            i = _o2.style[e], n[e] = i;\n          }\n        }\n      }\n\n      if (Object.keys(n).length) for (e in t || (t = T(\"span\")), n) {\n        i = n[e], t.style[e] = i;\n      }\n      return t;\n    }\n  }, {\n    key: \"createContainerElement\",\n    value: function createContainerElement() {\n      for (var _t9 in this.attributes) {\n        var _e19 = this.attributes[_t9],\n            _i20 = ft(_t9);\n\n        if (_i20 && _i20.groupTagName) {\n          var _n12 = {};\n          return _n12[_t9] = _e19, T(_i20.groupTagName, _n12);\n        }\n      }\n    }\n  }, {\n    key: \"preserveSpaces\",\n    value: function preserveSpaces(t) {\n      return this.context.isLast && (t = t.replace(/\\ $/, g)), t = t.replace(/(\\S)\\ {3}(\\S)/g, \"$1 \".concat(g, \" $2\")).replace(/\\ {2}/g, \"\".concat(g, \" \")).replace(/\\ {2}/g, \" \".concat(g)), (this.context.isFirst || this.context.followsWhitespace) && (t = t.replace(/^\\ /, g)), t;\n    }\n  }]);\n\n  return bi;\n}(ie);\n\nvar vi = /*#__PURE__*/function (_ie4) {\n  _inherits(vi, _ie4);\n\n  var _super13 = _createSuper(vi);\n\n  function vi() {\n    var _this19;\n\n    _classCallCheck(this, vi);\n\n    _this19 = _super13.apply(this, arguments), _this19.text = _this19.object, _this19.textConfig = _this19.options.textConfig;\n    return _this19;\n  }\n\n  _createClass(vi, [{\n    key: \"createNodes\",\n    value: function createNodes() {\n      var t = [],\n          e = Xt.groupObjects(this.getPieces()),\n          i = e.length - 1;\n\n      for (var _r5 = 0; _r5 < e.length; _r5++) {\n        var _o3 = e[_r5],\n            _s3 = {};\n        0 === _r5 && (_s3.isFirst = !0), _r5 === i && (_s3.isLast = !0), Ai(n) && (_s3.followsWhitespace = !0);\n\n        var _a = this.findOrCreateCachedChildView(bi, _o3, {\n          textConfig: this.textConfig,\n          context: _s3\n        });\n\n        t.push.apply(t, _toConsumableArray(Array.from(_a.getNodes() || [])));\n        var n = _o3;\n      }\n\n      return t;\n    }\n  }, {\n    key: \"getPieces\",\n    value: function getPieces() {\n      return Array.from(this.text.getPieces()).filter(function (t) {\n        return !t.hasAttribute(\"blockBreak\");\n      });\n    }\n  }]);\n\n  return vi;\n}(ie);\n\nvar Ai = function Ai(t) {\n  return /\\s$/.test(null == t ? void 0 : t.toString());\n},\n    yi = z.css;\n\nvar xi = /*#__PURE__*/function (_ie5) {\n  _inherits(xi, _ie5);\n\n  var _super14 = _createSuper(xi);\n\n  function xi() {\n    var _this20;\n\n    _classCallCheck(this, xi);\n\n    _this20 = _super14.apply(this, arguments), _this20.block = _this20.object, _this20.attributes = _this20.block.getAttributes();\n    return _this20;\n  }\n\n  _createClass(xi, [{\n    key: \"createNodes\",\n    value: function createNodes() {\n      var t = [document.createComment(\"block\")];\n      if (this.block.isEmpty()) t.push(T(\"br\"));else {\n        var e;\n\n        var _i21 = null === (e = mt(this.block.getLastAttribute())) || void 0 === e ? void 0 : e.text,\n            _n13 = this.findOrCreateCachedChildView(vi, this.block.text, {\n          textConfig: _i21\n        });\n\n        t.push.apply(t, _toConsumableArray(Array.from(_n13.getNodes() || []))), this.shouldAddExtraNewlineElement() && t.push(T(\"br\"));\n      }\n      if (this.attributes.length) return t;\n      {\n        var _e20;\n\n        var _i22 = n.default.tagName;\n        this.block.isRTL() && (_e20 = {\n          dir: \"rtl\"\n        });\n\n        var _r6 = T({\n          tagName: _i22,\n          attributes: _e20\n        });\n\n        return t.forEach(function (t) {\n          return _r6.appendChild(t);\n        }), [_r6];\n      }\n    }\n  }, {\n    key: \"createContainerElement\",\n    value: function createContainerElement(t) {\n      var e = {};\n      var i;\n\n      var n = this.attributes[t],\n          _mt = mt(n),\n          r = _mt.tagName,\n          _mt$htmlAttributes = _mt.htmlAttributes,\n          o = _mt$htmlAttributes === void 0 ? [] : _mt$htmlAttributes;\n\n      if (0 === t && this.block.isRTL() && Object.assign(e, {\n        dir: \"rtl\"\n      }), \"attachmentGallery\" === n) {\n        var _t10 = this.block.getBlockBreakPosition();\n\n        i = \"\".concat(yi.attachmentGallery, \" \").concat(yi.attachmentGallery, \"--\").concat(_t10);\n      }\n\n      return Object.entries(this.block.htmlAttributes).forEach(function (t) {\n        var _t11 = _slicedToArray(t, 2),\n            i = _t11[0],\n            n = _t11[1];\n\n        o.includes(i) && (e[i] = n);\n      }), T({\n        tagName: r,\n        className: i,\n        attributes: e\n      });\n    }\n  }, {\n    key: \"shouldAddExtraNewlineElement\",\n    value: function shouldAddExtraNewlineElement() {\n      return /\\n\\n$/.test(this.block.toString());\n    }\n  }]);\n\n  return xi;\n}(ie);\n\nvar Ci = /*#__PURE__*/function (_ie6) {\n  _inherits(Ci, _ie6);\n\n  var _super15 = _createSuper(Ci);\n\n  function Ci() {\n    var _this21;\n\n    _classCallCheck(this, Ci);\n\n    _this21 = _super15.apply(this, arguments), _this21.element = _this21.options.element, _this21.elementStore = new Qt(), _this21.setDocument(_this21.object);\n    return _this21;\n  }\n\n  _createClass(Ci, [{\n    key: \"setDocument\",\n    value: function setDocument(t) {\n      t.isEqualTo(this.document) || (this.document = this.object = t);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this22 = this;\n\n      if (this.childViews = [], this.shadowElement = T(\"div\"), !this.document.isEmpty()) {\n        var _t12 = Xt.groupObjects(this.document.getBlocks(), {\n          asTree: !0\n        });\n\n        Array.from(_t12).forEach(function (t) {\n          var e = _this22.findOrCreateCachedChildView(xi, t);\n\n          Array.from(e.getNodes()).map(function (t) {\n            return _this22.shadowElement.appendChild(t);\n          });\n        });\n      }\n    }\n  }, {\n    key: \"isSynced\",\n    value: function isSynced() {\n      return Si(this.shadowElement, this.element);\n    }\n  }, {\n    key: \"sync\",\n    value: function sync() {\n      var t = this.createDocumentFragmentForSync();\n\n      for (; this.element.lastChild;) {\n        this.element.removeChild(this.element.lastChild);\n      }\n\n      return this.element.appendChild(t), this.didSync();\n    }\n  }, {\n    key: \"didSync\",\n    value: function didSync() {\n      var _this23 = this;\n\n      return this.elementStore.reset(Ei(this.element)), Rt(function () {\n        return _this23.garbageCollectCachedViews();\n      });\n    }\n  }, {\n    key: \"createDocumentFragmentForSync\",\n    value: function createDocumentFragmentForSync() {\n      var _this24 = this;\n\n      var t = document.createDocumentFragment();\n      return Array.from(this.shadowElement.childNodes).forEach(function (e) {\n        t.appendChild(e.cloneNode(!0));\n      }), Array.from(Ei(t)).forEach(function (t) {\n        var e = _this24.elementStore.remove(t);\n\n        e && t.parentNode.replaceChild(e, t);\n      }), t;\n    }\n  }], [{\n    key: \"render\",\n    value: function render(t) {\n      var e = T(\"div\"),\n          i = new this(t, {\n        element: e\n      });\n      return i.render(), i.sync(), e;\n    }\n  }]);\n\n  return Ci;\n}(ie);\n\nvar Ei = function Ei(t) {\n  return t.querySelectorAll(\"[data-trix-store-key]\");\n},\n    Si = function Si(t, e) {\n  return Ri(t.innerHTML) === Ri(e.innerHTML);\n},\n    Ri = function Ri(t) {\n  return t.replace(/&nbsp;/g, \" \");\n};\n\nfunction ki(t) {\n  var e, i;\n\n  function n(e, i) {\n    try {\n      var o = t[e](i),\n          s = o.value,\n          a = s instanceof Ti;\n      Promise.resolve(a ? s.v : s).then(function (i) {\n        if (a) {\n          var l = \"return\" === e ? \"return\" : \"next\";\n          if (!s.k || i.done) return n(l, i);\n          i = t[l](i).value;\n        }\n\n        r(o.done ? \"return\" : \"normal\", i);\n      }, function (t) {\n        n(\"throw\", t);\n      });\n    } catch (t) {\n      r(\"throw\", t);\n    }\n  }\n\n  function r(t, r) {\n    switch (t) {\n      case \"return\":\n        e.resolve({\n          value: r,\n          done: !0\n        });\n        break;\n\n      case \"throw\":\n        e.reject(r);\n        break;\n\n      default:\n        e.resolve({\n          value: r,\n          done: !1\n        });\n    }\n\n    (e = e.next) ? n(e.key, e.arg) : i = null;\n  }\n\n  this._invoke = function (t, r) {\n    return new Promise(function (o, s) {\n      var a = {\n        key: t,\n        arg: r,\n        resolve: o,\n        reject: s,\n        next: null\n      };\n      i ? i = i.next = a : (e = i = a, n(t, r));\n    });\n  }, \"function\" != typeof t.return && (this.return = void 0);\n}\n\nfunction Ti(t, e) {\n  this.v = t, this.k = e;\n}\n\nfunction wi(t, e, i) {\n  return (e = Li(e)) in t ? Object.defineProperty(t, e, {\n    value: i,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : t[e] = i, t;\n}\n\nfunction Li(t) {\n  var e = function (t, e) {\n    if (\"object\" != _typeof(t) || null === t) return t;\n    var i = t[Symbol.toPrimitive];\n\n    if (void 0 !== i) {\n      var n = i.call(t, e || \"default\");\n      if (\"object\" != _typeof(n)) return n;\n      throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n    }\n\n    return (\"string\" === e ? String : Number)(t);\n  }(t, \"string\");\n\n  return \"symbol\" == _typeof(e) ? e : String(e);\n}\n\nki.prototype[\"function\" == typeof Symbol && Symbol.asyncIterator || \"@@asyncIterator\"] = function () {\n  return this;\n}, ki.prototype.next = function (t) {\n  return this._invoke(\"next\", t);\n}, ki.prototype.throw = function (t) {\n  return this._invoke(\"throw\", t);\n}, ki.prototype.return = function (t) {\n  return this._invoke(\"return\", t);\n};\n\nfunction Di(t, e) {\n  return Oi(t, Ii(t, e, \"get\"));\n}\n\nfunction Ni(t, e, i) {\n  return Fi(t, Ii(t, e, \"set\"), i), i;\n}\n\nfunction Ii(t, e, i) {\n  if (!e.has(t)) throw new TypeError(\"attempted to \" + i + \" private field on non-instance\");\n  return e.get(t);\n}\n\nfunction Oi(t, e) {\n  return e.get ? e.get.call(t) : e.value;\n}\n\nfunction Fi(t, e, i) {\n  if (e.set) e.set.call(t, i);else {\n    if (!e.writable) throw new TypeError(\"attempted to set read only private field\");\n    e.value = i;\n  }\n}\n\nfunction Pi(t, e, i) {\n  if (!e.has(t)) throw new TypeError(\"attempted to get private field on non-instance\");\n  return i;\n}\n\nfunction Mi(t, e) {\n  if (e.has(t)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n}\n\nfunction Bi(t, e, i) {\n  Mi(t, e), e.set(t, i);\n}\n\nvar _i = /*#__PURE__*/function (_rt2) {\n  _inherits(_i, _rt2);\n\n  var _super16 = _createSuper(_i);\n\n  function _i(t) {\n    var _this25;\n\n    _classCallCheck(this, _i);\n\n    var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n    _this25 = _super16.apply(this, arguments), _this25.attributes = Ht.box(e);\n    return _this25;\n  }\n\n  _createClass(_i, [{\n    key: \"copyWithAttributes\",\n    value: function copyWithAttributes(t) {\n      return new this.constructor(this.getValue(), t);\n    }\n  }, {\n    key: \"copyWithAdditionalAttributes\",\n    value: function copyWithAdditionalAttributes(t) {\n      return this.copyWithAttributes(this.attributes.merge(t));\n    }\n  }, {\n    key: \"copyWithoutAttribute\",\n    value: function copyWithoutAttribute(t) {\n      return this.copyWithAttributes(this.attributes.remove(t));\n    }\n  }, {\n    key: \"copy\",\n    value: function copy() {\n      return this.copyWithAttributes(this.attributes);\n    }\n  }, {\n    key: \"getAttribute\",\n    value: function getAttribute(t) {\n      return this.attributes.get(t);\n    }\n  }, {\n    key: \"getAttributesHash\",\n    value: function getAttributesHash() {\n      return this.attributes;\n    }\n  }, {\n    key: \"getAttributes\",\n    value: function getAttributes() {\n      return this.attributes.toObject();\n    }\n  }, {\n    key: \"hasAttribute\",\n    value: function hasAttribute(t) {\n      return this.attributes.has(t);\n    }\n  }, {\n    key: \"hasSameStringValueAsPiece\",\n    value: function hasSameStringValueAsPiece(t) {\n      return t && this.toString() === t.toString();\n    }\n  }, {\n    key: \"hasSameAttributesAsPiece\",\n    value: function hasSameAttributesAsPiece(t) {\n      return t && (this.attributes === t.attributes || this.attributes.isEqualTo(t.attributes));\n    }\n  }, {\n    key: \"isBlockBreak\",\n    value: function isBlockBreak() {\n      return !1;\n    }\n  }, {\n    key: \"isEqualTo\",\n    value: function isEqualTo(t) {\n      return _get(_getPrototypeOf(_i.prototype), \"isEqualTo\", this).apply(this, arguments) || this.hasSameConstructorAs(t) && this.hasSameStringValueAsPiece(t) && this.hasSameAttributesAsPiece(t);\n    }\n  }, {\n    key: \"isEmpty\",\n    value: function isEmpty() {\n      return 0 === this.length;\n    }\n  }, {\n    key: \"isSerializable\",\n    value: function isSerializable() {\n      return !0;\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return {\n        type: this.constructor.type,\n        attributes: this.getAttributes()\n      };\n    }\n  }, {\n    key: \"contentsForInspection\",\n    value: function contentsForInspection() {\n      return {\n        type: this.constructor.type,\n        attributes: this.attributes.inspect()\n      };\n    }\n  }, {\n    key: \"canBeGrouped\",\n    value: function canBeGrouped() {\n      return this.hasAttribute(\"href\");\n    }\n  }, {\n    key: \"canBeGroupedWith\",\n    value: function canBeGroupedWith(t) {\n      return this.getAttribute(\"href\") === t.getAttribute(\"href\");\n    }\n  }, {\n    key: \"getLength\",\n    value: function getLength() {\n      return this.length;\n    }\n  }, {\n    key: \"canBeConsolidatedWith\",\n    value: function canBeConsolidatedWith(t) {\n      return !1;\n    }\n  }], [{\n    key: \"registerType\",\n    value: function registerType(t, e) {\n      e.type = t, this.types[t] = e;\n    }\n  }, {\n    key: \"fromJSON\",\n    value: function fromJSON(t) {\n      var e = this.types[t.type];\n      if (e) return e.fromJSON(t);\n    }\n  }]);\n\n  return _i;\n}(rt);\n\nwi(_i, \"types\", {});\n\nvar ji = /*#__PURE__*/function (_ee) {\n  _inherits(ji, _ee);\n\n  var _super17 = _createSuper(ji);\n\n  function ji(t) {\n    var _this26;\n\n    _classCallCheck(this, ji);\n\n    _this26 = _super17.apply(this, arguments), _this26.url = t;\n    return _this26;\n  }\n\n  _createClass(ji, [{\n    key: \"perform\",\n    value: function perform(t) {\n      var _this27 = this;\n\n      var e = new Image();\n      e.onload = function () {\n        return e.width = _this27.width = e.naturalWidth, e.height = _this27.height = e.naturalHeight, t(!0, e);\n      }, e.onerror = function () {\n        return t(!1);\n      }, e.src = this.url;\n    }\n  }]);\n\n  return ji;\n}(ee);\n\nvar Wi = /*#__PURE__*/function (_rt3) {\n  _inherits(Wi, _rt3);\n\n  var _super18 = _createSuper(Wi);\n\n  function Wi() {\n    var _this28;\n\n    _classCallCheck(this, Wi);\n\n    var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n    _this28 = _super18.call(this, t), _this28.releaseFile = _this28.releaseFile.bind(_assertThisInitialized(_this28)), _this28.attributes = Ht.box(t), _this28.didChangeAttributes();\n    return _this28;\n  }\n\n  _createClass(Wi, [{\n    key: \"getAttribute\",\n    value: function getAttribute(t) {\n      return this.attributes.get(t);\n    }\n  }, {\n    key: \"hasAttribute\",\n    value: function hasAttribute(t) {\n      return this.attributes.has(t);\n    }\n  }, {\n    key: \"getAttributes\",\n    value: function getAttributes() {\n      return this.attributes.toObject();\n    }\n  }, {\n    key: \"setAttributes\",\n    value: function setAttributes() {\n      var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n      var e = this.attributes.merge(t);\n      var i, n, r, o;\n      if (!this.attributes.isEqualTo(e)) return this.attributes = e, this.didChangeAttributes(), null === (i = this.previewDelegate) || void 0 === i || null === (n = i.attachmentDidChangeAttributes) || void 0 === n || n.call(i, this), null === (r = this.delegate) || void 0 === r || null === (o = r.attachmentDidChangeAttributes) || void 0 === o ? void 0 : o.call(r, this);\n    }\n  }, {\n    key: \"didChangeAttributes\",\n    value: function didChangeAttributes() {\n      if (this.isPreviewable()) return this.preloadURL();\n    }\n  }, {\n    key: \"isPending\",\n    value: function isPending() {\n      return null != this.file && !(this.getURL() || this.getHref());\n    }\n  }, {\n    key: \"isPreviewable\",\n    value: function isPreviewable() {\n      return this.attributes.has(\"previewable\") ? this.attributes.get(\"previewable\") : Wi.previewablePattern.test(this.getContentType());\n    }\n  }, {\n    key: \"getType\",\n    value: function getType() {\n      return this.hasContent() ? \"content\" : this.isPreviewable() ? \"preview\" : \"file\";\n    }\n  }, {\n    key: \"getURL\",\n    value: function getURL() {\n      return this.attributes.get(\"url\");\n    }\n  }, {\n    key: \"getHref\",\n    value: function getHref() {\n      return this.attributes.get(\"href\");\n    }\n  }, {\n    key: \"getFilename\",\n    value: function getFilename() {\n      return this.attributes.get(\"filename\") || \"\";\n    }\n  }, {\n    key: \"getFilesize\",\n    value: function getFilesize() {\n      return this.attributes.get(\"filesize\");\n    }\n  }, {\n    key: \"getFormattedFilesize\",\n    value: function getFormattedFilesize() {\n      var t = this.attributes.get(\"filesize\");\n      return \"number\" == typeof t ? h.formatter(t) : \"\";\n    }\n  }, {\n    key: \"getExtension\",\n    value: function getExtension() {\n      var t;\n      return null === (t = this.getFilename().match(/\\.(\\w+)$/)) || void 0 === t ? void 0 : t[1].toLowerCase();\n    }\n  }, {\n    key: \"getContentType\",\n    value: function getContentType() {\n      return this.attributes.get(\"contentType\");\n    }\n  }, {\n    key: \"hasContent\",\n    value: function hasContent() {\n      return this.attributes.has(\"content\");\n    }\n  }, {\n    key: \"getContent\",\n    value: function getContent() {\n      return this.attributes.get(\"content\");\n    }\n  }, {\n    key: \"getWidth\",\n    value: function getWidth() {\n      return this.attributes.get(\"width\");\n    }\n  }, {\n    key: \"getHeight\",\n    value: function getHeight() {\n      return this.attributes.get(\"height\");\n    }\n  }, {\n    key: \"getFile\",\n    value: function getFile() {\n      return this.file;\n    }\n  }, {\n    key: \"setFile\",\n    value: function setFile(t) {\n      if (this.file = t, this.isPreviewable()) return this.preloadFile();\n    }\n  }, {\n    key: \"releaseFile\",\n    value: function releaseFile() {\n      this.releasePreloadedFile(), this.file = null;\n    }\n  }, {\n    key: \"getUploadProgress\",\n    value: function getUploadProgress() {\n      return null != this.uploadProgress ? this.uploadProgress : 0;\n    }\n  }, {\n    key: \"setUploadProgress\",\n    value: function setUploadProgress(t) {\n      var e, i;\n      if (this.uploadProgress !== t) return this.uploadProgress = t, null === (e = this.uploadProgressDelegate) || void 0 === e || null === (i = e.attachmentDidChangeUploadProgress) || void 0 === i ? void 0 : i.call(e, this);\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return this.getAttributes();\n    }\n  }, {\n    key: \"getCacheKey\",\n    value: function getCacheKey() {\n      return [_get(_getPrototypeOf(Wi.prototype), \"getCacheKey\", this).apply(this, arguments), this.attributes.getCacheKey(), this.getPreviewURL()].join(\"/\");\n    }\n  }, {\n    key: \"getPreviewURL\",\n    value: function getPreviewURL() {\n      return this.previewURL || this.preloadingURL;\n    }\n  }, {\n    key: \"setPreviewURL\",\n    value: function setPreviewURL(t) {\n      var e, i, n, r;\n      if (t !== this.getPreviewURL()) return this.previewURL = t, null === (e = this.previewDelegate) || void 0 === e || null === (i = e.attachmentDidChangeAttributes) || void 0 === i || i.call(e, this), null === (n = this.delegate) || void 0 === n || null === (r = n.attachmentDidChangePreviewURL) || void 0 === r ? void 0 : r.call(n, this);\n    }\n  }, {\n    key: \"preloadURL\",\n    value: function preloadURL() {\n      return this.preload(this.getURL(), this.releaseFile);\n    }\n  }, {\n    key: \"preloadFile\",\n    value: function preloadFile() {\n      if (this.file) return this.fileObjectURL = URL.createObjectURL(this.file), this.preload(this.fileObjectURL);\n    }\n  }, {\n    key: \"releasePreloadedFile\",\n    value: function releasePreloadedFile() {\n      this.fileObjectURL && (URL.revokeObjectURL(this.fileObjectURL), this.fileObjectURL = null);\n    }\n  }, {\n    key: \"preload\",\n    value: function preload(t, e) {\n      var _this29 = this;\n\n      if (t && t !== this.getPreviewURL()) {\n        this.preloadingURL = t;\n        return new ji(t).then(function (i) {\n          var n = i.width,\n              r = i.height;\n          return _this29.getWidth() && _this29.getHeight() || _this29.setAttributes({\n            width: n,\n            height: r\n          }), _this29.preloadingURL = null, _this29.setPreviewURL(t), null == e ? void 0 : e();\n        }).catch(function () {\n          return _this29.preloadingURL = null, null == e ? void 0 : e();\n        });\n      }\n    }\n  }], [{\n    key: \"attachmentForFile\",\n    value: function attachmentForFile(t) {\n      var e = new this(this.attributesForFile(t));\n      return e.setFile(t), e;\n    }\n  }, {\n    key: \"attributesForFile\",\n    value: function attributesForFile(t) {\n      return new Ht({\n        filename: t.name,\n        filesize: t.size,\n        contentType: t.type\n      });\n    }\n  }, {\n    key: \"fromJSON\",\n    value: function fromJSON(t) {\n      return new this(t);\n    }\n  }]);\n\n  return Wi;\n}(rt);\n\nwi(Wi, \"previewablePattern\", /^image(\\/(gif|png|webp|jpe?g)|$)/);\n\nvar Ui = /*#__PURE__*/function (_i23) {\n  _inherits(Ui, _i23);\n\n  var _super19 = _createSuper(Ui);\n\n  function Ui(t) {\n    var _this30;\n\n    _classCallCheck(this, Ui);\n\n    _this30 = _super19.apply(this, arguments), _this30.attachment = t, _this30.length = 1, _this30.ensureAttachmentExclusivelyHasAttribute(\"href\"), _this30.attachment.hasContent() || _this30.removeProhibitedAttributes();\n    return _this30;\n  }\n\n  _createClass(Ui, [{\n    key: \"ensureAttachmentExclusivelyHasAttribute\",\n    value: function ensureAttachmentExclusivelyHasAttribute(t) {\n      this.hasAttribute(t) && (this.attachment.hasAttribute(t) || this.attachment.setAttributes(this.attributes.slice([t])), this.attributes = this.attributes.remove(t));\n    }\n  }, {\n    key: \"removeProhibitedAttributes\",\n    value: function removeProhibitedAttributes() {\n      var t = this.attributes.slice(Ui.permittedAttributes);\n      t.isEqualTo(this.attributes) || (this.attributes = t);\n    }\n  }, {\n    key: \"getValue\",\n    value: function getValue() {\n      return this.attachment;\n    }\n  }, {\n    key: \"isSerializable\",\n    value: function isSerializable() {\n      return !this.attachment.isPending();\n    }\n  }, {\n    key: \"getCaption\",\n    value: function getCaption() {\n      return this.attributes.get(\"caption\") || \"\";\n    }\n  }, {\n    key: \"isEqualTo\",\n    value: function isEqualTo(t) {\n      var e;\n      return _get(_getPrototypeOf(Ui.prototype), \"isEqualTo\", this).call(this, t) && this.attachment.id === (null == t || null === (e = t.attachment) || void 0 === e ? void 0 : e.id);\n    }\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      return \"\";\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      var t = _get(_getPrototypeOf(Ui.prototype), \"toJSON\", this).apply(this, arguments);\n\n      return t.attachment = this.attachment, t;\n    }\n  }, {\n    key: \"getCacheKey\",\n    value: function getCacheKey() {\n      return [_get(_getPrototypeOf(Ui.prototype), \"getCacheKey\", this).apply(this, arguments), this.attachment.getCacheKey()].join(\"/\");\n    }\n  }, {\n    key: \"toConsole\",\n    value: function toConsole() {\n      return JSON.stringify(this.toString());\n    }\n  }], [{\n    key: \"fromJSON\",\n    value: function fromJSON(t) {\n      return new this(Wi.fromJSON(t.attachment), t.attributes);\n    }\n  }]);\n\n  return Ui;\n}(_i);\n\nwi(Ui, \"permittedAttributes\", [\"caption\", \"presentation\"]), _i.registerType(\"attachment\", Ui);\n\nvar Vi = /*#__PURE__*/function (_i24) {\n  _inherits(Vi, _i24);\n\n  var _super20 = _createSuper(Vi);\n\n  function Vi(t) {\n    var _this31;\n\n    _classCallCheck(this, Vi);\n\n    _this31 = _super20.apply(this, arguments), _this31.string = function (t) {\n      return t.replace(/\\r\\n?/g, \"\\n\");\n    }(t), _this31.length = _this31.string.length;\n    return _this31;\n  }\n\n  _createClass(Vi, [{\n    key: \"getValue\",\n    value: function getValue() {\n      return this.string;\n    }\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      return this.string.toString();\n    }\n  }, {\n    key: \"isBlockBreak\",\n    value: function isBlockBreak() {\n      return \"\\n\" === this.toString() && !0 === this.getAttribute(\"blockBreak\");\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      var t = _get(_getPrototypeOf(Vi.prototype), \"toJSON\", this).apply(this, arguments);\n\n      return t.string = this.string, t;\n    }\n  }, {\n    key: \"canBeConsolidatedWith\",\n    value: function canBeConsolidatedWith(t) {\n      return t && this.hasSameConstructorAs(t) && this.hasSameAttributesAsPiece(t);\n    }\n  }, {\n    key: \"consolidateWith\",\n    value: function consolidateWith(t) {\n      return new this.constructor(this.toString() + t.toString(), this.attributes);\n    }\n  }, {\n    key: \"splitAtOffset\",\n    value: function splitAtOffset(t) {\n      var e, i;\n      return 0 === t ? (e = null, i = this) : t === this.length ? (e = this, i = null) : (e = new this.constructor(this.string.slice(0, t), this.attributes), i = new this.constructor(this.string.slice(t), this.attributes)), [e, i];\n    }\n  }, {\n    key: \"toConsole\",\n    value: function toConsole() {\n      var t = this.string;\n      return t.length > 15 && (t = t.slice(0, 14) + \"…\"), JSON.stringify(t.toString());\n    }\n  }], [{\n    key: \"fromJSON\",\n    value: function fromJSON(t) {\n      return new this(t.string, t.attributes);\n    }\n  }]);\n\n  return Vi;\n}(_i);\n\n_i.registerType(\"string\", Vi);\n\nvar zi = /*#__PURE__*/function (_rt4) {\n  _inherits(zi, _rt4);\n\n  var _super21 = _createSuper(zi);\n\n  function zi() {\n    var _this32;\n\n    _classCallCheck(this, zi);\n\n    var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\n    _this32 = _super21.apply(this, arguments), _this32.objects = t.slice(0), _this32.length = _this32.objects.length;\n    return _this32;\n  }\n\n  _createClass(zi, [{\n    key: \"indexOf\",\n    value: function indexOf(t) {\n      return this.objects.indexOf(t);\n    }\n  }, {\n    key: \"splice\",\n    value: function splice() {\n      for (var t = arguments.length, e = new Array(t), i = 0; i < t; i++) {\n        e[i] = arguments[i];\n      }\n\n      return new this.constructor(st.apply(void 0, [this.objects].concat(e)));\n    }\n  }, {\n    key: \"eachObject\",\n    value: function eachObject(t) {\n      return this.objects.map(function (e, i) {\n        return t(e, i);\n      });\n    }\n  }, {\n    key: \"insertObjectAtIndex\",\n    value: function insertObjectAtIndex(t, e) {\n      return this.splice(e, 0, t);\n    }\n  }, {\n    key: \"insertSplittableListAtIndex\",\n    value: function insertSplittableListAtIndex(t, e) {\n      return this.splice.apply(this, [e, 0].concat(_toConsumableArray(t.objects)));\n    }\n  }, {\n    key: \"insertSplittableListAtPosition\",\n    value: function insertSplittableListAtPosition(t, e) {\n      var _this$splitObjectAtPo = this.splitObjectAtPosition(e),\n          _this$splitObjectAtPo2 = _slicedToArray(_this$splitObjectAtPo, 2),\n          i = _this$splitObjectAtPo2[0],\n          n = _this$splitObjectAtPo2[1];\n\n      return new this.constructor(i).insertSplittableListAtIndex(t, n);\n    }\n  }, {\n    key: \"editObjectAtIndex\",\n    value: function editObjectAtIndex(t, e) {\n      return this.replaceObjectAtIndex(e(this.objects[t]), t);\n    }\n  }, {\n    key: \"replaceObjectAtIndex\",\n    value: function replaceObjectAtIndex(t, e) {\n      return this.splice(e, 1, t);\n    }\n  }, {\n    key: \"removeObjectAtIndex\",\n    value: function removeObjectAtIndex(t) {\n      return this.splice(t, 1);\n    }\n  }, {\n    key: \"getObjectAtIndex\",\n    value: function getObjectAtIndex(t) {\n      return this.objects[t];\n    }\n  }, {\n    key: \"getSplittableListInRange\",\n    value: function getSplittableListInRange(t) {\n      var _this$splitObjectsAtR = this.splitObjectsAtRange(t),\n          _this$splitObjectsAtR2 = _slicedToArray(_this$splitObjectsAtR, 3),\n          e = _this$splitObjectsAtR2[0],\n          i = _this$splitObjectsAtR2[1],\n          n = _this$splitObjectsAtR2[2];\n\n      return new this.constructor(e.slice(i, n + 1));\n    }\n  }, {\n    key: \"selectSplittableList\",\n    value: function selectSplittableList(t) {\n      var e = this.objects.filter(function (e) {\n        return t(e);\n      });\n      return new this.constructor(e);\n    }\n  }, {\n    key: \"removeObjectsInRange\",\n    value: function removeObjectsInRange(t) {\n      var _this$splitObjectsAtR3 = this.splitObjectsAtRange(t),\n          _this$splitObjectsAtR4 = _slicedToArray(_this$splitObjectsAtR3, 3),\n          e = _this$splitObjectsAtR4[0],\n          i = _this$splitObjectsAtR4[1],\n          n = _this$splitObjectsAtR4[2];\n\n      return new this.constructor(e).splice(i, n - i + 1);\n    }\n  }, {\n    key: \"transformObjectsInRange\",\n    value: function transformObjectsInRange(t, e) {\n      var _this$splitObjectsAtR5 = this.splitObjectsAtRange(t),\n          _this$splitObjectsAtR6 = _slicedToArray(_this$splitObjectsAtR5, 3),\n          i = _this$splitObjectsAtR6[0],\n          n = _this$splitObjectsAtR6[1],\n          r = _this$splitObjectsAtR6[2],\n          o = i.map(function (t, i) {\n        return n <= i && i <= r ? e(t) : t;\n      });\n\n      return new this.constructor(o);\n    }\n  }, {\n    key: \"splitObjectsAtRange\",\n    value: function splitObjectsAtRange(t) {\n      var _this$constructor$spl, _this$constructor$spl2;\n\n      var e,\n          _this$splitObjectAtPo3 = this.splitObjectAtPosition(Hi(t)),\n          _this$splitObjectAtPo4 = _slicedToArray(_this$splitObjectAtPo3, 3),\n          i = _this$splitObjectAtPo4[0],\n          n = _this$splitObjectAtPo4[1],\n          r = _this$splitObjectAtPo4[2];\n\n      return (_this$constructor$spl = new this.constructor(i).splitObjectAtPosition(Ji(t) + r), _this$constructor$spl2 = _slicedToArray(_this$constructor$spl, 2), i = _this$constructor$spl2[0], e = _this$constructor$spl2[1], _this$constructor$spl), [i, n, e - 1];\n    }\n  }, {\n    key: \"getObjectAtPosition\",\n    value: function getObjectAtPosition(t) {\n      var _this$findIndexAndOff = this.findIndexAndOffsetAtPosition(t),\n          e = _this$findIndexAndOff.index;\n\n      return this.objects[e];\n    }\n  }, {\n    key: \"splitObjectAtPosition\",\n    value: function splitObjectAtPosition(t) {\n      var e, i;\n\n      var _this$findIndexAndOff2 = this.findIndexAndOffsetAtPosition(t),\n          n = _this$findIndexAndOff2.index,\n          r = _this$findIndexAndOff2.offset,\n          o = this.objects.slice(0);\n\n      if (null != n) {\n        if (0 === r) e = n, i = 0;else {\n          var _t13 = this.getObjectAtIndex(n),\n              _t13$splitAtOffset = _t13.splitAtOffset(r),\n              _t13$splitAtOffset2 = _slicedToArray(_t13$splitAtOffset, 2),\n              _s4 = _t13$splitAtOffset2[0],\n              _a2 = _t13$splitAtOffset2[1];\n\n          o.splice(n, 1, _s4, _a2), e = n + 1, i = _s4.getLength() - r;\n        }\n      } else e = o.length, i = 0;\n      return [o, e, i];\n    }\n  }, {\n    key: \"consolidate\",\n    value: function consolidate() {\n      var t = [];\n      var e = this.objects[0];\n      return this.objects.slice(1).forEach(function (i) {\n        var n, r;\n        null !== (n = (r = e).canBeConsolidatedWith) && void 0 !== n && n.call(r, i) ? e = e.consolidateWith(i) : (t.push(e), e = i);\n      }), e && t.push(e), new this.constructor(t);\n    }\n  }, {\n    key: \"consolidateFromIndexToIndex\",\n    value: function consolidateFromIndexToIndex(t, e) {\n      var i = this.objects.slice(0).slice(t, e + 1),\n          n = new this.constructor(i).consolidate().toArray();\n      return this.splice.apply(this, [t, i.length].concat(_toConsumableArray(n)));\n    }\n  }, {\n    key: \"findIndexAndOffsetAtPosition\",\n    value: function findIndexAndOffsetAtPosition(t) {\n      var e,\n          i = 0;\n\n      for (e = 0; e < this.objects.length; e++) {\n        var _n14 = i + this.objects[e].getLength();\n\n        if (i <= t && t < _n14) return {\n          index: e,\n          offset: t - i\n        };\n        i = _n14;\n      }\n\n      return {\n        index: null,\n        offset: null\n      };\n    }\n  }, {\n    key: \"findPositionAtIndexAndOffset\",\n    value: function findPositionAtIndexAndOffset(t, e) {\n      var i = 0;\n\n      for (var _n15 = 0; _n15 < this.objects.length; _n15++) {\n        var _r7 = this.objects[_n15];\n        if (_n15 < t) i += _r7.getLength();else if (_n15 === t) {\n          i += e;\n          break;\n        }\n      }\n\n      return i;\n    }\n  }, {\n    key: \"getEndPosition\",\n    value: function getEndPosition() {\n      var _this33 = this;\n\n      return null == this.endPosition && (this.endPosition = 0, this.objects.forEach(function (t) {\n        return _this33.endPosition += t.getLength();\n      })), this.endPosition;\n    }\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      return this.objects.join(\"\");\n    }\n  }, {\n    key: \"toArray\",\n    value: function toArray() {\n      return this.objects.slice(0);\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return this.toArray();\n    }\n  }, {\n    key: \"isEqualTo\",\n    value: function isEqualTo(t) {\n      return _get(_getPrototypeOf(zi.prototype), \"isEqualTo\", this).apply(this, arguments) || qi(this.objects, null == t ? void 0 : t.objects);\n    }\n  }, {\n    key: \"contentsForInspection\",\n    value: function contentsForInspection() {\n      return {\n        objects: \"[\".concat(this.objects.map(function (t) {\n          return t.inspect();\n        }).join(\", \"), \"]\")\n      };\n    }\n  }], [{\n    key: \"box\",\n    value: function box(t) {\n      return t instanceof this ? t : new this(t);\n    }\n  }]);\n\n  return zi;\n}(rt);\n\nvar qi = function qi(t) {\n  var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [];\n  if (t.length !== e.length) return !1;\n  var i = !0;\n\n  for (var _n16 = 0; _n16 < t.length; _n16++) {\n    var _r8 = t[_n16];\n    i && !_r8.isEqualTo(e[_n16]) && (i = !1);\n  }\n\n  return i;\n},\n    Hi = function Hi(t) {\n  return t[0];\n},\n    Ji = function Ji(t) {\n  return t[1];\n};\n\nvar Ki = /*#__PURE__*/function (_rt5) {\n  _inherits(Ki, _rt5);\n\n  var _super22 = _createSuper(Ki);\n\n  function Ki() {\n    var _this34;\n\n    _classCallCheck(this, Ki);\n\n    var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\n    _this34 = _super22.apply(this, arguments);\n    var e = t.filter(function (t) {\n      return !t.isEmpty();\n    });\n    _this34.pieceList = new zi(e);\n    return _this34;\n  }\n\n  _createClass(Ki, [{\n    key: \"copy\",\n    value: function copy() {\n      return this.copyWithPieceList(this.pieceList);\n    }\n  }, {\n    key: \"copyWithPieceList\",\n    value: function copyWithPieceList(t) {\n      return new this.constructor(t.consolidate().toArray());\n    }\n  }, {\n    key: \"copyUsingObjectMap\",\n    value: function copyUsingObjectMap(t) {\n      var e = this.getPieces().map(function (e) {\n        return t.find(e) || e;\n      });\n      return new this.constructor(e);\n    }\n  }, {\n    key: \"appendText\",\n    value: function appendText(t) {\n      return this.insertTextAtPosition(t, this.getLength());\n    }\n  }, {\n    key: \"insertTextAtPosition\",\n    value: function insertTextAtPosition(t, e) {\n      return this.copyWithPieceList(this.pieceList.insertSplittableListAtPosition(t.pieceList, e));\n    }\n  }, {\n    key: \"removeTextAtRange\",\n    value: function removeTextAtRange(t) {\n      return this.copyWithPieceList(this.pieceList.removeObjectsInRange(t));\n    }\n  }, {\n    key: \"replaceTextAtRange\",\n    value: function replaceTextAtRange(t, e) {\n      return this.removeTextAtRange(e).insertTextAtPosition(t, e[0]);\n    }\n  }, {\n    key: \"moveTextFromRangeToPosition\",\n    value: function moveTextFromRangeToPosition(t, e) {\n      if (t[0] <= e && e <= t[1]) return;\n      var i = this.getTextAtRange(t),\n          n = i.getLength();\n      return t[0] < e && (e -= n), this.removeTextAtRange(t).insertTextAtPosition(i, e);\n    }\n  }, {\n    key: \"addAttributeAtRange\",\n    value: function addAttributeAtRange(t, e, i) {\n      var n = {};\n      return n[t] = e, this.addAttributesAtRange(n, i);\n    }\n  }, {\n    key: \"addAttributesAtRange\",\n    value: function addAttributesAtRange(t, e) {\n      return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e, function (e) {\n        return e.copyWithAdditionalAttributes(t);\n      }));\n    }\n  }, {\n    key: \"removeAttributeAtRange\",\n    value: function removeAttributeAtRange(t, e) {\n      return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e, function (e) {\n        return e.copyWithoutAttribute(t);\n      }));\n    }\n  }, {\n    key: \"setAttributesAtRange\",\n    value: function setAttributesAtRange(t, e) {\n      return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e, function (e) {\n        return e.copyWithAttributes(t);\n      }));\n    }\n  }, {\n    key: \"getAttributesAtPosition\",\n    value: function getAttributesAtPosition(t) {\n      var e;\n      return (null === (e = this.pieceList.getObjectAtPosition(t)) || void 0 === e ? void 0 : e.getAttributes()) || {};\n    }\n  }, {\n    key: \"getCommonAttributes\",\n    value: function getCommonAttributes() {\n      var t = Array.from(this.pieceList.toArray()).map(function (t) {\n        return t.getAttributes();\n      });\n      return Ht.fromCommonAttributesOfObjects(t).toObject();\n    }\n  }, {\n    key: \"getCommonAttributesAtRange\",\n    value: function getCommonAttributesAtRange(t) {\n      return this.getTextAtRange(t).getCommonAttributes() || {};\n    }\n  }, {\n    key: \"getExpandedRangeForAttributeAtOffset\",\n    value: function getExpandedRangeForAttributeAtOffset(t, e) {\n      var i,\n          n = i = e;\n      var r = this.getLength();\n\n      for (; n > 0 && this.getCommonAttributesAtRange([n - 1, i])[t];) {\n        n--;\n      }\n\n      for (; i < r && this.getCommonAttributesAtRange([e, i + 1])[t];) {\n        i++;\n      }\n\n      return [n, i];\n    }\n  }, {\n    key: \"getTextAtRange\",\n    value: function getTextAtRange(t) {\n      return this.copyWithPieceList(this.pieceList.getSplittableListInRange(t));\n    }\n  }, {\n    key: \"getStringAtRange\",\n    value: function getStringAtRange(t) {\n      return this.pieceList.getSplittableListInRange(t).toString();\n    }\n  }, {\n    key: \"getStringAtPosition\",\n    value: function getStringAtPosition(t) {\n      return this.getStringAtRange([t, t + 1]);\n    }\n  }, {\n    key: \"startsWithString\",\n    value: function startsWithString(t) {\n      return this.getStringAtRange([0, t.length]) === t;\n    }\n  }, {\n    key: \"endsWithString\",\n    value: function endsWithString(t) {\n      var e = this.getLength();\n      return this.getStringAtRange([e - t.length, e]) === t;\n    }\n  }, {\n    key: \"getAttachmentPieces\",\n    value: function getAttachmentPieces() {\n      return this.pieceList.toArray().filter(function (t) {\n        return !!t.attachment;\n      });\n    }\n  }, {\n    key: \"getAttachments\",\n    value: function getAttachments() {\n      return this.getAttachmentPieces().map(function (t) {\n        return t.attachment;\n      });\n    }\n  }, {\n    key: \"getAttachmentAndPositionById\",\n    value: function getAttachmentAndPositionById(t) {\n      var e = 0;\n\n      var _iterator3 = _createForOfIteratorHelper(this.pieceList.toArray()),\n          _step3;\n\n      try {\n        for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n          var _n17 = _step3.value;\n          var i;\n          if ((null === (i = _n17.attachment) || void 0 === i ? void 0 : i.id) === t) return {\n            attachment: _n17.attachment,\n            position: e\n          };\n          e += _n17.length;\n        }\n      } catch (err) {\n        _iterator3.e(err);\n      } finally {\n        _iterator3.f();\n      }\n\n      return {\n        attachment: null,\n        position: null\n      };\n    }\n  }, {\n    key: \"getAttachmentById\",\n    value: function getAttachmentById(t) {\n      var _this$getAttachmentAn = this.getAttachmentAndPositionById(t),\n          e = _this$getAttachmentAn.attachment;\n\n      return e;\n    }\n  }, {\n    key: \"getRangeOfAttachment\",\n    value: function getRangeOfAttachment(t) {\n      var e = this.getAttachmentAndPositionById(t.id),\n          i = e.position;\n      if (t = e.attachment) return [i, i + 1];\n    }\n  }, {\n    key: \"updateAttributesForAttachment\",\n    value: function updateAttributesForAttachment(t, e) {\n      var i = this.getRangeOfAttachment(e);\n      return i ? this.addAttributesAtRange(t, i) : this;\n    }\n  }, {\n    key: \"getLength\",\n    value: function getLength() {\n      return this.pieceList.getEndPosition();\n    }\n  }, {\n    key: \"isEmpty\",\n    value: function isEmpty() {\n      return 0 === this.getLength();\n    }\n  }, {\n    key: \"isEqualTo\",\n    value: function isEqualTo(t) {\n      var e;\n      return _get(_getPrototypeOf(Ki.prototype), \"isEqualTo\", this).call(this, t) || (null == t || null === (e = t.pieceList) || void 0 === e ? void 0 : e.isEqualTo(this.pieceList));\n    }\n  }, {\n    key: \"isBlockBreak\",\n    value: function isBlockBreak() {\n      return 1 === this.getLength() && this.pieceList.getObjectAtIndex(0).isBlockBreak();\n    }\n  }, {\n    key: \"eachPiece\",\n    value: function eachPiece(t) {\n      return this.pieceList.eachObject(t);\n    }\n  }, {\n    key: \"getPieces\",\n    value: function getPieces() {\n      return this.pieceList.toArray();\n    }\n  }, {\n    key: \"getPieceAtPosition\",\n    value: function getPieceAtPosition(t) {\n      return this.pieceList.getObjectAtPosition(t);\n    }\n  }, {\n    key: \"contentsForInspection\",\n    value: function contentsForInspection() {\n      return {\n        pieceList: this.pieceList.inspect()\n      };\n    }\n  }, {\n    key: \"toSerializableText\",\n    value: function toSerializableText() {\n      var t = this.pieceList.selectSplittableList(function (t) {\n        return t.isSerializable();\n      });\n      return this.copyWithPieceList(t);\n    }\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      return this.pieceList.toString();\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return this.pieceList.toJSON();\n    }\n  }, {\n    key: \"toConsole\",\n    value: function toConsole() {\n      return JSON.stringify(this.pieceList.toArray().map(function (t) {\n        return JSON.parse(t.toConsole());\n      }));\n    }\n  }, {\n    key: \"getDirection\",\n    value: function getDirection() {\n      return lt(this.toString());\n    }\n  }, {\n    key: \"isRTL\",\n    value: function isRTL() {\n      return \"rtl\" === this.getDirection();\n    }\n  }], [{\n    key: \"textForAttachmentWithAttributes\",\n    value: function textForAttachmentWithAttributes(t, e) {\n      return new this([new Ui(t, e)]);\n    }\n  }, {\n    key: \"textForStringWithAttributes\",\n    value: function textForStringWithAttributes(t, e) {\n      return new this([new Vi(t, e)]);\n    }\n  }, {\n    key: \"fromJSON\",\n    value: function fromJSON(t) {\n      return new this(Array.from(t).map(function (t) {\n        return _i.fromJSON(t);\n      }));\n    }\n  }]);\n\n  return Ki;\n}(rt);\n\nvar Gi = /*#__PURE__*/function (_rt6) {\n  _inherits(Gi, _rt6);\n\n  var _super23 = _createSuper(Gi);\n\n  function Gi(t, e, i) {\n    var _this35;\n\n    _classCallCheck(this, Gi);\n\n    _this35 = _super23.apply(this, arguments), _this35.text = Yi(t || new Ki()), _this35.attributes = e || [], _this35.htmlAttributes = i || {};\n    return _this35;\n  }\n\n  _createClass(Gi, [{\n    key: \"isEmpty\",\n    value: function isEmpty() {\n      return this.text.isBlockBreak();\n    }\n  }, {\n    key: \"isEqualTo\",\n    value: function isEqualTo(t) {\n      return !!_get(_getPrototypeOf(Gi.prototype), \"isEqualTo\", this).call(this, t) || this.text.isEqualTo(null == t ? void 0 : t.text) && ot(this.attributes, null == t ? void 0 : t.attributes) && Tt(this.htmlAttributes, null == t ? void 0 : t.htmlAttributes);\n    }\n  }, {\n    key: \"copyWithText\",\n    value: function copyWithText(t) {\n      return new Gi(t, this.attributes, this.htmlAttributes);\n    }\n  }, {\n    key: \"copyWithoutText\",\n    value: function copyWithoutText() {\n      return this.copyWithText(null);\n    }\n  }, {\n    key: \"copyWithAttributes\",\n    value: function copyWithAttributes(t) {\n      return new Gi(this.text, t, this.htmlAttributes);\n    }\n  }, {\n    key: \"copyWithoutAttributes\",\n    value: function copyWithoutAttributes() {\n      return this.copyWithAttributes(null);\n    }\n  }, {\n    key: \"copyUsingObjectMap\",\n    value: function copyUsingObjectMap(t) {\n      var e = t.find(this.text);\n      return e ? this.copyWithText(e) : this.copyWithText(this.text.copyUsingObjectMap(t));\n    }\n  }, {\n    key: \"addAttribute\",\n    value: function addAttribute(t) {\n      var e = this.attributes.concat(en(t));\n      return this.copyWithAttributes(e);\n    }\n  }, {\n    key: \"addHTMLAttribute\",\n    value: function addHTMLAttribute(t, e) {\n      var i = Object.assign({}, this.htmlAttributes, _defineProperty({}, t, e));\n      return new Gi(this.text, this.attributes, i);\n    }\n  }, {\n    key: \"removeAttribute\",\n    value: function removeAttribute(t) {\n      var _mt2 = mt(t),\n          e = _mt2.listAttribute,\n          i = rn(rn(this.attributes, t), e);\n\n      return this.copyWithAttributes(i);\n    }\n  }, {\n    key: \"removeLastAttribute\",\n    value: function removeLastAttribute() {\n      return this.removeAttribute(this.getLastAttribute());\n    }\n  }, {\n    key: \"getLastAttribute\",\n    value: function getLastAttribute() {\n      return nn(this.attributes);\n    }\n  }, {\n    key: \"getAttributes\",\n    value: function getAttributes() {\n      return this.attributes.slice(0);\n    }\n  }, {\n    key: \"getAttributeLevel\",\n    value: function getAttributeLevel() {\n      return this.attributes.length;\n    }\n  }, {\n    key: \"getAttributeAtLevel\",\n    value: function getAttributeAtLevel(t) {\n      return this.attributes[t - 1];\n    }\n  }, {\n    key: \"hasAttribute\",\n    value: function hasAttribute(t) {\n      return this.attributes.includes(t);\n    }\n  }, {\n    key: \"hasAttributes\",\n    value: function hasAttributes() {\n      return this.getAttributeLevel() > 0;\n    }\n  }, {\n    key: \"getLastNestableAttribute\",\n    value: function getLastNestableAttribute() {\n      return nn(this.getNestableAttributes());\n    }\n  }, {\n    key: \"getNestableAttributes\",\n    value: function getNestableAttributes() {\n      return this.attributes.filter(function (t) {\n        return mt(t).nestable;\n      });\n    }\n  }, {\n    key: \"getNestingLevel\",\n    value: function getNestingLevel() {\n      return this.getNestableAttributes().length;\n    }\n  }, {\n    key: \"decreaseNestingLevel\",\n    value: function decreaseNestingLevel() {\n      var t = this.getLastNestableAttribute();\n      return t ? this.removeAttribute(t) : this;\n    }\n  }, {\n    key: \"increaseNestingLevel\",\n    value: function increaseNestingLevel() {\n      var t = this.getLastNestableAttribute();\n\n      if (t) {\n        var _e21 = this.attributes.lastIndexOf(t),\n            _i25 = st.apply(void 0, [this.attributes, _e21 + 1, 0].concat(_toConsumableArray(en(t))));\n\n        return this.copyWithAttributes(_i25);\n      }\n\n      return this;\n    }\n  }, {\n    key: \"getListItemAttributes\",\n    value: function getListItemAttributes() {\n      return this.attributes.filter(function (t) {\n        return mt(t).listAttribute;\n      });\n    }\n  }, {\n    key: \"isListItem\",\n    value: function isListItem() {\n      var t;\n      return null === (t = mt(this.getLastAttribute())) || void 0 === t ? void 0 : t.listAttribute;\n    }\n  }, {\n    key: \"isTerminalBlock\",\n    value: function isTerminalBlock() {\n      var t;\n      return null === (t = mt(this.getLastAttribute())) || void 0 === t ? void 0 : t.terminal;\n    }\n  }, {\n    key: \"breaksOnReturn\",\n    value: function breaksOnReturn() {\n      var t;\n      return null === (t = mt(this.getLastAttribute())) || void 0 === t ? void 0 : t.breakOnReturn;\n    }\n  }, {\n    key: \"findLineBreakInDirectionFromPosition\",\n    value: function findLineBreakInDirectionFromPosition(t, e) {\n      var i = this.toString();\n      var n;\n\n      switch (t) {\n        case \"forward\":\n          n = i.indexOf(\"\\n\", e);\n          break;\n\n        case \"backward\":\n          n = i.slice(0, e).lastIndexOf(\"\\n\");\n      }\n\n      if (-1 !== n) return n;\n    }\n  }, {\n    key: \"contentsForInspection\",\n    value: function contentsForInspection() {\n      return {\n        text: this.text.inspect(),\n        attributes: this.attributes\n      };\n    }\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      return this.text.toString();\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return {\n        text: this.text,\n        attributes: this.attributes,\n        htmlAttributes: this.htmlAttributes\n      };\n    }\n  }, {\n    key: \"getDirection\",\n    value: function getDirection() {\n      return this.text.getDirection();\n    }\n  }, {\n    key: \"isRTL\",\n    value: function isRTL() {\n      return this.text.isRTL();\n    }\n  }, {\n    key: \"getLength\",\n    value: function getLength() {\n      return this.text.getLength();\n    }\n  }, {\n    key: \"canBeConsolidatedWith\",\n    value: function canBeConsolidatedWith(t) {\n      return !this.hasAttributes() && !t.hasAttributes() && this.getDirection() === t.getDirection();\n    }\n  }, {\n    key: \"consolidateWith\",\n    value: function consolidateWith(t) {\n      var e = Ki.textForStringWithAttributes(\"\\n\"),\n          i = this.getTextWithoutBlockBreak().appendText(e);\n      return this.copyWithText(i.appendText(t.text));\n    }\n  }, {\n    key: \"splitAtOffset\",\n    value: function splitAtOffset(t) {\n      var e, i;\n      return 0 === t ? (e = null, i = this) : t === this.getLength() ? (e = this, i = null) : (e = this.copyWithText(this.text.getTextAtRange([0, t])), i = this.copyWithText(this.text.getTextAtRange([t, this.getLength()]))), [e, i];\n    }\n  }, {\n    key: \"getBlockBreakPosition\",\n    value: function getBlockBreakPosition() {\n      return this.text.getLength() - 1;\n    }\n  }, {\n    key: \"getTextWithoutBlockBreak\",\n    value: function getTextWithoutBlockBreak() {\n      return Qi(this.text) ? this.text.getTextAtRange([0, this.getBlockBreakPosition()]) : this.text.copy();\n    }\n  }, {\n    key: \"canBeGrouped\",\n    value: function canBeGrouped(t) {\n      return this.attributes[t];\n    }\n  }, {\n    key: \"canBeGroupedWith\",\n    value: function canBeGroupedWith(t, e) {\n      var i = t.getAttributes(),\n          r = i[e],\n          o = this.attributes[e];\n      return o === r && !(!1 === mt(o).group && !function () {\n        if (!dt) {\n          dt = [];\n\n          for (var _t14 in n) {\n            var _e22 = n[_t14].listAttribute;\n            null != _e22 && dt.push(_e22);\n          }\n        }\n\n        return dt;\n      }().includes(i[e + 1])) && (this.getDirection() === t.getDirection() || t.isEmpty());\n    }\n  }], [{\n    key: \"fromJSON\",\n    value: function fromJSON(t) {\n      return new this(Ki.fromJSON(t.text), t.attributes, t.htmlAttributes);\n    }\n  }]);\n\n  return Gi;\n}(rt);\n\nvar Yi = function Yi(t) {\n  return t = $i(t), t = Zi(t);\n},\n    $i = function $i(t) {\n  var e = !1;\n  var i = t.getPieces();\n  var n = i.slice(0, i.length - 1);\n  var r = i[i.length - 1];\n  return r ? (n = n.map(function (t) {\n    return t.isBlockBreak() ? (e = !0, tn(t)) : t;\n  }), e ? new Ki([].concat(_toConsumableArray(n), [r])) : t) : t;\n},\n    Xi = Ki.textForStringWithAttributes(\"\\n\", {\n  blockBreak: !0\n}),\n    Zi = function Zi(t) {\n  return Qi(t) ? t : t.appendText(Xi);\n},\n    Qi = function Qi(t) {\n  var e = t.getLength();\n  if (0 === e) return !1;\n  return t.getTextAtRange([e - 1, e]).isBlockBreak();\n},\n    tn = function tn(t) {\n  return t.copyWithoutAttribute(\"blockBreak\");\n},\n    en = function en(t) {\n  var _mt3 = mt(t),\n      e = _mt3.listAttribute;\n\n  return e ? [e, t] : [t];\n},\n    nn = function nn(t) {\n  return t.slice(-1)[0];\n},\n    rn = function rn(t, e) {\n  var i = t.lastIndexOf(e);\n  return -1 === i ? t : st(t, i, 1);\n};\n\nvar on = /*#__PURE__*/function (_rt7) {\n  _inherits(on, _rt7);\n\n  var _super24 = _createSuper(on);\n\n  function on() {\n    var _this36;\n\n    _classCallCheck(this, on);\n\n    var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\n    _this36 = _super24.apply(this, arguments), 0 === t.length && (t = [new Gi()]), _this36.blockList = zi.box(t);\n    return _this36;\n  }\n\n  _createClass(on, [{\n    key: \"isEmpty\",\n    value: function isEmpty() {\n      var t = this.getBlockAtIndex(0);\n      return 1 === this.blockList.length && t.isEmpty() && !t.hasAttributes();\n    }\n  }, {\n    key: \"copy\",\n    value: function copy() {\n      var t = (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}).consolidateBlocks ? this.blockList.consolidate().toArray() : this.blockList.toArray();\n      return new this.constructor(t);\n    }\n  }, {\n    key: \"copyUsingObjectsFromDocument\",\n    value: function copyUsingObjectsFromDocument(t) {\n      var e = new Zt(t.getObjects());\n      return this.copyUsingObjectMap(e);\n    }\n  }, {\n    key: \"copyUsingObjectMap\",\n    value: function copyUsingObjectMap(t) {\n      var e = this.getBlocks().map(function (e) {\n        return t.find(e) || e.copyUsingObjectMap(t);\n      });\n      return new this.constructor(e);\n    }\n  }, {\n    key: \"copyWithBaseBlockAttributes\",\n    value: function copyWithBaseBlockAttributes() {\n      var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\n      var e = this.getBlocks().map(function (e) {\n        var i = t.concat(e.getAttributes());\n        return e.copyWithAttributes(i);\n      });\n      return new this.constructor(e);\n    }\n  }, {\n    key: \"replaceBlock\",\n    value: function replaceBlock(t, e) {\n      var i = this.blockList.indexOf(t);\n      return -1 === i ? this : new this.constructor(this.blockList.replaceObjectAtIndex(e, i));\n    }\n  }, {\n    key: \"insertDocumentAtRange\",\n    value: function insertDocumentAtRange(t, e) {\n      var i = t.blockList;\n      e = wt(e);\n\n      var _e23 = e,\n          _e24 = _slicedToArray(_e23, 1),\n          n = _e24[0];\n\n      var _this$locationFromPos = this.locationFromPosition(n),\n          r = _this$locationFromPos.index,\n          o = _this$locationFromPos.offset;\n\n      var s = this;\n      var a = this.getBlockAtPosition(n);\n      return Lt(e) && a.isEmpty() && !a.hasAttributes() ? s = new this.constructor(s.blockList.removeObjectAtIndex(r)) : a.getBlockBreakPosition() === o && n++, s = s.removeTextAtRange(e), new this.constructor(s.blockList.insertSplittableListAtPosition(i, n));\n    }\n  }, {\n    key: \"mergeDocumentAtRange\",\n    value: function mergeDocumentAtRange(t, e) {\n      var i, n;\n      e = wt(e);\n\n      var _e25 = e,\n          _e26 = _slicedToArray(_e25, 1),\n          r = _e26[0],\n          o = this.locationFromPosition(r),\n          s = this.getBlockAtIndex(o.index).getAttributes(),\n          a = t.getBaseBlockAttributes(),\n          l = s.slice(-a.length);\n\n      if (ot(a, l)) {\n        var _e27 = s.slice(0, -a.length);\n\n        i = t.copyWithBaseBlockAttributes(_e27);\n      } else i = t.copy({\n        consolidateBlocks: !0\n      }).copyWithBaseBlockAttributes(s);\n\n      var c = i.getBlockCount(),\n          u = i.getBlockAtIndex(0);\n\n      if (ot(s, u.getAttributes())) {\n        var _t15 = u.getTextWithoutBlockBreak();\n\n        if (n = this.insertTextAtRange(_t15, e), c > 1) {\n          i = new this.constructor(i.getBlocks().slice(1));\n\n          var _e28 = r + _t15.getLength();\n\n          n = n.insertDocumentAtRange(i, _e28);\n        }\n      } else n = this.insertDocumentAtRange(i, e);\n\n      return n;\n    }\n  }, {\n    key: \"insertTextAtRange\",\n    value: function insertTextAtRange(t, e) {\n      e = wt(e);\n\n      var _e29 = e,\n          _e30 = _slicedToArray(_e29, 1),\n          i = _e30[0],\n          _this$locationFromPos2 = this.locationFromPosition(i),\n          n = _this$locationFromPos2.index,\n          r = _this$locationFromPos2.offset,\n          o = this.removeTextAtRange(e);\n\n      return new this.constructor(o.blockList.editObjectAtIndex(n, function (e) {\n        return e.copyWithText(e.text.insertTextAtPosition(t, r));\n      }));\n    }\n  }, {\n    key: \"removeTextAtRange\",\n    value: function removeTextAtRange(t) {\n      var e;\n      t = wt(t);\n\n      var _t16 = t,\n          _t17 = _slicedToArray(_t16, 2),\n          i = _t17[0],\n          n = _t17[1];\n\n      if (Lt(t)) return this;\n\n      var _Array$from = Array.from(this.locationRangeFromRange(t)),\n          _Array$from2 = _slicedToArray(_Array$from, 2),\n          r = _Array$from2[0],\n          o = _Array$from2[1],\n          s = r.index,\n          a = r.offset,\n          l = this.getBlockAtIndex(s),\n          c = o.index,\n          u = o.offset,\n          h = this.getBlockAtIndex(c);\n\n      if (n - i == 1 && l.getBlockBreakPosition() === a && h.getBlockBreakPosition() !== u && \"\\n\" === h.text.getStringAtPosition(u)) e = this.blockList.editObjectAtIndex(c, function (t) {\n        return t.copyWithText(t.text.removeTextAtRange([u, u + 1]));\n      });else {\n        var _t18;\n\n        var _i26 = l.text.getTextAtRange([0, a]),\n            _n18 = h.text.getTextAtRange([u, h.getLength()]),\n            _r9 = _i26.appendText(_n18);\n\n        _t18 = s !== c && 0 === a && l.getAttributeLevel() >= h.getAttributeLevel() ? h.copyWithText(_r9) : l.copyWithText(_r9);\n\n        var _o4 = c + 1 - s;\n\n        e = this.blockList.splice(s, _o4, _t18);\n      }\n      return new this.constructor(e);\n    }\n  }, {\n    key: \"moveTextFromRangeToPosition\",\n    value: function moveTextFromRangeToPosition(t, e) {\n      var i;\n      t = wt(t);\n\n      var _t19 = t,\n          _t20 = _slicedToArray(_t19, 2),\n          n = _t20[0],\n          r = _t20[1];\n\n      if (n <= e && e <= r) return this;\n      var o = this.getDocumentAtRange(t),\n          s = this.removeTextAtRange(t);\n      var a = n < e;\n      a && (e -= o.getLength());\n\n      var _o$getBlocks = o.getBlocks(),\n          _o$getBlocks2 = _toArray(_o$getBlocks),\n          l = _o$getBlocks2[0],\n          c = _o$getBlocks2.slice(1);\n\n      return 0 === c.length ? (i = l.getTextWithoutBlockBreak(), a && (e += 1)) : i = l.text, s = s.insertTextAtRange(i, e), 0 === c.length ? s : (o = new this.constructor(c), e += i.getLength(), s.insertDocumentAtRange(o, e));\n    }\n  }, {\n    key: \"addAttributeAtRange\",\n    value: function addAttributeAtRange(t, e, i) {\n      var n = this.blockList;\n      return this.eachBlockAtRange(i, function (i, r, o) {\n        return n = n.editObjectAtIndex(o, function () {\n          return mt(t) ? i.addAttribute(t, e) : r[0] === r[1] ? i : i.copyWithText(i.text.addAttributeAtRange(t, e, r));\n        });\n      }), new this.constructor(n);\n    }\n  }, {\n    key: \"addAttribute\",\n    value: function addAttribute(t, e) {\n      var i = this.blockList;\n      return this.eachBlock(function (n, r) {\n        return i = i.editObjectAtIndex(r, function () {\n          return n.addAttribute(t, e);\n        });\n      }), new this.constructor(i);\n    }\n  }, {\n    key: \"removeAttributeAtRange\",\n    value: function removeAttributeAtRange(t, e) {\n      var i = this.blockList;\n      return this.eachBlockAtRange(e, function (e, n, r) {\n        mt(t) ? i = i.editObjectAtIndex(r, function () {\n          return e.removeAttribute(t);\n        }) : n[0] !== n[1] && (i = i.editObjectAtIndex(r, function () {\n          return e.copyWithText(e.text.removeAttributeAtRange(t, n));\n        }));\n      }), new this.constructor(i);\n    }\n  }, {\n    key: \"updateAttributesForAttachment\",\n    value: function updateAttributesForAttachment(t, e) {\n      var i = this.getRangeOfAttachment(e),\n          _Array$from3 = Array.from(i),\n          _Array$from4 = _slicedToArray(_Array$from3, 1),\n          n = _Array$from4[0],\n          _this$locationFromPos3 = this.locationFromPosition(n),\n          r = _this$locationFromPos3.index,\n          o = this.getTextAtIndex(r);\n\n      return new this.constructor(this.blockList.editObjectAtIndex(r, function (i) {\n        return i.copyWithText(o.updateAttributesForAttachment(t, e));\n      }));\n    }\n  }, {\n    key: \"removeAttributeForAttachment\",\n    value: function removeAttributeForAttachment(t, e) {\n      var i = this.getRangeOfAttachment(e);\n      return this.removeAttributeAtRange(t, i);\n    }\n  }, {\n    key: \"setHTMLAttributeAtPosition\",\n    value: function setHTMLAttributeAtPosition(t, e, i) {\n      var n = this.getBlockAtPosition(t),\n          r = n.addHTMLAttribute(e, i);\n      return this.replaceBlock(n, r);\n    }\n  }, {\n    key: \"insertBlockBreakAtRange\",\n    value: function insertBlockBreakAtRange(t) {\n      var e;\n      t = wt(t);\n\n      var _t21 = t,\n          _t22 = _slicedToArray(_t21, 1),\n          i = _t22[0],\n          _this$locationFromPos4 = this.locationFromPosition(i),\n          n = _this$locationFromPos4.offset,\n          r = this.removeTextAtRange(t);\n\n      return 0 === n && (e = [new Gi()]), new this.constructor(r.blockList.insertSplittableListAtPosition(new zi(e), i));\n    }\n  }, {\n    key: \"applyBlockAttributeAtRange\",\n    value: function applyBlockAttributeAtRange(t, e, i) {\n      var n = this.expandRangeToLineBreaksAndSplitBlocks(i);\n      var r = n.document;\n      i = n.range;\n      var o = mt(t);\n\n      if (o.listAttribute) {\n        r = r.removeLastListAttributeAtRange(i, {\n          exceptAttributeName: t\n        });\n\n        var _e31 = r.convertLineBreaksToBlockBreaksInRange(i);\n\n        r = _e31.document, i = _e31.range;\n      } else r = o.exclusive ? r.removeBlockAttributesAtRange(i) : o.terminal ? r.removeLastTerminalAttributeAtRange(i) : r.consolidateBlocksAtRange(i);\n\n      return r.addAttributeAtRange(t, e, i);\n    }\n  }, {\n    key: \"removeLastListAttributeAtRange\",\n    value: function removeLastListAttributeAtRange(t) {\n      var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n          i = this.blockList;\n      return this.eachBlockAtRange(t, function (t, n, r) {\n        var o = t.getLastAttribute();\n        o && mt(o).listAttribute && o !== e.exceptAttributeName && (i = i.editObjectAtIndex(r, function () {\n          return t.removeAttribute(o);\n        }));\n      }), new this.constructor(i);\n    }\n  }, {\n    key: \"removeLastTerminalAttributeAtRange\",\n    value: function removeLastTerminalAttributeAtRange(t) {\n      var e = this.blockList;\n      return this.eachBlockAtRange(t, function (t, i, n) {\n        var r = t.getLastAttribute();\n        r && mt(r).terminal && (e = e.editObjectAtIndex(n, function () {\n          return t.removeAttribute(r);\n        }));\n      }), new this.constructor(e);\n    }\n  }, {\n    key: \"removeBlockAttributesAtRange\",\n    value: function removeBlockAttributesAtRange(t) {\n      var e = this.blockList;\n      return this.eachBlockAtRange(t, function (t, i, n) {\n        t.hasAttributes() && (e = e.editObjectAtIndex(n, function () {\n          return t.copyWithoutAttributes();\n        }));\n      }), new this.constructor(e);\n    }\n  }, {\n    key: \"expandRangeToLineBreaksAndSplitBlocks\",\n    value: function expandRangeToLineBreaksAndSplitBlocks(t) {\n      var e;\n      t = wt(t);\n\n      var _t23 = t,\n          _t24 = _slicedToArray(_t23, 2),\n          i = _t24[0],\n          n = _t24[1];\n\n      var r = this.locationFromPosition(i),\n          o = this.locationFromPosition(n);\n      var s = this;\n      var a = s.getBlockAtIndex(r.index);\n      if (r.offset = a.findLineBreakInDirectionFromPosition(\"backward\", r.offset), null != r.offset && (e = s.positionFromLocation(r), s = s.insertBlockBreakAtRange([e, e + 1]), o.index += 1, o.offset -= s.getBlockAtIndex(r.index).getLength(), r.index += 1), r.offset = 0, 0 === o.offset && o.index > r.index) o.index -= 1, o.offset = s.getBlockAtIndex(o.index).getBlockBreakPosition();else {\n        var _t25 = s.getBlockAtIndex(o.index);\n\n        \"\\n\" === _t25.text.getStringAtRange([o.offset - 1, o.offset]) ? o.offset -= 1 : o.offset = _t25.findLineBreakInDirectionFromPosition(\"forward\", o.offset), o.offset !== _t25.getBlockBreakPosition() && (e = s.positionFromLocation(o), s = s.insertBlockBreakAtRange([e, e + 1]));\n      }\n      return i = s.positionFromLocation(r), n = s.positionFromLocation(o), {\n        document: s,\n        range: t = wt([i, n])\n      };\n    }\n  }, {\n    key: \"convertLineBreaksToBlockBreaksInRange\",\n    value: function convertLineBreaksToBlockBreaksInRange(t) {\n      t = wt(t);\n\n      var _t26 = t,\n          _t27 = _slicedToArray(_t26, 1),\n          e = _t27[0];\n\n      var i = this.getStringAtRange(t).slice(0, -1);\n      var n = this;\n      return i.replace(/.*?\\n/g, function (t) {\n        e += t.length, n = n.insertBlockBreakAtRange([e - 1, e]);\n      }), {\n        document: n,\n        range: t\n      };\n    }\n  }, {\n    key: \"consolidateBlocksAtRange\",\n    value: function consolidateBlocksAtRange(t) {\n      t = wt(t);\n\n      var _t28 = t,\n          _t29 = _slicedToArray(_t28, 2),\n          e = _t29[0],\n          i = _t29[1],\n          n = this.locationFromPosition(e).index,\n          r = this.locationFromPosition(i).index;\n\n      return new this.constructor(this.blockList.consolidateFromIndexToIndex(n, r));\n    }\n  }, {\n    key: \"getDocumentAtRange\",\n    value: function getDocumentAtRange(t) {\n      t = wt(t);\n      var e = this.blockList.getSplittableListInRange(t).toArray();\n      return new this.constructor(e);\n    }\n  }, {\n    key: \"getStringAtRange\",\n    value: function getStringAtRange(t) {\n      var e;\n      var i = t = wt(t);\n      return i[i.length - 1] !== this.getLength() && (e = -1), this.getDocumentAtRange(t).toString().slice(0, e);\n    }\n  }, {\n    key: \"getBlockAtIndex\",\n    value: function getBlockAtIndex(t) {\n      return this.blockList.getObjectAtIndex(t);\n    }\n  }, {\n    key: \"getBlockAtPosition\",\n    value: function getBlockAtPosition(t) {\n      var _this$locationFromPos5 = this.locationFromPosition(t),\n          e = _this$locationFromPos5.index;\n\n      return this.getBlockAtIndex(e);\n    }\n  }, {\n    key: \"getTextAtIndex\",\n    value: function getTextAtIndex(t) {\n      var e;\n      return null === (e = this.getBlockAtIndex(t)) || void 0 === e ? void 0 : e.text;\n    }\n  }, {\n    key: \"getTextAtPosition\",\n    value: function getTextAtPosition(t) {\n      var _this$locationFromPos6 = this.locationFromPosition(t),\n          e = _this$locationFromPos6.index;\n\n      return this.getTextAtIndex(e);\n    }\n  }, {\n    key: \"getPieceAtPosition\",\n    value: function getPieceAtPosition(t) {\n      var _this$locationFromPos7 = this.locationFromPosition(t),\n          e = _this$locationFromPos7.index,\n          i = _this$locationFromPos7.offset;\n\n      return this.getTextAtIndex(e).getPieceAtPosition(i);\n    }\n  }, {\n    key: \"getCharacterAtPosition\",\n    value: function getCharacterAtPosition(t) {\n      var _this$locationFromPos8 = this.locationFromPosition(t),\n          e = _this$locationFromPos8.index,\n          i = _this$locationFromPos8.offset;\n\n      return this.getTextAtIndex(e).getStringAtRange([i, i + 1]);\n    }\n  }, {\n    key: \"getLength\",\n    value: function getLength() {\n      return this.blockList.getEndPosition();\n    }\n  }, {\n    key: \"getBlocks\",\n    value: function getBlocks() {\n      return this.blockList.toArray();\n    }\n  }, {\n    key: \"getBlockCount\",\n    value: function getBlockCount() {\n      return this.blockList.length;\n    }\n  }, {\n    key: \"getEditCount\",\n    value: function getEditCount() {\n      return this.editCount;\n    }\n  }, {\n    key: \"eachBlock\",\n    value: function eachBlock(t) {\n      return this.blockList.eachObject(t);\n    }\n  }, {\n    key: \"eachBlockAtRange\",\n    value: function eachBlockAtRange(t, e) {\n      var i, n;\n      t = wt(t);\n\n      var _t30 = t,\n          _t31 = _slicedToArray(_t30, 2),\n          r = _t31[0],\n          o = _t31[1],\n          s = this.locationFromPosition(r),\n          a = this.locationFromPosition(o);\n\n      if (s.index === a.index) return i = this.getBlockAtIndex(s.index), n = [s.offset, a.offset], e(i, n, s.index);\n\n      for (var _t32 = s.index; _t32 <= a.index; _t32++) {\n        if (i = this.getBlockAtIndex(_t32), i) {\n          switch (_t32) {\n            case s.index:\n              n = [s.offset, i.text.getLength()];\n              break;\n\n            case a.index:\n              n = [0, a.offset];\n              break;\n\n            default:\n              n = [0, i.text.getLength()];\n          }\n\n          e(i, n, _t32);\n        }\n      }\n    }\n  }, {\n    key: \"getCommonAttributesAtRange\",\n    value: function getCommonAttributesAtRange(t) {\n      t = wt(t);\n\n      var _t33 = t,\n          _t34 = _slicedToArray(_t33, 1),\n          e = _t34[0];\n\n      if (Lt(t)) return this.getCommonAttributesAtPosition(e);\n      {\n        var _e32 = [],\n            _i27 = [];\n        return this.eachBlockAtRange(t, function (t, n) {\n          if (n[0] !== n[1]) return _e32.push(t.text.getCommonAttributesAtRange(n)), _i27.push(sn(t));\n        }), Ht.fromCommonAttributesOfObjects(_e32).merge(Ht.fromCommonAttributesOfObjects(_i27)).toObject();\n      }\n    }\n  }, {\n    key: \"getCommonAttributesAtPosition\",\n    value: function getCommonAttributesAtPosition(t) {\n      var e, i;\n\n      var _this$locationFromPos9 = this.locationFromPosition(t),\n          n = _this$locationFromPos9.index,\n          r = _this$locationFromPos9.offset,\n          o = this.getBlockAtIndex(n);\n\n      if (!o) return {};\n      var s = sn(o),\n          a = o.text.getAttributesAtPosition(r),\n          l = o.text.getAttributesAtPosition(r - 1),\n          c = Object.keys(W).filter(function (t) {\n        return W[t].inheritable;\n      });\n\n      for (e in l) {\n        i = l[e], (i === a[e] || c.includes(e)) && (s[e] = i);\n      }\n\n      return s;\n    }\n  }, {\n    key: \"getRangeOfCommonAttributeAtPosition\",\n    value: function getRangeOfCommonAttributeAtPosition(t, e) {\n      var _this$locationFromPos10 = this.locationFromPosition(e),\n          i = _this$locationFromPos10.index,\n          n = _this$locationFromPos10.offset,\n          r = this.getTextAtIndex(i),\n          _Array$from5 = Array.from(r.getExpandedRangeForAttributeAtOffset(t, n)),\n          _Array$from6 = _slicedToArray(_Array$from5, 2),\n          o = _Array$from6[0],\n          s = _Array$from6[1],\n          a = this.positionFromLocation({\n        index: i,\n        offset: o\n      }),\n          l = this.positionFromLocation({\n        index: i,\n        offset: s\n      });\n\n      return wt([a, l]);\n    }\n  }, {\n    key: \"getBaseBlockAttributes\",\n    value: function getBaseBlockAttributes() {\n      var _this37 = this;\n\n      var t = this.getBlockAtIndex(0).getAttributes();\n\n      var _loop2 = function _loop2(_e33) {\n        var i = _this37.getBlockAtIndex(_e33).getAttributes(),\n            n = Math.min(t.length, i.length);\n\n        t = function () {\n          var e = [];\n\n          for (var _r10 = 0; _r10 < n && i[_r10] === t[_r10]; _r10++) {\n            e.push(i[_r10]);\n          }\n\n          return e;\n        }();\n      };\n\n      for (var _e33 = 1; _e33 < this.getBlockCount(); _e33++) {\n        _loop2(_e33);\n      }\n\n      return t;\n    }\n  }, {\n    key: \"getAttachmentById\",\n    value: function getAttachmentById(t) {\n      var _iterator4 = _createForOfIteratorHelper(this.getAttachments()),\n          _step4;\n\n      try {\n        for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n          var _e34 = _step4.value;\n          if (_e34.id === t) return _e34;\n        }\n      } catch (err) {\n        _iterator4.e(err);\n      } finally {\n        _iterator4.f();\n      }\n    }\n  }, {\n    key: \"getAttachmentPieces\",\n    value: function getAttachmentPieces() {\n      var t = [];\n      return this.blockList.eachObject(function (e) {\n        var i = e.text;\n        return t = t.concat(i.getAttachmentPieces());\n      }), t;\n    }\n  }, {\n    key: \"getAttachments\",\n    value: function getAttachments() {\n      return this.getAttachmentPieces().map(function (t) {\n        return t.attachment;\n      });\n    }\n  }, {\n    key: \"getRangeOfAttachment\",\n    value: function getRangeOfAttachment(t) {\n      var e = 0;\n      var i = this.blockList.toArray();\n\n      for (var _n19 = 0; _n19 < i.length; _n19++) {\n        var _r11 = i[_n19].text,\n            _o5 = _r11.getRangeOfAttachment(t);\n\n        if (_o5) return wt([e + _o5[0], e + _o5[1]]);\n        e += _r11.getLength();\n      }\n    }\n  }, {\n    key: \"getLocationRangeOfAttachment\",\n    value: function getLocationRangeOfAttachment(t) {\n      var e = this.getRangeOfAttachment(t);\n      return this.locationRangeFromRange(e);\n    }\n  }, {\n    key: \"getAttachmentPieceForAttachment\",\n    value: function getAttachmentPieceForAttachment(t) {\n      var _iterator5 = _createForOfIteratorHelper(this.getAttachmentPieces()),\n          _step5;\n\n      try {\n        for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n          var _e35 = _step5.value;\n          if (_e35.attachment === t) return _e35;\n        }\n      } catch (err) {\n        _iterator5.e(err);\n      } finally {\n        _iterator5.f();\n      }\n    }\n  }, {\n    key: \"findRangesForBlockAttribute\",\n    value: function findRangesForBlockAttribute(t) {\n      var e = 0;\n      var i = [];\n      return this.getBlocks().forEach(function (n) {\n        var r = n.getLength();\n        n.hasAttribute(t) && i.push([e, e + r]), e += r;\n      }), i;\n    }\n  }, {\n    key: \"findRangesForTextAttribute\",\n    value: function findRangesForTextAttribute(t) {\n      var _ref14 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n          e = _ref14.withValue,\n          i = 0,\n          n = [];\n\n      var r = [];\n      return this.getPieces().forEach(function (o) {\n        var s = o.getLength();\n        (function (i) {\n          return e ? i.getAttribute(t) === e : i.hasAttribute(t);\n        })(o) && (n[1] === i ? n[1] = i + s : r.push(n = [i, i + s])), i += s;\n      }), r;\n    }\n  }, {\n    key: \"locationFromPosition\",\n    value: function locationFromPosition(t) {\n      var e = this.blockList.findIndexAndOffsetAtPosition(Math.max(0, t));\n      if (null != e.index) return e;\n      {\n        var _t35 = this.getBlocks();\n\n        return {\n          index: _t35.length - 1,\n          offset: _t35[_t35.length - 1].getLength()\n        };\n      }\n    }\n  }, {\n    key: \"positionFromLocation\",\n    value: function positionFromLocation(t) {\n      return this.blockList.findPositionAtIndexAndOffset(t.index, t.offset);\n    }\n  }, {\n    key: \"locationRangeFromPosition\",\n    value: function locationRangeFromPosition(t) {\n      return wt(this.locationFromPosition(t));\n    }\n  }, {\n    key: \"locationRangeFromRange\",\n    value: function locationRangeFromRange(t) {\n      if (!(t = wt(t))) return;\n\n      var _Array$from7 = Array.from(t),\n          _Array$from8 = _slicedToArray(_Array$from7, 2),\n          e = _Array$from8[0],\n          i = _Array$from8[1],\n          n = this.locationFromPosition(e),\n          r = this.locationFromPosition(i);\n\n      return wt([n, r]);\n    }\n  }, {\n    key: \"rangeFromLocationRange\",\n    value: function rangeFromLocationRange(t) {\n      var e;\n      t = wt(t);\n      var i = this.positionFromLocation(t[0]);\n      return Lt(t) || (e = this.positionFromLocation(t[1])), wt([i, e]);\n    }\n  }, {\n    key: \"isEqualTo\",\n    value: function isEqualTo(t) {\n      return this.blockList.isEqualTo(null == t ? void 0 : t.blockList);\n    }\n  }, {\n    key: \"getTexts\",\n    value: function getTexts() {\n      return this.getBlocks().map(function (t) {\n        return t.text;\n      });\n    }\n  }, {\n    key: \"getPieces\",\n    value: function getPieces() {\n      var t = [];\n      return Array.from(this.getTexts()).forEach(function (e) {\n        t.push.apply(t, _toConsumableArray(Array.from(e.getPieces() || [])));\n      }), t;\n    }\n  }, {\n    key: \"getObjects\",\n    value: function getObjects() {\n      return this.getBlocks().concat(this.getTexts()).concat(this.getPieces());\n    }\n  }, {\n    key: \"toSerializableDocument\",\n    value: function toSerializableDocument() {\n      var t = [];\n      return this.blockList.eachObject(function (e) {\n        return t.push(e.copyWithText(e.text.toSerializableText()));\n      }), new this.constructor(t);\n    }\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      return this.blockList.toString();\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return this.blockList.toJSON();\n    }\n  }, {\n    key: \"toConsole\",\n    value: function toConsole() {\n      return JSON.stringify(this.blockList.toArray().map(function (t) {\n        return JSON.parse(t.text.toConsole());\n      }));\n    }\n  }], [{\n    key: \"fromJSON\",\n    value: function fromJSON(t) {\n      return new this(Array.from(t).map(function (t) {\n        return Gi.fromJSON(t);\n      }));\n    }\n  }, {\n    key: \"fromString\",\n    value: function fromString(t, e) {\n      var i = Ki.textForStringWithAttributes(t, e);\n      return new this([new Gi(i)]);\n    }\n  }]);\n\n  return on;\n}(rt);\n\nvar sn = function sn(t) {\n  var e = {},\n      i = t.getLastAttribute();\n  return i && (e[i] = !0), e;\n},\n    an = function an(t) {\n  var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n  return {\n    string: t = Wt(t),\n    attributes: e,\n    type: \"string\"\n  };\n},\n    ln = function ln(t, e) {\n  try {\n    return JSON.parse(t.getAttribute(\"data-trix-\".concat(e)));\n  } catch (t) {\n    return {};\n  }\n};\n\nvar cn = /*#__PURE__*/function (_q8) {\n  _inherits(cn, _q8);\n\n  var _super25 = _createSuper(cn);\n\n  function cn(t) {\n    var _this38;\n\n    _classCallCheck(this, cn);\n\n    var _ref15 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n        e = _ref15.referenceElement;\n\n    _this38 = _super25.apply(this, arguments), _this38.html = t, _this38.referenceElement = e, _this38.blocks = [], _this38.blockElements = [], _this38.processedElements = [];\n    return _this38;\n  }\n\n  _createClass(cn, [{\n    key: \"getDocument\",\n    value: function getDocument() {\n      return on.fromJSON(this.blocks);\n    }\n  }, {\n    key: \"parse\",\n    value: function parse() {\n      try {\n        this.createHiddenContainer(), ui.setHTML(this.containerElement, this.html);\n\n        var _t36 = R(this.containerElement, {\n          usingFilter: gn\n        });\n\n        for (; _t36.nextNode();) {\n          this.processNode(_t36.currentNode);\n        }\n\n        return this.translateBlockElementMarginsToNewlines();\n      } finally {\n        this.removeHiddenContainer();\n      }\n    }\n  }, {\n    key: \"createHiddenContainer\",\n    value: function createHiddenContainer() {\n      return this.referenceElement ? (this.containerElement = this.referenceElement.cloneNode(!1), this.containerElement.removeAttribute(\"id\"), this.containerElement.setAttribute(\"data-trix-internal\", \"\"), this.containerElement.style.display = \"none\", this.referenceElement.parentNode.insertBefore(this.containerElement, this.referenceElement.nextSibling)) : (this.containerElement = T({\n        tagName: \"div\",\n        style: {\n          display: \"none\"\n        }\n      }), document.body.appendChild(this.containerElement));\n    }\n  }, {\n    key: \"removeHiddenContainer\",\n    value: function removeHiddenContainer() {\n      return S(this.containerElement);\n    }\n  }, {\n    key: \"processNode\",\n    value: function processNode(t) {\n      switch (t.nodeType) {\n        case Node.TEXT_NODE:\n          if (!this.isInsignificantTextNode(t)) return this.appendBlockForTextNode(t), this.processTextNode(t);\n          break;\n\n        case Node.ELEMENT_NODE:\n          return this.appendBlockForElement(t), this.processElement(t);\n      }\n    }\n  }, {\n    key: \"appendBlockForTextNode\",\n    value: function appendBlockForTextNode(t) {\n      var e = t.parentNode;\n      if (e === this.currentBlockElement && this.isBlockElement(t.previousSibling)) return this.appendStringWithAttributes(\"\\n\");\n\n      if (e === this.containerElement || this.isBlockElement(e)) {\n        var i;\n\n        var _t37 = this.getBlockAttributes(e),\n            _n20 = this.getBlockHTMLAttributes(e);\n\n        ot(_t37, null === (i = this.currentBlock) || void 0 === i ? void 0 : i.attributes) || (this.currentBlock = this.appendBlockForAttributesWithElement(_t37, e, _n20), this.currentBlockElement = e);\n      }\n    }\n  }, {\n    key: \"appendBlockForElement\",\n    value: function appendBlockForElement(t) {\n      var e = this.isBlockElement(t),\n          i = C(this.currentBlockElement, t);\n\n      if (e && !this.isBlockElement(t.firstChild)) {\n        if (!this.isInsignificantTextNode(t.firstChild) || !this.isBlockElement(t.firstElementChild)) {\n          var _e36 = this.getBlockAttributes(t),\n              _n21 = this.getBlockHTMLAttributes(t);\n\n          if (t.firstChild) {\n            if (i && ot(_e36, this.currentBlock.attributes)) return this.appendStringWithAttributes(\"\\n\");\n            this.currentBlock = this.appendBlockForAttributesWithElement(_e36, t, _n21), this.currentBlockElement = t;\n          }\n        }\n      } else if (this.currentBlockElement && !i && !e) {\n        var _e37 = this.findParentBlockElement(t);\n\n        if (_e37) return this.appendBlockForElement(_e37);\n        this.currentBlock = this.appendEmptyBlock(), this.currentBlockElement = null;\n      }\n    }\n  }, {\n    key: \"findParentBlockElement\",\n    value: function findParentBlockElement(t) {\n      var e = t.parentElement;\n\n      for (; e && e !== this.containerElement;) {\n        if (this.isBlockElement(e) && this.blockElements.includes(e)) return e;\n        e = e.parentElement;\n      }\n\n      return null;\n    }\n  }, {\n    key: \"processTextNode\",\n    value: function processTextNode(t) {\n      var e = t.data;\n      var i;\n      un(t.parentNode) || (e = Vt(e), fn(null === (i = t.previousSibling) || void 0 === i ? void 0 : i.textContent) && (e = mn(e)));\n      return this.appendStringWithAttributes(e, this.getTextAttributes(t.parentNode));\n    }\n  }, {\n    key: \"processElement\",\n    value: function processElement(t) {\n      var e;\n\n      if (P(t)) {\n        if (e = ln(t, \"attachment\"), Object.keys(e).length) {\n          var _i28 = this.getTextAttributes(t);\n\n          this.appendAttachmentWithAttributes(e, _i28), t.innerHTML = \"\";\n        }\n\n        return this.processedElements.push(t);\n      }\n\n      switch (k(t)) {\n        case \"br\":\n          return this.isExtraBR(t) || this.isBlockElement(t.nextSibling) || this.appendStringWithAttributes(\"\\n\", this.getTextAttributes(t)), this.processedElements.push(t);\n\n        case \"img\":\n          e = {\n            url: t.getAttribute(\"src\"),\n            contentType: \"image\"\n          };\n\n          var _i29 = function (t) {\n            var e = t.getAttribute(\"width\"),\n                i = t.getAttribute(\"height\"),\n                n = {};\n            return e && (n.width = parseInt(e, 10)), i && (n.height = parseInt(i, 10)), n;\n          }(t);\n\n          for (var _t38 in _i29) {\n            var _n22 = _i29[_t38];\n            e[_t38] = _n22;\n          }\n\n          return this.appendAttachmentWithAttributes(e, this.getTextAttributes(t)), this.processedElements.push(t);\n\n        case \"tr\":\n          if (this.needsTableSeparator(t)) return this.appendStringWithAttributes(j.tableRowSeparator);\n          break;\n\n        case \"td\":\n          if (this.needsTableSeparator(t)) return this.appendStringWithAttributes(j.tableCellSeparator);\n      }\n    }\n  }, {\n    key: \"appendBlockForAttributesWithElement\",\n    value: function appendBlockForAttributesWithElement(t, e) {\n      var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\n      this.blockElements.push(e);\n\n      var n = function () {\n        return {\n          text: [],\n          attributes: arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},\n          htmlAttributes: arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}\n        };\n      }(t, i);\n\n      return this.blocks.push(n), n;\n    }\n  }, {\n    key: \"appendEmptyBlock\",\n    value: function appendEmptyBlock() {\n      return this.appendBlockForAttributesWithElement([], null);\n    }\n  }, {\n    key: \"appendStringWithAttributes\",\n    value: function appendStringWithAttributes(t, e) {\n      return this.appendPiece(an(t, e));\n    }\n  }, {\n    key: \"appendAttachmentWithAttributes\",\n    value: function appendAttachmentWithAttributes(t, e) {\n      return this.appendPiece(function (t) {\n        return {\n          attachment: t,\n          attributes: arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n          type: \"attachment\"\n        };\n      }(t, e));\n    }\n  }, {\n    key: \"appendPiece\",\n    value: function appendPiece(t) {\n      return 0 === this.blocks.length && this.appendEmptyBlock(), this.blocks[this.blocks.length - 1].text.push(t);\n    }\n  }, {\n    key: \"appendStringToTextAtIndex\",\n    value: function appendStringToTextAtIndex(t, e) {\n      var i = this.blocks[e].text,\n          n = i[i.length - 1];\n      if (\"string\" !== (null == n ? void 0 : n.type)) return i.push(an(t));\n      n.string += t;\n    }\n  }, {\n    key: \"prependStringToTextAtIndex\",\n    value: function prependStringToTextAtIndex(t, e) {\n      var i = this.blocks[e].text,\n          n = i[0];\n      if (\"string\" !== (null == n ? void 0 : n.type)) return i.unshift(an(t));\n      n.string = t + n.string;\n    }\n  }, {\n    key: \"getTextAttributes\",\n    value: function getTextAttributes(t) {\n      var e;\n      var i = {};\n\n      for (var _n23 in W) {\n        var _r12 = W[_n23];\n        if (_r12.tagName && y(t, {\n          matchingSelector: _r12.tagName,\n          untilNode: this.containerElement\n        })) i[_n23] = !0;else if (_r12.parser) {\n          if (e = _r12.parser(t), e) {\n            var _o6 = !1;\n\n            var _iterator6 = _createForOfIteratorHelper(this.findBlockElementAncestors(t)),\n                _step6;\n\n            try {\n              for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n                var _i30 = _step6.value;\n\n                if (_r12.parser(_i30) === e) {\n                  _o6 = !0;\n                  break;\n                }\n              }\n            } catch (err) {\n              _iterator6.e(err);\n            } finally {\n              _iterator6.f();\n            }\n\n            _o6 || (i[_n23] = e);\n          }\n        } else _r12.styleProperty && (e = t.style[_r12.styleProperty], e && (i[_n23] = e));\n      }\n\n      if (P(t)) {\n        var _n24 = ln(t, \"attributes\");\n\n        for (var _t39 in _n24) {\n          e = _n24[_t39], i[_t39] = e;\n        }\n      }\n\n      return i;\n    }\n  }, {\n    key: \"getBlockAttributes\",\n    value: function getBlockAttributes(t) {\n      var e = [];\n\n      for (; t && t !== this.containerElement;) {\n        for (var _r13 in n) {\n          var _o7 = n[_r13];\n          var i;\n          if (!1 !== _o7.parse) if (k(t) === _o7.tagName) (null !== (i = _o7.test) && void 0 !== i && i.call(_o7, t) || !_o7.test) && (e.push(_r13), _o7.listAttribute && e.push(_o7.listAttribute));\n        }\n\n        t = t.parentNode;\n      }\n\n      return e.reverse();\n    }\n  }, {\n    key: \"getBlockHTMLAttributes\",\n    value: function getBlockHTMLAttributes(t) {\n      var e = {},\n          i = Object.values(n).find(function (e) {\n        return e.tagName === k(t);\n      });\n      return ((null == i ? void 0 : i.htmlAttributes) || []).forEach(function (i) {\n        t.hasAttribute(i) && (e[i] = t.getAttribute(i));\n      }), e;\n    }\n  }, {\n    key: \"findBlockElementAncestors\",\n    value: function findBlockElementAncestors(t) {\n      var e = [];\n\n      for (; t && t !== this.containerElement;) {\n        var _i31 = k(t);\n\n        L().includes(_i31) && e.push(t), t = t.parentNode;\n      }\n\n      return e;\n    }\n  }, {\n    key: \"isBlockElement\",\n    value: function isBlockElement(t) {\n      if ((null == t ? void 0 : t.nodeType) === Node.ELEMENT_NODE && !P(t) && !y(t, {\n        matchingSelector: \"td\",\n        untilNode: this.containerElement\n      })) return L().includes(k(t)) || \"block\" === window.getComputedStyle(t).display;\n    }\n  }, {\n    key: \"isInsignificantTextNode\",\n    value: function isInsignificantTextNode(t) {\n      if ((null == t ? void 0 : t.nodeType) !== Node.TEXT_NODE) return;\n      if (!pn(t.data)) return;\n      var e = t.parentNode,\n          i = t.previousSibling,\n          n = t.nextSibling;\n      return hn(e.previousSibling) && !this.isBlockElement(e.previousSibling) || un(e) ? void 0 : !i || this.isBlockElement(i) || !n || this.isBlockElement(n);\n    }\n  }, {\n    key: \"isExtraBR\",\n    value: function isExtraBR(t) {\n      return \"br\" === k(t) && this.isBlockElement(t.parentNode) && t.parentNode.lastChild === t;\n    }\n  }, {\n    key: \"needsTableSeparator\",\n    value: function needsTableSeparator(t) {\n      if (j.removeBlankTableCells) {\n        var e;\n\n        var _i32 = null === (e = t.previousSibling) || void 0 === e ? void 0 : e.textContent;\n\n        return _i32 && /\\S/.test(_i32);\n      }\n\n      return t.previousSibling;\n    }\n  }, {\n    key: \"translateBlockElementMarginsToNewlines\",\n    value: function translateBlockElementMarginsToNewlines() {\n      var t = this.getMarginOfDefaultBlockElement();\n\n      for (var _e38 = 0; _e38 < this.blocks.length; _e38++) {\n        var _i33 = this.getMarginOfBlockElementAtIndex(_e38);\n\n        _i33 && (_i33.top > 2 * t.top && this.prependStringToTextAtIndex(\"\\n\", _e38), _i33.bottom > 2 * t.bottom && this.appendStringToTextAtIndex(\"\\n\", _e38));\n      }\n    }\n  }, {\n    key: \"getMarginOfBlockElementAtIndex\",\n    value: function getMarginOfBlockElementAtIndex(t) {\n      var e = this.blockElements[t];\n      if (e && e.textContent && !L().includes(k(e)) && !this.processedElements.includes(e)) return dn(e);\n    }\n  }, {\n    key: \"getMarginOfDefaultBlockElement\",\n    value: function getMarginOfDefaultBlockElement() {\n      var t = T(n.default.tagName);\n      return this.containerElement.appendChild(t), dn(t);\n    }\n  }], [{\n    key: \"parse\",\n    value: function parse(t, e) {\n      var i = new this(t, e);\n      return i.parse(), i;\n    }\n  }]);\n\n  return cn;\n}(q);\n\nvar un = function un(t) {\n  var _window$getComputedSt = window.getComputedStyle(t),\n      e = _window$getComputedSt.whiteSpace;\n\n  return [\"pre\", \"pre-wrap\", \"pre-line\"].includes(e);\n},\n    hn = function hn(t) {\n  return t && !fn(t.textContent);\n},\n    dn = function dn(t) {\n  var e = window.getComputedStyle(t);\n  if (\"block\" === e.display) return {\n    top: parseInt(e.marginTop),\n    bottom: parseInt(e.marginBottom)\n  };\n},\n    gn = function gn(t) {\n  return \"style\" === k(t) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;\n},\n    mn = function mn(t) {\n  return t.replace(new RegExp(\"^\".concat(Ut.source, \"+\")), \"\");\n},\n    pn = function pn(t) {\n  return new RegExp(\"^\".concat(Ut.source, \"*$\")).test(t);\n},\n    fn = function fn(t) {\n  return /\\s$/.test(t);\n},\n    bn = [\"contenteditable\", \"data-trix-id\", \"data-trix-store-key\", \"data-trix-mutable\", \"data-trix-placeholder\", \"tabindex\"],\n    vn = \"data-trix-serialized-attributes\",\n    An = \"[\".concat(vn, \"]\"),\n    yn = new RegExp(\"\\x3c!--block--\\x3e\", \"g\"),\n    xn = {\n  \"application/json\": function applicationJson(t) {\n    var e;\n    if (t instanceof on) e = t;else {\n      if (!(t instanceof HTMLElement)) throw new Error(\"unserializable object\");\n      e = cn.parse(t.innerHTML).getDocument();\n    }\n    return e.toSerializableDocument().toJSONString();\n  },\n  \"text/html\": function textHtml(t) {\n    var e;\n    if (t instanceof on) e = Ci.render(t);else {\n      if (!(t instanceof HTMLElement)) throw new Error(\"unserializable object\");\n      e = t.cloneNode(!0);\n    }\n    return Array.from(e.querySelectorAll(\"[data-trix-serialize=false]\")).forEach(function (t) {\n      S(t);\n    }), bn.forEach(function (t) {\n      Array.from(e.querySelectorAll(\"[\".concat(t, \"]\"))).forEach(function (e) {\n        e.removeAttribute(t);\n      });\n    }), Array.from(e.querySelectorAll(An)).forEach(function (t) {\n      try {\n        var _e39 = JSON.parse(t.getAttribute(vn));\n\n        t.removeAttribute(vn);\n\n        for (var _i34 in _e39) {\n          var _n25 = _e39[_i34];\n          t.setAttribute(_i34, _n25);\n        }\n      } catch (t) {}\n    }), e.innerHTML.replace(yn, \"\");\n  }\n};\n\nvar Cn = Object.freeze({\n  __proto__: null\n});\n\nvar En = /*#__PURE__*/function (_q9) {\n  _inherits(En, _q9);\n\n  var _super26 = _createSuper(En);\n\n  function En(t, e) {\n    var _this39;\n\n    _classCallCheck(this, En);\n\n    _this39 = _super26.apply(this, arguments), _this39.attachmentManager = t, _this39.attachment = e, _this39.id = _this39.attachment.id, _this39.file = _this39.attachment.file;\n    return _this39;\n  }\n\n  _createClass(En, [{\n    key: \"remove\",\n    value: function remove() {\n      return this.attachmentManager.requestRemovalOfAttachment(this.attachment);\n    }\n  }]);\n\n  return En;\n}(q);\n\nEn.proxyMethod(\"attachment.getAttribute\"), En.proxyMethod(\"attachment.hasAttribute\"), En.proxyMethod(\"attachment.setAttribute\"), En.proxyMethod(\"attachment.getAttributes\"), En.proxyMethod(\"attachment.setAttributes\"), En.proxyMethod(\"attachment.isPending\"), En.proxyMethod(\"attachment.isPreviewable\"), En.proxyMethod(\"attachment.getURL\"), En.proxyMethod(\"attachment.getHref\"), En.proxyMethod(\"attachment.getFilename\"), En.proxyMethod(\"attachment.getFilesize\"), En.proxyMethod(\"attachment.getFormattedFilesize\"), En.proxyMethod(\"attachment.getExtension\"), En.proxyMethod(\"attachment.getContentType\"), En.proxyMethod(\"attachment.getFile\"), En.proxyMethod(\"attachment.setFile\"), En.proxyMethod(\"attachment.releaseFile\"), En.proxyMethod(\"attachment.getUploadProgress\"), En.proxyMethod(\"attachment.setUploadProgress\");\n\nvar Sn = /*#__PURE__*/function (_q10) {\n  _inherits(Sn, _q10);\n\n  var _super27 = _createSuper(Sn);\n\n  function Sn() {\n    var _this40;\n\n    _classCallCheck(this, Sn);\n\n    var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\n    _this40 = _super27.apply(this, arguments), _this40.managedAttachments = {}, Array.from(t).forEach(function (t) {\n      _this40.manageAttachment(t);\n    });\n    return _this40;\n  }\n\n  _createClass(Sn, [{\n    key: \"getAttachments\",\n    value: function getAttachments() {\n      var t = [];\n\n      for (var _e40 in this.managedAttachments) {\n        var _i35 = this.managedAttachments[_e40];\n        t.push(_i35);\n      }\n\n      return t;\n    }\n  }, {\n    key: \"manageAttachment\",\n    value: function manageAttachment(t) {\n      return this.managedAttachments[t.id] || (this.managedAttachments[t.id] = new En(this, t)), this.managedAttachments[t.id];\n    }\n  }, {\n    key: \"attachmentIsManaged\",\n    value: function attachmentIsManaged(t) {\n      return t.id in this.managedAttachments;\n    }\n  }, {\n    key: \"requestRemovalOfAttachment\",\n    value: function requestRemovalOfAttachment(t) {\n      var e, i;\n      if (this.attachmentIsManaged(t)) return null === (e = this.delegate) || void 0 === e || null === (i = e.attachmentManagerDidRequestRemovalOfAttachment) || void 0 === i ? void 0 : i.call(e, t);\n    }\n  }, {\n    key: \"unmanageAttachment\",\n    value: function unmanageAttachment(t) {\n      var e = this.managedAttachments[t.id];\n      return delete this.managedAttachments[t.id], e;\n    }\n  }]);\n\n  return Sn;\n}(q);\n\nvar Rn = /*#__PURE__*/function () {\n  function Rn(t) {\n    _classCallCheck(this, Rn);\n\n    this.composition = t, this.document = this.composition.document;\n    var e = this.composition.getSelectedRange();\n    this.startPosition = e[0], this.endPosition = e[1], this.startLocation = this.document.locationFromPosition(this.startPosition), this.endLocation = this.document.locationFromPosition(this.endPosition), this.block = this.document.getBlockAtIndex(this.endLocation.index), this.breaksOnReturn = this.block.breaksOnReturn(), this.previousCharacter = this.block.text.getStringAtPosition(this.endLocation.offset - 1), this.nextCharacter = this.block.text.getStringAtPosition(this.endLocation.offset);\n  }\n\n  _createClass(Rn, [{\n    key: \"shouldInsertBlockBreak\",\n    value: function shouldInsertBlockBreak() {\n      return this.block.hasAttributes() && this.block.isListItem() && !this.block.isEmpty() ? 0 !== this.startLocation.offset : this.breaksOnReturn && \"\\n\" !== this.nextCharacter;\n    }\n  }, {\n    key: \"shouldBreakFormattedBlock\",\n    value: function shouldBreakFormattedBlock() {\n      return this.block.hasAttributes() && !this.block.isListItem() && (this.breaksOnReturn && \"\\n\" === this.nextCharacter || \"\\n\" === this.previousCharacter);\n    }\n  }, {\n    key: \"shouldDecreaseListLevel\",\n    value: function shouldDecreaseListLevel() {\n      return this.block.hasAttributes() && this.block.isListItem() && this.block.isEmpty();\n    }\n  }, {\n    key: \"shouldPrependListItem\",\n    value: function shouldPrependListItem() {\n      return this.block.isListItem() && 0 === this.startLocation.offset && !this.block.isEmpty();\n    }\n  }, {\n    key: \"shouldRemoveLastBlockAttribute\",\n    value: function shouldRemoveLastBlockAttribute() {\n      return this.block.hasAttributes() && !this.block.isListItem() && this.block.isEmpty();\n    }\n  }]);\n\n  return Rn;\n}();\n\nvar kn = /*#__PURE__*/function (_q11) {\n  _inherits(kn, _q11);\n\n  var _super28 = _createSuper(kn);\n\n  function kn() {\n    var _this41;\n\n    _classCallCheck(this, kn);\n\n    _this41 = _super28.apply(this, arguments), _this41.document = new on(), _this41.attachments = [], _this41.currentAttributes = {}, _this41.revision = 0;\n    return _this41;\n  }\n\n  _createClass(kn, [{\n    key: \"setDocument\",\n    value: function setDocument(t) {\n      var e, i;\n      if (!t.isEqualTo(this.document)) return this.document = t, this.refreshAttachments(), this.revision++, null === (e = this.delegate) || void 0 === e || null === (i = e.compositionDidChangeDocument) || void 0 === i ? void 0 : i.call(e, t);\n    }\n  }, {\n    key: \"getSnapshot\",\n    value: function getSnapshot() {\n      return {\n        document: this.document,\n        selectedRange: this.getSelectedRange()\n      };\n    }\n  }, {\n    key: \"loadSnapshot\",\n    value: function loadSnapshot(t) {\n      var e, i, n, r;\n      var o = t.document,\n          s = t.selectedRange;\n      return null === (e = this.delegate) || void 0 === e || null === (i = e.compositionWillLoadSnapshot) || void 0 === i || i.call(e), this.setDocument(null != o ? o : new on()), this.setSelection(null != s ? s : [0, 0]), null === (n = this.delegate) || void 0 === n || null === (r = n.compositionDidLoadSnapshot) || void 0 === r ? void 0 : r.call(n);\n    }\n  }, {\n    key: \"insertText\",\n    value: function insertText(t) {\n      var _ref16 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {\n        updatePosition: !0\n      },\n          e = _ref16.updatePosition;\n\n      var i = this.getSelectedRange();\n      this.setDocument(this.document.insertTextAtRange(t, i));\n      var n = i[0],\n          r = n + t.getLength();\n      return e && this.setSelection(r), this.notifyDelegateOfInsertionAtRange([n, r]);\n    }\n  }, {\n    key: \"insertBlock\",\n    value: function insertBlock() {\n      var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Gi();\n      var e = new on([t]);\n      return this.insertDocument(e);\n    }\n  }, {\n    key: \"insertDocument\",\n    value: function insertDocument() {\n      var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new on();\n      var e = this.getSelectedRange();\n      this.setDocument(this.document.insertDocumentAtRange(t, e));\n      var i = e[0],\n          n = i + t.getLength();\n      return this.setSelection(n), this.notifyDelegateOfInsertionAtRange([i, n]);\n    }\n  }, {\n    key: \"insertString\",\n    value: function insertString(t, e) {\n      var i = this.getCurrentTextAttributes(),\n          n = Ki.textForStringWithAttributes(t, i);\n      return this.insertText(n, e);\n    }\n  }, {\n    key: \"insertBlockBreak\",\n    value: function insertBlockBreak() {\n      var t = this.getSelectedRange();\n      this.setDocument(this.document.insertBlockBreakAtRange(t));\n      var e = t[0],\n          i = e + 1;\n      return this.setSelection(i), this.notifyDelegateOfInsertionAtRange([e, i]);\n    }\n  }, {\n    key: \"insertLineBreak\",\n    value: function insertLineBreak() {\n      var t = new Rn(this);\n      if (t.shouldDecreaseListLevel()) return this.decreaseListLevel(), this.setSelection(t.startPosition);\n\n      if (t.shouldPrependListItem()) {\n        var _e41 = new on([t.block.copyWithoutText()]);\n\n        return this.insertDocument(_e41);\n      }\n\n      return t.shouldInsertBlockBreak() ? this.insertBlockBreak() : t.shouldRemoveLastBlockAttribute() ? this.removeLastBlockAttribute() : t.shouldBreakFormattedBlock() ? this.breakFormattedBlock(t) : this.insertString(\"\\n\");\n    }\n  }, {\n    key: \"insertHTML\",\n    value: function insertHTML(t) {\n      var e = cn.parse(t).getDocument(),\n          i = this.getSelectedRange();\n      this.setDocument(this.document.mergeDocumentAtRange(e, i));\n      var n = i[0],\n          r = n + e.getLength() - 1;\n      return this.setSelection(r), this.notifyDelegateOfInsertionAtRange([n, r]);\n    }\n  }, {\n    key: \"replaceHTML\",\n    value: function replaceHTML(t) {\n      var e = cn.parse(t).getDocument().copyUsingObjectsFromDocument(this.document),\n          i = this.getLocationRange({\n        strict: !1\n      }),\n          n = this.document.rangeFromLocationRange(i);\n      return this.setDocument(e), this.setSelection(n);\n    }\n  }, {\n    key: \"insertFile\",\n    value: function insertFile(t) {\n      return this.insertFiles([t]);\n    }\n  }, {\n    key: \"insertFiles\",\n    value: function insertFiles(t) {\n      var _this42 = this;\n\n      var e = [];\n      return Array.from(t).forEach(function (t) {\n        var i;\n\n        if (null !== (i = _this42.delegate) && void 0 !== i && i.compositionShouldAcceptFile(t)) {\n          var _i36 = Wi.attachmentForFile(t);\n\n          e.push(_i36);\n        }\n      }), this.insertAttachments(e);\n    }\n  }, {\n    key: \"insertAttachment\",\n    value: function insertAttachment(t) {\n      return this.insertAttachments([t]);\n    }\n  }, {\n    key: \"insertAttachments\",\n    value: function insertAttachments(t) {\n      var _this43 = this;\n\n      var e = new Ki();\n      return Array.from(t).forEach(function (t) {\n        var n;\n\n        var r = t.getType(),\n            o = null === (n = i[r]) || void 0 === n ? void 0 : n.presentation,\n            s = _this43.getCurrentTextAttributes();\n\n        o && (s.presentation = o);\n        var a = Ki.textForAttachmentWithAttributes(t, s);\n        e = e.appendText(a);\n      }), this.insertText(e);\n    }\n  }, {\n    key: \"shouldManageDeletingInDirection\",\n    value: function shouldManageDeletingInDirection(t) {\n      var e = this.getLocationRange();\n\n      if (Lt(e)) {\n        if (\"backward\" === t && 0 === e[0].offset) return !0;\n        if (this.shouldManageMovingCursorInDirection(t)) return !0;\n      } else if (e[0].index !== e[1].index) return !0;\n\n      return !1;\n    }\n  }, {\n    key: \"deleteInDirection\",\n    value: function deleteInDirection(t) {\n      var e,\n          i,\n          n,\n          _ref17 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n          r = _ref17.length;\n\n      var o = this.getLocationRange();\n      var s = this.getSelectedRange();\n      var a = Lt(s);\n\n      if (a ? i = \"backward\" === t && 0 === o[0].offset : n = o[0].index !== o[1].index, i && this.canDecreaseBlockAttributeLevel()) {\n        var _t40 = this.getBlock();\n\n        if (_t40.isListItem() ? this.decreaseListLevel() : this.decreaseBlockAttributeLevel(), this.setSelection(s[0]), _t40.isEmpty()) return !1;\n      }\n\n      return a && (s = this.getExpandedRangeInDirection(t, {\n        length: r\n      }), \"backward\" === t && (e = this.getAttachmentAtRange(s))), e ? (this.editAttachment(e), !1) : (this.setDocument(this.document.removeTextAtRange(s)), this.setSelection(s[0]), !i && !n && void 0);\n    }\n  }, {\n    key: \"moveTextFromRange\",\n    value: function moveTextFromRange(t) {\n      var _Array$from9 = Array.from(this.getSelectedRange()),\n          _Array$from10 = _slicedToArray(_Array$from9, 1),\n          e = _Array$from10[0];\n\n      return this.setDocument(this.document.moveTextFromRangeToPosition(t, e)), this.setSelection(e);\n    }\n  }, {\n    key: \"removeAttachment\",\n    value: function removeAttachment(t) {\n      var e = this.document.getRangeOfAttachment(t);\n      if (e) return this.stopEditingAttachment(), this.setDocument(this.document.removeTextAtRange(e)), this.setSelection(e[0]);\n    }\n  }, {\n    key: \"removeLastBlockAttribute\",\n    value: function removeLastBlockAttribute() {\n      var _Array$from11 = Array.from(this.getSelectedRange()),\n          _Array$from12 = _slicedToArray(_Array$from11, 2),\n          t = _Array$from12[0],\n          e = _Array$from12[1],\n          i = this.document.getBlockAtPosition(e);\n\n      return this.removeCurrentAttribute(i.getLastAttribute()), this.setSelection(t);\n    }\n  }, {\n    key: \"insertPlaceholder\",\n    value: function insertPlaceholder() {\n      return this.placeholderPosition = this.getPosition(), this.insertString(\" \");\n    }\n  }, {\n    key: \"selectPlaceholder\",\n    value: function selectPlaceholder() {\n      if (null != this.placeholderPosition) return this.setSelectedRange([this.placeholderPosition, this.placeholderPosition + 1]), this.getSelectedRange();\n    }\n  }, {\n    key: \"forgetPlaceholder\",\n    value: function forgetPlaceholder() {\n      this.placeholderPosition = null;\n    }\n  }, {\n    key: \"hasCurrentAttribute\",\n    value: function hasCurrentAttribute(t) {\n      var e = this.currentAttributes[t];\n      return null != e && !1 !== e;\n    }\n  }, {\n    key: \"toggleCurrentAttribute\",\n    value: function toggleCurrentAttribute(t) {\n      var e = !this.currentAttributes[t];\n      return e ? this.setCurrentAttribute(t, e) : this.removeCurrentAttribute(t);\n    }\n  }, {\n    key: \"canSetCurrentAttribute\",\n    value: function canSetCurrentAttribute(t) {\n      return mt(t) ? this.canSetCurrentBlockAttribute(t) : this.canSetCurrentTextAttribute(t);\n    }\n  }, {\n    key: \"canSetCurrentTextAttribute\",\n    value: function canSetCurrentTextAttribute(t) {\n      var e = this.getSelectedDocument();\n\n      if (e) {\n        for (var _i37 = 0, _Array$from13 = Array.from(e.getAttachments()); _i37 < _Array$from13.length; _i37++) {\n          var _t41 = _Array$from13[_i37];\n          if (!_t41.hasContent()) return !1;\n        }\n\n        return !0;\n      }\n    }\n  }, {\n    key: \"canSetCurrentBlockAttribute\",\n    value: function canSetCurrentBlockAttribute(t) {\n      var e = this.getBlock();\n      if (e) return !e.isTerminalBlock();\n    }\n  }, {\n    key: \"setCurrentAttribute\",\n    value: function setCurrentAttribute(t, e) {\n      return mt(t) ? this.setBlockAttribute(t, e) : (this.setTextAttribute(t, e), this.currentAttributes[t] = e, this.notifyDelegateOfCurrentAttributesChange());\n    }\n  }, {\n    key: \"setHTMLAtributeAtPosition\",\n    value: function setHTMLAtributeAtPosition(t, e, i) {\n      var n;\n      var r = this.document.getBlockAtPosition(t),\n          o = null === (n = mt(r.getLastAttribute())) || void 0 === n ? void 0 : n.htmlAttributes;\n\n      if (r && null != o && o.includes(e)) {\n        var _n26 = this.document.setHTMLAttributeAtPosition(t, e, i);\n\n        this.setDocument(_n26);\n      }\n    }\n  }, {\n    key: \"setTextAttribute\",\n    value: function setTextAttribute(t, e) {\n      var i = this.getSelectedRange();\n      if (!i) return;\n\n      var _Array$from14 = Array.from(i),\n          _Array$from15 = _slicedToArray(_Array$from14, 2),\n          n = _Array$from15[0],\n          r = _Array$from15[1];\n\n      if (n !== r) return this.setDocument(this.document.addAttributeAtRange(t, e, i));\n\n      if (\"href\" === t) {\n        var _t42 = Ki.textForStringWithAttributes(e, {\n          href: e\n        });\n\n        return this.insertText(_t42);\n      }\n    }\n  }, {\n    key: \"setBlockAttribute\",\n    value: function setBlockAttribute(t, e) {\n      var i = this.getSelectedRange();\n      if (this.canSetCurrentAttribute(t)) return this.setDocument(this.document.applyBlockAttributeAtRange(t, e, i)), this.setSelection(i);\n    }\n  }, {\n    key: \"removeCurrentAttribute\",\n    value: function removeCurrentAttribute(t) {\n      return mt(t) ? (this.removeBlockAttribute(t), this.updateCurrentAttributes()) : (this.removeTextAttribute(t), delete this.currentAttributes[t], this.notifyDelegateOfCurrentAttributesChange());\n    }\n  }, {\n    key: \"removeTextAttribute\",\n    value: function removeTextAttribute(t) {\n      var e = this.getSelectedRange();\n      if (e) return this.setDocument(this.document.removeAttributeAtRange(t, e));\n    }\n  }, {\n    key: \"removeBlockAttribute\",\n    value: function removeBlockAttribute(t) {\n      var e = this.getSelectedRange();\n      if (e) return this.setDocument(this.document.removeAttributeAtRange(t, e));\n    }\n  }, {\n    key: \"canDecreaseNestingLevel\",\n    value: function canDecreaseNestingLevel() {\n      var t;\n      return (null === (t = this.getBlock()) || void 0 === t ? void 0 : t.getNestingLevel()) > 0;\n    }\n  }, {\n    key: \"canIncreaseNestingLevel\",\n    value: function canIncreaseNestingLevel() {\n      var t;\n      var e = this.getBlock();\n\n      if (e) {\n        if (null === (t = mt(e.getLastNestableAttribute())) || void 0 === t || !t.listAttribute) return e.getNestingLevel() > 0;\n        {\n          var _t43 = this.getPreviousBlock();\n\n          if (_t43) return function () {\n            var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [];\n            return ot((arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []).slice(0, t.length), t);\n          }(_t43.getListItemAttributes(), e.getListItemAttributes());\n        }\n      }\n    }\n  }, {\n    key: \"decreaseNestingLevel\",\n    value: function decreaseNestingLevel() {\n      var t = this.getBlock();\n      if (t) return this.setDocument(this.document.replaceBlock(t, t.decreaseNestingLevel()));\n    }\n  }, {\n    key: \"increaseNestingLevel\",\n    value: function increaseNestingLevel() {\n      var t = this.getBlock();\n      if (t) return this.setDocument(this.document.replaceBlock(t, t.increaseNestingLevel()));\n    }\n  }, {\n    key: \"canDecreaseBlockAttributeLevel\",\n    value: function canDecreaseBlockAttributeLevel() {\n      var t;\n      return (null === (t = this.getBlock()) || void 0 === t ? void 0 : t.getAttributeLevel()) > 0;\n    }\n  }, {\n    key: \"decreaseBlockAttributeLevel\",\n    value: function decreaseBlockAttributeLevel() {\n      var t;\n      var e = null === (t = this.getBlock()) || void 0 === t ? void 0 : t.getLastAttribute();\n      if (e) return this.removeCurrentAttribute(e);\n    }\n  }, {\n    key: \"decreaseListLevel\",\n    value: function decreaseListLevel() {\n      var _Array$from16 = Array.from(this.getSelectedRange()),\n          _Array$from17 = _slicedToArray(_Array$from16, 1),\n          t = _Array$from17[0];\n\n      var _this$document$locati = this.document.locationFromPosition(t),\n          e = _this$document$locati.index;\n\n      var i = e;\n      var n = this.getBlock().getAttributeLevel();\n      var r = this.document.getBlockAtIndex(i + 1);\n\n      for (; r && r.isListItem() && !(r.getAttributeLevel() <= n);) {\n        i++, r = this.document.getBlockAtIndex(i + 1);\n      }\n\n      t = this.document.positionFromLocation({\n        index: e,\n        offset: 0\n      });\n      var o = this.document.positionFromLocation({\n        index: i,\n        offset: 0\n      });\n      return this.setDocument(this.document.removeLastListAttributeAtRange([t, o]));\n    }\n  }, {\n    key: \"updateCurrentAttributes\",\n    value: function updateCurrentAttributes() {\n      var _this44 = this;\n\n      var t = this.getSelectedRange({\n        ignoreLock: !0\n      });\n\n      if (t) {\n        var _e42 = this.document.getCommonAttributesAtRange(t);\n\n        if (Array.from(gt()).forEach(function (t) {\n          _e42[t] || _this44.canSetCurrentAttribute(t) || (_e42[t] = !1);\n        }), !Tt(_e42, this.currentAttributes)) return this.currentAttributes = _e42, this.notifyDelegateOfCurrentAttributesChange();\n      }\n    }\n  }, {\n    key: \"getCurrentAttributes\",\n    value: function getCurrentAttributes() {\n      return m.call({}, this.currentAttributes);\n    }\n  }, {\n    key: \"getCurrentTextAttributes\",\n    value: function getCurrentTextAttributes() {\n      var t = {};\n\n      for (var _e43 in this.currentAttributes) {\n        var _i38 = this.currentAttributes[_e43];\n        !1 !== _i38 && ft(_e43) && (t[_e43] = _i38);\n      }\n\n      return t;\n    }\n  }, {\n    key: \"freezeSelection\",\n    value: function freezeSelection() {\n      return this.setCurrentAttribute(\"frozen\", !0);\n    }\n  }, {\n    key: \"thawSelection\",\n    value: function thawSelection() {\n      return this.removeCurrentAttribute(\"frozen\");\n    }\n  }, {\n    key: \"hasFrozenSelection\",\n    value: function hasFrozenSelection() {\n      return this.hasCurrentAttribute(\"frozen\");\n    }\n  }, {\n    key: \"setSelection\",\n    value: function setSelection(t) {\n      var e;\n      var i = this.document.locationRangeFromRange(t);\n      return null === (e = this.delegate) || void 0 === e ? void 0 : e.compositionDidRequestChangingSelectionToLocationRange(i);\n    }\n  }, {\n    key: \"getSelectedRange\",\n    value: function getSelectedRange() {\n      var t = this.getLocationRange();\n      if (t) return this.document.rangeFromLocationRange(t);\n    }\n  }, {\n    key: \"setSelectedRange\",\n    value: function setSelectedRange(t) {\n      var e = this.document.locationRangeFromRange(t);\n      return this.getSelectionManager().setLocationRange(e);\n    }\n  }, {\n    key: \"getPosition\",\n    value: function getPosition() {\n      var t = this.getLocationRange();\n      if (t) return this.document.positionFromLocation(t[0]);\n    }\n  }, {\n    key: \"getLocationRange\",\n    value: function getLocationRange(t) {\n      return this.targetLocationRange ? this.targetLocationRange : this.getSelectionManager().getLocationRange(t) || wt({\n        index: 0,\n        offset: 0\n      });\n    }\n  }, {\n    key: \"withTargetLocationRange\",\n    value: function withTargetLocationRange(t, e) {\n      var i;\n      this.targetLocationRange = t;\n\n      try {\n        i = e();\n      } finally {\n        this.targetLocationRange = null;\n      }\n\n      return i;\n    }\n  }, {\n    key: \"withTargetRange\",\n    value: function withTargetRange(t, e) {\n      var i = this.document.locationRangeFromRange(t);\n      return this.withTargetLocationRange(i, e);\n    }\n  }, {\n    key: \"withTargetDOMRange\",\n    value: function withTargetDOMRange(t, e) {\n      var i = this.createLocationRangeFromDOMRange(t, {\n        strict: !1\n      });\n      return this.withTargetLocationRange(i, e);\n    }\n  }, {\n    key: \"getExpandedRangeInDirection\",\n    value: function getExpandedRangeInDirection(t) {\n      var _ref18 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n          e = _ref18.length,\n          _Array$from18 = Array.from(this.getSelectedRange()),\n          _Array$from19 = _slicedToArray(_Array$from18, 2),\n          i = _Array$from19[0],\n          n = _Array$from19[1];\n\n      return \"backward\" === t ? e ? i -= e : i = this.translateUTF16PositionFromOffset(i, -1) : e ? n += e : n = this.translateUTF16PositionFromOffset(n, 1), wt([i, n]);\n    }\n  }, {\n    key: \"shouldManageMovingCursorInDirection\",\n    value: function shouldManageMovingCursorInDirection(t) {\n      if (this.editingAttachment) return !0;\n      var e = this.getExpandedRangeInDirection(t);\n      return null != this.getAttachmentAtRange(e);\n    }\n  }, {\n    key: \"moveCursorInDirection\",\n    value: function moveCursorInDirection(t) {\n      var e, i;\n      if (this.editingAttachment) i = this.document.getRangeOfAttachment(this.editingAttachment);else {\n        var _n27 = this.getSelectedRange();\n\n        i = this.getExpandedRangeInDirection(t), e = !Dt(_n27, i);\n      }\n\n      if (\"backward\" === t ? this.setSelectedRange(i[0]) : this.setSelectedRange(i[1]), e) {\n        var _t44 = this.getAttachmentAtRange(i);\n\n        if (_t44) return this.editAttachment(_t44);\n      }\n    }\n  }, {\n    key: \"expandSelectionInDirection\",\n    value: function expandSelectionInDirection(t) {\n      var _ref19 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n          e = _ref19.length;\n\n      var i = this.getExpandedRangeInDirection(t, {\n        length: e\n      });\n      return this.setSelectedRange(i);\n    }\n  }, {\n    key: \"expandSelectionForEditing\",\n    value: function expandSelectionForEditing() {\n      if (this.hasCurrentAttribute(\"href\")) return this.expandSelectionAroundCommonAttribute(\"href\");\n    }\n  }, {\n    key: \"expandSelectionAroundCommonAttribute\",\n    value: function expandSelectionAroundCommonAttribute(t) {\n      var e = this.getPosition(),\n          i = this.document.getRangeOfCommonAttributeAtPosition(t, e);\n      return this.setSelectedRange(i);\n    }\n  }, {\n    key: \"selectionContainsAttachments\",\n    value: function selectionContainsAttachments() {\n      var t;\n      return (null === (t = this.getSelectedAttachments()) || void 0 === t ? void 0 : t.length) > 0;\n    }\n  }, {\n    key: \"selectionIsInCursorTarget\",\n    value: function selectionIsInCursorTarget() {\n      return this.editingAttachment || this.positionIsCursorTarget(this.getPosition());\n    }\n  }, {\n    key: \"positionIsCursorTarget\",\n    value: function positionIsCursorTarget(t) {\n      var e = this.document.locationFromPosition(t);\n      if (e) return this.locationIsCursorTarget(e);\n    }\n  }, {\n    key: \"positionIsBlockBreak\",\n    value: function positionIsBlockBreak(t) {\n      var e;\n      return null === (e = this.document.getPieceAtPosition(t)) || void 0 === e ? void 0 : e.isBlockBreak();\n    }\n  }, {\n    key: \"getSelectedDocument\",\n    value: function getSelectedDocument() {\n      var t = this.getSelectedRange();\n      if (t) return this.document.getDocumentAtRange(t);\n    }\n  }, {\n    key: \"getSelectedAttachments\",\n    value: function getSelectedAttachments() {\n      var t;\n      return null === (t = this.getSelectedDocument()) || void 0 === t ? void 0 : t.getAttachments();\n    }\n  }, {\n    key: \"getAttachments\",\n    value: function getAttachments() {\n      return this.attachments.slice(0);\n    }\n  }, {\n    key: \"refreshAttachments\",\n    value: function refreshAttachments() {\n      var _this45 = this;\n\n      var t = this.document.getAttachments(),\n          _ref20 = function () {\n        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],\n            e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [];\n        var i = [],\n            n = [],\n            r = new Set();\n        t.forEach(function (t) {\n          r.add(t);\n        });\n        var o = new Set();\n        return e.forEach(function (t) {\n          o.add(t), r.has(t) || i.push(t);\n        }), t.forEach(function (t) {\n          o.has(t) || n.push(t);\n        }), {\n          added: i,\n          removed: n\n        };\n      }(this.attachments, t),\n          e = _ref20.added,\n          i = _ref20.removed;\n\n      return this.attachments = t, Array.from(i).forEach(function (t) {\n        var e, i;\n        t.delegate = null, null === (e = _this45.delegate) || void 0 === e || null === (i = e.compositionDidRemoveAttachment) || void 0 === i || i.call(e, t);\n      }), function () {\n        var t = [];\n        return Array.from(e).forEach(function (e) {\n          var i, n;\n          e.delegate = _this45, t.push(null === (i = _this45.delegate) || void 0 === i || null === (n = i.compositionDidAddAttachment) || void 0 === n ? void 0 : n.call(i, e));\n        }), t;\n      }();\n    }\n  }, {\n    key: \"attachmentDidChangeAttributes\",\n    value: function attachmentDidChangeAttributes(t) {\n      var e, i;\n      return this.revision++, null === (e = this.delegate) || void 0 === e || null === (i = e.compositionDidEditAttachment) || void 0 === i ? void 0 : i.call(e, t);\n    }\n  }, {\n    key: \"attachmentDidChangePreviewURL\",\n    value: function attachmentDidChangePreviewURL(t) {\n      var e, i;\n      return this.revision++, null === (e = this.delegate) || void 0 === e || null === (i = e.compositionDidChangeAttachmentPreviewURL) || void 0 === i ? void 0 : i.call(e, t);\n    }\n  }, {\n    key: \"editAttachment\",\n    value: function editAttachment(t, e) {\n      var i, n;\n      if (t !== this.editingAttachment) return this.stopEditingAttachment(), this.editingAttachment = t, null === (i = this.delegate) || void 0 === i || null === (n = i.compositionDidStartEditingAttachment) || void 0 === n ? void 0 : n.call(i, this.editingAttachment, e);\n    }\n  }, {\n    key: \"stopEditingAttachment\",\n    value: function stopEditingAttachment() {\n      var t, e;\n      this.editingAttachment && (null === (t = this.delegate) || void 0 === t || null === (e = t.compositionDidStopEditingAttachment) || void 0 === e || e.call(t, this.editingAttachment), this.editingAttachment = null);\n    }\n  }, {\n    key: \"updateAttributesForAttachment\",\n    value: function updateAttributesForAttachment(t, e) {\n      return this.setDocument(this.document.updateAttributesForAttachment(t, e));\n    }\n  }, {\n    key: \"removeAttributeForAttachment\",\n    value: function removeAttributeForAttachment(t, e) {\n      return this.setDocument(this.document.removeAttributeForAttachment(t, e));\n    }\n  }, {\n    key: \"breakFormattedBlock\",\n    value: function breakFormattedBlock(t) {\n      var e = t.document;\n      var i = t.block;\n      var n = t.startPosition,\n          r = [n - 1, n];\n      i.getBlockBreakPosition() === t.startLocation.offset ? (i.breaksOnReturn() && \"\\n\" === t.nextCharacter ? n += 1 : e = e.removeTextAtRange(r), r = [n, n]) : \"\\n\" === t.nextCharacter ? \"\\n\" === t.previousCharacter ? r = [n - 1, n + 1] : (r = [n, n + 1], n += 1) : t.startLocation.offset - 1 != 0 && (n += 1);\n      var o = new on([i.removeLastAttribute().copyWithoutText()]);\n      return this.setDocument(e.insertDocumentAtRange(o, r)), this.setSelection(n);\n    }\n  }, {\n    key: \"getPreviousBlock\",\n    value: function getPreviousBlock() {\n      var t = this.getLocationRange();\n\n      if (t) {\n        var _e44 = t[0].index;\n        if (_e44 > 0) return this.document.getBlockAtIndex(_e44 - 1);\n      }\n    }\n  }, {\n    key: \"getBlock\",\n    value: function getBlock() {\n      var t = this.getLocationRange();\n      if (t) return this.document.getBlockAtIndex(t[0].index);\n    }\n  }, {\n    key: \"getAttachmentAtRange\",\n    value: function getAttachmentAtRange(t) {\n      var e = this.document.getDocumentAtRange(t);\n      if (e.toString() === \"\".concat(\"\", \"\\n\")) return e.getAttachments()[0];\n    }\n  }, {\n    key: \"notifyDelegateOfCurrentAttributesChange\",\n    value: function notifyDelegateOfCurrentAttributesChange() {\n      var t, e;\n      return null === (t = this.delegate) || void 0 === t || null === (e = t.compositionDidChangeCurrentAttributes) || void 0 === e ? void 0 : e.call(t, this.currentAttributes);\n    }\n  }, {\n    key: \"notifyDelegateOfInsertionAtRange\",\n    value: function notifyDelegateOfInsertionAtRange(t) {\n      var e, i;\n      return null === (e = this.delegate) || void 0 === e || null === (i = e.compositionDidPerformInsertionAtRange) || void 0 === i ? void 0 : i.call(e, t);\n    }\n  }, {\n    key: \"translateUTF16PositionFromOffset\",\n    value: function translateUTF16PositionFromOffset(t, e) {\n      var i = this.document.toUTF16String(),\n          n = i.offsetFromUCS2Offset(t);\n      return i.offsetToUCS2Offset(n + e);\n    }\n  }]);\n\n  return kn;\n}(q);\n\nkn.proxyMethod(\"getSelectionManager().getPointRange\"), kn.proxyMethod(\"getSelectionManager().setLocationRangeFromPointRange\"), kn.proxyMethod(\"getSelectionManager().createLocationRangeFromDOMRange\"), kn.proxyMethod(\"getSelectionManager().locationIsCursorTarget\"), kn.proxyMethod(\"getSelectionManager().selectionIsExpanded\"), kn.proxyMethod(\"delegate?.getSelectionManager\");\n\nvar Tn = /*#__PURE__*/function (_q12) {\n  _inherits(Tn, _q12);\n\n  var _super29 = _createSuper(Tn);\n\n  function Tn(t) {\n    var _this46;\n\n    _classCallCheck(this, Tn);\n\n    _this46 = _super29.apply(this, arguments), _this46.composition = t, _this46.undoEntries = [], _this46.redoEntries = [];\n    return _this46;\n  }\n\n  _createClass(Tn, [{\n    key: \"recordUndoEntry\",\n    value: function recordUndoEntry(t) {\n      var _ref21 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n          e = _ref21.context,\n          i = _ref21.consolidatable;\n\n      var n = this.undoEntries.slice(-1)[0];\n\n      if (!i || !wn(n, t, e)) {\n        var _i39 = this.createEntry({\n          description: t,\n          context: e\n        });\n\n        this.undoEntries.push(_i39), this.redoEntries = [];\n      }\n    }\n  }, {\n    key: \"undo\",\n    value: function undo() {\n      var t = this.undoEntries.pop();\n\n      if (t) {\n        var _e45 = this.createEntry(t);\n\n        return this.redoEntries.push(_e45), this.composition.loadSnapshot(t.snapshot);\n      }\n    }\n  }, {\n    key: \"redo\",\n    value: function redo() {\n      var t = this.redoEntries.pop();\n\n      if (t) {\n        var _e46 = this.createEntry(t);\n\n        return this.undoEntries.push(_e46), this.composition.loadSnapshot(t.snapshot);\n      }\n    }\n  }, {\n    key: \"canUndo\",\n    value: function canUndo() {\n      return this.undoEntries.length > 0;\n    }\n  }, {\n    key: \"canRedo\",\n    value: function canRedo() {\n      return this.redoEntries.length > 0;\n    }\n  }, {\n    key: \"createEntry\",\n    value: function createEntry() {\n      var _ref22 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},\n          t = _ref22.description,\n          e = _ref22.context;\n\n      return {\n        description: null == t ? void 0 : t.toString(),\n        context: JSON.stringify(e),\n        snapshot: this.composition.getSnapshot()\n      };\n    }\n  }]);\n\n  return Tn;\n}(q);\n\nvar wn = function wn(t, e, i) {\n  return (null == t ? void 0 : t.description) === (null == e ? void 0 : e.toString()) && (null == t ? void 0 : t.context) === JSON.stringify(i);\n},\n    Ln = \"attachmentGallery\";\n\nvar Dn = /*#__PURE__*/function () {\n  function Dn(t) {\n    _classCallCheck(this, Dn);\n\n    this.document = t.document, this.selectedRange = t.selectedRange;\n  }\n\n  _createClass(Dn, [{\n    key: \"perform\",\n    value: function perform() {\n      return this.removeBlockAttribute(), this.applyBlockAttribute();\n    }\n  }, {\n    key: \"getSnapshot\",\n    value: function getSnapshot() {\n      return {\n        document: this.document,\n        selectedRange: this.selectedRange\n      };\n    }\n  }, {\n    key: \"removeBlockAttribute\",\n    value: function removeBlockAttribute() {\n      var _this47 = this;\n\n      return this.findRangesOfBlocks().map(function (t) {\n        return _this47.document = _this47.document.removeAttributeAtRange(Ln, t);\n      });\n    }\n  }, {\n    key: \"applyBlockAttribute\",\n    value: function applyBlockAttribute() {\n      var _this48 = this;\n\n      var t = 0;\n      this.findRangesOfPieces().forEach(function (e) {\n        e[1] - e[0] > 1 && (e[0] += t, e[1] += t, \"\\n\" !== _this48.document.getCharacterAtPosition(e[1]) && (_this48.document = _this48.document.insertBlockBreakAtRange(e[1]), e[1] < _this48.selectedRange[1] && _this48.moveSelectedRangeForward(), e[1]++, t++), 0 !== e[0] && \"\\n\" !== _this48.document.getCharacterAtPosition(e[0] - 1) && (_this48.document = _this48.document.insertBlockBreakAtRange(e[0]), e[0] < _this48.selectedRange[0] && _this48.moveSelectedRangeForward(), e[0]++, t++), _this48.document = _this48.document.applyBlockAttributeAtRange(Ln, !0, e));\n      });\n    }\n  }, {\n    key: \"findRangesOfBlocks\",\n    value: function findRangesOfBlocks() {\n      return this.document.findRangesForBlockAttribute(Ln);\n    }\n  }, {\n    key: \"findRangesOfPieces\",\n    value: function findRangesOfPieces() {\n      return this.document.findRangesForTextAttribute(\"presentation\", {\n        withValue: \"gallery\"\n      });\n    }\n  }, {\n    key: \"moveSelectedRangeForward\",\n    value: function moveSelectedRangeForward() {\n      this.selectedRange[0] += 1, this.selectedRange[1] += 1;\n    }\n  }]);\n\n  return Dn;\n}();\n\nvar Nn = function Nn(t) {\n  var e = new Dn(t);\n  return e.perform(), e.getSnapshot();\n},\n    In = [Nn];\n\nvar On = /*#__PURE__*/function () {\n  function On(t, e, i) {\n    _classCallCheck(this, On);\n\n    this.insertFiles = this.insertFiles.bind(this), this.composition = t, this.selectionManager = e, this.element = i, this.undoManager = new Tn(this.composition), this.filters = In.slice(0);\n  }\n\n  _createClass(On, [{\n    key: \"loadDocument\",\n    value: function loadDocument(t) {\n      return this.loadSnapshot({\n        document: t,\n        selectedRange: [0, 0]\n      });\n    }\n  }, {\n    key: \"loadHTML\",\n    value: function loadHTML() {\n      var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : \"\";\n      var e = cn.parse(t, {\n        referenceElement: this.element\n      }).getDocument();\n      return this.loadDocument(e);\n    }\n  }, {\n    key: \"loadJSON\",\n    value: function loadJSON(t) {\n      var e = t.document,\n          i = t.selectedRange;\n      return e = on.fromJSON(e), this.loadSnapshot({\n        document: e,\n        selectedRange: i\n      });\n    }\n  }, {\n    key: \"loadSnapshot\",\n    value: function loadSnapshot(t) {\n      return this.undoManager = new Tn(this.composition), this.composition.loadSnapshot(t);\n    }\n  }, {\n    key: \"getDocument\",\n    value: function getDocument() {\n      return this.composition.document;\n    }\n  }, {\n    key: \"getSelectedDocument\",\n    value: function getSelectedDocument() {\n      return this.composition.getSelectedDocument();\n    }\n  }, {\n    key: \"getSnapshot\",\n    value: function getSnapshot() {\n      return this.composition.getSnapshot();\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return this.getSnapshot();\n    }\n  }, {\n    key: \"deleteInDirection\",\n    value: function deleteInDirection(t) {\n      return this.composition.deleteInDirection(t);\n    }\n  }, {\n    key: \"insertAttachment\",\n    value: function insertAttachment(t) {\n      return this.composition.insertAttachment(t);\n    }\n  }, {\n    key: \"insertAttachments\",\n    value: function insertAttachments(t) {\n      return this.composition.insertAttachments(t);\n    }\n  }, {\n    key: \"insertDocument\",\n    value: function insertDocument(t) {\n      return this.composition.insertDocument(t);\n    }\n  }, {\n    key: \"insertFile\",\n    value: function insertFile(t) {\n      return this.composition.insertFile(t);\n    }\n  }, {\n    key: \"insertFiles\",\n    value: function insertFiles(t) {\n      return this.composition.insertFiles(t);\n    }\n  }, {\n    key: \"insertHTML\",\n    value: function insertHTML(t) {\n      return this.composition.insertHTML(t);\n    }\n  }, {\n    key: \"insertString\",\n    value: function insertString(t) {\n      return this.composition.insertString(t);\n    }\n  }, {\n    key: \"insertText\",\n    value: function insertText(t) {\n      return this.composition.insertText(t);\n    }\n  }, {\n    key: \"insertLineBreak\",\n    value: function insertLineBreak() {\n      return this.composition.insertLineBreak();\n    }\n  }, {\n    key: \"getSelectedRange\",\n    value: function getSelectedRange() {\n      return this.composition.getSelectedRange();\n    }\n  }, {\n    key: \"getPosition\",\n    value: function getPosition() {\n      return this.composition.getPosition();\n    }\n  }, {\n    key: \"getClientRectAtPosition\",\n    value: function getClientRectAtPosition(t) {\n      var e = this.getDocument().locationRangeFromRange([t, t + 1]);\n      return this.selectionManager.getClientRectAtLocationRange(e);\n    }\n  }, {\n    key: \"expandSelectionInDirection\",\n    value: function expandSelectionInDirection(t) {\n      return this.composition.expandSelectionInDirection(t);\n    }\n  }, {\n    key: \"moveCursorInDirection\",\n    value: function moveCursorInDirection(t) {\n      return this.composition.moveCursorInDirection(t);\n    }\n  }, {\n    key: \"setSelectedRange\",\n    value: function setSelectedRange(t) {\n      return this.composition.setSelectedRange(t);\n    }\n  }, {\n    key: \"activateAttribute\",\n    value: function activateAttribute(t) {\n      var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\n      return this.composition.setCurrentAttribute(t, e);\n    }\n  }, {\n    key: \"attributeIsActive\",\n    value: function attributeIsActive(t) {\n      return this.composition.hasCurrentAttribute(t);\n    }\n  }, {\n    key: \"canActivateAttribute\",\n    value: function canActivateAttribute(t) {\n      return this.composition.canSetCurrentAttribute(t);\n    }\n  }, {\n    key: \"deactivateAttribute\",\n    value: function deactivateAttribute(t) {\n      return this.composition.removeCurrentAttribute(t);\n    }\n  }, {\n    key: \"setHTMLAtributeAtPosition\",\n    value: function setHTMLAtributeAtPosition(t, e, i) {\n      this.composition.setHTMLAtributeAtPosition(t, e, i);\n    }\n  }, {\n    key: \"canDecreaseNestingLevel\",\n    value: function canDecreaseNestingLevel() {\n      return this.composition.canDecreaseNestingLevel();\n    }\n  }, {\n    key: \"canIncreaseNestingLevel\",\n    value: function canIncreaseNestingLevel() {\n      return this.composition.canIncreaseNestingLevel();\n    }\n  }, {\n    key: \"decreaseNestingLevel\",\n    value: function decreaseNestingLevel() {\n      if (this.canDecreaseNestingLevel()) return this.composition.decreaseNestingLevel();\n    }\n  }, {\n    key: \"increaseNestingLevel\",\n    value: function increaseNestingLevel() {\n      if (this.canIncreaseNestingLevel()) return this.composition.increaseNestingLevel();\n    }\n  }, {\n    key: \"canRedo\",\n    value: function canRedo() {\n      return this.undoManager.canRedo();\n    }\n  }, {\n    key: \"canUndo\",\n    value: function canUndo() {\n      return this.undoManager.canUndo();\n    }\n  }, {\n    key: \"recordUndoEntry\",\n    value: function recordUndoEntry(t) {\n      var _ref23 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n          e = _ref23.context,\n          i = _ref23.consolidatable;\n\n      return this.undoManager.recordUndoEntry(t, {\n        context: e,\n        consolidatable: i\n      });\n    }\n  }, {\n    key: \"redo\",\n    value: function redo() {\n      if (this.canRedo()) return this.undoManager.redo();\n    }\n  }, {\n    key: \"undo\",\n    value: function undo() {\n      if (this.canUndo()) return this.undoManager.undo();\n    }\n  }]);\n\n  return On;\n}();\n\nvar Fn = /*#__PURE__*/function () {\n  function Fn(t) {\n    _classCallCheck(this, Fn);\n\n    this.element = t;\n  }\n\n  _createClass(Fn, [{\n    key: \"findLocationFromContainerAndOffset\",\n    value: function findLocationFromContainerAndOffset(t, e) {\n      var _ref24 = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {\n        strict: !0\n      },\n          i = _ref24.strict,\n          n = 0,\n          r = !1;\n\n      var o = {\n        index: 0,\n        offset: 0\n      },\n          s = this.findAttachmentElementParentForNode(t);\n      s && (t = s.parentNode, e = E(s));\n      var a = R(this.element, {\n        usingFilter: _n\n      });\n\n      for (; a.nextNode();) {\n        var _s5 = a.currentNode;\n\n        if (_s5 === t && B(t)) {\n          F(_s5) || (o.offset += e);\n          break;\n        }\n\n        if (_s5.parentNode === t) {\n          if (n++ === e) break;\n        } else if (!C(t, _s5) && n > 0) break;\n\n        N(_s5, {\n          strict: i\n        }) ? (r && o.index++, o.offset = 0, r = !0) : o.offset += Pn(_s5);\n      }\n\n      return o;\n    }\n  }, {\n    key: \"findContainerAndOffsetFromLocation\",\n    value: function findContainerAndOffsetFromLocation(t) {\n      var e, i;\n\n      if (0 === t.index && 0 === t.offset) {\n        for (e = this.element, i = 0; e.firstChild;) {\n          if (e = e.firstChild, D(e)) {\n            i = 1;\n            break;\n          }\n        }\n\n        return [e, i];\n      }\n\n      var _this$findNodeAndOffs = this.findNodeAndOffsetFromLocation(t),\n          _this$findNodeAndOffs2 = _slicedToArray(_this$findNodeAndOffs, 2),\n          n = _this$findNodeAndOffs2[0],\n          r = _this$findNodeAndOffs2[1];\n\n      if (n) {\n        if (B(n)) 0 === Pn(n) ? (e = n.parentNode.parentNode, i = E(n.parentNode), F(n, {\n          name: \"right\"\n        }) && i++) : (e = n, i = t.offset - r);else {\n          if (e = n.parentNode, !N(n.previousSibling) && !D(e)) for (; n === e.lastChild && (n = e, e = e.parentNode, !D(e));) {\n            ;\n          }\n          i = E(n), 0 !== t.offset && i++;\n        }\n        return [e, i];\n      }\n    }\n  }, {\n    key: \"findNodeAndOffsetFromLocation\",\n    value: function findNodeAndOffsetFromLocation(t) {\n      var e,\n          i,\n          n = 0;\n\n      var _iterator7 = _createForOfIteratorHelper(this.getSignificantNodesForIndex(t.index)),\n          _step7;\n\n      try {\n        for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n          var _r14 = _step7.value;\n\n          var _o8 = Pn(_r14);\n\n          if (t.offset <= n + _o8) if (B(_r14)) {\n            if (e = _r14, i = n, t.offset === i && F(e)) break;\n          } else e || (e = _r14, i = n);\n          if (n += _o8, n > t.offset) break;\n        }\n      } catch (err) {\n        _iterator7.e(err);\n      } finally {\n        _iterator7.f();\n      }\n\n      return [e, i];\n    }\n  }, {\n    key: \"findAttachmentElementParentForNode\",\n    value: function findAttachmentElementParentForNode(t) {\n      for (; t && t !== this.element;) {\n        if (P(t)) return t;\n        t = t.parentNode;\n      }\n    }\n  }, {\n    key: \"getSignificantNodesForIndex\",\n    value: function getSignificantNodesForIndex(t) {\n      var e = [],\n          i = R(this.element, {\n        usingFilter: Mn\n      });\n      var n = !1;\n\n      for (; i.nextNode();) {\n        var _o9 = i.currentNode;\n        var r;\n\n        if (I(_o9)) {\n          if (null != r ? r++ : r = 0, r === t) n = !0;else if (n) break;\n        } else n && e.push(_o9);\n      }\n\n      return e;\n    }\n  }]);\n\n  return Fn;\n}();\n\nvar Pn = function Pn(t) {\n  if (t.nodeType === Node.TEXT_NODE) {\n    if (F(t)) return 0;\n    return t.textContent.length;\n  }\n\n  return \"br\" === k(t) || P(t) ? 1 : 0;\n},\n    Mn = function Mn(t) {\n  return Bn(t) === NodeFilter.FILTER_ACCEPT ? _n(t) : NodeFilter.FILTER_REJECT;\n},\n    Bn = function Bn(t) {\n  return M(t) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;\n},\n    _n = function _n(t) {\n  return P(t.parentNode) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;\n};\n\nvar jn = /*#__PURE__*/function () {\n  function jn() {\n    _classCallCheck(this, jn);\n  }\n\n  _createClass(jn, [{\n    key: \"createDOMRangeFromPoint\",\n    value: function createDOMRangeFromPoint(t) {\n      var e,\n          i = t.x,\n          n = t.y;\n\n      if (document.caretPositionFromPoint) {\n        var _document$caretPositi = document.caretPositionFromPoint(i, n),\n            _t45 = _document$caretPositi.offsetNode,\n            _r15 = _document$caretPositi.offset;\n\n        return e = document.createRange(), e.setStart(_t45, _r15), e;\n      }\n\n      if (document.caretRangeFromPoint) return document.caretRangeFromPoint(i, n);\n\n      if (document.body.createTextRange) {\n        var _t46 = Mt();\n\n        try {\n          var _t47 = document.body.createTextRange();\n\n          _t47.moveToPoint(i, n), _t47.select();\n        } catch (t) {}\n\n        return e = Mt(), Bt(_t46), e;\n      }\n    }\n  }, {\n    key: \"getClientRectsForDOMRange\",\n    value: function getClientRectsForDOMRange(t) {\n      var e = Array.from(t.getClientRects());\n      return [e[0], e[e.length - 1]];\n    }\n  }]);\n\n  return jn;\n}();\n\nvar Wn = /*#__PURE__*/function (_q13) {\n  _inherits(Wn, _q13);\n\n  var _super30 = _createSuper(Wn);\n\n  function Wn(t) {\n    var _this49;\n\n    _classCallCheck(this, Wn);\n\n    _this49 = _super30.apply(this, arguments), _this49.didMouseDown = _this49.didMouseDown.bind(_assertThisInitialized(_this49)), _this49.selectionDidChange = _this49.selectionDidChange.bind(_assertThisInitialized(_this49)), _this49.element = t, _this49.locationMapper = new Fn(_this49.element), _this49.pointMapper = new jn(), _this49.lockCount = 0, b(\"mousedown\", {\n      onElement: _this49.element,\n      withCallback: _this49.didMouseDown\n    });\n    return _this49;\n  }\n\n  _createClass(Wn, [{\n    key: \"getLocationRange\",\n    value: function getLocationRange() {\n      var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n      return !1 === t.strict ? this.createLocationRangeFromDOMRange(Mt()) : t.ignoreLock ? this.currentLocationRange : this.lockedLocationRange ? this.lockedLocationRange : this.currentLocationRange;\n    }\n  }, {\n    key: \"setLocationRange\",\n    value: function setLocationRange(t) {\n      if (this.lockedLocationRange) return;\n      t = wt(t);\n      var e = this.createDOMRangeFromLocationRange(t);\n      e && (Bt(e), this.updateCurrentLocationRange(t));\n    }\n  }, {\n    key: \"setLocationRangeFromPointRange\",\n    value: function setLocationRangeFromPointRange(t) {\n      t = wt(t);\n      var e = this.getLocationAtPoint(t[0]),\n          i = this.getLocationAtPoint(t[1]);\n      this.setLocationRange([e, i]);\n    }\n  }, {\n    key: \"getClientRectAtLocationRange\",\n    value: function getClientRectAtLocationRange(t) {\n      var e = this.createDOMRangeFromLocationRange(t);\n      if (e) return this.getClientRectsForDOMRange(e)[1];\n    }\n  }, {\n    key: \"locationIsCursorTarget\",\n    value: function locationIsCursorTarget(t) {\n      var e = Array.from(this.findNodeAndOffsetFromLocation(t))[0];\n      return F(e);\n    }\n  }, {\n    key: \"lock\",\n    value: function lock() {\n      0 == this.lockCount++ && (this.updateCurrentLocationRange(), this.lockedLocationRange = this.getLocationRange());\n    }\n  }, {\n    key: \"unlock\",\n    value: function unlock() {\n      if (0 == --this.lockCount) {\n        var _t48 = this.lockedLocationRange;\n        if (this.lockedLocationRange = null, null != _t48) return this.setLocationRange(_t48);\n      }\n    }\n  }, {\n    key: \"clearSelection\",\n    value: function clearSelection() {\n      var t;\n      return null === (t = Pt()) || void 0 === t ? void 0 : t.removeAllRanges();\n    }\n  }, {\n    key: \"selectionIsCollapsed\",\n    value: function selectionIsCollapsed() {\n      var t;\n      return !0 === (null === (t = Mt()) || void 0 === t ? void 0 : t.collapsed);\n    }\n  }, {\n    key: \"selectionIsExpanded\",\n    value: function selectionIsExpanded() {\n      return !this.selectionIsCollapsed();\n    }\n  }, {\n    key: \"createLocationRangeFromDOMRange\",\n    value: function createLocationRangeFromDOMRange(t, e) {\n      if (null == t || !this.domRangeWithinElement(t)) return;\n      var i = this.findLocationFromContainerAndOffset(t.startContainer, t.startOffset, e);\n      if (!i) return;\n      var n = t.collapsed ? void 0 : this.findLocationFromContainerAndOffset(t.endContainer, t.endOffset, e);\n      return wt([i, n]);\n    }\n  }, {\n    key: \"didMouseDown\",\n    value: function didMouseDown() {\n      return this.pauseTemporarily();\n    }\n  }, {\n    key: \"pauseTemporarily\",\n    value: function pauseTemporarily() {\n      var _this50 = this;\n\n      var t;\n      this.paused = !0;\n\n      var e = function e() {\n        if (_this50.paused = !1, clearTimeout(i), Array.from(t).forEach(function (t) {\n          t.destroy();\n        }), C(document, _this50.element)) return _this50.selectionDidChange();\n      },\n          i = setTimeout(e, 200);\n\n      t = [\"mousemove\", \"keydown\"].map(function (t) {\n        return b(t, {\n          onElement: document,\n          withCallback: e\n        });\n      });\n    }\n  }, {\n    key: \"selectionDidChange\",\n    value: function selectionDidChange() {\n      if (!this.paused && !x(this.element)) return this.updateCurrentLocationRange();\n    }\n  }, {\n    key: \"updateCurrentLocationRange\",\n    value: function updateCurrentLocationRange(t) {\n      var e, i;\n      if ((null != t ? t : t = this.createLocationRangeFromDOMRange(Mt())) && !Dt(t, this.currentLocationRange)) return this.currentLocationRange = t, null === (e = this.delegate) || void 0 === e || null === (i = e.locationRangeDidChange) || void 0 === i ? void 0 : i.call(e, this.currentLocationRange.slice(0));\n    }\n  }, {\n    key: \"createDOMRangeFromLocationRange\",\n    value: function createDOMRangeFromLocationRange(t) {\n      var e = this.findContainerAndOffsetFromLocation(t[0]),\n          i = Lt(t) ? e : this.findContainerAndOffsetFromLocation(t[1]) || e;\n\n      if (null != e && null != i) {\n        var _t49 = document.createRange();\n\n        return _t49.setStart.apply(_t49, _toConsumableArray(Array.from(e || []))), _t49.setEnd.apply(_t49, _toConsumableArray(Array.from(i || []))), _t49;\n      }\n    }\n  }, {\n    key: \"getLocationAtPoint\",\n    value: function getLocationAtPoint(t) {\n      var e = this.createDOMRangeFromPoint(t);\n      var i;\n      if (e) return null === (i = this.createLocationRangeFromDOMRange(e)) || void 0 === i ? void 0 : i[0];\n    }\n  }, {\n    key: \"domRangeWithinElement\",\n    value: function domRangeWithinElement(t) {\n      return t.collapsed ? C(this.element, t.startContainer) : C(this.element, t.startContainer) && C(this.element, t.endContainer);\n    }\n  }]);\n\n  return Wn;\n}(q);\n\nWn.proxyMethod(\"locationMapper.findLocationFromContainerAndOffset\"), Wn.proxyMethod(\"locationMapper.findContainerAndOffsetFromLocation\"), Wn.proxyMethod(\"locationMapper.findNodeAndOffsetFromLocation\"), Wn.proxyMethod(\"pointMapper.createDOMRangeFromPoint\"), Wn.proxyMethod(\"pointMapper.getClientRectsForDOMRange\");\nvar Un = Object.freeze({\n  __proto__: null,\n  Attachment: Wi,\n  AttachmentManager: Sn,\n  AttachmentPiece: Ui,\n  Block: Gi,\n  Composition: kn,\n  Document: on,\n  Editor: On,\n  HTMLParser: cn,\n  HTMLSanitizer: ui,\n  LineBreakInsertion: Rn,\n  LocationMapper: Fn,\n  ManagedAttachment: En,\n  Piece: _i,\n  PointMapper: jn,\n  SelectionManager: Wn,\n  SplittableList: zi,\n  StringPiece: Vi,\n  Text: Ki,\n  UndoManager: Tn\n}),\n    Vn = Object.freeze({\n  __proto__: null,\n  ObjectView: ie,\n  AttachmentView: gi,\n  BlockView: xi,\n  DocumentView: Ci,\n  PieceView: bi,\n  PreviewableAttachmentView: fi,\n  TextView: vi\n});\n\nvar zn = z.lang,\n    qn = z.css,\n    Hn = z.keyNames,\n    Jn = function Jn(t) {\n  return function () {\n    var e = t.apply(this, arguments);\n    e.do(), this.undos || (this.undos = []), this.undos.push(e.undo);\n  };\n};\n\nvar Kn = /*#__PURE__*/function (_q14) {\n  _inherits(Kn, _q14);\n\n  var _super31 = _createSuper(Kn);\n\n  function Kn(t, e, i) {\n    var _this51;\n\n    _classCallCheck(this, Kn);\n\n    var n = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {};\n    _this51 = _super31.apply(this, arguments), wi(_assertThisInitialized(_this51), \"makeElementMutable\", Jn(function () {\n      return {\n        do: function _do() {\n          _this51.element.dataset.trixMutable = !0;\n        },\n        undo: function undo() {\n          return delete _this51.element.dataset.trixMutable;\n        }\n      };\n    })), wi(_assertThisInitialized(_this51), \"addToolbar\", Jn(function () {\n      var t = T({\n        tagName: \"div\",\n        className: qn.attachmentToolbar,\n        data: {\n          trixMutable: !0\n        },\n        childNodes: T({\n          tagName: \"div\",\n          className: \"trix-button-row\",\n          childNodes: T({\n            tagName: \"span\",\n            className: \"trix-button-group trix-button-group--actions\",\n            childNodes: T({\n              tagName: \"button\",\n              className: \"trix-button trix-button--remove\",\n              textContent: zn.remove,\n              attributes: {\n                title: zn.remove\n              },\n              data: {\n                trixAction: \"remove\"\n              }\n            })\n          })\n        })\n      });\n      return _this51.attachment.isPreviewable() && t.appendChild(T({\n        tagName: \"div\",\n        className: qn.attachmentMetadataContainer,\n        childNodes: T({\n          tagName: \"span\",\n          className: qn.attachmentMetadata,\n          childNodes: [T({\n            tagName: \"span\",\n            className: qn.attachmentName,\n            textContent: _this51.attachment.getFilename(),\n            attributes: {\n              title: _this51.attachment.getFilename()\n            }\n          }), T({\n            tagName: \"span\",\n            className: qn.attachmentSize,\n            textContent: _this51.attachment.getFormattedFilesize()\n          })]\n        })\n      })), b(\"click\", {\n        onElement: t,\n        withCallback: _this51.didClickToolbar\n      }), b(\"click\", {\n        onElement: t,\n        matchingSelector: \"[data-trix-action]\",\n        withCallback: _this51.didClickActionButton\n      }), v(\"trix-attachment-before-toolbar\", {\n        onElement: _this51.element,\n        attributes: {\n          toolbar: t,\n          attachment: _this51.attachment\n        }\n      }), {\n        do: function _do() {\n          return _this51.element.appendChild(t);\n        },\n        undo: function undo() {\n          return S(t);\n        }\n      };\n    })), wi(_assertThisInitialized(_this51), \"installCaptionEditor\", Jn(function () {\n      var t = T({\n        tagName: \"textarea\",\n        className: qn.attachmentCaptionEditor,\n        attributes: {\n          placeholder: zn.captionPlaceholder\n        },\n        data: {\n          trixMutable: !0\n        }\n      });\n      t.value = _this51.attachmentPiece.getCaption();\n      var e = t.cloneNode();\n      e.classList.add(\"trix-autoresize-clone\"), e.tabIndex = -1;\n\n      var i = function i() {\n        e.value = t.value, t.style.height = e.scrollHeight + \"px\";\n      };\n\n      b(\"input\", {\n        onElement: t,\n        withCallback: i\n      }), b(\"input\", {\n        onElement: t,\n        withCallback: _this51.didInputCaption\n      }), b(\"keydown\", {\n        onElement: t,\n        withCallback: _this51.didKeyDownCaption\n      }), b(\"change\", {\n        onElement: t,\n        withCallback: _this51.didChangeCaption\n      }), b(\"blur\", {\n        onElement: t,\n        withCallback: _this51.didBlurCaption\n      });\n\n      var n = _this51.element.querySelector(\"figcaption\"),\n          r = n.cloneNode();\n\n      return {\n        do: function _do() {\n          if (n.style.display = \"none\", r.appendChild(t), r.appendChild(e), r.classList.add(\"\".concat(qn.attachmentCaption, \"--editing\")), n.parentElement.insertBefore(r, n), i(), _this51.options.editCaption) return Rt(function () {\n            return t.focus();\n          });\n        },\n        undo: function undo() {\n          S(r), n.style.display = null;\n        }\n      };\n    })), _this51.didClickToolbar = _this51.didClickToolbar.bind(_assertThisInitialized(_this51)), _this51.didClickActionButton = _this51.didClickActionButton.bind(_assertThisInitialized(_this51)), _this51.didKeyDownCaption = _this51.didKeyDownCaption.bind(_assertThisInitialized(_this51)), _this51.didInputCaption = _this51.didInputCaption.bind(_assertThisInitialized(_this51)), _this51.didChangeCaption = _this51.didChangeCaption.bind(_assertThisInitialized(_this51)), _this51.didBlurCaption = _this51.didBlurCaption.bind(_assertThisInitialized(_this51)), _this51.attachmentPiece = t, _this51.element = e, _this51.container = i, _this51.options = n, _this51.attachment = _this51.attachmentPiece.attachment, \"a\" === k(_this51.element) && (_this51.element = _this51.element.firstChild), _this51.install();\n    return _this51;\n  }\n\n  _createClass(Kn, [{\n    key: \"install\",\n    value: function install() {\n      this.makeElementMutable(), this.addToolbar(), this.attachment.isPreviewable() && this.installCaptionEditor();\n    }\n  }, {\n    key: \"uninstall\",\n    value: function uninstall() {\n      var t;\n      var e = this.undos.pop();\n\n      for (this.savePendingCaption(); e;) {\n        e(), e = this.undos.pop();\n      }\n\n      null === (t = this.delegate) || void 0 === t || t.didUninstallAttachmentEditor(this);\n    }\n  }, {\n    key: \"savePendingCaption\",\n    value: function savePendingCaption() {\n      if (null != this.pendingCaption) {\n        var _r16 = this.pendingCaption;\n        var t, e, i, n;\n        if (this.pendingCaption = null, _r16) null === (t = this.delegate) || void 0 === t || null === (e = t.attachmentEditorDidRequestUpdatingAttributesForAttachment) || void 0 === e || e.call(t, {\n          caption: _r16\n        }, this.attachment);else null === (i = this.delegate) || void 0 === i || null === (n = i.attachmentEditorDidRequestRemovingAttributeForAttachment) || void 0 === n || n.call(i, \"caption\", this.attachment);\n      }\n    }\n  }, {\n    key: \"didClickToolbar\",\n    value: function didClickToolbar(t) {\n      return t.preventDefault(), t.stopPropagation();\n    }\n  }, {\n    key: \"didClickActionButton\",\n    value: function didClickActionButton(t) {\n      var e;\n      if (\"remove\" === t.target.getAttribute(\"data-trix-action\")) return null === (e = this.delegate) || void 0 === e ? void 0 : e.attachmentEditorDidRequestRemovalOfAttachment(this.attachment);\n    }\n  }, {\n    key: \"didKeyDownCaption\",\n    value: function didKeyDownCaption(t) {\n      var e, i;\n      if (\"return\" === Hn[t.keyCode]) return t.preventDefault(), this.savePendingCaption(), null === (e = this.delegate) || void 0 === e || null === (i = e.attachmentEditorDidRequestDeselectingAttachment) || void 0 === i ? void 0 : i.call(e, this.attachment);\n    }\n  }, {\n    key: \"didInputCaption\",\n    value: function didInputCaption(t) {\n      this.pendingCaption = t.target.value.replace(/\\s/g, \" \").trim();\n    }\n  }, {\n    key: \"didChangeCaption\",\n    value: function didChangeCaption(t) {\n      return this.savePendingCaption();\n    }\n  }, {\n    key: \"didBlurCaption\",\n    value: function didBlurCaption(t) {\n      return this.savePendingCaption();\n    }\n  }]);\n\n  return Kn;\n}(q);\n\nvar Gn = /*#__PURE__*/function (_q15) {\n  _inherits(Gn, _q15);\n\n  var _super32 = _createSuper(Gn);\n\n  function Gn(t, i) {\n    var _this52;\n\n    _classCallCheck(this, Gn);\n\n    _this52 = _super32.apply(this, arguments), _this52.didFocus = _this52.didFocus.bind(_assertThisInitialized(_this52)), _this52.didBlur = _this52.didBlur.bind(_assertThisInitialized(_this52)), _this52.didClickAttachment = _this52.didClickAttachment.bind(_assertThisInitialized(_this52)), _this52.element = t, _this52.composition = i, _this52.documentView = new Ci(_this52.composition.document, {\n      element: _this52.element\n    }), b(\"focus\", {\n      onElement: _this52.element,\n      withCallback: _this52.didFocus\n    }), b(\"blur\", {\n      onElement: _this52.element,\n      withCallback: _this52.didBlur\n    }), b(\"click\", {\n      onElement: _this52.element,\n      matchingSelector: \"a[contenteditable=false]\",\n      preventDefault: !0\n    }), b(\"mousedown\", {\n      onElement: _this52.element,\n      matchingSelector: e,\n      withCallback: _this52.didClickAttachment\n    }), b(\"click\", {\n      onElement: _this52.element,\n      matchingSelector: \"a\".concat(e),\n      preventDefault: !0\n    });\n    return _this52;\n  }\n\n  _createClass(Gn, [{\n    key: \"didFocus\",\n    value: function didFocus(t) {\n      var _this53 = this;\n\n      var e;\n\n      var i = function i() {\n        var t, e;\n        if (!_this53.focused) return _this53.focused = !0, null === (t = _this53.delegate) || void 0 === t || null === (e = t.compositionControllerDidFocus) || void 0 === e ? void 0 : e.call(t);\n      };\n\n      return (null === (e = this.blurPromise) || void 0 === e ? void 0 : e.then(i)) || i();\n    }\n  }, {\n    key: \"didBlur\",\n    value: function didBlur(t) {\n      var _this54 = this;\n\n      this.blurPromise = new Promise(function (t) {\n        return Rt(function () {\n          var e, i;\n          x(_this54.element) || (_this54.focused = null, null === (e = _this54.delegate) || void 0 === e || null === (i = e.compositionControllerDidBlur) || void 0 === i || i.call(e));\n          return _this54.blurPromise = null, t();\n        });\n      });\n    }\n  }, {\n    key: \"didClickAttachment\",\n    value: function didClickAttachment(t, e) {\n      var i, n;\n      var r = this.findAttachmentForElement(e),\n          o = !!y(t.target, {\n        matchingSelector: \"figcaption\"\n      });\n      return null === (i = this.delegate) || void 0 === i || null === (n = i.compositionControllerDidSelectAttachment) || void 0 === n ? void 0 : n.call(i, r, {\n        editCaption: o\n      });\n    }\n  }, {\n    key: \"getSerializableElement\",\n    value: function getSerializableElement() {\n      return this.isEditingAttachment() ? this.documentView.shadowElement : this.element;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var t, e, i, n, r, o;\n      (this.revision !== this.composition.revision && (this.documentView.setDocument(this.composition.document), this.documentView.render(), this.revision = this.composition.revision), this.canSyncDocumentView() && !this.documentView.isSynced()) && (null === (i = this.delegate) || void 0 === i || null === (n = i.compositionControllerWillSyncDocumentView) || void 0 === n || n.call(i), this.documentView.sync(), null === (r = this.delegate) || void 0 === r || null === (o = r.compositionControllerDidSyncDocumentView) || void 0 === o || o.call(r));\n      return null === (t = this.delegate) || void 0 === t || null === (e = t.compositionControllerDidRender) || void 0 === e ? void 0 : e.call(t);\n    }\n  }, {\n    key: \"rerenderViewForObject\",\n    value: function rerenderViewForObject(t) {\n      return this.invalidateViewForObject(t), this.render();\n    }\n  }, {\n    key: \"invalidateViewForObject\",\n    value: function invalidateViewForObject(t) {\n      return this.documentView.invalidateViewForObject(t);\n    }\n  }, {\n    key: \"isViewCachingEnabled\",\n    value: function isViewCachingEnabled() {\n      return this.documentView.isViewCachingEnabled();\n    }\n  }, {\n    key: \"enableViewCaching\",\n    value: function enableViewCaching() {\n      return this.documentView.enableViewCaching();\n    }\n  }, {\n    key: \"disableViewCaching\",\n    value: function disableViewCaching() {\n      return this.documentView.disableViewCaching();\n    }\n  }, {\n    key: \"refreshViewCache\",\n    value: function refreshViewCache() {\n      return this.documentView.garbageCollectCachedViews();\n    }\n  }, {\n    key: \"isEditingAttachment\",\n    value: function isEditingAttachment() {\n      return !!this.attachmentEditor;\n    }\n  }, {\n    key: \"installAttachmentEditorForAttachment\",\n    value: function installAttachmentEditorForAttachment(t, e) {\n      var i;\n      if ((null === (i = this.attachmentEditor) || void 0 === i ? void 0 : i.attachment) === t) return;\n      var n = this.documentView.findElementForObject(t);\n      if (!n) return;\n      this.uninstallAttachmentEditor();\n      var r = this.composition.document.getAttachmentPieceForAttachment(t);\n      this.attachmentEditor = new Kn(r, n, this.element, e), this.attachmentEditor.delegate = this;\n    }\n  }, {\n    key: \"uninstallAttachmentEditor\",\n    value: function uninstallAttachmentEditor() {\n      var t;\n      return null === (t = this.attachmentEditor) || void 0 === t ? void 0 : t.uninstall();\n    }\n  }, {\n    key: \"didUninstallAttachmentEditor\",\n    value: function didUninstallAttachmentEditor() {\n      return this.attachmentEditor = null, this.render();\n    }\n  }, {\n    key: \"attachmentEditorDidRequestUpdatingAttributesForAttachment\",\n    value: function attachmentEditorDidRequestUpdatingAttributesForAttachment(t, e) {\n      var i, n;\n      return null === (i = this.delegate) || void 0 === i || null === (n = i.compositionControllerWillUpdateAttachment) || void 0 === n || n.call(i, e), this.composition.updateAttributesForAttachment(t, e);\n    }\n  }, {\n    key: \"attachmentEditorDidRequestRemovingAttributeForAttachment\",\n    value: function attachmentEditorDidRequestRemovingAttributeForAttachment(t, e) {\n      var i, n;\n      return null === (i = this.delegate) || void 0 === i || null === (n = i.compositionControllerWillUpdateAttachment) || void 0 === n || n.call(i, e), this.composition.removeAttributeForAttachment(t, e);\n    }\n  }, {\n    key: \"attachmentEditorDidRequestRemovalOfAttachment\",\n    value: function attachmentEditorDidRequestRemovalOfAttachment(t) {\n      var e, i;\n      return null === (e = this.delegate) || void 0 === e || null === (i = e.compositionControllerDidRequestRemovalOfAttachment) || void 0 === i ? void 0 : i.call(e, t);\n    }\n  }, {\n    key: \"attachmentEditorDidRequestDeselectingAttachment\",\n    value: function attachmentEditorDidRequestDeselectingAttachment(t) {\n      var e, i;\n      return null === (e = this.delegate) || void 0 === e || null === (i = e.compositionControllerDidRequestDeselectingAttachment) || void 0 === i ? void 0 : i.call(e, t);\n    }\n  }, {\n    key: \"canSyncDocumentView\",\n    value: function canSyncDocumentView() {\n      return !this.isEditingAttachment();\n    }\n  }, {\n    key: \"findAttachmentForElement\",\n    value: function findAttachmentForElement(t) {\n      return this.composition.document.getAttachmentById(parseInt(t.dataset.trixId, 10));\n    }\n  }]);\n\n  return Gn;\n}(q);\n\nvar Yn = /*#__PURE__*/function (_q16) {\n  _inherits(Yn, _q16);\n\n  var _super33 = _createSuper(Yn);\n\n  function Yn() {\n    _classCallCheck(this, Yn);\n\n    return _super33.apply(this, arguments);\n  }\n\n  return _createClass(Yn);\n}(q);\n\nvar $n = \"data-trix-mutable\",\n    Xn = \"[\".concat($n, \"]\"),\n    Zn = {\n  attributes: !0,\n  childList: !0,\n  characterData: !0,\n  characterDataOldValue: !0,\n  subtree: !0\n};\n\nvar Qn = /*#__PURE__*/function (_q17) {\n  _inherits(Qn, _q17);\n\n  var _super34 = _createSuper(Qn);\n\n  function Qn(t) {\n    var _this55;\n\n    _classCallCheck(this, Qn);\n\n    _this55 = _super34.call(this, t), _this55.didMutate = _this55.didMutate.bind(_assertThisInitialized(_this55)), _this55.element = t, _this55.observer = new window.MutationObserver(_this55.didMutate), _this55.start();\n    return _this55;\n  }\n\n  _createClass(Qn, [{\n    key: \"start\",\n    value: function start() {\n      return this.reset(), this.observer.observe(this.element, Zn);\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      return this.observer.disconnect();\n    }\n  }, {\n    key: \"didMutate\",\n    value: function didMutate(t) {\n      var _this$mutations;\n\n      var e, i;\n      if ((_this$mutations = this.mutations).push.apply(_this$mutations, _toConsumableArray(Array.from(this.findSignificantMutations(t) || []))), this.mutations.length) return null === (e = this.delegate) || void 0 === e || null === (i = e.elementDidMutate) || void 0 === i || i.call(e, this.getMutationSummary()), this.reset();\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      this.mutations = [];\n    }\n  }, {\n    key: \"findSignificantMutations\",\n    value: function findSignificantMutations(t) {\n      var _this56 = this;\n\n      return t.filter(function (t) {\n        return _this56.mutationIsSignificant(t);\n      });\n    }\n  }, {\n    key: \"mutationIsSignificant\",\n    value: function mutationIsSignificant(t) {\n      if (this.nodeIsMutable(t.target)) return !1;\n\n      for (var _i40 = 0, _Array$from20 = Array.from(this.nodesModifiedByMutation(t)); _i40 < _Array$from20.length; _i40++) {\n        var _e47 = _Array$from20[_i40];\n        if (this.nodeIsSignificant(_e47)) return !0;\n      }\n\n      return !1;\n    }\n  }, {\n    key: \"nodeIsSignificant\",\n    value: function nodeIsSignificant(t) {\n      return t !== this.element && !this.nodeIsMutable(t) && !M(t);\n    }\n  }, {\n    key: \"nodeIsMutable\",\n    value: function nodeIsMutable(t) {\n      return y(t, {\n        matchingSelector: Xn\n      });\n    }\n  }, {\n    key: \"nodesModifiedByMutation\",\n    value: function nodesModifiedByMutation(t) {\n      var e = [];\n\n      switch (t.type) {\n        case \"attributes\":\n          t.attributeName !== $n && e.push(t.target);\n          break;\n\n        case \"characterData\":\n          e.push(t.target.parentNode), e.push(t.target);\n          break;\n\n        case \"childList\":\n          e.push.apply(e, _toConsumableArray(Array.from(t.addedNodes || []))), e.push.apply(e, _toConsumableArray(Array.from(t.removedNodes || [])));\n      }\n\n      return e;\n    }\n  }, {\n    key: \"getMutationSummary\",\n    value: function getMutationSummary() {\n      return this.getTextMutationSummary();\n    }\n  }, {\n    key: \"getTextMutationSummary\",\n    value: function getTextMutationSummary() {\n      var _this$getTextChangesF = this.getTextChangesFromCharacterData(),\n          t = _this$getTextChangesF.additions,\n          e = _this$getTextChangesF.deletions,\n          i = this.getTextChangesFromChildList();\n\n      Array.from(i.additions).forEach(function (e) {\n        Array.from(t).includes(e) || t.push(e);\n      }), e.push.apply(e, _toConsumableArray(Array.from(i.deletions || [])));\n      var n = {},\n          r = t.join(\"\");\n      r && (n.textAdded = r);\n      var o = e.join(\"\");\n      return o && (n.textDeleted = o), n;\n    }\n  }, {\n    key: \"getMutationsByType\",\n    value: function getMutationsByType(t) {\n      return Array.from(this.mutations).filter(function (e) {\n        return e.type === t;\n      });\n    }\n  }, {\n    key: \"getTextChangesFromChildList\",\n    value: function getTextChangesFromChildList() {\n      var t, e;\n      var i = [],\n          n = [];\n      Array.from(this.getMutationsByType(\"childList\")).forEach(function (t) {\n        i.push.apply(i, _toConsumableArray(Array.from(t.addedNodes || []))), n.push.apply(n, _toConsumableArray(Array.from(t.removedNodes || [])));\n      });\n      0 === i.length && 1 === n.length && I(n[0]) ? (t = [], e = [\"\\n\"]) : (t = tr(i), e = tr(n));\n      var r = t.filter(function (t, i) {\n        return t !== e[i];\n      }).map(Wt),\n          o = e.filter(function (e, i) {\n        return e !== t[i];\n      }).map(Wt);\n      return {\n        additions: r,\n        deletions: o\n      };\n    }\n  }, {\n    key: \"getTextChangesFromCharacterData\",\n    value: function getTextChangesFromCharacterData() {\n      var t, e;\n      var i = this.getMutationsByType(\"characterData\");\n\n      if (i.length) {\n        var _n28 = i[0],\n            _r17 = i[i.length - 1],\n            _o10 = function (t, e, _zt, _zt2, _zt3, _zt4) {\n          var i, n;\n          return t = X.box(t), (e = X.box(e)).length < t.length ? (_zt = zt(t, e), _zt2 = _slicedToArray(_zt, 2), n = _zt2[0], i = _zt2[1], _zt) : (_zt3 = zt(e, t), _zt4 = _slicedToArray(_zt3, 2), i = _zt4[0], n = _zt4[1], _zt3), {\n            added: i,\n            removed: n\n          };\n        }(Wt(_n28.oldValue), Wt(_r17.target.data));\n\n        t = _o10.added, e = _o10.removed;\n      }\n\n      return {\n        additions: t ? [t] : [],\n        deletions: e ? [e] : []\n      };\n    }\n  }]);\n\n  return Qn;\n}(q);\n\nvar tr = function tr() {\n  var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\n  var e = [];\n\n  for (var _i41 = 0, _Array$from21 = Array.from(t); _i41 < _Array$from21.length; _i41++) {\n    var _i42 = _Array$from21[_i41];\n\n    switch (_i42.nodeType) {\n      case Node.TEXT_NODE:\n        e.push(_i42.data);\n        break;\n\n      case Node.ELEMENT_NODE:\n        \"br\" === k(_i42) ? e.push(\"\\n\") : e.push.apply(e, _toConsumableArray(Array.from(tr(_i42.childNodes) || [])));\n    }\n  }\n\n  return e;\n};\n\nvar er = /*#__PURE__*/function (_ee2) {\n  _inherits(er, _ee2);\n\n  var _super35 = _createSuper(er);\n\n  function er(t) {\n    var _this57;\n\n    _classCallCheck(this, er);\n\n    _this57 = _super35.apply(this, arguments), _this57.file = t;\n    return _this57;\n  }\n\n  _createClass(er, [{\n    key: \"perform\",\n    value: function perform(t) {\n      var _this58 = this;\n\n      var e = new FileReader();\n      return e.onerror = function () {\n        return t(!1);\n      }, e.onload = function () {\n        e.onerror = null;\n\n        try {\n          e.abort();\n        } catch (t) {}\n\n        return t(!0, _this58.file);\n      }, e.readAsArrayBuffer(this.file);\n    }\n  }]);\n\n  return er;\n}(ee);\n\nvar ir = /*#__PURE__*/function () {\n  function ir(t) {\n    _classCallCheck(this, ir);\n\n    this.element = t;\n  }\n\n  _createClass(ir, [{\n    key: \"shouldIgnore\",\n    value: function shouldIgnore(t) {\n      return !!a.samsungAndroid && (this.previousEvent = this.event, this.event = t, this.checkSamsungKeyboardBuggyModeStart(), this.checkSamsungKeyboardBuggyModeEnd(), this.buggyMode);\n    }\n  }, {\n    key: \"checkSamsungKeyboardBuggyModeStart\",\n    value: function checkSamsungKeyboardBuggyModeStart() {\n      this.insertingLongTextAfterUnidentifiedChar() && nr(this.element.innerText, this.event.data) && (this.buggyMode = !0, this.event.preventDefault());\n    }\n  }, {\n    key: \"checkSamsungKeyboardBuggyModeEnd\",\n    value: function checkSamsungKeyboardBuggyModeEnd() {\n      this.buggyMode && \"insertText\" !== this.event.inputType && (this.buggyMode = !1);\n    }\n  }, {\n    key: \"insertingLongTextAfterUnidentifiedChar\",\n    value: function insertingLongTextAfterUnidentifiedChar() {\n      var t;\n      return this.isBeforeInputInsertText() && this.previousEventWasUnidentifiedKeydown() && (null === (t = this.event.data) || void 0 === t ? void 0 : t.length) > 50;\n    }\n  }, {\n    key: \"isBeforeInputInsertText\",\n    value: function isBeforeInputInsertText() {\n      return \"beforeinput\" === this.event.type && \"insertText\" === this.event.inputType;\n    }\n  }, {\n    key: \"previousEventWasUnidentifiedKeydown\",\n    value: function previousEventWasUnidentifiedKeydown() {\n      var t, e;\n      return \"keydown\" === (null === (t = this.previousEvent) || void 0 === t ? void 0 : t.type) && \"Unidentified\" === (null === (e = this.previousEvent) || void 0 === e ? void 0 : e.key);\n    }\n  }]);\n\n  return ir;\n}();\n\nvar nr = function nr(t, e) {\n  return or(t) === or(e);\n},\n    rr = new RegExp(\"(\".concat(\"\", \"|\").concat(d, \"|\").concat(g, \"|\\\\s)+\"), \"g\"),\n    or = function or(t) {\n  return t.replace(rr, \" \").trim();\n};\n\nvar sr = /*#__PURE__*/function (_q18) {\n  _inherits(sr, _q18);\n\n  var _super36 = _createSuper(sr);\n\n  function sr(t) {\n    var _this59;\n\n    _classCallCheck(this, sr);\n\n    _this59 = _super36.apply(this, arguments), _this59.element = t, _this59.mutationObserver = new Qn(_this59.element), _this59.mutationObserver.delegate = _assertThisInitialized(_this59), _this59.flakyKeyboardDetector = new ir(_this59.element);\n\n    for (var _t50 in _this59.constructor.events) {\n      b(_t50, {\n        onElement: _this59.element,\n        withCallback: _this59.handlerFor(_t50)\n      });\n    }\n\n    return _this59;\n  }\n\n  _createClass(sr, [{\n    key: \"elementDidMutate\",\n    value: function elementDidMutate(t) {}\n  }, {\n    key: \"editorWillSyncDocumentView\",\n    value: function editorWillSyncDocumentView() {\n      return this.mutationObserver.stop();\n    }\n  }, {\n    key: \"editorDidSyncDocumentView\",\n    value: function editorDidSyncDocumentView() {\n      return this.mutationObserver.start();\n    }\n  }, {\n    key: \"requestRender\",\n    value: function requestRender() {\n      var t, e;\n      return null === (t = this.delegate) || void 0 === t || null === (e = t.inputControllerDidRequestRender) || void 0 === e ? void 0 : e.call(t);\n    }\n  }, {\n    key: \"requestReparse\",\n    value: function requestReparse() {\n      var t, e;\n      return null === (t = this.delegate) || void 0 === t || null === (e = t.inputControllerDidRequestReparse) || void 0 === e || e.call(t), this.requestRender();\n    }\n  }, {\n    key: \"attachFiles\",\n    value: function attachFiles(t) {\n      var _this60 = this;\n\n      var e = Array.from(t).map(function (t) {\n        return new er(t);\n      });\n      return Promise.all(e).then(function (t) {\n        _this60.handleInput(function () {\n          var e, i;\n          return null === (e = this.delegate) || void 0 === e || e.inputControllerWillAttachFiles(), null === (i = this.responder) || void 0 === i || i.insertFiles(t), this.requestRender();\n        });\n      });\n    }\n  }, {\n    key: \"handlerFor\",\n    value: function handlerFor(t) {\n      var _this61 = this;\n\n      return function (e) {\n        e.defaultPrevented || _this61.handleInput(function () {\n          if (!x(_this61.element)) {\n            if (_this61.flakyKeyboardDetector.shouldIgnore(e)) return;\n            _this61.eventName = t, _this61.constructor.events[t].call(_this61, e);\n          }\n        });\n      };\n    }\n  }, {\n    key: \"handleInput\",\n    value: function handleInput(t) {\n      try {\n        var e;\n        null === (e = this.delegate) || void 0 === e || e.inputControllerWillHandleInput(), t.call(this);\n      } finally {\n        var i;\n        null === (i = this.delegate) || void 0 === i || i.inputControllerDidHandleInput();\n      }\n    }\n  }, {\n    key: \"createLinkHTML\",\n    value: function createLinkHTML(t, e) {\n      var i = document.createElement(\"a\");\n      return i.href = t, i.textContent = e || t, i.outerHTML;\n    }\n  }]);\n\n  return sr;\n}(q);\n\nvar ar;\nwi(sr, \"events\", {});\nvar lr = z.browser,\n    cr = z.keyNames;\nvar ur = 0;\n\nvar hr = /*#__PURE__*/function (_sr) {\n  _inherits(hr, _sr);\n\n  var _super37 = _createSuper(hr);\n\n  function hr() {\n    var _this62;\n\n    _classCallCheck(this, hr);\n\n    _this62 = _super37.apply(this, arguments), _this62.resetInputSummary();\n    return _this62;\n  }\n\n  _createClass(hr, [{\n    key: \"setInputSummary\",\n    value: function setInputSummary() {\n      var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n      this.inputSummary.eventName = this.eventName;\n\n      for (var _e48 in t) {\n        var _i43 = t[_e48];\n        this.inputSummary[_e48] = _i43;\n      }\n\n      return this.inputSummary;\n    }\n  }, {\n    key: \"resetInputSummary\",\n    value: function resetInputSummary() {\n      this.inputSummary = {};\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      return this.resetInputSummary(), Ft.reset();\n    }\n  }, {\n    key: \"elementDidMutate\",\n    value: function elementDidMutate(t) {\n      var e, i;\n      return this.isComposing() ? null === (e = this.delegate) || void 0 === e || null === (i = e.inputControllerDidAllowUnhandledInput) || void 0 === i ? void 0 : i.call(e) : this.handleInput(function () {\n        return this.mutationIsSignificant(t) && (this.mutationIsExpected(t) ? this.requestRender() : this.requestReparse()), this.reset();\n      });\n    }\n  }, {\n    key: \"mutationIsExpected\",\n    value: function mutationIsExpected(t) {\n      var e = t.textAdded,\n          i = t.textDeleted;\n      if (this.inputSummary.preferDocument) return !0;\n      var n = null != e ? e === this.inputSummary.textAdded : !this.inputSummary.textAdded,\n          r = null != i ? this.inputSummary.didDelete : !this.inputSummary.didDelete,\n          o = [\"\\n\", \" \\n\"].includes(e) && !n,\n          s = \"\\n\" === i && !r;\n\n      if (o && !s || s && !o) {\n        var _t51 = this.getSelectedRange();\n\n        if (_t51) {\n          var a;\n\n          var _i44 = o ? e.replace(/\\n$/, \"\").length || -1 : (null == e ? void 0 : e.length) || 1;\n\n          if (null !== (a = this.responder) && void 0 !== a && a.positionIsBlockBreak(_t51[1] + _i44)) return !0;\n        }\n      }\n\n      return n && r;\n    }\n  }, {\n    key: \"mutationIsSignificant\",\n    value: function mutationIsSignificant(t) {\n      var e;\n      var i = Object.keys(t).length > 0,\n          n = \"\" === (null === (e = this.compositionInput) || void 0 === e ? void 0 : e.getEndData());\n      return i || !n;\n    }\n  }, {\n    key: \"getCompositionInput\",\n    value: function getCompositionInput() {\n      if (this.isComposing()) return this.compositionInput;\n      this.compositionInput = new fr(this);\n    }\n  }, {\n    key: \"isComposing\",\n    value: function isComposing() {\n      return this.compositionInput && !this.compositionInput.isEnded();\n    }\n  }, {\n    key: \"deleteInDirection\",\n    value: function deleteInDirection(t, e) {\n      var i;\n      return !1 !== (null === (i = this.responder) || void 0 === i ? void 0 : i.deleteInDirection(t)) ? this.setInputSummary({\n        didDelete: !0\n      }) : e ? (e.preventDefault(), this.requestRender()) : void 0;\n    }\n  }, {\n    key: \"serializeSelectionToDataTransfer\",\n    value: function serializeSelectionToDataTransfer(t) {\n      var e;\n      if (!function (t) {\n        if (null == t || !t.setData) return !1;\n\n        for (var _e49 in Ct) {\n          var _i45 = Ct[_e49];\n\n          try {\n            if (t.setData(_e49, _i45), !t.getData(_e49) === _i45) return !1;\n          } catch (t) {\n            return !1;\n          }\n        }\n\n        return !0;\n      }(t)) return;\n      var i = null === (e = this.responder) || void 0 === e ? void 0 : e.getSelectedDocument().toSerializableDocument();\n      return t.setData(\"application/x-trix-document\", JSON.stringify(i)), t.setData(\"text/html\", Ci.render(i).innerHTML), t.setData(\"text/plain\", i.toString().replace(/\\n$/, \"\")), !0;\n    }\n  }, {\n    key: \"canAcceptDataTransfer\",\n    value: function canAcceptDataTransfer(t) {\n      var e = {};\n      return Array.from((null == t ? void 0 : t.types) || []).forEach(function (t) {\n        e[t] = !0;\n      }), e.Files || e[\"application/x-trix-document\"] || e[\"text/html\"] || e[\"text/plain\"];\n    }\n  }, {\n    key: \"getPastedHTMLUsingHiddenElement\",\n    value: function getPastedHTMLUsingHiddenElement(t) {\n      var _this63 = this;\n\n      var e = this.getSelectedRange(),\n          i = {\n        position: \"absolute\",\n        left: \"\".concat(window.pageXOffset, \"px\"),\n        top: \"\".concat(window.pageYOffset, \"px\"),\n        opacity: 0\n      },\n          n = T({\n        style: i,\n        tagName: \"div\",\n        editable: !0\n      });\n      return document.body.appendChild(n), n.focus(), requestAnimationFrame(function () {\n        var i = n.innerHTML;\n        return S(n), _this63.setSelectedRange(e), t(i);\n      });\n    }\n  }]);\n\n  return hr;\n}(sr);\n\nwi(hr, \"events\", {\n  keydown: function keydown(t) {\n    this.isComposing() || this.resetInputSummary(), this.inputSummary.didInput = !0;\n    var e = cr[t.keyCode];\n\n    if (e) {\n      var i;\n      var _n29 = this.keys;\n      [\"ctrl\", \"alt\", \"shift\", \"meta\"].forEach(function (e) {\n        var i;\n        t[\"\".concat(e, \"Key\")] && (\"ctrl\" === e && (e = \"control\"), _n29 = null === (i = _n29) || void 0 === i ? void 0 : i[e]);\n      }), null != (null === (i = _n29) || void 0 === i ? void 0 : i[e]) && (this.setInputSummary({\n        keyName: e\n      }), Ft.reset(), _n29[e].call(this, t));\n    }\n\n    if (St(t)) {\n      var _e50 = String.fromCharCode(t.keyCode).toLowerCase();\n\n      if (_e50) {\n        var n;\n\n        var _i46 = [\"alt\", \"shift\"].map(function (e) {\n          if (t[\"\".concat(e, \"Key\")]) return e;\n        }).filter(function (t) {\n          return t;\n        });\n\n        _i46.push(_e50), null !== (n = this.delegate) && void 0 !== n && n.inputControllerDidReceiveKeyboardCommand(_i46) && t.preventDefault();\n      }\n    }\n  },\n  keypress: function keypress(t) {\n    if (null != this.inputSummary.eventName) return;\n    if (t.metaKey) return;\n    if (t.ctrlKey && !t.altKey) return;\n    var e = mr(t);\n    var i, n;\n    return e ? (null === (i = this.delegate) || void 0 === i || i.inputControllerWillPerformTyping(), null === (n = this.responder) || void 0 === n || n.insertString(e), this.setInputSummary({\n      textAdded: e,\n      didDelete: this.selectionIsExpanded()\n    })) : void 0;\n  },\n  textInput: function textInput(t) {\n    var e = t.data,\n        i = this.inputSummary.textAdded;\n\n    if (i && i !== e && i.toUpperCase() === e) {\n      var n;\n\n      var _t52 = this.getSelectedRange();\n\n      return this.setSelectedRange([_t52[0], _t52[1] + i.length]), null === (n = this.responder) || void 0 === n || n.insertString(e), this.setInputSummary({\n        textAdded: e\n      }), this.setSelectedRange(_t52);\n    }\n  },\n  dragenter: function dragenter(t) {\n    t.preventDefault();\n  },\n  dragstart: function dragstart(t) {\n    var e, i;\n    return this.serializeSelectionToDataTransfer(t.dataTransfer), this.draggedRange = this.getSelectedRange(), null === (e = this.delegate) || void 0 === e || null === (i = e.inputControllerDidStartDrag) || void 0 === i ? void 0 : i.call(e);\n  },\n  dragover: function dragover(t) {\n    if (this.draggedRange || this.canAcceptDataTransfer(t.dataTransfer)) {\n      t.preventDefault();\n      var _n30 = {\n        x: t.clientX,\n        y: t.clientY\n      };\n      var e, i;\n      if (!Tt(_n30, this.draggingPoint)) return this.draggingPoint = _n30, null === (e = this.delegate) || void 0 === e || null === (i = e.inputControllerDidReceiveDragOverPoint) || void 0 === i ? void 0 : i.call(e, this.draggingPoint);\n    }\n  },\n  dragend: function dragend(t) {\n    var e, i;\n    null === (e = this.delegate) || void 0 === e || null === (i = e.inputControllerDidCancelDrag) || void 0 === i || i.call(e), this.draggedRange = null, this.draggingPoint = null;\n  },\n  drop: function drop(t) {\n    var e, i;\n    t.preventDefault();\n    var n = null === (e = t.dataTransfer) || void 0 === e ? void 0 : e.files,\n        r = t.dataTransfer.getData(\"application/x-trix-document\"),\n        o = {\n      x: t.clientX,\n      y: t.clientY\n    };\n    if (null === (i = this.responder) || void 0 === i || i.setLocationRangeFromPointRange(o), null != n && n.length) this.attachFiles(n);else if (this.draggedRange) {\n      var s, a;\n      null === (s = this.delegate) || void 0 === s || s.inputControllerWillMoveText(), null === (a = this.responder) || void 0 === a || a.moveTextFromRange(this.draggedRange), this.draggedRange = null, this.requestRender();\n    } else if (r) {\n      var l;\n\n      var _t53 = on.fromJSONString(r);\n\n      null === (l = this.responder) || void 0 === l || l.insertDocument(_t53), this.requestRender();\n    }\n    this.draggedRange = null, this.draggingPoint = null;\n  },\n  cut: function cut(t) {\n    var e, i;\n    if (null !== (e = this.responder) && void 0 !== e && e.selectionIsExpanded() && (this.serializeSelectionToDataTransfer(t.clipboardData) && t.preventDefault(), null === (i = this.delegate) || void 0 === i || i.inputControllerWillCutText(), this.deleteInDirection(\"backward\"), t.defaultPrevented)) return this.requestRender();\n  },\n  copy: function copy(t) {\n    var e;\n    null !== (e = this.responder) && void 0 !== e && e.selectionIsExpanded() && this.serializeSelectionToDataTransfer(t.clipboardData) && t.preventDefault();\n  },\n  paste: function paste(t) {\n    var _this64 = this;\n\n    var e = t.clipboardData || t.testClipboardData,\n        i = {\n      clipboard: e\n    };\n    if (!e || pr(t)) return void this.getPastedHTMLUsingHiddenElement(function (t) {\n      var e, n, r;\n      return i.type = \"text/html\", i.html = t, null === (e = _this64.delegate) || void 0 === e || e.inputControllerWillPaste(i), null === (n = _this64.responder) || void 0 === n || n.insertHTML(i.html), _this64.requestRender(), null === (r = _this64.delegate) || void 0 === r ? void 0 : r.inputControllerDidPaste(i);\n    });\n    var n = e.getData(\"URL\"),\n        r = e.getData(\"text/html\"),\n        o = e.getData(\"public.url-name\");\n\n    if (n) {\n      var s, a, l;\n\n      var _t54;\n\n      i.type = \"text/html\", _t54 = o ? Vt(o).trim() : n, i.html = this.createLinkHTML(n, _t54), null === (s = this.delegate) || void 0 === s || s.inputControllerWillPaste(i), this.setInputSummary({\n        textAdded: _t54,\n        didDelete: this.selectionIsExpanded()\n      }), null === (a = this.responder) || void 0 === a || a.insertHTML(i.html), this.requestRender(), null === (l = this.delegate) || void 0 === l || l.inputControllerDidPaste(i);\n    } else if (Et(e)) {\n      var c, u, h;\n      i.type = \"text/plain\", i.string = e.getData(\"text/plain\"), null === (c = this.delegate) || void 0 === c || c.inputControllerWillPaste(i), this.setInputSummary({\n        textAdded: i.string,\n        didDelete: this.selectionIsExpanded()\n      }), null === (u = this.responder) || void 0 === u || u.insertString(i.string), this.requestRender(), null === (h = this.delegate) || void 0 === h || h.inputControllerDidPaste(i);\n    } else if (r) {\n      var d, g, m;\n      i.type = \"text/html\", i.html = r, null === (d = this.delegate) || void 0 === d || d.inputControllerWillPaste(i), null === (g = this.responder) || void 0 === g || g.insertHTML(i.html), this.requestRender(), null === (m = this.delegate) || void 0 === m || m.inputControllerDidPaste(i);\n    } else if (Array.from(e.types).includes(\"Files\")) {\n      var p, f;\n\n      var _t55 = null === (p = e.items) || void 0 === p || null === (p = p[0]) || void 0 === p || null === (f = p.getAsFile) || void 0 === f ? void 0 : f.call(p);\n\n      if (_t55) {\n        var b, v, A;\n\n        var _e51 = dr(_t55);\n\n        !_t55.name && _e51 && (_t55.name = \"pasted-file-\".concat(++ur, \".\").concat(_e51)), i.type = \"File\", i.file = _t55, null === (b = this.delegate) || void 0 === b || b.inputControllerWillAttachFiles(), null === (v = this.responder) || void 0 === v || v.insertFile(i.file), this.requestRender(), null === (A = this.delegate) || void 0 === A || A.inputControllerDidPaste(i);\n      }\n    }\n\n    t.preventDefault();\n  },\n  compositionstart: function compositionstart(t) {\n    return this.getCompositionInput().start(t.data);\n  },\n  compositionupdate: function compositionupdate(t) {\n    return this.getCompositionInput().update(t.data);\n  },\n  compositionend: function compositionend(t) {\n    return this.getCompositionInput().end(t.data);\n  },\n  beforeinput: function beforeinput(t) {\n    this.inputSummary.didInput = !0;\n  },\n  input: function input(t) {\n    return this.inputSummary.didInput = !0, t.stopPropagation();\n  }\n}), wi(hr, \"keys\", {\n  backspace: function backspace(t) {\n    var e;\n    return null === (e = this.delegate) || void 0 === e || e.inputControllerWillPerformTyping(), this.deleteInDirection(\"backward\", t);\n  },\n  delete: function _delete(t) {\n    var e;\n    return null === (e = this.delegate) || void 0 === e || e.inputControllerWillPerformTyping(), this.deleteInDirection(\"forward\", t);\n  },\n  return: function _return(t) {\n    var e, i;\n    return this.setInputSummary({\n      preferDocument: !0\n    }), null === (e = this.delegate) || void 0 === e || e.inputControllerWillPerformTyping(), null === (i = this.responder) || void 0 === i ? void 0 : i.insertLineBreak();\n  },\n  tab: function tab(t) {\n    var e, i;\n    null !== (e = this.responder) && void 0 !== e && e.canIncreaseNestingLevel() && (null === (i = this.responder) || void 0 === i || i.increaseNestingLevel(), this.requestRender(), t.preventDefault());\n  },\n  left: function left(t) {\n    var e;\n    if (this.selectionIsInCursorTarget()) return t.preventDefault(), null === (e = this.responder) || void 0 === e ? void 0 : e.moveCursorInDirection(\"backward\");\n  },\n  right: function right(t) {\n    var e;\n    if (this.selectionIsInCursorTarget()) return t.preventDefault(), null === (e = this.responder) || void 0 === e ? void 0 : e.moveCursorInDirection(\"forward\");\n  },\n  control: {\n    d: function d(t) {\n      var e;\n      return null === (e = this.delegate) || void 0 === e || e.inputControllerWillPerformTyping(), this.deleteInDirection(\"forward\", t);\n    },\n    h: function h(t) {\n      var e;\n      return null === (e = this.delegate) || void 0 === e || e.inputControllerWillPerformTyping(), this.deleteInDirection(\"backward\", t);\n    },\n    o: function o(t) {\n      var e, i;\n      return t.preventDefault(), null === (e = this.delegate) || void 0 === e || e.inputControllerWillPerformTyping(), null === (i = this.responder) || void 0 === i || i.insertString(\"\\n\", {\n        updatePosition: !1\n      }), this.requestRender();\n    }\n  },\n  shift: {\n    return: function _return(t) {\n      var e, i;\n      null === (e = this.delegate) || void 0 === e || e.inputControllerWillPerformTyping(), null === (i = this.responder) || void 0 === i || i.insertString(\"\\n\"), this.requestRender(), t.preventDefault();\n    },\n    tab: function tab(t) {\n      var e, i;\n      null !== (e = this.responder) && void 0 !== e && e.canDecreaseNestingLevel() && (null === (i = this.responder) || void 0 === i || i.decreaseNestingLevel(), this.requestRender(), t.preventDefault());\n    },\n    left: function left(t) {\n      if (this.selectionIsInCursorTarget()) return t.preventDefault(), this.expandSelectionInDirection(\"backward\");\n    },\n    right: function right(t) {\n      if (this.selectionIsInCursorTarget()) return t.preventDefault(), this.expandSelectionInDirection(\"forward\");\n    }\n  },\n  alt: {\n    backspace: function backspace(t) {\n      var e;\n      return this.setInputSummary({\n        preferDocument: !1\n      }), null === (e = this.delegate) || void 0 === e ? void 0 : e.inputControllerWillPerformTyping();\n    }\n  },\n  meta: {\n    backspace: function backspace(t) {\n      var e;\n      return this.setInputSummary({\n        preferDocument: !1\n      }), null === (e = this.delegate) || void 0 === e ? void 0 : e.inputControllerWillPerformTyping();\n    }\n  }\n}), hr.proxyMethod(\"responder?.getSelectedRange\"), hr.proxyMethod(\"responder?.setSelectedRange\"), hr.proxyMethod(\"responder?.expandSelectionInDirection\"), hr.proxyMethod(\"responder?.selectionIsInCursorTarget\"), hr.proxyMethod(\"responder?.selectionIsExpanded\");\n\nvar dr = function dr(t) {\n  var e;\n  return null === (e = t.type) || void 0 === e || null === (e = e.match(/\\/(\\w+)$/)) || void 0 === e ? void 0 : e[1];\n},\n    gr = !(null === (ar = \" \".codePointAt) || void 0 === ar || !ar.call(\" \", 0)),\n    mr = function mr(t) {\n  if (t.key && gr && t.key.codePointAt(0) === t.keyCode) return t.key;\n  {\n    var _e52;\n\n    if (null === t.which ? _e52 = t.keyCode : 0 !== t.which && 0 !== t.charCode && (_e52 = t.charCode), null != _e52 && \"escape\" !== cr[_e52]) return X.fromCodepoints([_e52]).toString();\n  }\n},\n    pr = function pr(t) {\n  var e = t.clipboardData;\n\n  if (e) {\n    if (e.types.includes(\"text/html\")) {\n      var _iterator8 = _createForOfIteratorHelper(e.types),\n          _step8;\n\n      try {\n        for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n          var _t56 = _step8.value;\n\n          var _i47 = /^CorePasteboardFlavorType/.test(_t56),\n              _n31 = /^dyn\\./.test(_t56) && e.getData(_t56);\n\n          if (_i47 || _n31) return !0;\n        }\n      } catch (err) {\n        _iterator8.e(err);\n      } finally {\n        _iterator8.f();\n      }\n\n      return !1;\n    }\n\n    {\n      var _t57 = e.types.includes(\"com.apple.webarchive\"),\n          _i48 = e.types.includes(\"com.apple.flat-rtfd\");\n\n      return _t57 || _i48;\n    }\n  }\n};\n\nvar fr = /*#__PURE__*/function (_q19) {\n  _inherits(fr, _q19);\n\n  var _super38 = _createSuper(fr);\n\n  function fr(t) {\n    var _this65;\n\n    _classCallCheck(this, fr);\n\n    _this65 = _super38.apply(this, arguments), _this65.inputController = t, _this65.responder = _this65.inputController.responder, _this65.delegate = _this65.inputController.delegate, _this65.inputSummary = _this65.inputController.inputSummary, _this65.data = {};\n    return _this65;\n  }\n\n  _createClass(fr, [{\n    key: \"start\",\n    value: function start(t) {\n      if (this.data.start = t, this.isSignificant()) {\n        var e, i;\n        if (\"keypress\" === this.inputSummary.eventName && this.inputSummary.textAdded) null === (i = this.responder) || void 0 === i || i.deleteInDirection(\"left\");\n        this.selectionIsExpanded() || (this.insertPlaceholder(), this.requestRender()), this.range = null === (e = this.responder) || void 0 === e ? void 0 : e.getSelectedRange();\n      }\n    }\n  }, {\n    key: \"update\",\n    value: function update(t) {\n      if (this.data.update = t, this.isSignificant()) {\n        var _t58 = this.selectPlaceholder();\n\n        _t58 && (this.forgetPlaceholder(), this.range = _t58);\n      }\n    }\n  }, {\n    key: \"end\",\n    value: function end(t) {\n      return this.data.end = t, this.isSignificant() ? (this.forgetPlaceholder(), this.canApplyToDocument() ? (this.setInputSummary({\n        preferDocument: !0,\n        didInput: !1\n      }), null === (e = this.delegate) || void 0 === e || e.inputControllerWillPerformTyping(), null === (i = this.responder) || void 0 === i || i.setSelectedRange(this.range), null === (n = this.responder) || void 0 === n || n.insertString(this.data.end), null === (r = this.responder) || void 0 === r ? void 0 : r.setSelectedRange(this.range[0] + this.data.end.length)) : null != this.data.start || null != this.data.update ? (this.requestReparse(), this.inputController.reset()) : void 0) : this.inputController.reset();\n      var e, i, n, r;\n    }\n  }, {\n    key: \"getEndData\",\n    value: function getEndData() {\n      return this.data.end;\n    }\n  }, {\n    key: \"isEnded\",\n    value: function isEnded() {\n      return null != this.getEndData();\n    }\n  }, {\n    key: \"isSignificant\",\n    value: function isSignificant() {\n      return !lr.composesExistingText || this.inputSummary.didInput;\n    }\n  }, {\n    key: \"canApplyToDocument\",\n    value: function canApplyToDocument() {\n      var t, e;\n      return 0 === (null === (t = this.data.start) || void 0 === t ? void 0 : t.length) && (null === (e = this.data.end) || void 0 === e ? void 0 : e.length) > 0 && this.range;\n    }\n  }]);\n\n  return fr;\n}(q);\n\nfr.proxyMethod(\"inputController.setInputSummary\"), fr.proxyMethod(\"inputController.requestRender\"), fr.proxyMethod(\"inputController.requestReparse\"), fr.proxyMethod(\"responder?.selectionIsExpanded\"), fr.proxyMethod(\"responder?.insertPlaceholder\"), fr.proxyMethod(\"responder?.selectPlaceholder\"), fr.proxyMethod(\"responder?.forgetPlaceholder\");\n\nvar br = /*#__PURE__*/function (_sr2) {\n  _inherits(br, _sr2);\n\n  var _super39 = _createSuper(br);\n\n  function br() {\n    var _this66;\n\n    _classCallCheck(this, br);\n\n    _this66 = _super39.apply(this, arguments), _this66.render = _this66.render.bind(_assertThisInitialized(_this66));\n    return _this66;\n  }\n\n  _createClass(br, [{\n    key: \"elementDidMutate\",\n    value: function elementDidMutate() {\n      return this.scheduledRender ? this.composing ? null === (t = this.delegate) || void 0 === t || null === (e = t.inputControllerDidAllowUnhandledInput) || void 0 === e ? void 0 : e.call(t) : void 0 : this.reparse();\n      var t, e;\n    }\n  }, {\n    key: \"scheduleRender\",\n    value: function scheduleRender() {\n      return this.scheduledRender ? this.scheduledRender : this.scheduledRender = requestAnimationFrame(this.render);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var t, e;\n      (cancelAnimationFrame(this.scheduledRender), this.scheduledRender = null, this.composing) || null === (e = this.delegate) || void 0 === e || e.render();\n      null === (t = this.afterRender) || void 0 === t || t.call(this), this.afterRender = null;\n    }\n  }, {\n    key: \"reparse\",\n    value: function reparse() {\n      var t;\n      return null === (t = this.delegate) || void 0 === t ? void 0 : t.reparse();\n    }\n  }, {\n    key: \"insertString\",\n    value: function insertString() {\n      var t;\n      var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : \"\",\n          i = arguments.length > 1 ? arguments[1] : void 0;\n      return null === (t = this.delegate) || void 0 === t || t.inputControllerWillPerformTyping(), this.withTargetDOMRange(function () {\n        var t;\n        return null === (t = this.responder) || void 0 === t ? void 0 : t.insertString(e, i);\n      });\n    }\n  }, {\n    key: \"toggleAttributeIfSupported\",\n    value: function toggleAttributeIfSupported(t) {\n      var e;\n      if (gt().includes(t)) return null === (e = this.delegate) || void 0 === e || e.inputControllerWillPerformFormatting(t), this.withTargetDOMRange(function () {\n        var e;\n        return null === (e = this.responder) || void 0 === e ? void 0 : e.toggleCurrentAttribute(t);\n      });\n    }\n  }, {\n    key: \"activateAttributeIfSupported\",\n    value: function activateAttributeIfSupported(t, e) {\n      var i;\n      if (gt().includes(t)) return null === (i = this.delegate) || void 0 === i || i.inputControllerWillPerformFormatting(t), this.withTargetDOMRange(function () {\n        var i;\n        return null === (i = this.responder) || void 0 === i ? void 0 : i.setCurrentAttribute(t, e);\n      });\n    }\n  }, {\n    key: \"deleteInDirection\",\n    value: function deleteInDirection(t) {\n      var _this67 = this;\n\n      var _ref25 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {\n        recordUndoEntry: !0\n      },\n          e = _ref25.recordUndoEntry;\n\n      var i;\n      e && (null === (i = this.delegate) || void 0 === i || i.inputControllerWillPerformTyping());\n\n      var n = function n() {\n        var e;\n        return null === (e = _this67.responder) || void 0 === e ? void 0 : e.deleteInDirection(t);\n      },\n          r = this.getTargetDOMRange({\n        minLength: this.composing ? 1 : 2\n      });\n\n      return r ? this.withTargetDOMRange(r, n) : n();\n    }\n  }, {\n    key: \"withTargetDOMRange\",\n    value: function withTargetDOMRange(t, e) {\n      var i;\n      return \"function\" == typeof t && (e = t, t = this.getTargetDOMRange()), t ? null === (i = this.responder) || void 0 === i ? void 0 : i.withTargetDOMRange(t, e.bind(this)) : (Ft.reset(), e.call(this));\n    }\n  }, {\n    key: \"getTargetDOMRange\",\n    value: function getTargetDOMRange() {\n      var t, e;\n\n      var _ref26 = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {\n        minLength: 0\n      },\n          i = _ref26.minLength;\n\n      var n = null === (t = (e = this.event).getTargetRanges) || void 0 === t ? void 0 : t.call(e);\n\n      if (n && n.length) {\n        var _t59 = vr(n[0]);\n\n        if (0 === i || _t59.toString().length >= i) return _t59;\n      }\n    }\n  }, {\n    key: \"withEvent\",\n    value: function withEvent(t, e) {\n      var i;\n      this.event = t;\n\n      try {\n        i = e.call(this);\n      } finally {\n        this.event = null;\n      }\n\n      return i;\n    }\n  }]);\n\n  return br;\n}(sr);\n\nwi(br, \"events\", {\n  keydown: function keydown(t) {\n    if (St(t)) {\n      var e;\n\n      var _i49 = Er(t);\n\n      null !== (e = this.delegate) && void 0 !== e && e.inputControllerDidReceiveKeyboardCommand(_i49) && t.preventDefault();\n    } else {\n      var _e53 = t.key;\n      t.altKey && (_e53 += \"+Alt\"), t.shiftKey && (_e53 += \"+Shift\");\n      var _i50 = this.constructor.keys[_e53];\n      if (_i50) return this.withEvent(t, _i50);\n    }\n  },\n  paste: function paste(t) {\n    var e;\n    var i;\n    var n = null === (e = t.clipboardData) || void 0 === e ? void 0 : e.getData(\"URL\");\n    return xr(t) ? (t.preventDefault(), this.attachFiles(t.clipboardData.files)) : Cr(t) ? (t.preventDefault(), i = {\n      type: \"text/plain\",\n      string: t.clipboardData.getData(\"text/plain\")\n    }, null === (r = this.delegate) || void 0 === r || r.inputControllerWillPaste(i), null === (o = this.responder) || void 0 === o || o.insertString(i.string), this.render(), null === (s = this.delegate) || void 0 === s ? void 0 : s.inputControllerDidPaste(i)) : n ? (t.preventDefault(), i = {\n      type: \"text/html\",\n      html: this.createLinkHTML(n)\n    }, null === (a = this.delegate) || void 0 === a || a.inputControllerWillPaste(i), null === (l = this.responder) || void 0 === l || l.insertHTML(i.html), this.render(), null === (c = this.delegate) || void 0 === c ? void 0 : c.inputControllerDidPaste(i)) : void 0;\n    var r, o, s, a, l, c;\n  },\n  beforeinput: function beforeinput(t) {\n    var e = this.constructor.inputTypes[t.inputType],\n        i = (n = t, !(!/iPhone|iPad/.test(navigator.userAgent) || n.inputType && \"insertParagraph\" !== n.inputType));\n    var n;\n    e && (this.withEvent(t, e), i || this.scheduleRender()), i && this.render();\n  },\n  input: function input(t) {\n    Ft.reset();\n  },\n  dragstart: function dragstart(t) {\n    var e, i;\n    null !== (e = this.responder) && void 0 !== e && e.selectionContainsAttachments() && (t.dataTransfer.setData(\"application/x-trix-dragging\", !0), this.dragging = {\n      range: null === (i = this.responder) || void 0 === i ? void 0 : i.getSelectedRange(),\n      point: Sr(t)\n    });\n  },\n  dragenter: function dragenter(t) {\n    Ar(t) && t.preventDefault();\n  },\n  dragover: function dragover(t) {\n    if (this.dragging) {\n      t.preventDefault();\n\n      var _i51 = Sr(t);\n\n      var e;\n      if (!Tt(_i51, this.dragging.point)) return this.dragging.point = _i51, null === (e = this.responder) || void 0 === e ? void 0 : e.setLocationRangeFromPointRange(_i51);\n    } else Ar(t) && t.preventDefault();\n  },\n  drop: function drop(t) {\n    var e, i;\n    if (this.dragging) return t.preventDefault(), null === (e = this.delegate) || void 0 === e || e.inputControllerWillMoveText(), null === (i = this.responder) || void 0 === i || i.moveTextFromRange(this.dragging.range), this.dragging = null, this.scheduleRender();\n\n    if (Ar(t)) {\n      var n;\n      t.preventDefault();\n\n      var _e54 = Sr(t);\n\n      return null === (n = this.responder) || void 0 === n || n.setLocationRangeFromPointRange(_e54), this.attachFiles(t.dataTransfer.files);\n    }\n  },\n  dragend: function dragend() {\n    var t;\n    this.dragging && (null === (t = this.responder) || void 0 === t || t.setSelectedRange(this.dragging.range), this.dragging = null);\n  },\n  compositionend: function compositionend(t) {\n    this.composing && (this.composing = !1, a.recentAndroid || this.scheduleRender());\n  }\n}), wi(br, \"keys\", {\n  ArrowLeft: function ArrowLeft() {\n    var t, e;\n    if (null !== (t = this.responder) && void 0 !== t && t.shouldManageMovingCursorInDirection(\"backward\")) return this.event.preventDefault(), null === (e = this.responder) || void 0 === e ? void 0 : e.moveCursorInDirection(\"backward\");\n  },\n  ArrowRight: function ArrowRight() {\n    var t, e;\n    if (null !== (t = this.responder) && void 0 !== t && t.shouldManageMovingCursorInDirection(\"forward\")) return this.event.preventDefault(), null === (e = this.responder) || void 0 === e ? void 0 : e.moveCursorInDirection(\"forward\");\n  },\n  Backspace: function Backspace() {\n    var t, e, i;\n    if (null !== (t = this.responder) && void 0 !== t && t.shouldManageDeletingInDirection(\"backward\")) return this.event.preventDefault(), null === (e = this.delegate) || void 0 === e || e.inputControllerWillPerformTyping(), null === (i = this.responder) || void 0 === i || i.deleteInDirection(\"backward\"), this.render();\n  },\n  Tab: function Tab() {\n    var t, e;\n    if (null !== (t = this.responder) && void 0 !== t && t.canIncreaseNestingLevel()) return this.event.preventDefault(), null === (e = this.responder) || void 0 === e || e.increaseNestingLevel(), this.render();\n  },\n  \"Tab+Shift\": function TabShift() {\n    var t, e;\n    if (null !== (t = this.responder) && void 0 !== t && t.canDecreaseNestingLevel()) return this.event.preventDefault(), null === (e = this.responder) || void 0 === e || e.decreaseNestingLevel(), this.render();\n  }\n}), wi(br, \"inputTypes\", {\n  deleteByComposition: function deleteByComposition() {\n    return this.deleteInDirection(\"backward\", {\n      recordUndoEntry: !1\n    });\n  },\n  deleteByCut: function deleteByCut() {\n    return this.deleteInDirection(\"backward\");\n  },\n  deleteByDrag: function deleteByDrag() {\n    return this.event.preventDefault(), this.withTargetDOMRange(function () {\n      var t;\n      this.deleteByDragRange = null === (t = this.responder) || void 0 === t ? void 0 : t.getSelectedRange();\n    });\n  },\n  deleteCompositionText: function deleteCompositionText() {\n    return this.deleteInDirection(\"backward\", {\n      recordUndoEntry: !1\n    });\n  },\n  deleteContent: function deleteContent() {\n    return this.deleteInDirection(\"backward\");\n  },\n  deleteContentBackward: function deleteContentBackward() {\n    return this.deleteInDirection(\"backward\");\n  },\n  deleteContentForward: function deleteContentForward() {\n    return this.deleteInDirection(\"forward\");\n  },\n  deleteEntireSoftLine: function deleteEntireSoftLine() {\n    return this.deleteInDirection(\"forward\");\n  },\n  deleteHardLineBackward: function deleteHardLineBackward() {\n    return this.deleteInDirection(\"backward\");\n  },\n  deleteHardLineForward: function deleteHardLineForward() {\n    return this.deleteInDirection(\"forward\");\n  },\n  deleteSoftLineBackward: function deleteSoftLineBackward() {\n    return this.deleteInDirection(\"backward\");\n  },\n  deleteSoftLineForward: function deleteSoftLineForward() {\n    return this.deleteInDirection(\"forward\");\n  },\n  deleteWordBackward: function deleteWordBackward() {\n    return this.deleteInDirection(\"backward\");\n  },\n  deleteWordForward: function deleteWordForward() {\n    return this.deleteInDirection(\"forward\");\n  },\n  formatBackColor: function formatBackColor() {\n    return this.activateAttributeIfSupported(\"backgroundColor\", this.event.data);\n  },\n  formatBold: function formatBold() {\n    return this.toggleAttributeIfSupported(\"bold\");\n  },\n  formatFontColor: function formatFontColor() {\n    return this.activateAttributeIfSupported(\"color\", this.event.data);\n  },\n  formatFontName: function formatFontName() {\n    return this.activateAttributeIfSupported(\"font\", this.event.data);\n  },\n  formatIndent: function formatIndent() {\n    var t;\n    if (null !== (t = this.responder) && void 0 !== t && t.canIncreaseNestingLevel()) return this.withTargetDOMRange(function () {\n      var t;\n      return null === (t = this.responder) || void 0 === t ? void 0 : t.increaseNestingLevel();\n    });\n  },\n  formatItalic: function formatItalic() {\n    return this.toggleAttributeIfSupported(\"italic\");\n  },\n  formatJustifyCenter: function formatJustifyCenter() {\n    return this.toggleAttributeIfSupported(\"justifyCenter\");\n  },\n  formatJustifyFull: function formatJustifyFull() {\n    return this.toggleAttributeIfSupported(\"justifyFull\");\n  },\n  formatJustifyLeft: function formatJustifyLeft() {\n    return this.toggleAttributeIfSupported(\"justifyLeft\");\n  },\n  formatJustifyRight: function formatJustifyRight() {\n    return this.toggleAttributeIfSupported(\"justifyRight\");\n  },\n  formatOutdent: function formatOutdent() {\n    var t;\n    if (null !== (t = this.responder) && void 0 !== t && t.canDecreaseNestingLevel()) return this.withTargetDOMRange(function () {\n      var t;\n      return null === (t = this.responder) || void 0 === t ? void 0 : t.decreaseNestingLevel();\n    });\n  },\n  formatRemove: function formatRemove() {\n    this.withTargetDOMRange(function () {\n      for (var _i52 in null === (t = this.responder) || void 0 === t ? void 0 : t.getCurrentAttributes()) {\n        var t, e;\n        null === (e = this.responder) || void 0 === e || e.removeCurrentAttribute(_i52);\n      }\n    });\n  },\n  formatSetBlockTextDirection: function formatSetBlockTextDirection() {\n    return this.activateAttributeIfSupported(\"blockDir\", this.event.data);\n  },\n  formatSetInlineTextDirection: function formatSetInlineTextDirection() {\n    return this.activateAttributeIfSupported(\"textDir\", this.event.data);\n  },\n  formatStrikeThrough: function formatStrikeThrough() {\n    return this.toggleAttributeIfSupported(\"strike\");\n  },\n  formatSubscript: function formatSubscript() {\n    return this.toggleAttributeIfSupported(\"sub\");\n  },\n  formatSuperscript: function formatSuperscript() {\n    return this.toggleAttributeIfSupported(\"sup\");\n  },\n  formatUnderline: function formatUnderline() {\n    return this.toggleAttributeIfSupported(\"underline\");\n  },\n  historyRedo: function historyRedo() {\n    var t;\n    return null === (t = this.delegate) || void 0 === t ? void 0 : t.inputControllerWillPerformRedo();\n  },\n  historyUndo: function historyUndo() {\n    var t;\n    return null === (t = this.delegate) || void 0 === t ? void 0 : t.inputControllerWillPerformUndo();\n  },\n  insertCompositionText: function insertCompositionText() {\n    return this.composing = !0, this.insertString(this.event.data);\n  },\n  insertFromComposition: function insertFromComposition() {\n    return this.composing = !1, this.insertString(this.event.data);\n  },\n  insertFromDrop: function insertFromDrop() {\n    var t = this.deleteByDragRange;\n    var e;\n    if (t) return this.deleteByDragRange = null, null === (e = this.delegate) || void 0 === e || e.inputControllerWillMoveText(), this.withTargetDOMRange(function () {\n      var e;\n      return null === (e = this.responder) || void 0 === e ? void 0 : e.moveTextFromRange(t);\n    });\n  },\n  insertFromPaste: function insertFromPaste() {\n    var _this68 = this;\n\n    var t = this.event.dataTransfer,\n        e = {\n      dataTransfer: t\n    },\n        i = t.getData(\"URL\"),\n        n = t.getData(\"text/html\");\n\n    if (i) {\n      var r;\n\n      var _n32;\n\n      this.event.preventDefault(), e.type = \"text/html\";\n\n      var _o11 = t.getData(\"public.url-name\");\n\n      _n32 = _o11 ? Vt(_o11).trim() : i, e.html = this.createLinkHTML(i, _n32), null === (r = this.delegate) || void 0 === r || r.inputControllerWillPaste(e), this.withTargetDOMRange(function () {\n        var t;\n        return null === (t = this.responder) || void 0 === t ? void 0 : t.insertHTML(e.html);\n      }), this.afterRender = function () {\n        var t;\n        return null === (t = _this68.delegate) || void 0 === t ? void 0 : t.inputControllerDidPaste(e);\n      };\n    } else if (Et(t)) {\n      var o;\n      e.type = \"text/plain\", e.string = t.getData(\"text/plain\"), null === (o = this.delegate) || void 0 === o || o.inputControllerWillPaste(e), this.withTargetDOMRange(function () {\n        var t;\n        return null === (t = this.responder) || void 0 === t ? void 0 : t.insertString(e.string);\n      }), this.afterRender = function () {\n        var t;\n        return null === (t = _this68.delegate) || void 0 === t ? void 0 : t.inputControllerDidPaste(e);\n      };\n    } else if (yr(this.event)) {\n      var s;\n      e.type = \"File\", e.file = t.files[0], null === (s = this.delegate) || void 0 === s || s.inputControllerWillPaste(e), this.withTargetDOMRange(function () {\n        var t;\n        return null === (t = this.responder) || void 0 === t ? void 0 : t.insertFile(e.file);\n      }), this.afterRender = function () {\n        var t;\n        return null === (t = _this68.delegate) || void 0 === t ? void 0 : t.inputControllerDidPaste(e);\n      };\n    } else if (n) {\n      var a;\n      this.event.preventDefault(), e.type = \"text/html\", e.html = n, null === (a = this.delegate) || void 0 === a || a.inputControllerWillPaste(e), this.withTargetDOMRange(function () {\n        var t;\n        return null === (t = this.responder) || void 0 === t ? void 0 : t.insertHTML(e.html);\n      }), this.afterRender = function () {\n        var t;\n        return null === (t = _this68.delegate) || void 0 === t ? void 0 : t.inputControllerDidPaste(e);\n      };\n    }\n  },\n  insertFromYank: function insertFromYank() {\n    return this.insertString(this.event.data);\n  },\n  insertLineBreak: function insertLineBreak() {\n    return this.insertString(\"\\n\");\n  },\n  insertLink: function insertLink() {\n    return this.activateAttributeIfSupported(\"href\", this.event.data);\n  },\n  insertOrderedList: function insertOrderedList() {\n    return this.toggleAttributeIfSupported(\"number\");\n  },\n  insertParagraph: function insertParagraph() {\n    var t;\n    return null === (t = this.delegate) || void 0 === t || t.inputControllerWillPerformTyping(), this.withTargetDOMRange(function () {\n      var t;\n      return null === (t = this.responder) || void 0 === t ? void 0 : t.insertLineBreak();\n    });\n  },\n  insertReplacementText: function insertReplacementText() {\n    var _this69 = this;\n\n    var t = this.event.dataTransfer.getData(\"text/plain\"),\n        e = this.event.getTargetRanges()[0];\n    this.withTargetDOMRange(e, function () {\n      _this69.insertString(t, {\n        updatePosition: !1\n      });\n    });\n  },\n  insertText: function insertText() {\n    var t;\n    return this.insertString(this.event.data || (null === (t = this.event.dataTransfer) || void 0 === t ? void 0 : t.getData(\"text/plain\")));\n  },\n  insertTranspose: function insertTranspose() {\n    return this.insertString(this.event.data);\n  },\n  insertUnorderedList: function insertUnorderedList() {\n    return this.toggleAttributeIfSupported(\"bullet\");\n  }\n});\n\nvar vr = function vr(t) {\n  var e = document.createRange();\n  return e.setStart(t.startContainer, t.startOffset), e.setEnd(t.endContainer, t.endOffset), e;\n},\n    Ar = function Ar(t) {\n  var e;\n  return Array.from((null === (e = t.dataTransfer) || void 0 === e ? void 0 : e.types) || []).includes(\"Files\");\n},\n    yr = function yr(t) {\n  var e;\n  return (null === (e = t.dataTransfer.files) || void 0 === e ? void 0 : e[0]) && !xr(t) && !function (t) {\n    var e = t.dataTransfer;\n    return e.types.includes(\"Files\") && e.types.includes(\"text/html\") && e.getData(\"text/html\").includes(\"urn:schemas-microsoft-com:office:office\");\n  }(t);\n},\n    xr = function xr(t) {\n  var e = t.clipboardData;\n\n  if (e) {\n    return Array.from(e.types).filter(function (t) {\n      return t.match(/file/i);\n    }).length === e.types.length && e.files.length >= 1;\n  }\n},\n    Cr = function Cr(t) {\n  var e = t.clipboardData;\n  if (e) return e.types.includes(\"text/plain\") && 1 === e.types.length;\n},\n    Er = function Er(t) {\n  var e = [];\n  return t.altKey && e.push(\"alt\"), t.shiftKey && e.push(\"shift\"), e.push(t.key), e;\n},\n    Sr = function Sr(t) {\n  return {\n    x: t.clientX,\n    y: t.clientY\n  };\n},\n    Rr = \"[data-trix-attribute]\",\n    kr = \"[data-trix-action]\",\n    Tr = \"\".concat(Rr, \", \").concat(kr),\n    wr = \"[data-trix-dialog]\",\n    Lr = \"\".concat(wr, \"[data-trix-active]\"),\n    Dr = \"\".concat(wr, \" [data-trix-method]\"),\n    Nr = \"\".concat(wr, \" [data-trix-input]\"),\n    Ir = function Ir(t, e) {\n  return e || (e = Fr(t)), t.querySelector(\"[data-trix-input][name='\".concat(e, \"']\"));\n},\n    Or = function Or(t) {\n  return t.getAttribute(\"data-trix-action\");\n},\n    Fr = function Fr(t) {\n  return t.getAttribute(\"data-trix-attribute\") || t.getAttribute(\"data-trix-dialog-attribute\");\n};\n\nvar Pr = /*#__PURE__*/function (_q20) {\n  _inherits(Pr, _q20);\n\n  var _super40 = _createSuper(Pr);\n\n  function Pr(t) {\n    var _this70;\n\n    _classCallCheck(this, Pr);\n\n    _this70 = _super40.call(this, t), _this70.didClickActionButton = _this70.didClickActionButton.bind(_assertThisInitialized(_this70)), _this70.didClickAttributeButton = _this70.didClickAttributeButton.bind(_assertThisInitialized(_this70)), _this70.didClickDialogButton = _this70.didClickDialogButton.bind(_assertThisInitialized(_this70)), _this70.didKeyDownDialogInput = _this70.didKeyDownDialogInput.bind(_assertThisInitialized(_this70)), _this70.element = t, _this70.attributes = {}, _this70.actions = {}, _this70.resetDialogInputs(), b(\"mousedown\", {\n      onElement: _this70.element,\n      matchingSelector: kr,\n      withCallback: _this70.didClickActionButton\n    }), b(\"mousedown\", {\n      onElement: _this70.element,\n      matchingSelector: Rr,\n      withCallback: _this70.didClickAttributeButton\n    }), b(\"click\", {\n      onElement: _this70.element,\n      matchingSelector: Tr,\n      preventDefault: !0\n    }), b(\"click\", {\n      onElement: _this70.element,\n      matchingSelector: Dr,\n      withCallback: _this70.didClickDialogButton\n    }), b(\"keydown\", {\n      onElement: _this70.element,\n      matchingSelector: Nr,\n      withCallback: _this70.didKeyDownDialogInput\n    });\n    return _this70;\n  }\n\n  _createClass(Pr, [{\n    key: \"didClickActionButton\",\n    value: function didClickActionButton(t, e) {\n      var i;\n      null === (i = this.delegate) || void 0 === i || i.toolbarDidClickButton(), t.preventDefault();\n      var n = Or(e);\n      return this.getDialog(n) ? this.toggleDialog(n) : null === (r = this.delegate) || void 0 === r ? void 0 : r.toolbarDidInvokeAction(n, e);\n      var r;\n    }\n  }, {\n    key: \"didClickAttributeButton\",\n    value: function didClickAttributeButton(t, e) {\n      var i;\n      null === (i = this.delegate) || void 0 === i || i.toolbarDidClickButton(), t.preventDefault();\n      var n = Fr(e);\n      var r;\n      this.getDialog(n) ? this.toggleDialog(n) : null === (r = this.delegate) || void 0 === r || r.toolbarDidToggleAttribute(n);\n      return this.refreshAttributeButtons();\n    }\n  }, {\n    key: \"didClickDialogButton\",\n    value: function didClickDialogButton(t, e) {\n      var i = y(e, {\n        matchingSelector: wr\n      });\n      return this[e.getAttribute(\"data-trix-method\")].call(this, i);\n    }\n  }, {\n    key: \"didKeyDownDialogInput\",\n    value: function didKeyDownDialogInput(t, e) {\n      if (13 === t.keyCode) {\n        t.preventDefault();\n\n        var _i53 = e.getAttribute(\"name\"),\n            _n33 = this.getDialog(_i53);\n\n        this.setAttribute(_n33);\n      }\n\n      if (27 === t.keyCode) return t.preventDefault(), this.hideDialog();\n    }\n  }, {\n    key: \"updateActions\",\n    value: function updateActions(t) {\n      return this.actions = t, this.refreshActionButtons();\n    }\n  }, {\n    key: \"refreshActionButtons\",\n    value: function refreshActionButtons() {\n      var _this71 = this;\n\n      return this.eachActionButton(function (t, e) {\n        t.disabled = !1 === _this71.actions[e];\n      });\n    }\n  }, {\n    key: \"eachActionButton\",\n    value: function eachActionButton(t) {\n      return Array.from(this.element.querySelectorAll(kr)).map(function (e) {\n        return t(e, Or(e));\n      });\n    }\n  }, {\n    key: \"updateAttributes\",\n    value: function updateAttributes(t) {\n      return this.attributes = t, this.refreshAttributeButtons();\n    }\n  }, {\n    key: \"refreshAttributeButtons\",\n    value: function refreshAttributeButtons() {\n      var _this72 = this;\n\n      return this.eachAttributeButton(function (t, e) {\n        return t.disabled = !1 === _this72.attributes[e], _this72.attributes[e] || _this72.dialogIsVisible(e) ? (t.setAttribute(\"data-trix-active\", \"\"), t.classList.add(\"trix-active\")) : (t.removeAttribute(\"data-trix-active\"), t.classList.remove(\"trix-active\"));\n      });\n    }\n  }, {\n    key: \"eachAttributeButton\",\n    value: function eachAttributeButton(t) {\n      return Array.from(this.element.querySelectorAll(Rr)).map(function (e) {\n        return t(e, Fr(e));\n      });\n    }\n  }, {\n    key: \"applyKeyboardCommand\",\n    value: function applyKeyboardCommand(t) {\n      var e = JSON.stringify(t.sort());\n\n      for (var _i54 = 0, _Array$from22 = Array.from(this.element.querySelectorAll(\"[data-trix-key]\")); _i54 < _Array$from22.length; _i54++) {\n        var _t60 = _Array$from22[_i54];\n\n        var _i55 = _t60.getAttribute(\"data-trix-key\").split(\"+\");\n\n        if (JSON.stringify(_i55.sort()) === e) return v(\"mousedown\", {\n          onElement: _t60\n        }), !0;\n      }\n\n      return !1;\n    }\n  }, {\n    key: \"dialogIsVisible\",\n    value: function dialogIsVisible(t) {\n      var e = this.getDialog(t);\n      if (e) return e.hasAttribute(\"data-trix-active\");\n    }\n  }, {\n    key: \"toggleDialog\",\n    value: function toggleDialog(t) {\n      return this.dialogIsVisible(t) ? this.hideDialog() : this.showDialog(t);\n    }\n  }, {\n    key: \"showDialog\",\n    value: function showDialog(t) {\n      var e, i;\n      this.hideDialog(), null === (e = this.delegate) || void 0 === e || e.toolbarWillShowDialog();\n      var n = this.getDialog(t);\n      n.setAttribute(\"data-trix-active\", \"\"), n.classList.add(\"trix-active\"), Array.from(n.querySelectorAll(\"input[disabled]\")).forEach(function (t) {\n        t.removeAttribute(\"disabled\");\n      });\n      var r = Fr(n);\n\n      if (r) {\n        var _e55 = Ir(n, t);\n\n        _e55 && (_e55.value = this.attributes[r] || \"\", _e55.select());\n      }\n\n      return null === (i = this.delegate) || void 0 === i ? void 0 : i.toolbarDidShowDialog(t);\n    }\n  }, {\n    key: \"setAttribute\",\n    value: function setAttribute(t) {\n      var e;\n      var i = Fr(t),\n          n = Ir(t, i);\n      return !n.willValidate || (n.setCustomValidity(\"\"), n.checkValidity() && this.isSafeAttribute(n)) ? (null === (e = this.delegate) || void 0 === e || e.toolbarDidUpdateAttribute(i, n.value), this.hideDialog()) : (n.setCustomValidity(\"Invalid value\"), n.setAttribute(\"data-trix-validate\", \"\"), n.classList.add(\"trix-validate\"), n.focus());\n    }\n  }, {\n    key: \"isSafeAttribute\",\n    value: function isSafeAttribute(t) {\n      return !t.hasAttribute(\"data-trix-validate-href\") || si.isValidAttribute(\"a\", \"href\", t.value);\n    }\n  }, {\n    key: \"removeAttribute\",\n    value: function removeAttribute(t) {\n      var e;\n      var i = Fr(t);\n      return null === (e = this.delegate) || void 0 === e || e.toolbarDidRemoveAttribute(i), this.hideDialog();\n    }\n  }, {\n    key: \"hideDialog\",\n    value: function hideDialog() {\n      var t = this.element.querySelector(Lr);\n      var e;\n      if (t) return t.removeAttribute(\"data-trix-active\"), t.classList.remove(\"trix-active\"), this.resetDialogInputs(), null === (e = this.delegate) || void 0 === e ? void 0 : e.toolbarDidHideDialog(function (t) {\n        return t.getAttribute(\"data-trix-dialog\");\n      }(t));\n    }\n  }, {\n    key: \"resetDialogInputs\",\n    value: function resetDialogInputs() {\n      Array.from(this.element.querySelectorAll(Nr)).forEach(function (t) {\n        t.setAttribute(\"disabled\", \"disabled\"), t.removeAttribute(\"data-trix-validate\"), t.classList.remove(\"trix-validate\");\n      });\n    }\n  }, {\n    key: \"getDialog\",\n    value: function getDialog(t) {\n      return this.element.querySelector(\"[data-trix-dialog=\".concat(t, \"]\"));\n    }\n  }]);\n\n  return Pr;\n}(q);\n\nvar Mr = /*#__PURE__*/function (_Yn) {\n  _inherits(Mr, _Yn);\n\n  var _super41 = _createSuper(Mr);\n\n  function Mr(t) {\n    var _this73;\n\n    _classCallCheck(this, Mr);\n\n    var e = t.editorElement,\n        i = t.document,\n        n = t.html;\n    _this73 = _super41.apply(this, arguments), _this73.editorElement = e, _this73.selectionManager = new Wn(_this73.editorElement), _this73.selectionManager.delegate = _assertThisInitialized(_this73), _this73.composition = new kn(), _this73.composition.delegate = _assertThisInitialized(_this73), _this73.attachmentManager = new Sn(_this73.composition.getAttachments()), _this73.attachmentManager.delegate = _assertThisInitialized(_this73), _this73.inputController = 2 === _.getLevel() ? new br(_this73.editorElement) : new hr(_this73.editorElement), _this73.inputController.delegate = _assertThisInitialized(_this73), _this73.inputController.responder = _this73.composition, _this73.compositionController = new Gn(_this73.editorElement, _this73.composition), _this73.compositionController.delegate = _assertThisInitialized(_this73), _this73.toolbarController = new Pr(_this73.editorElement.toolbarElement), _this73.toolbarController.delegate = _assertThisInitialized(_this73), _this73.editor = new On(_this73.composition, _this73.selectionManager, _this73.editorElement), i ? _this73.editor.loadDocument(i) : _this73.editor.loadHTML(n);\n    return _this73;\n  }\n\n  _createClass(Mr, [{\n    key: \"registerSelectionManager\",\n    value: function registerSelectionManager() {\n      return Ft.registerSelectionManager(this.selectionManager);\n    }\n  }, {\n    key: \"unregisterSelectionManager\",\n    value: function unregisterSelectionManager() {\n      return Ft.unregisterSelectionManager(this.selectionManager);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return this.compositionController.render();\n    }\n  }, {\n    key: \"reparse\",\n    value: function reparse() {\n      return this.composition.replaceHTML(this.editorElement.innerHTML);\n    }\n  }, {\n    key: \"compositionDidChangeDocument\",\n    value: function compositionDidChangeDocument(t) {\n      if (this.notifyEditorElement(\"document-change\"), !this.handlingInput) return this.render();\n    }\n  }, {\n    key: \"compositionDidChangeCurrentAttributes\",\n    value: function compositionDidChangeCurrentAttributes(t) {\n      return this.currentAttributes = t, this.toolbarController.updateAttributes(this.currentAttributes), this.updateCurrentActions(), this.notifyEditorElement(\"attributes-change\", {\n        attributes: this.currentAttributes\n      });\n    }\n  }, {\n    key: \"compositionDidPerformInsertionAtRange\",\n    value: function compositionDidPerformInsertionAtRange(t) {\n      this.pasting && (this.pastedRange = t);\n    }\n  }, {\n    key: \"compositionShouldAcceptFile\",\n    value: function compositionShouldAcceptFile(t) {\n      return this.notifyEditorElement(\"file-accept\", {\n        file: t\n      });\n    }\n  }, {\n    key: \"compositionDidAddAttachment\",\n    value: function compositionDidAddAttachment(t) {\n      var e = this.attachmentManager.manageAttachment(t);\n      return this.notifyEditorElement(\"attachment-add\", {\n        attachment: e\n      });\n    }\n  }, {\n    key: \"compositionDidEditAttachment\",\n    value: function compositionDidEditAttachment(t) {\n      this.compositionController.rerenderViewForObject(t);\n      var e = this.attachmentManager.manageAttachment(t);\n      return this.notifyEditorElement(\"attachment-edit\", {\n        attachment: e\n      }), this.notifyEditorElement(\"change\");\n    }\n  }, {\n    key: \"compositionDidChangeAttachmentPreviewURL\",\n    value: function compositionDidChangeAttachmentPreviewURL(t) {\n      return this.compositionController.invalidateViewForObject(t), this.notifyEditorElement(\"change\");\n    }\n  }, {\n    key: \"compositionDidRemoveAttachment\",\n    value: function compositionDidRemoveAttachment(t) {\n      var e = this.attachmentManager.unmanageAttachment(t);\n      return this.notifyEditorElement(\"attachment-remove\", {\n        attachment: e\n      });\n    }\n  }, {\n    key: \"compositionDidStartEditingAttachment\",\n    value: function compositionDidStartEditingAttachment(t, e) {\n      return this.attachmentLocationRange = this.composition.document.getLocationRangeOfAttachment(t), this.compositionController.installAttachmentEditorForAttachment(t, e), this.selectionManager.setLocationRange(this.attachmentLocationRange);\n    }\n  }, {\n    key: \"compositionDidStopEditingAttachment\",\n    value: function compositionDidStopEditingAttachment(t) {\n      this.compositionController.uninstallAttachmentEditor(), this.attachmentLocationRange = null;\n    }\n  }, {\n    key: \"compositionDidRequestChangingSelectionToLocationRange\",\n    value: function compositionDidRequestChangingSelectionToLocationRange(t) {\n      if (!this.loadingSnapshot || this.isFocused()) return this.requestedLocationRange = t, this.compositionRevisionWhenLocationRangeRequested = this.composition.revision, this.handlingInput ? void 0 : this.render();\n    }\n  }, {\n    key: \"compositionWillLoadSnapshot\",\n    value: function compositionWillLoadSnapshot() {\n      this.loadingSnapshot = !0;\n    }\n  }, {\n    key: \"compositionDidLoadSnapshot\",\n    value: function compositionDidLoadSnapshot() {\n      this.compositionController.refreshViewCache(), this.render(), this.loadingSnapshot = !1;\n    }\n  }, {\n    key: \"getSelectionManager\",\n    value: function getSelectionManager() {\n      return this.selectionManager;\n    }\n  }, {\n    key: \"attachmentManagerDidRequestRemovalOfAttachment\",\n    value: function attachmentManagerDidRequestRemovalOfAttachment(t) {\n      return this.removeAttachment(t);\n    }\n  }, {\n    key: \"compositionControllerWillSyncDocumentView\",\n    value: function compositionControllerWillSyncDocumentView() {\n      return this.inputController.editorWillSyncDocumentView(), this.selectionManager.lock(), this.selectionManager.clearSelection();\n    }\n  }, {\n    key: \"compositionControllerDidSyncDocumentView\",\n    value: function compositionControllerDidSyncDocumentView() {\n      return this.inputController.editorDidSyncDocumentView(), this.selectionManager.unlock(), this.updateCurrentActions(), this.notifyEditorElement(\"sync\");\n    }\n  }, {\n    key: \"compositionControllerDidRender\",\n    value: function compositionControllerDidRender() {\n      this.requestedLocationRange && (this.compositionRevisionWhenLocationRangeRequested === this.composition.revision && this.selectionManager.setLocationRange(this.requestedLocationRange), this.requestedLocationRange = null, this.compositionRevisionWhenLocationRangeRequested = null), this.renderedCompositionRevision !== this.composition.revision && (this.runEditorFilters(), this.composition.updateCurrentAttributes(), this.notifyEditorElement(\"render\")), this.renderedCompositionRevision = this.composition.revision;\n    }\n  }, {\n    key: \"compositionControllerDidFocus\",\n    value: function compositionControllerDidFocus() {\n      return this.isFocusedInvisibly() && this.setLocationRange({\n        index: 0,\n        offset: 0\n      }), this.toolbarController.hideDialog(), this.notifyEditorElement(\"focus\");\n    }\n  }, {\n    key: \"compositionControllerDidBlur\",\n    value: function compositionControllerDidBlur() {\n      return this.notifyEditorElement(\"blur\");\n    }\n  }, {\n    key: \"compositionControllerDidSelectAttachment\",\n    value: function compositionControllerDidSelectAttachment(t, e) {\n      return this.toolbarController.hideDialog(), this.composition.editAttachment(t, e);\n    }\n  }, {\n    key: \"compositionControllerDidRequestDeselectingAttachment\",\n    value: function compositionControllerDidRequestDeselectingAttachment(t) {\n      var e = this.attachmentLocationRange || this.composition.document.getLocationRangeOfAttachment(t);\n      return this.selectionManager.setLocationRange(e[1]);\n    }\n  }, {\n    key: \"compositionControllerWillUpdateAttachment\",\n    value: function compositionControllerWillUpdateAttachment(t) {\n      return this.editor.recordUndoEntry(\"Edit Attachment\", {\n        context: t.id,\n        consolidatable: !0\n      });\n    }\n  }, {\n    key: \"compositionControllerDidRequestRemovalOfAttachment\",\n    value: function compositionControllerDidRequestRemovalOfAttachment(t) {\n      return this.removeAttachment(t);\n    }\n  }, {\n    key: \"inputControllerWillHandleInput\",\n    value: function inputControllerWillHandleInput() {\n      this.handlingInput = !0, this.requestedRender = !1;\n    }\n  }, {\n    key: \"inputControllerDidRequestRender\",\n    value: function inputControllerDidRequestRender() {\n      this.requestedRender = !0;\n    }\n  }, {\n    key: \"inputControllerDidHandleInput\",\n    value: function inputControllerDidHandleInput() {\n      if (this.handlingInput = !1, this.requestedRender) return this.requestedRender = !1, this.render();\n    }\n  }, {\n    key: \"inputControllerDidAllowUnhandledInput\",\n    value: function inputControllerDidAllowUnhandledInput() {\n      return this.notifyEditorElement(\"change\");\n    }\n  }, {\n    key: \"inputControllerDidRequestReparse\",\n    value: function inputControllerDidRequestReparse() {\n      return this.reparse();\n    }\n  }, {\n    key: \"inputControllerWillPerformTyping\",\n    value: function inputControllerWillPerformTyping() {\n      return this.recordTypingUndoEntry();\n    }\n  }, {\n    key: \"inputControllerWillPerformFormatting\",\n    value: function inputControllerWillPerformFormatting(t) {\n      return this.recordFormattingUndoEntry(t);\n    }\n  }, {\n    key: \"inputControllerWillCutText\",\n    value: function inputControllerWillCutText() {\n      return this.editor.recordUndoEntry(\"Cut\");\n    }\n  }, {\n    key: \"inputControllerWillPaste\",\n    value: function inputControllerWillPaste(t) {\n      return this.editor.recordUndoEntry(\"Paste\"), this.pasting = !0, this.notifyEditorElement(\"before-paste\", {\n        paste: t\n      });\n    }\n  }, {\n    key: \"inputControllerDidPaste\",\n    value: function inputControllerDidPaste(t) {\n      return t.range = this.pastedRange, this.pastedRange = null, this.pasting = null, this.notifyEditorElement(\"paste\", {\n        paste: t\n      });\n    }\n  }, {\n    key: \"inputControllerWillMoveText\",\n    value: function inputControllerWillMoveText() {\n      return this.editor.recordUndoEntry(\"Move\");\n    }\n  }, {\n    key: \"inputControllerWillAttachFiles\",\n    value: function inputControllerWillAttachFiles() {\n      return this.editor.recordUndoEntry(\"Drop Files\");\n    }\n  }, {\n    key: \"inputControllerWillPerformUndo\",\n    value: function inputControllerWillPerformUndo() {\n      return this.editor.undo();\n    }\n  }, {\n    key: \"inputControllerWillPerformRedo\",\n    value: function inputControllerWillPerformRedo() {\n      return this.editor.redo();\n    }\n  }, {\n    key: \"inputControllerDidReceiveKeyboardCommand\",\n    value: function inputControllerDidReceiveKeyboardCommand(t) {\n      return this.toolbarController.applyKeyboardCommand(t);\n    }\n  }, {\n    key: \"inputControllerDidStartDrag\",\n    value: function inputControllerDidStartDrag() {\n      this.locationRangeBeforeDrag = this.selectionManager.getLocationRange();\n    }\n  }, {\n    key: \"inputControllerDidReceiveDragOverPoint\",\n    value: function inputControllerDidReceiveDragOverPoint(t) {\n      return this.selectionManager.setLocationRangeFromPointRange(t);\n    }\n  }, {\n    key: \"inputControllerDidCancelDrag\",\n    value: function inputControllerDidCancelDrag() {\n      this.selectionManager.setLocationRange(this.locationRangeBeforeDrag), this.locationRangeBeforeDrag = null;\n    }\n  }, {\n    key: \"locationRangeDidChange\",\n    value: function locationRangeDidChange(t) {\n      return this.composition.updateCurrentAttributes(), this.updateCurrentActions(), this.attachmentLocationRange && !Dt(this.attachmentLocationRange, t) && this.composition.stopEditingAttachment(), this.notifyEditorElement(\"selection-change\");\n    }\n  }, {\n    key: \"toolbarDidClickButton\",\n    value: function toolbarDidClickButton() {\n      if (!this.getLocationRange()) return this.setLocationRange({\n        index: 0,\n        offset: 0\n      });\n    }\n  }, {\n    key: \"toolbarDidInvokeAction\",\n    value: function toolbarDidInvokeAction(t, e) {\n      return this.invokeAction(t, e);\n    }\n  }, {\n    key: \"toolbarDidToggleAttribute\",\n    value: function toolbarDidToggleAttribute(t) {\n      if (this.recordFormattingUndoEntry(t), this.composition.toggleCurrentAttribute(t), this.render(), !this.selectionFrozen) return this.editorElement.focus();\n    }\n  }, {\n    key: \"toolbarDidUpdateAttribute\",\n    value: function toolbarDidUpdateAttribute(t, e) {\n      if (this.recordFormattingUndoEntry(t), this.composition.setCurrentAttribute(t, e), this.render(), !this.selectionFrozen) return this.editorElement.focus();\n    }\n  }, {\n    key: \"toolbarDidRemoveAttribute\",\n    value: function toolbarDidRemoveAttribute(t) {\n      if (this.recordFormattingUndoEntry(t), this.composition.removeCurrentAttribute(t), this.render(), !this.selectionFrozen) return this.editorElement.focus();\n    }\n  }, {\n    key: \"toolbarWillShowDialog\",\n    value: function toolbarWillShowDialog(t) {\n      return this.composition.expandSelectionForEditing(), this.freezeSelection();\n    }\n  }, {\n    key: \"toolbarDidShowDialog\",\n    value: function toolbarDidShowDialog(t) {\n      return this.notifyEditorElement(\"toolbar-dialog-show\", {\n        dialogName: t\n      });\n    }\n  }, {\n    key: \"toolbarDidHideDialog\",\n    value: function toolbarDidHideDialog(t) {\n      return this.thawSelection(), this.editorElement.focus(), this.notifyEditorElement(\"toolbar-dialog-hide\", {\n        dialogName: t\n      });\n    }\n  }, {\n    key: \"freezeSelection\",\n    value: function freezeSelection() {\n      if (!this.selectionFrozen) return this.selectionManager.lock(), this.composition.freezeSelection(), this.selectionFrozen = !0, this.render();\n    }\n  }, {\n    key: \"thawSelection\",\n    value: function thawSelection() {\n      if (this.selectionFrozen) return this.composition.thawSelection(), this.selectionManager.unlock(), this.selectionFrozen = !1, this.render();\n    }\n  }, {\n    key: \"canInvokeAction\",\n    value: function canInvokeAction(t) {\n      return !!this.actionIsExternal(t) || !(null === (e = this.actions[t]) || void 0 === e || null === (e = e.test) || void 0 === e || !e.call(this));\n      var e;\n    }\n  }, {\n    key: \"invokeAction\",\n    value: function invokeAction(t, e) {\n      return this.actionIsExternal(t) ? this.notifyEditorElement(\"action-invoke\", {\n        actionName: t,\n        invokingElement: e\n      }) : null === (i = this.actions[t]) || void 0 === i || null === (i = i.perform) || void 0 === i ? void 0 : i.call(this);\n      var i;\n    }\n  }, {\n    key: \"actionIsExternal\",\n    value: function actionIsExternal(t) {\n      return /^x-./.test(t);\n    }\n  }, {\n    key: \"getCurrentActions\",\n    value: function getCurrentActions() {\n      var t = {};\n\n      for (var _e56 in this.actions) {\n        t[_e56] = this.canInvokeAction(_e56);\n      }\n\n      return t;\n    }\n  }, {\n    key: \"updateCurrentActions\",\n    value: function updateCurrentActions() {\n      var t = this.getCurrentActions();\n      if (!Tt(t, this.currentActions)) return this.currentActions = t, this.toolbarController.updateActions(this.currentActions), this.notifyEditorElement(\"actions-change\", {\n        actions: this.currentActions\n      });\n    }\n  }, {\n    key: \"runEditorFilters\",\n    value: function runEditorFilters() {\n      var _this74 = this;\n\n      var t = this.composition.getSnapshot();\n      if (Array.from(this.editor.filters).forEach(function (e) {\n        var _t61 = t,\n            i = _t61.document,\n            n = _t61.selectedRange;\n        t = e.call(_this74.editor, t) || {}, t.document || (t.document = i), t.selectedRange || (t.selectedRange = n);\n      }), e = t, i = this.composition.getSnapshot(), !Dt(e.selectedRange, i.selectedRange) || !e.document.isEqualTo(i.document)) return this.composition.loadSnapshot(t);\n      var e, i;\n    }\n  }, {\n    key: \"updateInputElement\",\n    value: function updateInputElement() {\n      var t = function (t, e) {\n        var i = xn[e];\n        if (i) return i(t);\n        throw new Error(\"unknown content type: \".concat(e));\n      }(this.compositionController.getSerializableElement(), \"text/html\");\n\n      return this.editorElement.setFormValue(t);\n    }\n  }, {\n    key: \"notifyEditorElement\",\n    value: function notifyEditorElement(t, e) {\n      switch (t) {\n        case \"document-change\":\n          this.documentChangedSinceLastRender = !0;\n          break;\n\n        case \"render\":\n          this.documentChangedSinceLastRender && (this.documentChangedSinceLastRender = !1, this.notifyEditorElement(\"change\"));\n          break;\n\n        case \"change\":\n        case \"attachment-add\":\n        case \"attachment-edit\":\n        case \"attachment-remove\":\n          this.updateInputElement();\n      }\n\n      return this.editorElement.notify(t, e);\n    }\n  }, {\n    key: \"removeAttachment\",\n    value: function removeAttachment(t) {\n      return this.editor.recordUndoEntry(\"Delete Attachment\"), this.composition.removeAttachment(t), this.render();\n    }\n  }, {\n    key: \"recordFormattingUndoEntry\",\n    value: function recordFormattingUndoEntry(t) {\n      var e = mt(t),\n          i = this.selectionManager.getLocationRange();\n      if (e || !Lt(i)) return this.editor.recordUndoEntry(\"Formatting\", {\n        context: this.getUndoContext(),\n        consolidatable: !0\n      });\n    }\n  }, {\n    key: \"recordTypingUndoEntry\",\n    value: function recordTypingUndoEntry() {\n      return this.editor.recordUndoEntry(\"Typing\", {\n        context: this.getUndoContext(this.currentAttributes),\n        consolidatable: !0\n      });\n    }\n  }, {\n    key: \"getUndoContext\",\n    value: function getUndoContext() {\n      for (var t = arguments.length, e = new Array(t), i = 0; i < t; i++) {\n        e[i] = arguments[i];\n      }\n\n      return [this.getLocationContext(), this.getTimeContext()].concat(_toConsumableArray(Array.from(e)));\n    }\n  }, {\n    key: \"getLocationContext\",\n    value: function getLocationContext() {\n      var t = this.selectionManager.getLocationRange();\n      return Lt(t) ? t[0].index : t;\n    }\n  }, {\n    key: \"getTimeContext\",\n    value: function getTimeContext() {\n      return V.interval > 0 ? Math.floor(new Date().getTime() / V.interval) : 0;\n    }\n  }, {\n    key: \"isFocused\",\n    value: function isFocused() {\n      var t;\n      return this.editorElement === (null === (t = this.editorElement.ownerDocument) || void 0 === t ? void 0 : t.activeElement);\n    }\n  }, {\n    key: \"isFocusedInvisibly\",\n    value: function isFocusedInvisibly() {\n      return this.isFocused() && !this.getLocationRange();\n    }\n  }, {\n    key: \"actions\",\n    get: function get() {\n      return this.constructor.actions;\n    }\n  }]);\n\n  return Mr;\n}(Yn);\n\nwi(Mr, \"actions\", {\n  undo: {\n    test: function test() {\n      return this.editor.canUndo();\n    },\n    perform: function perform() {\n      return this.editor.undo();\n    }\n  },\n  redo: {\n    test: function test() {\n      return this.editor.canRedo();\n    },\n    perform: function perform() {\n      return this.editor.redo();\n    }\n  },\n  link: {\n    test: function test() {\n      return this.editor.canActivateAttribute(\"href\");\n    }\n  },\n  increaseNestingLevel: {\n    test: function test() {\n      return this.editor.canIncreaseNestingLevel();\n    },\n    perform: function perform() {\n      return this.editor.increaseNestingLevel() && this.render();\n    }\n  },\n  decreaseNestingLevel: {\n    test: function test() {\n      return this.editor.canDecreaseNestingLevel();\n    },\n    perform: function perform() {\n      return this.editor.decreaseNestingLevel() && this.render();\n    }\n  },\n  attachFiles: {\n    test: function test() {\n      return !0;\n    },\n    perform: function perform() {\n      return _.pickFiles(this.editor.insertFiles);\n    }\n  }\n}), Mr.proxyMethod(\"getSelectionManager().setLocationRange\"), Mr.proxyMethod(\"getSelectionManager().getLocationRange\");\n\nvar Br = Object.freeze({\n  __proto__: null,\n  AttachmentEditorController: Kn,\n  CompositionController: Gn,\n  Controller: Yn,\n  EditorController: Mr,\n  InputController: sr,\n  Level0InputController: hr,\n  Level2InputController: br,\n  ToolbarController: Pr\n}),\n    _r = Object.freeze({\n  __proto__: null,\n  MutationObserver: Qn,\n  SelectionChangeObserver: Ot\n}),\n    jr = Object.freeze({\n  __proto__: null,\n  FileVerificationOperation: er,\n  ImagePreloadOperation: ji\n});\n\nvt(\"trix-toolbar\", \"%t {\\n  display: block;\\n}\\n\\n%t {\\n  white-space: nowrap;\\n}\\n\\n%t [data-trix-dialog] {\\n  display: none;\\n}\\n\\n%t [data-trix-dialog][data-trix-active] {\\n  display: block;\\n}\\n\\n%t [data-trix-dialog] [data-trix-validate]:invalid {\\n  background-color: #ffdddd;\\n}\");\n\nvar Wr = /*#__PURE__*/function (_HTMLElement) {\n  _inherits(Wr, _HTMLElement);\n\n  var _super42 = _createSuper(Wr);\n\n  function Wr() {\n    _classCallCheck(this, Wr);\n\n    return _super42.apply(this, arguments);\n  }\n\n  _createClass(Wr, [{\n    key: \"connectedCallback\",\n    value: function connectedCallback() {\n      \"\" === this.innerHTML && (this.innerHTML = U.getDefaultHTML());\n    }\n  }]);\n\n  return Wr;\n}( /*#__PURE__*/_wrapNativeSuper(HTMLElement));\n\nvar Ur = 0;\n\nvar Vr = function Vr(t) {\n  if (!t.hasAttribute(\"contenteditable\")) return t.setAttribute(\"contenteditable\", \"\"), function (t) {\n    var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n    return e.times = 1, b(t, e);\n  }(\"focus\", {\n    onElement: t,\n    withCallback: function withCallback() {\n      return zr(t);\n    }\n  });\n},\n    zr = function zr(t) {\n  return qr(t), Hr(t);\n},\n    qr = function qr(t) {\n  var e, i;\n  if (null !== (e = (i = document).queryCommandSupported) && void 0 !== e && e.call(i, \"enableObjectResizing\")) return document.execCommand(\"enableObjectResizing\", !1, !1), b(\"mscontrolselect\", {\n    onElement: t,\n    preventDefault: !0\n  });\n},\n    Hr = function Hr(t) {\n  var e, i;\n\n  if (null !== (e = (i = document).queryCommandSupported) && void 0 !== e && e.call(i, \"DefaultParagraphSeparator\")) {\n    var _t62 = n.default.tagName;\n    if ([\"div\", \"p\"].includes(_t62)) return document.execCommand(\"DefaultParagraphSeparator\", !1, _t62);\n  }\n},\n    Jr = a.forcesObjectResizing ? {\n  display: \"inline\",\n  width: \"auto\"\n} : {\n  display: \"inline-block\",\n  width: \"1px\"\n};\n\nvt(\"trix-editor\", \"%t {\\n    display: block;\\n}\\n\\n%t:empty::before {\\n    content: attr(placeholder);\\n    color: graytext;\\n    cursor: text;\\n    pointer-events: none;\\n    white-space: pre-line;\\n}\\n\\n%t a[contenteditable=false] {\\n    cursor: text;\\n}\\n\\n%t img {\\n    max-width: 100%;\\n    height: auto;\\n}\\n\\n%t \".concat(e, \" figcaption textarea {\\n    resize: none;\\n}\\n\\n%t \").concat(e, \" figcaption textarea.trix-autoresize-clone {\\n    position: absolute;\\n    left: -9999px;\\n    max-height: 0px;\\n}\\n\\n%t \").concat(e, \" figcaption[data-trix-placeholder]:empty::before {\\n    content: attr(data-trix-placeholder);\\n    color: graytext;\\n}\\n\\n%t [data-trix-cursor-target] {\\n    display: \").concat(Jr.display, \" !important;\\n    width: \").concat(Jr.width, \" !important;\\n    padding: 0 !important;\\n    margin: 0 !important;\\n    border: none !important;\\n}\\n\\n%t [data-trix-cursor-target=left] {\\n    vertical-align: top !important;\\n    margin-left: -1px !important;\\n}\\n\\n%t [data-trix-cursor-target=right] {\\n    vertical-align: bottom !important;\\n    margin-right: -1px !important;\\n}\"));\nvar Kr = new WeakMap(),\n    Gr = new WeakSet();\n\nvar Yr = /*#__PURE__*/function () {\n  function Yr(t) {\n    _classCallCheck(this, Yr);\n\n    var e, i;\n    Mi(e = this, i = Gr), i.add(e), Bi(this, Kr, {\n      writable: !0,\n      value: void 0\n    }), this.element = t, Ni(this, Kr, t.attachInternals());\n  }\n\n  _createClass(Yr, [{\n    key: \"connectedCallback\",\n    value: function connectedCallback() {\n      Pi(this, Gr, $r).call(this);\n    }\n  }, {\n    key: \"disconnectedCallback\",\n    value: function disconnectedCallback() {}\n  }, {\n    key: \"labels\",\n    get: function get() {\n      return Di(this, Kr).labels;\n    }\n  }, {\n    key: \"disabled\",\n    get: function get() {\n      var t;\n      return null === (t = this.element.inputElement) || void 0 === t ? void 0 : t.disabled;\n    },\n    set: function set(t) {\n      this.element.toggleAttribute(\"disabled\", t);\n    }\n  }, {\n    key: \"required\",\n    get: function get() {\n      return this.element.hasAttribute(\"required\");\n    },\n    set: function set(t) {\n      this.element.toggleAttribute(\"required\", t), Pi(this, Gr, $r).call(this);\n    }\n  }, {\n    key: \"validity\",\n    get: function get() {\n      return Di(this, Kr).validity;\n    }\n  }, {\n    key: \"validationMessage\",\n    get: function get() {\n      return Di(this, Kr).validationMessage;\n    }\n  }, {\n    key: \"willValidate\",\n    get: function get() {\n      return Di(this, Kr).willValidate;\n    }\n  }, {\n    key: \"setFormValue\",\n    value: function setFormValue(t) {\n      Pi(this, Gr, $r).call(this);\n    }\n  }, {\n    key: \"checkValidity\",\n    value: function checkValidity() {\n      return Di(this, Kr).checkValidity();\n    }\n  }, {\n    key: \"reportValidity\",\n    value: function reportValidity() {\n      return Di(this, Kr).reportValidity();\n    }\n  }, {\n    key: \"setCustomValidity\",\n    value: function setCustomValidity(t) {\n      Pi(this, Gr, $r).call(this, t);\n    }\n  }]);\n\n  return Yr;\n}();\n\nfunction $r() {\n  var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : \"\";\n  var _this$element = this.element,\n      e = _this$element.required,\n      i = _this$element.value,\n      n = e && !i,\n      r = !!t,\n      o = T(\"input\", {\n    required: e\n  }),\n      s = t || o.validationMessage;\n  Di(this, Kr).setValidity({\n    valueMissing: n,\n    customError: r\n  }, s);\n}\n\nvar Xr = new WeakMap(),\n    Zr = new WeakMap(),\n    Qr = new WeakMap();\n\nvar to = /*#__PURE__*/function () {\n  function to(t) {\n    var _this75 = this;\n\n    _classCallCheck(this, to);\n\n    Bi(this, Xr, {\n      writable: !0,\n      value: void 0\n    }), Bi(this, Zr, {\n      writable: !0,\n      value: function value(t) {\n        t.defaultPrevented || t.target === _this75.element.form && _this75.element.reset();\n      }\n    }), Bi(this, Qr, {\n      writable: !0,\n      value: function value(t) {\n        if (t.defaultPrevented) return;\n        if (_this75.element.contains(t.target)) return;\n        var e = y(t.target, {\n          matchingSelector: \"label\"\n        });\n        e && Array.from(_this75.labels).includes(e) && _this75.element.focus();\n      }\n    }), this.element = t;\n  }\n\n  _createClass(to, [{\n    key: \"connectedCallback\",\n    value: function connectedCallback() {\n      Ni(this, Xr, function (t) {\n        if (t.hasAttribute(\"aria-label\") || t.hasAttribute(\"aria-labelledby\")) return;\n\n        var e = function e() {\n          var e = Array.from(t.labels).map(function (e) {\n            if (!e.contains(t)) return e.textContent;\n          }).filter(function (t) {\n            return t;\n          }),\n              i = e.join(\" \");\n          return i ? t.setAttribute(\"aria-label\", i) : t.removeAttribute(\"aria-label\");\n        };\n\n        return e(), b(\"focus\", {\n          onElement: t,\n          withCallback: e\n        });\n      }(this.element)), window.addEventListener(\"reset\", Di(this, Zr), !1), window.addEventListener(\"click\", Di(this, Qr), !1);\n    }\n  }, {\n    key: \"disconnectedCallback\",\n    value: function disconnectedCallback() {\n      var t;\n      null === (t = Di(this, Xr)) || void 0 === t || t.destroy(), window.removeEventListener(\"reset\", Di(this, Zr), !1), window.removeEventListener(\"click\", Di(this, Qr), !1);\n    }\n  }, {\n    key: \"labels\",\n    get: function get() {\n      var t = [];\n      this.element.id && this.element.ownerDocument && t.push.apply(t, _toConsumableArray(Array.from(this.element.ownerDocument.querySelectorAll(\"label[for='\".concat(this.element.id, \"']\")) || [])));\n      var e = y(this.element, {\n        matchingSelector: \"label\"\n      });\n      return e && [this.element, null].includes(e.control) && t.push(e), t;\n    }\n  }, {\n    key: \"disabled\",\n    get: function get() {\n      return console.warn(\"This browser does not support the [disabled] attribute for trix-editor elements.\"), !1;\n    },\n    set: function set(t) {\n      console.warn(\"This browser does not support the [disabled] attribute for trix-editor elements.\");\n    }\n  }, {\n    key: \"required\",\n    get: function get() {\n      return console.warn(\"This browser does not support the [required] attribute for trix-editor elements.\"), !1;\n    },\n    set: function set(t) {\n      console.warn(\"This browser does not support the [required] attribute for trix-editor elements.\");\n    }\n  }, {\n    key: \"validity\",\n    get: function get() {\n      return console.warn(\"This browser does not support the validity property for trix-editor elements.\"), null;\n    }\n  }, {\n    key: \"validationMessage\",\n    get: function get() {\n      return console.warn(\"This browser does not support the validationMessage property for trix-editor elements.\"), \"\";\n    }\n  }, {\n    key: \"willValidate\",\n    get: function get() {\n      return console.warn(\"This browser does not support the willValidate property for trix-editor elements.\"), !1;\n    }\n  }, {\n    key: \"setFormValue\",\n    value: function setFormValue(t) {}\n  }, {\n    key: \"checkValidity\",\n    value: function checkValidity() {\n      return console.warn(\"This browser does not support checkValidity() for trix-editor elements.\"), !0;\n    }\n  }, {\n    key: \"reportValidity\",\n    value: function reportValidity() {\n      return console.warn(\"This browser does not support reportValidity() for trix-editor elements.\"), !0;\n    }\n  }, {\n    key: \"setCustomValidity\",\n    value: function setCustomValidity(t) {\n      console.warn(\"This browser does not support setCustomValidity(validationMessage) for trix-editor elements.\");\n    }\n  }]);\n\n  return to;\n}();\n\nvar eo = new WeakMap();\n\nvar io = /*#__PURE__*/function (_HTMLElement2) {\n  _inherits(io, _HTMLElement2);\n\n  var _super43 = _createSuper(io);\n\n  function io() {\n    var _this76;\n\n    _classCallCheck(this, io);\n\n    _this76 = _super43.call(this), Bi(_assertThisInitialized(_this76), eo, {\n      writable: !0,\n      value: void 0\n    }), Ni(_assertThisInitialized(_this76), eo, _this76.constructor.formAssociated ? new Yr(_assertThisInitialized(_this76)) : new to(_assertThisInitialized(_this76)));\n    return _this76;\n  }\n\n  _createClass(io, [{\n    key: \"trixId\",\n    get: function get() {\n      return this.hasAttribute(\"trix-id\") ? this.getAttribute(\"trix-id\") : (this.setAttribute(\"trix-id\", ++Ur), this.trixId);\n    }\n  }, {\n    key: \"labels\",\n    get: function get() {\n      return Di(this, eo).labels;\n    }\n  }, {\n    key: \"disabled\",\n    get: function get() {\n      return Di(this, eo).disabled;\n    },\n    set: function set(t) {\n      Di(this, eo).disabled = t;\n    }\n  }, {\n    key: \"required\",\n    get: function get() {\n      return Di(this, eo).required;\n    },\n    set: function set(t) {\n      Di(this, eo).required = t;\n    }\n  }, {\n    key: \"validity\",\n    get: function get() {\n      return Di(this, eo).validity;\n    }\n  }, {\n    key: \"validationMessage\",\n    get: function get() {\n      return Di(this, eo).validationMessage;\n    }\n  }, {\n    key: \"willValidate\",\n    get: function get() {\n      return Di(this, eo).willValidate;\n    }\n  }, {\n    key: \"type\",\n    get: function get() {\n      return this.localName;\n    }\n  }, {\n    key: \"toolbarElement\",\n    get: function get() {\n      var t;\n      if (this.hasAttribute(\"toolbar\")) return null === (t = this.ownerDocument) || void 0 === t ? void 0 : t.getElementById(this.getAttribute(\"toolbar\"));\n\n      if (this.parentNode) {\n        var _t63 = \"trix-toolbar-\".concat(this.trixId);\n\n        this.setAttribute(\"toolbar\", _t63);\n\n        var _e57 = T(\"trix-toolbar\", {\n          id: _t63\n        });\n\n        return this.parentNode.insertBefore(_e57, this), _e57;\n      }\n    }\n  }, {\n    key: \"form\",\n    get: function get() {\n      var t;\n      return null === (t = this.inputElement) || void 0 === t ? void 0 : t.form;\n    }\n  }, {\n    key: \"inputElement\",\n    get: function get() {\n      var t;\n      if (this.hasAttribute(\"input\")) return null === (t = this.ownerDocument) || void 0 === t ? void 0 : t.getElementById(this.getAttribute(\"input\"));\n\n      if (this.parentNode) {\n        var _t64 = \"trix-input-\".concat(this.trixId);\n\n        this.setAttribute(\"input\", _t64);\n\n        var _e58 = T(\"input\", {\n          type: \"hidden\",\n          id: _t64\n        });\n\n        return this.parentNode.insertBefore(_e58, this.nextElementSibling), _e58;\n      }\n    }\n  }, {\n    key: \"editor\",\n    get: function get() {\n      var t;\n      return null === (t = this.editorController) || void 0 === t ? void 0 : t.editor;\n    }\n  }, {\n    key: \"name\",\n    get: function get() {\n      var t;\n      return null === (t = this.inputElement) || void 0 === t ? void 0 : t.name;\n    }\n  }, {\n    key: \"value\",\n    get: function get() {\n      var t;\n      return null === (t = this.inputElement) || void 0 === t ? void 0 : t.value;\n    },\n    set: function set(t) {\n      var e;\n      this.defaultValue = t, null === (e = this.editor) || void 0 === e || e.loadHTML(this.defaultValue);\n    }\n  }, {\n    key: \"notify\",\n    value: function notify(t, e) {\n      if (this.editorController) return v(\"trix-\".concat(t), {\n        onElement: this,\n        attributes: e\n      });\n    }\n  }, {\n    key: \"setFormValue\",\n    value: function setFormValue(t) {\n      this.inputElement && (this.inputElement.value = t, Di(this, eo).setFormValue(t));\n    }\n  }, {\n    key: \"connectedCallback\",\n    value: function connectedCallback() {\n      var _this77 = this;\n\n      this.hasAttribute(\"data-trix-internal\") || (Vr(this), function (t) {\n        if (!t.hasAttribute(\"role\")) t.setAttribute(\"role\", \"textbox\");\n      }(this), this.editorController || (v(\"trix-before-initialize\", {\n        onElement: this\n      }), this.editorController = new Mr({\n        editorElement: this,\n        html: this.defaultValue = this.value\n      }), requestAnimationFrame(function () {\n        return v(\"trix-initialize\", {\n          onElement: _this77\n        });\n      })), this.editorController.registerSelectionManager(), Di(this, eo).connectedCallback(), function (t) {\n        if (!document.querySelector(\":focus\") && t.hasAttribute(\"autofocus\") && document.querySelector(\"[autofocus]\") === t) t.focus();\n      }(this));\n    }\n  }, {\n    key: \"disconnectedCallback\",\n    value: function disconnectedCallback() {\n      var t;\n      null === (t = this.editorController) || void 0 === t || t.unregisterSelectionManager(), Di(this, eo).disconnectedCallback();\n    }\n  }, {\n    key: \"checkValidity\",\n    value: function checkValidity() {\n      return Di(this, eo).checkValidity();\n    }\n  }, {\n    key: \"reportValidity\",\n    value: function reportValidity() {\n      return Di(this, eo).reportValidity();\n    }\n  }, {\n    key: \"setCustomValidity\",\n    value: function setCustomValidity(t) {\n      Di(this, eo).setCustomValidity(t);\n    }\n  }, {\n    key: \"formDisabledCallback\",\n    value: function formDisabledCallback(t) {\n      this.inputElement && (this.inputElement.disabled = t), this.toggleAttribute(\"contenteditable\", !t);\n    }\n  }, {\n    key: \"formResetCallback\",\n    value: function formResetCallback() {\n      this.reset();\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      this.value = this.defaultValue;\n    }\n  }]);\n\n  return io;\n}( /*#__PURE__*/_wrapNativeSuper(HTMLElement));\n\nwi(io, \"formAssociated\", \"ElementInternals\" in window);\nvar no = {\n  VERSION: t,\n  config: z,\n  core: Cn,\n  models: Un,\n  views: Vn,\n  controllers: Br,\n  observers: _r,\n  operations: jr,\n  elements: Object.freeze({\n    __proto__: null,\n    TrixEditorElement: io,\n    TrixToolbarElement: Wr\n  }),\n  filters: Object.freeze({\n    __proto__: null,\n    Filter: Dn,\n    attachmentGalleryFilter: Nn\n  })\n};\nObject.assign(no, Un), window.Trix = no, setTimeout(function () {\n  customElements.get(\"trix-toolbar\") || customElements.define(\"trix-toolbar\", Wr), customElements.get(\"trix-editor\") || customElements.define(\"trix-editor\", io);\n}, 0);\nexport { no as default };","/* eslint-disable no-param-reassign */\nimport autocomplete from 'autocompleter';\nimport axios from 'axios';\nimport Turbolinks from 'turbolinks';\n\nconst performSearch = (query, update, labelAttr = 'name', path = '/api/v2/search') => {\n  const q = encodeURIComponent(query);\n  axios.get(`${path}?q=${q}`).then((response) => {\n    const suggestions = response.data.map((result) => {\n      // If the resource is serialized in the api, it may have\n      // and attributes top level. Hacky way to get around that as long\n      // as title or name are used for the label\n      if (labelAttr === 'attributes') {\n        const label = result[labelAttr].title ? result[labelAttr].title : result[labelAttr].name;\n        return { label, value: result.attributes.id };\n      }\n\n      return { label: result[labelAttr], value: result.id };\n    });\n    update(suggestions);\n  });\n};\n\nconst options = (opts) => (\n  {\n    input: opts.input,\n    minLength: 2,\n    disableAutoSelect: true,\n    preventSubmit: opts.preventSubmit,\n    emptyMsg: 'Nothing found with that search term',\n    fetch: (query, update) => { performSearch(query, update, opts.label, opts.path); },\n    onSelect(item, input) {\n      opts.input.value = item.label;\n      if (opts.onSelectPath) {\n        const url = opts.onSelectPath.replace('___ID___', item.value);\n        Turbolinks.visit(url);\n      } else input.form.submit();\n    },\n    debounceWaitMs: 200,\n  }\n);\n\ndocument.addEventListener('turbolinks:load', () => {\n  const autocompleteFields = [...document.querySelectorAll('.autocomplete-input')];\n  autocompleteFields.forEach((input) => {\n    // onSelectPath should be a window redirect when the item is selected\n    const {\n      label, path, type, onSelectPath,\n    } = input.dataset;\n    const opts = options({\n      input, label, path, type, onSelectPath, preventSubmit: onSelectPath,\n    });\n    if (type) opts.emptyMsg = `No ${type} found with that search term`;\n    autocomplete(opts);\n  });\n});\n","import Combobox from '@ambiki/combobox';\nimport { visible, cancel, enabled } from '../helpers/dom-helper';\nimport { nextFrame } from '../helpers/timing';\n\nexport default class CommandPaletteElement extends HTMLElement {\n  /**\n   * @example\n   * Key is keyboard token. Value is scope id.\n   * { \"@\": \"users\", \"alist:\": \"visual-schedules\", \"goal:\": \"goals\" }\n   */\n  keyMappings = {};\n\n  async connectedCallback() {\n    this.input = this.querySelector('input');\n    this.list = this.querySelector('command-palette-stack');\n\n    if (!(this.input instanceof HTMLInputElement) || !this.list) return;\n\n    // Registering before `input` addEventListener\n    this.registerKeyMappings();\n\n    this.combobox = new Combobox(this.input, this.list);\n    this.list.setAttribute('role', 'presentation');\n\n    this.onKeydown = this.onKeydown.bind(this);\n    this.onInput = this.onInput.bind(this);\n    this.startLoading = this.startLoading.bind(this);\n    this.stopLoading = this.stopLoading.bind(this);\n\n    this.input.addEventListener('keydown', this.onKeydown);\n    this.input.addEventListener('input', this.onInput);\n    this.addEventListener('command-palette-group:loadstart', this.startLoading);\n    this.addEventListener('command-palette-group:loadend', this.stopLoading);\n\n    await nextFrame();\n    this.initializePalette();\n\n    this.details = this.closest('details');\n    if (!this.details) return;\n\n    this.onToggle = this.onToggle.bind(this);\n    this.details.addEventListener('toggle', this.onToggle);\n  }\n\n  disconnectedCallback() {\n    this.destroyPalette();\n\n    this.removeEventListener('command-palette-group:loadstart', this.startLoading);\n    this.removeEventListener('command-palette-group:loadend', this.stopLoading);\n    this.input.removeEventListener('keydown', this.onKeydown);\n    this.input.removeEventListener('input', this.onInput);\n    this.details.removeEventListener('toggle', this.onToggle);\n  }\n\n  static get observedAttributes() {\n    return ['data-active-group'];\n  }\n\n  async attributeChangedCallback(name, oldValue, newValue) {\n    if (oldValue === newValue) return;\n\n    switch (name) {\n      case 'data-active-group': {\n        const parsedNewValue = JSON.parse(newValue);\n        if (parsedNewValue) {\n          this.input.value = '';\n          this.groups.forEach(filterGroup('', { scopeId: parsedNewValue.id })); // After we set the scope, groups can start fetching results from the API\n        } else {\n          this.groups.forEach(filterGroup('', { scopeId: null })); // Reset filtered items and groups when a scope is removed\n        }\n\n        await nextFrame();\n        this.combobox.setActive(this.activableItems[0]);\n        break;\n      }\n      default:\n        break;\n    }\n  }\n\n  onToggle() {\n    if (this.details.hasAttribute('open')) {\n      this.initializePalette();\n    } else {\n      this.destroyPalette();\n    }\n  }\n\n  /**\n   * Clean up all things here\n   */\n  destroyPalette() {\n    this.combobox.stop();\n    this.input.value = '';\n    removeScope(this);\n    this.removeAttribute('data-active-group');\n    this.header?.removeAttribute('loading');\n    this.items.forEach((item) => item.setAttribute('aria-selected', 'false'));\n  }\n\n  onKeydown(event) {\n    switch (event.key) {\n      case 'Enter':\n        if (commit(this)) {\n          cancel(event);\n        }\n        break;\n      case 'Tab':\n        if (updateScope(this)) {\n          cancel(event);\n        }\n        break;\n      case 'Backspace':\n        if (removeScope(this)) {\n          cancel(event);\n        }\n        break;\n      default:\n        break;\n    }\n  }\n\n  onInput() {\n    const query = this.input.value.trim();\n    const targetGroupId = this.keyMappings[query.toLowerCase()] || '';\n    const item = this.querySelector(`[data-target-group-id=\"${targetGroupId}\"]`);\n    if (item && updateScopeFromItem(item, this)) return;\n\n    const activeGroup = this.getAttribute('data-active-group');\n    const parsedActiveGroup = JSON.parse(activeGroup);\n\n    this.groups.forEach(filterGroup(query, { scopeId: parsedActiveGroup?.id }));\n    this.combobox.setActive(this.activableItems[0]);\n  }\n\n  startLoading() {\n    this.header?.setAttribute('loading', '');\n  }\n\n  stopLoading() {\n    this.combobox.setActive(this.activableItems[0]); // Activate first option after fetching from API\n    this.header?.removeAttribute('loading', '');\n  }\n\n  registerKeyMappings() {\n    this.items\n      .filter((item) => item.hasAttribute('data-trigger-keys'))\n      .forEach((mapping) => {\n        const { triggerKeys, targetGroupId } = mapping.dataset;\n        const parsedTriggerKeys = JSON.parse(triggerKeys);\n        if (!Array.isArray(parsedTriggerKeys)) {\n          throw new Error('data-trigger-keys should be an array');\n        }\n\n        parsedTriggerKeys.forEach((key) => {\n          if (this.keyMappings[key]) throw new Error(`Duplicate key detected: ${key}`);\n          this.keyMappings[key.toLowerCase()] = targetGroupId;\n        });\n      });\n  }\n\n  initializePalette() {\n    this.groups.forEach(filterGroup('', { scopeId: null }));\n    this.combobox.start();\n    this.combobox.setActive(this.activableItems[0]);\n    const autofocus = this.querySelector('[autofocus]');\n    autofocus?.focus();\n  }\n\n  get groups() {\n    return Array.from(this.querySelectorAll('command-palette-group'));\n  }\n\n  get header() {\n    return this.querySelector('command-palette-header');\n  }\n\n  get items() {\n    return Array.from(this.querySelectorAll('command-palette-item'));\n  }\n\n  get activableItems() {\n    return this.items.filter(activable);\n  }\n}\n\nfunction commit(palette) {\n  const item = palette.querySelector('[data-tracking]');\n  if (!item) return false;\n  if (item.getAttribute('aria-disabled') === 'true') return false;\n\n  const anchor = item.firstElementChild;\n  if (!anchor) return false;\n\n  // When `href` is `#`, we just want to open the nested links, if any on Enter\n  const href = anchor.getAttribute('href');\n  if (href === '#') {\n    updateScope(palette);\n  } else {\n    anchor.click();\n  }\n  return true;\n}\n\nfunction updateScope(palette) {\n  const item = palette.querySelector('[data-tracking]');\n  return updateScopeFromItem(item, palette);\n}\n\nfunction updateScopeFromItem(item, palette) {\n  if (!(item instanceof HTMLElement)) return false;\n  if (item.getAttribute('aria-disabled') === 'true') return false;\n\n  const groupId = item.getAttribute('data-target-group-id');\n  const groupTitle = item.getAttribute('data-target-group-name');\n  if (!groupId || !groupTitle) return false;\n\n  // Check if group is already active\n  const activeGroup = JSON.parse(palette.getAttribute('data-active-group'));\n  if (activeGroup?.id === groupId) return false;\n\n  const targetGroup = palette.querySelector(`[data-group-id=\"${groupId}\"]`);\n  if (!targetGroup) return false;\n\n  const header = palette.querySelector('command-palette-header');\n  const stack = palette.querySelector('command-palette-stack');\n  if (!header || !stack) return false;\n\n  // Inform other elements about the active group\n  const stringifiedObject = JSON.stringify({ id: groupId, title: groupTitle });\n  palette.setAttribute('data-active-group', stringifiedObject);\n  header.dispatchEvent(new CustomEvent('command-palette:scopeUpdated', { detail: stringifiedObject }));\n  stack.dispatchEvent(new CustomEvent('command-palette:scopeUpdated', { detail: stringifiedObject }));\n\n  return item;\n}\n\nfunction removeScope(palette) {\n  const header = palette.querySelector('command-palette-header');\n  const stack = palette.querySelector('command-palette-stack');\n  if (!header || !stack) return false;\n\n  // Only remove if we have an active group and the input's length is 0\n  if (palette.hasAttribute('data-active-group') && !palette.input.value.length) {\n    palette.removeAttribute('data-active-group');\n    header.dispatchEvent(new CustomEvent('command-palette:scopeRemoved'));\n    stack.dispatchEvent(new CustomEvent('command-palette:scopeRemoved'));\n    return true;\n  }\n\n  return false;\n}\n\nfunction filterGroup(query, { scopeId }) {\n  return (group) => {\n    group.dispatchEvent(new CustomEvent('command-palette:change', { detail: { query, scopeId } }));\n  };\n}\n\nfunction activable(item) {\n  return visible(item) && enabled(item);\n}\n","import axios from 'axios';\nimport debounce from 'lodash.debounce';\nimport { brandedId } from '../../helpers/random-id';\n\nexport default class CommandPaletteGroupElement extends HTMLElement {\n  connectedCallback() {\n    if (!this.hasAttribute('data-group-id')) {\n      this.setAttribute('data-group-id', brandedId());\n    }\n\n    // Set `role` and label with the existing group title\n    this.setAttribute('role', 'listbox');\n    const title = this.querySelector('[data-group-title]');\n    if (title) {\n      const titleId = brandedId();\n      title.id = titleId;\n      this.setAttribute('aria-labelledby', titleId);\n    }\n\n    this.onChange = this.onChange.bind(this);\n    this.fetchResults = debounce(this.fetchResults.bind(this), 300);\n\n    this.addEventListener('command-palette:change', this.onChange);\n  }\n\n  disconnectedCallback() {\n    this.removeEventListener('command-palette:change', this.onChange);\n  }\n\n  onChange(event) {\n    const { query, scopeId } = event.detail;\n\n    if (scopeId) {\n      if (!isGroupActive(this, scopeId)) return;\n      // if there is a src get remote items\n      // else filter within the scope here\n      if (this.src) {\n        this.initializeFetch(this.src, query);\n      } else {\n        this.groupItems(scopeId).forEach(filterItems(query, { matching: 'data-search-term', scopeId }));\n      }\n    } else if (!this.src) {\n      // filter all except the src\n      this.items.forEach(filterItems(query, { matching: 'data-search-term' }));\n    }\n  }\n\n  initializeFetch(src, query) {\n    this.startLoading();\n    this.fetchResults(src, query);\n  }\n\n  async fetchResults(src, query) {\n    try {\n      const { data } = await axios.get(src, {\n        headers: { accept: 'text/fragment+html' },\n        params: { q: query },\n      });\n\n      // Since this function is debounced, we cannot be sure that we'll always get fresh scoped data from the\n      // arguments, hence we need to make a fresh search of the attributes;\n      if ((!query && !this.palette.hasAttribute('data-active-group')) || !isGroupActive(this, this.activeGroup?.id)) {\n        this.hidden = true;\n        return;\n      }\n\n      this.innerHTML = data;\n      this.hidden = !data; // Hide group if data is empty\n    } catch (error) {\n      this.innerHTML = renderErrorTemplate();\n    } finally {\n      this.stopLoading();\n    }\n  }\n\n  startLoading() {\n    this.palette?.dispatchEvent(\n      new CustomEvent('command-palette-group:loadstart', { detail: { relatedTarget: this } })\n    );\n  }\n\n  stopLoading() {\n    this.palette?.dispatchEvent(new CustomEvent('command-palette-group:loadend', { detail: { relatedTarget: this } }));\n  }\n\n  groupItems(groupId) {\n    if (!groupId || !isGroupActive(this, groupId)) return [];\n\n    return this.items;\n  }\n\n  get src() {\n    return this.getAttribute('src');\n  }\n\n  get items() {\n    return Array.from(this.querySelectorAll('command-palette-item'));\n  }\n\n  get palette() {\n    return this.closest('command-palette');\n  }\n\n  get activeGroup() {\n    return JSON.parse(this.palette.getAttribute('data-active-group'));\n  }\n}\n\nfunction filterItems(query, { matching, scopeId = null }) {\n  return (target) => {\n    const group = target.closest('command-palette-group');\n    if (!(group instanceof HTMLElement)) return;\n\n    if (query) {\n      const value = target.getAttribute(matching) || target.textContent;\n      const match = value?.toLowerCase().includes(query.toLowerCase());\n      target.hidden = !match;\n\n      const allItems = Array.from(group.querySelectorAll('command-palette-item'));\n      group.hidden = allItems.every((item) => item.hidden);\n    } else {\n      target.hidden = false;\n      if (scopeId) {\n        group.hidden = !isGroupActive(group, scopeId); // Hide all except the active group\n      } else {\n        group.hidden = !group.hasAttribute('data-cp-homepage'); // Hide all except the homepage\n      }\n    }\n  };\n}\n\nfunction isGroupActive(group, id) {\n  return group.getAttribute('data-group-id') === id;\n}\n\nfunction renderErrorTemplate() {\n  return `\n    <div class=\"card text-center border-0 shadow-none mx-auto w-75\">\n      <div class=\"card-body\">\n        <h3 class=\"card-title text-danger\">An error occurred.</h3>\n        <p class=\"card-text text-danger\">We can't process your data right now. Please try again later.</p>\n      </div>\n    </div>\n  `;\n}\n","import { isEmpty } from '../../helpers/metal';\n\nexport default class CommandPaletteElement extends HTMLElement {\n  connectedCallback() {\n    this.addScope = this.addScope.bind(this);\n    this.removeScope = this.removeScope.bind(this);\n\n    this.addEventListener('command-palette:scopeUpdated', this.addScope);\n    this.addEventListener('command-palette:scopeRemoved', this.removeScope);\n  }\n\n  disconnectedCallback() {\n    this.removeEventListener('command-palette:scopeUpdated', this.addScope);\n    this.removeEventListener('command-palette:scopeRemoved', this.removeScope);\n  }\n\n  addScope(event) {\n    const object = JSON.parse(event.detail);\n    if (isEmpty(object)) return;\n\n    const { id, title } = object;\n    if (!(this.container instanceof HTMLElement)) return;\n\n    const template = `\n      <div data-group-id=\"${id}\" class=\"d-inline-flex align-items-center\">\n        <span class=\"d-block text-truncate\" style=\"max-width: 100px;\">${title}</span>\n        <span>&nbsp;/&nbsp;&nbsp;</span>\n      </div>\n    `;\n\n    this.container.innerHTML = template;\n  }\n\n  removeScope() {\n    if (!(this.container instanceof HTMLElement)) return;\n\n    this.container.innerHTML = '';\n  }\n\n  get container() {\n    return this.querySelector('[data-scopes]');\n  }\n}\n","export default class CommandPaletteItemElement extends HTMLElement {\n  connectedCallback() {\n    this.setAttribute('role', 'option');\n\n    this.item = this.firstElementChild;\n    if (!this.item) return;\n\n    this.item.setAttribute('tabindex', '-1');\n  }\n}\n","import tinykeys from 'tinykeys';\nimport { cancel, focusable } from '../helpers/dom-helper';\n\nexport default class DetailsDialogElement extends HTMLElement {\n  connectedCallback() {\n    this.details = this.closest('details');\n    if (!this.details) return;\n\n    this.setAttribute('role', 'dialog');\n    this.setAttribute('aria-modal', 'true');\n\n    this.details.addEventListener('toggle', onToggle);\n    this.details.addEventListener('keydown', onKeydown);\n    this.details.addEventListener('click', onClick);\n    this.registerActivationHotkey();\n\n    const summary = this.details.querySelector('summary');\n    if (summary) {\n      if (!summary.hasAttribute('role')) summary.setAttribute('role', 'button');\n    }\n  }\n\n  disconnectedCallback() {\n    close(this.details);\n\n    if (this.details) {\n      this.details.removeEventListener('toggle', onToggle);\n      this.details.removeEventListener('keydown', onKeydown);\n      this.details.removeEventListener('click', onClick);\n    }\n  }\n\n  registerActivationHotkey() {\n    const hotkey = this.getAttribute('data-activation-hotkey');\n    if (!hotkey) return;\n\n    tinykeys(window, {\n      [hotkey]: (event) => {\n        cancel(event);\n\n        if (this.details.hasAttribute('open')) {\n          close(this.details);\n        } else {\n          open(this.details);\n        }\n      },\n    });\n  }\n}\n\nfunction onToggle(event) {\n  const details = event.currentTarget;\n\n  if (details.hasAttribute('open')) {\n    details.dispatchEvent(new CustomEvent('details-dialog:open', { bubbles: true }));\n    open(details);\n  } else {\n    close(details);\n    details.dispatchEvent(new CustomEvent('details-dialog:close', { bubbles: true }));\n  }\n}\n\nfunction onKeydown(event) {\n  const details = event.currentTarget;\n  if (event.key === 'Escape') {\n    close(details);\n    cancel(event);\n  }\n}\n\nfunction onClick(event) {\n  const { target } = event;\n  if (!(target instanceof HTMLElement)) return;\n\n  const details = target.closest('details');\n  if (!details) return;\n\n  if (target.closest('[data-dialog-close]')) {\n    close(details);\n  }\n}\n\nfunction open(details) {\n  const dialog = details.querySelector('details-dialog');\n\n  details.setAttribute('open', '');\n  if (dialog) {\n    dialog.addEventListener('submit', checkFormSubmission);\n    dialog.addEventListener('keydown', interceptTabbing);\n    focusFirstElement(dialog);\n  }\n}\n\nfunction close(details) {\n  details.removeAttribute('open');\n  const dialog = details.querySelector('details-dialog');\n\n  if (dialog) {\n    dialog.removeEventListener('submit', checkFormSubmission);\n    dialog.removeEventListener('keydown', interceptTabbing);\n    dialog.removeAttribute('tabindex');\n  }\n\n  const summary = details.querySelector('summary');\n  if (summary && summary.getAttribute('role') !== 'none') summary.focus();\n}\n\nfunction interceptTabbing(event) {\n  if (event.key !== 'Tab') return;\n  const dialog = event.currentTarget;\n\n  event.preventDefault();\n\n  const focusableElements = Array.from(dialog.querySelectorAll('*')).filter(focusable);\n  if (focusableElements.length === 0) return;\n\n  const movement = event.shiftKey ? -1 : 1;\n  const root = this.getRootNode();\n  const currentFocus = this.contains(root.activeElement) ? root.activeElement : null;\n  let targetIndex = movement === -1 ? -1 : 0;\n\n  if (currentFocus instanceof HTMLElement) {\n    const currentIndex = focusableElements.indexOf(currentFocus);\n    if (currentIndex !== -1) {\n      targetIndex = currentIndex + movement;\n    }\n  }\n\n  if (targetIndex < 0) {\n    targetIndex = focusableElements.length - 1;\n  } else {\n    targetIndex %= focusableElements.length;\n  }\n\n  focusableElements[targetIndex].focus();\n}\n\nfunction focusFirstElement(dialog) {\n  const autofocusableElement = Array.from(dialog.querySelectorAll('[autofocus]')).filter(focusable)[0];\n\n  if (autofocusableElement) {\n    autofocusableElement.focus();\n  } else {\n    dialog.setAttribute('tabindex', '-1');\n    dialog.focus();\n  }\n}\n\nfunction checkFormSubmission(event) {\n  const form = event.target;\n  if (!(form instanceof HTMLFormElement)) return;\n\n  if (form.getAttribute('method') === 'dialog') {\n    event.preventDefault();\n\n    const details = form.closest('details');\n    if (details) close(details);\n  }\n}\n","export function nextFrame() {\n  return new Promise(requestAnimationFrame);\n}\n\nexport function nextEventLoop() {\n  return new Promise((resolve) => setTimeout(() => resolve(), 0));\n}\n\n/**\n * @param {HTMLElement} transitionElement\n * @returns {Promise<void>}\n * @example\n * async open() {\n *   await waitForTransition(myElement);\n *   // do something\n * }\n */\nexport function waitForTransition(transitionElement) {\n  const durationPadding = 5;\n  const duration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n  let called = false;\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) return;\n\n    called = true;\n    transitionElement.removeEventListener('transitionend', handler);\n  };\n\n  transitionElement.addEventListener('transitionend', handler);\n  return new Promise((resolve) => {\n    setTimeout(() => {\n      if (!called) {\n        transitionElement.dispatchEvent(new Event('transitionend'));\n      }\n      resolve();\n    }, duration);\n  });\n}\n\n/**\n * @param {HTMLElement} element\n * @returns {number}\n */\nexport function getTransitionDurationFromElement(element) {\n  if (!element) return 0;\n\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element);\n  const floatTransitionDuration = Number.parseFloat(transitionDuration);\n  const floatTransitionDelay = Number.parseFloat(transitionDelay);\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) return 0;\n\n  // eslint-disable-next-line prefer-destructuring\n  transitionDuration = transitionDuration.split(',')[0];\n  // eslint-disable-next-line prefer-destructuring\n  transitionDelay = transitionDelay.split(',')[0];\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * 1000;\n}\n","import { isEmpty } from '../../helpers/metal';\nimport { observeMutations } from '../../helpers/observers';\n\nexport default class CommandPaletteStack extends HTMLElement {\n  connectedCallback() {\n    this.activateNamedGroup = this.activateNamedGroup.bind(this);\n    this.activateDefaultGroup = this.activateDefaultGroup.bind(this);\n\n    this.addEventListener('command-palette:scopeUpdated', this.activateNamedGroup);\n    this.addEventListener('command-palette:scopeRemoved', this.activateDefaultGroup);\n\n    observeMutations(this.toggleDataEmpty.bind(this), this, {\n      childList: true,\n      subtree: true,\n      attributeFilter: ['hidden'],\n    });\n  }\n\n  disconnectedCallback() {\n    this.removeEventListener('command-palette:scopeUpdated', this.activateNamedGroup);\n    this.removeEventListener('command-palette:scopeRemoved', this.activateDefaultGroup);\n  }\n\n  /**\n   * Hide all other groups except the active one\n   */\n  activateNamedGroup(event) {\n    const object = JSON.parse(event.detail);\n    if (isEmpty(object)) return;\n\n    const { id } = object;\n    this.groups.forEach((group) => {\n      group.hidden = group.dataset.groupId !== id;\n    });\n  }\n\n  /**\n   * Hide all other groups except the homepage\n   */\n  activateDefaultGroup() {\n    this.groups.forEach((group) => {\n      group.hidden = !group.hasAttribute('data-cp-homepage');\n    });\n  }\n\n  toggleDataEmpty() {\n    const allHidden = this.groups.every((group) => group.hidden);\n    this.toggleAttribute('data-empty', allHidden);\n  }\n\n  get groups() {\n    return Array.from(this.querySelectorAll('command-palette-group'));\n  }\n}\n","/**\n * @param {Function} callback\n * @param {HTMLElement} target\n * @param {MutationObserverInit} options\n */\n// eslint-disable-next-line import/prefer-default-export\nexport function observeMutations(callback, target, options) {\n  const observer = new MutationObserver((mutations) => {\n    observer.disconnect();\n    Promise.resolve().then(start);\n    callback.call(this, mutations);\n  });\n\n  function start() {\n    if (target.isConnected) observer.observe(target, options);\n  }\n\n  start();\n}\n","import axios from 'axios';\n\n/* eslint-disable no-underscore-dangle */\nexport default class StrongPassword {\n  constructor(options = {}) {\n    this.resultContainer = options.container;\n    this.password = null;\n    this.confirmation = null;\n    this.results = {};\n    this.score = 0;\n    this.disabled = false;\n  }\n\n  validate = async (password) => {\n    if (this.disabled) return true;\n\n    this.password = password;\n    this.results = await this.result();\n    if (this.resultContainer) {\n      const existingResults = document.getElementById('strong_password_results');\n      if (existingResults) existingResults.remove();\n      this.resultContainer.insertAdjacentHTML('afterend', this.resultsHtml());\n    }\n    return this.valid();\n  }\n\n  matches = (confirmation) => {\n    if (this.disabled) return true;\n\n    this.confirmation = confirmation;\n    const existingMsg = document.getElementById('confirmation');\n    if (existingMsg) existingMsg.remove();\n    if (this.confirmation.length === 0) return false;\n\n    const results = document.getElementById('results_list');\n    if (!results) return false;\n\n    const li = document.createElement('li');\n    li.id = 'confirmation';\n    li.classList = this.confirmation === this.password ? 'text-success' : 'text-warning';\n    results.append(li);\n    li.innerHTML = this.confirmation === this.password ? '<i class=\"bi bi-check2\"></i> Passwords match' : '<i class=\"bi bi-x\"></i> Passwords do not match';\n    return this.valid();\n  }\n\n  result = async () => {\n    const strengthResponse = await this.sufficientStrength(this.password);\n    this.score = strengthResponse.score;\n\n    return {\n      sufficientLength: {\n        valid: this.sufficientLength(this.password),\n        explanation: 'Between 12-128 characters',\n      },\n      strength: {\n        valid: strengthResponse.value,\n        explanation: strengthResponse.value ? 'Strong password' : 'Your password is not strong enough. Avoid common words. Try making it longer.',\n      },\n    };\n  }\n\n  resultsHtml = () => {\n    let html = '<div id=\"strong_password_results\" class=\"mt-2\"><div class=\"d-flex flex-row w-100 mb-2\">';\n    let color = this.score >= 1 ? 'success' : 'danger';\n    if (color !== 'success') color = this.score < 1 && this.score >= 0.5 ? 'warning' : 'danger';\n    const bar = '<div class=\"password-bar';\n    for (let index = 0; index < 4; index += 1) {\n      let styled;\n      switch (index) {\n        case 0:\n          styled = this.score >= 0;\n          break;\n        case 1:\n          styled = this.score >= 0.25;\n          break;\n        case 2:\n          styled = this.score >= 0.5;\n          break;\n        case 3:\n          styled = this.score >= 1;\n          break;\n        default:\n          styled = false;\n          break;\n      }\n      html += `${bar} ${styled ? `bg-${color}` : ''}\"></div>`;\n    }\n    html += '</div><ul id=\"results_list\" class=\"list-unstyled text-md\">';\n    Object.keys(this.results).forEach((r) => {\n      const o = this.results[r];\n      const icon = o.valid ? '<i class=\"bi bi-check2\"></i>' : '<i class=\"bi bi-x\"></i>';\n      html = `${html}<li class=\"text-${o.valid ? 'success' : 'warning'}\">${icon} <span>${o.explanation}</span></li>`;\n    });\n    return `${html}</ul></div>`;\n  }\n\n  sufficientLength = () => {\n    const regex = /^.{12,128}/;\n    return regex.test(this.password);\n  }\n\n  sufficientStrength = () => new Promise((resolve) => {\n    axios.get('/api/v2/black-knight/ask', {\n      params: { password: this.password },\n    }).then((response) => {\n      resolve(response.data);\n    }).catch((error) => {\n      if (error.code === 'ERR_BAD_REQUEST') {\n        // The server throws a 422 on blank passwords. Clearly not a password of sufficient strength.\n        resolve({ score: 0, value: false });\n      } else {\n        console.error(`Error during password strength check: ${error.message}`);\n        // It should be rare that this throws an error. Disable the plugin and\n        // show everything as valid to let the server side checking handle it.\n        // console.error(`Error during password strength check: ${error.message}`);\n        this.disabled = true;\n      }\n    });\n  })\n\n  valid = () => this.password === this.confirmation\n    && this.score >= 1\n    && !Object.keys(this.results).map((r) => r.valid).includes(false);\n}\n","import Vue from 'vue';\n\nexport const EventBus = new Vue();\n","import consumer from './consumer';\nimport RoomVisitorChannel from './room_visitor_channel';\nimport log from '../lib/logger';\n\nexport default class RoomChannel {\n  constructor(options) {\n    this.store = options.store; // Vuex store\n    this.roomId = options.roomId;\n    this.viewerId = options.viewerId || this.store.state.userId;\n    this.channel = null;\n    this.isResolved = null;\n  }\n\n  init = () =>\n    new Promise((resolve) => {\n      this.isResolved = resolve;\n      this.createSubscription();\n    });\n\n  createSubscription = () => {\n    const { roomId, viewerId, store, isResolved } = this;\n\n    this.channel = consumer.subscriptions.create(\n      {\n        channel: 'RoomChannel',\n        id: roomId,\n        user_id: viewerId,\n      },\n      {\n        connected() {\n          // Called when the subscription is ready for use on the server\n          isResolved();\n          log.info('Room Channel connected');\n        },\n\n        disconnected() {\n          // Called when the subscription has been terminated by the server\n          log.info('Room Channel disconnected');\n        },\n\n        received: async (data) => {\n          log.debug('Room Channel data received', data);\n          if (data.type === 'new_visitor') {\n            if (!data.visitor.id) return;\n            if (data.visitor.id === store.state.visitor.id) return;\n            log.info('Room visitor arrived');\n            log.debug('Arrived visitor', data.visitor);\n            store.dispatch('handleRoomVisitorArrival', { visitor: data.visitor, sendReply: true });\n          } else if (data.type === 'help_requested') {\n            log.info('Help requested');\n            log.debug('Visitor requesting help', data.visitorId);\n            store.commit('handleVisitorRequestingHelp', { visitorId: data.visitorId, requestedHelp: true });\n          } else if (data.type === 'session_id') {\n            if (store.state.visitor.eventId === data.eventId) {\n              store.commit('setActiveSessionId', data.sessionId);\n              // If the participant(patient/observer) joins earlier than the therapist, their `roomsSessionId` is null.\n              // So when the therapist opens the session, we set their respective `roomsSessionId`.\n              store.commit('updateVisitor', { roomsSessionId: data.sessionId });\n            }\n          } else if (data.visitor_left !== undefined) {\n            log.info('Room visitor left');\n            log.debug('Leaving visitor data', data.visitor_left);\n            store.dispatch('handleRoomVisitorDeparture', data.visitor_left);\n          } else if (data.type === 'visitor_left') {\n            log.info('Room visitor left');\n            log.debug('Leaving visitor data', data.visitor.id);\n            store.dispatch('handleRoomVisitorDeparture', data.visitor.id);\n          } else if (data.type === 'new_visitor_channel') {\n            // Do nothing if it's already subscribed\n            if (store.state.roomVisitorChannels[data.sentBy]) return;\n            // If the room owner, need to connect to the RoomVisitorChannel\n            // of the visitor sending the request\n            if (store.state.visitor.id === store.state.ownerId) {\n              const channel = new RoomVisitorChannel({ roomId: this.roomId, line: data.line, store });\n              await channel.init();\n              this.store.commit('storeVisitorChannel', {\n                id: data.sentBy,\n                line: channel.line,\n                channel: channel.channel,\n              });\n            }\n          } else if (data.type === 'reload_window') {\n            if (store.state.visitor.id === data.id) {\n              window.location.reload();\n            }\n          } else if (data.type === 'show_notification_modal') {\n            if (store.state.visitor.id === data.id) {\n              store.commit('setNotificationModalMsg', data.message);\n            }\n          } else if (data.type === 'welcome_reply' && data.visitor.id !== store.state.visitor.id) {\n            store.dispatch('handleRoomVisitorArrival', { visitor: data.visitor, sendReply: false });\n            if (store.state.ownerId === store.state.visitor.id) {\n              store.commit('storeActiveVisitorAudioMessage', { visitorId: data.sentBy, base64Audio: data.audio });\n              store.commit('storeActiveVisitorName', { visitorId: data.sentBy, enteredName: data.name });\n            }\n          } else if (data.type === 'end_session' && data.id !== store.state.visitor.id) {\n            store.commit('layout/setCallRatingVisibility', true);\n          }\n        },\n      }\n    );\n  };\n}\n","import consumer from './consumer';\nimport VisualScheduleChannelCreator from '../visual-schedules/lib/channel_creator';\nimport log from '../lib/logger';\n\nexport default class RoomSessionChannel {\n  constructor(options) {\n    this.store = options.store; // Vuex store\n    this.roomsSessionId = options.roomsSessionId;\n    this.viewerId = options.viewerId;\n    this.channel = null;\n    this.isResolved = null;\n  }\n\n  init = () =>\n    new Promise((resolve) => {\n      this.isResolved = resolve;\n      this.createSubscription();\n    });\n\n  createSubscription = () => {\n    const { roomsSessionId, viewerId, store, isResolved } = this;\n    this.channel = consumer.subscriptions.create(\n      {\n        channel: 'RoomsSessionChannel',\n        id: roomsSessionId,\n        user_id: viewerId,\n      },\n      {\n        connected() {\n          // Called when the subscription is ready for use on the server\n          isResolved();\n          log.info('Room Session Channel connected');\n        },\n\n        disconnected() {\n          // Called when the subscription has been terminated by the server\n          log.info('Room Session Channel disconnected');\n        },\n\n        received(data) {\n          // Called when there's incoming data on the websocket for this channel\n          log.debug('Room Session Channel data received', data);\n          // Ignore if this message is intended for only one participant\n          if (data.for_viewer !== undefined && data.for_viewer !== null && viewerId !== data.for_viewer) return;\n\n          const owner = store.state.visitor.id === store.state.ownerId;\n          if (data.room_started === true) {\n            store.commit('setRoomSessionStarted', true);\n          } else if (data.meeting_mode !== undefined) {\n            store.commit('admin/toggleMeeting', data.meeting_mode);\n          } else if (data.participant_connected_to_session !== undefined) {\n            if (owner) {\n              // At this point we only want to update `primaryTherapistInSession`, because the participant hasn't yet\n              // joined the session.\n              store.state.roomSessionChannel.perform('therapist_entered_session', { syncState: false });\n            }\n            this.syncSupervisorState(data);\n          } else if (data.participant_entered_session !== undefined) {\n            if (owner) {\n              // When the participant joins the session, we want to synchronize the state of the therapist with the\n              // connected participant.\n              this.sendCurrentSessionState(data.participant_entered_session);\n            }\n            store.dispatch('handleRoomsSessionVisitorArrival', { visitorId: data.participant_entered_session });\n          } else if (data.therapist_entered_session !== undefined) {\n            // When the participant is already there in the session and the therapist somehow gets disconnected or their\n            // browser reloads and then joins the session again, we want to update the therapist's state to the\n            // already existing participants.\n            const { activeVisitors } = store.state;\n            if (owner && data.sync_state && activeVisitors.length > 0) {\n              activeVisitors.forEach((visitor) => {\n                this.sendCurrentSessionState(visitor.id);\n              });\n            }\n            store.dispatch('setTherapistSessionActiveState', true);\n            this.syncSupervisorState(data);\n          } else if (data.therapist_left_session !== undefined) {\n            store.dispatch('setTherapistSessionActiveState', false);\n          } else if (data.sync_whiteboard_for !== undefined) {\n            if (owner) this.syncWhiteBoardCanvasObjects(data.sync_whiteboard_for);\n          } else if (data.sync_resources_for !== undefined) {\n            if (owner) this.syncResourceCanvasObjects(data.sync_resources_for);\n          } else if (data.toast_errors !== undefined) {\n            store.commit('admin/setToastErrors', data.toast_errors);\n          } else if (data.action === 'set_demoing_participant') {\n            const { id, name } = data;\n            store.commit('demoMode/setDemoingParticipant', { id, name });\n          } else if (data.whiteboard_status !== undefined) {\n            store.commit('layout/setWhiteBoardMode', data.whiteboard_status);\n          } else if (data.canvas_object !== undefined) {\n            store.dispatch('canvas/addCanvasObject', data.canvas_object.object);\n          } else if (data.canvas_object_update !== undefined) {\n            // Do not update artists' state, it will mess up mouse position\n            if (store.state.visitor.id === data.canvas_object_update.object.artistId) return;\n            store.dispatch('canvas/updateCanvasObject', data.canvas_object_update.object);\n          } else if (data.canvas_clear === true) {\n            store.dispatch('canvas/clearCanvasObjects', data.canvasId);\n          } else if (data.canvas_clear_object !== undefined) {\n            store.commit('canvas/removeCanvasObject', data.canvas_clear_object);\n          } else if (data.resource_canvas_lock_active !== undefined) {\n            store.dispatch('resource/handleResourceCanvasLocked', {\n              selectableState: data.resource_canvas_lock_active,\n              canvasId: 'resource-canvas',\n            });\n          } else if (data.screenshare_status !== undefined && !owner) {\n            store.commit('layout/setScreenshareMode', data.screenshare_status);\n          } else if (data.resource_status !== undefined) {\n            store.commit('layout/setResourceMode', data.resource_status);\n            if (!data.resource_status) store.commit('canvas/resetCanvasPosition');\n          } else if (data.resource_selection !== undefined) {\n            store.dispatch('resource/handleResourceSelection', data);\n          } else if (data.canvas_position !== undefined) {\n            store.commit('canvas/updateCanvasPosition', { canvasId: data.canvasId, num: data.canvas_position });\n          } else if (data.click_beacon_active !== undefined) {\n            store.commit('sharingMedia/setClickBeaconActive', data.click_beacon_active);\n          } else if (data.click_beacon_coordinates !== undefined) {\n            const { participant } = data.click_beacon_coordinates;\n            const { visitor, ownerId } = store.state;\n\n            // If click beacon creator is current user, return\n            if (participant.id === visitor.id) return;\n            // If click beacon creator is not therapist, and if click beacon creator is not demoing, and if\n            // current user is not demoing, and if current user is not owner, return\n            if (\n              participant.id !== ownerId &&\n              !store.getters['demoMode/isDemoing'](participant.id) &&\n              !store.getters['demoMode/isDemoing'](visitor.id) &&\n              !owner\n            )\n              return;\n\n            store.dispatch('sharingMedia/handleClickBeacon', data.click_beacon_coordinates);\n          } else if (data.resource_interact_mode !== undefined) {\n            store.commit('resource/setInteractMode', data.resource_interact_mode);\n          } else if (data.settings !== undefined && owner) {\n            if (data.settings.user) store.commit('settings/storeUserSettings', data.settings.user);\n            if (data.settings.patient) store.commit('settings/updateSinglePatientSetting', data.settings.patient);\n            if (data.settings.patients) store.commit('settings/storeAllPatientSettings', data.settings.patients);\n            if (data.settings.organization)\n              store.commit('settings/setOrganizationSettings', data.settings.organization);\n          } else if (\n            data.settings !== undefined &&\n            data.settings.patient &&\n            store.state.visitor.id === data.settings.patient.id\n          ) {\n            store.commit('settings/storePatientSettings', data.settings.patient);\n            if (data.settings.organization)\n              store.commit('settings/setOrganizationSettings', data.settings.organization);\n          } else if (data.action === 'visual_schedule_initialized') {\n            if (store.state.visitor.id !== data.id) {\n              new VisualScheduleChannelCreator({ store, sessionId: data.sessionId }).createChannel();\n              store.commit('setVisualSchedule', data.visualSchedule);\n              store.commit('layout/toggleVisualSchedule', true);\n              store.commit('setUserId', store.state.visitor.id);\n              store.dispatch('startVisualScheduleSharing', { streamerId: data.streamerId });\n            }\n          } else if (data.action === 'visual_schedule_hidden') {\n            if (store.state.visitor.id !== data.id) {\n              store.commit('layout/toggleVisualSchedule', false);\n              store.dispatch('stopVisualScheduleSharing');\n            }\n          } else if (data.action === 'room_timer') {\n            if (data.duration !== undefined) {\n              store.commit('roomTimer/setDurationSecs', data.duration);\n            }\n            if (data.timePassed !== undefined) {\n              store.commit('roomTimer/setTimePassed', data.timePassed);\n            }\n            if (store.state.visitor.id !== data.id) {\n              if (data.showTimer !== undefined) {\n                store.commit('layout/setRoomTimerVisibility', data.showTimer);\n                store.commit('roomTimer/setVisibleToParticipants', data.showTimer);\n              }\n              if (data.startTimer) {\n                store.commit('roomTimer/play');\n              } else if (data.startTimer !== undefined) store.commit('roomTimer/pause');\n              if (data.clear) {\n                store.commit('roomTimer/clear');\n              }\n              if (data.playSound !== undefined) {\n                store.commit('roomTimer/setPlaySound', data.playSound);\n              }\n            }\n          } else if (data.action === 'stream_management') {\n            switch (data.type) {\n              case 'mic':\n                store.dispatch('janus/handleRemoteMic', data);\n                break;\n\n              case 'video':\n                store.dispatch('janus/handleRemoteVideo', data);\n                break;\n\n              case 'remove':\n                store.dispatch('janus/handleRemoteRemoval', data);\n                break;\n              default:\n                break;\n            }\n          } else if (data.action === 'participant_admin') {\n            let action = 'layout/handleRemoteVisibleArea';\n            let payload;\n            switch (data.type) {\n              case 'whiteboard_active':\n                action = 'sharingMedia/handleRemoteWhiteboardLock';\n                payload = { data, canvasId: 'whiteboard-canvas' };\n                break;\n              case 'secondary_media_visible':\n                payload = { data, mutation: 'setSecondaryMediaVisible', prop: 'secondaryMediaHidden' };\n                break;\n              case 'sidebar_active':\n                payload = { data, mutation: 'toggleToolbar', prop: 'toolBarHidden' };\n                break;\n              case 'screen_cleared':\n                payload = { data, mutation: 'toggleAllHidden', prop: 'screenCleared' };\n                break;\n              case 'participant_navigator_visible':\n                payload = { data, mutation: 'setParticipantNavigatorVisible', prop: 'participantNavigatorHidden' };\n                break;\n              default:\n                break;\n            }\n            store.dispatch(action, payload);\n          } else if (data.action === 'spotlight_participant') {\n            store.commit('layout/setSpotlightedParticipant', data.id);\n          } else if (data.action === 'sync_supervisor_settings') {\n            // We do not want to update the supervisor's state.\n            // It causes double re-render of the component.\n            if (store.state.visitor.id === data.visitor_id) return;\n            store.commit('setSupervisorVisibility', data.supervisor_is_visible);\n          }\n        },\n\n        sendCurrentSessionState(targetUserId) {\n          const { state, getters } = store;\n          const { activeSessionId, roomSessionChannel, layout, visualSchedule, sharingMedia, demoMode } = state;\n          const { whiteBoardMode, resourceMode } = layout;\n          // Therapist is active, but we don't want to synchronize the settings at this point because we already handle\n          // the update at the parent level. Synchronizing here will result in an infinite loop.\n          roomSessionChannel.perform('therapist_entered_session', { syncState: false });\n          // Whiteboard\n          if (whiteBoardMode) {\n            roomSessionChannel.perform('start_whiteboard', { for_viewer: targetUserId });\n          } else {\n            roomSessionChannel.perform('end_whiteboard', { for_viewer: targetUserId });\n          }\n          // Resource library\n          if (resourceMode) {\n            roomSessionChannel.perform('start_resource', { for_viewer: targetUserId });\n            roomSessionChannel.perform('select_resource', {\n              id: state.resource.sharingResourceId,\n              position: state.canvas.canvasPositions['resource-canvas'],\n              for_viewer: targetUserId,\n            });\n            roomSessionChannel.perform('resource_interact_mode', {\n              mode: state.resource.interactMode,\n              for_viewer: targetUserId,\n            });\n            roomSessionChannel.perform('click_beacon_active', {\n              status: state.sharingMedia.clickBeaconActive,\n              for_viewer: targetUserId,\n            });\n            roomSessionChannel.perform('resource_canvas_lock_active', {\n              locked: state.resource.resourceDrawingLocked,\n              for_viewer: targetUserId,\n            });\n          } else {\n            roomSessionChannel.perform('end_resource', { for_viewer: targetUserId });\n          }\n          // Click Beacon\n          if (sharingMedia.clickBeaconActive) {\n            roomSessionChannel.perform('click_beacon_active', { status: true, for_viewer: targetUserId });\n          } else {\n            roomSessionChannel.perform('click_beacon_active', { status: false, for_viewer: targetUserId });\n          }\n          // Visual Schedule\n          if (getters.isVisualScheduleSharing) {\n            roomSessionChannel.perform('visual_schedule_initialized', {\n              id: state.visitor.id,\n              sessionId: activeSessionId,\n              visualSchedule,\n              streamerId: state.visualScheduleSharing.streamerId,\n              for_viewer: targetUserId,\n            });\n          } else {\n            roomSessionChannel.perform('visual_schedule_hidden', {\n              id: state.visitor.id,\n              for_viewer: targetUserId,\n            });\n          }\n          // Room Timer\n          roomSessionChannel.perform('room_timer', {\n            id: state.visitor.id,\n            showTimer: state.roomTimer.visibleToParticipants,\n            startTimer: state.roomTimer.running,\n            playSound: state.roomTimer.playSound,\n            duration: state.roomTimer.duration,\n            timePassed: state.roomTimer.timePassed,\n            for_viewer: targetUserId,\n          });\n          // Demoing participant\n          if (demoMode.demoingParticipant.id) {\n            const { id, name } = demoMode.demoingParticipant;\n            roomSessionChannel.perform('set_demoing_participant', { id, name, for_viewer: targetUserId });\n          }\n          // Screenshare ?\n        },\n\n        syncSupervisorState(data) {\n          const { state } = store;\n          const { visitor, supervisors, ownerId, supervisorIsVisible, roomSessionChannel } = state;\n\n          const supervisorIds = Array.from(supervisors, (s) => s.userId);\n          if (!supervisorIds.includes(visitor.id)) return;\n          if (supervisorIds.includes(data.participant_connected_to_session)) return;\n\n          roomSessionChannel.perform('sync_supervisor_settings', {\n            visitorId: visitor.id,\n            supervisorIsVisible,\n            for_viewer: data.therapist_entered_session ? ownerId : data.participant_connected_to_session,\n          });\n        },\n\n        syncWhiteBoardCanvasObjects(targetUserId) {\n          const { state } = store;\n          const { roomSessionChannel, canvas } = state;\n          const wbCanvas = canvas.canvases['whiteboard-canvas'];\n          if (wbCanvas) {\n            // Sync all the objects\n            // eslint-disable-next-line no-underscore-dangle\n            wbCanvas._objects.forEach((object) => {\n              let jsonObj;\n              const keys = ['artistId', 'id', 'sourcePath', 'perPixelTargetFind', 'canvasId'];\n              // Convert to JSON\n              if (object.sourcePath) {\n                // item is svg\n                jsonObj = object.toDatalessObject(keys);\n              } else {\n                // item is drawn path\n                jsonObj = object.toJSON(keys);\n              }\n              if (!jsonObj.canvasId) jsonObj.canvasId = 'whiteboard-canvas';\n              roomSessionChannel.perform('canvas_object', { object: jsonObj, for_viewer: targetUserId });\n            });\n          }\n        },\n\n        syncResourceCanvasObjects(targetUserId) {\n          const { state } = store;\n          const { roomSessionChannel, canvas } = state;\n          const resourceCanvas = canvas.canvases['resource-canvas'];\n          if (resourceCanvas) {\n            // Sync all the objects\n            // eslint-disable-next-line no-underscore-dangle\n            resourceCanvas._objects.forEach((object) => {\n              let jsonObj;\n              const keys = ['artistId', 'id', 'sourcePath', 'perPixelTargetFind', 'canvasId', 'pageNumber'];\n              // Convert to JSON\n              if (object.sourcePath) {\n                // item is svg\n                jsonObj = object.toDatalessObject(keys);\n              } else {\n                // item is drawn path\n                jsonObj = object.toJSON(keys);\n              }\n              if (!jsonObj.canvasId) jsonObj.canvasId = 'resource-canvas';\n              roomSessionChannel.perform('canvas_object', { object: jsonObj, for_viewer: targetUserId });\n            });\n          }\n        },\n      }\n    );\n  };\n}\n","// eslint-disable-next-line import/prefer-default-export\nexport function onDropdownClose(dropdown) {\n  $(dropdown).find('.selected').not('.active').removeClass('selected');\n}\n","// Selectively require necessary controllers for the front_pages\n\nimport { Application } from '@hotwired/stimulus';\nimport ScrollReveal from 'stimulus-scroll-reveal';\n\nimport FocusController from './focus_controller';\nimport LandingPageNavController from './landing_page_nav_controller';\nimport PopCardController from './pop_card_controller';\nimport PricingPageController from './pricing_page_controller';\nimport SideNavController from './side_nav_controller';\nimport ToastController from './toast_controller';\nimport ToggleSectionController from './toggle_section_controller';\nimport TrayCardController from './tray_card_controller';\nimport TrayNavController from './tray_nav_controller';\nimport CarouselController from './carousel_controller';\nimport SectionAnchorController from './section_anchor_controller';\n\nconst application = Application.start();\n\nwindow.Stimulus = application;\n\napplication.register('focus', FocusController);\napplication.register('pop-card', PopCardController);\napplication.register('pricing-page', PricingPageController);\napplication.register('landing-page-nav', LandingPageNavController);\napplication.register('scroll-reveal', ScrollReveal);\napplication.register('side-nav', SideNavController);\napplication.register('toast', ToastController);\napplication.register('toggle-section', ToggleSectionController);\napplication.register('tray-card', TrayCardController);\napplication.register('tray-nav', TrayNavController);\napplication.register('carousel', CarouselController);\napplication.register('section-anchor', SectionAnchorController);\n","// app/javascript/channels/notification_channel.js\n\nimport consumer from './consumer';\n\nconsumer.subscriptions.create('Noticed::NotificationChannel', {\n  connected() {},\n\n  disconnected() {},\n\n  received(data) {\n    const count = data.unread_count;\n    const unreadCount = count > 9 ? '9+' : count;\n    // Dispatch an event with unread count\n    const event = new CustomEvent('notifications-unread-count', {\n      detail: {\n        unreadCount,\n      },\n    });\n    window.dispatchEvent(event);\n  },\n});\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/**\n * selectize.js (v0.12.6)\n * Copyright (c) 2013–2015 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n\n/*jshint curly:false */\n\n/*jshint browser:true */\n(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define(['jquery', 'sifter', 'microplugin'], factory);\n  } else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object') {\n    module.exports = factory(require('jquery'), require('sifter'), require('microplugin'));\n  } else {\n    root.Selectize = factory(root.jQuery, root.Sifter, root.MicroPlugin);\n  }\n})(this, function ($, Sifter, MicroPlugin) {\n  'use strict';\n\n  var highlight = function highlight($element, pattern) {\n    if (typeof pattern === 'string' && !pattern.length) return;\n    var regex = typeof pattern === 'string' ? new RegExp(pattern, 'i') : pattern;\n\n    var highlight = function highlight(node) {\n      var skip = 0; // Wrap matching part of text node with highlighting <span>, e.g.\n      // Soccer  ->  <span class=\"highlight\">Soc</span>cer  for regex = /soc/i\n\n      if (node.nodeType === 3) {\n        var pos = node.data.search(regex);\n\n        if (pos >= 0 && node.data.length > 0) {\n          var match = node.data.match(regex);\n          var spannode = document.createElement('span');\n          spannode.className = 'highlight';\n          var middlebit = node.splitText(pos);\n          var endbit = middlebit.splitText(match[0].length);\n          var middleclone = middlebit.cloneNode(true);\n          spannode.appendChild(middleclone);\n          middlebit.parentNode.replaceChild(spannode, middlebit);\n          skip = 1;\n        }\n      } // Recurse element node, looking for child text nodes to highlight, unless element \n      // is childless, <script>, <style>, or already highlighted: <span class=\"hightlight\">\n      else if (node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName) && (node.className !== 'highlight' || node.tagName !== 'SPAN')) {\n        for (var i = 0; i < node.childNodes.length; ++i) {\n          i += highlight(node.childNodes[i]);\n        }\n      }\n\n      return skip;\n    };\n\n    return $element.each(function () {\n      highlight(this);\n    });\n  };\n  /**\n   * removeHighlight fn copied from highlight v5 and\n   * edited to remove with() and pass js strict mode\n   */\n\n\n  $.fn.removeHighlight = function () {\n    return this.find(\"span.highlight\").each(function () {\n      this.parentNode.firstChild.nodeName;\n      var parent = this.parentNode;\n      parent.replaceChild(this.firstChild, this);\n      parent.normalize();\n    }).end();\n  };\n\n  var MicroEvent = function MicroEvent() {};\n\n  MicroEvent.prototype = {\n    on: function on(event, fct) {\n      this._events = this._events || {};\n      this._events[event] = this._events[event] || [];\n\n      this._events[event].push(fct);\n    },\n    off: function off(event, fct) {\n      var n = arguments.length;\n      if (n === 0) return delete this._events;\n      if (n === 1) return delete this._events[event];\n      this._events = this._events || {};\n      if (event in this._events === false) return;\n\n      this._events[event].splice(this._events[event].indexOf(fct), 1);\n    },\n    trigger: function trigger(event\n    /* , args... */\n    ) {\n      this._events = this._events || {};\n      if (event in this._events === false) return;\n\n      for (var i = 0; i < this._events[event].length; i++) {\n        this._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1));\n      }\n    }\n  };\n  /**\n   * Mixin will delegate all MicroEvent.js function in the destination object.\n   *\n   * - MicroEvent.mixin(Foobar) will make Foobar able to use MicroEvent\n   *\n   * @param {object} the object which will support MicroEvent\n   */\n\n  MicroEvent.mixin = function (destObject) {\n    var props = ['on', 'off', 'trigger'];\n\n    for (var i = 0; i < props.length; i++) {\n      destObject.prototype[props[i]] = MicroEvent.prototype[props[i]];\n    }\n  };\n\n  var IS_MAC = /Mac/.test(navigator.userAgent);\n  var KEY_A = 65;\n  var KEY_COMMA = 188;\n  var KEY_RETURN = 13;\n  var KEY_ESC = 27;\n  var KEY_LEFT = 37;\n  var KEY_UP = 38;\n  var KEY_P = 80;\n  var KEY_RIGHT = 39;\n  var KEY_DOWN = 40;\n  var KEY_N = 78;\n  var KEY_BACKSPACE = 8;\n  var KEY_DELETE = 46;\n  var KEY_SHIFT = 16;\n  var KEY_CMD = IS_MAC ? 91 : 17;\n  var KEY_CTRL = IS_MAC ? 18 : 17;\n  var KEY_TAB = 9;\n  var TAG_SELECT = 1;\n  var TAG_INPUT = 2; // for now, android support in general is too spotty to support validity\n\n  var SUPPORTS_VALIDITY_API = !/android/i.test(window.navigator.userAgent) && !!document.createElement('input').validity;\n\n  var isset = function isset(object) {\n    return typeof object !== 'undefined';\n  };\n  /**\n   * Converts a scalar to its best string representation\n   * for hash keys and HTML attribute values.\n   *\n   * Transformations:\n   *   'str'     -> 'str'\n   *   null      -> ''\n   *   undefined -> ''\n   *   true      -> '1'\n   *   false     -> '0'\n   *   0         -> '0'\n   *   1         -> '1'\n   *\n   * @param {string} value\n   * @returns {string|null}\n   */\n\n\n  var hash_key = function hash_key(value) {\n    if (typeof value === 'undefined' || value === null) return null;\n    if (typeof value === 'boolean') return value ? '1' : '0';\n    return value + '';\n  };\n  /**\n   * Escapes a string for use within HTML.\n   *\n   * @param {string} str\n   * @returns {string}\n   */\n\n\n  var escape_html = function escape_html(str) {\n    return (str + '').replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;');\n  };\n  /**\n   * Escapes \"$\" characters in replacement strings.\n   *\n   * @param {string} str\n   * @returns {string}\n   */\n\n\n  var escape_replace = function escape_replace(str) {\n    return (str + '').replace(/\\$/g, '$$$$');\n  };\n\n  var hook = {};\n  /**\n   * Wraps `method` on `self` so that `fn`\n   * is invoked before the original method.\n   *\n   * @param {object} self\n   * @param {string} method\n   * @param {function} fn\n   */\n\n  hook.before = function (self, method, fn) {\n    var original = self[method];\n\n    self[method] = function () {\n      fn.apply(self, arguments);\n      return original.apply(self, arguments);\n    };\n  };\n  /**\n   * Wraps `method` on `self` so that `fn`\n   * is invoked after the original method.\n   *\n   * @param {object} self\n   * @param {string} method\n   * @param {function} fn\n   */\n\n\n  hook.after = function (self, method, fn) {\n    var original = self[method];\n\n    self[method] = function () {\n      var result = original.apply(self, arguments);\n      fn.apply(self, arguments);\n      return result;\n    };\n  };\n  /**\n   * Wraps `fn` so that it can only be invoked once.\n   *\n   * @param {function} fn\n   * @returns {function}\n   */\n\n\n  var once = function once(fn) {\n    var called = false;\n    return function () {\n      if (called) return;\n      called = true;\n      fn.apply(this, arguments);\n    };\n  };\n  /**\n   * Wraps `fn` so that it can only be called once\n   * every `delay` milliseconds (invoked on the falling edge).\n   *\n   * @param {function} fn\n   * @param {int} delay\n   * @returns {function}\n   */\n\n\n  var debounce = function debounce(fn, delay) {\n    var timeout;\n    return function () {\n      var self = this;\n      var args = arguments;\n      window.clearTimeout(timeout);\n      timeout = window.setTimeout(function () {\n        fn.apply(self, args);\n      }, delay);\n    };\n  };\n  /**\n   * Debounce all fired events types listed in `types`\n   * while executing the provided `fn`.\n   *\n   * @param {object} self\n   * @param {array} types\n   * @param {function} fn\n   */\n\n\n  var debounce_events = function debounce_events(self, types, fn) {\n    var type;\n    var trigger = self.trigger;\n    var event_args = {}; // override trigger method\n\n    self.trigger = function () {\n      var type = arguments[0];\n\n      if (types.indexOf(type) !== -1) {\n        event_args[type] = arguments;\n      } else {\n        return trigger.apply(self, arguments);\n      }\n    }; // invoke provided function\n\n\n    fn.apply(self, []);\n    self.trigger = trigger; // trigger queued events\n\n    for (type in event_args) {\n      if (event_args.hasOwnProperty(type)) {\n        trigger.apply(self, event_args[type]);\n      }\n    }\n  };\n  /**\n   * A workaround for http://bugs.jquery.com/ticket/6696\n   *\n   * @param {object} $parent - Parent element to listen on.\n   * @param {string} event - Event name.\n   * @param {string} selector - Descendant selector to filter by.\n   * @param {function} fn - Event handler.\n   */\n\n\n  var watchChildEvent = function watchChildEvent($parent, event, selector, fn) {\n    $parent.on(event, selector, function (e) {\n      var child = e.target;\n\n      while (child && child.parentNode !== $parent[0]) {\n        child = child.parentNode;\n      }\n\n      e.currentTarget = child;\n      return fn.apply(this, [e]);\n    });\n  };\n  /**\n   * Determines the current selection within a text input control.\n   * Returns an object containing:\n   *   - start\n   *   - length\n   *\n   * @param {object} input\n   * @returns {object}\n   */\n\n\n  var getSelection = function getSelection(input) {\n    var result = {};\n\n    if ('selectionStart' in input) {\n      result.start = input.selectionStart;\n      result.length = input.selectionEnd - result.start;\n    } else if (document.selection) {\n      input.focus();\n      var sel = document.selection.createRange();\n      var selLen = document.selection.createRange().text.length;\n      sel.moveStart('character', -input.value.length);\n      result.start = sel.text.length - selLen;\n      result.length = selLen;\n    }\n\n    return result;\n  };\n  /**\n   * Copies CSS properties from one element to another.\n   *\n   * @param {object} $from\n   * @param {object} $to\n   * @param {array} properties\n   */\n\n\n  var transferStyles = function transferStyles($from, $to, properties) {\n    var i,\n        n,\n        styles = {};\n\n    if (properties) {\n      for (i = 0, n = properties.length; i < n; i++) {\n        styles[properties[i]] = $from.css(properties[i]);\n      }\n    } else {\n      styles = $from.css();\n    }\n\n    $to.css(styles);\n  };\n  /**\n   * Measures the width of a string within a\n   * parent element (in pixels).\n   *\n   * @param {string} str\n   * @param {object} $parent\n   * @returns {int}\n   */\n\n\n  var measureString = function measureString(str, $parent) {\n    if (!str) {\n      return 0;\n    }\n\n    if (!Selectize.$testInput) {\n      Selectize.$testInput = $('<span />').css({\n        position: 'absolute',\n        top: -99999,\n        left: -99999,\n        width: 'auto',\n        padding: 0,\n        whiteSpace: 'pre'\n      }).appendTo('body');\n    }\n\n    Selectize.$testInput.text(str);\n    transferStyles($parent, Selectize.$testInput, ['letterSpacing', 'fontSize', 'fontFamily', 'fontWeight', 'textTransform']);\n    return Selectize.$testInput.width();\n  };\n  /**\n   * Sets up an input to grow horizontally as the user\n   * types. If the value is changed manually, you can\n   * trigger the \"update\" handler to resize:\n   *\n   * $input.trigger('update');\n   *\n   * @param {object} $input\n   */\n\n\n  var autoGrow = function autoGrow($input) {\n    var currentWidth = null;\n\n    var update = function update(e, options) {\n      var value, keyCode, printable, placeholder, width;\n      var shift, character, selection;\n      e = e || window.event || {};\n      options = options || {};\n      if (e.metaKey || e.altKey) return;\n      if (!options.force && $input.data('grow') === false) return;\n      value = $input.val();\n\n      if (e.type && e.type.toLowerCase() === 'keydown') {\n        keyCode = e.keyCode;\n        printable = keyCode >= 48 && keyCode <= 57 || // 0-9\n        keyCode >= 65 && keyCode <= 90 || // a-z\n        keyCode >= 96 && keyCode <= 111 || // numpad 0-9, numeric operators\n        keyCode >= 186 && keyCode <= 222 || // semicolon, equal, comma, dash, etc.\n        keyCode === 32 // space\n        ;\n\n        if (keyCode === KEY_DELETE || keyCode === KEY_BACKSPACE) {\n          selection = getSelection($input[0]);\n\n          if (selection.length) {\n            value = value.substring(0, selection.start) + value.substring(selection.start + selection.length);\n          } else if (keyCode === KEY_BACKSPACE && selection.start) {\n            value = value.substring(0, selection.start - 1) + value.substring(selection.start + 1);\n          } else if (keyCode === KEY_DELETE && typeof selection.start !== 'undefined') {\n            value = value.substring(0, selection.start) + value.substring(selection.start + 1);\n          }\n        } else if (printable) {\n          shift = e.shiftKey;\n          character = String.fromCharCode(e.keyCode);\n          if (shift) character = character.toUpperCase();else character = character.toLowerCase();\n          value += character;\n        }\n      }\n\n      placeholder = $input.attr('placeholder');\n\n      if (!value && placeholder) {\n        value = placeholder;\n      }\n\n      width = measureString(value, $input) + 4;\n\n      if (width !== currentWidth) {\n        currentWidth = width;\n        $input.width(width);\n        $input.triggerHandler('resize');\n      }\n    };\n\n    $input.on('keydown keyup update blur', update);\n    update();\n  };\n\n  var domToString = function domToString(d) {\n    var tmp = document.createElement('div');\n    tmp.appendChild(d.cloneNode(true));\n    return tmp.innerHTML;\n  };\n\n  var logError = function logError(message, options) {\n    if (!options) options = {};\n    var component = \"Selectize\";\n    console.error(component + \": \" + message);\n\n    if (options.explanation) {\n      // console.group is undefined in <IE11\n      if (console.group) console.group();\n      console.error(options.explanation);\n      if (console.group) console.groupEnd();\n    }\n  };\n\n  var Selectize = function Selectize($input, settings) {\n    var key,\n        i,\n        n,\n        dir,\n        input,\n        self = this;\n    input = $input[0];\n    input.selectize = self; // detect rtl environment\n\n    var computedStyle = window.getComputedStyle && window.getComputedStyle(input, null);\n    dir = computedStyle ? computedStyle.getPropertyValue('direction') : input.currentStyle && input.currentStyle.direction;\n    dir = dir || $input.parents('[dir]:first').attr('dir') || ''; // setup default state\n\n    $.extend(self, {\n      order: 0,\n      settings: settings,\n      $input: $input,\n      tabIndex: $input.attr('tabindex') || '',\n      tagType: input.tagName.toLowerCase() === 'select' ? TAG_SELECT : TAG_INPUT,\n      rtl: /rtl/i.test(dir),\n      eventNS: '.selectize' + ++Selectize.count,\n      highlightedValue: null,\n      isBlurring: false,\n      isOpen: false,\n      isDisabled: false,\n      isRequired: $input.is('[required]'),\n      isInvalid: false,\n      isLocked: false,\n      isFocused: false,\n      isInputHidden: false,\n      isSetup: false,\n      isShiftDown: false,\n      isCmdDown: false,\n      isCtrlDown: false,\n      ignoreFocus: false,\n      ignoreBlur: false,\n      ignoreHover: false,\n      hasOptions: false,\n      currentResults: null,\n      lastValue: '',\n      caretPos: 0,\n      loading: 0,\n      loadedSearches: {},\n      $activeOption: null,\n      $activeItems: [],\n      optgroups: {},\n      options: {},\n      userOptions: {},\n      items: [],\n      renderCache: {},\n      onSearchChange: settings.loadThrottle === null ? self.onSearchChange : debounce(self.onSearchChange, settings.loadThrottle)\n    }); // search system\n\n    self.sifter = new Sifter(this.options, {\n      diacritics: settings.diacritics\n    }); // build options table\n\n    if (self.settings.options) {\n      for (i = 0, n = self.settings.options.length; i < n; i++) {\n        self.registerOption(self.settings.options[i]);\n      }\n\n      delete self.settings.options;\n    } // build optgroup table\n\n\n    if (self.settings.optgroups) {\n      for (i = 0, n = self.settings.optgroups.length; i < n; i++) {\n        self.registerOptionGroup(self.settings.optgroups[i]);\n      }\n\n      delete self.settings.optgroups;\n    } // option-dependent defaults\n\n\n    self.settings.mode = self.settings.mode || (self.settings.maxItems === 1 ? 'single' : 'multi');\n\n    if (typeof self.settings.hideSelected !== 'boolean') {\n      self.settings.hideSelected = self.settings.mode === 'multi';\n    }\n\n    self.initializePlugins(self.settings.plugins);\n    self.setupCallbacks();\n    self.setupTemplates();\n    self.setup();\n  }; // mixins\n  // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n\n  MicroEvent.mixin(Selectize);\n\n  if (typeof MicroPlugin !== \"undefined\") {\n    MicroPlugin.mixin(Selectize);\n  } else {\n    logError(\"Dependency MicroPlugin is missing\", {\n      explanation: \"Make sure you either: (1) are using the \\\"standalone\\\" \" + \"version of Selectize, or (2) require MicroPlugin before you \" + \"load Selectize.\"\n    });\n  } // methods\n  // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n\n  $.extend(Selectize.prototype, {\n    /**\n     * Creates all elements and sets up event bindings.\n     */\n    setup: function setup() {\n      var self = this;\n      var settings = self.settings;\n      var eventNS = self.eventNS;\n      var $window = $(window);\n      var $document = $(document);\n      var $input = self.$input;\n      var $wrapper;\n      var $control;\n      var $control_input;\n      var $dropdown;\n      var $dropdown_content;\n      var $dropdown_parent;\n      var inputMode;\n      var timeout_blur;\n      var timeout_focus;\n      var classes;\n      var classes_plugins;\n      var inputId;\n      inputMode = self.settings.mode;\n      classes = $input.attr('class') || '';\n      $wrapper = $('<div>').addClass(settings.wrapperClass).addClass(classes).addClass(inputMode);\n      $control = $('<div>').addClass(settings.inputClass).addClass('items').appendTo($wrapper);\n      $control_input = $('<input type=\"text\" autocomplete=\"off\" />').appendTo($control).attr('tabindex', $input.is(':disabled') ? '-1' : self.tabIndex);\n      $dropdown_parent = $(settings.dropdownParent || $wrapper);\n      $dropdown = $('<div>').addClass(settings.dropdownClass).addClass(inputMode).hide().appendTo($dropdown_parent);\n      $dropdown_content = $('<div>').addClass(settings.dropdownContentClass).appendTo($dropdown);\n\n      if (inputId = $input.attr('id')) {\n        $control_input.attr('id', inputId + '-selectized');\n        $(\"label[for='\" + inputId + \"']\").attr('for', inputId + '-selectized');\n      }\n\n      if (self.settings.copyClassesToDropdown) {\n        $dropdown.addClass(classes);\n      }\n\n      $wrapper.css({\n        width: $input[0].style.width\n      });\n\n      if (self.plugins.names.length) {\n        classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');\n        $wrapper.addClass(classes_plugins);\n        $dropdown.addClass(classes_plugins);\n      }\n\n      if ((settings.maxItems === null || settings.maxItems > 1) && self.tagType === TAG_SELECT) {\n        $input.attr('multiple', 'multiple');\n      }\n\n      if (self.settings.placeholder) {\n        $control_input.attr('placeholder', settings.placeholder);\n      } // if splitOn was not passed in, construct it from the delimiter to allow pasting universally\n\n\n      if (!self.settings.splitOn && self.settings.delimiter) {\n        var delimiterEscaped = self.settings.delimiter.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n        self.settings.splitOn = new RegExp('\\\\s*' + delimiterEscaped + '+\\\\s*');\n      }\n\n      if ($input.attr('autocorrect')) {\n        $control_input.attr('autocorrect', $input.attr('autocorrect'));\n      }\n\n      if ($input.attr('autocapitalize')) {\n        $control_input.attr('autocapitalize', $input.attr('autocapitalize'));\n      }\n\n      $control_input[0].type = $input[0].type;\n      self.$wrapper = $wrapper;\n      self.$control = $control;\n      self.$control_input = $control_input;\n      self.$dropdown = $dropdown;\n      self.$dropdown_content = $dropdown_content;\n      $dropdown.on('mouseenter mousedown click', '[data-disabled]>[data-selectable]', function (e) {\n        e.stopImmediatePropagation();\n      });\n      $dropdown.on('mouseenter', '[data-selectable]', function () {\n        return self.onOptionHover.apply(self, arguments);\n      });\n      $dropdown.on('mousedown click', '[data-selectable]', function () {\n        return self.onOptionSelect.apply(self, arguments);\n      });\n      watchChildEvent($control, 'mousedown', '*:not(input)', function () {\n        return self.onItemSelect.apply(self, arguments);\n      });\n      autoGrow($control_input);\n      $control.on({\n        mousedown: function mousedown() {\n          return self.onMouseDown.apply(self, arguments);\n        },\n        click: function click() {\n          return self.onClick.apply(self, arguments);\n        }\n      });\n      $control_input.on({\n        mousedown: function mousedown(e) {\n          e.stopPropagation();\n        },\n        keydown: function keydown() {\n          return self.onKeyDown.apply(self, arguments);\n        },\n        keyup: function keyup() {\n          return self.onKeyUp.apply(self, arguments);\n        },\n        keypress: function keypress() {\n          return self.onKeyPress.apply(self, arguments);\n        },\n        resize: function resize() {\n          self.positionDropdown.apply(self, []);\n        },\n        blur: function blur() {\n          return self.onBlur.apply(self, arguments);\n        },\n        focus: function focus() {\n          self.ignoreBlur = false;\n          return self.onFocus.apply(self, arguments);\n        },\n        paste: function paste() {\n          return self.onPaste.apply(self, arguments);\n        }\n      });\n      $document.on('keydown' + eventNS, function (e) {\n        self.isCmdDown = e[IS_MAC ? 'metaKey' : 'ctrlKey'];\n        self.isCtrlDown = e[IS_MAC ? 'altKey' : 'ctrlKey'];\n        self.isShiftDown = e.shiftKey;\n      });\n      $document.on('keyup' + eventNS, function (e) {\n        if (e.keyCode === KEY_CTRL) self.isCtrlDown = false;\n        if (e.keyCode === KEY_SHIFT) self.isShiftDown = false;\n        if (e.keyCode === KEY_CMD) self.isCmdDown = false;\n      });\n      $document.on('mousedown' + eventNS, function (e) {\n        if (self.isFocused) {\n          // prevent events on the dropdown scrollbar from causing the control to blur\n          if (e.target === self.$dropdown[0] || e.target.parentNode === self.$dropdown[0]) {\n            return false;\n          } // blur on click outside\n\n\n          if (!self.$control.has(e.target).length && e.target !== self.$control[0]) {\n            self.blur(e.target);\n          }\n        }\n      });\n      $window.on(['scroll' + eventNS, 'resize' + eventNS].join(' '), function () {\n        if (self.isOpen) {\n          self.positionDropdown.apply(self, arguments);\n        }\n      });\n      $window.on('mousemove' + eventNS, function () {\n        self.ignoreHover = false;\n      }); // store original children and tab index so that they can be\n      // restored when the destroy() method is called.\n\n      this.revertSettings = {\n        $children: $input.children().detach(),\n        tabindex: $input.attr('tabindex')\n      };\n      $input.attr('tabindex', -1).hide().after(self.$wrapper);\n\n      if ($.isArray(settings.items)) {\n        self.setValue(settings.items);\n        delete settings.items;\n      } // feature detect for the validation API\n\n\n      if (SUPPORTS_VALIDITY_API) {\n        $input.on('invalid' + eventNS, function (e) {\n          e.preventDefault();\n          self.isInvalid = true;\n          self.refreshState();\n        });\n      }\n\n      self.updateOriginalInput();\n      self.refreshItems();\n      self.refreshState();\n      self.updatePlaceholder();\n      self.isSetup = true;\n\n      if ($input.is(':disabled')) {\n        self.disable();\n      }\n\n      self.on('change', this.onChange);\n      $input.data('selectize', self);\n      $input.addClass('selectized');\n      self.trigger('initialize'); // preload options\n\n      if (settings.preload === true) {\n        self.onSearchChange('');\n      }\n    },\n\n    /**\n     * Sets up default rendering functions.\n     */\n    setupTemplates: function setupTemplates() {\n      var self = this;\n      var field_label = self.settings.labelField;\n      var field_optgroup = self.settings.optgroupLabelField;\n      var templates = {\n        'optgroup': function optgroup(data) {\n          return '<div class=\"optgroup\">' + data.html + '</div>';\n        },\n        'optgroup_header': function optgroup_header(data, escape) {\n          return '<div class=\"optgroup-header\">' + escape(data[field_optgroup]) + '</div>';\n        },\n        'option': function option(data, escape) {\n          return '<div class=\"option\">' + escape(data[field_label]) + '</div>';\n        },\n        'item': function item(data, escape) {\n          return '<div class=\"item\">' + escape(data[field_label]) + '</div>';\n        },\n        'option_create': function option_create(data, escape) {\n          return '<div class=\"create\">Add <strong>' + escape(data.input) + '</strong>&hellip;</div>';\n        }\n      };\n      self.settings.render = $.extend({}, templates, self.settings.render);\n    },\n\n    /**\n     * Maps fired events to callbacks provided\n     * in the settings used when creating the control.\n     */\n    setupCallbacks: function setupCallbacks() {\n      var key,\n          fn,\n          callbacks = {\n        'initialize': 'onInitialize',\n        'change': 'onChange',\n        'item_add': 'onItemAdd',\n        'item_remove': 'onItemRemove',\n        'clear': 'onClear',\n        'option_add': 'onOptionAdd',\n        'option_remove': 'onOptionRemove',\n        'option_clear': 'onOptionClear',\n        'optgroup_add': 'onOptionGroupAdd',\n        'optgroup_remove': 'onOptionGroupRemove',\n        'optgroup_clear': 'onOptionGroupClear',\n        'dropdown_open': 'onDropdownOpen',\n        'dropdown_close': 'onDropdownClose',\n        'type': 'onType',\n        'load': 'onLoad',\n        'focus': 'onFocus',\n        'blur': 'onBlur'\n      };\n\n      for (key in callbacks) {\n        if (callbacks.hasOwnProperty(key)) {\n          fn = this.settings[callbacks[key]];\n          if (fn) this.on(key, fn);\n        }\n      }\n    },\n\n    /**\n     * Triggered when the main control element\n     * has a click event.\n     *\n     * @param {object} e\n     * @return {boolean}\n     */\n    onClick: function onClick(e) {\n      var self = this; // necessary for mobile webkit devices (manual focus triggering\n      // is ignored unless invoked within a click event)\n      // also necessary to reopen a dropdown that has been closed by\n      // closeAfterSelect\n\n      if (!self.isFocused || !self.isOpen) {\n        self.focus();\n        e.preventDefault();\n      }\n    },\n\n    /**\n     * Triggered when the main control element\n     * has a mouse down event.\n     *\n     * @param {object} e\n     * @return {boolean}\n     */\n    onMouseDown: function onMouseDown(e) {\n      var self = this;\n      var defaultPrevented = e.isDefaultPrevented();\n      var $target = $(e.target);\n\n      if (self.isFocused) {\n        // retain focus by preventing native handling. if the\n        // event target is the input it should not be modified.\n        // otherwise, text selection within the input won't work.\n        if (e.target !== self.$control_input[0]) {\n          if (self.settings.mode === 'single') {\n            // toggle dropdown\n            self.isOpen ? self.close() : self.open();\n          } else if (!defaultPrevented) {\n            self.setActiveItem(null);\n          }\n\n          return false;\n        }\n      } else {\n        // give control focus\n        if (!defaultPrevented) {\n          window.setTimeout(function () {\n            self.focus();\n          }, 0);\n        }\n      }\n    },\n\n    /**\n     * Triggered when the value of the control has been changed.\n     * This should propagate the event to the original DOM\n     * input / select element.\n     */\n    onChange: function onChange() {\n      this.$input.trigger('change');\n    },\n\n    /**\n     * Triggered on <input> paste.\n     *\n     * @param {object} e\n     * @returns {boolean}\n     */\n    onPaste: function onPaste(e) {\n      var self = this;\n\n      if (self.isFull() || self.isInputHidden || self.isLocked) {\n        e.preventDefault();\n        return;\n      } // If a regex or string is included, this will split the pasted\n      // input and create Items for each separate value\n\n\n      if (self.settings.splitOn) {\n        // Wait for pasted text to be recognized in value\n        setTimeout(function () {\n          var pastedText = self.$control_input.val();\n\n          if (!pastedText.match(self.settings.splitOn)) {\n            return;\n          }\n\n          var splitInput = $.trim(pastedText).split(self.settings.splitOn);\n\n          for (var i = 0, n = splitInput.length; i < n; i++) {\n            self.createItem(splitInput[i]);\n          }\n        }, 0);\n      }\n    },\n\n    /**\n     * Triggered on <input> keypress.\n     *\n     * @param {object} e\n     * @returns {boolean}\n     */\n    onKeyPress: function onKeyPress(e) {\n      if (this.isLocked) return e && e.preventDefault();\n      var character = String.fromCharCode(e.keyCode || e.which);\n\n      if (this.settings.create && this.settings.mode === 'multi' && character === this.settings.delimiter) {\n        this.createItem();\n        e.preventDefault();\n        return false;\n      }\n    },\n\n    /**\n     * Triggered on <input> keydown.\n     *\n     * @param {object} e\n     * @returns {boolean}\n     */\n    onKeyDown: function onKeyDown(e) {\n      var isInput = e.target === this.$control_input[0];\n      var self = this;\n\n      if (self.isLocked) {\n        if (e.keyCode !== KEY_TAB) {\n          e.preventDefault();\n        }\n\n        return;\n      }\n\n      switch (e.keyCode) {\n        case KEY_A:\n          if (self.isCmdDown) {\n            self.selectAll();\n            return;\n          }\n\n          break;\n\n        case KEY_ESC:\n          if (self.isOpen) {\n            e.preventDefault();\n            e.stopPropagation();\n            self.close();\n          }\n\n          return;\n\n        case KEY_N:\n          if (!e.ctrlKey || e.altKey) break;\n\n        case KEY_DOWN:\n          if (!self.isOpen && self.hasOptions) {\n            self.open();\n          } else if (self.$activeOption) {\n            self.ignoreHover = true;\n            var $next = self.getAdjacentOption(self.$activeOption, 1);\n            if ($next.length) self.setActiveOption($next, true, true);\n          }\n\n          e.preventDefault();\n          return;\n\n        case KEY_P:\n          if (!e.ctrlKey || e.altKey) break;\n\n        case KEY_UP:\n          if (self.$activeOption) {\n            self.ignoreHover = true;\n            var $prev = self.getAdjacentOption(self.$activeOption, -1);\n            if ($prev.length) self.setActiveOption($prev, true, true);\n          }\n\n          e.preventDefault();\n          return;\n\n        case KEY_RETURN:\n          if (self.isOpen && self.$activeOption) {\n            self.onOptionSelect({\n              currentTarget: self.$activeOption\n            });\n            e.preventDefault();\n          }\n\n          return;\n\n        case KEY_LEFT:\n          self.advanceSelection(-1, e);\n          return;\n\n        case KEY_RIGHT:\n          self.advanceSelection(1, e);\n          return;\n\n        case KEY_TAB:\n          if (self.settings.selectOnTab && self.isOpen && self.$activeOption) {\n            self.onOptionSelect({\n              currentTarget: self.$activeOption\n            }); // Default behaviour is to jump to the next field, we only want this\n            // if the current field doesn't accept any more entries\n\n            if (!self.isFull()) {\n              e.preventDefault();\n            }\n          }\n\n          if (self.settings.create && self.createItem()) {\n            e.preventDefault();\n          }\n\n          return;\n\n        case KEY_BACKSPACE:\n        case KEY_DELETE:\n          self.deleteSelection(e);\n          return;\n      }\n\n      if ((self.isFull() || self.isInputHidden) && !(IS_MAC ? e.metaKey : e.ctrlKey)) {\n        e.preventDefault();\n        return;\n      }\n    },\n\n    /**\n     * Triggered on <input> keyup.\n     *\n     * @param {object} e\n     * @returns {boolean}\n     */\n    onKeyUp: function onKeyUp(e) {\n      var self = this;\n      if (self.isLocked) return e && e.preventDefault();\n      var value = self.$control_input.val() || '';\n\n      if (self.lastValue !== value) {\n        self.lastValue = value;\n        self.onSearchChange(value);\n        self.refreshOptions();\n        self.trigger('type', value);\n      }\n    },\n\n    /**\n     * Invokes the user-provide option provider / loader.\n     *\n     * Note: this function is debounced in the Selectize\n     * constructor (by `settings.loadThrottle` milliseconds)\n     *\n     * @param {string} value\n     */\n    onSearchChange: function onSearchChange(value) {\n      var self = this;\n      var fn = self.settings.load;\n      if (!fn) return;\n      if (self.loadedSearches.hasOwnProperty(value)) return;\n      self.loadedSearches[value] = true;\n      self.load(function (callback) {\n        fn.apply(self, [value, callback]);\n      });\n    },\n\n    /**\n     * Triggered on <input> focus.\n     *\n     * @param {object} e (optional)\n     * @returns {boolean}\n     */\n    onFocus: function onFocus(e) {\n      var self = this;\n      var wasFocused = self.isFocused;\n\n      if (self.isDisabled) {\n        self.blur();\n        e && e.preventDefault();\n        return false;\n      }\n\n      if (self.ignoreFocus) return;\n      self.isFocused = true;\n      if (self.settings.preload === 'focus') self.onSearchChange('');\n      if (!wasFocused) self.trigger('focus');\n\n      if (!self.$activeItems.length) {\n        self.showInput();\n        self.setActiveItem(null);\n        self.refreshOptions(!!self.settings.openOnFocus);\n      }\n\n      self.refreshState();\n    },\n\n    /**\n     * Triggered on <input> blur.\n     *\n     * @param {object} e\n     * @param {Element} dest\n     */\n    onBlur: function onBlur(e, dest) {\n      var self = this;\n      if (!self.isFocused) return;\n      self.isFocused = false;\n\n      if (self.ignoreFocus) {\n        return;\n      } else if (!self.ignoreBlur && document.activeElement === self.$dropdown_content[0]) {\n        // necessary to prevent IE closing the dropdown when the scrollbar is clicked\n        self.ignoreBlur = true;\n        self.onFocus(e);\n        return;\n      }\n\n      var deactivate = function deactivate() {\n        self.close();\n        self.setTextboxValue('');\n        self.setActiveItem(null);\n        self.setActiveOption(null);\n        self.setCaret(self.items.length);\n        self.refreshState(); // IE11 bug: element still marked as active\n\n        dest && dest.focus && dest.focus();\n        self.isBlurring = false;\n        self.ignoreFocus = false;\n        self.trigger('blur');\n      };\n\n      self.isBlurring = true;\n      self.ignoreFocus = true;\n\n      if (self.settings.create && self.settings.createOnBlur) {\n        self.createItem(null, false, deactivate);\n      } else {\n        deactivate();\n      }\n    },\n\n    /**\n     * Triggered when the user rolls over\n     * an option in the autocomplete dropdown menu.\n     *\n     * @param {object} e\n     * @returns {boolean}\n     */\n    onOptionHover: function onOptionHover(e) {\n      if (this.ignoreHover) return;\n      this.setActiveOption(e.currentTarget, false);\n    },\n\n    /**\n     * Triggered when the user clicks on an option\n     * in the autocomplete dropdown menu.\n     *\n     * @param {object} e\n     * @returns {boolean}\n     */\n    onOptionSelect: function onOptionSelect(e) {\n      var value,\n          $target,\n          $option,\n          self = this;\n\n      if (e.preventDefault) {\n        e.preventDefault();\n        e.stopPropagation();\n      }\n\n      $target = $(e.currentTarget);\n\n      if ($target.hasClass('create')) {\n        self.createItem(null, function () {\n          if (self.settings.closeAfterSelect) {\n            self.close();\n          }\n        });\n      } else {\n        value = $target.attr('data-value');\n\n        if (typeof value !== 'undefined') {\n          self.lastQuery = null;\n          self.setTextboxValue('');\n          self.addItem(value);\n\n          if (self.settings.closeAfterSelect) {\n            self.close();\n          } else if (!self.settings.hideSelected && e.type && /mouse/.test(e.type)) {\n            self.setActiveOption(self.getOption(value));\n          }\n        }\n      }\n    },\n\n    /**\n     * Triggered when the user clicks on an item\n     * that has been selected.\n     *\n     * @param {object} e\n     * @returns {boolean}\n     */\n    onItemSelect: function onItemSelect(e) {\n      var self = this;\n      if (self.isLocked) return;\n\n      if (self.settings.mode === 'multi') {\n        e.preventDefault();\n        self.setActiveItem(e.currentTarget, e);\n      }\n    },\n\n    /**\n     * Invokes the provided method that provides\n     * results to a callback---which are then added\n     * as options to the control.\n     *\n     * @param {function} fn\n     */\n    load: function load(fn) {\n      var self = this;\n      var $wrapper = self.$wrapper.addClass(self.settings.loadingClass);\n      self.loading++;\n      fn.apply(self, [function (results) {\n        self.loading = Math.max(self.loading - 1, 0);\n\n        if (results && results.length) {\n          self.addOption(results);\n          self.refreshOptions(self.isFocused && !self.isInputHidden);\n        }\n\n        if (!self.loading) {\n          $wrapper.removeClass(self.settings.loadingClass);\n        }\n\n        self.trigger('load', results);\n      }]);\n    },\n\n    /**\n     * Sets the input field of the control to the specified value.\n     *\n     * @param {string} value\n     */\n    setTextboxValue: function setTextboxValue(value) {\n      var $input = this.$control_input;\n      var changed = $input.val() !== value;\n\n      if (changed) {\n        $input.val(value).triggerHandler('update');\n        this.lastValue = value;\n      }\n    },\n\n    /**\n     * Returns the value of the control. If multiple items\n     * can be selected (e.g. <select multiple>), this returns\n     * an array. If only one item can be selected, this\n     * returns a string.\n     *\n     * @returns {mixed}\n     */\n    getValue: function getValue() {\n      if (this.tagType === TAG_SELECT && this.$input.attr('multiple')) {\n        return this.items;\n      } else {\n        return this.items.join(this.settings.delimiter);\n      }\n    },\n\n    /**\n     * Resets the selected items to the given value.\n     *\n     * @param {mixed} value\n     */\n    setValue: function setValue(value, silent) {\n      var events = silent ? [] : ['change'];\n      debounce_events(this, events, function () {\n        this.clear(silent);\n        this.addItems(value, silent);\n      });\n    },\n\n    /**\n     * Sets the selected item.\n     *\n     * @param {object} $item\n     * @param {object} e (optional)\n     */\n    setActiveItem: function setActiveItem($item, e) {\n      var self = this;\n      var eventName;\n      var i, idx, begin, end, item, swap;\n      var $last;\n      if (self.settings.mode === 'single') return;\n      $item = $($item); // clear the active selection\n\n      if (!$item.length) {\n        $(self.$activeItems).removeClass('active');\n        self.$activeItems = [];\n\n        if (self.isFocused) {\n          self.showInput();\n        }\n\n        return;\n      } // modify selection\n\n\n      eventName = e && e.type.toLowerCase();\n\n      if (eventName === 'mousedown' && self.isShiftDown && self.$activeItems.length) {\n        $last = self.$control.children('.active:last');\n        begin = Array.prototype.indexOf.apply(self.$control[0].childNodes, [$last[0]]);\n        end = Array.prototype.indexOf.apply(self.$control[0].childNodes, [$item[0]]);\n\n        if (begin > end) {\n          swap = begin;\n          begin = end;\n          end = swap;\n        }\n\n        for (i = begin; i <= end; i++) {\n          item = self.$control[0].childNodes[i];\n\n          if (self.$activeItems.indexOf(item) === -1) {\n            $(item).addClass('active');\n            self.$activeItems.push(item);\n          }\n        }\n\n        e.preventDefault();\n      } else if (eventName === 'mousedown' && self.isCtrlDown || eventName === 'keydown' && this.isShiftDown) {\n        if ($item.hasClass('active')) {\n          idx = self.$activeItems.indexOf($item[0]);\n          self.$activeItems.splice(idx, 1);\n          $item.removeClass('active');\n        } else {\n          self.$activeItems.push($item.addClass('active')[0]);\n        }\n      } else {\n        $(self.$activeItems).removeClass('active');\n        self.$activeItems = [$item.addClass('active')[0]];\n      } // ensure control has focus\n\n\n      self.hideInput();\n\n      if (!this.isFocused) {\n        self.focus();\n      }\n    },\n\n    /**\n     * Sets the selected item in the dropdown menu\n     * of available options.\n     *\n     * @param {object} $object\n     * @param {boolean} scroll\n     * @param {boolean} animate\n     */\n    setActiveOption: function setActiveOption($option, scroll, animate) {\n      var height_menu, height_item, y;\n      var scroll_top, scroll_bottom;\n      var self = this;\n      if (self.$activeOption) self.$activeOption.removeClass('active');\n      self.$activeOption = null;\n      $option = $($option);\n      if (!$option.length) return;\n      self.$activeOption = $option.addClass('active');\n\n      if (scroll || !isset(scroll)) {\n        height_menu = self.$dropdown_content.height();\n        height_item = self.$activeOption.outerHeight(true);\n        scroll = self.$dropdown_content.scrollTop() || 0;\n        y = self.$activeOption.offset().top - self.$dropdown_content.offset().top + scroll;\n        scroll_top = y;\n        scroll_bottom = y - height_menu + height_item;\n\n        if (y + height_item > height_menu + scroll) {\n          self.$dropdown_content.stop().animate({\n            scrollTop: scroll_bottom\n          }, animate ? self.settings.scrollDuration : 0);\n        } else if (y < scroll) {\n          self.$dropdown_content.stop().animate({\n            scrollTop: scroll_top\n          }, animate ? self.settings.scrollDuration : 0);\n        }\n      }\n    },\n\n    /**\n     * Selects all items (CTRL + A).\n     */\n    selectAll: function selectAll() {\n      var self = this;\n      if (self.settings.mode === 'single') return;\n      self.$activeItems = Array.prototype.slice.apply(self.$control.children(':not(input)').addClass('active'));\n\n      if (self.$activeItems.length) {\n        self.hideInput();\n        self.close();\n      }\n\n      self.focus();\n    },\n\n    /**\n     * Hides the input element out of view, while\n     * retaining its focus.\n     */\n    hideInput: function hideInput() {\n      var self = this;\n      self.setTextboxValue('');\n      self.$control_input.css({\n        opacity: 0,\n        position: 'absolute',\n        left: self.rtl ? 10000 : -10000\n      });\n      self.isInputHidden = true;\n    },\n\n    /**\n     * Restores input visibility.\n     */\n    showInput: function showInput() {\n      this.$control_input.css({\n        opacity: 1,\n        position: 'relative',\n        left: 0\n      });\n      this.isInputHidden = false;\n    },\n\n    /**\n     * Gives the control focus.\n     */\n    focus: function focus() {\n      var self = this;\n      if (self.isDisabled) return;\n      self.ignoreFocus = true;\n      self.$control_input[0].focus();\n      window.setTimeout(function () {\n        self.ignoreFocus = false;\n        self.onFocus();\n      }, 0);\n    },\n\n    /**\n     * Forces the control out of focus.\n     *\n     * @param {Element} dest\n     */\n    blur: function blur(dest) {\n      this.$control_input[0].blur();\n      this.onBlur(null, dest);\n    },\n\n    /**\n     * Returns a function that scores an object\n     * to show how good of a match it is to the\n     * provided query.\n     *\n     * @param {string} query\n     * @param {object} options\n     * @return {function}\n     */\n    getScoreFunction: function getScoreFunction(query) {\n      return this.sifter.getScoreFunction(query, this.getSearchOptions());\n    },\n\n    /**\n     * Returns search options for sifter (the system\n     * for scoring and sorting results).\n     *\n     * @see https://github.com/brianreavis/sifter.js\n     * @return {object}\n     */\n    getSearchOptions: function getSearchOptions() {\n      var settings = this.settings;\n      var sort = settings.sortField;\n\n      if (typeof sort === 'string') {\n        sort = [{\n          field: sort\n        }];\n      }\n\n      return {\n        fields: settings.searchField,\n        conjunction: settings.searchConjunction,\n        sort: sort,\n        nesting: settings.nesting\n      };\n    },\n\n    /**\n     * Searches through available options and returns\n     * a sorted array of matches.\n     *\n     * Returns an object containing:\n     *\n     *   - query {string}\n     *   - tokens {array}\n     *   - total {int}\n     *   - items {array}\n     *\n     * @param {string} query\n     * @returns {object}\n     */\n    search: function search(query) {\n      var i, value, score, result, calculateScore;\n      var self = this;\n      var settings = self.settings;\n      var options = this.getSearchOptions(); // validate user-provided result scoring function\n\n      if (settings.score) {\n        calculateScore = self.settings.score.apply(this, [query]);\n\n        if (typeof calculateScore !== 'function') {\n          throw new Error('Selectize \"score\" setting must be a function that returns a function');\n        }\n      } // perform search\n\n\n      if (query !== self.lastQuery) {\n        self.lastQuery = query;\n        result = self.sifter.search(query, $.extend(options, {\n          score: calculateScore\n        }));\n        self.currentResults = result;\n      } else {\n        result = $.extend(true, {}, self.currentResults);\n      } // filter out selected items\n\n\n      if (settings.hideSelected) {\n        for (i = result.items.length - 1; i >= 0; i--) {\n          if (self.items.indexOf(hash_key(result.items[i].id)) !== -1) {\n            result.items.splice(i, 1);\n          }\n        }\n      }\n\n      return result;\n    },\n\n    /**\n     * Refreshes the list of available options shown\n     * in the autocomplete dropdown menu.\n     *\n     * @param {boolean} triggerDropdown\n     */\n    refreshOptions: function refreshOptions(triggerDropdown) {\n      var i, j, k, n, groups, groups_order, option, option_html, optgroup, optgroups, html, html_children, has_create_option;\n      var $active, $active_before, $create;\n\n      if (typeof triggerDropdown === 'undefined') {\n        triggerDropdown = true;\n      }\n\n      var self = this;\n      var query = $.trim(self.$control_input.val());\n      var results = self.search(query);\n      var $dropdown_content = self.$dropdown_content;\n      var active_before = self.$activeOption && hash_key(self.$activeOption.attr('data-value')); // build markup\n\n      n = results.items.length;\n\n      if (typeof self.settings.maxOptions === 'number') {\n        n = Math.min(n, self.settings.maxOptions);\n      } // render and group available options individually\n\n\n      groups = {};\n      groups_order = [];\n\n      for (i = 0; i < n; i++) {\n        option = self.options[results.items[i].id];\n        option_html = self.render('option', option);\n        optgroup = option[self.settings.optgroupField] || '';\n        optgroups = $.isArray(optgroup) ? optgroup : [optgroup];\n\n        for (j = 0, k = optgroups && optgroups.length; j < k; j++) {\n          optgroup = optgroups[j];\n\n          if (!self.optgroups.hasOwnProperty(optgroup)) {\n            optgroup = '';\n          }\n\n          if (!groups.hasOwnProperty(optgroup)) {\n            groups[optgroup] = document.createDocumentFragment();\n            groups_order.push(optgroup);\n          }\n\n          groups[optgroup].appendChild(option_html);\n        }\n      } // sort optgroups\n\n\n      if (this.settings.lockOptgroupOrder) {\n        groups_order.sort(function (a, b) {\n          var a_order = self.optgroups[a].$order || 0;\n          var b_order = self.optgroups[b].$order || 0;\n          return a_order - b_order;\n        });\n      } // render optgroup headers & join groups\n\n\n      html = document.createDocumentFragment();\n\n      for (i = 0, n = groups_order.length; i < n; i++) {\n        optgroup = groups_order[i];\n\n        if (self.optgroups.hasOwnProperty(optgroup) && groups[optgroup].childNodes.length) {\n          // render the optgroup header and options within it,\n          // then pass it to the wrapper template\n          html_children = document.createDocumentFragment();\n          html_children.appendChild(self.render('optgroup_header', self.optgroups[optgroup]));\n          html_children.appendChild(groups[optgroup]);\n          html.appendChild(self.render('optgroup', $.extend({}, self.optgroups[optgroup], {\n            html: domToString(html_children),\n            dom: html_children\n          })));\n        } else {\n          html.appendChild(groups[optgroup]);\n        }\n      }\n\n      $dropdown_content.html(html); // highlight matching terms inline\n\n      if (self.settings.highlight) {\n        $dropdown_content.removeHighlight();\n\n        if (results.query.length && results.tokens.length) {\n          for (i = 0, n = results.tokens.length; i < n; i++) {\n            highlight($dropdown_content, results.tokens[i].regex);\n          }\n        }\n      } // add \"selected\" class to selected options\n\n\n      if (!self.settings.hideSelected) {\n        for (i = 0, n = self.items.length; i < n; i++) {\n          self.getOption(self.items[i]).addClass('selected');\n        }\n      } // add create option\n\n\n      has_create_option = self.canCreate(query);\n\n      if (has_create_option) {\n        $dropdown_content.prepend(self.render('option_create', {\n          input: query\n        }));\n        $create = $($dropdown_content[0].childNodes[0]);\n      } // activate\n\n\n      self.hasOptions = results.items.length > 0 || has_create_option;\n\n      if (self.hasOptions) {\n        if (results.items.length > 0) {\n          $active_before = active_before && self.getOption(active_before);\n\n          if ($active_before && $active_before.length) {\n            $active = $active_before;\n          } else if (self.settings.mode === 'single' && self.items.length) {\n            $active = self.getOption(self.items[0]);\n          }\n\n          if (!$active || !$active.length) {\n            if ($create && !self.settings.addPrecedence) {\n              $active = self.getAdjacentOption($create, 1);\n            } else {\n              $active = $dropdown_content.find('[data-selectable]:first');\n            }\n          }\n        } else {\n          $active = $create;\n        }\n\n        self.setActiveOption($active);\n\n        if (triggerDropdown && !self.isOpen) {\n          self.open();\n        }\n      } else {\n        self.setActiveOption(null);\n\n        if (triggerDropdown && self.isOpen) {\n          self.close();\n        }\n      }\n    },\n\n    /**\n     * Adds an available option. If it already exists,\n     * nothing will happen. Note: this does not refresh\n     * the options list dropdown (use `refreshOptions`\n     * for that).\n     *\n     * Usage:\n     *\n     *   this.addOption(data)\n     *\n     * @param {object|array} data\n     */\n    addOption: function addOption(data) {\n      var i,\n          n,\n          value,\n          self = this;\n\n      if ($.isArray(data)) {\n        for (i = 0, n = data.length; i < n; i++) {\n          self.addOption(data[i]);\n        }\n\n        return;\n      }\n\n      if (value = self.registerOption(data)) {\n        self.userOptions[value] = true;\n        self.lastQuery = null;\n        self.trigger('option_add', value, data);\n      }\n    },\n\n    /**\n     * Registers an option to the pool of options.\n     *\n     * @param {object} data\n     * @return {boolean|string}\n     */\n    registerOption: function registerOption(data) {\n      var key = hash_key(data[this.settings.valueField]);\n      if (typeof key === 'undefined' || key === null || this.options.hasOwnProperty(key)) return false;\n      data.$order = data.$order || ++this.order;\n      this.options[key] = data;\n      return key;\n    },\n\n    /**\n     * Registers an option group to the pool of option groups.\n     *\n     * @param {object} data\n     * @return {boolean|string}\n     */\n    registerOptionGroup: function registerOptionGroup(data) {\n      var key = hash_key(data[this.settings.optgroupValueField]);\n      if (!key) return false;\n      data.$order = data.$order || ++this.order;\n      this.optgroups[key] = data;\n      return key;\n    },\n\n    /**\n     * Registers a new optgroup for options\n     * to be bucketed into.\n     *\n     * @param {string} id\n     * @param {object} data\n     */\n    addOptionGroup: function addOptionGroup(id, data) {\n      data[this.settings.optgroupValueField] = id;\n\n      if (id = this.registerOptionGroup(data)) {\n        this.trigger('optgroup_add', id, data);\n      }\n    },\n\n    /**\n     * Removes an existing option group.\n     *\n     * @param {string} id\n     */\n    removeOptionGroup: function removeOptionGroup(id) {\n      if (this.optgroups.hasOwnProperty(id)) {\n        delete this.optgroups[id];\n        this.renderCache = {};\n        this.trigger('optgroup_remove', id);\n      }\n    },\n\n    /**\n     * Clears all existing option groups.\n     */\n    clearOptionGroups: function clearOptionGroups() {\n      this.optgroups = {};\n      this.renderCache = {};\n      this.trigger('optgroup_clear');\n    },\n\n    /**\n     * Updates an option available for selection. If\n     * it is visible in the selected items or options\n     * dropdown, it will be re-rendered automatically.\n     *\n     * @param {string} value\n     * @param {object} data\n     */\n    updateOption: function updateOption(value, data) {\n      var self = this;\n      var $item, $item_new;\n      var value_new, index_item, cache_items, cache_options, order_old;\n      value = hash_key(value);\n      value_new = hash_key(data[self.settings.valueField]); // sanity checks\n\n      if (value === null) return;\n      if (!self.options.hasOwnProperty(value)) return;\n      if (typeof value_new !== 'string') throw new Error('Value must be set in option data');\n      order_old = self.options[value].$order; // update references\n\n      if (value_new !== value) {\n        delete self.options[value];\n        index_item = self.items.indexOf(value);\n\n        if (index_item !== -1) {\n          self.items.splice(index_item, 1, value_new);\n        }\n      }\n\n      data.$order = data.$order || order_old;\n      self.options[value_new] = data; // invalidate render cache\n\n      cache_items = self.renderCache['item'];\n      cache_options = self.renderCache['option'];\n\n      if (cache_items) {\n        delete cache_items[value];\n        delete cache_items[value_new];\n      }\n\n      if (cache_options) {\n        delete cache_options[value];\n        delete cache_options[value_new];\n      } // update the item if it's selected\n\n\n      if (self.items.indexOf(value_new) !== -1) {\n        $item = self.getItem(value);\n        $item_new = $(self.render('item', data));\n        if ($item.hasClass('active')) $item_new.addClass('active');\n        $item.replaceWith($item_new);\n      } // invalidate last query because we might have updated the sortField\n\n\n      self.lastQuery = null; // update dropdown contents\n\n      if (self.isOpen) {\n        self.refreshOptions(false);\n      }\n    },\n\n    /**\n     * Removes a single option.\n     *\n     * @param {string} value\n     * @param {boolean} silent\n     */\n    removeOption: function removeOption(value, silent) {\n      var self = this;\n      value = hash_key(value);\n      var cache_items = self.renderCache['item'];\n      var cache_options = self.renderCache['option'];\n      if (cache_items) delete cache_items[value];\n      if (cache_options) delete cache_options[value];\n      delete self.userOptions[value];\n      delete self.options[value];\n      self.lastQuery = null;\n      self.trigger('option_remove', value);\n      self.removeItem(value, silent);\n    },\n\n    /**\n     * Clears all options.\n     */\n    clearOptions: function clearOptions() {\n      var self = this;\n      self.loadedSearches = {};\n      self.userOptions = {};\n      self.renderCache = {};\n      var options = self.options;\n      $.each(self.options, function (key, value) {\n        if (self.items.indexOf(key) == -1) {\n          delete options[key];\n        }\n      });\n      self.options = self.sifter.items = options;\n      self.lastQuery = null;\n      self.trigger('option_clear');\n    },\n\n    /**\n     * Returns the jQuery element of the option\n     * matching the given value.\n     *\n     * @param {string} value\n     * @returns {object}\n     */\n    getOption: function getOption(value) {\n      return this.getElementWithValue(value, this.$dropdown_content.find('[data-selectable]'));\n    },\n\n    /**\n     * Returns the jQuery element of the next or\n     * previous selectable option.\n     *\n     * @param {object} $option\n     * @param {int} direction  can be 1 for next or -1 for previous\n     * @return {object}\n     */\n    getAdjacentOption: function getAdjacentOption($option, direction) {\n      var $options = this.$dropdown.find('[data-selectable]');\n      var index = $options.index($option) + direction;\n      return index >= 0 && index < $options.length ? $options.eq(index) : $();\n    },\n\n    /**\n     * Finds the first element with a \"data-value\" attribute\n     * that matches the given value.\n     *\n     * @param {mixed} value\n     * @param {object} $els\n     * @return {object}\n     */\n    getElementWithValue: function getElementWithValue(value, $els) {\n      value = hash_key(value);\n\n      if (typeof value !== 'undefined' && value !== null) {\n        for (var i = 0, n = $els.length; i < n; i++) {\n          if ($els[i].getAttribute('data-value') === value) {\n            return $($els[i]);\n          }\n        }\n      }\n\n      return $();\n    },\n\n    /**\n     * Returns the jQuery element of the item\n     * matching the given value.\n     *\n     * @param {string} value\n     * @returns {object}\n     */\n    getItem: function getItem(value) {\n      return this.getElementWithValue(value, this.$control.children());\n    },\n\n    /**\n     * \"Selects\" multiple items at once. Adds them to the list\n     * at the current caret position.\n     *\n     * @param {string} value\n     * @param {boolean} silent\n     */\n    addItems: function addItems(values, silent) {\n      this.buffer = document.createDocumentFragment();\n      var childNodes = this.$control[0].childNodes;\n\n      for (var i = 0; i < childNodes.length; i++) {\n        this.buffer.appendChild(childNodes[i]);\n      }\n\n      var items = $.isArray(values) ? values : [values];\n\n      for (var i = 0, n = items.length; i < n; i++) {\n        this.isPending = i < n - 1;\n        this.addItem(items[i], silent);\n      }\n\n      var control = this.$control[0];\n      control.insertBefore(this.buffer, control.firstChild);\n      this.buffer = null;\n    },\n\n    /**\n     * \"Selects\" an item. Adds it to the list\n     * at the current caret position.\n     *\n     * @param {string} value\n     * @param {boolean} silent\n     */\n    addItem: function addItem(value, silent) {\n      var events = silent ? [] : ['change'];\n      debounce_events(this, events, function () {\n        var $item, $option, $options;\n        var self = this;\n        var inputMode = self.settings.mode;\n        var i, active, value_next, wasFull;\n        value = hash_key(value);\n\n        if (self.items.indexOf(value) !== -1) {\n          if (inputMode === 'single') self.close();\n          return;\n        }\n\n        if (!self.options.hasOwnProperty(value)) return;\n        if (inputMode === 'single') self.clear(silent);\n        if (inputMode === 'multi' && self.isFull()) return;\n        $item = $(self.render('item', self.options[value]));\n        wasFull = self.isFull();\n        self.items.splice(self.caretPos, 0, value);\n        self.insertAtCaret($item);\n\n        if (!self.isPending || !wasFull && self.isFull()) {\n          self.refreshState();\n        }\n\n        if (self.isSetup) {\n          $options = self.$dropdown_content.find('[data-selectable]'); // update menu / remove the option (if this is not one item being added as part of series)\n\n          if (!self.isPending) {\n            $option = self.getOption(value);\n            value_next = self.getAdjacentOption($option, 1).attr('data-value');\n            self.refreshOptions(self.isFocused && inputMode !== 'single');\n\n            if (value_next) {\n              self.setActiveOption(self.getOption(value_next));\n            }\n          } // hide the menu if the maximum number of items have been selected or no options are left\n\n\n          if (!$options.length || self.isFull()) {\n            self.close();\n          } else if (!self.isPending) {\n            self.positionDropdown();\n          }\n\n          self.updatePlaceholder();\n          self.trigger('item_add', value, $item);\n\n          if (!self.isPending) {\n            self.updateOriginalInput({\n              silent: silent\n            });\n          }\n        }\n      });\n    },\n\n    /**\n     * Removes the selected item matching\n     * the provided value.\n     *\n     * @param {string} value\n     */\n    removeItem: function removeItem(value, silent) {\n      var self = this;\n      var $item, i, idx;\n      $item = value instanceof $ ? value : self.getItem(value);\n      value = hash_key($item.attr('data-value'));\n      i = self.items.indexOf(value);\n\n      if (i !== -1) {\n        $item.remove();\n\n        if ($item.hasClass('active')) {\n          idx = self.$activeItems.indexOf($item[0]);\n          self.$activeItems.splice(idx, 1);\n        }\n\n        self.items.splice(i, 1);\n        self.lastQuery = null;\n\n        if (!self.settings.persist && self.userOptions.hasOwnProperty(value)) {\n          self.removeOption(value, silent);\n        }\n\n        if (i < self.caretPos) {\n          self.setCaret(self.caretPos - 1);\n        }\n\n        self.refreshState();\n        self.updatePlaceholder();\n        self.updateOriginalInput({\n          silent: silent\n        });\n        self.positionDropdown();\n        self.trigger('item_remove', value, $item);\n      }\n    },\n\n    /**\n     * Invokes the `create` method provided in the\n     * selectize options that should provide the data\n     * for the new item, given the user input.\n     *\n     * Once this completes, it will be added\n     * to the item list.\n     *\n     * @param {string} value\n     * @param {boolean} [triggerDropdown]\n     * @param {function} [callback]\n     * @return {boolean}\n     */\n    createItem: function createItem(input, triggerDropdown) {\n      var self = this;\n      var caret = self.caretPos;\n      input = input || $.trim(self.$control_input.val() || '');\n      var callback = arguments[arguments.length - 1];\n      if (typeof callback !== 'function') callback = function callback() {};\n\n      if (typeof triggerDropdown !== 'boolean') {\n        triggerDropdown = true;\n      }\n\n      if (!self.canCreate(input)) {\n        callback();\n        return false;\n      }\n\n      self.lock();\n      var setup = typeof self.settings.create === 'function' ? this.settings.create : function (input) {\n        var data = {};\n        data[self.settings.labelField] = input;\n        data[self.settings.valueField] = input;\n        return data;\n      };\n      var create = once(function (data) {\n        self.unlock();\n        if (!data || _typeof(data) !== 'object') return callback();\n        var value = hash_key(data[self.settings.valueField]);\n        if (typeof value !== 'string') return callback();\n        self.setTextboxValue('');\n        self.addOption(data);\n        self.setCaret(caret);\n        self.addItem(value);\n        self.refreshOptions(triggerDropdown && self.settings.mode !== 'single');\n        callback(data);\n      });\n      var output = setup.apply(this, [input, create]);\n\n      if (typeof output !== 'undefined') {\n        create(output);\n      }\n\n      return true;\n    },\n\n    /**\n     * Re-renders the selected item lists.\n     */\n    refreshItems: function refreshItems() {\n      this.lastQuery = null;\n\n      if (this.isSetup) {\n        this.addItem(this.items);\n      }\n\n      this.refreshState();\n      this.updateOriginalInput();\n    },\n\n    /**\n     * Updates all state-dependent attributes\n     * and CSS classes.\n     */\n    refreshState: function refreshState() {\n      this.refreshValidityState();\n      this.refreshClasses();\n    },\n\n    /**\n     * Update the `required` attribute of both input and control input.\n     *\n     * The `required` property needs to be activated on the control input\n     * for the error to be displayed at the right place. `required` also\n     * needs to be temporarily deactivated on the input since the input is\n     * hidden and can't show errors.\n     */\n    refreshValidityState: function refreshValidityState() {\n      if (!this.isRequired) return false;\n      var invalid = !this.items.length;\n      this.isInvalid = invalid;\n      this.$control_input.prop('required', invalid);\n      this.$input.prop('required', !invalid);\n    },\n\n    /**\n     * Updates all state-dependent CSS classes.\n     */\n    refreshClasses: function refreshClasses() {\n      var self = this;\n      var isFull = self.isFull();\n      var isLocked = self.isLocked;\n      self.$wrapper.toggleClass('rtl', self.rtl);\n      self.$control.toggleClass('focus', self.isFocused).toggleClass('disabled', self.isDisabled).toggleClass('required', self.isRequired).toggleClass('invalid', self.isInvalid).toggleClass('locked', isLocked).toggleClass('full', isFull).toggleClass('not-full', !isFull).toggleClass('input-active', self.isFocused && !self.isInputHidden).toggleClass('dropdown-active', self.isOpen).toggleClass('has-options', !$.isEmptyObject(self.options)).toggleClass('has-items', self.items.length > 0);\n      self.$control_input.data('grow', !isFull && !isLocked);\n    },\n\n    /**\n     * Determines whether or not more items can be added\n     * to the control without exceeding the user-defined maximum.\n     *\n     * @returns {boolean}\n     */\n    isFull: function isFull() {\n      return this.settings.maxItems !== null && this.items.length >= this.settings.maxItems;\n    },\n\n    /**\n     * Refreshes the original <select> or <input>\n     * element to reflect the current state.\n     */\n    updateOriginalInput: function updateOriginalInput(opts) {\n      var i,\n          n,\n          options,\n          label,\n          self = this;\n      opts = opts || {};\n\n      if (self.tagType === TAG_SELECT) {\n        options = [];\n\n        for (i = 0, n = self.items.length; i < n; i++) {\n          label = self.options[self.items[i]][self.settings.labelField] || '';\n          options.push('<option value=\"' + escape_html(self.items[i]) + '\" selected=\"selected\">' + escape_html(label) + '</option>');\n        }\n\n        if (!options.length && !this.$input.attr('multiple')) {\n          options.push('<option value=\"\" selected=\"selected\"></option>');\n        }\n\n        self.$input.html(options.join(''));\n      } else {\n        self.$input.val(self.getValue());\n        self.$input.attr('value', self.$input.val());\n      }\n\n      if (self.isSetup) {\n        if (!opts.silent) {\n          self.trigger('change', self.$input.val());\n        }\n      }\n    },\n\n    /**\n     * Shows/hide the input placeholder depending\n     * on if there items in the list already.\n     */\n    updatePlaceholder: function updatePlaceholder() {\n      if (!this.settings.placeholder) return;\n      var $input = this.$control_input;\n\n      if (this.items.length) {\n        $input.removeAttr('placeholder');\n      } else {\n        $input.attr('placeholder', this.settings.placeholder);\n      }\n\n      $input.triggerHandler('update', {\n        force: true\n      });\n    },\n\n    /**\n     * Shows the autocomplete dropdown containing\n     * the available options.\n     */\n    open: function open() {\n      var self = this;\n      if (self.isLocked || self.isOpen || self.settings.mode === 'multi' && self.isFull()) return;\n      self.focus();\n      self.isOpen = true;\n      self.refreshState();\n      self.$dropdown.css({\n        visibility: 'hidden',\n        display: 'block'\n      });\n      self.positionDropdown();\n      self.$dropdown.css({\n        visibility: 'visible'\n      });\n      self.trigger('dropdown_open', self.$dropdown);\n    },\n\n    /**\n     * Closes the autocomplete dropdown menu.\n     */\n    close: function close() {\n      var self = this;\n      var trigger = self.isOpen;\n\n      if (self.settings.mode === 'single' && self.items.length) {\n        self.hideInput(); // Do not trigger blur while inside a blur event,\n        // this fixes some weird tabbing behavior in FF and IE.\n        // See #1164\n\n        if (!self.isBlurring) {\n          self.$control_input.blur(); // close keyboard on iOS\n        }\n      }\n\n      self.isOpen = false;\n      self.$dropdown.hide();\n      self.setActiveOption(null);\n      self.refreshState();\n      if (trigger) self.trigger('dropdown_close', self.$dropdown);\n    },\n\n    /**\n     * Calculates and applies the appropriate\n     * position of the dropdown.\n     */\n    positionDropdown: function positionDropdown() {\n      var $control = this.$control;\n      var offset = this.settings.dropdownParent === 'body' ? $control.offset() : $control.position();\n      offset.top += $control.outerHeight(true);\n      this.$dropdown.css({\n        width: $control[0].getBoundingClientRect().width,\n        top: offset.top,\n        left: offset.left\n      });\n    },\n\n    /**\n     * Resets / clears all selected items\n     * from the control.\n     *\n     * @param {boolean} silent\n     */\n    clear: function clear(silent) {\n      var self = this;\n      if (!self.items.length) return;\n      self.$control.children(':not(input)').remove();\n      self.items = [];\n      self.lastQuery = null;\n      self.setCaret(0);\n      self.setActiveItem(null);\n      self.updatePlaceholder();\n      self.updateOriginalInput({\n        silent: silent\n      });\n      self.refreshState();\n      self.showInput();\n      self.trigger('clear');\n    },\n\n    /**\n     * A helper method for inserting an element\n     * at the current caret position.\n     *\n     * @param {object} $el\n     */\n    insertAtCaret: function insertAtCaret($el) {\n      var caret = Math.min(this.caretPos, this.items.length);\n      var el = $el[0];\n      var target = this.buffer || this.$control[0];\n\n      if (caret === 0) {\n        target.insertBefore(el, target.firstChild);\n      } else {\n        target.insertBefore(el, target.childNodes[caret]);\n      }\n\n      this.setCaret(caret + 1);\n    },\n\n    /**\n     * Removes the current selected item(s).\n     *\n     * @param {object} e (optional)\n     * @returns {boolean}\n     */\n    deleteSelection: function deleteSelection(e) {\n      var i, n, direction, selection, values, caret, option_select, $option_select, $tail;\n      var self = this;\n      direction = e && e.keyCode === KEY_BACKSPACE ? -1 : 1;\n      selection = getSelection(self.$control_input[0]);\n\n      if (self.$activeOption && !self.settings.hideSelected) {\n        option_select = self.getAdjacentOption(self.$activeOption, -1).attr('data-value');\n      } // determine items that will be removed\n\n\n      values = [];\n\n      if (self.$activeItems.length) {\n        $tail = self.$control.children('.active:' + (direction > 0 ? 'last' : 'first'));\n        caret = self.$control.children(':not(input)').index($tail);\n\n        if (direction > 0) {\n          caret++;\n        }\n\n        for (i = 0, n = self.$activeItems.length; i < n; i++) {\n          values.push($(self.$activeItems[i]).attr('data-value'));\n        }\n\n        if (e) {\n          e.preventDefault();\n          e.stopPropagation();\n        }\n      } else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\n        if (direction < 0 && selection.start === 0 && selection.length === 0) {\n          values.push(self.items[self.caretPos - 1]);\n        } else if (direction > 0 && selection.start === self.$control_input.val().length) {\n          values.push(self.items[self.caretPos]);\n        }\n      } // allow the callback to abort\n\n\n      if (!values.length || typeof self.settings.onDelete === 'function' && self.settings.onDelete.apply(self, [values]) === false) {\n        return false;\n      } // perform removal\n\n\n      if (typeof caret !== 'undefined') {\n        self.setCaret(caret);\n      }\n\n      while (values.length) {\n        self.removeItem(values.pop());\n      }\n\n      self.showInput();\n      self.positionDropdown();\n      self.refreshOptions(true); // select previous option\n\n      if (option_select) {\n        $option_select = self.getOption(option_select);\n\n        if ($option_select.length) {\n          self.setActiveOption($option_select);\n        }\n      }\n\n      return true;\n    },\n\n    /**\n     * Selects the previous / next item (depending\n     * on the `direction` argument).\n     *\n     * > 0 - right\n     * < 0 - left\n     *\n     * @param {int} direction\n     * @param {object} e (optional)\n     */\n    advanceSelection: function advanceSelection(direction, e) {\n      var tail, selection, idx, valueLength, cursorAtEdge, $tail;\n      var self = this;\n      if (direction === 0) return;\n      if (self.rtl) direction *= -1;\n      tail = direction > 0 ? 'last' : 'first';\n      selection = getSelection(self.$control_input[0]);\n\n      if (self.isFocused && !self.isInputHidden) {\n        valueLength = self.$control_input.val().length;\n        cursorAtEdge = direction < 0 ? selection.start === 0 && selection.length === 0 : selection.start === valueLength;\n\n        if (cursorAtEdge && !valueLength) {\n          self.advanceCaret(direction, e);\n        }\n      } else {\n        $tail = self.$control.children('.active:' + tail);\n\n        if ($tail.length) {\n          idx = self.$control.children(':not(input)').index($tail);\n          self.setActiveItem(null);\n          self.setCaret(direction > 0 ? idx + 1 : idx);\n        }\n      }\n    },\n\n    /**\n     * Moves the caret left / right.\n     *\n     * @param {int} direction\n     * @param {object} e (optional)\n     */\n    advanceCaret: function advanceCaret(direction, e) {\n      var self = this,\n          fn,\n          $adj;\n      if (direction === 0) return;\n      fn = direction > 0 ? 'next' : 'prev';\n\n      if (self.isShiftDown) {\n        $adj = self.$control_input[fn]();\n\n        if ($adj.length) {\n          self.hideInput();\n          self.setActiveItem($adj);\n          e && e.preventDefault();\n        }\n      } else {\n        self.setCaret(self.caretPos + direction);\n      }\n    },\n\n    /**\n     * Moves the caret to the specified index.\n     *\n     * @param {int} i\n     */\n    setCaret: function setCaret(i) {\n      var self = this;\n\n      if (self.settings.mode === 'single') {\n        i = self.items.length;\n      } else {\n        i = Math.max(0, Math.min(self.items.length, i));\n      }\n\n      if (!self.isPending) {\n        // the input must be moved by leaving it in place and moving the\n        // siblings, due to the fact that focus cannot be restored once lost\n        // on mobile webkit devices\n        var j, n, fn, $children, $child;\n        $children = self.$control.children(':not(input)');\n\n        for (j = 0, n = $children.length; j < n; j++) {\n          $child = $($children[j]).detach();\n\n          if (j < i) {\n            self.$control_input.before($child);\n          } else {\n            self.$control.append($child);\n          }\n        }\n      }\n\n      self.caretPos = i;\n    },\n\n    /**\n     * Disables user input on the control. Used while\n     * items are being asynchronously created.\n     */\n    lock: function lock() {\n      this.close();\n      this.isLocked = true;\n      this.refreshState();\n    },\n\n    /**\n     * Re-enables user input on the control.\n     */\n    unlock: function unlock() {\n      this.isLocked = false;\n      this.refreshState();\n    },\n\n    /**\n     * Disables user input on the control completely.\n     * While disabled, it cannot receive focus.\n     */\n    disable: function disable() {\n      var self = this;\n      self.$input.prop('disabled', true);\n      self.$control_input.prop('disabled', true).prop('tabindex', -1);\n      self.isDisabled = true;\n      self.lock();\n    },\n\n    /**\n     * Enables the control so that it can respond\n     * to focus and user input.\n     */\n    enable: function enable() {\n      var self = this;\n      self.$input.prop('disabled', false);\n      self.$control_input.prop('disabled', false).prop('tabindex', self.tabIndex);\n      self.isDisabled = false;\n      self.unlock();\n    },\n\n    /**\n     * Completely destroys the control and\n     * unbinds all event listeners so that it can\n     * be garbage collected.\n     */\n    destroy: function destroy() {\n      var self = this;\n      var eventNS = self.eventNS;\n      var revertSettings = self.revertSettings;\n      self.trigger('destroy');\n      self.off();\n      self.$wrapper.remove();\n      self.$dropdown.remove();\n      self.$input.html('').append(revertSettings.$children).removeAttr('tabindex').removeClass('selectized').attr({\n        tabindex: revertSettings.tabindex\n      }).show();\n      self.$control_input.removeData('grow');\n      self.$input.removeData('selectize');\n\n      if (--Selectize.count == 0 && Selectize.$testInput) {\n        Selectize.$testInput.remove();\n        Selectize.$testInput = undefined;\n      }\n\n      $(window).off(eventNS);\n      $(document).off(eventNS);\n      $(document.body).off(eventNS);\n      delete self.$input[0].selectize;\n    },\n\n    /**\n     * A helper method for rendering \"item\" and\n     * \"option\" templates, given the data.\n     *\n     * @param {string} templateName\n     * @param {object} data\n     * @returns {string}\n     */\n    render: function render(templateName, data) {\n      var value, id, label;\n      var html = '';\n      var cache = false;\n      var self = this;\n      var regex_tag = /^[\\t \\r\\n]*<([a-z][a-z0-9\\-_]*(?:\\:[a-z][a-z0-9\\-_]*)?)/i;\n\n      if (templateName === 'option' || templateName === 'item') {\n        value = hash_key(data[self.settings.valueField]);\n        cache = !!value;\n      } // pull markup from cache if it exists\n\n\n      if (cache) {\n        if (!isset(self.renderCache[templateName])) {\n          self.renderCache[templateName] = {};\n        }\n\n        if (self.renderCache[templateName].hasOwnProperty(value)) {\n          return self.renderCache[templateName][value];\n        }\n      } // render markup\n\n\n      html = $(self.settings.render[templateName].apply(this, [data, escape_html])); // add mandatory attributes\n\n      if (templateName === 'option' || templateName === 'option_create') {\n        if (!data[self.settings.disabledField]) {\n          html.attr('data-selectable', '');\n        }\n      } else if (templateName === 'optgroup') {\n        id = data[self.settings.optgroupValueField] || '';\n        html.attr('data-group', id);\n\n        if (data[self.settings.disabledField]) {\n          html.attr('data-disabled', '');\n        }\n      }\n\n      if (templateName === 'option' || templateName === 'item') {\n        html.attr('data-value', value || '');\n      } // update cache\n\n\n      if (cache) {\n        self.renderCache[templateName][value] = html[0];\n      }\n\n      return html[0];\n    },\n\n    /**\n     * Clears the render cache for a template. If\n     * no template is given, clears all render\n     * caches.\n     *\n     * @param {string} templateName\n     */\n    clearCache: function clearCache(templateName) {\n      var self = this;\n\n      if (typeof templateName === 'undefined') {\n        self.renderCache = {};\n      } else {\n        delete self.renderCache[templateName];\n      }\n    },\n\n    /**\n     * Determines whether or not to display the\n     * create item prompt, given a user input.\n     *\n     * @param {string} input\n     * @return {boolean}\n     */\n    canCreate: function canCreate(input) {\n      var self = this;\n      if (!self.settings.create) return false;\n      var filter = self.settings.createFilter;\n      return input.length && (typeof filter !== 'function' || filter.apply(self, [input])) && (typeof filter !== 'string' || new RegExp(filter).test(input)) && (!(filter instanceof RegExp) || filter.test(input));\n    }\n  });\n  Selectize.count = 0;\n  Selectize.defaults = {\n    options: [],\n    optgroups: [],\n    plugins: [],\n    delimiter: ',',\n    splitOn: null,\n    // regexp or string for splitting up values from a paste command\n    persist: true,\n    diacritics: true,\n    create: false,\n    createOnBlur: false,\n    createFilter: null,\n    highlight: true,\n    openOnFocus: true,\n    maxOptions: 1000,\n    maxItems: null,\n    hideSelected: null,\n    addPrecedence: false,\n    selectOnTab: false,\n    preload: false,\n    allowEmptyOption: false,\n    closeAfterSelect: false,\n    scrollDuration: 60,\n    loadThrottle: 300,\n    loadingClass: 'loading',\n    dataAttr: 'data-data',\n    optgroupField: 'optgroup',\n    valueField: 'value',\n    labelField: 'text',\n    disabledField: 'disabled',\n    optgroupLabelField: 'label',\n    optgroupValueField: 'value',\n    lockOptgroupOrder: false,\n    sortField: '$order',\n    searchField: ['text'],\n    searchConjunction: 'and',\n    mode: null,\n    wrapperClass: 'selectize-control',\n    inputClass: 'selectize-input',\n    dropdownClass: 'selectize-dropdown',\n    dropdownContentClass: 'selectize-dropdown-content',\n    dropdownParent: null,\n    copyClassesToDropdown: true,\n\n    /*\n    load                 : null, // function(query, callback) { ... }\n    score                : null, // function(search) { ... }\n    onInitialize         : null, // function() { ... }\n    onChange             : null, // function(value) { ... }\n    onItemAdd            : null, // function(value, $item) { ... }\n    onItemRemove         : null, // function(value) { ... }\n    onClear              : null, // function() { ... }\n    onOptionAdd          : null, // function(value, data) { ... }\n    onOptionRemove       : null, // function(value) { ... }\n    onOptionClear        : null, // function() { ... }\n    onOptionGroupAdd     : null, // function(id, data) { ... }\n    onOptionGroupRemove  : null, // function(id) { ... }\n    onOptionGroupClear   : null, // function() { ... }\n    onDropdownOpen       : null, // function($dropdown) { ... }\n    onDropdownClose      : null, // function($dropdown) { ... }\n    onType               : null, // function(str) { ... }\n    onDelete             : null, // function(values) { ... }\n    */\n    render: {\n      /*\n      item: null,\n      optgroup: null,\n      optgroup_header: null,\n      option: null,\n      option_create: null\n      */\n    }\n  };\n\n  $.fn.selectize = function (settings_user) {\n    var defaults = $.fn.selectize.defaults;\n    var settings = $.extend({}, defaults, settings_user);\n    var attr_data = settings.dataAttr;\n    var field_label = settings.labelField;\n    var field_value = settings.valueField;\n    var field_disabled = settings.disabledField;\n    var field_optgroup = settings.optgroupField;\n    var field_optgroup_label = settings.optgroupLabelField;\n    var field_optgroup_value = settings.optgroupValueField;\n    /**\n     * Initializes selectize from a <input type=\"text\"> element.\n     *\n     * @param {object} $input\n     * @param {object} settings_element\n     */\n\n    var init_textbox = function init_textbox($input, settings_element) {\n      var i, n, values, option;\n      var data_raw = $input.attr(attr_data);\n\n      if (!data_raw) {\n        var value = $.trim($input.val() || '');\n        if (!settings.allowEmptyOption && !value.length) return;\n        values = value.split(settings.delimiter);\n\n        for (i = 0, n = values.length; i < n; i++) {\n          option = {};\n          option[field_label] = values[i];\n          option[field_value] = values[i];\n          settings_element.options.push(option);\n        }\n\n        settings_element.items = values;\n      } else {\n        settings_element.options = JSON.parse(data_raw);\n\n        for (i = 0, n = settings_element.options.length; i < n; i++) {\n          settings_element.items.push(settings_element.options[i][field_value]);\n        }\n      }\n    };\n    /**\n     * Initializes selectize from a <select> element.\n     *\n     * @param {object} $input\n     * @param {object} settings_element\n     */\n\n\n    var init_select = function init_select($input, settings_element) {\n      var i,\n          n,\n          tagName,\n          $children,\n          order = 0;\n      var options = settings_element.options;\n      var optionsMap = {};\n\n      var readData = function readData($el) {\n        var data = attr_data && $el.attr(attr_data);\n\n        if (typeof data === 'string' && data.length) {\n          return JSON.parse(data);\n        }\n\n        return null;\n      };\n\n      var addOption = function addOption($option, group) {\n        $option = $($option);\n        var value = hash_key($option.val());\n        if (!value && !settings.allowEmptyOption) return; // if the option already exists, it's probably been\n        // duplicated in another optgroup. in this case, push\n        // the current group to the \"optgroup\" property on the\n        // existing option so that it's rendered in both places.\n\n        if (optionsMap.hasOwnProperty(value)) {\n          if (group) {\n            var arr = optionsMap[value][field_optgroup];\n\n            if (!arr) {\n              optionsMap[value][field_optgroup] = group;\n            } else if (!$.isArray(arr)) {\n              optionsMap[value][field_optgroup] = [arr, group];\n            } else {\n              arr.push(group);\n            }\n          }\n\n          return;\n        }\n\n        var option = readData($option) || {};\n        option[field_label] = option[field_label] || $option.text();\n        option[field_value] = option[field_value] || value;\n        option[field_disabled] = option[field_disabled] || $option.prop('disabled');\n        option[field_optgroup] = option[field_optgroup] || group;\n        optionsMap[value] = option;\n        options.push(option);\n\n        if ($option.is(':selected')) {\n          settings_element.items.push(value);\n        }\n      };\n\n      var addGroup = function addGroup($optgroup) {\n        var i, n, id, optgroup, $options;\n        $optgroup = $($optgroup);\n        id = $optgroup.attr('label');\n\n        if (id) {\n          optgroup = readData($optgroup) || {};\n          optgroup[field_optgroup_label] = id;\n          optgroup[field_optgroup_value] = id;\n          optgroup[field_disabled] = $optgroup.prop('disabled');\n          settings_element.optgroups.push(optgroup);\n        }\n\n        $options = $('option', $optgroup);\n\n        for (i = 0, n = $options.length; i < n; i++) {\n          addOption($options[i], id);\n        }\n      };\n\n      settings_element.maxItems = $input.attr('multiple') ? null : 1;\n      $children = $input.children();\n\n      for (i = 0, n = $children.length; i < n; i++) {\n        tagName = $children[i].tagName.toLowerCase();\n\n        if (tagName === 'optgroup') {\n          addGroup($children[i]);\n        } else if (tagName === 'option') {\n          addOption($children[i]);\n        }\n      }\n    };\n\n    return this.each(function () {\n      if (this.selectize) return;\n      var instance;\n      var $input = $(this);\n      var tag_name = this.tagName.toLowerCase();\n      var placeholder = $input.attr('placeholder') || $input.attr('data-placeholder');\n\n      if (!placeholder && !settings.allowEmptyOption) {\n        placeholder = $input.children('option[value=\"\"]').text();\n      }\n\n      var settings_element = {\n        'placeholder': placeholder,\n        'options': [],\n        'optgroups': [],\n        'items': []\n      };\n\n      if (tag_name === 'select') {\n        init_select($input, settings_element);\n      } else {\n        init_textbox($input, settings_element);\n      }\n\n      instance = new Selectize($input, $.extend(true, {}, defaults, settings_element, settings_user));\n    });\n  };\n\n  $.fn.selectize.defaults = Selectize.defaults;\n  $.fn.selectize.support = {\n    validity: SUPPORTS_VALIDITY_API\n  };\n  Selectize.define('drag_drop', function (options) {\n    if (!$.fn.sortable) throw new Error('The \"drag_drop\" plugin requires jQuery UI \"sortable\".');\n    if (this.settings.mode !== 'multi') return;\n    var self = this;\n\n    self.lock = function () {\n      var original = self.lock;\n      return function () {\n        var sortable = self.$control.data('sortable');\n        if (sortable) sortable.disable();\n        return original.apply(self, arguments);\n      };\n    }();\n\n    self.unlock = function () {\n      var original = self.unlock;\n      return function () {\n        var sortable = self.$control.data('sortable');\n        if (sortable) sortable.enable();\n        return original.apply(self, arguments);\n      };\n    }();\n\n    self.setup = function () {\n      var original = self.setup;\n      return function () {\n        original.apply(this, arguments);\n        var $control = self.$control.sortable({\n          items: '[data-value]',\n          forcePlaceholderSize: true,\n          disabled: self.isLocked,\n          start: function start(e, ui) {\n            ui.placeholder.css('width', ui.helper.css('width'));\n            $control.css({\n              overflow: 'visible'\n            });\n          },\n          stop: function stop() {\n            $control.css({\n              overflow: 'hidden'\n            });\n            var active = self.$activeItems ? self.$activeItems.slice() : null;\n            var values = [];\n            $control.children('[data-value]').each(function () {\n              values.push($(this).attr('data-value'));\n            });\n            self.setValue(values);\n            self.setActiveItem(active);\n          }\n        });\n      };\n    }();\n  });\n  Selectize.define('dropdown_header', function (options) {\n    var self = this;\n    options = $.extend({\n      title: 'Untitled',\n      headerClass: 'selectize-dropdown-header',\n      titleRowClass: 'selectize-dropdown-header-title',\n      labelClass: 'selectize-dropdown-header-label',\n      closeClass: 'selectize-dropdown-header-close',\n      html: function html(data) {\n        return '<div class=\"' + data.headerClass + '\">' + '<div class=\"' + data.titleRowClass + '\">' + '<span class=\"' + data.labelClass + '\">' + data.title + '</span>' + '<a href=\"javascript:void(0)\" class=\"' + data.closeClass + '\">&times;</a>' + '</div>' + '</div>';\n      }\n    }, options);\n\n    self.setup = function () {\n      var original = self.setup;\n      return function () {\n        original.apply(self, arguments);\n        self.$dropdown_header = $(options.html(options));\n        self.$dropdown.prepend(self.$dropdown_header);\n      };\n    }();\n  });\n  Selectize.define('optgroup_columns', function (options) {\n    var self = this;\n    options = $.extend({\n      equalizeWidth: true,\n      equalizeHeight: true\n    }, options);\n\n    this.getAdjacentOption = function ($option, direction) {\n      var $options = $option.closest('[data-group]').find('[data-selectable]');\n      var index = $options.index($option) + direction;\n      return index >= 0 && index < $options.length ? $options.eq(index) : $();\n    };\n\n    this.onKeyDown = function () {\n      var original = self.onKeyDown;\n      return function (e) {\n        var index, $option, $options, $optgroup;\n\n        if (this.isOpen && (e.keyCode === KEY_LEFT || e.keyCode === KEY_RIGHT)) {\n          self.ignoreHover = true;\n          $optgroup = this.$activeOption.closest('[data-group]');\n          index = $optgroup.find('[data-selectable]').index(this.$activeOption);\n\n          if (e.keyCode === KEY_LEFT) {\n            $optgroup = $optgroup.prev('[data-group]');\n          } else {\n            $optgroup = $optgroup.next('[data-group]');\n          }\n\n          $options = $optgroup.find('[data-selectable]');\n          $option = $options.eq(Math.min($options.length - 1, index));\n\n          if ($option.length) {\n            this.setActiveOption($option);\n          }\n\n          return;\n        }\n\n        return original.apply(this, arguments);\n      };\n    }();\n\n    var getScrollbarWidth = function getScrollbarWidth() {\n      var div;\n      var width = getScrollbarWidth.width;\n      var doc = document;\n\n      if (typeof width === 'undefined') {\n        div = doc.createElement('div');\n        div.innerHTML = '<div style=\"width:50px;height:50px;position:absolute;left:-50px;top:-50px;overflow:auto;\"><div style=\"width:1px;height:100px;\"></div></div>';\n        div = div.firstChild;\n        doc.body.appendChild(div);\n        width = getScrollbarWidth.width = div.offsetWidth - div.clientWidth;\n        doc.body.removeChild(div);\n      }\n\n      return width;\n    };\n\n    var equalizeSizes = function equalizeSizes() {\n      var i, n, height_max, width, width_last, width_parent, $optgroups;\n      $optgroups = $('[data-group]', self.$dropdown_content);\n      n = $optgroups.length;\n      if (!n || !self.$dropdown_content.width()) return;\n\n      if (options.equalizeHeight) {\n        height_max = 0;\n\n        for (i = 0; i < n; i++) {\n          height_max = Math.max(height_max, $optgroups.eq(i).height());\n        }\n\n        $optgroups.css({\n          height: height_max\n        });\n      }\n\n      if (options.equalizeWidth) {\n        width_parent = self.$dropdown_content.innerWidth() - getScrollbarWidth();\n        width = Math.round(width_parent / n);\n        $optgroups.css({\n          width: width\n        });\n\n        if (n > 1) {\n          width_last = width_parent - width * (n - 1);\n          $optgroups.eq(n - 1).css({\n            width: width_last\n          });\n        }\n      }\n    };\n\n    if (options.equalizeHeight || options.equalizeWidth) {\n      hook.after(this, 'positionDropdown', equalizeSizes);\n      hook.after(this, 'refreshOptions', equalizeSizes);\n    }\n  });\n  Selectize.define('remove_button', function (options) {\n    options = $.extend({\n      label: '&times;',\n      title: 'Remove',\n      className: 'remove',\n      append: true\n    }, options);\n\n    var singleClose = function singleClose(thisRef, options) {\n      options.className = 'remove-single';\n      var self = thisRef;\n      var html = '<a href=\"javascript:void(0)\" class=\"' + options.className + '\" tabindex=\"-1\" title=\"' + escape_html(options.title) + '\">' + options.label + '</a>';\n      /**\n       * Appends an element as a child (with raw HTML).\n       *\n       * @param {string} html_container\n       * @param {string} html_element\n       * @return {string}\n       */\n\n      var append = function append(html_container, html_element) {\n        return $('<span>').append(html_container).append(html_element);\n      };\n\n      thisRef.setup = function () {\n        var original = self.setup;\n        return function () {\n          // override the item rendering method to add the button to each\n          if (options.append) {\n            var id = $(self.$input.context).attr('id');\n            var selectizer = $('#' + id);\n            var render_item = self.settings.render.item;\n\n            self.settings.render.item = function (data) {\n              return append(render_item.apply(thisRef, arguments), html);\n            };\n          }\n\n          original.apply(thisRef, arguments); // add event listener\n\n          thisRef.$control.on('click', '.' + options.className, function (e) {\n            e.preventDefault();\n            if (self.isLocked) return;\n            self.clear();\n          });\n        };\n      }();\n    };\n\n    var multiClose = function multiClose(thisRef, options) {\n      var self = thisRef;\n      var html = '<a href=\"javascript:void(0)\" class=\"' + options.className + '\" tabindex=\"-1\" title=\"' + escape_html(options.title) + '\">' + options.label + '</a>';\n      /**\n       * Appends an element as a child (with raw HTML).\n       *\n       * @param {string} html_container\n       * @param {string} html_element\n       * @return {string}\n       */\n\n      var append = function append(html_container, html_element) {\n        var pos = html_container.search(/(<\\/[^>]+>\\s*)$/);\n        return html_container.substring(0, pos) + html_element + html_container.substring(pos);\n      };\n\n      thisRef.setup = function () {\n        var original = self.setup;\n        return function () {\n          // override the item rendering method to add the button to each\n          if (options.append) {\n            var render_item = self.settings.render.item;\n\n            self.settings.render.item = function (data) {\n              return append(render_item.apply(thisRef, arguments), html);\n            };\n          }\n\n          original.apply(thisRef, arguments); // add event listener\n\n          thisRef.$control.on('click', '.' + options.className, function (e) {\n            e.preventDefault();\n            if (self.isLocked) return;\n            var $item = $(e.currentTarget).parent();\n            self.setActiveItem($item);\n\n            if (self.deleteSelection()) {\n              self.setCaret(self.items.length);\n            }\n          });\n        };\n      }();\n    };\n\n    if (this.settings.mode === 'single') {\n      singleClose(this, options);\n      return;\n    } else {\n      multiClose(this, options);\n    }\n  });\n  Selectize.define('restore_on_backspace', function (options) {\n    var self = this;\n\n    options.text = options.text || function (option) {\n      return option[this.settings.labelField];\n    };\n\n    this.onKeyDown = function () {\n      var original = self.onKeyDown;\n      return function (e) {\n        var index, option;\n\n        if (e.keyCode === KEY_BACKSPACE && this.$control_input.val() === '' && !this.$activeItems.length) {\n          index = this.caretPos - 1;\n\n          if (index >= 0 && index < this.items.length) {\n            option = this.options[this.items[index]];\n\n            if (this.deleteSelection(e)) {\n              this.setTextboxValue(options.text.apply(this, [option]));\n              this.refreshOptions(true);\n            }\n\n            e.preventDefault();\n            return;\n          }\n        }\n\n        return original.apply(this, arguments);\n      };\n    }();\n  });\n  return Selectize;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/**\n * sifter.js\n * Copyright (c) 2013 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define(factory);\n  } else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object') {\n    module.exports = factory();\n  } else {\n    root.Sifter = factory();\n  }\n})(this, function () {\n  /**\n   * Textually searches arrays and hashes of objects\n   * by property (or multiple properties). Designed\n   * specifically for autocomplete.\n   *\n   * @constructor\n   * @param {array|object} items\n   * @param {object} items\n   */\n  var Sifter = function Sifter(items, settings) {\n    this.items = items;\n    this.settings = settings || {\n      diacritics: true\n    };\n  };\n  /**\n   * Splits a search string into an array of individual\n   * regexps to be used to match results.\n   *\n   * @param {string} query\n   * @returns {array}\n   */\n\n\n  Sifter.prototype.tokenize = function (query) {\n    query = trim(String(query || '').toLowerCase());\n    if (!query || !query.length) return [];\n    var i, n, regex, letter;\n    var tokens = [];\n    var words = query.split(/ +/);\n\n    for (i = 0, n = words.length; i < n; i++) {\n      regex = escape_regex(words[i]);\n\n      if (this.settings.diacritics) {\n        for (letter in DIACRITICS) {\n          if (DIACRITICS.hasOwnProperty(letter)) {\n            regex = regex.replace(new RegExp(letter, 'g'), DIACRITICS[letter]);\n          }\n        }\n      }\n\n      tokens.push({\n        string: words[i],\n        regex: new RegExp(regex, 'i')\n      });\n    }\n\n    return tokens;\n  };\n  /**\n   * Iterates over arrays and hashes.\n   *\n   * ```\n   * this.iterator(this.items, function(item, id) {\n   *    // invoked for each item\n   * });\n   * ```\n   *\n   * @param {array|object} object\n   */\n\n\n  Sifter.prototype.iterator = function (object, callback) {\n    var iterator;\n\n    if (is_array(object)) {\n      iterator = Array.prototype.forEach || function (callback) {\n        for (var i = 0, n = this.length; i < n; i++) {\n          callback(this[i], i, this);\n        }\n      };\n    } else {\n      iterator = function iterator(callback) {\n        for (var key in this) {\n          if (this.hasOwnProperty(key)) {\n            callback(this[key], key, this);\n          }\n        }\n      };\n    }\n\n    iterator.apply(object, [callback]);\n  };\n  /**\n   * Returns a function to be used to score individual results.\n   *\n   * Good matches will have a higher score than poor matches.\n   * If an item is not a match, 0 will be returned by the function.\n   *\n   * @param {object|string} search\n   * @param {object} options (optional)\n   * @returns {function}\n   */\n\n\n  Sifter.prototype.getScoreFunction = function (search, options) {\n    var self, fields, tokens, token_count, nesting;\n    self = this;\n    search = self.prepareSearch(search, options);\n    tokens = search.tokens;\n    fields = search.options.fields;\n    token_count = tokens.length;\n    nesting = search.options.nesting;\n    /**\n     * Calculates how close of a match the\n     * given value is against a search token.\n     *\n     * @param {mixed} value\n     * @param {object} token\n     * @return {number}\n     */\n\n    var scoreValue = function scoreValue(value, token) {\n      var score, pos;\n      if (!value) return 0;\n      value = String(value || '');\n      pos = value.search(token.regex);\n      if (pos === -1) return 0;\n      score = token.string.length / value.length;\n      if (pos === 0) score += 0.5;\n      return score;\n    };\n    /**\n     * Calculates the score of an object\n     * against the search query.\n     *\n     * @param {object} token\n     * @param {object} data\n     * @return {number}\n     */\n\n\n    var scoreObject = function () {\n      var field_count = fields.length;\n\n      if (!field_count) {\n        return function () {\n          return 0;\n        };\n      }\n\n      if (field_count === 1) {\n        return function (token, data) {\n          return scoreValue(getattr(data, fields[0], nesting), token);\n        };\n      }\n\n      return function (token, data) {\n        for (var i = 0, sum = 0; i < field_count; i++) {\n          sum += scoreValue(getattr(data, fields[i], nesting), token);\n        }\n\n        return sum / field_count;\n      };\n    }();\n\n    if (!token_count) {\n      return function () {\n        return 0;\n      };\n    }\n\n    if (token_count === 1) {\n      return function (data) {\n        return scoreObject(tokens[0], data);\n      };\n    }\n\n    if (search.options.conjunction === 'and') {\n      return function (data) {\n        var score;\n\n        for (var i = 0, sum = 0; i < token_count; i++) {\n          score = scoreObject(tokens[i], data);\n          if (score <= 0) return 0;\n          sum += score;\n        }\n\n        return sum / token_count;\n      };\n    } else {\n      return function (data) {\n        for (var i = 0, sum = 0; i < token_count; i++) {\n          sum += scoreObject(tokens[i], data);\n        }\n\n        return sum / token_count;\n      };\n    }\n  };\n  /**\n   * Returns a function that can be used to compare two\n   * results, for sorting purposes. If no sorting should\n   * be performed, `null` will be returned.\n   *\n   * @param {string|object} search\n   * @param {object} options\n   * @return function(a,b)\n   */\n\n\n  Sifter.prototype.getSortFunction = function (search, options) {\n    var i, n, self, field, fields, fields_count, multiplier, multipliers, get_field, implicit_score, sort;\n    self = this;\n    search = self.prepareSearch(search, options);\n    sort = !search.query && options.sort_empty || options.sort;\n    /**\n     * Fetches the specified sort field value\n     * from a search result item.\n     *\n     * @param  {string} name\n     * @param  {object} result\n     * @return {mixed}\n     */\n\n    get_field = function get_field(name, result) {\n      if (name === '$score') return result.score;\n      return getattr(self.items[result.id], name, options.nesting);\n    }; // parse options\n\n\n    fields = [];\n\n    if (sort) {\n      for (i = 0, n = sort.length; i < n; i++) {\n        if (search.query || sort[i].field !== '$score') {\n          fields.push(sort[i]);\n        }\n      }\n    } // the \"$score\" field is implied to be the primary\n    // sort field, unless it's manually specified\n\n\n    if (search.query) {\n      implicit_score = true;\n\n      for (i = 0, n = fields.length; i < n; i++) {\n        if (fields[i].field === '$score') {\n          implicit_score = false;\n          break;\n        }\n      }\n\n      if (implicit_score) {\n        fields.unshift({\n          field: '$score',\n          direction: 'desc'\n        });\n      }\n    } else {\n      for (i = 0, n = fields.length; i < n; i++) {\n        if (fields[i].field === '$score') {\n          fields.splice(i, 1);\n          break;\n        }\n      }\n    }\n\n    multipliers = [];\n\n    for (i = 0, n = fields.length; i < n; i++) {\n      multipliers.push(fields[i].direction === 'desc' ? -1 : 1);\n    } // build function\n\n\n    fields_count = fields.length;\n\n    if (!fields_count) {\n      return null;\n    } else if (fields_count === 1) {\n      field = fields[0].field;\n      multiplier = multipliers[0];\n      return function (a, b) {\n        return multiplier * cmp(get_field(field, a), get_field(field, b));\n      };\n    } else {\n      return function (a, b) {\n        var i, result, a_value, b_value, field;\n\n        for (i = 0; i < fields_count; i++) {\n          field = fields[i].field;\n          result = multipliers[i] * cmp(get_field(field, a), get_field(field, b));\n          if (result) return result;\n        }\n\n        return 0;\n      };\n    }\n  };\n  /**\n   * Parses a search query and returns an object\n   * with tokens and fields ready to be populated\n   * with results.\n   *\n   * @param {string} query\n   * @param {object} options\n   * @returns {object}\n   */\n\n\n  Sifter.prototype.prepareSearch = function (query, options) {\n    if (_typeof(query) === 'object') return query;\n    options = extend({}, options);\n    var option_fields = options.fields;\n    var option_sort = options.sort;\n    var option_sort_empty = options.sort_empty;\n    if (option_fields && !is_array(option_fields)) options.fields = [option_fields];\n    if (option_sort && !is_array(option_sort)) options.sort = [option_sort];\n    if (option_sort_empty && !is_array(option_sort_empty)) options.sort_empty = [option_sort_empty];\n    return {\n      options: options,\n      query: String(query || '').toLowerCase(),\n      tokens: this.tokenize(query),\n      total: 0,\n      items: []\n    };\n  };\n  /**\n   * Searches through all items and returns a sorted array of matches.\n   *\n   * The `options` parameter can contain:\n   *\n   *   - fields {string|array}\n   *   - sort {array}\n   *   - score {function}\n   *   - filter {bool}\n   *   - limit {integer}\n   *\n   * Returns an object containing:\n   *\n   *   - options {object}\n   *   - query {string}\n   *   - tokens {array}\n   *   - total {int}\n   *   - items {array}\n   *\n   * @param {string} query\n   * @param {object} options\n   * @returns {object}\n   */\n\n\n  Sifter.prototype.search = function (query, options) {\n    var self = this,\n        value,\n        score,\n        search,\n        calculateScore;\n    var fn_sort;\n    var fn_score;\n    search = this.prepareSearch(query, options);\n    options = search.options;\n    query = search.query; // generate result scoring function\n\n    fn_score = options.score || self.getScoreFunction(search); // perform search and sort\n\n    if (query.length) {\n      self.iterator(self.items, function (item, id) {\n        score = fn_score(item);\n\n        if (options.filter === false || score > 0) {\n          search.items.push({\n            'score': score,\n            'id': id\n          });\n        }\n      });\n    } else {\n      self.iterator(self.items, function (item, id) {\n        search.items.push({\n          'score': 1,\n          'id': id\n        });\n      });\n    }\n\n    fn_sort = self.getSortFunction(search, options);\n    if (fn_sort) search.items.sort(fn_sort); // apply limits\n\n    search.total = search.items.length;\n\n    if (typeof options.limit === 'number') {\n      search.items = search.items.slice(0, options.limit);\n    }\n\n    return search;\n  }; // utilities\n  // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n\n  var cmp = function cmp(a, b) {\n    if (typeof a === 'number' && typeof b === 'number') {\n      return a > b ? 1 : a < b ? -1 : 0;\n    }\n\n    a = asciifold(String(a || ''));\n    b = asciifold(String(b || ''));\n    if (a > b) return 1;\n    if (b > a) return -1;\n    return 0;\n  };\n\n  var extend = function extend(a, b) {\n    var i, n, k, object;\n\n    for (i = 1, n = arguments.length; i < n; i++) {\n      object = arguments[i];\n      if (!object) continue;\n\n      for (k in object) {\n        if (object.hasOwnProperty(k)) {\n          a[k] = object[k];\n        }\n      }\n    }\n\n    return a;\n  };\n  /**\n   * A property getter resolving dot-notation\n   * @param  {Object}  obj     The root object to fetch property on\n   * @param  {String}  name    The optionally dotted property name to fetch\n   * @param  {Boolean} nesting Handle nesting or not\n   * @return {Object}          The resolved property value\n   */\n\n\n  var getattr = function getattr(obj, name, nesting) {\n    if (!obj || !name) return;\n    if (!nesting) return obj[name];\n    var names = name.split(\".\");\n\n    while (names.length && (obj = obj[names.shift()])) {\n      ;\n    }\n\n    return obj;\n  };\n\n  var trim = function trim(str) {\n    return (str + '').replace(/^\\s+|\\s+$|/g, '');\n  };\n\n  var escape_regex = function escape_regex(str) {\n    return (str + '').replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n  };\n\n  var is_array = Array.isArray || typeof $ !== 'undefined' && $.isArray || function (object) {\n    return Object.prototype.toString.call(object) === '[object Array]';\n  };\n\n  var DIACRITICS = {\n    'a': '[aḀḁĂăÂâǍǎȺⱥȦȧẠạÄäÀàÁáĀāÃãÅåąĄÃąĄ]',\n    'b': '[b␢βΒB฿𐌁ᛒ]',\n    'c': '[cĆćĈĉČčĊċC̄c̄ÇçḈḉȻȼƇƈɕᴄCc]',\n    'd': '[dĎďḊḋḐḑḌḍḒḓḎḏĐđD̦d̦ƉɖƊɗƋƌᵭᶁᶑȡᴅDdð]',\n    'e': '[eÉéÈèÊêḘḙĚěĔĕẼẽḚḛẺẻĖėËëĒēȨȩĘęᶒɆɇȄȅẾếỀềỄễỂểḜḝḖḗḔḕȆȇẸẹỆệⱸᴇEeɘǝƏƐε]',\n    'f': '[fƑƒḞḟ]',\n    'g': '[gɢ₲ǤǥĜĝĞğĢģƓɠĠġ]',\n    'h': '[hĤĥĦħḨḩẖẖḤḥḢḣɦʰǶƕ]',\n    'i': '[iÍíÌìĬĭÎîǏǐÏïḮḯĨĩĮįĪīỈỉȈȉȊȋỊịḬḭƗɨɨ̆ᵻᶖİiIıɪIi]',\n    'j': '[jȷĴĵɈɉʝɟʲ]',\n    'k': '[kƘƙꝀꝁḰḱǨǩḲḳḴḵκϰ₭]',\n    'l': '[lŁłĽľĻļĹĺḶḷḸḹḼḽḺḻĿŀȽƚⱠⱡⱢɫɬᶅɭȴʟLl]',\n    'n': '[nŃńǸǹŇňÑñṄṅŅņṆṇṊṋṈṉN̈n̈ƝɲȠƞᵰᶇɳȵɴNnŊŋ]',\n    'o': '[oØøÖöÓóÒòÔôǑǒŐőŎŏȮȯỌọƟɵƠơỎỏŌōÕõǪǫȌȍՕօ]',\n    'p': '[pṔṕṖṗⱣᵽƤƥᵱ]',\n    'q': '[qꝖꝗʠɊɋꝘꝙq̃]',\n    'r': '[rŔŕɌɍŘřŖŗṘṙȐȑȒȓṚṛⱤɽ]',\n    's': '[sŚśṠṡṢṣꞨꞩŜŝŠšŞşȘșS̈s̈]',\n    't': '[tŤťṪṫŢţṬṭƮʈȚțṰṱṮṯƬƭ]',\n    'u': '[uŬŭɄʉỤụÜüÚúÙùÛûǓǔŰűŬŭƯưỦủŪūŨũŲųȔȕ∪]',\n    'v': '[vṼṽṾṿƲʋꝞꝟⱱʋ]',\n    'w': '[wẂẃẀẁŴŵẄẅẆẇẈẉ]',\n    'x': '[xẌẍẊẋχ]',\n    'y': '[yÝýỲỳŶŷŸÿỸỹẎẏỴỵɎɏƳƴ]',\n    'z': '[zŹźẐẑŽžŻżẒẓẔẕƵƶ]'\n  };\n\n  var asciifold = function () {\n    var i, n, k, chunk;\n    var foreignletters = '';\n    var lookup = {};\n\n    for (k in DIACRITICS) {\n      if (DIACRITICS.hasOwnProperty(k)) {\n        chunk = DIACRITICS[k].substring(2, DIACRITICS[k].length - 1);\n        foreignletters += chunk;\n\n        for (i = 0, n = chunk.length; i < n; i++) {\n          lookup[chunk.charAt(i)] = k;\n        }\n      }\n    }\n\n    var regexp = new RegExp('[' + foreignletters + ']', 'g');\n    return function (str) {\n      return str.replace(regexp, function (foreignletter) {\n        return lookup[foreignletter];\n      }).toLowerCase();\n    };\n  }(); // export\n  // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n\n  return Sifter;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/**\n * microplugin.js\n * Copyright (c) 2013 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define(factory);\n  } else if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object') {\n    module.exports = factory();\n  } else {\n    root.MicroPlugin = factory();\n  }\n})(this, function () {\n  var MicroPlugin = {};\n\n  MicroPlugin.mixin = function (Interface) {\n    Interface.plugins = {};\n    /**\n     * Initializes the listed plugins (with options).\n     * Acceptable formats:\n     *\n     * List (without options):\n     *   ['a', 'b', 'c']\n     *\n     * List (with options):\n     *   [{'name': 'a', options: {}}, {'name': 'b', options: {}}]\n     *\n     * Hash (with options):\n     *   {'a': { ... }, 'b': { ... }, 'c': { ... }}\n     *\n     * @param {mixed} plugins\n     */\n\n    Interface.prototype.initializePlugins = function (plugins) {\n      var i, n, key;\n      var self = this;\n      var queue = [];\n      self.plugins = {\n        names: [],\n        settings: {},\n        requested: {},\n        loaded: {}\n      };\n\n      if (utils.isArray(plugins)) {\n        for (i = 0, n = plugins.length; i < n; i++) {\n          if (typeof plugins[i] === 'string') {\n            queue.push(plugins[i]);\n          } else {\n            self.plugins.settings[plugins[i].name] = plugins[i].options;\n            queue.push(plugins[i].name);\n          }\n        }\n      } else if (plugins) {\n        for (key in plugins) {\n          if (plugins.hasOwnProperty(key)) {\n            self.plugins.settings[key] = plugins[key];\n            queue.push(key);\n          }\n        }\n      }\n\n      while (queue.length) {\n        self.require(queue.shift());\n      }\n    };\n\n    Interface.prototype.loadPlugin = function (name) {\n      var self = this;\n      var plugins = self.plugins;\n      var plugin = Interface.plugins[name];\n\n      if (!Interface.plugins.hasOwnProperty(name)) {\n        throw new Error('Unable to find \"' + name + '\" plugin');\n      }\n\n      plugins.requested[name] = true;\n      plugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);\n      plugins.names.push(name);\n    };\n    /**\n     * Initializes a plugin.\n     *\n     * @param {string} name\n     */\n\n\n    Interface.prototype.require = function (name) {\n      var self = this;\n      var plugins = self.plugins;\n\n      if (!self.plugins.loaded.hasOwnProperty(name)) {\n        if (plugins.requested[name]) {\n          throw new Error('Plugin has circular dependency (\"' + name + '\")');\n        }\n\n        self.loadPlugin(name);\n      }\n\n      return plugins.loaded[name];\n    };\n    /**\n     * Registers a plugin.\n     *\n     * @param {string} name\n     * @param {function} fn\n     */\n\n\n    Interface.define = function (name, fn) {\n      Interface.plugins[name] = {\n        'name': name,\n        'fn': fn\n      };\n    };\n  };\n\n  var utils = {\n    isArray: Array.isArray || function (vArg) {\n      return Object.prototype.toString.call(vArg) === '[object Array]';\n    }\n  };\n  return MicroPlugin;\n});","// Mobile Search Functionality\n\ndocument.addEventListener('turbolinks:load', (event) => {\n  const mobileSearchActivationBtn = document.getElementById('mobileSearchBtn');\n  const mobileSearchBackBtn = document.getElementById('mobileSearchReturnBtn');\n\n  if (mobileSearchActivationBtn && mobileSearchBackBtn) {\n    const nav = document.querySelector('nav.navbar');\n    mobileSearchActivationBtn.addEventListener('click', () => {\n      nav.classList.add('mobile-search-active');\n    });\n\n    mobileSearchBackBtn.addEventListener('click', () => {\n      nav.classList.remove('mobile-search-active');\n    });\n  }\n});\n","(function () {\n  const Turbolinks = require('turbolinks');\n  let scrollPosition;\n\n  document.addEventListener('turbolinks:load', () => {\n    if (scrollPosition) {\n      window.scrollTo(...scrollPosition);\n      scrollPosition = null;\n    }\n  }, false);\n\n  window.reloadTurbolinks = function () {\n    scrollPosition = [window.scrollX, window.scrollY];\n    Turbolinks.visit(window.location, { action: 'replace' });\n  };\n})();\n","var map = {\n\t\"./details-dialog-element.js\": 317\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 438;","// Action Cable provides the framework to deal with WebSockets in Rails.\n// You can generate new channels where WebSocket features live using the `rails generate channel` command.\n\nimport { createConsumer } from '@rails/actioncable';\n\nexport default createConsumer();\n","import Vue from 'vue';\n\nexport const EventBus = new Vue();\n","import * as qs from 'qs';\n\n/**\n * @description Construct a URL with query params\n * @example\n * constructURL('/about', { user_id: 1 }).toString();\n * // => '/about?user_id=1'\n *\n * constructURL(window.location.href, { user_ids: [1, 2] }).toString();\n * // => '/pricing?user_ids[]=1&user_ids[]=2' // Rails `params` friendly\n */\nexport function constructURL(string: string, params: { [key: string]: string | string[] | null }) {\n  const { url, searchParams } = getURLDetails(string);\n  const hash = { ...qs.parse(searchParams.toString()), ...params };\n  const sorted = Object.keys(hash)\n    .sort()\n    .reduce((acc, key) => ({ ...acc, [key]: hash[key] }), {});\n\n  url.search = qs.stringify(sorted, { arrayFormat: 'brackets', skipNulls: true });\n  return url;\n}\n\n/**\n * @description Compare between two URLs\n */\nexport function isEqual(a: string, b: string) {\n  const { url: urlA, searchParams: searchParamsA } = getURLDetails(a);\n  const { url: urlB, searchParams: searchParamsB } = getURLDetails(b);\n\n  if (urlA.origin !== urlB.origin || urlA.pathname !== urlB.pathname) return false;\n  if (searchParamsA.toString() !== searchParamsB.toString()) return false;\n  return true;\n}\n\n/**\n * @description Get normalized `url` and `searchParams` from a URL or a string\n */\nexport function getURLDetails(url: string | URL) {\n  const baseURL = new URL(url, window.location.href);\n  const searchParams = new URLSearchParams(baseURL.search);\n  searchParams.sort();\n\n  return { url: baseURL, searchParams };\n}\n","import { metaValue } from 'helpers/dom-helper';\nimport consumer from './consumer';\n\nexport default class CalendarEventChannel {\n  constructor(element) {\n    this.element = element; // Impulse calendar instance\n    const { currentOrgId } = this.element;\n\n    this.channel = consumer.subscriptions.create(\n      {\n        channel: 'CalendarEventChannel',\n        organization_id: currentOrgId,\n      },\n      {\n        received: this.received.bind(this),\n      }\n    );\n  }\n\n  received(payload) {\n    if (payload.cid === this.cid) return; // Don't broadcast to the same client.\n\n    switch (payload.action) {\n      case 'create':\n        this.element.eventCreateDelegate.addEvent(payload.event);\n        break;\n      case 'update':\n        this.updateEvent(payload);\n        break;\n      case 'destroy':\n        this.destroyEvent(payload);\n        break;\n    }\n  }\n\n  /**\n   * @private\n   */\n  updateEvent({ event }) {\n    const delegate = this.element.eventModifyDelegate;\n    switch (event.metadata.update_type) {\n      case '1': // Current\n        delegate.updateCurrent(event);\n        break;\n      case '2': // This and all following\n        delegate.updateThisAndFollowing(event);\n        break;\n      default: // All events\n        delegate.updateAll(event);\n        break;\n    }\n  }\n\n  /**\n   * @private\n   */\n  destroyEvent({ event, metadata }) {\n    const delegate = this.element.eventDestroyDelegate;\n    switch (metadata.removal_type) {\n      case '1': // Current\n        delegate.destroyCurrent(event.uid);\n        break;\n      case '2': // This and all following\n        delegate.destroyThisAndFollowing(event.start_time, event.id);\n        break;\n      default:\n        delegate.destroyAll(event.id);\n        break;\n    }\n  }\n\n  /**\n   * The fullcalendar instance.\n   */\n  get calendar() {\n    return this.element.calendar;\n  }\n\n  /**\n   * The client id.\n   * @returns {string|null}\n   */\n  get cid() {\n    return metaValue('client-id');\n  }\n\n  /**\n   * The current org id\n   * @returns {string|null}\n   */\n  get orgid() {\n    return metaValue('current-org-id');\n  }\n}\n","/**\n * CalendarEventsChannel subscribes to the CalendarEventsChannel on the server to receive real-time event updates.\n * When an event is received, it checks if the event is already present in the calendar and adds it if it is new.\n */\nimport { metaValue } from 'helpers/dom-helper';\nimport consumer from './consumer';\n\nexport default class CalendarEventsChannel {\n  /**\n   * Initializes a new instance of CalendarEventsChannel.\n   * Subscribes to the channel and binds the received method to handle incoming events.\n   */\n  constructor(element) {\n    this.channel = consumer.subscriptions.create(\n      {\n        channel: 'CalendarEventsChannel',\n        organization_id: this.orgid,\n      },\n      {\n        received: this.received.bind(this),\n\n        // Add new acknowledge method to send acknowledgments back to server\n        acknowledge(messageId) {\n          this.perform('acknowledge', { message_id: messageId });\n        }\n      }\n    );\n  }\n  /**\n   * Handles received events by checking if each event is already present in the calendar.\n   * Adds new events to the calendar. Logs an error if the calendar is not defined.\n   *\n   * @param {Object} data - Contains the array of events.\n   * @param {Array} [data.events] - List of event objects to process.\n   * @param {String} [data.event] - The id of the event in question to be updated.\n   * @param {String} [data.icons] - The icons HTML to update on the calendar.\n   * @param {String} [data.message_id] - Unique ID for acknowledging receipt.\n   */\n  received({ events = null, event = null, icons = null, cid, message_id = null } = {}) {\n    // First, acknowledge receipt if a message_id is present\n    if (message_id) {\n      this.channel.acknowledge(message_id);\n    }\n\n    $('#calendarMask').hide();\n    if (cid !== this.cid) return; // Only broadcast to the same client.\n    var dis_cal = this.calendar;\n    this.calendar.batchRendering(function() {\n      if (Array.isArray(events)) {\n        for (const event of events) {\n          const existingEvent = dis_cal.getEventById(event.id);\n          if (existingEvent) {\n            existingEvent.remove();\n          }\n          dis_cal.addEvent(event);\n        }\n      }\n    });\n\n    if (event && icons) {\n      const iconsContainer = $(`div.fc-event[data-event-id=\"${event}\"]`).find('.fc-event-icons');\n      if (iconsContainer.length) {\n        iconsContainer.html(icons); // Insert icons into the child div\n      } else {\n        // DONT ERROR.  They could have changed views which would cause this.  just ignore it.\n      }\n    }\n  }\n\n  /**\n   * Getter for the calendar object.\n   *\n   * @return {Object|null} The calendar object from the global window, or null if not defined.\n   */\n  get calendar() {\n    return window.calendar;\n  }\n\n  /**\n   * The client id.\n   * @returns {string|null}\n   */\n  get cid() {\n    return metaValue('client-id');\n  }\n\n  /**\n   * The current org id\n   * @returns {string|null}\n   */\n  get orgid() {\n    return metaValue('current-org-id')\n  }\n\n}\n","/**\n * CalendarResourcesChannel subscribes to the CalendarResourcesChannel on the server to receive real-time resource updates.\n * When a resource is received, it checks if the resource is already present in the calendar and adds it if it is new.\n */\nimport consumer from './consumer';\nimport {metaValue} from \"helpers/dom-helper\";\nexport default class CalendarResourcesChannel {\n  /**\n   * Initializes a new instance of CalendarResourcesChannel.\n   * Subscribes to the channel and binds the received method to handle incoming resources.\n   */\n  constructor(element) {\n    this.channel = consumer.subscriptions.create(\n      {\n        channel: 'CalendarResourcesChannel',\n        organization_id: this.orgid,\n      },\n      {\n        received: this.received.bind(this),\n      }\n    );\n  }\n  /**\n   * Handles received resources by checking if each event is already present in the calendar.\n   * Adds new resources to the calendar. Logs an error if the calendar is not defined.\n   *\n   * @param {Object} eventData - Contains the array of events.\n   * @param {Array} eventData.events - List of event objects to process.\n   */\n  received(payload) {\n    if (payload.cid !== this.cid) return; // Don't broadcast resources to other clients.\n    if (window?.calendarSettings?.mainCalendar && window?.calendarSettings?.isAdmin) {\n      for (const resource of payload.resources) {\n        if (!this.calendar.getResourceById(resource.id)) {\n          this.calendar.addResource(resource);\n        }\n      }\n    }\n  }\n  /**\n   * Getter for the calendar object.\n   *\n   * @return {Object|null} The calendar object from the global window, or null if not defined.\n   */\n  get calendar() {\n    return window.calendar;\n  }\n\n  /**\n   * The client id.\n   * @returns {string|null}\n   */\n  get cid() {\n    return metaValue('client-id');\n  }\n\n  /**\n   * The current org id\n   * @returns {string|null}\n   */\n  get orgid() {\n    return metaValue('current-org-id')\n  }\n}\n","export function camelToSnakeCase(str) {\n  return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);\n}\n\nexport function replaceCamelKeyWithSnake(objects) {\n  objects.forEach((object) => {\n    Object.keys(object).forEach((key) => {\n      const snake = camelToSnakeCase(key);\n      if (key !== snake) {\n        Object.defineProperty(object, snake, Object.getOwnPropertyDescriptor(object, key));\n        delete object[key];\n      }\n    });\n  });\n  return objects;\n}\n\nexport function mungeAllowedParams(objects, allowed) {\n  objects.forEach((object) => {\n    Object.keys(object).forEach((key) => {\n      if (!allowed.includes(key)) delete object[key];\n    });\n  });\n  return objects;\n}\n\nexport const nextUntil = (elem, endId) => {\n  // Setup siblings array\n  const siblings = [];\n\n  // Get the next sibling element\n  elem = elem.nextElementSibling;\n\n  // As long as a sibling exists\n  while (elem) {\n    // Break if we match the passed HTML element id\n    if (elem.getAttribute('id') === endId) {\n      break;\n    }\n\n    // Otherwise, push it to the siblings array\n    siblings.push(elem);\n\n    // Get the next sibling element\n    elem = elem.nextElementSibling;\n  }\n\n  return siblings;\n};\n\nexport function clone(array) {\n  return JSON.parse(JSON.stringify(array));\n}\n\nexport const closeOnEsc = (callback) => {\n  const close = (e) => {\n    if (e.keyCode === 27) {\n      callback();\n    }\n  };\n  window.addEventListener('keydown', close);\n  // return () => window.removeEventListener('keydown', close);\n};\n\nexport function truncateString(str, num) {\n  if (str.length > num) {\n    return `${str.slice(0, num)}...`;\n  }\n  return str;\n}\n\n/**\n * @param {number} num\n * @link https://stackoverflow.com/questions/13627308/add-st-nd-rd-and-th-ordinal-suffix-to-a-number\n * @returns {string}\n */\nexport function ordinal(num) {\n  return ['st', 'nd', 'rd'][((((num + 90) % 100) - 10) % 10) - 1] || 'th';\n}\n\nexport function brandColors() {\n  return {\n    ambikiBlue: '#2948a0',\n    ambikiSalmon: '#f18e69',\n    ambikiPink: '#ef3dc0',\n    ambikiTurquoise: '#3cceb7',\n    ambikiYellow: '#f1b241',\n  };\n}\n","export const c = Object.freeze({\n  IDLE: 'idle',\n  CREATING_SESSION: 'creating-session',\n  SYNCING_PATIENTS: 'syncing-patients',\n  READY: 'ready',\n  ERROR: 'error',\n});\n\nexport const LOCAL_STORAGE_KEY = 'auto-join';\n","/* eslint-disable class-methods-use-this */\nimport { Controller } from '@hotwired/stimulus';\nimport { metaValue } from 'helpers/dom-helper';\n\nexport default class extends Controller {\n  /**\n   * @description Find out if the page is still in preview mode. This happens when a user transitions from one page\n   * to another via turbolinks\n   * @returns {boolean}\n   */\n  get isTurbolinksPreview() {\n    return document.documentElement.hasAttribute('data-turbolinks-preview');\n  }\n\n  /**\n   * @description Get current user's tzinfo\n   */\n  get tzinfo() {\n    return metaValue('current-user-tzinfo') || Intl.DateTimeFormat().resolvedOptions().timeZone;\n  }\n\n  /**\n   * @description Get current_user's current_org id\n   * @returns {string}\n   */\n  get currentOrgId() {\n    return metaValue('current-org-id') || '';\n  }\n}\n","import { observe } from 'helpers/dom-helper';\n\n/**\n * Initializes the bootstrap tooltip component when element is connected to the DOM and disposes it when element is\n * removed from the DOM.\n */\nobserve('[data-toggle=\"tooltip\"]', {\n  connected(element) {\n    // Added boundary window to prevent flickering when a tooltip\n    // is within a responsive table (Kevin 10/2022)\n    // https://stackoverflow.com/a/62076857\n    if ($.isFunction($('[data-toggle=\"tooltip\"]').tooltip)) {\n      $(element).tooltip({ boundary: 'window' });\n    }\n  },\n  disconnected(element) {\n    if ($.isFunction($('[data-toggle=\"tooltip\"]').tooltip)) {\n      $(element).tooltip('dispose');\n    }\n  },\n});\n","var map = {\n\t\"./FiraSans-Bold.ttf\": 860,\n\t\"./FiraSans-Medium.ttf\": 861,\n\t\"./FiraSans-Regular.ttf\": 862,\n\t\"./FiraSans-SemiBold.ttf\": 863,\n\t\"./KumbhSans-Bold.ttf\": 864,\n\t\"./KumbhSans-Light.ttf\": 865,\n\t\"./KumbhSans-Regular.ttf\": 866,\n\t\"./NotoEmoji.ttf\": 867,\n\t\"./NotoSerif-Regular.ttf\": 868,\n\t\"./Quicksand-Bold.ttf\": 869,\n\t\"./Quicksand-Light.ttf\": 870,\n\t\"./Quicksand-Medium.ttf\": 871,\n\t\"./Quicksand-Regular.ttf\": 872,\n\t\"./Quicksand-SemiBold.ttf\": 873,\n\t\"./Roboto-Black.ttf\": 874,\n\t\"./Roboto-BlackItalic.ttf\": 875,\n\t\"./Roboto-Bold.ttf\": 876,\n\t\"./Roboto-BoldItalic.ttf\": 877,\n\t\"./Roboto-Italic.ttf\": 878,\n\t\"./Roboto-Light.ttf\": 879,\n\t\"./Roboto-LightItalic.ttf\": 880,\n\t\"./Roboto-Medium.ttf\": 881,\n\t\"./Roboto-MediumItalic.ttf\": 882,\n\t\"./Roboto-Regular.ttf\": 883,\n\t\"./Roboto-Thin.ttf\": 884,\n\t\"./Roboto-ThinItalic.ttf\": 885,\n\t\"./SeptemberMornings.ttf\": 886\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 859;","module.exports = __webpack_public_path__ + \"media/fonts/FiraSans-Bold-3919333f2e366bb4341e09929ea31d60.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/FiraSans-Medium-9e604b4c5b46337e1a283d9062b25c63.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/FiraSans-Regular-1c0bf0728b51cb9f2ddc01b897da06d3.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/FiraSans-SemiBold-b6ffb4927db20d43cb135e2c4d1679f8.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/KumbhSans-Bold-48869b3d0d3794995f60990fc2edaff9.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/KumbhSans-Light-2c0aa226c795f0235c96bebb45a262c5.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/KumbhSans-Regular-7473a8f760dd1e1195674a849e94aa45.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/NotoEmoji-0065ce9f4db9c1e5b7f1fc9df70c1fb7.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/NotoSerif-Regular-ebe1e45b05b879a9ea1f019d27a4a1a3.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Quicksand-Bold-76f20c55b4aa564ea883173598963b95.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Quicksand-Light-d08d0358c31ea6202f2af102ddfc1c6d.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Quicksand-Medium-74eb5c183e5f25c68c2e951c434da7d9.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Quicksand-Regular-cffc279022b0d87c571dff78071828f9.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Quicksand-SemiBold-d4f6bc51411626477b056f8d63edbd2f.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-Black-1224b64c95f897e542d9bfdd3861b0ed.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-BlackItalic-279b831d1cc21955a97a4b73e07d204e.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-Bold-4f39c5796e60c9d8e7327a00e9a4442e.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-BoldItalic-ad2445ca4e46908fbf7bb4e0fff71139.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-Italic-2a1b89d7506c26fb931b47bbc5d8c926.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-Light-0cea39826bd36bbfe33076c544e3a1af.ttf\";","/**\n * Checks if `value` is a valid hex code.\n * @example\n *\n * isHexCode('#000')\n * // => true\n *\n * isHexCode('#000000')\n * // => true\n *\n * isHexCode('#zzz')\n * // => false\n *\n * isHexCode('#YYY')\n * // => false\n */\nexport default function isHexCode(value: string): boolean {\n  return /^#[0-9a-f]{3}(?:[0-9a-f]{3})?$/i.test(value);\n}\n","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-LightItalic-f3afeb2d078386350b6657727c8de98e.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-Medium-13a29228654d5c5ec9c482a267efa4af.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-MediumItalic-17d0cac04a3f124945e14d55323a71d5.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-Regular-03523cf578d69fa923226ff457b92d90.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-Thin-c38fab23fc1c36894f10dd8014479b53.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/Roboto-ThinItalic-082b9e840d3a498e8a3c8119f3a7132a.ttf\";","module.exports = __webpack_public_path__ + \"media/fonts/SeptemberMornings-4024cb0ddd4efab6cba150ef7d8045dc.ttf\";","// Load all the channels within this directory and all subdirectories.\n// Channel files must be named *_channel.js.\n\nconst channels = require.context('.', true, /_channel\\.js$/);\nchannels.keys().forEach(channels);\n","var map = {\n\t\"./calendar_event_channel.js\": 665,\n\t\"./calendar_events_channel.js\": 666,\n\t\"./calendar_resources_channel.js\": 668,\n\t\"./notification_channel.js\": 422,\n\t\"./reactions_channel.js\": 226,\n\t\"./room_channel.js\": 365,\n\t\"./room_chat_channel.js\": 227,\n\t\"./room_session_channel.js\": 366,\n\t\"./room_visitor_channel.js\": 171,\n\t\"./visual_schedule_channel.js\": 202\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 888;","class RemoveFields {\n  // This executes when the function is instantiated.\n  constructor(options = {}) {\n    this.iterateLinks();\n    this.options = options;\n  }\n\n  iterateLinks = () => {\n    // There is another way to stop delete based off the class added.\n    // It is useful for having multiple of the same kind of add field in the same form.\n    // Please see the  STOP DELETE OPTION 2: START section.\n    const firstDelete = $('.remove_fields');\n    if (firstDelete.length) {\n      if (firstDelete[0].getAttribute('data-no-last-delete')) {\n        firstDelete[0].setAttribute('disabled', true);\n        firstDelete.addClass('disabled');\n      }\n    }\n    // Use event delegation to ensure any fields added after the page loads are captured.\n    $(document).on('click', '.remove_fields', (e) => {\n      this.handleClick(e.target, e);\n    });\n  };\n\n  handleClick = (link, e) => {\n    // Stop the function from executing if a link or event were not passed into the function.\n    if (!link || !e) return;\n    // Prevent the browser from following the URL.\n    e.preventDefault();\n    // Find the parent wrapper for the set of nested fields.\n    const fieldParent = link.closest('.nested-fields');\n    // default to no-data-target-found as undefined target could be passed somewhere in the dom with a missing variable\n    const target = link.getAttribute('data-target') || 'no-data-target-found';\n    const dataElement = document.querySelector(`[data-fields='${target}']`);\n\n    // Diagnosis codes validation: start\n    const selectComponents = fieldParent.querySelectorAll('[alert-id]');\n\n    if (selectComponents) {\n      const alertIds = [];\n      selectComponents.forEach((alert) => {\n        alertIds.push(alert.getAttribute('alert-id'));\n      });\n\n      const deleteClicked = new CustomEvent('deleteClicked', {\n        detail: {\n          alertIds,\n        },\n      });\n\n      document.dispatchEvent(deleteClicked);\n    }\n    // Diagnosis codes validation: end\n\n    // STOP DELETE OPTION 2: START\n    if (dataElement && link.classList.contains('no_last_delete')) {\n      const removeButtons = dataElement.querySelectorAll('.nested-fields');\n      const visibleElements = Array.from(removeButtons).filter(\n        (element) => element.style.display !== 'none' && getComputedStyle(element).display !== 'none'\n      );\n\n      const removeLinks = dataElement.querySelectorAll('.remove_fields.no_last_delete');\n\n      if (removeLinks.length > 0) {\n        removeLinks[0].textContent = '';\n      }\n\n      if (visibleElements.length <= 1) return;\n    }\n    // STOP DELETE OPTION 2: END\n\n    // Remove required attribute from fields otherwise that will cause\n    // the following error \"An invalid form control with name='' is not focusable\"\n    // when the user tries to click the form submission button.\n    // https://stackoverflow.com/questions/22148080/an-invalid-form-control-with-name-is-not-focusable\n    const requiredElements = fieldParent.querySelectorAll('[required]');\n    for (let i = 0; i < requiredElements.length; i += 1) {\n      const element = requiredElements[i];\n      element.required = false;\n    }\n    // toggle button for has-one-relationship\n    if (dataElement && dataElement.querySelectorAll('.add_fields.has-one-relationship')[0]) {\n      dataElement.querySelectorAll('.add_fields.has-one-relationship')[0].classList.toggle('d-none');\n    }\n    // If there is a parent wrapper, find the hidden delete field.\n    const deleteField = fieldParent ? fieldParent.querySelector('input[type=\"hidden\"]') : null;\n    // If there is a delete field, update the value to `1` and hide the corresponding nested fields.\n    if (deleteField) {\n      deleteField.value = 1;\n      fieldParent.style.display = 'none';\n      const nestedFields = Array.from(document.querySelectorAll('.nested-fields')).filter(\n        (f) => f.style.display !== 'none'\n      );\n      if (!nestedFields.length) $('.nested-field-save').hide();\n    } else if (fieldParent.dataset.destroy) {\n      fieldParent.remove();\n    }\n  };\n}\n\n// Wait for turbolinks to load, otherwise `document.querySelectorAll()` won't work\nwindow.addEventListener('turbolinks:load', () => new RemoveFields());\n","var map = {\n\t\"./command-palette-element.js\": 313,\n\t\"./command-palette/command-palette-group-element.js\": 314,\n\t\"./command-palette/command-palette-header-element.js\": 315,\n\t\"./command-palette/command-palette-item-element.js\": 316,\n\t\"./command-palette/command-palette-stack-element.js\": 325\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 914;","// Config and trix before-initialize listeners set up specifically for Goal Editor\nimport { goalsTrixInitialize } from '../goals-editor';\n\nconst GoalEditorSetup = (trix) => {\n  // Create callbacks\n  document.addEventListener('trix-initialize', goalsTrixInitialize);\n\n  trix.config.textAttributes['gc-who'] = {\n    tagName: 'gc-who',\n  };\n  trix.config.textAttributes['gc-skill'] = {\n    tagName: 'gc-skill',\n  };\n  trix.config.textAttributes['gc-context'] = {\n    tagName: 'gc-context',\n  };\n  trix.config.textAttributes['gc-measurable'] = {\n    tagName: 'gc-measurable',\n  };\n  trix.config.textAttributes['gc-reason'] = {\n    tagName: 'gc-reason',\n  };\n  trix.config.textAttributes['gc-timeframe'] = {\n    tagName: 'gc-timeframe',\n  };\n};\n\nexport default GoalEditorSetup;\n","import { GoalEditorSetup } from './trix-editor-configs';\n\nconst trix = require('trix');\n\nwindow.addEventListener('trix-before-initialize', (event) => {\n  const goalEditor = document.getElementById('goal-editor');\n  if (goalEditor) {\n    GoalEditorSetup(trix, event);\n  }\n});\n","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport { DirectUpload } from \"@rails/activestorage\";\nexport var AttachmentUpload = /*#__PURE__*/function () {\n  function AttachmentUpload(attachment, element) {\n    _classCallCheck(this, AttachmentUpload);\n\n    this.attachment = attachment;\n    this.element = element;\n    this.directUpload = new DirectUpload(attachment.file, this.directUploadUrl, this);\n  }\n\n  _createClass(AttachmentUpload, [{\n    key: \"start\",\n    value: function start() {\n      this.directUpload.create(this.directUploadDidComplete.bind(this));\n    }\n  }, {\n    key: \"directUploadWillStoreFileWithXHR\",\n    value: function directUploadWillStoreFileWithXHR(xhr) {\n      var _this = this;\n\n      xhr.upload.addEventListener(\"progress\", function (event) {\n        var progress = event.loaded / event.total * 100;\n\n        _this.attachment.setUploadProgress(progress);\n      });\n    }\n  }, {\n    key: \"directUploadDidComplete\",\n    value: function directUploadDidComplete(error, attributes) {\n      if (error) {\n        throw new Error(\"Direct upload failed: \".concat(error));\n      }\n\n      this.attachment.setAttributes({\n        sgid: attributes.attachable_sgid,\n        url: this.createBlobUrl(attributes.signed_id, attributes.filename)\n      });\n    }\n  }, {\n    key: \"createBlobUrl\",\n    value: function createBlobUrl(signedId, filename) {\n      return this.blobUrlTemplate.replace(\":signed_id\", signedId).replace(\":filename\", encodeURIComponent(filename));\n    }\n  }, {\n    key: \"directUploadUrl\",\n    get: function get() {\n      return this.element.dataset.directUploadUrl;\n    }\n  }, {\n    key: \"blobUrlTemplate\",\n    get: function get() {\n      return this.element.dataset.blobUrlTemplate;\n    }\n  }]);\n\n  return AttachmentUpload;\n}();","import { AttachmentUpload } from \"./attachment_upload\";\naddEventListener(\"trix-attachment-add\", function (event) {\n  var attachment = event.attachment,\n      target = event.target;\n\n  if (attachment.file) {\n    var upload = new AttachmentUpload(attachment, target);\n    upload.start();\n  }\n});","// eslint-disable-next-line import/prefer-default-export\nexport function brandedId() {\n  return `ambiki-${Math.random().toString().slice(2, 6)}`;\n}\n"],"sourceRoot":""}