alphana-sdk 1.6.6 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -3
- package/dist/alphana-sdk.global.js +4 -4
- package/dist/index.d.mts +41 -12
- package/dist/index.d.ts +41 -12
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -5
- package/dist/index.mjs.map +1 -1
- package/dist/react/index.d.mts +41 -12
- package/dist/react/index.d.ts +41 -12
- package/dist/react/index.js +4 -4
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +4 -4
- package/dist/react/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/api-base.ts","../src/utils/session.ts","../src/utils/normalize-tracker-path.ts","../src/core/navigation.ts","../src/core/time.ts","../src/utils/throttle.ts","../src/core/heatmap.ts","../src/core/logger.ts","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/utils.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/types/dist/types.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/mutation.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observer.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/cross-origin-iframe-mirror.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/iframe-manager.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/ext/tslib/tslib.es6.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/_virtual/image-bitmap-data-url-worker.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/stylesheet-manager.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/index.js","../src/core/session-replay.ts","../src/core/client-context.ts","../src/tracker.ts","../src/heatmap-renderer.ts"],"names":["apiBaseFromEventsEndpoint","endpoint","VISITOR_STORAGE_KEY","generateSessionId","c","r","getOrCreateVisitorId","existing","id","e","normalizeTrackerPath","path","q","pathname","search","out","i","dec","s","SS_LAST_PV_PATH","SS_LAST_PV_ENTRY_MS","safeSessionStorageGet","key","safeSessionStorageSet","value","persistLastPageView","pageEntryMs","getNavigationEntryType","nav","legacy","_NavigationPlugin","emit","sessionId","newPath","origPush","state","title","url","origReplace","lastPath","lastMsRaw","lastEntryMs","timeOnPage","fromPath","toPath","timeOnPageMs","p","NavigationPlugin","TimePlugin","duration","throttle","fn","delay","lastCall","args","now","_HeatmapPlugin","sampleRate","maxPoints","allowedPaths","pageWidth","pageHeight","absY","target","touch","vw","scrollX","scrollY","absX","_a","point","_b","_c","_d","el","x","y","nearby","HeatmapPlugin","LogCapture","options","u","parts","first","stack","msg","src","line","col","err","reason","message","level","extra","a","entry","body","NodeType","isElement","n","isShadowRoot","host","isNativeShadowDom","shadowRoot","fixBrowserCompatibilityIssuesInCSS","cssText","getCssRulesString","rules","getCssRuleString","error","rule","cssStringified","isCSSImportRule","Mirror","_this","childNode","node","meta","oldNode","createMirror","maskInputValue","maskInputOptions","tagName","type","maskInputFn","text","ORIGINAL_ATTRIBUTE_NAME","is2DCanvasBlank","canvas","ctx","chunkSize","getImageData","originalGetImageData","pixelBuffer","pixel","_id","tagNameRegex","IGNORED_NODE","genId","getValidTagName","element","processedTagName","stringifyStyleSheet","sheet","extractOrigin","origin","canvasService","canvasCtx","URL_IN_CSS_REF","RELATIVE_PATH","DATA_URI","absoluteToStylesheet","href","quote1","path1","quote2","path2","path3","filePath","maybeQuote","_i","parts_1","part","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","getAbsoluteSrcsetString","doc","attributeValue","pos","collectCharacters","regEx","chars","match","output","absoluteToDoc","descriptorsStr","inParens","isSVGElement","getHref","transformAttribute","name","_isBlockedElement","blockClass","blockSelector","eIndex","className","classMatchesRegex","regex","checkAncestors","needMaskingText","maskTextClass","maskTextSelector","onceIframeLoaded","iframeEl","listener","iframeLoadTimeout","win","fired","readyState","timer_1","blankUrl","onceStylesheetLoaded","link","styleSheetLoadTimeout","styleSheetLoaded","timer","serializeNode","mirror","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","rootId","getRootId","serializeElementNode","serializeTextNode","docId","parentTagName","textContent","isStyle","isScript","needBlock","attributes","len","attr","stylesheet","checked","canvasDataURL","blankCanvas","blankCanvasDataURL","image_1","oldValue_1","recordInlineImage","width","height","lowerIfExists","maybeAttr","slimDOMExcluded","sn","slimDOMOptions","serializeNodeWithId","skipChild","_e","_f","onSerialize","onIframeLoad","_g","onStylesheetLoad","_h","stylesheetLoadTimeout","_j","_k","_l","preserveWhiteSpace","_serializedNode","serializedNode","recordChild","bypassOptions","_m","childN","serializedChildNode","_o","_p","iframeDoc","serializedIframeNode","serializedLinkNode","snapshot","maskAllInputs","slimDOM","on","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","prop","receiver","func","wait","timeout","previous","remaining","context","hookSetter","d","isRevoked","original","patch","source","replacement","wrapped","getWindowHeight","getWindowWidth","isBlocked","isSerialized","isIgnored","isAncestorRemoved","isTouchEvent","event","polyfill","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","StyleSheetMirror","newId","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","CanvasContext","CanvasContext2","isNodeInLinkedList","DoubleLinkedList","position","current","index","moveKey","parentId","MutationBuffer","mutations","adds","addList","getNextId","ns","nextId","pushAdd","shadowHost","rootShadowHost","notInDoc","currentN","iframe","childSn","isParentRemoved","isAncestorInSet","candidate","_node","unhandledNode","payload","attribute","m","item","old","styleObj","pname","newValue","newPriority","nodeId","deepDelete","targetId","addsSet","removes","_isParentRemoved","parentNode","set","_isAncestorInSet","mutationBuffers","isCSSGroupingRuleSupported","isCSSMediaRuleSupported","isCSSSupportsRuleSupported","isCSSConditionRuleSupported","getEventTarget","initMutationObserver","rootEl","mutationBuffer","mutationObserverCtor","angularZoneSymbol","observer","initMoveObserver","mousemoveCb","sampling","threshold","callbackThreshold","positions","timeBaseline","wrappedCb","totalOffset","updatePosition","evt","clientX","clientY","handlers","h","initMouseInteractionObserver","mouseInteractionCb","disableMap","getHandler","eventKey","eventName","handler","initScrollObserver","scrollCb","scrollEl","initViewportResizeObserver","viewportResizeCb","lastH","lastW","updateDimension","wrapEventWithUserTriggeredFlag","v","enable","INPUT_TAGS","lastInputValueMap","initInputObserver","inputCb","ignoreClass","userTriggeredOnInput","eventHandler","userTriggered","isChecked","cbWithDedup","lastInputValue","currentWindow","propertyDescriptor","hookProperties","getNestedCSSRulePositions","recurse","childRule","getIdAndStyleId","styleMirror","styleId","initStyleSheetObserver","styleSheetRuleCb","stylesheetManager","insertRule","deleteRule","replace","replaceSync","supportedNestedCSSRuleTypes","unmodifiedFunctions","typeKey","initAdoptedStyleSheetObserver","hostId","patchTarget","originalPropertyDescriptor","sheets","result","initStyleDeclarationObserver","styleDeclarationCb","ignoreCSSAttributes","setProperty","property","priority","removeProperty","initMediaInteractionObserver","mediaInteractionCb","currentTime","volume","muted","playbackRate","initFontObserver","fontCb","fontMap","originalFontFace","family","descriptors","fontFace","restoreHandler","initSelectionObserver","param","selectionCb","collapsed","updateSelection","selection","ranges","count","range","startContainer","startOffset","endContainer","endOffset","mergeHooks","o","hooks","mutationCb","canvasMutationCb","initObservers","mutationObserver","mousemoveHandler","mouseInteractionHandler","scrollHandler","viewportResizeHandler","inputHandler","mediaInteractionHandler","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","selectionObserver","pluginHandlers","plugin","b","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","remoteIdToIdMap","map","ids","IframeManager","cb","transformedEvent","style","iframeMirror","obj","keys","child","ShadowDomManager","manager","option","iframeElement","restorePatch","__rest","t","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","reject","fulfilled","step","rejected","lookup","encode","arraybuffer","bytes","base64","canvasVarMap","variableListFor","ctor","contextMap","saveWebGLVar","isInstanceOfWebGLObject","list","serializeArg","arg","serializeArgs","initCanvas2DMutationObserver","props2D","recordArgs","hookHandler","initCanvasContextObserver","contextType","patchGLPrototype","prototype","props","mutation","initCanvasWebGLMutationObserver","WorkerClass","WorkerThreads","__require","decodeBase64","enableUnicode","createBase64WorkerFactory","sourcemapArg","enableUnicodeArg","start","binaryString","createURL","blob","kIsNodeJS","isNodeJS","WorkerFactory","CanvasManager","fps","canvasContextReset","snapshotInProgressMap","worker","timeBetweenSnapshots","lastSnapshotTime","rafId","getCanvas","matchedCanvas","takeCanvasSnapshots","timestamp","bitmap","canvas2DReset","canvasWebGL1and2Reset","setLatestRAFTimestamp","values","valuesWithType","StylesheetManager","linkEl","adoptedStyleSheetData","styles","wrapEvent","wrappedEmit","takeFullSnapshot","canvasManager","recording","record","checkoutEveryNms","checkoutEveryNth","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","recordCrossOriginIframes","collectFonts","plugins","inEmittingFrame","passEmitsToParent","lastFullSnapshotEvent","incrementalSnapshotCount","eventProcessor","isCheckout","buf","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","wrappedAdoptedStyleSheetEmit","iframeManager","shadowDomManager","observe","init","tag","SessionReplayController","opts","events","ALPHANA_SDK_VERSION","detectDeviceCategory","ua","detectOs","detectBrowser","readUaData","uaData","uaDataDevice","platform","collectClientContext","device","colorScheme","timeZone","langs","DEFAULT_ENDPOINT","DEFAULTS","FIRST_TOUCH_KEY","LAST_TOUCH_KEY","UTM_PARAM_MAP","CLICK_ID_PARAMS","safeLocalStorageGet","safeLocalStorageSet","readTouch","raw","parsed","writeTouch","hostFromReferrer","referrer","currentSearchParams","readUtmParams","searchParams","utm","readClickIds","clickIds","withNormalizedPaths","UserTracker","config","existingFirst","attribution","authHeaders","prev","pts","resolvedPath","properties","flagKey","res","data","experimentKey","variantKey","acc","k","batch","buildPalette","stops","palette","stepsPerSegment","fr","fg","fb","tr","tg","tb","COLOR_PALETTE","renderHeatmap","points","radius","maxOpacity","minOpacity","shadow","sCtx","pt","grad","density","dst","lastIdx","alpha","ratio","colorIdx","g","opacity"],"mappings":"aACO,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,OAAA,OAAA,EAAA,WAAA,CAAA,OAAA,CAAA,OAAA,KAAA,EAAA,WAAA,CAAA,IAAA,KAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,OAAA,OAAA,EAAA,WAAA,CAAA,OAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,SAAA,CAAA,CAAA,CAAA,GAAA,OAAA,OAAA,EAAA,WAAA,CAAA,OAAA,OAAA,CAAA,KAAA,CAAA,IAAA,CAAA,SAAA,CAAA,CAAA,MAAA,KAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,oBAAA,CAAA,CAAA,CAAA,CAAA,SAASA,GAA0BC,CAAAA,CAA0B,CAClE,OAAOA,CAAAA,CAAS,QAAQ,cAAA,CAAgB,EAAE,CAC5C,CCFA,IAAMC,EAAAA,CAAsB,YAAA,CAGrB,SAASC,EAAAA,EAA4B,CAC1C,OACE,OAAO,MAAA,EAAW,WAAA,EAClB,OAAO,OAAO,UAAA,EAAe,UAAA,CAEtB,MAAA,CAAO,UAAA,GAGT,sCAAA,CAAuC,OAAA,CAAQ,OAAA,CAAUC,CAAAA,EAAM,CACpE,IAAMC,CAAAA,CAAK,KAAK,MAAA,EAAO,CAAI,GAAM,CAAA,CAEjC,OAAA,CADUD,CAAAA,GAAM,GAAA,CAAMC,EAAKA,CAAAA,CAAI,CAAA,CAAO,CAAA,EAC7B,QAAA,CAAS,EAAE,CACtB,CAAC,CACH,CAwBO,SAASC,EAAAA,EAA+B,CAC7C,GAAI,OAAO,YAAA,EAAiB,YAAa,OAAOH,EAAAA,EAAkB,CAClE,GAAI,CACF,IAAMI,CAAAA,CAAW,YAAA,CAAa,OAAA,CAAQL,EAAmB,CAAA,CACzD,GAAIK,CAAAA,CAAU,OAAOA,EACrB,IAAMC,CAAAA,CAAKL,IAAkB,CAC7B,OAAA,YAAA,CAAa,QAAQD,EAAAA,CAAqBM,CAAE,CAAA,CACrCA,CACT,OAAQC,CAAAA,CAAA,CACN,OAAON,EAAAA,EACT,CACF,CC7CO,SAASO,CAAAA,CAAqBC,EAAsB,CACzD,GAAI,CAACA,CAAAA,CAAM,OAAOA,EAClB,IAAMC,CAAAA,CAAID,CAAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,CACpBE,CAAAA,CAAWD,CAAAA,EAAK,CAAA,CAAID,EAAK,KAAA,CAAM,CAAA,CAAGC,CAAC,CAAA,CAAID,EACvCG,CAAAA,CAASF,CAAAA,EAAK,EAAID,CAAAA,CAAK,KAAA,CAAMC,CAAC,CAAA,CAAI,EAAA,CAEpCG,CAAAA,CAAMF,CAAAA,CACV,QAASG,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI,CAAA,CAAGA,IACrB,GAAI,CACF,IAAMC,CAAAA,CAAM,mBAAmBF,CAAG,CAAA,CAClC,GAAIE,CAAAA,GAAQF,CAAAA,CAAK,MACjBA,CAAAA,CAAME,EACR,CAAA,MAAQR,CAAAA,CAAA,CACN,KACF,CAGF,IAAIS,CAAAA,CAAIJ,EACR,IAAA,IAASE,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI,EAAGA,CAAAA,EAAAA,CACrB,GAAI,CACF,IAAMC,CAAAA,CAAM,mBAAmBC,CAAC,CAAA,CAChC,GAAID,CAAAA,GAAQC,EAAG,MACfA,CAAAA,CAAID,EACN,CAAA,MAAQR,EAAA,CACN,KACF,CAGF,OAAOM,EAAMG,CACf,CCzBA,IAAMC,EAAAA,CAAkB,qBAAA,CAClBC,GAAsB,yBAAA,CAE5B,SAASC,EAAAA,CAAsBC,CAAAA,CAA4B,CACzD,GAAI,OAAO,cAAA,EAAmB,WAAA,CAAa,OAAO,IAAA,CAClD,GAAI,CACF,OAAO,eAAe,OAAA,CAAQA,CAAG,CACnC,CAAA,MAAQ,CAAA,CAAA,CACN,OAAO,IACT,CACF,CAEA,SAASC,GAAsBD,CAAAA,CAAaE,CAAAA,CAAqB,CAC/D,GAAI,OAAO,cAAA,EAAmB,WAAA,CAC9B,GAAI,CACF,eAAe,OAAA,CAAQF,CAAAA,CAAKE,CAAK,EACnC,CAAA,MAAQf,EAAA,CAER,CACF,CAEA,SAASgB,GAAoBd,CAAAA,CAAce,CAAAA,CAA2B,CACpEH,EAAAA,CAAsBJ,GAAiBR,CAAI,CAAA,CAC3CY,EAAAA,CAAsBH,EAAAA,CAAqB,OAAOM,CAAW,CAAC,EAChE,CAKA,SAASC,IAA6C,CACpD,GAAI,OAAO,WAAA,EAAgB,YAAa,OAIxC,IAAMC,CAAAA,CAHO,WAAA,CAAY,iBACvB,YACF,CAAA,CACiB,CAAC,CAAA,CAClB,GAAIA,CAAAA,EAAA,IAAA,EAAAA,EAAK,IAAA,CAAM,OAAOA,EAAI,IAAA,CAC1B,IAAMC,CAAAA,CACJ,WAAA,CACA,WACF,GAAA,CAAIA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,QAAS,CAAA,CAAG,OAAO,cAEjC,CAwBO,IAAMC,EAAAA,CAAN,MAAMA,EAAiB,CAS5B,WAAA,CAAY,CAAE,IAAA,CAAAC,CAAAA,CAAM,SAAA,CAAAC,CAAU,EAA4B,CAN1D,IAAA,CAAQ,YAAA,CAAe,EAAA,CACvB,KAAQ,iBAAA,CAAqD,IAAA,CAC7D,IAAA,CAAQ,oBAAA,CAA2D,KACnE,IAAA,CAAQ,aAAA,CAAgB,EA+CxB,IAAA,CAAQ,cAAA,CAAiB,IAAY,CACnC,IAAA,CAAK,gBAAA,GACP,EA7CE,IAAA,CAAK,IAAA,CAAOD,EACZ,IAAA,CAAK,SAAA,CAAYC,EACnB,CAEA,IAAA,EAAa,CACX,IAAMC,EAAUvB,CAAAA,CACd,MAAA,CAAO,SAAS,QAAA,CAAW,MAAA,CAAO,SAAS,MAC7C,CAAA,CAGIiB,EAAAA,EAAuB,GAAM,gBAC/B,IAAA,CAAK,+BAAA,CAAgCM,CAAO,CAAA,CAG9C,KAAK,cAAA,CAAeA,CAAO,CAAA,CAE3B,MAAA,CAAO,iBAAiB,UAAA,CAAY,IAAA,CAAK,cAAc,CAAA,CAGvD,IAAA,CAAK,kBAAoB,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,OAAO,EACvD,IAAMC,CAAAA,CAAW,IAAA,CAAK,iBAAA,CACtB,QAAQ,SAAA,CAAY,CAACC,CAAAA,CAAOC,CAAAA,CAAOC,IAAc,CAC/CH,CAAAA,CAASC,EAAOC,CAAAA,CAAOC,CAAG,EAC1B,IAAA,CAAK,gBAAA,GACP,CAAA,CAGA,KAAK,oBAAA,CAAuB,OAAA,CAAQ,YAAA,CAAa,IAAA,CAAK,OAAO,CAAA,CAC7D,IAAMC,CAAAA,CAAc,IAAA,CAAK,qBACzB,OAAA,CAAQ,YAAA,CAAe,CAACH,CAAAA,CAAOC,CAAAA,CAAOC,IAAc,CAClDC,CAAAA,CAAYH,CAAAA,CAAOC,CAAAA,CAAOC,CAAG,CAAA,CAC7B,IAAA,CAAK,gBAAA,GACP,EACF,CAEA,OAAA,EAAgB,CACd,MAAA,CAAO,oBAAoB,UAAA,CAAY,IAAA,CAAK,cAAc,CAAA,CACtD,IAAA,CAAK,oBAAmB,OAAA,CAAQ,SAAA,CAAY,IAAA,CAAK,iBAAA,CAAA,CACjD,KAAK,oBAAA,GACP,OAAA,CAAQ,YAAA,CAAe,IAAA,CAAK,sBAChC,CAaQ,+BAAA,CAAgCJ,CAAAA,CAAuB,CAC7D,IAAMM,CAAAA,CAAWlB,EAAAA,CAAsBF,EAAe,CAAA,CAChDqB,CAAAA,CAAYnB,GAAsBD,EAAmB,CAAA,CACrDqB,CAAAA,CAAcD,CAAAA,CAAY,OAAOA,CAAS,CAAA,CAAI,CAAA,CAEpD,GADI,CAACD,CAAAA,EAAY,CAAC,MAAA,CAAO,QAAA,CAASE,CAAW,CAAA,EAAKA,CAAAA,EAAe,GAC7D/B,CAAAA,CAAqB6B,CAAQ,IAAMN,CAAAA,CAAS,OAEhD,IAAMS,CAAAA,CAAa,KAAK,GAAA,EAAI,CAAID,CAAAA,CAC5BC,CAAAA,CAAa,GAAKA,CAAAA,CAAaZ,EAAAA,CAAiB,kBAAA,EAGpD,IAAA,CAAK,UAAUpB,CAAAA,CAAqB6B,CAAQ,EAAGN,CAAAA,CAASS,CAAU,EACpE,CAEQ,gBAAA,EAAyB,CAC/B,IAAMT,EAAUvB,CAAAA,CACd,MAAA,CAAO,SAAS,QAAA,CAAW,MAAA,CAAO,SAAS,MAC7C,CAAA,CACA,GAAIuB,CAAAA,GAAY,KAAK,YAAA,CAGrB,CAAA,GAAI,KAAK,YAAA,EAAgB,IAAA,CAAK,cAAgB,CAAA,CAAG,CAC/C,IAAMS,CAAAA,CAAa,KAAK,GAAA,EAAI,CAAI,IAAA,CAAK,aAAA,CACjCA,GAAcZ,EAAAA,CAAiB,kBAAA,EACjC,IAAA,CAAK,SAAA,CAAU,KAAK,YAAA,CAAcG,CAAAA,CAASS,CAAU,EAEzD,CAEA,KAAK,cAAA,CAAeT,CAAO,EAAA,CAC7B,CAEQ,UACNU,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACM,CACN,KAAK,IAAA,CAAK,CACR,IAAA,CAAM,OAAA,CACN,KAAM,CACJ,QAAA,CAAAF,EACA,MAAA,CAAAC,CAAAA,CACA,aAAAC,CAAAA,CACA,SAAA,CAAW,IAAA,CAAK,GAAA,GAChB,SAAA,CAAW,IAAA,CAAK,SAClB,CACF,CAAC,EACH,CAEQ,cAAA,CAAelC,CAAAA,CAAoB,CACzC,IAAMmC,CAAAA,CAAIpC,EAAqBC,CAAI,CAAA,CACnC,KAAK,YAAA,CAAemC,CAAAA,CACpB,IAAA,CAAK,aAAA,CAAgB,KAAK,GAAA,EAAI,CAE9BrB,EAAAA,CAAoBqB,CAAAA,CAAG,KAAK,aAAa,CAAA,CAEzC,IAAA,CAAK,IAAA,CAAK,CACR,IAAA,CAAM,UAAA,CACN,KAAM,CACJ,IAAA,CAAMA,EACN,KAAA,CAAO,QAAA,CAAS,KAAA,CAChB,SAAA,CAAW,KAAK,GAAA,EAAI,CACpB,SAAA,CAAW,IAAA,CAAK,UAChB,QAAA,CAAU,QAAA,CAAS,QAAA,EAAY,MACjC,CACF,CAAC,CAAA,CAGD,OAAO,aAAA,CACL,IAAI,YAAY,kBAAA,CAAoB,CAClC,MAAA,CAAQ,CAAE,KAAMA,CAAAA,CAAG,KAAA,CAAO,QAAA,CAAS,KAAM,CAC3C,CAAC,CACH,EACF,CACF,EAxIahB,EAAAA,CAOa,kBAAA,CAAqB,IAPxC,IAAMiB,EAAAA,CAANjB,GCxDA,IAAMkB,EAAAA,CAAN,KAAiB,CAOtB,YAAY,CAAE,IAAA,CAAAjB,CAAAA,CAAM,SAAA,CAAAC,CAAU,CAAA,CAAsB,CAJpD,IAAA,CAAQ,WAAA,CAAc,GACtB,IAAA,CAAQ,SAAA,CAAY,EACpB,IAAA,CAAQ,QAAA,CAAW,MAsDnB,IAAA,CAAQ,cAAA,CAAkB,CAAA,EAA2C,CACnE,KAAK,YAAA,EAAa,CAClB,KAAK,WAAA,CAActB,CAAAA,CAAqB,EAAE,MAAA,CAAO,IAAI,CAAA,CACrD,IAAA,CAAK,gBACP,CAAA,CAEA,KAAQ,sBAAA,CAAyB,IAAY,CACvC,QAAA,CAAS,MAAA,CACX,IAAA,CAAK,YAAA,GAEL,IAAA,CAAK,aAAA,GAET,CAAA,CAEA,KAAQ,YAAA,CAAe,IAAY,CACjC,IAAA,CAAK,eACP,CAAA,CAnEE,KAAK,IAAA,CAAOqB,CAAAA,CACZ,KAAK,SAAA,CAAYC,EACnB,CAEA,IAAA,EAAa,CACX,IAAA,CAAK,WAAA,CAActB,CAAAA,CACjB,MAAA,CAAO,SAAS,QAAA,CAAW,MAAA,CAAO,QAAA,CAAS,MAC7C,EACA,IAAA,CAAK,aAAA,GAEL,MAAA,CAAO,gBAAA,CAAiB,mBAAoB,IAAA,CAAK,cAAc,CAAA,CAC/D,QAAA,CAAS,iBAAiB,kBAAA,CAAoB,IAAA,CAAK,sBAAsB,CAAA,CACzE,OAAO,gBAAA,CAAiB,cAAA,CAAgB,IAAA,CAAK,YAAY,EACzD,MAAA,CAAO,gBAAA,CAAiB,WAAY,IAAA,CAAK,YAAY,EACvD,CAEA,OAAA,EAAgB,CACd,IAAA,CAAK,cAAa,CAClB,MAAA,CAAO,mBAAA,CAAoB,kBAAA,CAAoB,KAAK,cAAc,CAAA,CAClE,QAAA,CAAS,mBAAA,CACP,mBACA,IAAA,CAAK,sBACP,EACA,MAAA,CAAO,mBAAA,CAAoB,eAAgB,IAAA,CAAK,YAAY,CAAA,CAC5D,MAAA,CAAO,oBAAoB,UAAA,CAAY,IAAA,CAAK,YAAY,EAC1D,CAEQ,aAAA,EAAsB,CAC5B,IAAA,CAAK,SAAA,CAAY,KAAK,GAAA,EAAI,CAC1B,KAAK,QAAA,CAAW,KAClB,CAEQ,YAAA,EAAqB,CAC3B,GAAI,CAAC,KAAK,QAAA,EAAY,CAAC,IAAA,CAAK,WAAA,CAAa,OACzC,IAAMuC,CAAAA,CAAW,IAAA,CAAK,GAAA,GAAQ,IAAA,CAAK,SAAA,CACnC,GAAIA,CAAAA,CAAW,GAAA,CAAK,CAClB,IAAA,CAAK,QAAA,CAAW,KAAA,CAChB,MACF,CACA,IAAA,CAAK,IAAA,CAAK,CACR,IAAA,CAAM,YACN,IAAA,CAAM,CACJ,IAAA,CAAM,IAAA,CAAK,YACX,QAAA,CAAAA,CAAAA,CACA,UAAW,IAAA,CAAK,SAAA,CAChB,UAAW,IAAA,CAAK,GAAA,EAClB,CACF,CAAC,CAAA,CACD,IAAA,CAAK,QAAA,CAAW,MAClB,CAmBF,CAAA,CC5FO,SAASC,EAAAA,CACdC,CAAAA,CACAC,EACyB,CACzB,IAAIC,EAAW,CAAA,CACf,OAAO,IAAIC,CAAAA,GAAqB,CAC9B,IAAMC,CAAAA,CAAM,KAAK,GAAA,EAAI,CACjBA,CAAAA,CAAMF,CAAAA,EAAYD,IACpBC,CAAAA,CAAWE,CAAAA,CACXJ,CAAAA,CAAG,GAAGG,CAAI,CAAA,EAEd,CACF,CCaO,IAAME,EAAAA,CAAN,MAAMA,EAAc,CAkBzB,WAAA,CAAY,CACV,KAAAzB,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,UAAA,CAAAyB,EAAa,EAAA,CACb,SAAA,CAAAC,CAAAA,CAAY,GAAA,CACZ,aAAAC,CACF,CAAA,CAAyB,CAlBzB,IAAA,CAAQ,WAAA,CAAc,GACtB,IAAA,CAAQ,WAAA,CAAsC,EAAC,CAG/C,KAAQ,YAAA,CAAsD,EAAC,CAwH/D,IAAA,CAAQ,gBAAmB,CAAA,EAAwB,CACjD,GAAI,IAAA,CAAK,QAAO,CAAI,IAAA,CAAK,WAAY,OACrC,IAAMC,EAAY,QAAA,CAAS,eAAA,CAAgB,WAAA,CACrCC,CAAAA,CAAa,SAAS,eAAA,CAAgB,YAAA,CACtCC,CAAAA,CAAO,CAAA,CAAE,QAAU,MAAA,CAAO,OAAA,CAChC,IAAA,CAAK,WAAA,CAAY,CACf,CAAA,CAAG,CAAA,CAAE,QACL,CAAA,CAAGA,CAAAA,CACH,KAAMF,CAAAA,CAAY,CAAA,CAAK,CAAA,CAAE,OAAA,CAAUA,EAAa,GAAA,CAAM,CAAA,CACtD,IAAA,CAAMC,CAAAA,CAAa,EAAKC,CAAAA,CAAOD,CAAAA,CAAc,GAAA,CAAM,CAAA,CACnD,GAAID,CAAAA,CACJ,EAAA,CAAIC,EACJ,IAAA,CAAM,MACR,CAAC,EACH,CAAA,CAEA,IAAA,CAAQ,WAAA,CAAe,GAAwB,CAE7C,GAAI,IAAA,CAAK,GAAA,GAAQ,IAAA,CAAK,aAAA,CAAgB,GAAA,CAAK,OAC3C,IAAMD,CAAAA,CAAY,QAAA,CAAS,gBAAgB,WAAA,CACrCC,CAAAA,CAAa,SAAS,eAAA,CAAgB,YAAA,CACtCC,CAAAA,CAAO,CAAA,CAAE,QAAU,MAAA,CAAO,OAAA,CAC1BC,CAAAA,CAAS,IAAA,CAAK,eAAe,CAAC,CAAA,CACpC,IAAA,CAAK,WAAA,CAAY,CACf,CAAA,CAAG,CAAA,CAAE,QACL,CAAA,CAAGD,CAAAA,CACH,KAAMF,CAAAA,CAAY,CAAA,CAAK,CAAA,CAAE,OAAA,CAAUA,EAAa,GAAA,CAAM,CAAA,CACtD,KAAMC,CAAAA,CAAa,CAAA,CAAKC,EAAOD,CAAAA,CAAc,GAAA,CAAM,CAAA,CACnD,EAAA,CAAID,EACJ,EAAA,CAAIC,CAAAA,CACJ,KAAM,OAAA,CACN,GAAIE,EAAS,CAAE,MAAA,CAAAA,CAAO,CAAA,CAAI,EAC5B,CAAC,CAAA,CACD,IAAA,CAAK,eAAe,CAAA,CAAE,OAAA,CAASD,CAAAA,CAAM,IAAA,CAAK,WAAW,EACvD,CAAA,CAUA,KAAQ,aAAA,CAAgB,CAAA,CAExB,KAAQ,cAAA,CAAkB,CAAA,EAAwB,CAChD,IAAME,EAAQ,CAAA,CAAE,cAAA,CAAe,CAAC,CAAA,CAChC,GAAI,CAACA,CAAAA,CAAO,OACZ,IAAMJ,EAAY,QAAA,CAAS,eAAA,CAAgB,YACrCC,CAAAA,CAAa,QAAA,CAAS,gBAAgB,YAAA,CACtCC,CAAAA,CAAOE,CAAAA,CAAM,OAAA,CAAU,OAAO,OAAA,CACpC,IAAA,CAAK,aAAA,CAAgB,IAAA,CAAK,KAAI,CAC9B,IAAA,CAAK,WAAA,CAAY,CACf,EAAGA,CAAAA,CAAM,OAAA,CACT,EAAGF,CAAAA,CACH,IAAA,CAAMF,EAAY,CAAA,CAAKI,CAAAA,CAAM,OAAA,CAAUJ,CAAAA,CAAa,IAAM,CAAA,CAC1D,IAAA,CAAMC,CAAAA,CAAa,CAAA,CAAKC,EAAOD,CAAAA,CAAc,GAAA,CAAM,CAAA,CACnD,EAAA,CAAID,EACJ,EAAA,CAAIC,CAAAA,CACJ,KAAM,OACR,CAAC,EACD,IAAA,CAAK,cAAA,CAAeG,CAAAA,CAAM,OAAA,CAASF,EAAM,IAAA,CAAK,WAAW,EAC3D,CAAA,CAEA,KAAQ,YAAA,CAAe,IAAY,CACjC,GAAI,KAAK,MAAA,EAAO,CAAI,KAAK,UAAA,CAAY,OACrC,IAAMF,CAAAA,CAAY,QAAA,CAAS,eAAA,CAAgB,WAAA,CACrCC,EAAa,QAAA,CAAS,eAAA,CAAgB,YAAA,CACtCI,CAAAA,CAAK,OAAO,UAAA,CACZC,CAAAA,CAAU,MAAA,CAAO,OAAA,CACjBC,EAAU,MAAA,CAAO,OAAA,CACjBC,EAAOF,CAAAA,CAAUD,CAAAA,CAAK,EAC5B,IAAA,CAAK,WAAA,CAAY,CACf,CAAA,CAAGA,EAAK,CAAA,CACR,CAAA,CAAGE,CAAAA,CACH,IAAA,CAAMP,EAAY,CAAA,CAAKQ,CAAAA,CAAOR,CAAAA,CAAa,GAAA,CAAM,GACjD,IAAA,CAAMC,CAAAA,CAAa,EAAKM,CAAAA,CAAUN,CAAAA,CAAc,IAAM,CAAA,CACtD,EAAA,CAAID,CAAAA,CACJ,EAAA,CAAIC,EACJ,IAAA,CAAM,QACR,CAAC,EACH,CAAA,CAEA,KAAQ,cAAA,CAAkB,CAAA,EAA2C,CACnE,IAAA,CAAK,YAAcnD,CAAAA,CAAqB,CAAA,CAAE,OAAO,IAAI,EACvD,EA/LE,IAAA,CAAK,IAAA,CAAOqB,CAAAA,CACZ,IAAA,CAAK,UAAYC,CAAAA,CACjB,IAAA,CAAK,UAAA,CAAayB,CAAAA,CAClB,KAAK,SAAA,CAAYC,CAAAA,CACjB,IAAA,CAAK,YAAA,CACHC,GAAgBA,CAAAA,CAAa,MAAA,CAAS,EAClC,IAAI,GAAA,CAAIA,EAAa,GAAA,CAAKb,CAAAA,EAAMpC,CAAAA,CAAqBoC,CAAC,CAAC,CAAC,CAAA,CACxD,IAAA,CAEN,IAAA,CAAK,mBAAqBI,EAAAA,CAAS,IAAA,CAAK,eAAA,CAAiB,EAAE,EAC3D,IAAA,CAAK,eAAA,CAAkBA,GAAS,IAAA,CAAK,YAAA,CAAc,GAAG,EACxD,CAEA,IAAA,EAAa,CACX,KAAK,WAAA,CAAcxC,CAAAA,CACjB,MAAA,CAAO,QAAA,CAAS,SAAW,MAAA,CAAO,QAAA,CAAS,MAC7C,CAAA,CAEA,SAAS,gBAAA,CAAiB,WAAA,CAAa,KAAK,kBAAkB,CAAA,CAC9D,SAAS,gBAAA,CAAiB,OAAA,CAAS,IAAA,CAAK,WAAW,EACnD,QAAA,CAAS,gBAAA,CAAiB,UAAA,CAAY,IAAA,CAAK,eAAgB,CACzD,OAAA,CAAS,IACX,CAAC,EACD,MAAA,CAAO,gBAAA,CAAiB,SAAU,IAAA,CAAK,eAAA,CAAiB,CAAE,OAAA,CAAS,IAAK,CAAC,CAAA,CACzE,OAAO,gBAAA,CAAiB,kBAAA,CAAoB,IAAA,CAAK,cAAc,EACjE,CAEA,OAAA,EAAgB,CACd,QAAA,CAAS,oBAAoB,WAAA,CAAa,IAAA,CAAK,kBAAkB,CAAA,CACjE,QAAA,CAAS,oBAAoB,OAAA,CAAS,IAAA,CAAK,WAAW,CAAA,CACtD,SAAS,mBAAA,CAAoB,UAAA,CAAY,IAAA,CAAK,cAAc,EAC5D,MAAA,CAAO,mBAAA,CAAoB,QAAA,CAAU,IAAA,CAAK,eAAe,CAAA,CACzD,MAAA,CAAO,oBAAoB,kBAAA,CAAoB,IAAA,CAAK,cAAc,EACpE,CAEQ,SAAA,EAAqB,CAzF/B,IAAA2D,CAAAA,CA0FI,OACE,IAAA,CAAK,YAAA,GAAiB,MACtB,CAAC,IAAA,CAAK,YAAA,CAAa,GAAA,CAAI,KAAK,WAAW,CAAA,CAEhC,QAEDA,CAAAA,CAAA,IAAA,CAAK,YAAY,IAAA,CAAK,WAAW,CAAA,GAAjC,IAAA,CAAAA,EAAsC,CAAA,EAAK,IAAA,CAAK,SAC1D,CAEQ,WAAA,CACNC,EACM,CArGV,IAAAD,CAAAA,CAsGS,IAAA,CAAK,WAAU,GACpB,IAAA,CAAK,YAAY,IAAA,CAAK,WAAW,IAC9BA,CAAAA,CAAA,IAAA,CAAK,WAAA,CAAY,IAAA,CAAK,WAAW,CAAA,GAAjC,IAAA,CAAAA,CAAAA,CAAsC,CAAA,EAAK,EAC9C,IAAA,CAAK,IAAA,CAAK,CACR,IAAA,CAAM,UACN,IAAA,CAAM,CACJ,GAAGC,CAAAA,CACH,IAAA,CAAM,KAAK,WAAA,CACX,SAAA,CAAW,IAAA,CAAK,GAAA,EAClB,CACF,CAAC,CAAA,EACH,CAGQ,eAAe,CAAA,CAAmC,CApH5D,IAAAD,CAAAA,CAAAE,EAAAC,CAAAA,CAAAC,CAAAA,CAqHI,IAAMC,CAAAA,CAAK,CAAA,CAAE,OACb,OAAKA,CAAAA,GAEHA,CAAAA,CAAG,YAAA,CAAa,YAAY,CAAA,GAAA,CAC5BL,CAAAA,CAAAK,CAAAA,CAAG,OAAA,CAAQ,cAAc,CAAA,GAAzB,IAAA,CAAA,MAAA,CAAAL,CAAAA,CAA4B,YAAA,CAAa,gBACzCK,CAAAA,CAAG,YAAA,CAAa,kBAAkB,CAAA,EAClCA,CAAAA,CAAG,aAAa,IAAI,CAAA,GACnBA,CAAAA,YAAc,iBAAA,EAAqBA,aAAc,iBAAA,CAAA,CAC9CH,CAAAA,CAAAG,CAAAA,CAAG,SAAA,GAAH,YAAAH,CAAAA,CAAc,IAAA,EAAA,CAAO,KAAA,CAAM,CAAA,CAAG,KAC9BE,CAAAA,CAAAA,CAAAD,CAAAA,CAAAE,EAAG,OAAA,CAAQ,WAAW,IAAtB,IAAA,CAAA,MAAA,CAAAF,CAAAA,CAAyB,WAAA,GAAzB,IAAA,CAAA,MAAA,CAAAC,EAAsC,IAAA,EAAA,CAAO,KAAA,CAAM,CAAA,CAAG,EAAA,CAAA,CAAA,CAAA,EAC5C,MAClB,CAGQ,cAAA,CAAeE,CAAAA,CAAWC,CAAAA,CAAWjE,EAAoB,CAC/D,IAAM4C,EAAM,IAAA,CAAK,GAAA,GACjB,IAAA,CAAK,YAAA,CAAe,IAAA,CAAK,YAAA,CAAa,OACnCnD,CAAAA,EAAMmD,CAAAA,CAAMnD,CAAAA,CAAE,CAAA,CAAIoD,GAAc,cACnC,CAAA,CACA,IAAA,CAAK,YAAA,CAAa,KAAK,CAAE,CAAA,CAAAmB,EAAG,CAAA,CAAAC,CAAAA,CAAG,EAAGrB,CAAI,CAAC,CAAA,CAEvC,IAAMsB,EAAS,IAAA,CAAK,YAAA,CAAa,MAAA,CAC9BzE,CAAAA,EAAM,KAAK,KAAA,CAAMA,CAAAA,CAAE,CAAA,CAAIuE,CAAAA,CAAGvE,EAAE,CAAA,CAAIwE,CAAC,GAAKpB,EAAAA,CAAc,cACvD,EAEIqB,CAAAA,CAAO,MAAA,EAAUrB,EAAAA,CAAc,cAAA,GACjC,KAAK,IAAA,CAAK,CACR,IAAA,CAAM,UAAA,CACN,KAAM,CACJ,IAAA,CAAA7C,CAAAA,CACA,CAAA,CAAAgE,EACA,CAAA,CAAAC,CAAAA,CACA,MAAOC,CAAAA,CAAO,MAAA,CACd,UAAWtB,CAAAA,CACX,SAAA,CAAW,IAAA,CAAK,SAClB,CACF,CAAC,CAAA,CAED,IAAA,CAAK,YAAA,CAAe,EAAC,EAEzB,CAyFF,CAAA,CAzNaC,EAAAA,CAWa,eAAiB,CAAA,CAX9BA,EAAAA,CAYa,eAAiB,GAAA,CAZ9BA,EAAAA,CAaa,eAAiB,EAAA,CAbpC,IAAMsB,EAAAA,CAANtB,EAAAA,KCRMuB,EAAAA,CAAN,KAAiB,CAkBtB,WAAA,CAAYC,EAKT,CAZH,IAAA,CAAQ,WAAA,CAAmC,IAAA,CAC3C,KAAQ,wBAAA,CAEG,IAAA,CAEX,KAAQ,WAAA,CAAc,KAAA,CAapB,GAAI,CACF,IAAMC,CAAAA,CAAI,IAAI,IAAID,CAAAA,CAAQ,QAAQ,CAAA,CAE5BE,CAAAA,CAAQD,EAAE,QAAA,CAAS,OAAA,CAAQ,KAAA,CAAO,EAAE,EAAE,KAAA,CAAM,GAAG,EACrDC,CAAAA,CAAM,GAAA,GACND,CAAAA,CAAE,QAAA,CAAWC,CAAAA,CAAM,IAAA,CAAK,GAAG,CAAA,EAAK,GAAA,CAChC,IAAA,CAAK,QAAA,CAAWD,EAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,KAAA,CAAO,EAAE,EAChD,CAAA,MAAQxE,EAAA,CACN,IAAA,CAAK,SAAWuE,CAAAA,CAAQ,SAC1B,CACA,IAAA,CAAK,UAAYA,CAAAA,CAAQ,SAAA,CACzB,IAAA,CAAK,KAAA,CAAQA,EAAQ,KAAA,CACrB,IAAA,CAAK,WAAA,CAAcA,CAAAA,CAAQ,UACvB,CAAE,aAAA,CAAe,UAAUA,CAAAA,CAAQ,SAAS,EAAG,CAAA,CAC/C,GACN,CAEA,MAAa,CACP,OAAO,MAAA,EAAW,WAAA,EAAe,KAAK,WAAA,GAE1C,IAAA,CAAK,QAAA,CAAW,OAAA,CAAQ,KAAK,IAAA,CAAK,OAAO,EACzC,IAAA,CAAK,QAAA,CAAW,QAAQ,IAAA,CAAK,IAAA,CAAK,OAAO,CAAA,CACzC,KAAK,SAAA,CAAY,OAAA,CAAQ,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA,CAE3C,OAAA,CAAQ,IAAA,CAAO,CAAA,GAAI1B,IAAoB,CACrC,IAAA,CAAK,SAAS,GAAGA,CAAI,EACrB,IAAA,CAAK,IAAA,CAAK,MAAA,CAAQ,IAAA,CAAK,OAAOA,CAAI,CAAC,EACrC,CAAA,CAEA,OAAA,CAAQ,KAAO,CAAA,GAAIA,CAAAA,GAAoB,CACrC,IAAA,CAAK,SAAS,GAAGA,CAAI,EACrB,IAAA,CAAK,IAAA,CAAK,OAAQ,IAAA,CAAK,MAAA,CAAOA,CAAI,CAAC,EACrC,CAAA,CAEA,OAAA,CAAQ,KAAA,CAAQ,CAAA,GAAIA,IAAoB,CACtC,IAAA,CAAK,SAAA,CAAU,GAAGA,CAAI,CAAA,CACtB,GAAM,CAAC6B,CAAK,CAAA,CAAI7B,EACV8B,CAAAA,CAAQD,CAAAA,YAAiB,KAAA,CAAQA,CAAAA,CAAM,MAAQ,MAAA,CACrD,IAAA,CAAK,IAAA,CAAK,OAAA,CAAS,KAAK,MAAA,CAAO7B,CAAI,CAAA,CAAG,CAAE,MAAA8B,CAAM,CAAC,EACjD,CAAA,CAEA,IAAA,CAAK,YAAc,MAAA,CAAO,OAAA,CAC1B,MAAA,CAAO,OAAA,CAAU,CAACC,CAAAA,CAAKC,CAAAA,CAAKC,CAAAA,CAAMC,CAAAA,CAAKC,KACrC,IAAA,CAAK,IAAA,CAAK,OAAA,CAAS,MAAA,CAAOJ,CAAG,CAAA,CAAG,CAC9B,MAAOI,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,EAAK,KAAA,CACZ,IAAA,CAAM,CAAE,GAAA,CAAAH,EAAK,IAAA,CAAAC,CAAAA,CAAM,GAAA,CAAAC,CAAI,CACzB,CAAC,CAAA,CACG,OAAO,IAAA,CAAK,aAAgB,UAAA,CACvB,IAAA,CAAK,YAAYH,CAAAA,CAAKC,CAAAA,CAAKC,EAAMC,CAAAA,CAAKC,CAAG,CAAA,CAE3C,KAAA,CAAA,CAGT,KAAK,wBAAA,CAA4B,CAAA,EAA6B,CAC5D,IAAMC,EAAS,CAAA,CAAE,MAAA,CACXC,CAAAA,CACJD,CAAAA,YAAkB,MACdA,CAAAA,CAAO,OAAA,CACP,OAAOA,CAAAA,EAAA,IAAA,CAAAA,EAAU,6BAA6B,CAAA,CACpD,IAAA,CAAK,IAAA,CAAK,QAASC,CAAAA,CAAS,CAC1B,KAAA,CAAOD,CAAAA,YAAkB,MAAQA,CAAAA,CAAO,KAAA,CAAQ,MAClD,CAAC,EACH,CAAA,CACA,MAAA,CAAO,iBACL,oBAAA,CACA,IAAA,CAAK,wBACP,CAAA,CAEA,IAAA,CAAK,WAAA,CAAc,IAAA,EACrB,CAEA,OAAA,EAAgB,CACT,IAAA,CAAK,WAAA,GACV,QAAQ,IAAA,CAAO,IAAA,CAAK,QAAA,CACpB,OAAA,CAAQ,KAAO,IAAA,CAAK,QAAA,CACpB,QAAQ,KAAA,CAAQ,IAAA,CAAK,UAErB,MAAA,CAAO,OAAA,CAAU,IAAA,CAAK,WAAA,CAClB,KAAK,wBAAA,EACP,MAAA,CAAO,oBACL,oBAAA,CACA,IAAA,CAAK,wBACP,CAAA,CAEF,IAAA,CAAK,WAAA,CAAc,KAAA,EACrB,CAGA,OAAA,CACEE,CAAAA,CACAD,EACAE,CAAAA,CACM,CACN,KAAK,IAAA,CAAKD,CAAAA,CAAOD,CAAAA,CAASE,CAAK,EACjC,CAEQ,MAAA,CAAOvC,CAAAA,CAAyB,CACtC,OAAOA,CAAAA,CACJ,GAAA,CAAKwC,CAAAA,EAAM,CACV,GAAIA,CAAAA,YAAa,KAAA,CAAO,OAAOA,CAAAA,CAAE,OAAA,CACjC,GAAI,OAAOA,CAAAA,EAAM,QAAA,CACf,GAAI,CACF,OAAO,IAAA,CAAK,SAAA,CAAUA,CAAC,CACzB,CAAA,MAAQrF,CAAAA,CAAA,CACN,OAAO,OAAOqF,CAAC,CACjB,CAEF,OAAO,MAAA,CAAOA,CAAC,CACjB,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CACb,CAEQ,IAAA,CACNF,CAAAA,CACAD,EACAE,CAAAA,CACM,CACN,IAAME,CAAAA,CAAkB,CACtB,SAAA,CAAW,IAAA,CAAK,UAChB,GAAI,IAAA,CAAK,MAAQ,CAAE,KAAA,CAAO,IAAA,CAAK,KAAM,EAAI,EAAC,CAC1C,KAAA,CAAAH,CAAAA,CACA,QAAAD,CAAAA,CACA,GAAA,CAAK,OAAO,MAAA,EAAW,YAAc,MAAA,CAAO,QAAA,CAAS,KAAO,MAAA,CAC5D,KAAA,CAAOE,GAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,KAAA,CACd,IAAA,CAAMA,GAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,IAAA,CACb,SAAA,CAAW,KAAK,GAAA,EAClB,CAAA,CACMxD,CAAAA,CAAM,GAAG,IAAA,CAAK,QAAQ,eACtB2D,CAAAA,CAAO,IAAA,CAAK,UAAUD,CAAK,CAAA,CAK5B,KAAA,CAAM1D,CAAAA,CAAK,CACd,MAAA,CAAQ,MAAA,CACR,OAAA,CAAS,CAAE,eAAgB,kBAAA,CAAoB,GAAG,IAAA,CAAK,WAAY,EACnE,IAAA,CAAA2D,CAAAA,CACA,UAAW,IACb,CAAC,EAAE,KAAA,CAAOP,CAAAA,EAAiB,CAErB,IAAA,CAAK,WACP,IAAA,CAAK,SAAA,CAAU,oCAAA,CAAsCA,CAAG,EAE5D,CAAC,EACH,CACF,ECnMA,IAAIQ,CAAAA,CAAAA,CACH,SAAUA,EAAU,CACjBA,CAAAA,CAASA,EAAS,QAAA,CAAc,CAAC,CAAA,CAAI,UAAA,CACrCA,EAASA,CAAAA,CAAS,YAAA,CAAkB,CAAC,CAAA,CAAI,cAAA,CACzCA,EAASA,CAAAA,CAAS,OAAA,CAAa,CAAC,CAAA,CAAI,UACpCA,CAAAA,CAASA,CAAAA,CAAS,KAAU,CAAC,CAAA,CAAI,OACjCA,CAAAA,CAASA,CAAAA,CAAS,KAAA,CAAW,CAAC,EAAI,OAAA,CAClCA,CAAAA,CAASA,CAAAA,CAAS,OAAA,CAAa,CAAC,CAAA,CAAI,UACxC,CAAA,EAAGA,CAAAA,GAAaA,EAAW,EAAC,CAAE,EAE9B,SAASC,EAAAA,CAAUC,EAAG,CAClB,OAAOA,CAAAA,CAAE,QAAA,GAAaA,EAAE,YAC5B,CACA,SAASC,EAAAA,CAAaD,EAAG,CACrB,IAAIE,CAAAA,CAAOF,CAAAA,EAAM,KAAuB,MAAA,CAASA,CAAAA,CAAE,KACnD,OAAA,CAAgBE,CAAAA,EAAS,KAA0B,MAAA,CAASA,CAAAA,CAAK,UAAA,IAAgBF,CACrF,CACA,SAASG,EAAAA,CAAkBC,CAAAA,CAAY,CACnC,OAAO,MAAA,CAAO,SAAA,CAAU,QAAA,CAAS,IAAA,CAAKA,CAAU,CAAA,GAAM,qBAC1D,CACA,SAASC,EAAAA,CAAmCC,EAAS,CACjD,OAAIA,CAAAA,CAAQ,QAAA,CAAS,yBAAyB,CAAA,EAC1C,CAACA,CAAAA,CAAQ,QAAA,CAAS,iCAAiC,CAAA,GACnDA,CAAAA,CAAUA,CAAAA,CAAQ,OAAA,CAAQ,0BAA2B,wDAAwD,CAAA,CAAA,CAE1GA,CACX,CACA,SAASC,GAAkBxF,CAAAA,CAAG,CAC1B,GAAI,CACA,IAAIyF,CAAAA,CAAQzF,CAAAA,CAAE,KAAA,EAASA,CAAAA,CAAE,SACzB,OAAOyF,CAAAA,CACDH,EAAAA,CAAmC,KAAA,CAAM,KAAKG,CAAK,CAAA,CAAE,IAAIC,EAAgB,CAAA,CAAE,KAAK,EAAE,CAAC,CAAA,CACnF,IACV,OACOC,CAAAA,CAAO,CACV,OAAO,IACX,CACJ,CACA,SAASD,EAAAA,CAAiBE,CAAAA,CAAM,CAC5B,IAAIC,CAAAA,CAAiBD,EAAK,OAAA,CAC1B,GAAIE,GAAgBF,CAAI,CAAA,CACpB,GAAI,CACAC,EAAiBL,EAAAA,CAAkBI,CAAAA,CAAK,UAAU,CAAA,EAAKC,EAC3D,CAAA,MACO1C,CAAAA,CAAI,CACX,CAEJ,OAAO0C,CACX,CACA,SAASC,EAAAA,CAAgBF,CAAAA,CAAM,CAC3B,OAAO,YAAA,GAAgBA,CAC3B,CACA,IAAIG,EAAAA,CAAAA,CAAU,UAAY,CACtB,SAASA,GAAS,CACd,IAAA,CAAK,SAAA,CAAY,IAAI,IACrB,IAAA,CAAK,WAAA,CAAc,IAAI,QAC3B,CACA,OAAAA,CAAAA,CAAO,SAAA,CAAU,KAAA,CAAQ,SAAUd,EAAG,CAClC,IAAI9B,CAAAA,CACJ,GAAI,CAAC8B,CAAAA,CACD,OAAO,GAAA,CACX,IAAI3F,GAAM6D,CAAAA,CAAK,IAAA,CAAK,QAAQ8B,CAAC,CAAA,IAAO,MAAQ9B,CAAAA,GAAO,MAAA,CAAS,MAAA,CAASA,CAAAA,CAAG,GACxE,OAAO7D,CAAAA,EAAO,IAAA,CAAwBA,CAAAA,CAAK,EAC/C,CAAA,CACAyG,CAAAA,CAAO,SAAA,CAAU,OAAA,CAAU,SAAUzG,CAAAA,CAAI,CACrC,OAAO,IAAA,CAAK,SAAA,CAAU,IAAIA,CAAE,CAAA,EAAK,IACrC,CAAA,CACAyG,EAAO,SAAA,CAAU,MAAA,CAAS,UAAY,CAClC,OAAO,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAM,CAC3C,EACAA,CAAAA,CAAO,SAAA,CAAU,QAAU,SAAUd,CAAAA,CAAG,CACpC,OAAO,KAAK,WAAA,CAAY,GAAA,CAAIA,CAAC,CAAA,EAAK,IACtC,CAAA,CACAc,CAAAA,CAAO,SAAA,CAAU,iBAAA,CAAoB,SAAUd,CAAAA,CAAG,CAC9C,IAAIe,CAAAA,CAAQ,IAAA,CACR1G,EAAK,IAAA,CAAK,KAAA,CAAM2F,CAAC,CAAA,CACrB,KAAK,SAAA,CAAU,MAAA,CAAU3F,CAAE,CAAA,CACvB2F,EAAE,UAAA,EACFA,CAAAA,CAAE,UAAA,CAAW,OAAA,CAAQ,SAAUgB,CAAAA,CAAW,CACtC,OAAOD,CAAAA,CAAM,iBAAA,CAAkBC,CAAS,CAC5C,CAAC,EAET,CAAA,CACAF,EAAO,SAAA,CAAU,GAAA,CAAM,SAAUzG,CAAAA,CAAI,CACjC,OAAO,IAAA,CAAK,SAAA,CAAU,GAAA,CAAIA,CAAE,CAChC,CAAA,CACAyG,EAAO,SAAA,CAAU,OAAA,CAAU,SAAUG,CAAAA,CAAM,CACvC,OAAO,IAAA,CAAK,YAAY,GAAA,CAAIA,CAAI,CACpC,CAAA,CACAH,EAAO,SAAA,CAAU,GAAA,CAAM,SAAUd,CAAAA,CAAGkB,EAAM,CACtC,IAAI7G,EAAK6G,CAAAA,CAAK,EAAA,CACd,KAAK,SAAA,CAAU,GAAA,CAAI7G,CAAAA,CAAI2F,CAAC,EACxB,IAAA,CAAK,WAAA,CAAY,IAAIA,CAAAA,CAAGkB,CAAI,EAChC,CAAA,CACAJ,CAAAA,CAAO,SAAA,CAAU,OAAA,CAAU,SAAUzG,CAAAA,CAAI2F,CAAAA,CAAG,CACxC,IAAImB,CAAAA,CAAU,KAAK,OAAA,CAAQ9G,CAAE,CAAA,CAC7B,GAAI8G,EAAS,CACT,IAAID,CAAAA,CAAO,IAAA,CAAK,YAAY,GAAA,CAAIC,CAAO,CAAA,CACnCD,CAAAA,EACA,KAAK,WAAA,CAAY,GAAA,CAAIlB,EAAGkB,CAAI,EACpC,CACA,IAAA,CAAK,SAAA,CAAU,GAAA,CAAI7G,CAAAA,CAAI2F,CAAC,EAC5B,CAAA,CACAc,CAAAA,CAAO,SAAA,CAAU,MAAQ,UAAY,CACjC,IAAA,CAAK,SAAA,CAAY,IAAI,GAAA,CACrB,IAAA,CAAK,YAAc,IAAI,QAC3B,EACOA,CACX,CAAA,GAAE,CACF,SAASM,IAAe,CACpB,OAAO,IAAIN,EACf,CACA,SAASO,EAAAA,CAAenD,CAAAA,CAAI,CACxB,IAAIoD,CAAAA,CAAmBpD,CAAAA,CAAG,iBAAkBqD,CAAAA,CAAUrD,CAAAA,CAAG,QAASsD,CAAAA,CAAOtD,CAAAA,CAAG,IAAA,CAAM7C,CAAAA,CAAQ6C,EAAG,KAAA,CAAOuD,CAAAA,CAAcvD,CAAAA,CAAG,WAAA,CACjHwD,EAAOrG,CAAAA,EAAS,EAAA,CACpB,OAAA,CAAIiG,CAAAA,CAAiBC,EAAQ,WAAA,EAAa,GACtCD,CAAAA,CAAiBE,CAAI,KACjBC,CAAAA,CACAC,CAAAA,CAAOD,CAAAA,CAAYC,CAAI,EAGvBA,CAAAA,CAAO,GAAA,CAAI,MAAA,CAAOA,CAAAA,CAAK,MAAM,CAAA,CAAA,CAG9BA,CACX,CACA,IAAIC,GAA0B,oBAAA,CAC9B,SAASC,GAAgBC,CAAAA,CAAQ,CAC7B,IAAIC,CAAAA,CAAMD,CAAAA,CAAO,UAAA,CAAW,IAAI,EAChC,GAAI,CAACC,CAAAA,CACD,OAAO,MAEX,IAAA,IADIC,CAAAA,CAAY,EAAA,CACPvD,CAAAA,CAAI,EAAGA,CAAAA,CAAIqD,CAAAA,CAAO,MAAOrD,CAAAA,EAAKuD,CAAAA,CACnC,QAAStD,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIoD,CAAAA,CAAO,OAAQpD,CAAAA,EAAKsD,CAAAA,CAAW,CAC/C,IAAIC,EAAeF,CAAAA,CAAI,YAAA,CACnBG,CAAAA,CAAuBN,EAAAA,IAA2BK,EAChDA,CAAAA,CAAaL,EAAuB,EACpCK,CAAAA,CACFE,CAAAA,CAAc,IAAI,WAAA,CAAYD,CAAAA,CAAqB,IAAA,CAAKH,CAAAA,CAAKtD,EAAGC,CAAAA,CAAG,IAAA,CAAK,IAAIsD,CAAAA,CAAWF,CAAAA,CAAO,MAAQrD,CAAC,CAAA,CAAG,IAAA,CAAK,GAAA,CAAIuD,EAAWF,CAAAA,CAAO,MAAA,CAASpD,CAAC,CAAC,CAAA,CAAE,KAAK,MAAM,CAAA,CACjK,GAAIyD,CAAAA,CAAY,KAAK,SAAUC,CAAAA,CAAO,CAAE,OAAOA,IAAU,CAAG,CAAC,CAAA,CACzD,OAAO,MACf,CAEJ,OAAO,KACX,CAEA,IAAIC,GAAM,CAAA,CACNC,EAAAA,CAAe,IAAI,MAAA,CAAO,cAAc,CAAA,CACxCC,EAAAA,CAAe,EAAA,CACnB,SAASC,IAAQ,CACb,OAAOH,EAAAA,EACX,CACA,SAASI,EAAAA,CAAgBC,CAAAA,CAAS,CAC9B,GAAIA,CAAAA,YAAmB,gBACnB,OAAO,MAAA,CAEX,IAAIC,CAAAA,CAAmBD,EAAQ,OAAA,CAAQ,WAAA,EAAY,CAAE,IAAA,GACrD,OAAIJ,EAAAA,CAAa,IAAA,CAAKK,CAAgB,EAC3B,KAAA,CAEJA,CACX,CACA,SAASC,EAAAA,CAAoBC,EAAO,CAChC,OAAOA,CAAAA,CAAM,QAAA,CACP,MAAM,IAAA,CAAKA,CAAAA,CAAM,QAAQ,CAAA,CACtB,IAAI,SAAUjC,CAAAA,CAAM,CAAE,OAAOA,EAAK,OAAA,EAAW,EAAI,CAAC,CAAA,CAClD,IAAA,CAAK,EAAE,CAAA,CACV,EACV,CACA,SAASkC,GAAc3G,CAAAA,CAAK,CACxB,IAAI4G,CAAAA,CAAS,GACb,OAAI5G,CAAAA,CAAI,OAAA,CAAQ,IAAI,EAAI,EAAA,CACpB4G,CAAAA,CAAS5G,EAAI,KAAA,CAAM,GAAG,EAAE,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAAE,KAAK,GAAG,CAAA,CAG5C4G,CAAAA,CAAS5G,CAAAA,CAAI,MAAM,GAAG,CAAA,CAAE,CAAC,CAAA,CAE7B4G,EAASA,CAAAA,CAAO,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,EACrBA,CACX,CACA,IAAIC,EAAAA,CACAC,GACAC,EAAAA,CAAiB,4CAAA,CACjBC,EAAAA,CAAgB,qDAAA,CAChBC,GAAW,uBAAA,CACf,SAASC,EAAAA,CAAqB9C,CAAAA,CAAS+C,EAAM,CACzC,OAAA,CAAQ/C,GAAW,EAAA,EAAI,OAAA,CAAQ2C,GAAgB,SAAUH,CAAAA,CAAQQ,CAAAA,CAAQC,CAAAA,CAAOC,EAAQC,CAAAA,CAAOC,CAAAA,CAAO,CAClG,IAAIC,CAAAA,CAAWJ,GAASE,CAAAA,EAASC,CAAAA,CAC7BE,CAAAA,CAAaN,CAAAA,EAAUE,GAAU,EAAA,CACrC,GAAI,CAACG,CAAAA,CACD,OAAOb,EAKX,GAHI,CAACI,EAAAA,CAAc,IAAA,CAAKS,CAAQ,CAAA,EAG5BR,EAAAA,CAAS,IAAA,CAAKQ,CAAQ,EACtB,OAAO,MAAA,CAAO,MAAA,CAAOC,CAAU,EAAE,MAAA,CAAOD,CAAQ,EAAE,MAAA,CAAOC,CAAAA,CAAY,GAAG,CAAA,CAE5E,GAAID,CAAAA,CAAS,CAAC,IAAM,GAAA,CAChB,OAAO,MAAA,CAAO,MAAA,CAAOC,CAAU,CAAA,CAAE,MAAA,CAAOf,EAAAA,CAAcQ,CAAI,EAAIM,CAAQ,CAAA,CAAE,OAAOC,CAAAA,CAAY,GAAG,EAElG,IAAI3E,CAAAA,CAAQoE,CAAAA,CAAK,KAAA,CAAM,GAAG,CAAA,CACtBtE,CAAAA,CAAQ4E,CAAAA,CAAS,KAAA,CAAM,GAAG,CAAA,CAC9B1E,CAAAA,CAAM,GAAA,EAAI,CACV,QAAS4E,CAAAA,CAAK,CAAA,CAAGC,EAAU/E,CAAAA,CAAO8E,CAAAA,CAAKC,EAAQ,MAAA,CAAQD,CAAAA,EAAAA,CAAM,CACzD,IAAIE,EAAOD,CAAAA,CAAQD,CAAE,CAAA,CACjBE,CAAAA,GAAS,MAGJA,CAAAA,GAAS,IAAA,CACd9E,CAAAA,CAAM,GAAA,GAGNA,CAAAA,CAAM,IAAA,CAAK8E,CAAI,CAAA,EAEvB,CACA,OAAO,MAAA,CAAO,MAAA,CAAOH,CAAU,CAAA,CAAE,OAAO3E,CAAAA,CAAM,IAAA,CAAK,GAAG,CAAC,EAAE,MAAA,CAAO2E,CAAAA,CAAY,GAAG,CACnF,CAAC,CACL,CACA,IAAII,EAAAA,CAAoB,oBAAA,CACpBC,GAA0B,oBAAA,CAC9B,SAASC,EAAAA,CAAwBC,CAAAA,CAAKC,EAAgB,CAClD,GAAIA,CAAAA,CAAe,IAAA,KAAW,EAAA,CAC1B,OAAOA,CAAAA,CAEX,IAAIC,EAAM,CAAA,CACV,SAASC,EAAkBC,CAAAA,CAAO,CAC9B,IAAIC,CAAAA,CACAC,CAAAA,CAAQF,CAAAA,CAAM,IAAA,CAAKH,EAAe,SAAA,CAAUC,CAAG,CAAC,CAAA,CACpD,OAAII,CAAAA,EACAD,CAAAA,CAAQC,CAAAA,CAAM,CAAC,EACfJ,CAAAA,EAAOG,CAAAA,CAAM,OACNA,CAAAA,EAEJ,EACX,CAEA,IAAA,IADIE,CAAAA,CAAS,EAAC,CAEVJ,EAAkBL,EAAuB,CAAA,CACrC,EAAAI,CAAAA,EAAOD,EAAe,MAAA,CAAA,EAFjB,CAKT,IAAIlI,CAAAA,CAAMoI,EAAkBN,EAAiB,CAAA,CAC7C,GAAI9H,CAAAA,CAAI,KAAA,CAAM,EAAE,CAAA,GAAM,GAAA,CAClBA,CAAAA,CAAMyI,EAAAA,CAAcR,EAAKjI,CAAAA,CAAI,SAAA,CAAU,CAAA,CAAGA,CAAAA,CAAI,OAAS,CAAC,CAAC,CAAA,CACzDwI,CAAAA,CAAO,KAAKxI,CAAG,CAAA,CAAA,KAEd,CACD,IAAI0I,CAAAA,CAAiB,GACrB1I,CAAAA,CAAMyI,EAAAA,CAAcR,CAAAA,CAAKjI,CAAG,EAE5B,IAAA,IADI2I,CAAAA,CAAW,KAAA,GACF,CACT,IAAI,CAAA,CAAIT,CAAAA,CAAe,MAAA,CAAOC,CAAG,EACjC,GAAI,CAAA,GAAM,GAAI,CACVK,CAAAA,CAAO,MAAMxI,CAAAA,CAAM0I,CAAAA,EAAgB,IAAA,EAAM,EACzC,KACJ,CAAA,KAAA,GACUC,CAAAA,CAWF,CAAA,GAAM,MACNA,CAAAA,CAAW,KAAA,CAAA,CAAA,KAAA,GAXX,CAAA,GAAM,GAAA,CAAK,CACXR,CAAAA,EAAO,CAAA,CACPK,EAAO,IAAA,CAAA,CAAMxI,CAAAA,CAAM0I,GAAgB,IAAA,EAAM,CAAA,CACzC,KACJ,MACS,CAAA,GAAM,GAAA,GACXC,CAAAA,CAAW,IAAA,CAAA,CAQnBD,GAAkB,CAAA,CAClBP,CAAAA,EAAO,EACX,CACJ,CACJ,CACA,OAAOK,EAAO,IAAA,CAAK,IAAI,CAC3B,CACA,SAASC,EAAAA,CAAcR,CAAAA,CAAKC,EAAgB,CACxC,GAAI,CAACA,CAAAA,EAAkBA,EAAe,IAAA,EAAK,GAAM,EAAA,CAC7C,OAAOA,EAEX,IAAIzE,CAAAA,CAAIwE,EAAI,aAAA,CAAc,GAAG,EAC7B,OAAAxE,CAAAA,CAAE,IAAA,CAAOyE,CAAAA,CACFzE,EAAE,IACb,CACA,SAASmF,EAAAA,CAAavG,EAAI,CACtB,OAAO,CAAA,EAAQA,CAAAA,CAAG,UAAY,KAAA,EAASA,CAAAA,CAAG,gBAC9C,CACA,SAASwG,IAAU,CACf,IAAIpF,CAAAA,CAAI,QAAA,CAAS,cAAc,GAAG,CAAA,CAClC,OAAAA,CAAAA,CAAE,KAAO,EAAA,CACFA,CAAAA,CAAE,IACb,CACA,SAASqF,EAAAA,CAAmBb,CAAAA,CAAK5C,EAAS0D,CAAAA,CAAM5J,CAAAA,CAAO,CACnD,OAAI4J,CAAAA,GAAS,KAAA,EACRA,CAAAA,GAAS,QAAU5J,CAAAA,EAAS,EAAEkG,IAAY,KAAA,EAASlG,CAAAA,CAAM,CAAC,CAAA,GAAM,GAAA,CAAA,EAG5D4J,CAAAA,GAAS,YAAA,EAAgB5J,GAASA,CAAAA,CAAM,CAAC,IAAM,GAAA,EAG/C4J,CAAAA,GAAS,cACd5J,CAAAA,GACCkG,CAAAA,GAAY,OAAA,EAAWA,CAAAA,GAAY,MAAQA,CAAAA,GAAY,IAAA,CAAA,CAPjDoD,EAAAA,CAAcR,CAAAA,CAAK9I,CAAK,CAAA,CAU1B4J,CAAAA,GAAS,QAAA,EAAY5J,CAAAA,CACnB6I,GAAwBC,CAAAA,CAAK9I,CAAK,EAEpC4J,CAAAA,GAAS,OAAA,EAAW5J,EAClB+H,EAAAA,CAAqB/H,CAAAA,CAAO0J,EAAAA,EAAS,EAEvCxD,CAAAA,GAAY,QAAA,EAAY0D,CAAAA,GAAS,MAAA,EAAU5J,EACzCsJ,EAAAA,CAAcR,CAAAA,CAAK9I,CAAK,CAAA,CAGxBA,CAEf,CACA,SAAS6J,GAAkBzC,CAAAA,CAAS0C,CAAAA,CAAYC,EAAe,CAC3D,GAAI,OAAOD,CAAAA,EAAe,UACtB,GAAI1C,CAAAA,CAAQ,SAAA,CAAU,QAAA,CAAS0C,CAAU,CAAA,CACrC,OAAO,KAAA,CAAA,KAIX,IAAA,IAASE,EAAS5C,CAAAA,CAAQ,SAAA,CAAU,OAAQ4C,CAAAA,EAAAA,EAAW,CACnD,IAAIC,CAAAA,CAAY7C,CAAAA,CAAQ,SAAA,CAAU4C,CAAM,EACxC,GAAIF,CAAAA,CAAW,IAAA,CAAKG,CAAS,EACzB,OAAO,KAEf,CAEJ,OAAIF,EACO3C,CAAAA,CAAQ,OAAA,CAAQ2C,CAAa,CAAA,CAEjC,KACX,CACA,SAASG,EAAAA,CAAkBtE,CAAAA,CAAMuE,CAAAA,CAAOC,EAAgB,CACpD,GAAI,CAACxE,CAAAA,CACD,OAAO,MAAA,CACX,GAAIA,CAAAA,CAAK,QAAA,GAAaA,EAAK,YAAA,CACvB,OAAKwE,EAEEF,EAAAA,CAAkBtE,CAAAA,CAAK,WAAYuE,CAAAA,CAAOC,CAAc,CAAA,CADpD,KAAA,CAGf,QAASJ,CAAAA,CAASpE,CAAAA,CAAK,SAAA,CAAU,MAAA,CAAQoE,KAAW,CAChD,IAAIC,CAAAA,CAAYrE,CAAAA,CAAK,UAAUoE,CAAM,CAAA,CACrC,GAAIG,CAAAA,CAAM,IAAA,CAAKF,CAAS,CAAA,CACpB,OAAO,KAEf,CACA,OAAKG,CAAAA,CAEEF,EAAAA,CAAkBtE,CAAAA,CAAK,UAAA,CAAYuE,EAAOC,CAAc,CAAA,CADpD,KAEf,CACA,SAASC,EAAAA,CAAgBzE,CAAAA,CAAM0E,EAAeC,CAAAA,CAAkB,CAC5D,IAAIrH,CAAAA,CAAK0C,CAAAA,CAAK,QAAA,GAAaA,CAAAA,CAAK,aAC1BA,CAAAA,CACAA,CAAAA,CAAK,cACX,GAAI1C,CAAAA,GAAO,KACP,OAAO,MAAA,CACX,GAAI,OAAOoH,GAAkB,QAAA,CAAA,CAGzB,GAFIpH,EAAG,SAAA,CAAU,QAAA,CAASoH,CAAa,CAAA,EAEnCpH,CAAAA,CAAG,OAAA,CAAQ,GAAA,CAAI,OAAOoH,CAAa,CAAC,CAAA,CACpC,OAAO,cAGPJ,EAAAA,CAAkBhH,CAAAA,CAAIoH,CAAAA,CAAe,IAAI,EACzC,OAAO,KAAA,CAEf,OAAI,CAAA,EAAAC,CAAAA,GACIrH,EAAG,OAAA,CAAQqH,CAAgB,CAAA,EAE3BrH,CAAAA,CAAG,QAAQqH,CAAgB,CAAA,CAAA,CAIvC,CACA,SAASC,GAAiBC,CAAAA,CAAUC,CAAAA,CAAUC,CAAAA,CAAmB,CAC7D,IAAIC,CAAAA,CAAMH,CAAAA,CAAS,cACnB,GAAKG,CAAAA,CAGL,KAAIC,CAAAA,CAAQ,KAAA,CACRC,CAAAA,CACJ,GAAI,CACAA,CAAAA,CAAaF,CAAAA,CAAI,QAAA,CAAS,WAC9B,OACOvF,CAAAA,CAAO,CACV,MACJ,CACA,GAAIyF,CAAAA,GAAe,UAAA,CAAY,CAC3B,IAAIC,CAAAA,CAAU,WAAW,UAAY,CAC5BF,CAAAA,GACDH,CAAAA,GACAG,CAAAA,CAAQ,IAAA,EAEhB,CAAA,CAAGF,CAAiB,EACpBF,CAAAA,CAAS,gBAAA,CAAiB,MAAA,CAAQ,UAAY,CAC1C,YAAA,CAAaM,CAAO,EACpBF,CAAAA,CAAQ,IAAA,CACRH,IACJ,CAAC,CAAA,CACD,MACJ,CACA,IAAIM,CAAAA,CAAW,aAAA,CACf,GAAIJ,EAAI,QAAA,CAAS,IAAA,GAASI,CAAAA,EACtBP,CAAAA,CAAS,MAAQO,CAAAA,EACjBP,CAAAA,CAAS,MAAQ,EAAA,CACjB,OAAA,UAAA,CAAWC,EAAU,CAAC,CAAA,CACfD,CAAAA,CAAS,gBAAA,CAAiB,OAAQC,CAAQ,CAAA,CAErDD,CAAAA,CAAS,gBAAA,CAAiB,OAAQC,CAAQ,EAAA,CAC9C,CACA,SAASO,GAAqBC,CAAAA,CAAMR,CAAAA,CAAUS,EAAuB,CACjE,IAAIN,EAAQ,KAAA,CACRO,CAAAA,CACJ,GAAI,CACAA,EAAmBF,CAAAA,CAAK,MAC5B,CAAA,MACO7F,CAAAA,CAAO,CACV,MACJ,CACA,GAAI,CAAA+F,EAEJ,CAAA,IAAIC,CAAAA,CAAQ,WAAW,UAAY,CAC1BR,IACDH,CAAAA,EAAS,CACTG,CAAAA,CAAQ,IAAA,EAEhB,EAAGM,CAAqB,CAAA,CACxBD,EAAK,gBAAA,CAAiB,MAAA,CAAQ,UAAY,CACtC,YAAA,CAAaG,CAAK,CAAA,CAClBR,EAAQ,IAAA,CACRH,CAAAA,GACJ,CAAC,EAAA,CACL,CACA,SAASY,EAAAA,CAAc3G,CAAAA,CAAGnB,CAAAA,CAAS,CAC/B,IAAIsF,CAAAA,CAAMtF,CAAAA,CAAQ,GAAA,CAAK+H,EAAS/H,CAAAA,CAAQ,MAAA,CAAQsG,CAAAA,CAAatG,CAAAA,CAAQ,WAAYuG,CAAAA,CAAgBvG,CAAAA,CAAQ,cAAe8G,CAAAA,CAAgB9G,CAAAA,CAAQ,cAAe+G,CAAAA,CAAmB/G,CAAAA,CAAQ,gBAAA,CAAkBgI,CAAAA,CAAmBhI,EAAQ,gBAAA,CAAkBX,CAAAA,CAAKW,CAAAA,CAAQ,gBAAA,CAAkByC,EAAmBpD,CAAAA,GAAO,MAAA,CAAS,EAAC,CAAIA,EAAI4I,CAAAA,CAAajI,CAAAA,CAAQ,WAAY4C,CAAAA,CAAc5C,CAAAA,CAAQ,YAAaT,CAAAA,CAAKS,CAAAA,CAAQ,cAAA,CAAgBkI,CAAAA,CAAiB3I,IAAO,MAAA,CAAS,EAAC,CAAIA,CAAAA,CAAI4I,EAAenI,CAAAA,CAAQ,YAAA,CAAcoI,CAAAA,CAAepI,CAAAA,CAAQ,aAAcqI,CAAAA,CAAkBrI,CAAAA,CAAQ,gBAAiBR,CAAAA,CAAKQ,CAAAA,CAAQ,kBAAmBsI,CAAAA,CAAoB9I,CAAAA,GAAO,MAAA,CAAS,KAAA,CAAQA,EAC5oB+I,CAAAA,CAASC,EAAAA,CAAUlD,CAAAA,CAAKyC,CAAM,EAClC,OAAQ5G,CAAAA,CAAE,QAAA,EACN,KAAKA,CAAAA,CAAE,aAAA,CACH,OAAIA,CAAAA,CAAE,UAAA,GAAe,aACV,CACH,IAAA,CAAMF,CAAAA,CAAS,QAAA,CACf,WAAY,EAAC,CACb,UAAA,CAAYE,CAAAA,CAAE,UAClB,CAAA,CAGO,CACH,IAAA,CAAMF,CAAAA,CAAS,SACf,UAAA,CAAY,EAChB,CAAA,CAER,KAAKE,EAAE,kBAAA,CACH,OAAO,CACH,IAAA,CAAMF,EAAS,YAAA,CACf,IAAA,CAAME,CAAAA,CAAE,IAAA,CACR,SAAUA,CAAAA,CAAE,QAAA,CACZ,QAAA,CAAUA,CAAAA,CAAE,SACZ,MAAA,CAAQoH,CACZ,EACJ,KAAKpH,CAAAA,CAAE,aACH,OAAOsH,EAAAA,CAAqBtH,CAAAA,CAAG,CAC3B,IAAKmE,CAAAA,CACL,UAAA,CAAYgB,CAAAA,CACZ,aAAA,CAAeC,EACf,gBAAA,CAAkByB,CAAAA,CAClB,gBAAA,CAAkBvF,CAAAA,CAClB,YAAaG,CAAAA,CACb,cAAA,CAAgBsF,EAChB,YAAA,CAAcC,CAAAA,CACd,aAAcC,CAAAA,CACd,eAAA,CAAiBC,CAAAA,CACjB,iBAAA,CAAmBC,EACnB,MAAA,CAAQC,CACZ,CAAC,CAAA,CACL,KAAKpH,CAAAA,CAAE,SAAA,CACH,OAAOuH,EAAAA,CAAkBvH,EAAG,CACxB,aAAA,CAAe2F,EACf,gBAAA,CAAkBC,CAAAA,CAClB,WAAYkB,CAAAA,CACZ,MAAA,CAAQM,CACZ,CAAC,EACL,KAAKpH,CAAAA,CAAE,kBAAA,CACH,OAAO,CACH,IAAA,CAAMF,CAAAA,CAAS,KAAA,CACf,WAAA,CAAa,GACb,MAAA,CAAQsH,CACZ,EACJ,KAAKpH,CAAAA,CAAE,aACH,OAAO,CACH,IAAA,CAAMF,CAAAA,CAAS,QACf,WAAA,CAAaE,CAAAA,CAAE,WAAA,EAAe,EAAA,CAC9B,OAAQoH,CACZ,CAAA,CACJ,QACI,OAAO,MACf,CACJ,CACA,SAASC,EAAAA,CAAUlD,CAAAA,CAAKyC,EAAQ,CAC5B,GAAKA,CAAAA,CAAO,OAAA,CAAQzC,CAAG,CAAA,CAEvB,CAAA,IAAIqD,CAAAA,CAAQZ,CAAAA,CAAO,MAAMzC,CAAG,CAAA,CAC5B,OAAOqD,CAAAA,GAAU,EAAI,MAAA,CAAYA,CAAAA,CACrC,CACA,SAASD,EAAAA,CAAkBvH,EAAGnB,CAAAA,CAAS,CACnC,IAAIX,CAAAA,CACAyH,EAAgB9G,CAAAA,CAAQ,aAAA,CAAe+G,CAAAA,CAAmB/G,CAAAA,CAAQ,iBAAkBiI,CAAAA,CAAajI,CAAAA,CAAQ,UAAA,CAAYuI,CAAAA,CAASvI,EAAQ,MAAA,CACtI4I,CAAAA,CAAgBzH,EAAE,UAAA,EAAcA,CAAAA,CAAE,WAAW,OAAA,CAC7C0H,CAAAA,CAAc1H,CAAAA,CAAE,WAAA,CAChB2H,EAAUF,CAAAA,GAAkB,OAAA,CAAU,IAAA,CAAO,MAAA,CAC7CG,EAAWH,CAAAA,GAAkB,QAAA,CAAW,IAAA,CAAO,MAAA,CACnD,GAAIE,CAAAA,EAAWD,CAAAA,CAAa,CACxB,GAAI,CACI1H,EAAE,WAAA,EAAeA,CAAAA,CAAE,eAAA,EAEb,EAAA,CAAA9B,EAAK8B,CAAAA,CAAE,UAAA,CAAW,KAAA,IAAW,IAAA,EAAQ9B,IAAO,KAAA,CAAA,CAAA,EAAkBA,CAAAA,CAAG,QAAA,GACvEwJ,CAAAA,CAAc/E,GAAoB3C,CAAAA,CAAE,UAAA,CAAW,KAAK,CAAA,EAE5D,CAAA,MACOV,EAAK,CACR,OAAA,CAAQ,IAAA,CAAK,uDAAA,CAAwD,OAAOA,CAAG,CAAA,CAAGU,CAAC,EACvF,CACA0H,CAAAA,CAActE,EAAAA,CAAqBsE,CAAAA,CAAa3C,EAAAA,EAAS,EAC7D,CACA,OAAI6C,CAAAA,GACAF,CAAAA,CAAc,sBAEd,CAACC,CAAAA,EACD,CAACC,CAAAA,EACDF,GACAhC,EAAAA,CAAgB1F,CAAAA,CAAG2F,EAAeC,CAAgB,CAAA,GAClD8B,EAAcZ,CAAAA,CACRA,CAAAA,CAAWY,CAAW,CAAA,CACtBA,EAAY,OAAA,CAAQ,OAAA,CAAS,GAAG,CAAA,CAAA,CAEnC,CACH,KAAM5H,CAAAA,CAAS,IAAA,CACf,WAAA,CAAa4H,CAAAA,EAAe,GAC5B,OAAA,CAASC,CAAAA,CACT,MAAA,CAAQP,CACZ,CACJ,CACA,SAASE,EAAAA,CAAqBtH,CAAAA,CAAGnB,EAAS,CAMtC,IAAA,IALIsF,EAAMtF,CAAAA,CAAQ,GAAA,CAAKsG,EAAatG,CAAAA,CAAQ,UAAA,CAAYuG,CAAAA,CAAgBvG,CAAAA,CAAQ,cAAegI,CAAAA,CAAmBhI,CAAAA,CAAQ,gBAAA,CAAkBX,CAAAA,CAAKW,EAAQ,gBAAA,CAAkByC,CAAAA,CAAmBpD,CAAAA,GAAO,MAAA,CAAS,EAAC,CAAIA,CAAAA,CAAIuD,EAAc5C,CAAAA,CAAQ,WAAA,CAAaT,EAAKS,CAAAA,CAAQ,cAAA,CAAgBkI,CAAAA,CAAiB3I,CAAAA,GAAO,OAAS,EAAC,CAAIA,CAAAA,CAAI4I,CAAAA,CAAenI,EAAQ,YAAA,CAAcoI,CAAAA,CAAepI,CAAAA,CAAQ,YAAA,CAAcqI,EAAkBrI,CAAAA,CAAQ,eAAA,CAAiBR,EAAKQ,CAAAA,CAAQ,iBAAA,CAAmBsI,EAAoB9I,CAAAA,GAAO,MAAA,CAAS,KAAA,CAAQA,CAAAA,CAAI+I,EAASvI,CAAAA,CAAQ,MAAA,CACnhBgJ,CAAAA,CAAY3C,EAAAA,CAAkBlF,EAAGmF,CAAAA,CAAYC,CAAa,CAAA,CAC1D7D,CAAAA,CAAUiB,GAAgBxC,CAAC,CAAA,CAC3B8H,EAAa,EAAC,CACdC,EAAM/H,CAAAA,CAAE,UAAA,CAAW,MAAA,CACdnF,CAAAA,CAAI,EAAGA,CAAAA,CAAIkN,CAAAA,CAAKlN,CAAAA,EAAAA,CAAK,CAC1B,IAAImN,CAAAA,CAAOhI,CAAAA,CAAE,UAAA,CAAWnF,CAAC,EACzBiN,CAAAA,CAAWE,CAAAA,CAAK,IAAI,CAAA,CAAIhD,EAAAA,CAAmBb,EAAK5C,CAAAA,CAASyG,CAAAA,CAAK,IAAA,CAAMA,CAAAA,CAAK,KAAK,EAClF,CACA,GAAIzG,CAAAA,GAAY,QAAUsF,CAAAA,CAAkB,CACxC,IAAIoB,CAAAA,CAAa,MAAM,IAAA,CAAK9D,CAAAA,CAAI,WAAW,CAAA,CAAE,IAAA,CAAK,SAAUpJ,CAAAA,CAAG,CAC3D,OAAOA,CAAAA,CAAE,OAASiF,CAAAA,CAAE,IACxB,CAAC,CAAA,CACGM,EAAU,IAAA,CACV2H,CAAAA,GACA3H,CAAAA,CAAUC,EAAAA,CAAkB0H,CAAU,CAAA,CAAA,CAEtC3H,CAAAA,GACA,OAAOwH,CAAAA,CAAW,GAAA,CAClB,OAAOA,CAAAA,CAAW,IAAA,CAClBA,CAAAA,CAAW,QAAA,CAAW1E,GAAqB9C,CAAAA,CAAS2H,CAAAA,CAAW,IAAI,CAAA,EAE3E,CACA,GAAI1G,CAAAA,GAAY,OAAA,EACZvB,CAAAA,CAAE,KAAA,EACF,EAAEA,CAAAA,CAAE,SAAA,EAAaA,EAAE,WAAA,EAAe,EAAA,EAAI,MAAK,CAAE,MAAA,CAAQ,CACrD,IAAIM,EAAUC,EAAAA,CAAkBP,CAAAA,CAAE,KAAK,CAAA,CACnCM,IACAwH,CAAAA,CAAW,QAAA,CAAW1E,EAAAA,CAAqB9C,CAAAA,CAASyE,IAAS,CAAA,EAErE,CACA,GAAIxD,CAAAA,GAAY,SAAWA,CAAAA,GAAY,UAAA,EAAcA,CAAAA,GAAY,QAAA,CAAU,CACvE,IAAIlG,CAAAA,CAAQ2E,CAAAA,CAAE,KAAA,CACVkI,EAAUlI,CAAAA,CAAE,OAAA,CACZ8H,CAAAA,CAAW,IAAA,GAAS,SACpBA,CAAAA,CAAW,IAAA,GAAS,YACpBA,CAAAA,CAAW,IAAA,GAAS,UACpBA,CAAAA,CAAW,IAAA,GAAS,QAAA,EACpBzM,CAAAA,CACAyM,EAAW,KAAA,CAAQzG,EAAAA,CAAe,CAC9B,IAAA,CAAMyG,EAAW,IAAA,CACjB,OAAA,CAASvG,CAAAA,CACT,KAAA,CAAOlG,EACP,gBAAA,CAAkBiG,CAAAA,CAClB,YAAaG,CACjB,CAAC,EAEIyG,CAAAA,GACLJ,CAAAA,CAAW,OAAA,CAAUI,CAAAA,EAE7B,CASA,GARI3G,CAAAA,GAAY,QAAA,GACRvB,CAAAA,CAAE,UAAY,CAACsB,CAAAA,CAAiB,MAAA,CAChCwG,CAAAA,CAAW,SAAW,IAAA,CAGtB,OAAOA,EAAW,QAAA,CAAA,CAGtBvG,CAAAA,GAAY,UAAY0F,CAAAA,CAAAA,CACxB,GAAIjH,CAAAA,CAAE,SAAA,GAAc,KACX4B,EAAAA,CAAgB5B,CAAC,CAAA,GAClB8H,CAAAA,CAAW,WAAa9H,CAAAA,CAAE,SAAA,CAAU+G,CAAAA,CAAe,IAAA,CAAMA,EAAe,OAAO,CAAA,CAAA,CAAA,KAAA,GAG9E,EAAE,WAAA,GAAe/G,CAAAA,CAAAA,CAAI,CAC1B,IAAImI,CAAAA,CAAgBnI,CAAAA,CAAE,SAAA,CAAU+G,EAAe,IAAA,CAAMA,CAAAA,CAAe,OAAO,CAAA,CACvEqB,EAAc,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA,CACjDA,EAAY,KAAA,CAAQpI,CAAAA,CAAE,MACtBoI,CAAAA,CAAY,MAAA,CAASpI,EAAE,MAAA,CACvB,IAAIqI,CAAAA,CAAqBD,CAAAA,CAAY,UAAUrB,CAAAA,CAAe,IAAA,CAAMA,CAAAA,CAAe,OAAO,EACtFoB,CAAAA,GAAkBE,CAAAA,GAClBP,CAAAA,CAAW,UAAA,CAAaK,GAEhC,CAAA,CAEJ,GAAI5G,IAAY,KAAA,EAASyF,CAAAA,CAAc,CAC9BjE,EAAAA,GACDA,EAAAA,CAAgBoB,CAAAA,CAAI,aAAA,CAAc,QAAQ,CAAA,CAC1CnB,EAAAA,CAAYD,GAAc,UAAA,CAAW,IAAI,GAE7C,IAAIuF,CAAAA,CAAUtI,CAAAA,CACVuI,CAAAA,CAAaD,EAAQ,WAAA,CACzBA,CAAAA,CAAQ,YAAc,WAAA,CACtB,IAAIE,EAAoB,UAAY,CAChC,GAAI,CACAzF,GAAc,KAAA,CAAQuF,CAAAA,CAAQ,YAAA,CAC9BvF,EAAAA,CAAc,OAASuF,CAAAA,CAAQ,aAAA,CAC/BtF,EAAAA,CAAU,SAAA,CAAUsF,EAAS,CAAA,CAAG,CAAC,EACjCR,CAAAA,CAAW,UAAA,CAAa/E,GAAc,SAAA,CAAUgE,CAAAA,CAAe,IAAA,CAAMA,CAAAA,CAAe,OAAO,EAC/F,CAAA,MACOzH,CAAAA,CAAK,CACR,QAAQ,IAAA,CAAK,wBAAA,CAAyB,MAAA,CAAOgJ,CAAAA,CAAQ,WAAY,WAAW,CAAA,CAAE,OAAOhJ,CAAG,CAAC,EAC7F,CACAiJ,CAAAA,CACOT,CAAAA,CAAW,WAAA,CAAcS,EAC1BD,CAAAA,CAAQ,eAAA,CAAgB,aAAa,EAC/C,EACIA,CAAAA,CAAQ,QAAA,EAAYA,CAAAA,CAAQ,YAAA,GAAiB,EAC7CE,CAAAA,EAAkB,CAElBF,EAAQ,MAAA,CAASE,EACzB,CAeA,GAAA,CAdIjH,CAAAA,GAAY,OAAA,EAAWA,CAAAA,GAAY,WACnCuG,CAAAA,CAAW,aAAA,CAAgB9H,CAAAA,CAAE,MAAA,CACvB,SACA,QAAA,CACN8H,CAAAA,CAAW,mBAAA,CAAsB9H,CAAAA,CAAE,aAElCmH,CAAAA,GACGnH,CAAAA,CAAE,aACF8H,CAAAA,CAAW,aAAA,CAAgB9H,EAAE,UAAA,CAAA,CAE7BA,CAAAA,CAAE,SAAA,GACF8H,CAAAA,CAAW,aAAe9H,CAAAA,CAAE,SAAA,CAAA,CAAA,CAGhC6H,CAAAA,CAAW,CACX,IAAIvJ,EAAAA,CAAK0B,CAAAA,CAAE,qBAAA,EAAsB,CAAGyI,GAAQnK,EAAAA,CAAG,KAAA,CAAOoK,EAASpK,EAAAA,CAAG,MAAA,CAClEwJ,EAAa,CACT,KAAA,CAASA,CAAAA,CAAW,KAAA,CACpB,SAAU,EAAA,CAAG,MAAA,CAAOW,EAAAA,CAAO,IAAI,EAC/B,SAAA,CAAW,EAAA,CAAG,MAAA,CAAOC,CAAAA,CAAQ,IAAI,CACrC,EACJ,CACA,OAAInH,CAAAA,GAAY,UAAY,CAAC2F,CAAAA,CAAgBY,CAAAA,CAAW,GAAG,IAClD9H,CAAAA,CAAE,eAAA,GACH8H,CAAAA,CAAW,MAAA,CAASA,EAAW,GAAA,CAAA,CAEnC,OAAOA,CAAAA,CAAW,GAAA,CAAA,CAEf,CACH,IAAA,CAAMhI,CAAAA,CAAS,QACf,OAAA,CAASyB,CAAAA,CACT,WAAYuG,CAAAA,CACZ,UAAA,CAAY,EAAC,CACb,MAAOhD,EAAAA,CAAa9E,CAAC,CAAA,EAAK,MAAA,CAC1B,UAAW6H,CAAAA,CACX,MAAA,CAAQT,CACZ,CACJ,CACA,SAASuB,CAAAA,CAAcC,EAAW,CAC9B,OAAIA,IAAc,MAAA,CACP,EAAA,CAGAA,CAAAA,CAAU,WAAA,EAEzB,CACA,SAASC,EAAAA,CAAgBC,CAAAA,CAAIC,EAAgB,CACzC,GAAIA,CAAAA,CAAe,OAAA,EAAWD,EAAG,IAAA,GAAShJ,CAAAA,CAAS,QAC/C,OAAO,KAAA,CAEN,GAAIgJ,CAAAA,CAAG,IAAA,GAAShJ,CAAAA,CAAS,OAAA,CAAS,CACnC,GAAIiJ,CAAAA,CAAe,MAAA,GACdD,CAAAA,CAAG,UAAY,QAAA,EACXA,CAAAA,CAAG,OAAA,GAAY,MAAA,EACZA,EAAG,UAAA,CAAW,GAAA,GAAQ,WACtBA,CAAAA,CAAG,UAAA,CAAW,KAAO,QAAA,EACxBA,CAAAA,CAAG,OAAA,GAAY,MAAA,EACZA,EAAG,UAAA,CAAW,GAAA,GAAQ,UAAA,EACtB,OAAOA,EAAG,UAAA,CAAW,IAAA,EAAS,QAAA,EAC9BA,CAAAA,CAAG,WAAW,IAAA,CAAK,QAAA,CAAS,KAAK,CAAA,CAAA,CACzC,OAAO,MAEN,GAAIC,CAAAA,CAAe,WAAA,GAClBD,CAAAA,CAAG,UAAY,MAAA,EAAUA,CAAAA,CAAG,UAAA,CAAW,GAAA,GAAQ,iBAC5CA,CAAAA,CAAG,OAAA,GAAY,MAAA,GACXH,CAAAA,CAAcG,EAAG,UAAA,CAAW,IAAI,EAAE,KAAA,CAAM,mCAAmC,GACxEH,CAAAA,CAAcG,CAAAA,CAAG,UAAA,CAAW,IAAI,IAAM,kBAAA,EACtCH,CAAAA,CAAcG,CAAAA,CAAG,UAAA,CAAW,GAAG,CAAA,GAAM,MAAA,EACrCH,CAAAA,CAAcG,CAAAA,CAAG,WAAW,GAAG,CAAA,GAAM,oBACrCH,CAAAA,CAAcG,CAAAA,CAAG,WAAW,GAAG,CAAA,GAAM,eAAA,CAAA,CAAA,CACjD,OAAO,MAEN,GAAIA,CAAAA,CAAG,OAAA,GAAY,MAAA,CAAQ,CAC5B,GAAIC,CAAAA,CAAe,oBAAA,EACfJ,CAAAA,CAAcG,EAAG,UAAA,CAAW,IAAI,EAAE,KAAA,CAAM,wBAAwB,EAChE,OAAO,KAAA,CAEN,GAAIC,CAAAA,CAAe,iBACnBJ,CAAAA,CAAcG,CAAAA,CAAG,UAAA,CAAW,QAAQ,EAAE,KAAA,CAAM,mBAAmB,CAAA,EAC5DH,CAAAA,CAAcG,EAAG,UAAA,CAAW,IAAI,EAAE,KAAA,CAAM,gBAAgB,GACxDH,CAAAA,CAAcG,CAAAA,CAAG,UAAA,CAAW,IAAI,IAAM,WAAA,CAAA,CAC1C,OAAO,MAEN,GAAIC,CAAAA,CAAe,iBACnBJ,CAAAA,CAAcG,CAAAA,CAAG,UAAA,CAAW,IAAI,IAAM,QAAA,EACnCH,CAAAA,CAAcG,EAAG,UAAA,CAAW,IAAI,IAAM,WAAA,EACtCH,CAAAA,CAAcG,CAAAA,CAAG,UAAA,CAAW,IAAI,CAAA,GAAM,SAAA,CAAA,CAC1C,OAAO,KAAA,CAEN,GAAIC,CAAAA,CAAe,iBAAA,EACpBD,CAAAA,CAAG,UAAA,CAAW,YAAY,CAAA,GAAM,MAAA,CAChC,OAAO,KAAA,CAEN,GAAIC,EAAe,kBAAA,GACnBJ,CAAAA,CAAcG,CAAAA,CAAG,UAAA,CAAW,IAAI,CAAA,GAAM,QAAA,EACnCH,CAAAA,CAAcG,CAAAA,CAAG,WAAW,IAAI,CAAA,GAAM,WAAA,EACtCH,CAAAA,CAAcG,EAAG,UAAA,CAAW,IAAI,IAAM,WAAA,EACtCH,CAAAA,CAAcG,EAAG,UAAA,CAAW,IAAI,CAAA,GAAM,WAAA,EACtCH,EAAcG,CAAAA,CAAG,UAAA,CAAW,IAAI,CAAA,GAAM,UACtCH,CAAAA,CAAcG,CAAAA,CAAG,UAAA,CAAW,QAAQ,EAAE,KAAA,CAAM,WAAW,GACvDH,CAAAA,CAAcG,CAAAA,CAAG,WAAW,QAAQ,CAAA,CAAE,KAAA,CAAM,WAAW,GAC3D,OAAO,KAAA,CAEN,GAAIC,CAAAA,CAAe,uBACnBJ,CAAAA,CAAcG,CAAAA,CAAG,UAAA,CAAW,IAAI,IAAM,0BAAA,EACnCH,CAAAA,CAAcG,EAAG,UAAA,CAAW,IAAI,IAAM,qBAAA,EACtCH,CAAAA,CAAcG,CAAAA,CAAG,UAAA,CAAW,IAAI,CAAA,GAAM,YAAA,EACtCH,CAAAA,CAAcG,CAAAA,CAAG,WAAW,IAAI,CAAA,GAAM,iBAAA,EACtCH,CAAAA,CAAcG,EAAG,UAAA,CAAW,IAAI,IAAM,WAAA,EACtCH,CAAAA,CAAcG,EAAG,UAAA,CAAW,IAAI,CAAA,GAAM,cAAA,EACtCH,EAAcG,CAAAA,CAAG,UAAA,CAAW,IAAI,CAAA,GAAM,8BAC1C,OAAO,KAEf,CACJ,CACA,OAAO,MACX,CACA,SAASE,EAAAA,CAAoBhJ,CAAAA,CAAGnB,EAAS,CACrC,IAAIsF,CAAAA,CAAMtF,CAAAA,CAAQ,IAAK+H,CAAAA,CAAS/H,CAAAA,CAAQ,MAAA,CAAQsG,CAAAA,CAAatG,EAAQ,UAAA,CAAYuG,CAAAA,CAAgBvG,CAAAA,CAAQ,aAAA,CAAe8G,EAAgB9G,CAAAA,CAAQ,aAAA,CAAe+G,EAAmB/G,CAAAA,CAAQ,gBAAA,CAAkBX,EAAKW,CAAAA,CAAQ,SAAA,CAAWoK,CAAAA,CAAY/K,CAAAA,GAAO,OAAS,KAAA,CAAQA,CAAAA,CAAIE,EAAKS,CAAAA,CAAQ,gBAAA,CAAkBgI,EAAmBzI,CAAAA,GAAO,MAAA,CAAS,IAAA,CAAOA,CAAAA,CAAIC,EAAKQ,CAAAA,CAAQ,gBAAA,CAAkByC,EAAmBjD,CAAAA,GAAO,MAAA,CAAS,EAAC,CAAIA,CAAAA,CAAIyI,CAAAA,CAAajI,CAAAA,CAAQ,WAAY4C,CAAAA,CAAc5C,CAAAA,CAAQ,WAAA,CAAakK,CAAAA,CAAiBlK,EAAQ,cAAA,CAAgBP,CAAAA,CAAKO,CAAAA,CAAQ,cAAA,CAAgBkI,EAAiBzI,CAAAA,GAAO,MAAA,CAAS,EAAC,CAAIA,CAAAA,CAAI4K,EAAKrK,CAAAA,CAAQ,YAAA,CAAcmI,CAAAA,CAAekC,CAAAA,GAAO,OAAS,KAAA,CAAQA,CAAAA,CAAIC,CAAAA,CAAKtK,CAAAA,CAAQ,aAAcoI,CAAAA,CAAekC,CAAAA,GAAO,MAAA,CAAS,KAAA,CAAQA,EAAIC,CAAAA,CAAcvK,CAAAA,CAAQ,YAAawK,CAAAA,CAAexK,CAAAA,CAAQ,aAAcyK,CAAAA,CAAKzK,CAAAA,CAAQ,iBAAA,CAAmBmH,CAAAA,CAAoBsD,IAAO,MAAA,CAAS,GAAA,CAAOA,CAAAA,CAAIC,CAAAA,CAAmB1K,EAAQ,gBAAA,CAAkB2K,CAAAA,CAAK3K,CAAAA,CAAQ,qBAAA,CAAuB4K,EAAwBD,CAAAA,GAAO,MAAA,CAAS,IAAOA,CAAAA,CAAIE,CAAAA,CAAK7K,EAAQ,eAAA,CAAiBqI,CAAAA,CAAkBwC,CAAAA,GAAO,MAAA,CAAS,UAAY,CAAE,OAAO,MAAO,CAAA,CAAIA,EAAIC,CAAAA,CAAK9K,CAAAA,CAAQ,iBAAA,CAAmBsI,EAAAA,CAAoBwC,IAAO,MAAA,CAAS,KAAA,CAAQA,EAC3qCC,EAAAA,CAAK/K,CAAAA,CAAQ,mBAAoBgL,CAAAA,CAAqBD,EAAAA,GAAO,MAAA,CAAS,IAAA,CAAOA,GAC7EE,CAAAA,CAAkBnD,EAAAA,CAAc3G,CAAAA,CAAG,CACnC,IAAKmE,CAAAA,CACL,MAAA,CAAQyC,CAAAA,CACR,UAAA,CAAYzB,EACZ,aAAA,CAAeC,CAAAA,CACf,cAAeO,CAAAA,CACf,gBAAA,CAAkBC,EAClB,gBAAA,CAAkBiB,CAAAA,CAClB,gBAAA,CAAkBvF,CAAAA,CAClB,WAAYwF,CAAAA,CACZ,WAAA,CAAarF,CAAAA,CACb,cAAA,CAAgBsF,EAChB,YAAA,CAAcC,CAAAA,CACd,YAAA,CAAcC,CAAAA,CACd,gBAAiBC,CAAAA,CACjB,iBAAA,CAAmBC,EACvB,CAAC,CAAA,CACD,GAAI,CAAC2C,CAAAA,CACD,OAAA,OAAA,CAAQ,IAAA,CAAK9J,EAAG,gBAAgB,CAAA,CACzB,IAAA,CAEX,IAAI3F,GACAuM,CAAAA,CAAO,OAAA,CAAQ5G,CAAC,CAAA,CAChB3F,GAAKuM,CAAAA,CAAO,KAAA,CAAM5G,CAAC,CAAA,CAEd6I,EAAAA,CAAgBiB,EAAiBf,CAAc,CAAA,EACnD,CAACc,CAAAA,EACEC,EAAgB,IAAA,GAAShK,CAAAA,CAAS,MAClC,CAACgK,CAAAA,CAAgB,SACjB,CAACA,CAAAA,CAAgB,WAAA,CAAY,OAAA,CAAQ,cAAe,EAAE,CAAA,CAAE,OAC5DzP,EAAAA,CAAKiI,EAAAA,CAGLjI,GAAKkI,EAAAA,EAAM,CAEf,IAAIwH,CAAAA,CAAiB,OAAO,MAAA,CAAOD,CAAAA,CAAiB,CAAE,EAAA,CAAIzP,EAAG,CAAC,CAAA,CAE9D,GADAuM,CAAAA,CAAO,IAAI5G,CAAAA,CAAG+J,CAAc,EACxB1P,EAAAA,GAAOiI,EAAAA,CACP,OAAO,IAAA,CAEP8G,CAAAA,EACAA,CAAAA,CAAYpJ,CAAC,EAEjB,IAAIgK,CAAAA,CAAc,CAACf,CAAAA,CACnB,GAAIc,CAAAA,CAAe,IAAA,GAASjK,CAAAA,CAAS,OAAA,CAAS,CAC1CkK,CAAAA,CAAcA,CAAAA,EAAe,CAACD,CAAAA,CAAe,SAAA,CAC7C,OAAOA,CAAAA,CAAe,SAAA,CACtB,IAAI3J,EAAAA,CAAaJ,EAAE,UAAA,CACfI,EAAAA,EAAcD,EAAAA,CAAkBC,EAAU,IAC1C2J,CAAAA,CAAe,YAAA,CAAe,IAAA,EACtC,CACA,IAAKA,CAAAA,CAAe,IAAA,GAASjK,EAAS,QAAA,EAClCiK,CAAAA,CAAe,OAASjK,CAAAA,CAAS,OAAA,GACjCkK,CAAAA,CAAa,CACTjB,EAAe,cAAA,EACfgB,CAAAA,CAAe,IAAA,GAASjK,CAAAA,CAAS,SACjCiK,CAAAA,CAAe,OAAA,GAAY,MAAA,GAC3BF,CAAAA,CAAqB,OA0BzB,IAAA,IAxBII,EAAAA,CAAgB,CAChB,GAAA,CAAK9F,CAAAA,CACL,OAAQyC,CAAAA,CACR,UAAA,CAAYzB,CAAAA,CACZ,aAAA,CAAeC,EACf,aAAA,CAAeO,CAAAA,CACf,gBAAA,CAAkBC,CAAAA,CAClB,UAAWqD,CAAAA,CACX,gBAAA,CAAkBpC,CAAAA,CAClB,gBAAA,CAAkBvF,EAClB,UAAA,CAAYwF,CAAAA,CACZ,YAAarF,CAAAA,CACb,cAAA,CAAgBsH,EAChB,cAAA,CAAgBhC,CAAAA,CAChB,YAAA,CAAcC,CAAAA,CACd,aAAcC,CAAAA,CACd,kBAAA,CAAoB4C,CAAAA,CACpB,WAAA,CAAaT,EACb,YAAA,CAAcC,CAAAA,CACd,iBAAA,CAAmBrD,CAAAA,CACnB,iBAAkBuD,CAAAA,CAClB,qBAAA,CAAuBE,EACvB,eAAA,CAAiBvC,CACrB,EACSrD,CAAAA,CAAK,CAAA,CAAGqG,CAAAA,CAAK,KAAA,CAAM,KAAKlK,CAAAA,CAAE,UAAU,CAAA,CAAG6D,CAAAA,CAAKqG,EAAG,MAAA,CAAQrG,CAAAA,EAAAA,CAAM,CAClE,IAAIsG,EAASD,CAAAA,CAAGrG,CAAE,EACduG,CAAAA,CAAsBpB,EAAAA,CAAoBmB,EAAQF,EAAa,CAAA,CAC/DG,CAAAA,EACAL,CAAAA,CAAe,WAAW,IAAA,CAAKK,CAAmB,EAE1D,CACA,GAAIrK,GAAUC,CAAC,CAAA,EAAKA,CAAAA,CAAE,UAAA,CAClB,QAASqK,CAAAA,CAAK,CAAA,CAAGC,EAAK,KAAA,CAAM,IAAA,CAAKtK,EAAE,UAAA,CAAW,UAAU,CAAA,CAAGqK,CAAAA,CAAKC,EAAG,MAAA,CAAQD,CAAAA,EAAAA,CAAM,CAC7E,IAAIF,EAASG,CAAAA,CAAGD,CAAE,CAAA,CACdD,CAAAA,CAAsBpB,GAAoBmB,CAAAA,CAAQF,EAAa,EAC/DG,CAAAA,GACAjK,EAAAA,CAAkBH,EAAE,UAAU,CAAA,GACzBoK,CAAAA,CAAoB,QAAA,CAAW,MACpCL,CAAAA,CAAe,UAAA,CAAW,IAAA,CAAKK,CAAmB,GAE1D,CAER,CACA,OAAIpK,CAAAA,CAAE,YACFC,EAAAA,CAAaD,CAAAA,CAAE,UAAU,CAAA,EACzBG,EAAAA,CAAkBH,EAAE,UAAU,CAAA,GAC9B+J,CAAAA,CAAe,QAAA,CAAW,MAE1BA,CAAAA,CAAe,IAAA,GAASjK,CAAAA,CAAS,OAAA,EACjCiK,EAAe,OAAA,GAAY,QAAA,EAC3BlE,EAAAA,CAAiB7F,CAAAA,CAAG,UAAY,CAC5B,IAAIuK,EAAYvK,CAAAA,CAAE,eAAA,CAClB,GAAIuK,CAAAA,EAAalB,CAAAA,CAAc,CAC3B,IAAImB,GAAuBxB,EAAAA,CAAoBuB,CAAAA,CAAW,CACtD,GAAA,CAAKA,EACL,MAAA,CAAQ3D,CAAAA,CACR,UAAA,CAAYzB,CAAAA,CACZ,cAAeC,CAAAA,CACf,aAAA,CAAeO,EACf,gBAAA,CAAkBC,CAAAA,CAClB,UAAW,KAAA,CACX,gBAAA,CAAkBiB,CAAAA,CAClB,gBAAA,CAAkBvF,EAClB,UAAA,CAAYwF,CAAAA,CACZ,WAAA,CAAarF,CAAAA,CACb,eAAgBsH,CAAAA,CAChB,cAAA,CAAgBhC,CAAAA,CAChB,YAAA,CAAcC,EACd,YAAA,CAAcC,CAAAA,CACd,mBAAoB4C,CAAAA,CACpB,WAAA,CAAaT,EACb,YAAA,CAAcC,CAAAA,CACd,iBAAA,CAAmBrD,CAAAA,CACnB,iBAAkBuD,CAAAA,CAClB,qBAAA,CAAuBE,CAAAA,CACvB,eAAA,CAAiBvC,CACrB,CAAC,CAAA,CACGsD,EAAAA,EACAnB,CAAAA,CAAarJ,EAAGwK,EAAoB,EAE5C,CACJ,CAAA,CAAGxE,CAAiB,EAEpB+D,CAAAA,CAAe,IAAA,GAASjK,CAAAA,CAAS,OAAA,EACjCiK,EAAe,OAAA,GAAY,MAAA,EAC3BA,CAAAA,CAAe,UAAA,CAAW,MAAQ,YAAA,EAClCzD,EAAAA,CAAqBtG,CAAAA,CAAG,UAAY,CAChC,GAAIuJ,CAAAA,CAAkB,CAClB,IAAIkB,CAAAA,CAAqBzB,GAAoBhJ,CAAAA,CAAG,CAC5C,GAAA,CAAKmE,CAAAA,CACL,OAAQyC,CAAAA,CACR,UAAA,CAAYzB,EACZ,aAAA,CAAeC,CAAAA,CACf,cAAeO,CAAAA,CACf,gBAAA,CAAkBC,CAAAA,CAClB,SAAA,CAAW,MACX,gBAAA,CAAkBiB,CAAAA,CAClB,iBAAkBvF,CAAAA,CAClB,UAAA,CAAYwF,EACZ,WAAA,CAAarF,CAAAA,CACb,cAAA,CAAgBsH,CAAAA,CAChB,eAAgBhC,CAAAA,CAChB,YAAA,CAAcC,CAAAA,CACd,YAAA,CAAcC,EACd,kBAAA,CAAoB4C,CAAAA,CACpB,WAAA,CAAaT,CAAAA,CACb,aAAcC,CAAAA,CACd,iBAAA,CAAmBrD,EACnB,gBAAA,CAAkBuD,CAAAA,CAClB,sBAAuBE,CAAAA,CACvB,eAAA,CAAiBvC,CACrB,CAAC,EACGuD,CAAAA,EACAlB,CAAAA,CAAiBvJ,CAAAA,CAAGyK,CAAkB,EAE9C,CACJ,CAAA,CAAGhB,CAAqB,CAAA,CAErBM,CACX,CACA,SAASW,GAAS1K,CAAAA,CAAGnB,CAAAA,CAAS,CAC1B,IAAIX,CAAAA,CAAKW,CAAAA,EAAW,GAAIT,CAAAA,CAAKF,CAAAA,CAAG,MAAA,CAAQ0I,CAAAA,CAASxI,IAAO,MAAA,CAAS,IAAI0C,EAAAA,CAAW1C,CAAAA,CAAIC,EAAKH,CAAAA,CAAG,UAAA,CAAYiH,EAAa9G,CAAAA,GAAO,MAAA,CAAS,WAAaA,CAAAA,CAAIC,CAAAA,CAAKJ,CAAAA,CAAG,aAAA,CAAekH,EAAgB9G,CAAAA,GAAO,MAAA,CAAS,IAAA,CAAOA,CAAAA,CAAI4K,EAAKhL,CAAAA,CAAG,aAAA,CAAeyH,CAAAA,CAAgBuD,CAAAA,GAAO,OAAS,SAAA,CAAYA,CAAAA,CAAIC,EAAKjL,CAAAA,CAAG,gBAAA,CAAkB0H,EAAmBuD,CAAAA,GAAO,MAAA,CAAS,IAAA,CAAOA,CAAAA,CAAIG,EAAKpL,CAAAA,CAAG,gBAAA,CAAkB2I,CAAAA,CAAmByC,CAAAA,GAAO,OAAS,IAAA,CAAOA,CAAAA,CAAIE,CAAAA,CAAKtL,CAAAA,CAAG,aAAc8I,CAAAA,CAAewC,CAAAA,GAAO,OAAS,KAAA,CAAQA,CAAAA,CAAIE,EAAKxL,CAAAA,CAAG,YAAA,CAAc+I,CAAAA,CAAeyC,CAAAA,GAAO,OAAS,KAAA,CAAQA,CAAAA,CAAIC,CAAAA,CAAKzL,CAAAA,CAAG,cAAeyM,CAAAA,CAAgBhB,CAAAA,GAAO,MAAA,CAAS,KAAA,CAAQA,EAAI7C,CAAAA,CAAa5I,CAAAA,CAAG,WAAYuD,CAAAA,CAAcvD,CAAAA,CAAG,YAAa0L,CAAAA,CAAK1L,CAAAA,CAAG,OAAA,CAAS0M,CAAAA,CAAUhB,IAAO,MAAA,CAAS,KAAA,CAAQA,CAAAA,CAAI7C,CAAAA,CAAiB7I,EAAG,cAAA,CAAgB2L,CAAAA,CAAqB3L,CAAAA,CAAG,kBAAA,CAAoBkL,EAAclL,CAAAA,CAAG,WAAA,CAAamL,EAAenL,CAAAA,CAAG,YAAA,CAAc8H,EAAoB9H,CAAAA,CAAG,iBAAA,CAAmBqL,CAAAA,CAAmBrL,CAAAA,CAAG,iBAAkBuL,CAAAA,CAAwBvL,CAAAA,CAAG,sBAAuBgM,CAAAA,CAAKhM,CAAAA,CAAG,gBAAiBgJ,EAAAA,CAAkBgD,CAAAA,GAAO,MAAA,CAAS,UAAY,CAAE,OAAO,MAAO,EAAIA,CAAAA,CAC9kC5I,EAAAA,CAAmBqJ,IAAkB,IAAA,CACnC,CACE,KAAA,CAAO,IAAA,CACP,KAAM,IAAA,CACN,gBAAA,CAAkB,IAAA,CAClB,KAAA,CAAO,KACP,KAAA,CAAO,IAAA,CACP,MAAA,CAAQ,IAAA,CACR,MAAO,IAAA,CACP,MAAA,CAAQ,KACR,GAAA,CAAK,IAAA,CACL,KAAM,IAAA,CACN,IAAA,CAAM,IAAA,CACN,GAAA,CAAK,KACL,IAAA,CAAM,IAAA,CACN,QAAA,CAAU,IAAA,CACV,OAAQ,IAAA,CACR,QAAA,CAAU,IACd,CAAA,CACEA,IAAkB,KAAA,CACd,CACE,SAAU,IACd,CAAA,CACEA,EACN5B,CAAAA,CAAiB6B,CAAAA,GAAY,IAAA,EAAQA,CAAAA,GAAY,MAE7C,CACI,MAAA,CAAQ,IAAA,CACR,OAAA,CAAS,KACT,WAAA,CAAa,IAAA,CACb,cAAA,CAAgB,IAAA,CAChB,qBAAsBA,CAAAA,GAAY,KAAA,CAClC,eAAgB,IAAA,CAChB,cAAA,CAAgB,KAChB,iBAAA,CAAmB,IAAA,CACnB,kBAAA,CAAoB,IAAA,CACpB,qBAAsB,IAC1B,CAAA,CACFA,CAAAA,GAAY,KAAA,CACR,EAAC,CACDA,CAAAA,CACV,OAAO5B,EAAAA,CAAoBhJ,EAAG,CAC1B,GAAA,CAAKA,EACL,MAAA,CAAQ4G,CAAAA,CACR,WAAYzB,CAAAA,CACZ,aAAA,CAAeC,CAAAA,CACf,aAAA,CAAeO,EACf,gBAAA,CAAkBC,CAAAA,CAClB,SAAA,CAAW,KAAA,CACX,iBAAkBiB,CAAAA,CAClB,gBAAA,CAAkBvF,EAAAA,CAClB,UAAA,CAAYwF,EACZ,WAAA,CAAarF,CAAAA,CACb,eAAgBsH,CAAAA,CAChB,cAAA,CAAgBhC,EAChB,YAAA,CAAcC,CAAAA,CACd,YAAA,CAAcC,CAAAA,CACd,mBAAoB4C,CAAAA,CACpB,WAAA,CAAaT,CAAAA,CACb,YAAA,CAAcC,EACd,iBAAA,CAAmBrD,CAAAA,CACnB,gBAAA,CAAkBuD,CAAAA,CAClB,sBAAuBE,CAAAA,CACvB,eAAA,CAAiBvC,GACjB,iBAAA,CAAmB,KACvB,CAAC,CACL,CC1/BA,SAAS2D,CAAAA,CAAGrJ,EAAMxE,CAAAA,CAAIY,CAAAA,CAAS,SAAU,CACrC,IAAMiB,EAAU,CAAE,OAAA,CAAS,IAAA,CAAM,OAAA,CAAS,IAAK,CAAA,CAC/C,OAAAjB,EAAO,gBAAA,CAAiB4D,CAAAA,CAAMxE,EAAI6B,CAAO,CAAA,CAClC,IAAMjB,CAAAA,CAAO,oBAAoB4D,CAAAA,CAAMxE,CAAAA,CAAI6B,CAAO,CAC7D,CACA,IAAMiM,EAAAA,CAAiC,CAAA;AAAA;AAAA,4EAAA,CAAA,CAKnCC,EAAAA,CAAU,CACV,GAAA,CAAK,EAAC,CACN,OAAQ,CACJ,OAAA,OAAA,CAAQ,KAAA,CAAMD,EAA8B,CAAA,CACrC,EACX,EACA,OAAA,EAAU,CACN,OAAA,OAAA,CAAQ,KAAA,CAAMA,EAA8B,CAAA,CACrC,IACX,CAAA,CACA,iBAAA,EAAoB,CAChB,OAAA,CAAQ,KAAA,CAAMA,EAA8B,EAChD,EACA,GAAA,EAAM,CACF,OAAA,OAAA,CAAQ,KAAA,CAAMA,EAA8B,CAAA,CACrC,KACX,CAAA,CACA,KAAA,EAAQ,CACJ,OAAA,CAAQ,KAAA,CAAMA,EAA8B,EAChD,CACJ,CAAA,CACI,OAAO,MAAA,EAAW,WAAA,EAAe,MAAA,CAAO,KAAA,EAAS,MAAA,CAAO,OAAA,GACxDC,EAAAA,CAAU,IAAI,KAAA,CAAMA,EAAAA,CAAS,CACzB,GAAA,CAAInN,EAAQoN,CAAAA,CAAMC,CAAAA,CAAU,CACxB,OAAID,CAAAA,GAAS,KAAA,EACT,QAAQ,KAAA,CAAMF,EAA8B,CAAA,CAEzC,OAAA,CAAQ,GAAA,CAAIlN,CAAAA,CAAQoN,EAAMC,CAAQ,CAC7C,CACJ,CAAC,CAAA,CAAA,CAEL,SAASlO,EAAAA,CAASmO,CAAAA,CAAMC,CAAAA,CAAMtM,CAAAA,CAAU,EAAC,CAAG,CACxC,IAAIuM,EAAU,IAAA,CACVC,CAAAA,CAAW,CAAA,CACf,OAAO,SAAA,GAAalO,CAAAA,CAAM,CACtB,IAAMC,CAAAA,CAAM,IAAA,CAAK,GAAA,EAAI,CACjB,CAACiO,CAAAA,EAAYxM,EAAQ,OAAA,GAAY,KAAA,GACjCwM,CAAAA,CAAWjO,CAAAA,CAAAA,CAEf,IAAMkO,CAAAA,CAAYH,CAAAA,EAAQ/N,CAAAA,CAAMiO,CAAAA,CAAAA,CAC1BE,CAAAA,CAAU,IAAA,CACZD,CAAAA,EAAa,CAAA,EAAKA,CAAAA,CAAYH,GAC1BC,CAAAA,GACA,YAAA,CAAaA,CAAO,CAAA,CACpBA,CAAAA,CAAU,IAAA,CAAA,CAEdC,EAAWjO,CAAAA,CACX8N,CAAAA,CAAK,KAAA,CAAMK,CAAAA,CAASpO,CAAI,CAAA,EAEnB,CAACiO,CAAAA,EAAWvM,CAAAA,CAAQ,QAAA,GAAa,KAAA,GACtCuM,CAAAA,CAAU,UAAA,CAAW,IAAM,CACvBC,CAAAA,CAAWxM,CAAAA,CAAQ,OAAA,GAAY,KAAA,CAAQ,CAAA,CAAI,IAAA,CAAK,KAAI,CACpDuM,CAAAA,CAAU,IAAA,CACVF,CAAAA,CAAK,KAAA,CAAMK,CAAAA,CAASpO,CAAI,EAC5B,CAAA,CAAGmO,CAAS,CAAA,EAEpB,CACJ,CACA,SAASE,GAAW5N,CAAAA,CAAQzC,CAAAA,CAAKsQ,CAAAA,CAAGC,CAAAA,CAAWzF,CAAAA,CAAM,MAAA,CAAQ,CACzD,IAAM0F,CAAAA,CAAW1F,CAAAA,CAAI,MAAA,CAAO,wBAAA,CAAyBrI,CAAAA,CAAQzC,CAAG,EAChE,OAAA8K,CAAAA,CAAI,MAAA,CAAO,cAAA,CAAerI,CAAAA,CAAQzC,CAAAA,CAAKuQ,EACjCD,CAAAA,CACA,CACE,GAAA,CAAIpQ,CAAAA,CAAO,CACP,UAAA,CAAW,IAAM,CACboQ,CAAAA,CAAE,GAAA,CAAI,IAAA,CAAK,IAAA,CAAMpQ,CAAK,EAC1B,CAAA,CAAG,CAAC,CAAA,CACAsQ,CAAAA,EAAYA,CAAAA,CAAS,GAAA,EACrBA,CAAAA,CAAS,IAAI,IAAA,CAAK,IAAA,CAAMtQ,CAAK,EAErC,CACJ,CAAC,CAAA,CACE,IAAMmQ,EAAAA,CAAW5N,CAAAA,CAAQzC,CAAAA,CAAKwQ,CAAAA,EAAY,EAAC,CAAG,IAAI,CAC7D,CACA,SAASC,EAAAA,CAAMC,CAAAA,CAAQ5G,CAAAA,CAAM6G,CAAAA,CAAa,CACtC,GAAI,CACA,GAAI,EAAE7G,CAAAA,IAAQ4G,CAAAA,CAAAA,CACV,OAAO,IAAM,CACb,CAAA,CAEJ,IAAMF,CAAAA,CAAWE,CAAAA,CAAO5G,CAAI,CAAA,CACtB8G,CAAAA,CAAUD,CAAAA,CAAYH,CAAQ,CAAA,CACpC,OAAI,OAAOI,CAAAA,EAAY,UAAA,GACnBA,CAAAA,CAAQ,SAAA,CAAYA,CAAAA,CAAQ,SAAA,EAAa,EAAC,CAC1C,MAAA,CAAO,gBAAA,CAAiBA,CAAAA,CAAS,CAC7B,kBAAA,CAAoB,CAChB,WAAY,CAAA,CAAA,CACZ,KAAA,CAAOJ,CACX,CACJ,CAAC,CAAA,CAAA,CAELE,CAAAA,CAAO5G,CAAI,CAAA,CAAI8G,CAAAA,CACR,IAAM,CACTF,CAAAA,CAAO5G,CAAI,EAAI0G,EACnB,CACJ,CAAA,MACOzN,CAAAA,CAAI,CACP,OAAO,IAAM,CACb,CACJ,CACJ,CACA,SAAS8N,EAAAA,EAAkB,CACvB,OAAQ,MAAA,CAAO,WAAA,EACV,QAAA,CAAS,eAAA,EAAmB,QAAA,CAAS,eAAA,CAAgB,cACrD,QAAA,CAAS,IAAA,EAAQ,QAAA,CAAS,IAAA,CAAK,YACxC,CACA,SAASC,EAAAA,EAAiB,CACtB,OAAQ,MAAA,CAAO,UAAA,EACV,QAAA,CAAS,eAAA,EAAmB,QAAA,CAAS,eAAA,CAAgB,WAAA,EACrD,QAAA,CAAS,IAAA,EAAQ,QAAA,CAAS,IAAA,CAAK,WACxC,CACA,SAASC,CAAAA,CAAUjL,CAAAA,CAAMkE,CAAAA,CAAYC,CAAAA,CAAeK,CAAAA,CAAgB,CAChE,GAAI,CAACxE,CAAAA,CACD,OAAO,MAAA,CAEX,IAAM1C,EAAK0C,CAAAA,CAAK,QAAA,GAAaA,CAAAA,CAAK,YAAA,CAC5BA,CAAAA,CACAA,CAAAA,CAAK,aAAA,CACX,GAAI,CAAC1C,CAAAA,CACD,OAAO,MAAA,CACX,GAAI,OAAO4G,GAAe,QAAA,CAAA,CAGtB,GAFI5G,CAAAA,CAAG,SAAA,CAAU,QAAA,CAAS4G,CAAU,GAEhCM,CAAAA,EAAkBlH,CAAAA,CAAG,OAAA,CAAQ,GAAA,CAAM4G,CAAU,CAAA,GAAM,KACnD,OAAO,KAAA,CAAA,KAAA,GAGPI,EAAAA,CAAkBhH,CAAAA,CAAI4G,CAAAA,CAAYM,CAAc,CAAA,CAChD,OAAO,KAAA,CAEf,OAAI,CAAA,EAAAL,CAAAA,GACInE,CAAAA,CAAK,OAAA,CAAQmE,CAAa,CAAA,EAE1BK,CAAAA,EAAkBlH,CAAAA,CAAG,OAAA,CAAQ6G,CAAa,CAAA,GAAM,IAAA,CAAA,CAI5D,CACA,SAAS+G,EAAAA,CAAanM,CAAAA,CAAG4G,CAAAA,CAAQ,CAC7B,OAAOA,EAAO,KAAA,CAAM5G,CAAC,CAAA,GAAM,EAC/B,CACA,SAASoM,EAAAA,CAAUpM,CAAAA,CAAG4G,CAAAA,CAAQ,CAC1B,OAAOA,CAAAA,CAAO,KAAA,CAAM5G,CAAC,IAAMsC,EAC/B,CACA,SAAS+J,EAAAA,CAAkBzO,CAAAA,CAAQgJ,CAAAA,CAAQ,CACvC,GAAI3G,EAAAA,CAAarC,CAAM,CAAA,CACnB,OAAO,MAAA,CAEX,IAAMvD,EAAKuM,CAAAA,CAAO,KAAA,CAAMhJ,CAAM,CAAA,CAC9B,OAAKgJ,CAAAA,CAAO,GAAA,CAAIvM,CAAE,CAAA,CAGduD,CAAAA,CAAO,UAAA,EACPA,CAAAA,CAAO,UAAA,CAAW,QAAA,GAAaA,EAAO,aAAA,CAC/B,KAAA,CAENA,CAAAA,CAAO,UAAA,CAGLyO,EAAAA,CAAkBzO,CAAAA,CAAO,UAAA,CAAYgJ,CAAM,CAAA,CAFvC,IAAA,CAPA,IAUf,CACA,SAAS0F,EAAAA,CAAaC,EAAO,CACzB,OAAO,CAAA,CAAQA,CAAAA,CAAM,cACzB,CACA,SAASC,EAAAA,CAASvG,CAAAA,CAAM,MAAA,CAAQ,CACxB,UAAA,GAAcA,CAAAA,EAAO,CAACA,EAAI,QAAA,CAAS,SAAA,CAAU,OAAA,GAC7CA,CAAAA,CAAI,QAAA,CAAS,SAAA,CAAU,QAAU,KAAA,CAAM,SAAA,CAClC,OAAA,CAAA,CAEL,cAAA,GAAkBA,CAAAA,EAAO,CAACA,EAAI,YAAA,CAAa,SAAA,CAAU,OAAA,GACrDA,CAAAA,CAAI,YAAA,CAAa,SAAA,CAAU,OAAA,CAAU,KAAA,CAAM,SAAA,CACtC,OAAA,CAAA,CAEJ,IAAA,CAAK,SAAA,CAAU,QAAA,GAChB,IAAA,CAAK,UAAU,QAAA,CAAW,CAAA,GAAI9I,CAAAA,GAAS,CACnC,IAAI8D,CAAAA,CAAO9D,CAAAA,CAAK,CAAC,CAAA,CACjB,GAAI,EAAE,CAAA,IAAKA,CAAAA,CAAAA,CACP,MAAM,IAAI,SAAA,CAAU,wBAAwB,CAAA,CAEhD,GACI,GAAI,IAAA,GAAS8D,CAAAA,CACT,OAAO,KAAA,CAAA,MAELA,CAAAA,CAAOA,CAAAA,EAAQA,CAAAA,CAAK,UAAA,EAC9B,OAAO,MACX,CAAA,EAER,CA0CA,SAASwL,EAAAA,CAAmBzM,CAAAA,CAAG4G,CAAAA,CAAQ,CACnC,OAAO,CAAA,EAAQ5G,CAAAA,CAAE,QAAA,GAAa,QAAA,EAAY4G,CAAAA,CAAO,QAAQ5G,CAAC,CAAA,CAC9D,CACA,SAAS0M,EAAAA,CAAuB1M,CAAAA,CAAG4G,CAAAA,CAAQ,CACvC,OAAO,CAAA,EAAQ5G,CAAAA,CAAE,QAAA,GAAa,MAAA,EAC1BA,CAAAA,CAAE,WAAaA,CAAAA,CAAE,YAAA,EACjBA,CAAAA,CAAE,YAAA,EACFA,CAAAA,CAAE,YAAA,CAAa,KAAK,CAAA,GAAM,YAAA,EAC1B4G,CAAAA,CAAO,OAAA,CAAQ5G,CAAC,CAAA,CACxB,CAwBA,SAAS2M,EAAAA,CAAc3M,CAAAA,CAAG,CACtB,OAAO,CAAA,EAAQA,CAAAA,EAAM,IAAA,EAAgCA,CAAAA,CAAE,UAAA,CAC3D,CA2BA,IAAM4M,EAAAA,CAAN,KAAuB,CACnB,aAAc,CACV,IAAA,CAAK,EAAA,CAAK,CAAA,CACV,IAAA,CAAK,UAAA,CAAa,IAAI,OAAA,CACtB,IAAA,CAAK,UAAA,CAAa,IAAI,IAC1B,CACA,MAAM3E,CAAAA,CAAY,CACd,IAAI/J,CAAAA,CACJ,OAAA,CAAQA,CAAAA,CAAK,IAAA,CAAK,UAAA,CAAW,GAAA,CAAI+J,CAAU,CAAA,IAAO,IAAA,EAAQ/J,CAAAA,GAAO,MAAA,CAASA,EAAK,EACnF,CACA,GAAA,CAAI+J,CAAAA,CAAY,CACZ,OAAO,IAAA,CAAK,UAAA,CAAW,GAAA,CAAIA,CAAU,CACzC,CACA,GAAA,CAAIA,CAAAA,CAAY5N,EAAI,CAChB,GAAI,IAAA,CAAK,GAAA,CAAI4N,CAAU,CAAA,CACnB,OAAO,IAAA,CAAK,KAAA,CAAMA,CAAU,CAAA,CAChC,IAAI4E,CAAAA,CACJ,OAAIxS,IAAO,MAAA,CACPwS,CAAAA,CAAQ,IAAA,CAAK,EAAA,EAAA,CAGbA,CAAAA,CAAQxS,CAAAA,CACZ,KAAK,UAAA,CAAW,GAAA,CAAI4N,CAAAA,CAAY4E,CAAK,CAAA,CACrC,IAAA,CAAK,WAAW,GAAA,CAAIA,CAAAA,CAAO5E,CAAU,CAAA,CAC9B4E,CACX,CACA,QAAA,CAASxS,CAAAA,CAAI,CACT,OAAO,IAAA,CAAK,UAAA,CAAW,GAAA,CAAIA,CAAE,GAAK,IACtC,CACA,KAAA,EAAQ,CACJ,IAAA,CAAK,UAAA,CAAa,IAAI,OAAA,CACtB,IAAA,CAAK,UAAA,CAAa,IAAI,GAAA,CACtB,IAAA,CAAK,EAAA,CAAK,EACd,CACA,UAAA,EAAa,CACT,OAAO,IAAA,CAAK,EAAA,EAChB,CACJ,CAAA,CCpVA,IAAIyS,CAAAA,CAAAA,CAA8BC,CAAAA,GAChCA,CAAAA,CAAWA,CAAAA,CAAW,gBAAA,CAAsB,CAAC,CAAA,CAAI,kBAAA,CACjDA,CAAAA,CAAWA,CAAAA,CAAW,IAAA,CAAU,CAAC,EAAI,MAAA,CACrCA,CAAAA,CAAWA,CAAAA,CAAW,YAAA,CAAkB,CAAC,CAAA,CAAI,eAC7CA,CAAAA,CAAWA,CAAAA,CAAW,mBAAA,CAAyB,CAAC,CAAA,CAAI,qBAAA,CACpDA,CAAAA,CAAWA,CAAAA,CAAW,IAAA,CAAU,CAAC,CAAA,CAAI,MAAA,CACrCA,CAAAA,CAAWA,CAAAA,CAAW,OAAY,CAAC,CAAA,CAAI,QAAA,CACvCA,CAAAA,CAAWA,CAAAA,CAAW,MAAA,CAAY,CAAC,CAAA,CAAI,QAAA,CAChCA,CAAAA,CAAAA,EACND,CAAAA,EAAa,EAAE,CAAA,CACdE,GAAsCC,CAAAA,GACxCA,CAAAA,CAAmBA,CAAAA,CAAmB,QAAA,CAAc,CAAC,CAAA,CAAI,UAAA,CACzDA,CAAAA,CAAmBA,CAAAA,CAAmB,SAAA,CAAe,CAAC,CAAA,CAAI,WAAA,CAC1DA,CAAAA,CAAmBA,EAAmB,gBAAA,CAAsB,CAAC,CAAA,CAAI,kBAAA,CACjEA,CAAAA,CAAmBA,CAAAA,CAAmB,OAAY,CAAC,CAAA,CAAI,QAAA,CACvDA,CAAAA,CAAmBA,CAAAA,CAAmB,cAAA,CAAoB,CAAC,CAAA,CAAI,gBAAA,CAC/DA,CAAAA,CAAmBA,CAAAA,CAAmB,KAAA,CAAW,CAAC,CAAA,CAAI,OAAA,CACtDA,CAAAA,CAAmBA,CAAAA,CAAmB,SAAA,CAAe,CAAC,CAAA,CAAI,WAAA,CAC1DA,EAAmBA,CAAAA,CAAmB,gBAAA,CAAsB,CAAC,CAAA,CAAI,kBAAA,CACjEA,CAAAA,CAAmBA,CAAAA,CAAmB,cAAA,CAAoB,CAAC,CAAA,CAAI,gBAAA,CAC/DA,CAAAA,CAAmBA,CAAAA,CAAmB,cAAA,CAAoB,CAAC,CAAA,CAAI,gBAAA,CAC/DA,CAAAA,CAAmBA,CAAAA,CAAmB,IAAA,CAAU,EAAE,CAAA,CAAI,MAAA,CACtDA,CAAAA,CAAmBA,CAAAA,CAAmB,GAAA,CAAS,EAAE,CAAA,CAAI,KAAA,CACrDA,EAAmBA,CAAAA,CAAmB,IAAA,CAAU,EAAE,CAAA,CAAI,MAAA,CACtDA,CAAAA,CAAmBA,EAAmB,gBAAA,CAAsB,EAAE,CAAA,CAAI,kBAAA,CAClEA,CAAAA,CAAmBA,CAAAA,CAAmB,UAAe,EAAE,CAAA,CAAI,WAAA,CAC3DA,CAAAA,CAAmBA,CAAAA,CAAmB,iBAAA,CAAuB,EAAE,CAAA,CAAI,mBAAA,CAC5DA,CAAAA,CAAAA,EACND,CAAAA,EAAqB,EAAE,CAAA,CACtBE,IAAsCC,CAAAA,GACxCA,CAAAA,CAAmBA,CAAAA,CAAmB,OAAA,CAAa,CAAC,CAAA,CAAI,SAAA,CACxDA,CAAAA,CAAmBA,CAAAA,CAAmB,SAAA,CAAe,CAAC,CAAA,CAAI,WAAA,CAC1DA,CAAAA,CAAmBA,EAAmB,KAAA,CAAW,CAAC,CAAA,CAAI,OAAA,CACtDA,CAAAA,CAAmBA,CAAAA,CAAmB,WAAA,CAAiB,CAAC,CAAA,CAAI,aAAA,CAC5DA,CAAAA,CAAmBA,CAAAA,CAAmB,QAAA,CAAc,CAAC,EAAI,UAAA,CACzDA,CAAAA,CAAmBA,CAAAA,CAAmB,KAAA,CAAW,CAAC,CAAA,CAAI,OAAA,CACtDA,CAAAA,CAAmBA,CAAAA,CAAmB,IAAA,CAAU,CAAC,CAAA,CAAI,MAAA,CACrDA,CAAAA,CAAmBA,EAAmB,UAAA,CAAgB,CAAC,CAAA,CAAI,YAAA,CAC3DA,CAAAA,CAAmBA,CAAAA,CAAmB,kBAAA,CAAwB,CAAC,CAAA,CAAI,oBAAA,CACnEA,CAAAA,CAAmBA,CAAAA,CAAmB,QAAA,CAAc,CAAC,EAAI,UAAA,CACzDA,CAAAA,CAAmBA,CAAAA,CAAmB,WAAA,CAAiB,EAAE,CAAA,CAAI,aAAA,CACtDA,CAAAA,CAAAA,EACND,EAAAA,EAAqB,EAAE,CAAA,CACtBE,EAAAA,CAAAA,CAAkCC,CAAAA,GACpCA,EAAeA,CAAAA,CAAe,IAAI,CAAA,CAAI,CAAC,CAAA,CAAI,IAAA,CAC3CA,CAAAA,CAAeA,CAAAA,CAAe,KAAA,CAAW,CAAC,CAAA,CAAI,OAAA,CAC9CA,CAAAA,CAAeA,CAAAA,CAAe,OAAY,CAAC,CAAA,CAAI,QAAA,CACxCA,CAAAA,CAAAA,EACND,EAAAA,EAAiB,EAAE,CAAA,CC7CtB,SAASE,EAAAA,CAAmBtN,CAAAA,CAAG,CAC3B,OAAO,SAAUA,CACrB,CACA,IAAMuN,EAAAA,CAAN,KAAuB,CACnB,WAAA,EAAc,CACV,IAAA,CAAK,MAAA,CAAS,CAAA,CACd,IAAA,CAAK,IAAA,CAAO,KAChB,CACA,GAAA,CAAIC,CAAAA,CAAU,CACV,GAAIA,CAAAA,EAAY,IAAA,CAAK,MAAA,CACjB,MAAM,IAAI,KAAA,CAAM,gCAAgC,CAAA,CAEpD,IAAIC,CAAAA,CAAU,KAAK,IAAA,CACnB,IAAA,IAASC,CAAAA,CAAQ,CAAA,CAAGA,CAAAA,CAAQF,CAAAA,CAAUE,CAAAA,EAAAA,CAClCD,CAAAA,CAAAA,CAAWA,CAAAA,EAAY,IAAA,CAA6B,MAAA,CAASA,CAAAA,CAAQ,IAAA,GAAS,IAAA,CAElF,OAAOA,CACX,CACA,OAAA,CAAQzN,CAAAA,CAAG,CACP,IAAMiB,EAAO,CACT,KAAA,CAAOjB,CAAAA,CACP,QAAA,CAAU,IAAA,CACV,IAAA,CAAM,IACV,CAAA,CAEA,GADAA,CAAAA,CAAE,IAAA,CAAOiB,CAAAA,CACLjB,CAAAA,CAAE,eAAA,EAAmBsN,EAAAA,CAAmBtN,CAAAA,CAAE,eAAe,CAAA,CAAG,CAC5D,IAAMyN,CAAAA,CAAUzN,EAAE,eAAA,CAAgB,IAAA,CAAK,IAAA,CACvCiB,CAAAA,CAAK,IAAA,CAAOwM,CAAAA,CACZxM,CAAAA,CAAK,QAAA,CAAWjB,CAAAA,CAAE,eAAA,CAAgB,IAAA,CAClCA,CAAAA,CAAE,eAAA,CAAgB,IAAA,CAAK,KAAOiB,CAAAA,CAC1BwM,CAAAA,GACAA,CAAAA,CAAQ,QAAA,CAAWxM,CAAAA,EAE3B,CAAA,KAAA,GACSjB,CAAAA,CAAE,WAAA,EACPsN,EAAAA,CAAmBtN,CAAAA,CAAE,WAAW,CAAA,EAChCA,CAAAA,CAAE,WAAA,CAAY,KAAK,QAAA,CAAU,CAC7B,IAAMyN,CAAAA,CAAUzN,CAAAA,CAAE,WAAA,CAAY,KAAK,QAAA,CACnCiB,CAAAA,CAAK,QAAA,CAAWwM,CAAAA,CAChBxM,CAAAA,CAAK,IAAA,CAAOjB,EAAE,WAAA,CAAY,IAAA,CAC1BA,CAAAA,CAAE,WAAA,CAAY,IAAA,CAAK,QAAA,CAAWiB,CAAAA,CAC1BwM,CAAAA,GACAA,CAAAA,CAAQ,IAAA,CAAOxM,CAAAA,EAEvB,CAAA,KAEQ,IAAA,CAAK,IAAA,GACL,KAAK,IAAA,CAAK,QAAA,CAAWA,CAAAA,CAAAA,CAEzBA,CAAAA,CAAK,IAAA,CAAO,IAAA,CAAK,IAAA,CACjB,IAAA,CAAK,IAAA,CAAOA,CAAAA,CAEhB,IAAA,CAAK,MAAA,GACT,CACA,UAAA,CAAWjB,EAAG,CACV,IAAMyN,CAAAA,CAAUzN,CAAAA,CAAE,IAAA,CACb,IAAA,CAAK,IAAA,GAGLyN,CAAAA,CAAQ,QAAA,EAOTA,CAAAA,CAAQ,QAAA,CAAS,IAAA,CAAOA,CAAAA,CAAQ,IAAA,CAC5BA,EAAQ,IAAA,GACRA,CAAAA,CAAQ,IAAA,CAAK,QAAA,CAAWA,CAAAA,CAAQ,QAAA,CAAA,GARpC,KAAK,IAAA,CAAOA,CAAAA,CAAQ,IAAA,CAChB,IAAA,CAAK,IAAA,GACL,IAAA,CAAK,KAAK,QAAA,CAAW,IAAA,CAAA,CAAA,CASzBzN,CAAAA,CAAE,IAAA,EACF,OAAOA,CAAAA,CAAE,IAAA,CAEb,IAAA,CAAK,MAAA,EAAA,EACT,CACJ,CAAA,CACM2N,EAAAA,CAAU,CAACtT,CAAAA,CAAIuT,IAAa,CAAA,EAAGvT,CAAE,CAAA,CAAA,EAAIuT,CAAQ,CAAA,CAAA,CAC7CC,EAAAA,CAAN,KAAqB,CACjB,WAAA,EAAc,CACV,IAAA,CAAK,MAAA,CAAS,KAAA,CACd,IAAA,CAAK,OAAS,KAAA,CACd,IAAA,CAAK,KAAA,CAAQ,EAAC,CACd,IAAA,CAAK,UAAA,CAAa,EAAC,CACnB,IAAA,CAAK,OAAA,CAAU,EAAC,CAChB,IAAA,CAAK,WAAa,EAAC,CACnB,IAAA,CAAK,QAAA,CAAW,EAAC,CACjB,KAAK,QAAA,CAAW,IAAI,GAAA,CACpB,IAAA,CAAK,QAAA,CAAW,IAAI,IACpB,IAAA,CAAK,UAAA,CAAa,IAAI,GAAA,CACtB,IAAA,CAAK,gBAAA,CAAoBC,CAAAA,EAAc,CACnCA,CAAAA,CAAU,OAAA,CAAQ,IAAA,CAAK,eAAe,CAAA,CACtC,IAAA,CAAK,OACT,CAAA,CACA,IAAA,CAAK,IAAA,CAAO,IAAM,CACd,GAAI,IAAA,CAAK,MAAA,EAAU,IAAA,CAAK,MAAA,CACpB,OAEJ,IAAMC,CAAAA,CAAO,EAAC,CACRC,CAAAA,CAAU,IAAIT,EAAAA,CACdU,CAAAA,CAAajO,CAAAA,EAAM,CACrB,IAAIkO,CAAAA,CAAKlO,CAAAA,CACLmO,CAAAA,CAAS7L,EAAAA,CACb,KAAO6L,CAAAA,GAAW7L,IACd4L,CAAAA,CAAKA,CAAAA,EAAMA,CAAAA,CAAG,WAAA,CACdC,CAAAA,CAASD,CAAAA,EAAM,KAAK,MAAA,CAAO,KAAA,CAAMA,CAAE,CAAA,CAEvC,OAAOC,CACX,EACMC,CAAAA,CAAWpO,CAAAA,EAAM,CACnB,IAAI9B,CAAAA,CAAIE,CAAAA,CAAIC,CAAAA,CAAIC,CAAAA,CAChB,IAAI+P,CAAAA,CAAa,IAAA,CAAA,CAAA,CACXjQ,CAAAA,CAAAA,CAAMF,CAAAA,CAAK8B,CAAAA,CAAE,eAAiB,IAAA,EAAQ9B,CAAAA,GAAO,MAAA,CAAS,MAAA,CAASA,CAAAA,CAAG,IAAA,CAAK8B,CAAC,CAAA,IAAO,IAAA,EAAQ5B,CAAAA,GAAO,MAAA,CAAS,MAAA,CAASA,CAAAA,CAAG,QAAA,IAAc,KAAK,sBAAA,EACxI4B,CAAAA,CAAE,WAAA,EAAY,CAAE,IAAA,GAChBqO,CAAAA,CAAarO,CAAAA,CAAE,WAAA,EAAY,CAAE,IAAA,CAAA,CACjC,IAAIsO,CAAAA,CAAiBD,CAAAA,CACrB,KAAA,CAAA,CAAS/P,GAAMD,CAAAA,CAAKiQ,CAAAA,EAAmB,IAAA,CAAoC,MAAA,CAASA,CAAAA,CAAe,WAAA,IAAiB,MAAQjQ,CAAAA,GAAO,MAAA,CAAS,MAAA,CAASA,CAAAA,CAAG,IAAA,CAAKiQ,CAAc,KAAO,IAAA,EAAQhQ,CAAAA,GAAO,MAAA,CAAS,MAAA,CAASA,CAAAA,CAAG,QAAA,IAClN,IAAA,CAAK,sBAAA,EACLgQ,CAAAA,CAAe,WAAA,EAAY,CAAE,IAAA,EAC7BA,CAAAA,CAAiBA,CAAAA,CAAe,aAAY,CAAE,IAAA,CAClD,IAAMC,CAAAA,CAAW,CAAC,IAAA,CAAK,GAAA,CAAI,QAAA,CAASvO,CAAC,CAAA,GAChC,CAACsO,CAAAA,EAAkB,CAAC,IAAA,CAAK,IAAI,QAAA,CAASA,CAAc,CAAA,CAAA,CACzD,GAAI,CAACtO,CAAAA,CAAE,UAAA,EAAcuO,CAAAA,CACjB,OAEJ,IAAMX,CAAAA,CAAW3N,EAAAA,CAAaD,CAAAA,CAAE,UAAU,EACpC,IAAA,CAAK,MAAA,CAAO,KAAA,CAAMqO,CAAU,CAAA,CAC5B,IAAA,CAAK,MAAA,CAAO,KAAA,CAAMrO,CAAAA,CAAE,UAAU,CAAA,CAC9BmO,CAAAA,CAASF,CAAAA,CAAUjO,CAAC,EAC1B,GAAI4N,CAAAA,GAAa,EAAA,EAAMO,CAAAA,GAAW,EAAA,CAC9B,OAAOH,CAAAA,CAAQ,OAAA,CAAQhO,CAAC,CAAA,CAE5B,IAAM8I,CAAAA,CAAKE,EAAAA,CAAoBhJ,CAAAA,CAAG,CAC9B,GAAA,CAAK,IAAA,CAAK,GAAA,CACV,MAAA,CAAQ,IAAA,CAAK,MAAA,CACb,UAAA,CAAY,IAAA,CAAK,UAAA,CACjB,aAAA,CAAe,IAAA,CAAK,aAAA,CACpB,aAAA,CAAe,IAAA,CAAK,cACpB,gBAAA,CAAkB,IAAA,CAAK,gBAAA,CACvB,SAAA,CAAW,IAAA,CACX,iBAAA,CAAmB,IAAA,CACnB,gBAAA,CAAkB,IAAA,CAAK,gBAAA,CACvB,gBAAA,CAAkB,IAAA,CAAK,gBAAA,CACvB,UAAA,CAAY,KAAK,UAAA,CACjB,WAAA,CAAa,IAAA,CAAK,WAAA,CAClB,cAAA,CAAgB,IAAA,CAAK,eACrB,cAAA,CAAgB,IAAA,CAAK,cAAA,CACrB,YAAA,CAAc,IAAA,CAAK,YAAA,CACnB,aAAc,IAAA,CAAK,YAAA,CACnB,WAAA,CAAcwO,CAAAA,EAAa,CACnB/B,EAAAA,CAAmB+B,CAAAA,CAAU,IAAA,CAAK,MAAM,CAAA,EACxC,IAAA,CAAK,aAAA,CAAc,SAAA,CAAUA,CAAQ,EAErC9B,EAAAA,CAAuB8B,CAAAA,CAAU,IAAA,CAAK,MAAM,CAAA,EAC5C,IAAA,CAAK,iBAAA,CAAkB,gBAAA,CAAiBA,CAAQ,CAAA,CAEhD7B,EAAAA,CAAc3M,CAAC,CAAA,EACf,IAAA,CAAK,iBAAiB,aAAA,CAAcA,CAAAA,CAAE,UAAA,CAAY,IAAA,CAAK,GAAG,EAElE,CAAA,CACA,YAAA,CAAc,CAACyO,CAAAA,CAAQC,CAAAA,GAAY,CAC/B,IAAA,CAAK,aAAA,CAAc,aAAaD,CAAAA,CAAQC,CAAO,CAAA,CAC/C,IAAA,CAAK,gBAAA,CAAiB,mBAAA,CAAoBD,CAAM,EACpD,CAAA,CACA,gBAAA,CAAkB,CAAClI,CAAAA,CAAMmI,CAAAA,GAAY,CACjC,IAAA,CAAK,iBAAA,CAAkB,iBAAA,CAAkBnI,CAAAA,CAAMmI,CAAO,EAC1D,CACJ,CAAC,CAAA,CACG5F,CAAAA,EACAiF,CAAAA,CAAK,IAAA,CAAK,CACN,QAAA,CAAAH,EACA,MAAA,CAAAO,CAAAA,CACA,IAAA,CAAMrF,CACV,CAAC,EAET,CAAA,CACA,KAAO,IAAA,CAAK,UAAA,CAAW,MAAA,EACnB,IAAA,CAAK,MAAA,CAAO,iBAAA,CAAkB,KAAK,UAAA,CAAW,KAAA,EAAO,CAAA,CAEzD,IAAA,IAAW9I,CAAAA,IAAK,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,QAAA,CAAS,MAAA,EAAQ,CAAA,CACzC2O,EAAAA,CAAgB,KAAK,OAAA,CAAS3O,CAAAA,CAAG,IAAA,CAAK,MAAM,CAAA,EAC5C,CAAC,KAAK,QAAA,CAAS,GAAA,CAAIA,CAAAA,CAAE,UAAU,CAAA,EAGnCoO,CAAAA,CAAQpO,CAAC,CAAA,CAEb,IAAA,IAAWA,CAAAA,IAAK,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,QAAA,CAAS,MAAA,EAAQ,CAAA,CACzC,CAAC4O,EAAAA,CAAgB,IAAA,CAAK,UAAA,CAAY5O,CAAC,CAAA,EACnC,CAAC2O,EAAAA,CAAgB,IAAA,CAAK,OAAA,CAAS3O,CAAAA,CAAG,IAAA,CAAK,MAAM,CAAA,EAGxC4O,EAAAA,CAAgB,IAAA,CAAK,QAAA,CAAU5O,CAAC,CAAA,CAFrCoO,EAAQpO,CAAC,CAAA,CAMT,IAAA,CAAK,UAAA,CAAW,GAAA,CAAIA,CAAC,CAAA,CAG7B,IAAI6O,CAAAA,CAAY,IAAA,CAChB,KAAOb,CAAAA,CAAQ,MAAA,EAAQ,CACnB,IAAI/M,CAAAA,CAAO,IAAA,CACX,GAAI4N,CAAAA,CAAW,CACX,IAAMjB,EAAW,IAAA,CAAK,MAAA,CAAO,KAAA,CAAMiB,CAAAA,CAAU,KAAA,CAAM,UAAU,EACvDV,CAAAA,CAASF,CAAAA,CAAUY,CAAAA,CAAU,KAAK,CAAA,CACpCjB,CAAAA,GAAa,EAAA,EAAMO,CAAAA,GAAW,EAAA,GAC9BlN,CAAAA,CAAO4N,CAAAA,EAEf,CACA,GAAI,CAAC5N,EACD,IAAA,IAASyM,CAAAA,CAAQM,CAAAA,CAAQ,MAAA,CAAS,CAAA,CAAGN,CAAAA,EAAS,CAAA,CAAGA,CAAAA,EAAAA,CAAS,CACtD,IAAMoB,CAAAA,CAAQd,CAAAA,CAAQ,GAAA,CAAIN,CAAK,EAC/B,GAAIoB,CAAAA,CAAO,CACP,IAAMlB,CAAAA,CAAW,IAAA,CAAK,MAAA,CAAO,KAAA,CAAMkB,CAAAA,CAAM,KAAA,CAAM,UAAU,CAAA,CAEzD,GADeb,CAAAA,CAAUa,EAAM,KAAK,CAAA,GACrB,EAAA,CACX,SACC,GAAIlB,CAAAA,GAAa,GAAI,CACtB3M,CAAAA,CAAO6N,CAAAA,CACP,KACJ,CAAA,KACK,CACD,IAAMC,CAAAA,CAAgBD,CAAAA,CAAM,KAAA,CAC5B,GAAIC,CAAAA,CAAc,UAAA,EACdA,CAAAA,CAAc,UAAA,CAAW,QAAA,GACrB,IAAA,CAAK,sBAAA,CAAwB,CACjC,IAAMV,CAAAA,CAAaU,EAAc,UAAA,CAC5B,IAAA,CAEL,GADiB,IAAA,CAAK,MAAA,CAAO,KAAA,CAAMV,CAAU,CAAA,GAC5B,EAAA,CAAI,CACjBpN,CAAAA,CAAO6N,CAAAA,CACP,KACJ,CACJ,CACJ,CACJ,CACJ,CAEJ,GAAI,CAAC7N,CAAAA,CAAM,CACP,KAAO+M,CAAAA,CAAQ,IAAA,EACXA,CAAAA,CAAQ,UAAA,CAAWA,CAAAA,CAAQ,IAAA,CAAK,KAAK,CAAA,CAEzC,KACJ,CACAa,CAAAA,CAAY5N,CAAAA,CAAK,QAAA,CACjB+M,EAAQ,UAAA,CAAW/M,CAAAA,CAAK,KAAK,CAAA,CAC7BmN,CAAAA,CAAQnN,CAAAA,CAAK,KAAK,EACtB,CACA,IAAM+N,CAAAA,CAAU,CACZ,KAAA,CAAO,IAAA,CAAK,KAAA,CACP,GAAA,CAAKtN,CAAAA,GAAU,CAChB,EAAA,CAAI,IAAA,CAAK,MAAA,CAAO,MAAMA,CAAAA,CAAK,IAAI,CAAA,CAC/B,KAAA,CAAOA,CAAAA,CAAK,KAChB,CAAA,CAAE,CAAA,CACG,MAAA,CAAQA,CAAAA,EAAS,IAAA,CAAK,MAAA,CAAO,GAAA,CAAIA,CAAAA,CAAK,EAAE,CAAC,CAAA,CAC9C,UAAA,CAAY,IAAA,CAAK,UAAA,CACZ,GAAA,CAAKuN,CAAAA,GAAe,CACrB,EAAA,CAAI,IAAA,CAAK,MAAA,CAAO,KAAA,CAAMA,CAAAA,CAAU,IAAI,EACpC,UAAA,CAAYA,CAAAA,CAAU,UAC1B,CAAA,CAAE,CAAA,CACG,MAAA,CAAQA,GAAc,IAAA,CAAK,MAAA,CAAO,GAAA,CAAIA,CAAAA,CAAU,EAAE,CAAC,EACxD,OAAA,CAAS,IAAA,CAAK,OAAA,CACd,IAAA,CAAAlB,CACJ,CAAA,CACI,CAACiB,CAAAA,CAAQ,KAAA,CAAM,MAAA,EACf,CAACA,CAAAA,CAAQ,UAAA,CAAW,MAAA,EACpB,CAACA,CAAAA,CAAQ,OAAA,CAAQ,MAAA,EACjB,CAACA,CAAAA,CAAQ,IAAA,CAAK,MAAA,GAGlB,IAAA,CAAK,KAAA,CAAQ,EAAC,CACd,IAAA,CAAK,UAAA,CAAa,GAClB,IAAA,CAAK,OAAA,CAAU,EAAC,CAChB,IAAA,CAAK,QAAA,CAAW,IAAI,GAAA,CACpB,IAAA,CAAK,QAAA,CAAW,IAAI,GAAA,CACpB,IAAA,CAAK,UAAA,CAAa,IAAI,GAAA,CACtB,IAAA,CAAK,QAAA,CAAW,EAAC,CACjB,IAAA,CAAK,UAAA,CAAWA,CAAO,CAAA,EAC3B,CAAA,CACA,IAAA,CAAK,eAAA,CAAmBE,CAAAA,EAAM,CAC1B,GAAI,CAAA9C,EAAAA,CAAU8C,CAAAA,CAAE,MAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,CAGnC,OAAQA,CAAAA,CAAE,IAAA,EACN,KAAK,eAAA,CAAiB,CAClB,IAAM7T,CAAAA,CAAQ6T,CAAAA,CAAE,MAAA,CAAO,WAAA,CACnB,CAAChD,CAAAA,CAAUgD,CAAAA,CAAE,MAAA,CAAQ,IAAA,CAAK,UAAA,CAAY,IAAA,CAAK,aAAA,CAAe,KAAK,CAAA,EAC/D7T,IAAU6T,CAAAA,CAAE,QAAA,EACZ,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CACZ,KAAA,CAAOxJ,EAAAA,CAAgBwJ,CAAAA,CAAE,MAAA,CAAQ,IAAA,CAAK,aAAA,CAAe,IAAA,CAAK,gBAAgB,GAAK7T,CAAAA,CACzE,IAAA,CAAK,UAAA,CACD,IAAA,CAAK,UAAA,CAAWA,CAAK,EACrBA,CAAAA,CAAM,OAAA,CAAQ,OAAA,CAAS,GAAG,CAAA,CAC9BA,CAAAA,CACN,KAAM6T,CAAAA,CAAE,MACZ,CAAC,CAAA,CAEL,KACJ,CACA,KAAK,YAAA,CAAc,CACf,IAAMtR,CAAAA,CAASsR,CAAAA,CAAE,MAAA,CACb7T,CAAAA,CAAQ6T,EAAE,MAAA,CAAO,YAAA,CAAaA,CAAAA,CAAE,aAAa,CAAA,CAUjD,GATIA,CAAAA,CAAE,aAAA,GAAkB,OAAA,GACpB7T,CAAAA,CAAQgG,EAAAA,CAAe,CACnB,gBAAA,CAAkB,IAAA,CAAK,iBACvB,OAAA,CAAS6N,CAAAA,CAAE,MAAA,CAAO,OAAA,CAClB,IAAA,CAAMA,CAAAA,CAAE,MAAA,CAAO,YAAA,CAAa,MAAM,CAAA,CAClC,KAAA,CAAA7T,CAAAA,CACA,WAAA,CAAa,IAAA,CAAK,WACtB,CAAC,CAAA,CAAA,CAED6Q,CAAAA,CAAUgD,CAAAA,CAAE,MAAA,CAAQ,IAAA,CAAK,WAAY,IAAA,CAAK,aAAA,CAAe,KAAK,CAAA,EAC9D7T,CAAAA,GAAU6T,CAAAA,CAAE,SACZ,OAEJ,IAAIC,CAAAA,CAAO,IAAA,CAAK,UAAA,CAAW,IAAA,CAAMxP,CAAAA,EAAMA,CAAAA,CAAE,IAAA,GAASuP,CAAAA,CAAE,MAAM,CAAA,CAC1D,GAAItR,CAAAA,CAAO,UAAY,QAAA,EACnBsR,CAAAA,CAAE,aAAA,GAAkB,KAAA,EACpB,CAAC,IAAA,CAAK,eAAA,CAAgB7T,CAAK,CAAA,CAC3B,GAAI,CAACuC,CAAAA,CAAO,eAAA,CACRsR,CAAAA,CAAE,cAAgB,QAAA,CAAA,KAGlB,OAUR,GAPKC,CAAAA,GACDA,CAAAA,CAAO,CACH,IAAA,CAAMD,CAAAA,CAAE,MAAA,CACR,UAAA,CAAY,EAChB,CAAA,CACA,IAAA,CAAK,WAAW,IAAA,CAAKC,CAAI,CAAA,CAAA,CAEzBD,CAAAA,CAAE,aAAA,GAAkB,OAAA,CAAS,CAC7B,IAAME,CAAAA,CAAM,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,MAAM,EACrCF,CAAAA,CAAE,QAAA,EACFE,CAAAA,CAAI,YAAA,CAAa,OAAA,CAASF,CAAAA,CAAE,QAAQ,CAAA,CAAA,CAEpCC,CAAAA,CAAK,UAAA,CAAW,KAAA,GAAU,MAAA,EAC1BA,CAAAA,CAAK,UAAA,CAAW,QAAU,IAAA,IAC1BA,CAAAA,CAAK,UAAA,CAAW,KAAA,CAAQ,EAAC,CAAA,CAE7B,IAAME,CAAAA,CAAWF,CAAAA,CAAK,UAAA,CAAW,KAAA,CACjC,IAAA,IAAWG,CAAAA,IAAS,KAAA,CAAM,KAAK1R,CAAAA,CAAO,KAAK,CAAA,CAAG,CAC1C,IAAM2R,CAAAA,CAAW3R,CAAAA,CAAO,KAAA,CAAM,gBAAA,CAAiB0R,CAAK,CAAA,CAC9CE,CAAAA,CAAc5R,CAAAA,CAAO,KAAA,CAAM,oBAAoB0R,CAAK,CAAA,CAAA,CACtDC,CAAAA,GAAaH,CAAAA,CAAI,KAAA,CAAM,gBAAA,CAAiBE,CAAK,CAAA,EAC7CE,CAAAA,GAAgBJ,CAAAA,CAAI,KAAA,CAAM,mBAAA,CAAoBE,CAAK,KAC/CE,CAAAA,GAAgB,EAAA,CAChBH,CAAAA,CAASC,CAAK,CAAA,CAAIC,CAAAA,CAGlBF,CAAAA,CAASC,CAAK,CAAA,CAAI,CAACC,CAAAA,CAAUC,CAAW,CAAA,EAGpD,CACA,QAAWF,CAAAA,IAAS,KAAA,CAAM,IAAA,CAAKF,CAAAA,CAAI,KAAK,CAAA,CAChCxR,CAAAA,CAAO,KAAA,CAAM,gBAAA,CAAiB0R,CAAK,CAAA,GAAM,EAAA,GACzCD,CAAAA,CAASC,CAAK,EAAI,KAAA,EAG9B,CAAA,KAEIH,CAAAA,CAAK,UAAA,CAAWD,CAAAA,CAAE,aAAa,CAAA,CAAIlK,EAAAA,CAAmB,IAAA,CAAK,GAAA,CAAKpH,CAAAA,CAAO,OAAA,CAASsR,CAAAA,CAAE,aAAA,CAAe7T,CAAK,CAAA,CAE1G,KACJ,CACA,KAAK,WAAA,CAAa,CACd,GAAI6Q,CAAAA,CAAUgD,CAAAA,CAAE,MAAA,CAAQ,IAAA,CAAK,UAAA,CAAY,IAAA,CAAK,cAAe,IAAI,CAAA,CAC7D,OACJA,CAAAA,CAAE,UAAA,CAAW,OAAA,CAASlP,CAAAA,EAAM,IAAA,CAAK,OAAA,CAAQA,CAAAA,CAAGkP,CAAAA,CAAE,MAAM,CAAC,CAAA,CACrDA,EAAE,YAAA,CAAa,OAAA,CAASlP,CAAAA,EAAM,CAC1B,IAAMyP,CAAAA,CAAS,IAAA,CAAK,MAAA,CAAO,KAAA,CAAMzP,CAAC,CAAA,CAC5B4N,CAAAA,CAAW3N,EAAAA,CAAaiP,CAAAA,CAAE,MAAM,CAAA,CAChC,IAAA,CAAK,MAAA,CAAO,KAAA,CAAMA,CAAAA,CAAE,MAAA,CAAO,IAAI,CAAA,CAC/B,IAAA,CAAK,MAAA,CAAO,KAAA,CAAMA,CAAAA,CAAE,MAAM,CAAA,CAC5BhD,EAAUgD,CAAAA,CAAE,MAAA,CAAQ,IAAA,CAAK,UAAA,CAAY,IAAA,CAAK,aAAA,CAAe,KAAK,CAAA,EAC9D9C,EAAAA,CAAUpM,CAAAA,CAAG,IAAA,CAAK,MAAM,CAAA,EACxB,CAACmM,EAAAA,CAAanM,CAAAA,CAAG,IAAA,CAAK,MAAM,CAAA,GAG5B,IAAA,CAAK,QAAA,CAAS,GAAA,CAAIA,CAAC,CAAA,EACnB0P,EAAAA,CAAW,IAAA,CAAK,QAAA,CAAU1P,CAAC,EAC3B,IAAA,CAAK,UAAA,CAAW,GAAA,CAAIA,CAAC,CAAA,EAEhB,IAAA,CAAK,QAAA,CAAS,GAAA,CAAIkP,CAAAA,CAAE,MAAM,CAAA,EAAKO,CAAAA,GAAW,EAAA,EAC1CpD,EAAAA,CAAkB6C,EAAE,MAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,GACvC,IAAA,CAAK,QAAA,CAAS,GAAA,CAAIlP,CAAC,CAAA,EACxB,IAAA,CAAK,QAAA,CAAS2N,EAAAA,CAAQ8B,CAAAA,CAAQ7B,CAAQ,CAAC,CAAA,CACvC8B,EAAAA,CAAW,IAAA,CAAK,QAAA,CAAU1P,CAAC,CAAA,CAG3B,KAAK,OAAA,CAAQ,IAAA,CAAK,CACd,QAAA,CAAA4N,CAAAA,CACA,EAAA,CAAI6B,EACJ,QAAA,CAAUxP,EAAAA,CAAaiP,CAAAA,CAAE,MAAM,CAAA,EAAK/O,EAAAA,CAAkB+O,CAAAA,CAAE,MAAM,CAAA,CACxD,IAAA,CACA,MACV,CAAC,CAAA,CAAA,CAEL,IAAA,CAAK,WAAW,IAAA,CAAKlP,CAAC,CAAA,EAC1B,CAAC,CAAA,CACD,KACJ,CACJ,CACJ,CAAA,CACA,IAAA,CAAK,OAAA,CAAU,CAACA,CAAAA,CAAGpC,CAAAA,GAAW,CAC1B,GAAI,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQoC,CAAC,CAAA,CAAG,CACxB,GAAIoM,EAAAA,CAAUpM,CAAAA,CAAG,IAAA,CAAK,MAAM,CAAA,CACxB,OAEJ,KAAK,QAAA,CAAS,GAAA,CAAIA,CAAC,CAAA,CACnB,IAAI2P,CAAAA,CAAW,IAAA,CACX/R,CAAAA,EAAU,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQA,CAAM,CAAA,GACpC+R,CAAAA,CAAW,KAAK,MAAA,CAAO,KAAA,CAAM/R,CAAM,CAAA,CAAA,CAEnC+R,CAAAA,EAAYA,CAAAA,GAAa,EAAA,GACzB,IAAA,CAAK,QAAA,CAAShC,EAAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM3N,CAAC,EAAG2P,CAAQ,CAAC,CAAA,CAAI,IAAA,EAEjE,CAAA,KAEI,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI3P,CAAC,CAAA,CACnB,IAAA,CAAK,UAAA,CAAW,MAAA,CAAOA,CAAC,EAEvBkM,CAAAA,CAAUlM,CAAAA,CAAG,IAAA,CAAK,UAAA,CAAY,IAAA,CAAK,aAAA,CAAe,KAAK,CAAA,EACxDA,CAAAA,CAAE,UAAA,CAAW,OAAA,CAASmK,CAAAA,EAAW,IAAA,CAAK,OAAA,CAAQA,CAAM,CAAC,EAC7D,EACJ,CACA,IAAA,CAAKtL,CAAAA,CAAS,CACV,CACI,YAAA,CACA,YAAA,CACA,eAAA,CACA,eAAA,CACA,kBAAA,CACA,mBACA,kBAAA,CACA,YAAA,CACA,aAAA,CACA,iBAAA,CACA,cAAA,CACA,cAAA,CACA,gBAAA,CACA,gBAAA,CACA,KAAA,CACA,QAAA,CACA,eAAA,CACA,mBAAA,CACA,kBAAA,CACA,eACJ,EAAE,OAAA,CAAS1D,CAAAA,EAAQ,CACf,IAAA,CAAKA,CAAG,CAAA,CAAI0D,CAAAA,CAAQ1D,CAAG,EAC3B,CAAC,EACL,CACA,MAAA,EAAS,CACL,KAAK,MAAA,CAAS,IAAA,CACd,IAAA,CAAK,aAAA,CAAc,MAAA,GACvB,CACA,QAAA,EAAW,CACP,IAAA,CAAK,MAAA,CAAS,KAAA,CACd,IAAA,CAAK,aAAA,CAAc,UAAS,CAC5B,IAAA,CAAK,IAAA,GACT,CACA,QAAA,EAAW,CACP,OAAO,IAAA,CAAK,MAChB,CACA,IAAA,EAAO,CACH,KAAK,MAAA,CAAS,IAAA,CACd,IAAA,CAAK,aAAA,CAAc,IAAA,GACvB,CACA,MAAA,EAAS,CACL,IAAA,CAAK,MAAA,CAAS,KAAA,CACd,IAAA,CAAK,aAAA,CAAc,QAAO,CAC1B,IAAA,CAAK,IAAA,GACT,CACA,KAAA,EAAQ,CACJ,IAAA,CAAK,gBAAA,CAAiB,KAAA,EAAM,CAC5B,IAAA,CAAK,aAAA,CAAc,KAAA,GACvB,CACJ,CAAA,CACA,SAASuU,EAAAA,CAAWE,CAAAA,CAAS5P,CAAAA,CAAG,CAC5B4P,CAAAA,CAAQ,MAAA,CAAO5P,CAAC,CAAA,CAChBA,CAAAA,CAAE,UAAA,CAAW,OAAA,CAASmK,GAAWuF,EAAAA,CAAWE,CAAAA,CAASzF,CAAM,CAAC,EAChE,CACA,SAASwE,EAAAA,CAAgBkB,CAAAA,CAAS7P,CAAAA,CAAG4G,CAAAA,CAAQ,CACzC,OAAIiJ,EAAQ,MAAA,GAAW,CAAA,CACZ,KAAA,CACJC,EAAAA,CAAiBD,CAAAA,CAAS7P,CAAAA,CAAG4G,CAAM,CAC9C,CACA,SAASkJ,EAAAA,CAAiBD,CAAAA,CAAS7P,CAAAA,CAAG4G,CAAAA,CAAQ,CAC1C,GAAM,CAAE,UAAA,CAAAmJ,CAAW,CAAA,CAAI/P,CAAAA,CACvB,GAAI,CAAC+P,CAAAA,CACD,OAAO,MAAA,CAEX,IAAMnC,CAAAA,CAAWhH,CAAAA,CAAO,MAAMmJ,CAAU,CAAA,CACxC,OAAIF,CAAAA,CAAQ,IAAA,CAAM3V,CAAAA,EAAMA,CAAAA,CAAE,EAAA,GAAO0T,CAAQ,CAAA,CAC9B,IAAA,CAEJkC,EAAAA,CAAiBD,CAAAA,CAASE,CAAAA,CAAYnJ,CAAM,CACvD,CACA,SAASgI,EAAAA,CAAgBoB,CAAAA,CAAKhQ,CAAAA,CAAG,CAC7B,OAAIgQ,CAAAA,CAAI,IAAA,GAAS,CAAA,CACN,KAAA,CACJC,EAAAA,CAAiBD,EAAKhQ,CAAC,CAClC,CACA,SAASiQ,EAAAA,CAAiBD,CAAAA,CAAKhQ,CAAAA,CAAG,CAC9B,GAAM,CAAE,UAAA,CAAA+P,CAAW,CAAA,CAAI/P,CAAAA,CACvB,OAAK+P,CAAAA,CAGDC,CAAAA,CAAI,GAAA,CAAID,CAAU,CAAA,CACX,IAAA,CAEJE,EAAAA,CAAiBD,CAAAA,CAAKD,CAAU,CAAA,CAL5B,KAMf,CC/fA,IAAMG,EAAAA,CAAkB,EAAC,CACnBC,EAAAA,CAA6B,OAAO,eAAA,EAAoB,WAAA,CACxDC,EAAAA,CAA0B,OAAO,YAAA,EAAiB,WAAA,CAClDC,EAAAA,CAA6B,OAAO,eAAA,EAAoB,WAAA,CACxDC,EAAAA,CAA8B,OAAO,gBAAA,EAAqB,WAAA,CAChE,SAASC,EAAAA,CAAehE,CAAAA,CAAO,CAC3B,GAAI,CACA,GAAI,cAAA,GAAkBA,CAAAA,CAAO,CACzB,IAAM/R,EAAO+R,CAAAA,CAAM,YAAA,EAAa,CAChC,GAAI/R,CAAAA,CAAK,MAAA,CACL,OAAOA,CAAAA,CAAK,CAAC,CAErB,CAAA,KAAA,GACS,MAAA,GAAU+R,CAAAA,EAASA,CAAAA,CAAM,KAAK,MAAA,CACnC,OAAOA,CAAAA,CAAM,IAAA,CAAK,CAAC,CAAA,CAEvB,OAAOA,CAAAA,CAAM,MACjB,CAAA,MACOrO,CAAAA,CAAI,CACP,OAAOqO,CAAAA,CAAM,MACjB,CACJ,CACA,SAASiE,EAAAA,CAAqB3R,CAAAA,CAAS4R,CAAAA,CAAQ,CAC3C,IAAIvS,CAAAA,CAAIE,CAAAA,CACR,IAAMsS,CAAAA,CAAiB,IAAI7C,EAAAA,CAC3BqC,GAAgB,IAAA,CAAKQ,CAAc,CAAA,CACnCA,CAAAA,CAAe,IAAA,CAAK7R,CAAO,EAC3B,IAAI8R,CAAAA,CAAuB,MAAA,CAAO,gBAAA,EAC9B,MAAA,CAAO,oBAAA,CACLC,GAAqBxS,CAAAA,CAAAA,CAAMF,CAAAA,CAAK,MAAA,EAAW,IAAA,CAA4B,MAAA,CAAS,MAAA,CAAO,IAAA,IAAU,IAAA,EAAQA,CAAAA,GAAO,MAAA,CAAS,MAAA,CAASA,CAAAA,CAAG,UAAA,IAAgB,IAAA,EAAQE,IAAO,MAAA,CAAS,MAAA,CAASA,CAAAA,CAAG,IAAA,CAAKF,CAAAA,CAAI,kBAAkB,CAAA,CACtN0S,CAAAA,EACA,MAAA,CAAOA,CAAiB,CAAA,GACxBD,CAAAA,CAAuB,MAAA,CAAOC,CAAiB,GAEnD,IAAMC,CAAAA,CAAW,IAAIF,CAAAA,CAAqBD,CAAAA,CAAe,gBAAA,CAAiB,IAAA,CAAKA,CAAc,CAAC,CAAA,CAC9F,OAAAG,CAAAA,CAAS,OAAA,CAAQJ,CAAAA,CAAQ,CACrB,UAAA,CAAY,IAAA,CACZ,iBAAA,CAAmB,IAAA,CACnB,aAAA,CAAe,IAAA,CACf,sBAAuB,IAAA,CACvB,SAAA,CAAW,IAAA,CACX,OAAA,CAAS,IACb,CAAC,EACMI,CACX,CACA,SAASC,EAAAA,CAAiB,CAAE,WAAA,CAAAC,CAAAA,CAAa,QAAA,CAAAC,CAAAA,CAAU,GAAA,CAAA7M,CAAAA,CAAK,MAAA,CAAAyC,CAAQ,CAAA,CAAG,CAC/D,GAAIoK,CAAAA,CAAS,SAAA,GAAc,KAAA,CACvB,OAAO,IAAM,CACb,CAAA,CAEJ,IAAMC,CAAAA,CAAY,OAAOD,CAAAA,CAAS,SAAA,EAAc,QAAA,CAAWA,EAAS,SAAA,CAAY,EAAA,CAC1EE,CAAAA,CAAoB,OAAOF,CAAAA,CAAS,iBAAA,EAAsB,QAAA,CAC1DA,CAAAA,CAAS,iBAAA,CACT,GAAA,CACFG,CAAAA,CAAY,EAAC,CACbC,CAAAA,CACEC,EAAYtU,EAAAA,CAAU8O,CAAAA,EAAW,CACnC,IAAMyF,CAAAA,CAAc,IAAA,CAAK,GAAA,EAAI,CAAIF,CAAAA,CACjCL,CAAAA,CAAYI,CAAAA,CAAU,GAAA,CAAKxU,CAAAA,GACvBA,CAAAA,CAAE,YAAc2U,CAAAA,CACT3U,CAAAA,CACV,CAAA,CAAGkP,CAAM,CAAA,CACVsF,CAAAA,CAAY,EAAC,CACbC,CAAAA,CAAe,KACnB,CAAA,CAAGF,CAAiB,CAAA,CACdK,CAAAA,CAAiBxU,GAAUyU,CAAAA,EAAQ,CACrC,IAAM5T,CAAAA,CAAS2S,EAAAA,CAAeiB,CAAG,CAAA,CAC3B,CAAE,OAAA,CAAAC,CAAAA,CAAS,OAAA,CAAAC,CAAQ,CAAA,CAAIpF,EAAAA,CAAakF,CAAG,CAAA,CACvCA,CAAAA,CAAI,cAAA,CAAe,CAAC,CAAA,CACpBA,CAAAA,CACDJ,CAAAA,GACDA,CAAAA,CAAe,IAAA,CAAK,GAAA,EAAI,CAAA,CAE5BD,CAAAA,CAAU,IAAA,CAAK,CACX,EAAGM,CAAAA,CACH,CAAA,CAAGC,CAAAA,CACH,EAAA,CAAI9K,CAAAA,CAAO,KAAA,CAAMhJ,CAAM,CAAA,CACvB,UAAA,CAAY,IAAA,CAAK,GAAA,EAAI,CAAIwT,CAC7B,CAAC,CAAA,CACDC,CAAAA,CAAU,OAAO,SAAA,EAAc,WAAA,EAAeG,CAAAA,YAAe,SAAA,CACvDxE,CAAAA,CAAkB,IAAA,CAClBwE,CAAAA,YAAe,UAAA,CACXxE,CAAAA,CAAkB,SAAA,CAClBA,CAAAA,CAAkB,SAAS,EACzC,CAAA,CAAGiE,CAAAA,CAAW,CACV,QAAA,CAAU,KACd,CAAC,CAAA,CACKU,CAAAA,CAAW,CACb9G,CAAAA,CAAG,WAAA,CAAa0G,CAAAA,CAAgBpN,CAAG,EACnC0G,CAAAA,CAAG,WAAA,CAAa0G,CAAAA,CAAgBpN,CAAG,CAAA,CACnC0G,CAAAA,CAAG,MAAA,CAAQ0G,CAAAA,CAAgBpN,CAAG,CAClC,CAAA,CACA,OAAO,IAAM,CACTwN,EAAS,OAAA,CAASC,CAAAA,EAAMA,CAAAA,EAAG,EAC/B,CACJ,CACA,SAASC,EAAAA,CAA6B,CAAE,kBAAA,CAAAC,CAAAA,CAAoB,GAAA,CAAA3N,EAAK,MAAA,CAAAyC,CAAAA,CAAQ,UAAA,CAAAzB,CAAAA,CAAY,aAAA,CAAAC,CAAAA,CAAe,QAAA,CAAA4L,CAAU,CAAA,CAAG,CAC7G,GAAIA,CAAAA,CAAS,gBAAA,GAAqB,KAAA,CAC9B,OAAO,IAAM,CACb,CAAA,CAEJ,IAAMe,CAAAA,CAAaf,CAAAA,CAAS,gBAAA,GAAqB,IAAA,EAC7CA,CAAAA,CAAS,gBAAA,GAAqB,MAAA,CAC5B,EAAC,CACDA,CAAAA,CAAS,iBACTW,CAAAA,CAAW,EAAC,CACZK,CAAAA,CAAcC,CAAAA,EACR1F,CAAAA,EAAU,CACd,IAAM3O,CAAAA,CAAS2S,EAAAA,CAAehE,CAAK,CAAA,CACnC,GAAIL,CAAAA,CAAUtO,EAAQuH,CAAAA,CAAYC,CAAAA,CAAe,IAAI,CAAA,CACjD,OAEJ,IAAM9K,EAAIgS,EAAAA,CAAaC,CAAK,CAAA,CAAIA,CAAAA,CAAM,cAAA,CAAe,CAAC,EAAIA,CAAAA,CAC1D,GAAI,CAACjS,CAAAA,CACD,OAEJ,IAAMD,CAAAA,CAAKuM,CAAAA,CAAO,KAAA,CAAMhJ,CAAM,CAAA,CACxB,CAAE,OAAA,CAAA6T,CAAAA,CAAS,QAAAC,CAAQ,CAAA,CAAIpX,CAAAA,CAC7BwX,CAAAA,CAAmB,CACf,IAAA,CAAM5E,EAAAA,CAAkB+E,CAAQ,CAAA,CAChC,EAAA,CAAA5X,CAAAA,CACA,CAAA,CAAGoX,CAAAA,CACH,CAAA,CAAGC,CACP,CAAC,EACL,CAAA,CAEJ,OAAA,MAAA,CAAO,IAAA,CAAKxE,EAAiB,CAAA,CACxB,MAAA,CAAQ/R,CAAAA,EAAQ,MAAA,CAAO,KAAA,CAAM,MAAA,CAAOA,CAAG,CAAC,GACzC,CAACA,CAAAA,CAAI,QAAA,CAAS,WAAW,CAAA,EACzB4W,CAAAA,CAAW5W,CAAG,CAAA,GAAM,KAAK,CAAA,CACxB,OAAA,CAAS8W,CAAAA,EAAa,CACvB,IAAMC,CAAAA,CAAYD,CAAAA,CAAS,WAAA,EAAY,CACjCE,CAAAA,CAAUH,CAAAA,CAAWC,CAAQ,CAAA,CACnCN,CAAAA,CAAS,IAAA,CAAK9G,CAAAA,CAAGqH,CAAAA,CAAWC,CAAAA,CAAShO,CAAG,CAAC,EAC7C,CAAC,CAAA,CACM,IAAM,CACTwN,CAAAA,CAAS,OAAA,CAASC,CAAAA,EAAMA,CAAAA,EAAG,EAC/B,CACJ,CACA,SAASQ,GAAmB,CAAE,QAAA,CAAAC,CAAAA,CAAU,GAAA,CAAAlO,CAAAA,CAAK,MAAA,CAAAyC,CAAAA,CAAQ,UAAA,CAAAzB,CAAAA,CAAY,aAAA,CAAAC,CAAAA,CAAe,QAAA,CAAA4L,CAAU,CAAA,CAAG,CACzF,IAAMO,CAAAA,CAAiBxU,EAAAA,CAAUyU,CAAAA,EAAQ,CACrC,IAAM5T,EAAS2S,EAAAA,CAAeiB,CAAG,CAAA,CACjC,GAAI,CAAC5T,CAAAA,EAAUsO,EAAUtO,CAAAA,CAAQuH,CAAAA,CAAYC,CAAAA,CAAe,IAAI,CAAA,CAC5D,OAEJ,IAAM/K,CAAAA,CAAKuM,CAAAA,CAAO,KAAA,CAAMhJ,CAAM,CAAA,CAC9B,GAAIA,CAAAA,GAAWuG,EAAK,CAChB,IAAMmO,CAAAA,CAAYnO,CAAAA,CAAI,gBAAA,EAAoBA,CAAAA,CAAI,eAAA,CAC9CkO,CAAAA,CAAS,CACL,EAAA,CAAAhY,CAAAA,CACA,CAAA,CAAGiY,CAAAA,CAAS,UAAA,CACZ,EAAGA,CAAAA,CAAS,SAChB,CAAC,EACL,CAAA,KAEID,CAAAA,CAAS,CACL,EAAA,CAAAhY,CAAAA,CACA,CAAA,CAAGuD,CAAAA,CAAO,UAAA,CACV,CAAA,CAAGA,CAAAA,CAAO,SACd,CAAC,EAET,CAAA,CAAGoT,CAAAA,CAAS,MAAA,EAAU,GAAG,EACzB,OAAOnG,CAAAA,CAAG,QAAA,CAAU0G,CAAAA,CAAgBpN,CAAG,CAC3C,CACA,SAASoO,EAAAA,CAA2B,CAAE,gBAAA,CAAAC,CAAkB,CAAA,CAAG,CACvD,IAAIC,CAAAA,CAAQ,EAAA,CACRC,CAAAA,CAAQ,EAAA,CACNC,CAAAA,CAAkB5V,EAAAA,CAAS,IAAM,CACnC,IAAM2L,CAAAA,CAASsD,EAAAA,EAAgB,CACzBvD,CAAAA,CAAQwD,EAAAA,EAAe,CAAA,CACzBwG,CAAAA,GAAU/J,CAAAA,EAAUgK,CAAAA,GAAUjK,CAAAA,IAC9B+J,CAAAA,CAAiB,CACb,MAAO,MAAA,CAAO/J,CAAK,CAAA,CACnB,MAAA,CAAQ,MAAA,CAAOC,CAAM,CACzB,CAAC,CAAA,CACD+J,CAAAA,CAAQ/J,CAAAA,CACRgK,CAAAA,CAAQjK,CAAAA,EAEhB,CAAA,CAAG,GAAG,CAAA,CACN,OAAOoC,CAAAA,CAAG,QAAA,CAAU8H,CAAAA,CAAiB,MAAM,CAC/C,CACA,SAASC,EAAAA,CAA+BC,CAAAA,CAAGC,CAAAA,CAAQ,CAC/C,IAAMzX,CAAAA,CAAQ,MAAA,CAAO,MAAA,CAAO,EAAC,CAAGwX,CAAC,CAAA,CACjC,OAAKC,CAAAA,EACD,OAAOzX,CAAAA,CAAM,aAAA,CACVA,CACX,CACA,IAAM0X,EAAAA,CAAa,CAAC,OAAA,CAAS,UAAA,CAAY,QAAQ,CAAA,CAC3CC,EAAAA,CAAoB,IAAI,OAAA,CAC9B,SAASC,EAAAA,CAAkB,CAAE,OAAA,CAAAC,CAAAA,CAAS,IAAA/O,CAAAA,CAAK,MAAA,CAAAyC,CAAAA,CAAQ,UAAA,CAAAzB,CAAAA,CAAY,aAAA,CAAAC,CAAAA,CAAe,WAAA,CAAA+N,CAAAA,CAAa,gBAAA,CAAA7R,CAAAA,CAAkB,WAAA,CAAAG,CAAAA,CAAa,QAAA,CAAAuP,EAAU,oBAAA,CAAAoC,CAAsB,CAAA,CAAG,CACzJ,SAASC,CAAAA,CAAa9G,CAAAA,CAAO,CACzB,IAAI3O,CAAAA,CAAS2S,EAAAA,CAAehE,CAAK,CAAA,CAC3B+G,CAAAA,CAAgB/G,EAAM,SAAA,CAG5B,GAFI3O,CAAAA,EAAUA,CAAAA,CAAO,OAAA,GAAY,QAAA,GAC7BA,CAAAA,CAASA,CAAAA,CAAO,aAAA,CAAA,CAChB,CAACA,CAAAA,EACD,CAACA,CAAAA,CAAO,OAAA,EACRmV,GAAW,OAAA,CAAQnV,CAAAA,CAAO,OAAO,CAAA,CAAI,CAAA,EACrCsO,CAAAA,CAAUtO,CAAAA,CAAQuH,CAAAA,CAAYC,CAAAA,CAAe,IAAI,CAAA,CACjD,OAEJ,IAAM5D,CAAAA,CAAO5D,EAAO,IAAA,CACpB,GAAIA,CAAAA,CAAO,SAAA,CAAU,QAAA,CAASuV,CAAW,CAAA,CACrC,OAEJ,IAAIzR,CAAAA,CAAO9D,CAAAA,CAAO,KAAA,CACd2V,CAAAA,CAAY,KAAA,CACZ/R,IAAS,OAAA,EAAWA,CAAAA,GAAS,UAAA,CAC7B+R,CAAAA,CAAY3V,CAAAA,CAAO,OAAA,CAAA,CAEd0D,EAAiB1D,CAAAA,CAAO,OAAA,CAAQ,WAAA,EAAa,CAAA,EAClD0D,CAAAA,CAAiBE,CAAI,CAAA,IACrBE,CAAAA,CAAOL,EAAAA,CAAe,CAClB,gBAAA,CAAAC,CAAAA,CACA,OAAA,CAAS1D,CAAAA,CAAO,OAAA,CAChB,IAAA,CAAA4D,CAAAA,CACA,KAAA,CAAOE,CAAAA,CACP,WAAA,CAAAD,CACJ,CAAC,CAAA,CAAA,CAEL+R,CAAAA,CAAY5V,CAAAA,CAAQgV,EAAAA,CAA+B,CAAE,IAAA,CAAAlR,CAAAA,CAAM,SAAA,CAAA6R,CAAAA,CAAW,aAAA,CAAAD,CAAc,CAAA,CAAGF,CAAoB,CAAC,CAAA,CAC5G,IAAMnO,CAAAA,CAAOrH,CAAAA,CAAO,IAAA,CAChB4D,CAAAA,GAAS,OAAA,EAAWyD,CAAAA,EAAQsO,CAAAA,EAC5BpP,CAAAA,CACK,gBAAA,CAAiB,CAAA,0BAAA,EAA6Bc,CAAI,CAAA,EAAA,CAAI,EACtD,OAAA,CAAS1G,CAAAA,EAAO,CACbA,CAAAA,GAAOX,CAAAA,EACP4V,CAAAA,CAAYjV,EAAIqU,EAAAA,CAA+B,CAC3C,IAAA,CAAMrU,CAAAA,CAAG,KAAA,CACT,SAAA,CAAW,CAACgV,CAAAA,CACZ,aAAA,CAAe,KACnB,CAAA,CAAGH,CAAoB,CAAC,EAEhC,CAAC,EAET,CACA,SAASI,CAAAA,CAAY5V,CAAAA,CAAQiV,CAAAA,CAAG,CAC5B,IAAMY,CAAAA,CAAiBT,EAAAA,CAAkB,GAAA,CAAIpV,CAAM,CAAA,CACnD,GAAI,CAAC6V,CAAAA,EACDA,CAAAA,CAAe,IAAA,GAASZ,CAAAA,CAAE,IAAA,EAC1BY,CAAAA,CAAe,YAAcZ,CAAAA,CAAE,SAAA,CAAW,CAC1CG,EAAAA,CAAkB,GAAA,CAAIpV,CAAAA,CAAQiV,CAAC,CAAA,CAC/B,IAAMxY,CAAAA,CAAKuM,CAAAA,CAAO,KAAA,CAAMhJ,CAAM,CAAA,CAC9BsV,EAAQ,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,EAAC,CAAGL,CAAC,CAAA,CAAG,CAAE,EAAA,CAAAxY,CAAG,CAAC,CAAC,EACvD,CACJ,CAEA,IAAMsX,CAAAA,CAAAA,CADSX,CAAAA,CAAS,KAAA,GAAU,MAAA,CAAS,CAAC,QAAQ,CAAA,CAAI,CAAC,OAAA,CAAS,QAAQ,CAAA,EAClD,IAAKkB,CAAAA,EAAcrH,CAAAA,CAAGqH,CAAAA,CAAWmB,CAAAA,CAAclP,CAAG,CAAC,CAAA,CACrEuP,CAAAA,CAAgBvP,CAAAA,CAAI,WAAA,CAC1B,GAAI,CAACuP,CAAAA,CACD,OAAO,IAAM,CACT/B,CAAAA,CAAS,OAAA,CAASC,CAAAA,EAAMA,CAAAA,EAAG,EAC/B,CAAA,CAEJ,IAAM+B,CAAAA,CAAqBD,CAAAA,CAAc,MAAA,CAAO,wBAAA,CAAyBA,CAAAA,CAAc,iBAAiB,SAAA,CAAW,OAAO,CAAA,CACpHE,CAAAA,CAAiB,CACnB,CAACF,EAAc,gBAAA,CAAiB,SAAA,CAAW,OAAO,CAAA,CAClD,CAACA,CAAAA,CAAc,iBAAiB,SAAA,CAAW,SAAS,CAAA,CACpD,CAACA,CAAAA,CAAc,iBAAA,CAAkB,SAAA,CAAW,OAAO,CAAA,CACnD,CAACA,CAAAA,CAAc,mBAAA,CAAoB,SAAA,CAAW,OAAO,EACrD,CAACA,CAAAA,CAAc,iBAAA,CAAkB,SAAA,CAAW,eAAe,CAAA,CAC3D,CAACA,CAAAA,CAAc,iBAAA,CAAkB,SAAA,CAAW,UAAU,CAC1D,CAAA,CACA,OAAIC,GAAsBA,CAAAA,CAAmB,GAAA,EACzChC,CAAAA,CAAS,IAAA,CAAK,GAAGiC,CAAAA,CAAe,GAAA,CAAKjX,CAAAA,EAAM6O,EAAAA,CAAW7O,CAAAA,CAAE,CAAC,CAAA,CAAGA,CAAAA,CAAE,CAAC,EAAG,CAC9D,GAAA,EAAM,CACF0W,CAAAA,CAAa,CAAE,MAAA,CAAQ,IAAK,CAAC,EACjC,CACJ,CAAA,CAAG,KAAA,CAAOK,CAAa,CAAC,CAAC,CAAA,CAEtB,IAAM,CACT/B,CAAAA,CAAS,OAAA,CAASC,CAAAA,EAAMA,CAAAA,EAAG,EAC/B,CACJ,CACA,SAASiC,EAAAA,CAA0BlT,EAAM,CACrC,IAAMwQ,CAAAA,CAAY,EAAC,CACnB,SAAS2C,CAAAA,CAAQC,CAAAA,CAAW1P,CAAAA,CAAK,CAC7B,GAAK8L,EAAAA,EACD4D,CAAAA,CAAU,UAAA,YAAsB,iBAC/B3D,EAAAA,EACG2D,CAAAA,CAAU,UAAA,YAAsB,YAAA,EACnC1D,EAAAA,EACG0D,CAAAA,CAAU,UAAA,YAAsB,eAAA,EACnCzD,EAAAA,EACGyD,CAAAA,CAAU,UAAA,YAAsB,gBAAA,CAAmB,CAEvD,IAAMrG,EADQ,KAAA,CAAM,IAAA,CAAKqG,CAAAA,CAAU,UAAA,CAAW,QAAQ,CAAA,CAClC,QAAQA,CAAS,CAAA,CACrC1P,CAAAA,CAAI,OAAA,CAAQqJ,CAAK,EACrB,SACSqG,CAAAA,CAAU,gBAAA,CAAkB,CAEjC,IAAMrG,CAAAA,CADQ,KAAA,CAAM,IAAA,CAAKqG,CAAAA,CAAU,gBAAA,CAAiB,QAAQ,CAAA,CACxC,OAAA,CAAQA,CAAS,CAAA,CACrC1P,EAAI,OAAA,CAAQqJ,CAAK,EACrB,CACA,OAAOrJ,CACX,CACA,OAAOyP,CAAAA,CAAQnT,CAAAA,CAAMwQ,CAAS,CAClC,CACA,SAAS6C,GAAgBpR,CAAAA,CAAOgE,CAAAA,CAAQqN,CAAAA,CAAa,CACjD,IAAI5Z,CAAAA,CAAI6Z,CAAAA,CACR,OAAKtR,CAAAA,EAEDA,CAAAA,CAAM,SAAA,CACNvI,CAAAA,CAAKuM,CAAAA,CAAO,KAAA,CAAMhE,EAAM,SAAS,CAAA,CAEjCsR,CAAAA,CAAUD,CAAAA,CAAY,KAAA,CAAMrR,CAAK,EAC9B,CACH,OAAA,CAAAsR,CAAAA,CACA,EAAA,CAAA7Z,CACJ,CAAA,EARW,EASf,CACA,SAAS8Z,EAAAA,CAAuB,CAAE,gBAAA,CAAAC,CAAAA,CAAkB,MAAA,CAAAxN,CAAAA,CAAQ,iBAAA,CAAAyN,CAAkB,CAAA,CAAG,CAAE,GAAA,CAAApO,CAAI,CAAA,CAAG,CACtF,IAAMqO,CAAAA,CAAarO,CAAAA,CAAI,aAAA,CAAc,SAAA,CAAU,UAAA,CAC/CA,CAAAA,CAAI,aAAA,CAAc,SAAA,CAAU,UAAA,CAAa,SAAUtF,CAAAA,CAAM+M,EAAO,CAC5D,GAAM,CAAE,EAAA,CAAArT,CAAAA,CAAI,OAAA,CAAA6Z,CAAQ,CAAA,CAAIF,EAAAA,CAAgB,IAAA,CAAMpN,CAAAA,CAAQyN,CAAAA,CAAkB,WAAW,CAAA,CACnF,QAAKha,CAAAA,EAAMA,CAAAA,GAAO,EAAA,EAAQ6Z,CAAAA,EAAWA,CAAAA,GAAY,EAAA,GAC7CE,CAAAA,CAAiB,CACb,EAAA,CAAA/Z,CAAAA,CACA,OAAA,CAAA6Z,CAAAA,CACA,IAAA,CAAM,CAAC,CAAE,IAAA,CAAAvT,CAAAA,CAAM,KAAA,CAAA+M,CAAM,CAAC,CAC1B,CAAC,CAAA,CAEE4G,CAAAA,CAAW,KAAA,CAAM,IAAA,CAAM,CAAC3T,CAAAA,CAAM+M,CAAK,CAAC,CAC/C,CAAA,CACA,IAAM6G,CAAAA,CAAatO,CAAAA,CAAI,aAAA,CAAc,SAAA,CAAU,UAAA,CAC/CA,CAAAA,CAAI,aAAA,CAAc,SAAA,CAAU,UAAA,CAAa,SAAUyH,CAAAA,CAAO,CACtD,GAAM,CAAE,EAAA,CAAArT,CAAAA,CAAI,OAAA,CAAA6Z,CAAQ,CAAA,CAAIF,EAAAA,CAAgB,IAAA,CAAMpN,CAAAA,CAAQyN,CAAAA,CAAkB,WAAW,CAAA,CACnF,OAAA,CAAKha,GAAMA,CAAAA,GAAO,EAAA,EAAQ6Z,CAAAA,EAAWA,CAAAA,GAAY,EAAA,GAC7CE,CAAAA,CAAiB,CACb,EAAA,CAAA/Z,CAAAA,CACA,OAAA,CAAA6Z,CAAAA,CACA,OAAA,CAAS,CAAC,CAAE,KAAA,CAAAxG,CAAM,CAAC,CACvB,CAAC,CAAA,CAEE6G,CAAAA,CAAW,KAAA,CAAM,IAAA,CAAM,CAAC7G,CAAK,CAAC,CACzC,CAAA,CACA,IAAI8G,CAAAA,CACAvO,CAAAA,CAAI,aAAA,CAAc,SAAA,CAAU,OAAA,GAC5BuO,CAAAA,CAAUvO,CAAAA,CAAI,aAAA,CAAc,SAAA,CAAU,OAAA,CACtCA,CAAAA,CAAI,aAAA,CAAc,SAAA,CAAU,OAAA,CAAU,SAAUvE,CAAAA,CAAM,CAClD,GAAM,CAAE,EAAA,CAAArH,CAAAA,CAAI,OAAA,CAAA6Z,CAAQ,CAAA,CAAIF,EAAAA,CAAgB,IAAA,CAAMpN,CAAAA,CAAQyN,CAAAA,CAAkB,WAAW,EACnF,OAAA,CAAKha,CAAAA,EAAMA,CAAAA,GAAO,EAAA,EAAQ6Z,CAAAA,EAAWA,CAAAA,GAAY,KAC7CE,CAAAA,CAAiB,CACb,EAAA,CAAA/Z,CAAAA,CACA,OAAA,CAAA6Z,CAAAA,CACA,QAASxS,CACb,CAAC,CAAA,CAEE8S,CAAAA,CAAQ,KAAA,CAAM,IAAA,CAAM,CAAC9S,CAAI,CAAC,CACrC,CAAA,CAAA,CAEJ,IAAI+S,CAAAA,CACAxO,CAAAA,CAAI,cAAc,SAAA,CAAU,WAAA,GAC5BwO,CAAAA,CAAcxO,CAAAA,CAAI,aAAA,CAAc,SAAA,CAAU,WAAA,CAC1CA,CAAAA,CAAI,aAAA,CAAc,SAAA,CAAU,WAAA,CAAc,SAAUvE,CAAAA,CAAM,CACtD,GAAM,CAAE,EAAA,CAAArH,CAAAA,CAAI,OAAA,CAAA6Z,CAAQ,CAAA,CAAIF,EAAAA,CAAgB,IAAA,CAAMpN,CAAAA,CAAQyN,CAAAA,CAAkB,WAAW,CAAA,CACnF,OAAA,CAAKha,CAAAA,EAAMA,IAAO,EAAA,EAAQ6Z,CAAAA,EAAWA,CAAAA,GAAY,EAAA,GAC7CE,CAAAA,CAAiB,CACb,GAAA/Z,CAAAA,CACA,OAAA,CAAA6Z,CAAAA,CACA,WAAA,CAAaxS,CACjB,CAAC,EAEE+S,CAAAA,CAAY,KAAA,CAAM,IAAA,CAAM,CAAC/S,CAAI,CAAC,CACzC,CAAA,CAAA,CAEJ,IAAMgT,CAAAA,CAA8B,EAAC,CACjCvE,EAAAA,CACAuE,CAAAA,CAA4B,gBAAkBzO,CAAAA,CAAI,eAAA,EAG9CmK,EAAAA,GACAsE,CAAAA,CAA4B,YAAA,CAAezO,CAAAA,CAAI,YAAA,CAAA,CAE/CqK,EAAAA,GACAoE,CAAAA,CAA4B,gBAAA,CAAmBzO,CAAAA,CAAI,gBAAA,CAAA,CAEnDoK,EAAAA,GACAqE,CAAAA,CAA4B,gBAAkBzO,CAAAA,CAAI,eAAA,CAAA,CAAA,CAG1D,IAAM0O,CAAAA,CAAsB,EAAC,CAC7B,OAAA,MAAA,CAAO,OAAA,CAAQD,CAA2B,CAAA,CAAE,OAAA,CAAQ,CAAC,CAACE,CAAAA,CAASpT,CAAI,CAAA,GAAM,CACrEmT,CAAAA,CAAoBC,CAAO,CAAA,CAAI,CAC3B,WAAYpT,CAAAA,CAAK,SAAA,CAAU,UAAA,CAC3B,UAAA,CAAYA,CAAAA,CAAK,SAAA,CAAU,UAC/B,CAAA,CACAA,CAAAA,CAAK,SAAA,CAAU,UAAA,CAAa,SAAUb,CAAAA,CAAM+M,CAAAA,CAAO,CAC/C,GAAM,CAAE,EAAA,CAAArT,CAAAA,CAAI,OAAA,CAAA6Z,CAAQ,EAAIF,EAAAA,CAAgB,IAAA,CAAK,gBAAA,CAAkBpN,CAAAA,CAAQyN,CAAAA,CAAkB,WAAW,CAAA,CACpG,OAAA,CAAKha,CAAAA,EAAMA,CAAAA,GAAO,EAAA,EAAQ6Z,CAAAA,EAAWA,CAAAA,GAAY,EAAA,GAC7CE,EAAiB,CACb,EAAA,CAAA/Z,CAAAA,CACA,OAAA,CAAA6Z,CAAAA,CACA,IAAA,CAAM,CACF,CACI,IAAA,CAAAvT,CAAAA,CACA,KAAA,CAAO,CACH,GAAGkT,EAAAA,CAA0B,IAAI,CAAA,CACjCnG,CAAAA,EAAS,CACb,CACJ,CACJ,CACJ,CAAC,CAAA,CAEEiH,CAAAA,CAAoBC,CAAO,CAAA,CAAE,UAAA,CAAW,KAAA,CAAM,KAAM,CAACjU,CAAAA,CAAM+M,CAAK,CAAC,CAC5E,CAAA,CACAlM,CAAAA,CAAK,SAAA,CAAU,UAAA,CAAa,SAAUkM,CAAAA,CAAO,CACzC,GAAM,CAAE,GAAArT,CAAAA,CAAI,OAAA,CAAA6Z,CAAQ,CAAA,CAAIF,EAAAA,CAAgB,IAAA,CAAK,gBAAA,CAAkBpN,CAAAA,CAAQyN,CAAAA,CAAkB,WAAW,CAAA,CACpG,OAAA,CAAKha,CAAAA,EAAMA,CAAAA,GAAO,IAAQ6Z,CAAAA,EAAWA,CAAAA,GAAY,EAAA,GAC7CE,CAAAA,CAAiB,CACb,EAAA,CAAA/Z,CAAAA,CACA,OAAA,CAAA6Z,CAAAA,CACA,OAAA,CAAS,CACL,CAAE,KAAA,CAAO,CAAC,GAAGL,EAAAA,CAA0B,IAAI,CAAA,CAAGnG,CAAK,CAAE,CACzD,CACJ,CAAC,CAAA,CAEEiH,CAAAA,CAAoBC,CAAO,CAAA,CAAE,UAAA,CAAW,MAAM,IAAA,CAAM,CAAClH,CAAK,CAAC,CACtE,EACJ,CAAC,CAAA,CACM,IAAM,CACTzH,CAAAA,CAAI,aAAA,CAAc,SAAA,CAAU,UAAA,CAAaqO,EACzCrO,CAAAA,CAAI,aAAA,CAAc,SAAA,CAAU,UAAA,CAAasO,CAAAA,CACzCC,CAAAA,GAAYvO,CAAAA,CAAI,aAAA,CAAc,SAAA,CAAU,OAAA,CAAUuO,CAAAA,CAAAA,CAClDC,CAAAA,GAAgBxO,CAAAA,CAAI,aAAA,CAAc,UAAU,WAAA,CAAcwO,CAAAA,CAAAA,CAC1D,MAAA,CAAO,OAAA,CAAQC,CAA2B,CAAA,CAAE,OAAA,CAAQ,CAAC,CAACE,CAAAA,CAASpT,CAAI,CAAA,GAAM,CACrEA,CAAAA,CAAK,UAAU,UAAA,CAAamT,CAAAA,CAAoBC,CAAO,CAAA,CAAE,UAAA,CACzDpT,CAAAA,CAAK,UAAU,UAAA,CAAamT,CAAAA,CAAoBC,CAAO,CAAA,CAAE,WAC7D,CAAC,EACL,CACJ,CACA,SAASC,EAAAA,CAA8B,CAAE,MAAA,CAAAjO,CAAAA,CAAQ,iBAAA,CAAAyN,CAAmB,CAAA,CAAGnU,CAAAA,CAAM,CACzE,IAAIhC,CAAAA,CAAIE,EAAIC,CAAAA,CACZ,IAAIyW,CAAAA,CAAS,IAAA,CACT5U,CAAAA,CAAK,QAAA,GAAa,WAAA,CAClB4U,CAAAA,CAASlO,CAAAA,CAAO,KAAA,CAAM1G,CAAI,CAAA,CAE1B4U,CAAAA,CAASlO,CAAAA,CAAO,MAAM1G,CAAAA,CAAK,IAAI,CAAA,CACnC,IAAM6U,CAAAA,CAAc7U,CAAAA,CAAK,QAAA,GAAa,WAAA,CAAA,CAC/BhC,CAAAA,CAAKgC,CAAAA,CAAK,WAAA,IAAiB,IAAA,EAAQhC,CAAAA,GAAO,MAAA,CAAS,OAASA,CAAAA,CAAG,QAAA,CAAA,CAC/DG,CAAAA,CAAAA,CAAMD,CAAAA,CAAK8B,CAAAA,CAAK,aAAA,IAAmB,IAAA,EAAQ9B,CAAAA,GAAO,MAAA,CAAS,MAAA,CAASA,CAAAA,CAAG,WAAA,IAAiB,IAAA,EAAQC,CAAAA,GAAO,OAAS,MAAA,CAASA,CAAAA,CAAG,UAAA,CAC7H2W,CAAAA,CAA6B,MAAA,CAAO,wBAAA,CAAyBD,CAAAA,EAAgB,IAAA,CAAiC,MAAA,CAASA,CAAAA,CAAY,SAAA,CAAW,oBAAoB,CAAA,CACxK,OAAID,IAAW,IAAA,EACXA,CAAAA,GAAW,EAAA,EACX,CAACC,CAAAA,EACD,CAACC,CAAAA,CACM,IAAM,CACb,CAAA,EACJ,MAAA,CAAO,cAAA,CAAe9U,CAAAA,CAAM,oBAAA,CAAsB,CAC9C,YAAA,CAAc8U,CAAAA,CAA2B,YAAA,CACzC,UAAA,CAAYA,CAAAA,CAA2B,UAAA,CACvC,GAAA,EAAM,CACF,IAAI9W,CAAAA,CACJ,OAAA,CAAQA,CAAAA,CAAK8W,CAAAA,CAA2B,GAAA,IAAS,MAAQ9W,CAAAA,GAAO,MAAA,CAAS,MAAA,CAASA,CAAAA,CAAG,IAAA,CAAK,IAAI,CAClG,CAAA,CACA,GAAA,CAAI+W,CAAAA,CAAQ,CACR,IAAI/W,CAAAA,CACJ,IAAMgX,CAAAA,CAAAA,CAAUhX,CAAAA,CAAK8W,CAAAA,CAA2B,GAAA,IAAS,IAAA,EAAQ9W,CAAAA,GAAO,MAAA,CAAS,MAAA,CAASA,CAAAA,CAAG,IAAA,CAAK,IAAA,CAAM+W,CAAM,CAAA,CAC9G,GAAIH,IAAW,IAAA,EAAQA,CAAAA,GAAW,EAAA,CAC9B,GAAI,CACAT,CAAAA,CAAkB,gBAAA,CAAiBY,CAAAA,CAAQH,CAAM,EACrD,CAAA,MACOxa,CAAAA,CAAG,CACV,CAEJ,OAAO4a,CACX,CACJ,CAAC,CAAA,CACM,IAAM,CACT,MAAA,CAAO,cAAA,CAAehV,CAAAA,CAAM,oBAAA,CAAsB,CAC9C,YAAA,CAAc8U,CAAAA,CAA2B,YAAA,CACzC,WAAYA,CAAAA,CAA2B,UAAA,CACvC,GAAA,CAAKA,CAAAA,CAA2B,GAAA,CAChC,GAAA,CAAKA,EAA2B,GACpC,CAAC,EACL,CAAA,CACJ,CACA,SAASG,GAA6B,CAAE,kBAAA,CAAAC,CAAAA,CAAoB,MAAA,CAAAxO,CAAAA,CAAQ,mBAAA,CAAAyO,CAAAA,CAAqB,iBAAA,CAAAhB,CAAmB,CAAA,CAAG,CAAE,GAAA,CAAApO,CAAI,CAAA,CAAG,CACpH,IAAMqP,CAAAA,CAAcrP,CAAAA,CAAI,mBAAA,CAAoB,SAAA,CAAU,WAAA,CACtDA,CAAAA,CAAI,mBAAA,CAAoB,SAAA,CAAU,WAAA,CAAc,SAAUsP,CAAAA,CAAUla,CAAAA,CAAOma,CAAAA,CAAU,CACjF,IAAItX,CAAAA,CACJ,GAAImX,CAAAA,CAAoB,GAAA,CAAIE,CAAQ,CAAA,CAChC,OAAOD,CAAAA,CAAY,KAAA,CAAM,IAAA,CAAM,CAACC,CAAAA,CAAUla,CAAAA,CAAOma,CAAQ,CAAC,CAAA,CAE9D,GAAM,CAAE,EAAA,CAAAnb,CAAAA,CAAI,QAAA6Z,CAAQ,CAAA,CAAIF,EAAAA,CAAAA,CAAiB9V,CAAAA,CAAK,IAAA,CAAK,UAAA,IAAgB,MAAQA,CAAAA,GAAO,MAAA,CAAS,MAAA,CAASA,CAAAA,CAAG,gBAAA,CAAkB0I,CAAAA,CAAQyN,CAAAA,CAAkB,WAAW,CAAA,CAC9J,OAAA,CAAKha,CAAAA,EAAMA,CAAAA,GAAO,EAAA,EAAQ6Z,CAAAA,EAAWA,IAAY,EAAA,GAC7CkB,CAAAA,CAAmB,CACf,EAAA,CAAA/a,CAAAA,CACA,OAAA,CAAA6Z,CAAAA,CACA,GAAA,CAAK,CACD,QAAA,CAAAqB,CAAAA,CACA,KAAA,CAAAla,CAAAA,CACA,QAAA,CAAAma,CACJ,CAAA,CACA,KAAA,CAAO3B,EAAAA,CAA0B,IAAA,CAAK,UAAU,CACpD,CAAC,CAAA,CAEEyB,CAAAA,CAAY,KAAA,CAAM,IAAA,CAAM,CAACC,CAAAA,CAAUla,CAAAA,CAAOma,CAAQ,CAAC,CAC9D,CAAA,CACA,IAAMC,CAAAA,CAAiBxP,CAAAA,CAAI,oBAAoB,SAAA,CAAU,cAAA,CACzD,OAAAA,CAAAA,CAAI,mBAAA,CAAoB,SAAA,CAAU,eAAiB,SAAUsP,CAAAA,CAAU,CACnE,IAAIrX,CAAAA,CACJ,GAAImX,CAAAA,CAAoB,GAAA,CAAIE,CAAQ,CAAA,CAChC,OAAOE,CAAAA,CAAe,KAAA,CAAM,IAAA,CAAM,CAACF,CAAQ,CAAC,CAAA,CAEhD,GAAM,CAAE,EAAA,CAAAlb,CAAAA,CAAI,OAAA,CAAA6Z,CAAQ,CAAA,CAAIF,EAAAA,CAAAA,CAAiB9V,CAAAA,CAAK,IAAA,CAAK,UAAA,IAAgB,MAAQA,CAAAA,GAAO,MAAA,CAAS,MAAA,CAASA,CAAAA,CAAG,gBAAA,CAAkB0I,CAAAA,CAAQyN,CAAAA,CAAkB,WAAW,CAAA,CAC9J,OAAA,CAAKha,CAAAA,EAAMA,CAAAA,GAAO,EAAA,EAAQ6Z,CAAAA,EAAWA,IAAY,EAAA,GAC7CkB,CAAAA,CAAmB,CACf,EAAA,CAAA/a,CAAAA,CACA,OAAA,CAAA6Z,EACA,MAAA,CAAQ,CACJ,QAAA,CAAAqB,CACJ,CAAA,CACA,KAAA,CAAO1B,GAA0B,IAAA,CAAK,UAAU,CACpD,CAAC,CAAA,CAEE4B,CAAAA,CAAe,KAAA,CAAM,IAAA,CAAM,CAACF,CAAQ,CAAC,CAChD,CAAA,CACO,IAAM,CACTtP,CAAAA,CAAI,mBAAA,CAAoB,SAAA,CAAU,WAAA,CAAcqP,CAAAA,CAChDrP,CAAAA,CAAI,mBAAA,CAAoB,SAAA,CAAU,cAAA,CAAiBwP,EACvD,CACJ,CACA,SAASC,EAAAA,CAA6B,CAAE,kBAAA,CAAAC,CAAAA,CAAoB,UAAA,CAAAxQ,CAAAA,CAAY,aAAA,CAAAC,CAAAA,CAAe,MAAA,CAAAwB,CAAAA,CAAQ,QAAA,CAAAoK,CAAU,CAAA,CAAG,CACxG,IAAMmB,CAAAA,CAAW3Q,GAASzE,EAAAA,CAAUwP,CAAAA,EAAU,CAC1C,IAAM3O,CAAAA,CAAS2S,EAAAA,CAAehE,CAAK,CAAA,CACnC,GAAI,CAAC3O,CAAAA,EACDsO,CAAAA,CAAUtO,CAAAA,CAAQuH,EAAYC,CAAAA,CAAe,IAAI,CAAA,CACjD,OAEJ,GAAM,CAAE,WAAA,CAAAwQ,CAAAA,CAAa,MAAA,CAAAC,CAAAA,CAAQ,KAAA,CAAAC,CAAAA,CAAO,YAAA,CAAAC,CAAc,EAAInY,CAAAA,CACtD+X,CAAAA,CAAmB,CACf,IAAA,CAAAnU,CAAAA,CACA,EAAA,CAAIoF,CAAAA,CAAO,KAAA,CAAMhJ,CAAM,CAAA,CACvB,WAAA,CAAAgY,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,MAAAC,CAAAA,CACA,YAAA,CAAAC,CACJ,CAAC,EACL,CAAA,CAAG/E,CAAAA,CAAS,KAAA,EAAS,GAAG,CAAA,CAClBW,CAAAA,CAAW,CACb9G,CAAAA,CAAG,MAAA,CAAQsH,EAAQ,CAAC,CAAC,CAAA,CACrBtH,CAAAA,CAAG,OAAA,CAASsH,CAAAA,CAAQ,CAAC,CAAC,CAAA,CACtBtH,CAAAA,CAAG,QAAA,CAAUsH,CAAAA,CAAQ,CAAC,CAAC,CAAA,CACvBtH,CAAAA,CAAG,cAAA,CAAgBsH,CAAAA,CAAQ,CAAC,CAAC,CAAA,CAC7BtH,CAAAA,CAAG,YAAA,CAAcsH,CAAAA,CAAQ,CAAC,CAAC,CAC/B,CAAA,CACA,OAAO,IAAM,CACTR,CAAAA,CAAS,OAAA,CAASC,CAAAA,EAAMA,CAAAA,EAAG,EAC/B,CACJ,CACA,SAASoE,EAAAA,CAAiB,CAAE,MAAA,CAAAC,EAAQ,GAAA,CAAA9R,CAAI,CAAA,CAAG,CACvC,IAAM8B,CAAAA,CAAM9B,CAAAA,CAAI,WAAA,CAChB,GAAI,CAAC8B,CAAAA,CACD,OAAO,IAAM,CACb,EAEJ,IAAM0L,CAAAA,CAAW,EAAC,CACZuE,CAAAA,CAAU,IAAI,OAAA,CACdC,CAAAA,CAAmBlQ,CAAAA,CAAI,QAAA,CAC7BA,CAAAA,CAAI,QAAA,CAAW,SAAkBmQ,CAAAA,CAAQvK,EAAQwK,CAAAA,CAAa,CAC1D,IAAMC,CAAAA,CAAW,IAAIH,CAAAA,CAAiBC,CAAAA,CAAQvK,CAAAA,CAAQwK,CAAW,CAAA,CACjE,OAAAH,CAAAA,CAAQ,GAAA,CAAII,CAAAA,CAAU,CAClB,MAAA,CAAAF,CAAAA,CACA,MAAA,CAAQ,OAAOvK,CAAAA,EAAW,QAAA,CAC1B,WAAA,CAAAwK,CAAAA,CACA,UAAA,CAAY,OAAOxK,CAAAA,EAAW,QAAA,CACxBA,CAAAA,CACA,IAAA,CAAK,UAAU,KAAA,CAAM,IAAA,CAAK,IAAI,UAAA,CAAWA,CAAM,CAAC,CAAC,CAC3D,CAAC,CAAA,CACMyK,CACX,CAAA,CACA,IAAMC,CAAAA,CAAiB3K,GAAMzH,CAAAA,CAAI,KAAA,CAAO,KAAA,CAAO,SAAUwH,CAAAA,CAAU,CAC/D,OAAO,SAAU2K,CAAAA,CAAU,CACvB,OAAA,UAAA,CAAW,IAAM,CACb,IAAM3Z,CAAAA,CAAIuZ,CAAAA,CAAQ,GAAA,CAAII,CAAQ,CAAA,CAC1B3Z,CAAAA,GACAsZ,CAAAA,CAAOtZ,CAAC,CAAA,CACRuZ,CAAAA,CAAQ,MAAA,CAAOI,CAAQ,CAAA,EAE/B,CAAA,CAAG,CAAC,CAAA,CACG3K,CAAAA,CAAS,KAAA,CAAM,IAAA,CAAM,CAAC2K,CAAQ,CAAC,CAC1C,CACJ,CAAC,CAAA,CACD,OAAA3E,CAAAA,CAAS,IAAA,CAAK,IAAM,CAChB1L,CAAAA,CAAI,QAAA,CAAWkQ,EACnB,CAAC,CAAA,CACDxE,CAAAA,CAAS,IAAA,CAAK4E,CAAc,CAAA,CACrB,IAAM,CACT5E,CAAAA,CAAS,OAAA,CAASC,GAAMA,CAAAA,EAAG,EAC/B,CACJ,CACA,SAAS4E,GAAsBC,CAAAA,CAAO,CAClC,GAAM,CAAE,GAAA,CAAAtS,CAAAA,CAAK,OAAAyC,CAAAA,CAAQ,UAAA,CAAAzB,CAAAA,CAAY,aAAA,CAAAC,CAAAA,CAAe,WAAA,CAAAsR,CAAY,CAAA,CAAID,CAAAA,CAC5DE,CAAAA,CAAY,IAAA,CACVC,CAAAA,CAAkB,IAAM,CAC1B,IAAMC,CAAAA,CAAY1S,CAAAA,CAAI,YAAA,EAAa,CACnC,GAAI,CAAC0S,CAAAA,EAAcF,CAAAA,GAAcE,CAAAA,EAAc,IAAA,EAAwCA,CAAAA,CAAU,WAAA,CAAA,CAC7F,OACJF,CAAAA,CAAYE,EAAU,WAAA,EAAe,KAAA,CACrC,IAAMC,CAAAA,CAAS,EAAC,CACVC,CAAAA,CAAQF,CAAAA,CAAU,UAAA,EAAc,CAAA,CACtC,IAAA,IAAShc,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIkc,EAAOlc,CAAAA,EAAAA,CAAK,CAC5B,IAAMmc,CAAAA,CAAQH,CAAAA,CAAU,UAAA,CAAWhc,CAAC,CAAA,CAC9B,CAAE,cAAA,CAAAoc,CAAAA,CAAgB,WAAA,CAAAC,CAAAA,CAAa,aAAAC,CAAAA,CAAc,SAAA,CAAAC,CAAU,CAAA,CAAIJ,CAAAA,CACjD9K,CAAAA,CAAU+K,CAAAA,CAAgB9R,CAAAA,CAAYC,CAAAA,CAAe,IAAI,CAAA,EACrE8G,CAAAA,CAAUiL,CAAAA,CAAchS,CAAAA,CAAYC,EAAe,IAAI,CAAA,EAG3D0R,CAAAA,CAAO,IAAA,CAAK,CACR,KAAA,CAAOlQ,CAAAA,CAAO,KAAA,CAAMqQ,CAAc,CAAA,CAClC,WAAA,CAAAC,CAAAA,CACA,GAAA,CAAKtQ,CAAAA,CAAO,MAAMuQ,CAAY,CAAA,CAC9B,SAAA,CAAAC,CACJ,CAAC,EACL,CACAV,CAAAA,CAAY,CAAE,MAAA,CAAAI,CAAO,CAAC,EAC1B,CAAA,CACA,OAAAF,CAAAA,EAAgB,CACT/L,CAAAA,CAAG,iBAAA,CAAmB+L,CAAe,CAChD,CACA,SAASS,EAAAA,CAAWC,CAAAA,CAAGC,CAAAA,CAAO,CAC1B,GAAM,CAAE,UAAA,CAAAC,CAAAA,CAAY,WAAA,CAAAzG,CAAAA,CAAa,kBAAA,CAAAe,CAAAA,CAAoB,QAAA,CAAAO,CAAAA,CAAU,gBAAA,CAAAG,CAAAA,CAAkB,OAAA,CAAAU,CAAAA,CAAS,kBAAA,CAAAyC,CAAAA,CAAoB,iBAAAvB,CAAAA,CAAkB,kBAAA,CAAAgB,CAAAA,CAAoB,gBAAA,CAAAqC,CAAAA,CAAkB,MAAA,CAAAxB,CAAAA,CAAQ,WAAA,CAAAS,CAAa,CAAA,CAAIY,CAAAA,CAC/LA,CAAAA,CAAE,UAAA,CAAa,CAAA,GAAI3a,IAAM,CACjB4a,CAAAA,CAAM,QAAA,EACNA,CAAAA,CAAM,QAAA,CAAS,GAAG5a,CAAC,CAAA,CAEvB6a,CAAAA,CAAW,GAAG7a,CAAC,EACnB,CAAA,CACA2a,CAAAA,CAAE,YAAc,CAAA,GAAI3a,CAAAA,GAAM,CAClB4a,CAAAA,CAAM,SAAA,EACNA,CAAAA,CAAM,UAAU,GAAG5a,CAAC,CAAA,CAExBoU,CAAAA,CAAY,GAAGpU,CAAC,EACpB,CAAA,CACA2a,CAAAA,CAAE,kBAAA,CAAqB,CAAA,GAAI3a,CAAAA,GAAM,CACzB4a,CAAAA,CAAM,gBAAA,EACNA,CAAAA,CAAM,gBAAA,CAAiB,GAAG5a,CAAC,CAAA,CAE/BmV,CAAAA,CAAmB,GAAGnV,CAAC,EAC3B,CAAA,CACA2a,CAAAA,CAAE,QAAA,CAAW,CAAA,GAAI3a,CAAAA,GAAM,CACf4a,CAAAA,CAAM,MAAA,EACNA,CAAAA,CAAM,MAAA,CAAO,GAAG5a,CAAC,EAErB0V,CAAAA,CAAS,GAAG1V,CAAC,EACjB,CAAA,CACA2a,CAAAA,CAAE,gBAAA,CAAmB,CAAA,GAAI3a,CAAAA,GAAM,CACvB4a,CAAAA,CAAM,cAAA,EACNA,CAAAA,CAAM,cAAA,CAAe,GAAG5a,CAAC,CAAA,CAE7B6V,CAAAA,CAAiB,GAAG7V,CAAC,EACzB,EACA2a,CAAAA,CAAE,OAAA,CAAU,CAAA,GAAI3a,CAAAA,GAAM,CACd4a,CAAAA,CAAM,OACNA,CAAAA,CAAM,KAAA,CAAM,GAAG5a,CAAC,CAAA,CAEpBuW,CAAAA,CAAQ,GAAGvW,CAAC,EAChB,CAAA,CACA2a,CAAAA,CAAE,kBAAA,CAAqB,CAAA,GAAI3a,CAAAA,GAAM,CACzB4a,CAAAA,CAAM,eAAA,EACNA,CAAAA,CAAM,eAAA,CAAgB,GAAG5a,CAAC,CAAA,CAE9BgZ,CAAAA,CAAmB,GAAGhZ,CAAC,EAC3B,CAAA,CACA2a,CAAAA,CAAE,gBAAA,CAAmB,IAAI3a,CAAAA,GAAM,CACvB4a,CAAAA,CAAM,cAAA,EACNA,CAAAA,CAAM,cAAA,CAAe,GAAG5a,CAAC,CAAA,CAE7ByX,CAAAA,CAAiB,GAAGzX,CAAC,EACzB,CAAA,CACA2a,EAAE,kBAAA,CAAqB,CAAA,GAAI3a,CAAAA,GAAM,CACzB4a,CAAAA,CAAM,gBAAA,EACNA,EAAM,gBAAA,CAAiB,GAAG5a,CAAC,CAAA,CAE/ByY,CAAAA,CAAmB,GAAGzY,CAAC,EAC3B,CAAA,CACA2a,CAAAA,CAAE,gBAAA,CAAmB,CAAA,GAAI3a,CAAAA,GAAM,CACvB4a,CAAAA,CAAM,cAAA,EACNA,CAAAA,CAAM,cAAA,CAAe,GAAG5a,CAAC,CAAA,CAE7B8a,EAAiB,GAAG9a,CAAC,EACzB,CAAA,CACA2a,CAAAA,CAAE,MAAA,CAAS,CAAA,GAAI3a,CAAAA,GAAM,CACb4a,CAAAA,CAAM,IAAA,EACNA,CAAAA,CAAM,IAAA,CAAK,GAAG5a,CAAC,CAAA,CAEnBsZ,CAAAA,CAAO,GAAGtZ,CAAC,EACf,CAAA,CACA2a,CAAAA,CAAE,WAAA,CAAc,CAAA,GAAI3a,CAAAA,GAAM,CAClB4a,CAAAA,CAAM,SAAA,EACNA,CAAAA,CAAM,UAAU,GAAG5a,CAAC,CAAA,CAExB+Z,CAAAA,CAAY,GAAG/Z,CAAC,EACpB,EACJ,CACA,SAAS+a,EAAAA,CAAcJ,CAAAA,CAAGC,CAAAA,CAAQ,GAAI,CAClC,IAAM7D,CAAAA,CAAgB4D,CAAAA,CAAE,GAAA,CAAI,WAAA,CAC5B,GAAI,CAAC5D,CAAAA,CACD,OAAO,IAAM,CACb,CAAA,CAEJ2D,EAAAA,CAAWC,EAAGC,CAAK,CAAA,CACnB,IAAMI,CAAAA,CAAmBnH,EAAAA,CAAqB8G,CAAAA,CAAGA,CAAAA,CAAE,GAAG,CAAA,CAChDM,CAAAA,CAAmB9G,EAAAA,CAAiBwG,CAAC,CAAA,CACrCO,CAAAA,CAA0BhG,GAA6ByF,CAAC,CAAA,CACxDQ,CAAAA,CAAgB1F,EAAAA,CAAmBkF,CAAC,CAAA,CACpCS,CAAAA,CAAwBxF,EAAAA,CAA2B+E,CAAC,CAAA,CACpDU,CAAAA,CAAe/E,EAAAA,CAAkBqE,CAAC,CAAA,CAClCW,EAA0BvC,EAAAA,CAA6B4B,CAAC,CAAA,CACxDY,CAAAA,CAAqB/D,EAAAA,CAAuBmD,CAAAA,CAAG,CAAE,GAAA,CAAK5D,CAAc,CAAC,CAAA,CACrEyE,CAAAA,CAA4BtD,EAAAA,CAA8ByC,EAAGA,CAAAA,CAAE,GAAG,CAAA,CAClEc,CAAAA,CAA2BjD,EAAAA,CAA6BmC,CAAAA,CAAG,CAC7D,GAAA,CAAK5D,CACT,CAAC,CAAA,CACK2E,CAAAA,CAAef,CAAAA,CAAE,YAAA,CACjBtB,GAAiBsB,CAAC,CAAA,CAClB,IAAM,CACR,CAAA,CACEgB,CAAAA,CAAoB9B,EAAAA,CAAsBc,CAAC,CAAA,CAC3CiB,CAAAA,CAAiB,EAAC,CACxB,IAAA,IAAWC,CAAAA,IAAUlB,EAAE,OAAA,CACnBiB,CAAAA,CAAe,IAAA,CAAKC,CAAAA,CAAO,QAAA,CAASA,CAAAA,CAAO,QAAA,CAAU9E,CAAAA,CAAe8E,CAAAA,CAAO,OAAO,CAAC,CAAA,CAEvF,OAAO,IAAM,CACTtI,EAAAA,CAAgB,OAAA,CAASuI,CAAAA,EAAMA,CAAAA,CAAE,KAAA,EAAO,EACxCd,CAAAA,CAAiB,UAAA,EAAW,CAC5BC,CAAAA,EAAiB,CACjBC,CAAAA,GACAC,CAAAA,EAAc,CACdC,CAAAA,EAAsB,CACtBC,CAAAA,EAAa,CACbC,CAAAA,EAAwB,CACxBC,CAAAA,EAAmB,CACnBC,CAAAA,EAA0B,CAC1BC,CAAAA,EAAyB,CACzBC,GAAa,CACbC,CAAAA,EAAkB,CAClBC,CAAAA,CAAe,OAAA,CAAS3G,CAAAA,EAAMA,CAAAA,EAAG,EACrC,CACJ,CCzuBA,IAAM8G,EAAAA,CAAN,KAA8B,CAC1B,WAAA,CAAYC,CAAAA,CAAc,CACtB,IAAA,CAAK,YAAA,CAAeA,CAAAA,CACpB,IAAA,CAAK,qBAAA,CAAwB,IAAI,OAAA,CACjC,IAAA,CAAK,qBAAA,CAAwB,IAAI,QACrC,CACA,KAAA,CAAMlK,CAAAA,CAAQmK,CAAAA,CAAUC,CAAAA,CAAeC,CAAAA,CAAe,CAClD,IAAMC,CAAAA,CAAkBF,CAAAA,EAAiB,IAAA,CAAK,kBAAA,CAAmBpK,CAAM,CAAA,CACjEuK,EAAkBF,CAAAA,EAAiB,IAAA,CAAK,kBAAA,CAAmBrK,CAAM,CAAA,CACnEpU,CAAAA,CAAK0e,CAAAA,CAAgB,GAAA,CAAIH,CAAQ,CAAA,CACrC,OAAKve,CAAAA,GACDA,CAAAA,CAAK,IAAA,CAAK,cAAa,CACvB0e,CAAAA,CAAgB,GAAA,CAAIH,CAAAA,CAAUve,CAAE,CAAA,CAChC2e,CAAAA,CAAgB,GAAA,CAAI3e,CAAAA,CAAIue,CAAQ,CAAA,CAAA,CAE7Bve,CACX,CACA,MAAA,CAAOoU,EAAQmK,CAAAA,CAAU,CACrB,IAAMG,CAAAA,CAAkB,IAAA,CAAK,kBAAA,CAAmBtK,CAAM,CAAA,CAChDuK,CAAAA,CAAkB,IAAA,CAAK,kBAAA,CAAmBvK,CAAM,CAAA,CACtD,OAAOmK,EAAS,GAAA,CAAKve,CAAAA,EAAO,IAAA,CAAK,KAAA,CAAMoU,CAAAA,CAAQpU,CAAAA,CAAI0e,EAAiBC,CAAe,CAAC,CACxF,CACA,WAAA,CAAYvK,CAAAA,CAAQpU,EAAI4e,CAAAA,CAAK,CACzB,IAAMD,CAAAA,CAAkBC,CAAAA,EAAO,IAAA,CAAK,kBAAA,CAAmBxK,CAAM,CAAA,CAC7D,GAAI,OAAOpU,CAAAA,EAAO,QAAA,CACd,OAAOA,EACX,IAAMue,CAAAA,CAAWI,CAAAA,CAAgB,GAAA,CAAI3e,CAAE,CAAA,CACvC,OAAKue,CAAAA,EACM,EAEf,CACA,YAAA,CAAanK,CAAAA,CAAQyK,CAAAA,CAAK,CACtB,IAAMF,CAAAA,CAAkB,IAAA,CAAK,kBAAA,CAAmBvK,CAAM,CAAA,CACtD,OAAOyK,CAAAA,CAAI,GAAA,CAAK7e,CAAAA,EAAO,IAAA,CAAK,WAAA,CAAYoU,CAAAA,CAAQpU,CAAAA,CAAI2e,CAAe,CAAC,CACxE,CACA,KAAA,CAAMvK,CAAAA,CAAQ,CACV,GAAI,CAACA,CAAAA,CAAQ,CACT,IAAA,CAAK,qBAAA,CAAwB,IAAI,OAAA,CACjC,KAAK,qBAAA,CAAwB,IAAI,OAAA,CACjC,MACJ,CACA,IAAA,CAAK,qBAAA,CAAsB,MAAA,CAAOA,CAAM,CAAA,CACxC,IAAA,CAAK,qBAAA,CAAsB,MAAA,CAAOA,CAAM,EAC5C,CACA,kBAAA,CAAmBA,CAAAA,CAAQ,CACvB,IAAIsK,CAAAA,CAAkB,IAAA,CAAK,qBAAA,CAAsB,GAAA,CAAItK,CAAM,CAAA,CAC3D,OAAKsK,CAAAA,GACDA,CAAAA,CAAkB,IAAI,GAAA,CACtB,IAAA,CAAK,qBAAA,CAAsB,GAAA,CAAItK,CAAAA,CAAQsK,CAAe,CAAA,CAAA,CAEnDA,CACX,CACA,kBAAA,CAAmBtK,CAAAA,CAAQ,CACvB,IAAIuK,CAAAA,CAAkB,KAAK,qBAAA,CAAsB,GAAA,CAAIvK,CAAM,CAAA,CAC3D,OAAKuK,CAAAA,GACDA,EAAkB,IAAI,GAAA,CACtB,IAAA,CAAK,qBAAA,CAAsB,GAAA,CAAIvK,CAAAA,CAAQuK,CAAe,CAAA,CAAA,CAEnDA,CACX,CACJ,CAAA,CCxDA,IAAMG,EAAAA,CAAN,KAAoB,CAChB,WAAA,CAAYta,CAAAA,CAAS,CACjB,IAAA,CAAK,OAAA,CAAU,IAAI,QACnB,IAAA,CAAK,oBAAA,CAAuB,IAAI,OAAA,CAChC,IAAA,CAAK,uBAAA,CAA0B,IAAI6Z,EAAAA,CAAwBnW,EAAK,CAAA,CAChE,IAAA,CAAK,UAAA,CAAa1D,CAAAA,CAAQ,UAAA,CAC1B,KAAK,WAAA,CAAcA,CAAAA,CAAQ,WAAA,CAC3B,IAAA,CAAK,iBAAA,CAAoBA,CAAAA,CAAQ,iBAAA,CACjC,IAAA,CAAK,wBAAA,CAA2BA,CAAAA,CAAQ,wBAAA,CACxC,IAAA,CAAK,4BAAA,CAA+B,IAAI6Z,GAAwB,IAAA,CAAK,iBAAA,CAAkB,WAAA,CAAY,UAAA,CAAW,IAAA,CAAK,IAAA,CAAK,kBAAkB,WAAW,CAAC,CAAA,CACtJ,IAAA,CAAK,MAAA,CAAS7Z,CAAAA,CAAQ,OAClB,IAAA,CAAK,wBAAA,EACL,MAAA,CAAO,gBAAA,CAAiB,SAAA,CAAW,IAAA,CAAK,aAAA,CAAc,IAAA,CAAK,IAAI,CAAC,EAExE,CACA,SAAA,CAAUiH,CAAAA,CAAU,CAChB,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAIA,CAAAA,CAAU,IAAI,CAAA,CAC3BA,CAAAA,CAAS,aAAA,EACT,IAAA,CAAK,oBAAA,CAAqB,GAAA,CAAIA,CAAAA,CAAS,aAAA,CAAeA,CAAQ,EACtE,CACA,eAAA,CAAgBsT,CAAAA,CAAI,CAChB,IAAA,CAAK,YAAA,CAAeA,EACxB,CACA,YAAA,CAAatT,CAAAA,CAAU4I,CAAAA,CAAS,CAC5B,IAAIxQ,CAAAA,CACJ,KAAK,UAAA,CAAW,CACZ,IAAA,CAAM,CACF,CACI,QAAA,CAAU,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM4H,CAAQ,CAAA,CACpC,MAAA,CAAQ,IAAA,CACR,IAAA,CAAM4I,CACV,CACJ,CAAA,CACA,OAAA,CAAS,EAAC,CACV,KAAA,CAAO,EAAC,CACR,UAAA,CAAY,EAAC,CACb,cAAA,CAAgB,IACpB,CAAC,GACAxQ,CAAAA,CAAK,IAAA,CAAK,YAAA,IAAkB,IAAA,EAAQA,CAAAA,GAAO,MAAA,EAAkBA,CAAAA,CAAG,IAAA,CAAK,IAAA,CAAM4H,CAAQ,CAAA,CAChFA,CAAAA,CAAS,eAAA,EACTA,CAAAA,CAAS,gBAAgB,kBAAA,EACzBA,CAAAA,CAAS,eAAA,CAAgB,kBAAA,CAAmB,MAAA,CAAS,CAAA,EACrD,IAAA,CAAK,iBAAA,CAAkB,gBAAA,CAAiBA,CAAAA,CAAS,eAAA,CAAgB,kBAAA,CAAoB,IAAA,CAAK,MAAA,CAAO,MAAMA,CAAAA,CAAS,eAAe,CAAC,EACxI,CACA,aAAA,CAActG,EAAS,CACnB,GAAIA,CAAAA,CAAQ,IAAA,CAAK,IAAA,GAAS,OAAA,CAAS,CAE/B,GAAI,CADuBA,CAAAA,CAAQ,MAAA,CAE/B,OACJ,IAAMsG,CAAAA,CAAW,IAAA,CAAK,oBAAA,CAAqB,GAAA,CAAItG,CAAAA,CAAQ,MAAM,CAAA,CAC7D,GAAI,CAACsG,CAAAA,CACD,OACJ,IAAMuT,CAAAA,CAAmB,IAAA,CAAK,yBAAA,CAA0BvT,CAAAA,CAAUtG,CAAAA,CAAQ,IAAA,CAAK,KAAK,CAAA,CAChF6Z,CAAAA,EACA,IAAA,CAAK,WAAA,CAAYA,EAAkB7Z,CAAAA,CAAQ,IAAA,CAAK,UAAU,EAClE,CACJ,CACA,yBAAA,CAA0BsG,CAAAA,CAAUxL,CAAAA,CAAG,CACnC,IAAI4D,CAAAA,CACJ,OAAQ5D,CAAAA,CAAE,MACN,KAAKwS,CAAAA,CAAU,YAAA,CACX,OAAA,IAAA,CAAK,uBAAA,CAAwB,MAAMhH,CAAQ,CAAA,CAC3C,IAAA,CAAK,4BAAA,CAA6B,KAAA,CAAMA,CAAQ,EAChD,IAAA,CAAK,eAAA,CAAgBxL,CAAAA,CAAE,IAAA,CAAK,IAAA,CAAMwL,CAAQ,CAAA,CACnC,CACH,SAAA,CAAWxL,CAAAA,CAAE,SAAA,CACb,IAAA,CAAMwS,CAAAA,CAAU,mBAAA,CAChB,KAAM,CACF,MAAA,CAAQE,CAAAA,CAAkB,QAAA,CAC1B,IAAA,CAAM,CACF,CACI,QAAA,CAAU,IAAA,CAAK,MAAA,CAAO,KAAA,CAAMlH,CAAQ,CAAA,CACpC,MAAA,CAAQ,KACR,IAAA,CAAMxL,CAAAA,CAAE,IAAA,CAAK,IACjB,CACJ,CAAA,CACA,OAAA,CAAS,EAAC,CACV,KAAA,CAAO,EAAC,CACR,UAAA,CAAY,GACZ,cAAA,CAAgB,IACpB,CACJ,CAAA,CAEJ,KAAKwS,CAAAA,CAAU,KACf,KAAKA,CAAAA,CAAU,IAAA,CACf,KAAKA,CAAAA,CAAU,gBAAA,CACX,OAAO,MAAA,CAEX,KAAKA,CAAAA,CAAU,MAAA,CACX,OAAOxS,CAAAA,CAEX,KAAKwS,CAAAA,CAAU,MAAA,CACX,OAAA,IAAA,CAAK,UAAA,CAAWxS,CAAAA,CAAE,IAAA,CAAK,OAAA,CAASwL,EAAU,CAAC,IAAA,CAAM,UAAA,CAAY,YAAA,CAAc,QAAQ,CAAC,CAAA,CAC7ExL,CAAAA,CAEX,KAAKwS,CAAAA,CAAU,mBAAA,CACX,OAAQxS,CAAAA,CAAE,IAAA,CAAK,QACX,KAAK0S,CAAAA,CAAkB,QAAA,CACnB,OAAA1S,CAAAA,CAAE,IAAA,CAAK,IAAA,CAAK,OAAA,CAAS,CAAA,EAAM,CACvB,IAAA,CAAK,UAAA,CAAW,CAAA,CAAGwL,EAAU,CACzB,UAAA,CACA,QAAA,CACA,YACJ,CAAC,CAAA,CACD,KAAK,eAAA,CAAgB,CAAA,CAAE,IAAA,CAAMA,CAAQ,EACzC,CAAC,EACDxL,CAAAA,CAAE,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAS,CAAA,EAAM,CAC1B,IAAA,CAAK,UAAA,CAAW,CAAA,CAAGwL,CAAAA,CAAU,CAAC,UAAA,CAAY,IAAI,CAAC,EACnD,CAAC,CAAA,CACDxL,CAAAA,CAAE,IAAA,CAAK,UAAA,CAAW,OAAA,CAAS,CAAA,EAAM,CAC7B,IAAA,CAAK,UAAA,CAAW,CAAA,CAAGwL,CAAAA,CAAU,CAAC,IAAI,CAAC,EACvC,CAAC,CAAA,CACDxL,CAAAA,CAAE,IAAA,CAAK,KAAA,CAAM,OAAA,CAAS,CAAA,EAAM,CACxB,IAAA,CAAK,UAAA,CAAW,CAAA,CAAGwL,CAAAA,CAAU,CAAC,IAAI,CAAC,EACvC,CAAC,CAAA,CACMxL,CAAAA,CAEX,KAAK0S,EAAkB,IAAA,CACvB,KAAKA,CAAAA,CAAkB,SAAA,CACvB,KAAKA,CAAAA,CAAkB,UACnB,OAAA1S,CAAAA,CAAE,IAAA,CAAK,SAAA,CAAU,OAAA,CAASqC,CAAAA,EAAM,CAC5B,IAAA,CAAK,UAAA,CAAWA,CAAAA,CAAGmJ,CAAAA,CAAU,CAAC,IAAI,CAAC,EACvC,CAAC,CAAA,CACMxL,CAAAA,CAEX,KAAK0S,CAAAA,CAAkB,cAAA,CACnB,OAAO,MAAA,CAEX,KAAKA,CAAAA,CAAkB,gBAAA,CACvB,KAAKA,CAAAA,CAAkB,gBAAA,CACvB,KAAKA,CAAAA,CAAkB,MAAA,CACvB,KAAKA,CAAAA,CAAkB,cAAA,CACvB,KAAKA,CAAAA,CAAkB,KAAA,CACnB,OAAA,IAAA,CAAK,UAAA,CAAW1S,CAAAA,CAAE,IAAA,CAAMwL,CAAAA,CAAU,CAAC,IAAI,CAAC,CAAA,CACjCxL,CAAAA,CAEX,KAAK0S,CAAAA,CAAkB,cAAA,CACvB,KAAKA,CAAAA,CAAkB,gBAAA,CACnB,OAAA,IAAA,CAAK,UAAA,CAAW1S,CAAAA,CAAE,IAAA,CAAMwL,EAAU,CAAC,IAAI,CAAC,CAAA,CACxC,IAAA,CAAK,eAAA,CAAgBxL,CAAAA,CAAE,IAAA,CAAMwL,CAAAA,CAAU,CAAC,SAAS,CAAC,CAAA,CAC3CxL,CAAAA,CAEX,KAAK0S,CAAAA,CAAkB,IAAA,CACnB,OAAO1S,CAAAA,CAEX,KAAK0S,CAAAA,CAAkB,SAAA,CACnB,OAAA1S,CAAAA,CAAE,IAAA,CAAK,MAAA,CAAO,OAAA,CAAS0c,CAAAA,EAAU,CAC7B,KAAK,UAAA,CAAWA,CAAAA,CAAOlR,CAAAA,CAAU,CAAC,OAAA,CAAS,KAAK,CAAC,EACrD,CAAC,CAAA,CACMxL,CAAAA,CAEX,KAAK0S,CAAAA,CAAkB,iBAAA,CACnB,YAAK,UAAA,CAAW1S,CAAAA,CAAE,IAAA,CAAMwL,CAAAA,CAAU,CAAC,IAAI,CAAC,CAAA,CACxC,IAAA,CAAK,eAAA,CAAgBxL,CAAAA,CAAE,IAAA,CAAMwL,CAAAA,CAAU,CAAC,UAAU,CAAC,CAAA,CAAA,CAClD5H,CAAAA,CAAK5D,CAAAA,CAAE,IAAA,CAAK,MAAA,IAAY,IAAA,EAAQ4D,CAAAA,GAAO,MAAA,EAAkBA,CAAAA,CAAG,OAAA,CAASob,CAAAA,EAAU,CAC5E,KAAK,eAAA,CAAgBA,CAAAA,CAAOxT,CAAAA,CAAU,CAAC,SAAS,CAAC,EACrD,CAAC,CAAA,CACMxL,CAEf,CAER,CACJ,CACA,OAAA,CAAQif,EAAcC,CAAAA,CAAK1T,CAAAA,CAAU2T,CAAAA,CAAM,CACvC,IAAA,IAAWte,CAAAA,IAAOse,CAAAA,CACV,CAAC,KAAA,CAAM,OAAA,CAAQD,CAAAA,CAAIre,CAAG,CAAC,CAAA,EAAK,OAAOqe,CAAAA,CAAIre,CAAG,CAAA,EAAM,QAAA,GAEhD,KAAA,CAAM,OAAA,CAAQqe,CAAAA,CAAIre,CAAG,CAAC,CAAA,CACtBqe,CAAAA,CAAIre,CAAG,CAAA,CAAIoe,CAAAA,CAAa,OAAOzT,CAAAA,CAAU0T,CAAAA,CAAIre,CAAG,CAAC,CAAA,CAGjDqe,CAAAA,CAAIre,CAAG,CAAA,CAAIoe,CAAAA,CAAa,KAAA,CAAMzT,CAAAA,CAAU0T,CAAAA,CAAIre,CAAG,CAAC,GAGxD,OAAOqe,CACX,CACA,UAAA,CAAWA,CAAAA,CAAK1T,CAAAA,CAAU2T,CAAAA,CAAM,CAC5B,OAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,uBAAA,CAAyBD,CAAAA,CAAK1T,EAAU2T,CAAI,CACzE,CACA,eAAA,CAAgBD,CAAAA,CAAK1T,CAAAA,CAAU2T,CAAAA,CAAM,CACjC,OAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,4BAAA,CAA8BD,CAAAA,CAAK1T,EAAU2T,CAAI,CAC9E,CACA,eAAA,CAAgBxY,CAAAA,CAAM6E,CAAAA,CAAU,CAC5B,IAAA,CAAK,UAAA,CAAW7E,CAAAA,CAAM6E,CAAAA,CAAU,CAAC,IAAI,CAAC,CAAA,CAClC,YAAA,GAAgB7E,CAAAA,EAChBA,CAAAA,CAAK,UAAA,CAAW,OAAA,CAASyY,CAAAA,EAAU,CAC/B,IAAA,CAAK,eAAA,CAAgBA,CAAAA,CAAO5T,CAAQ,EACxC,CAAC,EAET,CACJ,CAAA,CC9LA,IAAM6T,EAAAA,CAAN,KAAuB,CACnB,WAAA,CAAY9a,CAAAA,CAAS,CACjB,IAAA,CAAK,UAAA,CAAa,IAAI,OAAA,CACtB,IAAA,CAAK,eAAiB,EAAC,CACvB,IAAA,CAAK,UAAA,CAAaA,CAAAA,CAAQ,UAAA,CAC1B,IAAA,CAAK,QAAA,CAAWA,CAAAA,CAAQ,QAAA,CACxB,IAAA,CAAK,aAAA,CAAgBA,CAAAA,CAAQ,aAAA,CAC7B,KAAK,MAAA,CAASA,CAAAA,CAAQ,MAAA,CACtB,IAAM+a,CAAAA,CAAU,IAAA,CAChB,KAAK,cAAA,CAAe,IAAA,CAAKhO,EAAAA,CAAM,OAAA,CAAQ,SAAA,CAAW,cAAA,CAAgB,SAAUD,CAAAA,CAAU,CAClF,OAAO,SAAUkO,CAAAA,CAAQ,CACrB,IAAMzZ,CAAAA,CAAauL,CAAAA,CAAS,IAAA,CAAK,IAAA,CAAMkO,CAAM,CAAA,CAC7C,OAAI,KAAK,UAAA,EACLD,CAAAA,CAAQ,aAAA,CAAc,IAAA,CAAK,UAAA,CAAY,IAAA,CAAK,aAAa,CAAA,CACtDxZ,CACX,CACJ,CAAC,CAAC,EACN,CACA,cAAcA,CAAAA,CAAY+D,CAAAA,CAAK,CACtBhE,EAAAA,CAAkBC,CAAU,CAAA,GAE7B,IAAA,CAAK,UAAA,CAAW,GAAA,CAAIA,CAAU,CAAA,GAElC,IAAA,CAAK,UAAA,CAAW,GAAA,CAAIA,CAAU,CAAA,CAC9BoQ,EAAAA,CAAqB,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,EAAC,CAAG,IAAA,CAAK,aAAa,CAAA,CAAG,CAAE,GAAA,CAAArM,EAAK,UAAA,CAAY,IAAA,CAAK,UAAA,CAAY,MAAA,CAAQ,IAAA,CAAK,MAAA,CAAQ,gBAAA,CAAkB,IAAK,CAAC,CAAA,CAAG/D,CAAU,CAAA,CACxKgS,EAAAA,CAAmB,MAAA,CAAO,OAAO,MAAA,CAAO,MAAA,CAAO,EAAC,CAAG,IAAA,CAAK,aAAa,CAAA,CAAG,CAAE,QAAA,CAAU,IAAA,CAAK,QAAA,CAAU,GAAA,CAAKhS,CAAAA,CAAY,MAAA,CAAQ,KAAK,MAAO,CAAC,CAAC,CAAA,CAC1I,UAAA,CAAW,IAAM,CACTA,CAAAA,CAAW,kBAAA,EACXA,CAAAA,CAAW,kBAAA,CAAmB,MAAA,CAAS,CAAA,EACvC,IAAA,CAAK,cAAc,iBAAA,CAAkB,gBAAA,CAAiBA,CAAAA,CAAW,kBAAA,CAAoB,IAAA,CAAK,MAAA,CAAO,MAAMA,CAAAA,CAAW,IAAI,CAAC,CAAA,CAC3HyU,EAAAA,CAA8B,CAC1B,OAAQ,IAAA,CAAK,MAAA,CACb,iBAAA,CAAmB,IAAA,CAAK,aAAA,CAAc,iBAC1C,CAAA,CAAGzU,CAAU,EACjB,CAAA,CAAG,CAAC,CAAA,CAAA,EACR,CACA,mBAAA,CAAoB0Z,EAAe,CAC/B,GAAIA,CAAAA,CAAc,aAAA,CAAe,CAC7B,IAAMF,CAAAA,CAAU,IAAA,CAChB,IAAA,CAAK,cAAA,CAAe,IAAA,CAAKhO,EAAAA,CAAMkO,CAAAA,CAAc,aAAA,CAAc,YAAY,SAAA,CAAW,cAAA,CAAgB,SAAUnO,CAAAA,CAAU,CAClH,OAAO,SAAUkO,CAAAA,CAAQ,CACrB,IAAMzZ,CAAAA,CAAauL,CAAAA,CAAS,IAAA,CAAK,IAAA,CAAMkO,CAAM,CAAA,CAC7C,OAAI,IAAA,CAAK,UAAA,EACLD,CAAAA,CAAQ,aAAA,CAAc,KAAK,UAAA,CAAYE,CAAAA,CAAc,eAAe,CAAA,CACjE1Z,CACX,CACJ,CAAC,CAAC,EACN,CACJ,CACA,KAAA,EAAQ,CACJ,IAAA,CAAK,cAAA,CAAe,OAAA,CAAS2Z,CAAAA,EAAiBA,CAAAA,EAAc,CAAA,CAC5D,IAAA,CAAK,WAAa,IAAI,QAC1B,CACJ,CAAA,CC1CA,SAASC,EAAAA,CAAOjf,CAAAA,CAAG,CAAA,CAAG,CAClB,IAAIkf,CAAAA,CAAI,EAAC,CACT,IAAA,IAAStd,KAAK5B,CAAAA,CAAO,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAKA,CAAAA,CAAG4B,CAAC,CAAA,EAAK,CAAA,CAAE,OAAA,CAAQA,CAAC,CAAA,CAAI,CAAA,GAC9Esd,CAAAA,CAAEtd,CAAC,CAAA,CAAI5B,CAAAA,CAAE4B,CAAC,CAAA,CAAA,CACd,GAAI5B,CAAAA,EAAK,MAAQ,OAAO,MAAA,CAAO,qBAAA,EAA0B,UAAA,CACrD,IAAA,IAASF,CAAAA,CAAI,EAAG8B,CAAAA,CAAI,MAAA,CAAO,qBAAA,CAAsB5B,CAAC,CAAA,CAAGF,CAAAA,CAAI8B,CAAAA,CAAE,MAAA,CAAQ9B,CAAAA,EAAAA,CAC3D,CAAA,CAAE,OAAA,CAAQ8B,CAAAA,CAAE9B,CAAC,CAAC,EAAI,CAAA,EAAK,MAAA,CAAO,SAAA,CAAU,oBAAA,CAAqB,IAAA,CAAKE,CAAAA,CAAG4B,CAAAA,CAAE9B,CAAC,CAAC,CAAA,GACzEof,CAAAA,CAAEtd,CAAAA,CAAE9B,CAAC,CAAC,EAAIE,CAAAA,CAAE4B,CAAAA,CAAE9B,CAAC,CAAC,CAAA,CAAA,CAE5B,OAAOof,CACX,CAEA,SAASC,EAAAA,CAAUC,CAAAA,CAASC,CAAAA,CAAYC,CAAAA,CAAGC,CAAAA,CAAW,CAClD,SAASC,CAAAA,CAAMlf,CAAAA,CAAO,CAAE,OAAOA,CAAAA,YAAiBgf,EAAIhf,CAAAA,CAAQ,IAAIgf,CAAAA,CAAE,SAAUG,CAAAA,CAAS,CAAEA,EAAQnf,CAAK,EAAG,CAAC,CAAG,CAC3G,OAAO,IAAKgf,CAAAA,GAAMA,CAAAA,CAAI,OAAA,CAAA,EAAU,SAAUG,CAAAA,CAASC,CAAAA,CAAQ,CACvD,SAASC,CAAAA,CAAUrf,CAAAA,CAAO,CAAE,GAAI,CAAEsf,CAAAA,CAAKL,CAAAA,CAAU,IAAA,CAAKjf,CAAK,CAAC,EAAG,CAAA,MAASf,CAAAA,CAAG,CAAEmgB,EAAOngB,CAAC,EAAG,CAAE,CAC1F,SAASsgB,CAAAA,CAASvf,CAAAA,CAAO,CAAE,GAAI,CAAEsf,CAAAA,CAAKL,CAAAA,CAAU,KAAA,CAASjf,CAAK,CAAC,EAAG,CAAA,MAASf,CAAAA,CAAG,CAAEmgB,CAAAA,CAAOngB,CAAC,EAAG,CAAE,CAC7F,SAASqgB,CAAAA,CAAKzF,CAAAA,CAAQ,CAAEA,CAAAA,CAAO,KAAOsF,CAAAA,CAAQtF,CAAAA,CAAO,KAAK,CAAA,CAAIqF,CAAAA,CAAMrF,CAAAA,CAAO,KAAK,CAAA,CAAE,IAAA,CAAKwF,CAAAA,CAAWE,CAAQ,EAAG,CAC7GD,CAAAA,CAAAA,CAAML,EAAYA,CAAAA,CAAU,KAAA,CAAMH,CAAAA,CAAuB,EAAE,CAAA,EAAG,IAAA,EAAM,EACxE,CAAC,CACL,CC9BA,IAAI3V,GAAQ,kEAAA,CAERqW,EAAAA,CAAS,OAAO,UAAA,EAAe,WAAA,CAAc,EAAC,CAAI,IAAI,UAAA,CAAW,GAAG,CAAA,CACxE,IAAShgB,EAAAA,CAAI,CAAA,CAAGA,GAAI2J,EAAAA,CAAM,MAAA,CAAQ3J,EAAAA,EAAAA,CAC9BggB,EAAAA,CAAOrW,EAAAA,CAAM,UAAA,CAAW3J,EAAC,CAAC,CAAA,CAAIA,EAAAA,CADzB,IAAAA,EAAAA,CAGLigB,EAAAA,CAAS,SAAUC,CAAAA,CAAa,CAChC,IAAIC,CAAAA,CAAQ,IAAI,UAAA,CAAWD,CAAW,CAAA,CAAGlgB,CAAAA,CAAGkN,CAAAA,CAAMiT,CAAAA,CAAM,MAAA,CAAQC,CAAAA,CAAS,EAAA,CACzE,IAAKpgB,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIkN,CAAAA,CAAKlN,CAAAA,EAAK,CAAA,CACtBogB,CAAAA,EAAUzW,EAAAA,CAAMwW,CAAAA,CAAMngB,CAAC,CAAA,EAAK,CAAC,CAAA,CAC7BogB,CAAAA,EAAUzW,IAAQwW,CAAAA,CAAMngB,CAAC,CAAA,CAAI,CAAA,GAAM,CAAA,CAAMmgB,CAAAA,CAAMngB,CAAAA,CAAI,CAAC,CAAA,EAAK,CAAE,CAAA,CAC3DogB,CAAAA,EAAUzW,EAAAA,CAAAA,CAAQwW,CAAAA,CAAMngB,EAAI,CAAC,CAAA,CAAI,EAAA,GAAO,CAAA,CAAMmgB,CAAAA,CAAMngB,CAAAA,CAAI,CAAC,CAAA,EAAK,CAAE,CAAA,CAChEogB,CAAAA,EAAUzW,EAAAA,CAAMwW,CAAAA,CAAMngB,EAAI,CAAC,CAAA,CAAI,EAAE,CAAA,CAErC,OAAIkN,CAAAA,CAAM,CAAA,GAAM,CAAA,CACZkT,CAAAA,CAASA,CAAAA,CAAO,SAAA,CAAU,CAAA,CAAGA,CAAAA,CAAO,MAAA,CAAS,CAAC,CAAA,CAAI,GAAA,CAE7ClT,CAAAA,CAAM,CAAA,GAAM,CAAA,GACjBkT,CAAAA,CAASA,CAAAA,CAAO,SAAA,CAAU,CAAA,CAAGA,CAAAA,CAAO,MAAA,CAAS,CAAC,CAAA,CAAI,IAAA,CAAA,CAE/CA,CACX,CAAA,CCxBA,IAAMC,EAAAA,CAAe,IAAI,GAAA,CACzB,SAASC,EAAAA,CAAgBrZ,CAAAA,CAAKsZ,CAAAA,CAAM,CAChC,IAAIC,CAAAA,CAAaH,EAAAA,CAAa,GAAA,CAAIpZ,CAAG,CAAA,CACrC,OAAKuZ,CAAAA,GACDA,CAAAA,CAAa,IAAI,GAAA,CACjBH,GAAa,GAAA,CAAIpZ,CAAAA,CAAKuZ,CAAU,CAAA,CAAA,CAE/BA,CAAAA,CAAW,GAAA,CAAID,CAAI,CAAA,EACpBC,CAAAA,CAAW,GAAA,CAAID,CAAAA,CAAM,EAAE,CAAA,CAEpBC,CAAAA,CAAW,GAAA,CAAID,CAAI,CAC9B,CACA,IAAME,EAAAA,CAAe,CAACjgB,CAAAA,CAAO4K,CAAAA,CAAKnE,CAAAA,GAAQ,CACtC,GAAI,CAACzG,CAAAA,EACD,EAAEkgB,EAAAA,CAAwBlgB,CAAAA,CAAO4K,CAAG,CAAA,EAAK,OAAO5K,CAAAA,EAAU,UAC1D,OACJ,IAAM4J,CAAAA,CAAO5J,CAAAA,CAAM,WAAA,CAAY,IAAA,CACzBmgB,CAAAA,CAAOL,EAAAA,CAAgBrZ,CAAAA,CAAKmD,CAAI,CAAA,CAClCyI,CAAAA,CAAQ8N,CAAAA,CAAK,OAAA,CAAQngB,CAAK,CAAA,CAC9B,OAAIqS,CAAAA,GAAU,EAAA,GACVA,CAAAA,CAAQ8N,CAAAA,CAAK,OACbA,CAAAA,CAAK,IAAA,CAAKngB,CAAK,CAAA,CAAA,CAEZqS,CACX,CAAA,CACA,SAAS+N,EAAAA,CAAapgB,CAAAA,CAAO4K,CAAAA,CAAKnE,CAAAA,CAAK,CACnC,GAAIzG,CAAAA,YAAiB,KAAA,CACjB,OAAOA,CAAAA,CAAM,GAAA,CAAKqgB,CAAAA,EAAQD,EAAAA,CAAaC,CAAAA,CAAKzV,EAAKnE,CAAG,CAAC,CAAA,CAEpD,GAAIzG,CAAAA,GAAU,IAAA,CACf,OAAOA,CAAAA,CAEN,GAAIA,CAAAA,YAAiB,YAAA,EACtBA,CAAAA,YAAiB,YAAA,EACjBA,CAAAA,YAAiB,YACjBA,CAAAA,YAAiB,WAAA,EACjBA,CAAAA,YAAiB,UAAA,EACjBA,CAAAA,YAAiB,WAAA,EACjBA,CAAAA,YAAiB,UAAA,EACjBA,CAAAA,YAAiB,SAAA,EACjBA,CAAAA,YAAiB,iBAAA,CAEjB,OAAO,CACH,QAFSA,CAAAA,CAAM,WAAA,CAAY,IAAA,CAG3B,IAAA,CAAM,CAAC,MAAA,CAAO,OAAOA,CAAK,CAAC,CAC/B,CAAA,CAEC,GAAIA,CAAAA,YAAiB,YAAa,CACnC,IAAM4J,CAAAA,CAAO5J,CAAAA,CAAM,WAAA,CAAY,IAAA,CACzB4f,CAAAA,CAASH,EAAAA,CAAOzf,CAAK,CAAA,CAC3B,OAAO,CACH,OAAA,CAAS4J,CAAAA,CACT,OAAAgW,CACJ,CACJ,CAAA,KACK,CAAA,GAAI5f,CAAAA,YAAiB,QAAA,CAEtB,OAAO,CACH,OAAA,CAFSA,CAAAA,CAAM,WAAA,CAAY,IAAA,CAG3B,IAAA,CAAM,CACFogB,GAAapgB,CAAAA,CAAM,MAAA,CAAQ4K,CAAAA,CAAKnE,CAAG,CAAA,CACnCzG,CAAAA,CAAM,UAAA,CACNA,CAAAA,CAAM,UACV,CACJ,CAAA,CAEC,GAAIA,CAAAA,YAAiB,gBAAA,CAAkB,CACxC,IAAM4J,CAAAA,CAAO5J,CAAAA,CAAM,WAAA,CAAY,IAAA,CACzB,CAAE,IAAA8D,CAAI,CAAA,CAAI9D,CAAAA,CAChB,OAAO,CACH,OAAA,CAAS4J,EACT,GAAA,CAAA9F,CACJ,CACJ,CAAA,KAAA,GACS9D,CAAAA,YAAiB,iBAAA,CAAmB,CACzC,IAAM4J,CAAAA,CAAO,kBAAA,CACP9F,CAAAA,CAAM9D,CAAAA,CAAM,SAAA,EAAU,CAC5B,OAAO,CACH,OAAA,CAAS4J,CAAAA,CACT,GAAA,CAAA9F,CACJ,CACJ,CAAA,KACK,CAAA,GAAI9D,CAAAA,YAAiB,SAAA,CAEtB,OAAO,CACH,OAAA,CAFSA,CAAAA,CAAM,YAAY,IAAA,CAG3B,IAAA,CAAM,CAACogB,EAAAA,CAAapgB,CAAAA,CAAM,IAAA,CAAM4K,CAAAA,CAAKnE,CAAG,CAAA,CAAGzG,CAAAA,CAAM,KAAA,CAAOA,CAAAA,CAAM,MAAM,CACxE,EAEC,GAAIkgB,EAAAA,CAAwBlgB,CAAAA,CAAO4K,CAAG,CAAA,EAAK,OAAO5K,GAAU,QAAA,CAAU,CACvE,IAAM4J,CAAAA,CAAO5J,CAAAA,CAAM,WAAA,CAAY,KACzBqS,CAAAA,CAAQ4N,EAAAA,CAAajgB,CAAAA,CAAO4K,CAAAA,CAAKnE,CAAG,CAAA,CAC1C,OAAO,CACH,OAAA,CAASmD,CAAAA,CACT,KAAA,CAAOyI,CACX,CACJ,CAAA,CAAA,CACA,OAAOrS,CACX,CACA,IAAMsgB,EAAAA,CAAgB,CAACxe,CAAAA,CAAM8I,CAAAA,CAAKnE,CAAAA,GACvB,CAAC,GAAG3E,CAAI,CAAA,CAAE,GAAA,CAAKue,CAAAA,EAAQD,GAAaC,CAAAA,CAAKzV,CAAAA,CAAKnE,CAAG,CAAC,CAAA,CAEvDyZ,EAAAA,CAA0B,CAAClgB,CAAAA,CAAO4K,CAAAA,GAe7B,CAAA,CAduB,CAC1B,iBAAA,CACA,aAAA,CACA,kBAAA,CACA,eACA,mBAAA,CACA,aAAA,CACA,4BAAA,CACA,cAAA,CACA,sBAAA,CACA,wBAAA,CACA,2BACJ,CAAA,CAC6D,MAAA,CAAQhB,CAAAA,EAAS,OAAOgB,CAAAA,CAAIhB,CAAI,CAAA,EAAM,UAAU,CAAA,CAC/D,IAAA,CAAMA,CAAAA,EAAS5J,CAAAA,YAAiB4K,CAAAA,CAAIhB,CAAI,CAAC,CAAA,CCnH3F,SAAS2W,EAAAA,CAA6BxC,CAAAA,CAAInT,CAAAA,CAAKd,CAAAA,CAAYC,CAAAA,CAAe,CACtE,IAAMuM,CAAAA,CAAW,EAAC,CACZkK,CAAAA,CAAU,MAAA,CAAO,mBAAA,CAAoB5V,CAAAA,CAAI,wBAAA,CAAyB,SAAS,CAAA,CACjF,IAAA,IAAW+E,CAAAA,IAAQ6Q,CAAAA,CACf,GAAI,CACA,GAAI,OAAO5V,CAAAA,CAAI,wBAAA,CAAyB,SAAA,CAAU+E,CAAI,CAAA,EAAM,UAAA,CACxD,SAEJ,IAAMuL,CAAAA,CAAiB3K,EAAAA,CAAM3F,CAAAA,CAAI,yBAAyB,SAAA,CAAW+E,CAAAA,CAAM,SAAUW,CAAAA,CAAU,CAC3F,OAAO,YAAaxO,CAAAA,CAAM,CACtB,OAAK+O,CAAAA,CAAU,IAAA,CAAK,MAAA,CAAQ/G,EAAYC,CAAAA,CAAe,CAAA,CAAI,CAAA,EACvD,UAAA,CAAW,IAAM,CACb,IAAM0W,CAAAA,CAAaH,EAAAA,CAAc,CAAC,GAAGxe,CAAI,CAAA,CAAG8I,CAAAA,CAAK,IAAI,CAAA,CACrDmT,CAAAA,CAAG,IAAA,CAAK,MAAA,CAAQ,CACZ,IAAA,CAAMhM,EAAAA,CAAc,IAAI,CAAA,CACxB,QAAA,CAAUpC,CAAAA,CACV,IAAA,CAAM8Q,CACV,CAAC,EACL,CAAA,CAAG,CAAC,CAAA,CAEDnQ,CAAAA,CAAS,KAAA,CAAM,IAAA,CAAMxO,CAAI,CACpC,CACJ,CAAC,CAAA,CACDwU,CAAAA,CAAS,IAAA,CAAK4E,CAAc,EAChC,CAAA,MACOrY,CAAAA,CAAI,CACP,IAAM6d,CAAAA,CAAcvQ,EAAAA,CAAWvF,EAAI,wBAAA,CAAyB,SAAA,CAAW+E,CAAAA,CAAM,CACzE,GAAA,CAAI6H,CAAAA,CAAG,CACHuG,CAAAA,CAAG,IAAA,CAAK,MAAA,CAAQ,CACZ,IAAA,CAAMhM,EAAAA,CAAc,IAAI,CAAA,CACxB,QAAA,CAAUpC,CAAAA,CACV,IAAA,CAAM,CAAC6H,CAAC,CAAA,CACR,OAAQ,IACZ,CAAC,EACL,CACJ,CAAC,CAAA,CACDlB,CAAAA,CAAS,IAAA,CAAKoK,CAAW,EAC7B,CAEJ,OAAO,IAAM,CACTpK,EAAS,OAAA,CAASC,CAAAA,EAAMA,CAAAA,EAAG,EAC/B,CACJ,CC5CA,SAASoK,EAAAA,CAA0B/V,CAAAA,CAAKd,CAAAA,CAAYC,CAAAA,CAAe,CAC/D,IAAMuM,EAAW,EAAC,CAClB,GAAI,CACA,IAAM4E,CAAAA,CAAiB3K,GAAM3F,CAAAA,CAAI,iBAAA,CAAkB,SAAA,CAAW,YAAA,CAAc,SAAU0F,CAAAA,CAAU,CAC5F,OAAO,SAAUsQ,CAAAA,CAAAA,GAAgB9e,CAAAA,CAAM,CACnC,OAAK+O,CAAAA,CAAU,IAAA,CAAM/G,CAAAA,CAAYC,CAAAA,CAAe,CAAA,CAAI,CAAA,EAC1C,WAAA,GAAe,IAAA,GACjB,KAAK,SAAA,CAAY6W,CAAAA,CAAAA,CAElBtQ,CAAAA,CAAS,KAAA,CAAM,IAAA,CAAM,CAACsQ,CAAAA,CAAa,GAAG9e,CAAI,CAAC,CACtD,CACJ,CAAC,CAAA,CACDwU,EAAS,IAAA,CAAK4E,CAAc,EAChC,CAAA,MACOrY,CAAAA,CAAI,CACP,OAAA,CAAQ,KAAA,CAAM,wDAAwD,EAC1E,CACA,OAAO,IAAM,CACTyT,EAAS,OAAA,CAASC,CAAAA,EAAMA,CAAAA,EAAG,EAC/B,CACJ,CClBA,SAASsK,EAAAA,CAAiBC,CAAAA,CAAW3a,CAAAA,CAAM4X,CAAAA,CAAIjU,CAAAA,CAAYC,EAAewB,CAAAA,CAAQX,CAAAA,CAAK,CACnF,IAAM0L,CAAAA,CAAW,EAAC,CACZyK,CAAAA,CAAQ,MAAA,CAAO,mBAAA,CAAoBD,CAAS,CAAA,CAClD,IAAA,IAAWnR,CAAAA,IAAQoR,EACf,GAAI,CAAA,CACA,eAAA,CACA,QAAA,CACA,oBAAA,CACA,qBACJ,CAAA,CAAE,QAAA,CAASpR,CAAI,CAAA,CAGf,GAAI,CACA,GAAI,OAAOmR,EAAUnR,CAAI,CAAA,EAAM,UAAA,CAC3B,SAEJ,IAAMuL,CAAAA,CAAiB3K,EAAAA,CAAMuQ,CAAAA,CAAWnR,CAAAA,CAAM,SAAUW,CAAAA,CAAU,CAC9D,OAAO,SAAA,GAAaxO,EAAM,CACtB,IAAM+X,CAAAA,CAASvJ,CAAAA,CAAS,KAAA,CAAM,IAAA,CAAMxO,CAAI,CAAA,CAExC,GADAme,EAAAA,CAAapG,CAAAA,CAAQjP,CAAAA,CAAK,IAAI,EAC1B,CAACiG,CAAAA,CAAU,IAAA,CAAK,MAAA,CAAQ/G,CAAAA,CAAYC,CAAAA,CAAe,CAAA,CAAI,CAAA,CAAG,CAC1D,IAAM0W,CAAAA,CAAaH,EAAAA,CAAc,CAAC,GAAGxe,CAAI,CAAA,CAAG8I,CAAAA,CAAK,IAAI,CAAA,CAC/CoW,CAAAA,CAAW,CACb,IAAA,CAAA7a,CAAAA,CACA,QAAA,CAAUwJ,CAAAA,CACV,IAAA,CAAM8Q,CACV,CAAA,CACA1C,CAAAA,CAAG,KAAK,MAAA,CAAQiD,CAAQ,EAC5B,CACA,OAAOnH,CACX,CACJ,CAAC,CAAA,CACDvD,CAAAA,CAAS,IAAA,CAAK4E,CAAc,EAChC,CAAA,MACOrY,EAAI,CACP,IAAM6d,CAAAA,CAAcvQ,EAAAA,CAAW2Q,CAAAA,CAAWnR,CAAAA,CAAM,CAC5C,GAAA,CAAI6H,CAAAA,CAAG,CACHuG,CAAAA,CAAG,IAAA,CAAK,MAAA,CAAQ,CACZ,IAAA,CAAA5X,CAAAA,CACA,QAAA,CAAUwJ,CAAAA,CACV,IAAA,CAAM,CAAC6H,CAAC,CAAA,CACR,MAAA,CAAQ,IACZ,CAAC,EACL,CACJ,CAAC,EACDlB,CAAAA,CAAS,IAAA,CAAKoK,CAAW,EAC7B,CAEJ,OAAOpK,CACX,CACA,SAAS2K,EAAAA,CAAgClD,CAAAA,CAAInT,CAAAA,CAAKd,CAAAA,CAAYC,CAAAA,CAAewB,EAAQ,CACjF,IAAM+K,CAAAA,CAAW,EAAC,CAClB,OAAAA,CAAAA,CAAS,IAAA,CAAK,GAAGuK,EAAAA,CAAiBjW,CAAAA,CAAI,qBAAA,CAAsB,SAAA,CAAWmH,EAAAA,CAAc,MAAOgM,CAAAA,CAAIjU,CAAAA,CAAYC,CAAAA,CAAewB,CAAAA,CAAQX,CAAG,CAAC,EACnI,OAAOA,CAAAA,CAAI,sBAAA,EAA2B,WAAA,EACtC0L,CAAAA,CAAS,IAAA,CAAK,GAAGuK,EAAAA,CAAiBjW,CAAAA,CAAI,sBAAA,CAAuB,SAAA,CAAWmH,EAAAA,CAAc,MAAA,CAAQgM,CAAAA,CAAIjU,CAAAA,CAAYC,CAAAA,CAAewB,CAAAA,CAAQX,CAAG,CAAC,CAAA,CAEtI,IAAM,CACT0L,CAAAA,CAAS,OAAA,CAASC,CAAAA,EAAMA,CAAAA,EAAG,EAC/B,CACJ,CC/DA,IAAI2K,EAAAA,CAAc,IAAA,CAElB,GAAI,CACIC,EAAAA,CACA,OAAO,MAAA,EAAW,WAAA,EAAe,OAAO,MAAA,CAAO,OAAA,EAAY,UAAA,EAAc,MAAA,CAAO,OAAA,CAAQ,gBAAgB,CAAA,EACxG,OAAO,uBAAA,EAA4B,UAAA,EAAc,uBAAA,CAAwB,gBAAgB,CAAA,EACzF,OAAOC,EAAAA,EAAY,UAAA,EAAc,EAAA,CAAQ,gBAAgB,CAAA,CAC7DF,EAAAA,CAAcC,EAAAA,CAAc,OAChC,CAAA,MAAQliB,CAAAA,CAAG,CAAC,CALJ,IAAAkiB,EAAAA,CCDR,SAASE,EAAAA,CAAazB,CAAAA,CAAQ0B,CAAAA,CAAe,CACzC,OAAO,MAAA,CAAO,IAAA,CAAK1B,CAAAA,CAAQ,QAAQ,CAAA,CAAE,QAAA,CAAmC,MAAM,CAClF,CAEA,SAAS2B,EAAAA,CAA0B3B,CAAAA,CAAQ4B,CAAAA,CAAcC,CAAAA,CAAkB,CACvE,IAEIjR,CAAAA,CAAS6Q,EAAAA,CAAazB,CAAqB,CAAA,CAC3C8B,CAAAA,CAAQlR,CAAAA,CAAO,OAAA,CAAQ;AAAA,CAAA,CAAM,EAAE,CAAA,CAAI,CAAA,CACnChM,CAAAA,CAAOgM,CAAAA,CAAO,UAAUkR,CAAK,CAAA,EAAyD,EAAA,EAC1F,OAAO,SAAuBle,CAAAA,CAAS,CACnC,OAAO,IAAI0d,EAAAA,CAAY1c,EAAM,MAAA,CAAO,MAAA,CAAO,EAAC,CAAGhB,CAAAA,CAAS,CAAE,KAAM,IAAK,CAAC,CAAC,CAC3E,CACJ,CCfA,SAAS6d,EAAAA,CAAazB,CAAAA,CAAQ0B,CAAAA,CAAe,CACzC,IAAIK,CAAAA,CAAe,KAAK/B,CAAM,CAAA,CAQ9B,OAAO+B,CACX,CAEA,SAASC,EAAAA,CAAUhC,CAAAA,CAAQ4B,CAAAA,CAAcC,CAAAA,CAAkB,CACvD,IAEIjR,CAAAA,CAAS6Q,EAAAA,CAAazB,CAAqB,CAAA,CAC3C8B,CAAAA,CAAQlR,CAAAA,CAAO,OAAA,CAAQ;AAAA,CAAA,CAAM,EAAE,CAAA,CAAI,CAAA,CACnChM,CAAAA,CAAOgM,CAAAA,CAAO,UAAUkR,CAAK,CAAA,EAAyD,EAAA,CAAA,CACtFG,CAAAA,CAAO,IAAI,IAAA,CAAK,CAACrd,CAAI,CAAA,CAAG,CAAE,IAAA,CAAM,wBAAyB,CAAC,EAC9D,OAAO,GAAA,CAAI,eAAA,CAAgBqd,CAAI,CACnC,CAEA,SAASN,EAAAA,CAA0B3B,EAAQ4B,CAAAA,CAAcC,CAAAA,CAAkB,CACvE,IAAI5gB,CAAAA,CACJ,OAAO,SAAuB2C,CAAAA,CAAS,CACnC,OAAA3C,EAAMA,CAAAA,EAAO+gB,EAAAA,CAAUhC,CAAsC,CAAA,CACtD,IAAI,MAAA,CAAO/e,CAAAA,CAAK2C,CAAO,CAClC,CACJ,CC5BA,IAAIse,EAAAA,CAAY,OAAO,SAAA,CAAU,QAAA,CAAS,IAAA,CAAK,OAAO,SAAY,WAAA,CAAc,OAAA,CAAU,CAAC,CAAA,GAAM,kBAAA,CAEjG,SAASC,EAAAA,EAAW,CAChB,OAAOD,EACX,CCAA,SAASP,EAAAA,CAA0B3B,EAAQ4B,CAAAA,CAAcC,CAAAA,CAAkB,CACvE,OAAIM,EAAAA,EAAS,CACFR,EAAAA,CAA4B3B,CAAsC,CAAA,CAEtE2B,EAAAA,CAA4B3B,CAAsC,CAC7E,CCPA,IAAIoC,EAAAA,CAAgBT,EAAAA,CAA0B,kyNAA+yN,ECM71N,IAAMU,EAAAA,CAAN,KAAoB,CAChB,YAAYze,CAAAA,CAAS,CACjB,IAAA,CAAK,sBAAA,CAAyB,IAAI,GAAA,CAClC,IAAA,CAAK,SAAA,CAAY,CAAE,SAAU,CAAA,CAAG,QAAA,CAAU,IAAK,CAAA,CAC/C,IAAA,CAAK,OAAS,KAAA,CACd,IAAA,CAAK,MAAA,CAAS,KAAA,CACd,KAAK,eAAA,CAAkB,CAACjB,CAAAA,CAAQye,CAAAA,GAAa,EACxB,IAAA,CAAK,SAAA,CAAU,QAAA,EAC5B,IAAA,CAAK,UAAU,QAAA,GAAa,IAAA,CAAK,UAAU,QAAA,EAC/B,CAAC,KAAK,SAAA,CAAU,QAAA,IAC5B,IAAA,CAAK,SAAA,CAAU,SAAW,IAAA,CAAK,SAAA,CAAU,UACxC,IAAA,CAAK,sBAAA,CAAuB,IAAIze,CAAM,CAAA,EACvC,IAAA,CAAK,sBAAA,CAAuB,IAAIA,CAAAA,CAAQ,EAAE,CAAA,CAE9C,IAAA,CAAK,uBAAuB,GAAA,CAAIA,CAAM,CAAA,CAAE,IAAA,CAAKye,CAAQ,EACzD,CAAA,CACA,GAAM,CAAE,SAAArL,CAAAA,CAAW,KAAA,CAAO,GAAA,CAAA/K,CAAAA,CAAK,WAAAd,CAAAA,CAAY,aAAA,CAAAC,EAAe,YAAA,CAAA6B,CAAAA,CAAc,eAAAF,CAAgB,CAAA,CAAIlI,CAAAA,CAC5F,IAAA,CAAK,WAAaA,CAAAA,CAAQ,UAAA,CAC1B,IAAA,CAAK,MAAA,CAASA,EAAQ,MAAA,CAClBoI,CAAAA,EAAgB+J,CAAAA,GAAa,KAAA,EAC7B,KAAK,0BAAA,CAA2B/K,CAAAA,CAAKd,EAAYC,CAAa,CAAA,CAC9D6B,GAAgB,OAAO+J,CAAAA,EAAa,QAAA,EACpC,IAAA,CAAK,sBAAsBA,CAAAA,CAAU/K,CAAAA,CAAKd,CAAAA,CAAYC,CAAAA,CAAe,CACjE,cAAA,CAAA2B,CACJ,CAAC,EACT,CACA,KAAA,EAAQ,CACJ,KAAK,sBAAA,CAAuB,KAAA,GAC5B,IAAA,CAAK,cAAA,EAAkB,IAAA,CAAK,cAAA,GAChC,CACA,MAAA,EAAS,CACL,IAAA,CAAK,MAAA,CAAS,KAClB,CACA,QAAA,EAAW,CACP,IAAA,CAAK,OAAS,MAClB,CACA,MAAO,CACH,IAAA,CAAK,OAAS,KAClB,CACA,MAAA,EAAS,CACL,KAAK,MAAA,CAAS,MAClB,CACA,qBAAA,CAAsBwW,EAAKtX,CAAAA,CAAKd,CAAAA,CAAYC,CAAAA,CAAevG,CAAAA,CAAS,CAChE,IAAM2e,CAAAA,CAAqBxB,GAA0B/V,CAAAA,CAAKd,CAAAA,CAAYC,CAAa,CAAA,CAC7EqY,CAAAA,CAAwB,IAAI,GAAA,CAC5BC,EAAS,IAAIL,EAAAA,CACnBK,CAAAA,CAAO,SAAA,CAAapjB,GAAM,CACtB,GAAM,CAAE,EAAA,CAAAD,CAAG,CAAA,CAAIC,CAAAA,CAAE,KAEjB,GADAmjB,CAAAA,CAAsB,IAAIpjB,CAAAA,CAAI,KAAK,CAAA,CAC/B,EAAE,WAAYC,CAAAA,CAAE,IAAA,CAAA,CAChB,OACJ,GAAM,CAAE,MAAA,CAAA2gB,CAAAA,CAAQ,IAAA,CAAAzZ,CAAAA,CAAM,MAAAiH,CAAAA,CAAO,MAAA,CAAAC,CAAO,CAAA,CAAIpO,CAAAA,CAAE,KAC1C,IAAA,CAAK,UAAA,CAAW,CACZ,EAAA,CAAAD,EACA,IAAA,CAAM+S,EAAAA,CAAc,IAAI,CAAA,CACxB,QAAA,CAAU,CACN,CACI,QAAA,CAAU,WAAA,CACV,IAAA,CAAM,CAAC,CAAA,CAAG,CAAA,CAAG3E,EAAOC,CAAM,CAC9B,EACA,CACI,QAAA,CAAU,WAAA,CACV,IAAA,CAAM,CACF,CACI,OAAA,CAAS,aAAA,CACT,IAAA,CAAM,CACF,CACI,OAAA,CAAS,MAAA,CACT,IAAA,CAAM,CAAC,CAAE,OAAA,CAAS,cAAe,MAAA,CAAAuS,CAAO,CAAC,CAAA,CACzC,IAAA,CAAAzZ,CACJ,CACJ,CACJ,CAAA,CACA,CAAA,CACA,CACJ,CACJ,CACJ,CACJ,CAAC,EACL,CAAA,CACA,IAAMmc,CAAAA,CAAuB,GAAA,CAAOJ,EAChCK,CAAAA,CAAmB,CAAA,CACnBC,EACEC,CAAAA,CAAY,IAAM,CACpB,IAAMC,EAAgB,EAAC,CACvB,OAAA9X,CAAAA,CAAI,SAAS,gBAAA,CAAiB,QAAQ,CAAA,CAAE,OAAA,CAASpE,GAAW,CACnDqK,CAAAA,CAAUrK,EAAQsD,CAAAA,CAAYC,CAAAA,CAAe,IAAI,CAAA,EAClD2Y,CAAAA,CAAc,IAAA,CAAKlc,CAAM,EAEjC,CAAC,CAAA,CACMkc,CACX,CAAA,CACMC,CAAAA,CAAuBC,GAAc,CACvC,GAAIL,CAAAA,EACAK,CAAAA,CAAYL,EAAmBD,CAAAA,CAAsB,CACrDE,EAAQ,qBAAA,CAAsBG,CAAmB,EACjD,MACJ,CACAJ,CAAAA,CAAmBK,CAAAA,CACnBH,GAAU,CACL,OAAA,CAASjc,CAAAA,EAAWqY,EAAAA,CAAU,KAAM,MAAA,CAAQ,MAAA,CAAQ,WAAa,CAClE,IAAIhc,CAAAA,CACJ,IAAM7D,EAAK,IAAA,CAAK,MAAA,CAAO,MAAMwH,CAAM,CAAA,CACnC,GAAI4b,CAAAA,CAAsB,IAAIpjB,CAAE,CAAA,CAC5B,OAEJ,GADAojB,EAAsB,GAAA,CAAIpjB,CAAAA,CAAI,IAAI,CAAA,CAC9B,CAAC,OAAA,CAAS,QAAQ,EAAE,QAAA,CAASwH,CAAAA,CAAO,SAAS,CAAA,CAAG,CAChD,IAAM0J,CAAAA,CAAU1J,EAAO,UAAA,CAAWA,CAAAA,CAAO,SAAS,CAAA,CAAA,CAAA,CAC5C3D,EAAKqN,CAAAA,EAAY,IAAA,CAA6B,MAAA,CAASA,CAAAA,CAAQ,sBAAqB,IAAO,IAAA,EAAQrN,IAAO,MAAA,CAAS,MAAA,CAASA,EAAG,qBAAA,IAA2B,KAAA,GAC5JqN,CAAAA,EAAY,IAAA,EAAsCA,EAAQ,KAAA,CAAMA,CAAAA,CAAQ,gBAAgB,CAAA,EAEhG,CACA,IAAM2S,CAAAA,CAAS,MAAM,iBAAA,CAAkBrc,CAAM,EAC7C6b,CAAAA,CAAO,WAAA,CAAY,CACf,EAAA,CAAArjB,CAAAA,CACA,OAAA6jB,CAAAA,CACA,KAAA,CAAOrc,CAAAA,CAAO,KAAA,CACd,OAAQA,CAAAA,CAAO,MAAA,CACf,cAAA,CAAgBhD,CAAAA,CAAQ,cAC5B,CAAA,CAAG,CAACqf,CAAM,CAAC,EACf,CAAC,CAAC,EACFL,CAAAA,CAAQ,qBAAA,CAAsBG,CAAmB,EACrD,CAAA,CACAH,CAAAA,CAAQ,qBAAA,CAAsBG,CAAmB,CAAA,CACjD,IAAA,CAAK,cAAA,CAAiB,IAAM,CACxBR,CAAAA,EAAmB,CACnB,oBAAA,CAAqBK,CAAK,EAC9B,EACJ,CACA,2BAA2B5X,CAAAA,CAAKd,CAAAA,CAAYC,EAAe,CACvD,IAAA,CAAK,oBAAA,EAAqB,CAC1B,KAAK,iCAAA,EAAkC,CACvC,IAAMoY,CAAAA,CAAqBxB,GAA0B/V,CAAAA,CAAKd,CAAAA,CAAYC,CAAa,CAAA,CAC7E+Y,EAAgBvC,EAAAA,CAA6B,IAAA,CAAK,gBAAgB,IAAA,CAAK,IAAI,EAAG3V,CAAAA,CAAKd,CAAAA,CAAYC,CAAa,CAAA,CAC5GgZ,EAAwB9B,EAAAA,CAAgC,IAAA,CAAK,gBAAgB,IAAA,CAAK,IAAI,EAAGrW,CAAAA,CAAKd,CAAAA,CAAYC,CAAAA,CAAe,IAAA,CAAK,MAAM,CAAA,CAC1I,IAAA,CAAK,eAAiB,IAAM,CACxBoY,GAAmB,CACnBW,CAAAA,EAAc,CACdC,CAAAA,GACJ,EACJ,CACA,iCAAA,EAAoC,CAChC,sBAAsB,IAAM,IAAA,CAAK,2BAAA,EAA6B,EAClE,CACA,oBAAA,EAAuB,CACnB,IAAMC,CAAAA,CAAyBJ,GAAc,CACzC,IAAA,CAAK,SAAA,CAAU,QAAA,CAAWA,EAC1B,qBAAA,CAAsBI,CAAqB,EAC/C,CAAA,CACA,sBAAsBA,CAAqB,EAC/C,CACA,2BAAA,EAA8B,CAC1B,IAAA,CAAK,sBAAA,CAAuB,QAAQ,CAACC,CAAAA,CAAQzc,IAAW,CACpD,IAAMxH,CAAAA,CAAK,IAAA,CAAK,OAAO,KAAA,CAAMwH,CAAM,CAAA,CACnC,IAAA,CAAK,8BAA8BA,CAAAA,CAAQxH,CAAE,EACjD,CAAC,EACD,qBAAA,CAAsB,IAAM,KAAK,2BAAA,EAA6B,EAClE,CACA,6BAAA,CAA8BwH,CAAAA,CAAQxH,CAAAA,CAAI,CACtC,GAAI,IAAA,CAAK,QAAU,IAAA,CAAK,MAAA,CACpB,OAEJ,IAAMkkB,CAAAA,CAAiB,IAAA,CAAK,sBAAA,CAAuB,IAAI1c,CAAM,CAAA,CAC7D,GAAI,CAAC0c,CAAAA,EAAkBlkB,IAAO,EAAA,CAC1B,OACJ,IAAMikB,CAAAA,CAASC,EAAe,GAAA,CAAKljB,CAAAA,EAClB2e,EAAAA,CAAO3e,CAAAA,CAAO,CAAC,MAAM,CAAC,CAEtC,CAAA,CACK,CAAE,IAAA,CAAAmG,CAAK,EAAI+c,CAAAA,CAAe,CAAC,EACjC,IAAA,CAAK,UAAA,CAAW,CAAE,EAAA,CAAAlkB,EAAI,IAAA,CAAAmH,CAAAA,CAAM,QAAA,CAAU8c,CAAO,CAAC,CAAA,CAC9C,IAAA,CAAK,sBAAA,CAAuB,MAAA,CAAOzc,CAAM,EAC7C,CACJ,EClLA,IAAM2c,EAAAA,CAAN,KAAwB,CACpB,WAAA,CAAY3f,CAAAA,CAAS,CACjB,KAAK,mBAAA,CAAsB,IAAI,OAAA,CAC/B,IAAA,CAAK,YAAc,IAAI+N,EAAAA,CACvB,IAAA,CAAK,UAAA,CAAa/N,EAAQ,UAAA,CAC1B,IAAA,CAAK,oBAAsBA,CAAAA,CAAQ,oBACvC,CACA,iBAAA,CAAkB4f,CAAAA,CAAQ/P,CAAAA,CAAS,CAC3B,aAAcA,CAAAA,CAAQ,UAAA,EACtB,KAAK,UAAA,CAAW,CACZ,KAAM,EAAC,CACP,OAAA,CAAS,GACT,KAAA,CAAO,GACP,UAAA,CAAY,CACR,CACI,EAAA,CAAIA,CAAAA,CAAQ,EAAA,CACZ,UAAA,CAAYA,EACP,UACT,CACJ,CACJ,CAAC,EACL,IAAA,CAAK,gBAAA,CAAiB+P,CAAM,EAChC,CACA,gBAAA,CAAiBA,CAAAA,CAAQ,CACjB,IAAA,CAAK,mBAAA,CAAoB,IAAIA,CAAM,CAAA,GAEvC,IAAA,CAAK,mBAAA,CAAoB,IAAIA,CAAM,CAAA,CACnC,IAAA,CAAK,4BAAA,CAA6BA,CAAM,CAAA,EAC5C,CACA,gBAAA,CAAiBxJ,CAAAA,CAAQH,EAAQ,CAC7B,GAAIG,EAAO,MAAA,GAAW,CAAA,CAClB,OACJ,IAAMyJ,CAAAA,CAAwB,CAC1B,EAAA,CAAI5J,EACJ,QAAA,CAAU,EACd,CAAA,CACM6J,EAAS,EAAC,CAChB,IAAA,IAAW/b,CAAAA,IAASqS,EAAQ,CACxB,IAAIf,EACJ,GAAK,IAAA,CAAK,YAAY,GAAA,CAAItR,CAAK,CAAA,CAc3BsR,CAAAA,CAAU,KAAK,WAAA,CAAY,KAAA,CAAMtR,CAAK,CAAA,CAAA,KAdR,CAC9BsR,EAAU,IAAA,CAAK,WAAA,CAAY,GAAA,CAAItR,CAAK,EACpC,IAAMpC,CAAAA,CAAQ,MAAM,IAAA,CAAKoC,CAAAA,CAAM,OAAS,OAAO,CAAA,CAC/C+b,CAAAA,CAAO,IAAA,CAAK,CACR,OAAA,CAAAzK,CAAAA,CACA,KAAA,CAAO1T,CAAAA,CAAM,IAAI,CAACtG,CAAAA,CAAGwT,CAAAA,IACV,CACH,KAAMjN,EAAAA,CAAiBvG,CAAC,EACxB,KAAA,CAAAwT,CACJ,EACH,CACL,CAAC,EACL,CAGAgR,EAAsB,QAAA,CAAS,IAAA,CAAKxK,CAAO,EAC/C,CACIyK,CAAAA,CAAO,MAAA,CAAS,CAAA,GAChBD,CAAAA,CAAsB,OAASC,CAAAA,CAAAA,CACnC,IAAA,CAAK,oBAAoBD,CAAqB,EAClD,CACA,KAAA,EAAQ,CACJ,IAAA,CAAK,WAAA,CAAY,OAAM,CACvB,IAAA,CAAK,mBAAA,CAAsB,IAAI,QACnC,CACA,4BAAA,CAA6BD,CAAAA,CAAQ,CACrC,CACJ,CAAA,CC5DA,SAASG,EAAUtkB,CAAAA,CAAG,CAClB,OAAO,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,EAAC,CAAGA,CAAC,EAAG,CAAE,SAAA,CAAW,KAAK,GAAA,EAAM,CAAC,CACxE,CACA,IAAIukB,CAAAA,CACAC,GACAC,EAAAA,CACAC,EAAAA,CAAY,MACVpY,EAAAA,CAASxF,EAAAA,EAAa,CAC5B,SAAS6d,GAAOpgB,CAAAA,CAAU,EAAC,CAAG,CAC1B,GAAM,CAAE,IAAA,CAAAjD,CAAAA,CAAM,gBAAA,CAAAsjB,EAAkB,gBAAA,CAAAC,CAAAA,CAAkB,WAAAha,CAAAA,CAAa,UAAA,CAAY,cAAAC,CAAAA,CAAgB,IAAA,CAAM,WAAA,CAAA+N,CAAAA,CAAc,YAAa,aAAA,CAAAxN,CAAAA,CAAgB,SAAA,CAAW,gBAAA,CAAAC,EAAmB,IAAA,CAAM,gBAAA,CAAAiB,CAAAA,CAAmB,IAAA,CAAM,cAAA8D,CAAAA,CAAe,gBAAA,CAAkByU,EAAmB,cAAA,CAAgBC,CAAAA,CAAiB,YAAA5d,CAAAA,CAAa,UAAA,CAAAqF,CAAAA,CAAY,KAAA,CAAAyQ,EAAO,MAAA,CAAA+H,CAAAA,CAAQ,QAAA,CAAAtO,CAAAA,CAAW,EAAC,CAAG,cAAA,CAAAjK,CAAAA,CAAiB,GAAI,aAAA,CAAAwY,CAAAA,CAAe,aAAAtY,CAAAA,CAAe,KAAA,CAAO,yBAAAuY,CAAAA,CAA2B,KAAA,CAAO,oBAAA,CAAApM,CAAAA,CAAuB,MAAO,YAAA,CAAAqM,CAAAA,CAAe,MAAO,YAAA,CAAAzY,CAAAA,CAAe,MAAO,OAAA,CAAA0Y,CAAAA,CAAS,eAAA,CAAAxY,CAAAA,CAAkB,IAAM,KAAA,CAAO,mBAAA,CAAAmO,EAAsB,IAAI,GAAA,CAAI,EAAE,CAAG,CAAA,CAAIxW,CAAAA,CACpkB8gB,EAAkBH,CAAAA,CAClB,MAAA,CAAO,MAAA,GAAW,MAAA,CAClB,KACFI,CAAAA,CAAoB,KAAA,CACxB,GAAI,CAACD,EACD,GAAI,CACA,OAAO,MAAA,CAAO,QAAA,CACdC,EAAoB,CAAA,EACxB,CAAA,MACOtlB,CAAAA,CAAG,CACNslB,EAAoB,KACxB,CAEJ,GAAID,CAAAA,EAAmB,CAAC/jB,CAAAA,CACpB,MAAM,IAAI,KAAA,CAAM,2BAA2B,CAAA,CAE3C2jB,CAAAA,GAAkB,QAAavO,CAAAA,CAAS,SAAA,GAAc,SACtDA,CAAAA,CAAS,SAAA,CAAYuO,CAAAA,CAAAA,CAEzB3Y,EAAAA,CAAO,OAAM,CACb,IAAMtF,CAAAA,CAAmBqJ,CAAAA,GAAkB,KACrC,CACE,KAAA,CAAO,IAAA,CACP,IAAA,CAAM,KACN,gBAAA,CAAkB,IAAA,CAClB,MAAO,IAAA,CACP,KAAA,CAAO,KACP,MAAA,CAAQ,IAAA,CACR,KAAA,CAAO,IAAA,CACP,OAAQ,IAAA,CACR,GAAA,CAAK,KACL,IAAA,CAAM,IAAA,CACN,KAAM,IAAA,CACN,GAAA,CAAK,IAAA,CACL,IAAA,CAAM,KACN,QAAA,CAAU,IAAA,CACV,OAAQ,IAAA,CACR,QAAA,CAAU,IACd,CAAA,CACEyU,CAAAA,GAAsB,MAAA,CAClBA,CAAAA,CACA,CAAE,QAAA,CAAU,IAAK,CAAA,CACrBrW,CAAAA,CAAiBsW,IAAoB,IAAA,EAAQA,CAAAA,GAAoB,KAAA,CACjE,CACE,OAAQ,IAAA,CACR,OAAA,CAAS,KACT,WAAA,CAAa,IAAA,CACb,eAAgB,IAAA,CAChB,cAAA,CAAgB,IAAA,CAChB,cAAA,CAAgB,KAChB,iBAAA,CAAmB,IAAA,CACnB,oBAAA,CAAsB,IAAA,CACtB,mBAAoBA,CAAAA,GAAoB,KAAA,CACxC,oBAAA,CAAsBA,CAAAA,GAAoB,KAC9C,CAAA,CACEA,CAAAA,EAEI,EAAC,CACX7S,EAAAA,GACA,IAAIqT,CAAAA,CACAC,EAAAA,CAA2B,CAAA,CACzBC,GAAkBzlB,CAAAA,EAAM,CAC1B,IAAA,IAAWke,CAAAA,IAAUkH,GAAW,EAAC,CACzBlH,CAAAA,CAAO,cAAA,GACPle,EAAIke,CAAAA,CAAO,cAAA,CAAele,CAAC,CAAA,CAAA,CAGnC,OAAIglB,IACAhlB,CAAAA,CAAIglB,CAAAA,CAAOhlB,CAAC,CAAA,CAAA,CAETA,CACX,CAAA,CACAukB,CAAAA,CAAc,CAACvkB,CAAAA,CAAG0lB,CAAAA,GAAe,CAC7B,IAAI9hB,CAAAA,CAOJ,GANM,EAAA,CAAAA,EAAKgS,EAAAA,CAAgB,CAAC,KAAO,IAAA,EAAQhS,CAAAA,GAAO,SAAkBA,CAAAA,CAAG,QAAA,EAAS,EAC5E5D,CAAAA,CAAE,OAASwS,CAAAA,CAAU,YAAA,EACrB,EAAExS,CAAAA,CAAE,OAASwS,CAAAA,CAAU,mBAAA,EACnBxS,CAAAA,CAAE,IAAA,CAAK,SAAW0S,CAAAA,CAAkB,QAAA,CAAA,EACxCkD,GAAgB,OAAA,CAAS+P,CAAAA,EAAQA,EAAI,QAAA,EAAU,CAAA,CAE/CN,CAAAA,CACA/jB,GAAS,IAAA,EAAmCA,CAAAA,CAAKmkB,EAAAA,CAAezlB,CAAC,EAAG0lB,CAAU,CAAA,CAAA,KAAA,GAEzEJ,CAAAA,CAAmB,CACxB,IAAMpgB,CAAAA,CAAU,CACZ,KAAM,OAAA,CACN,KAAA,CAAOugB,GAAezlB,CAAC,CAAA,CACvB,UAAA,CAAA0lB,CACJ,EACA,MAAA,CAAO,MAAA,CAAO,WAAA,CAAYxgB,CAAAA,CAAS,GAAG,EAC1C,CACA,GAAIlF,CAAAA,CAAE,OAASwS,CAAAA,CAAU,YAAA,CACrB+S,EAAwBvlB,CAAAA,CACxBwlB,EAAAA,CAA2B,UAEtBxlB,CAAAA,CAAE,IAAA,GAASwS,CAAAA,CAAU,mBAAA,CAAqB,CAC/C,GAAIxS,CAAAA,CAAE,KAAK,MAAA,GAAW0S,CAAAA,CAAkB,UACpC1S,CAAAA,CAAE,IAAA,CAAK,cAAA,CACP,OAEJwlB,KACA,IAAMI,CAAAA,CAAcf,GAAoBW,EAAAA,EAA4BX,CAAAA,CAC9DgB,EAAajB,CAAAA,EACf5kB,CAAAA,CAAE,SAAA,CAAYulB,CAAAA,CAAsB,UAAYX,CAAAA,CAAAA,CAChDgB,CAAAA,EAAeC,CAAAA,GACfrB,EAAAA,CAAiB,IAAI,EAE7B,CACJ,CAAA,CACA,IAAMsB,EAAuBlR,CAAAA,EAAM,CAC/B2P,EAAYD,CAAAA,CAAU,CAClB,KAAM9R,CAAAA,CAAU,mBAAA,CAChB,IAAA,CAAM,MAAA,CAAO,OAAO,CAAE,MAAA,CAAQE,EAAkB,QAAS,CAAA,CAAGkC,CAAC,CACjE,CAAC,CAAC,EACN,EACMmR,CAAAA,CAAqB1jB,CAAAA,EAAMkiB,EAAYD,CAAAA,CAAU,CACnD,KAAM9R,CAAAA,CAAU,mBAAA,CAChB,IAAA,CAAM,MAAA,CAAO,OAAO,CAAE,MAAA,CAAQE,CAAAA,CAAkB,MAAO,EAAGrQ,CAAC,CAC/D,CAAC,CAAC,EACI2jB,EAAAA,CAA6B3jB,CAAAA,EAAMkiB,EAAYD,CAAAA,CAAU,CAC3D,KAAM9R,CAAAA,CAAU,mBAAA,CAChB,IAAA,CAAM,MAAA,CAAO,OAAO,CAAE,MAAA,CAAQE,EAAkB,cAAe,CAAA,CAAGrQ,CAAC,CACvE,CAAC,CAAC,CAAA,CACI4jB,EAAgC5gB,CAAAA,EAAMkf,CAAAA,CAAYD,EAAU,CAC9D,IAAA,CAAM9R,EAAU,mBAAA,CAChB,IAAA,CAAM,MAAA,CAAO,MAAA,CAAO,CAAE,MAAA,CAAQE,CAAAA,CAAkB,iBAAkB,CAAA,CAAGrN,CAAC,CAC1E,CAAC,CAAC,CAAA,CACI0U,EAAoB,IAAImK,EAAAA,CAAkB,CAC5C,UAAA,CAAY4B,CAAAA,CACZ,oBAAqBG,CACzB,CAAC,CAAA,CACKC,EAAAA,CAAgB,IAAIrH,EAAAA,CAAc,CACpC,MAAA,CAAAvS,EAAAA,CACA,WAAYwZ,CAAAA,CACZ,iBAAA,CAAmB/L,CAAAA,CACnB,wBAAA,CAAAmL,EACA,WAAA,CAAAX,CACJ,CAAC,CAAA,CACD,IAAA,IAAWrG,KAAUkH,CAAAA,EAAW,EAAC,CACzBlH,CAAAA,CAAO,WACPA,CAAAA,CAAO,SAAA,CAAU,CACb,UAAA,CAAY5R,GACZ,uBAAA,CAAyB4Z,EAAAA,CAAc,uBAAA,CACvC,4BAAA,CAA8BA,GAAc,4BAChD,CAAC,EAETzB,EAAAA,CAAgB,IAAIzB,GAAc,CAC9B,YAAA,CAAArW,CAAAA,CACA,UAAA,CAAYqZ,GACZ,GAAA,CAAK,MAAA,CACL,WAAAnb,CAAAA,CACA,aAAA,CAAAC,EACA,MAAA,CAAAwB,EAAAA,CACA,QAAA,CAAUoK,CAAAA,CAAS,OACnB,cAAA,CAAAjK,CACJ,CAAC,CAAA,CACD,IAAM0Z,GAAmB,IAAI9G,EAAAA,CAAiB,CAC1C,UAAA,CAAYyG,EACZ,QAAA,CAAUC,CAAAA,CACV,aAAA,CAAe,CACX,WAAAlb,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,aAAA,CAAAO,EACA,gBAAA,CAAAC,CAAAA,CACA,iBAAAiB,CAAAA,CACA,gBAAA,CAAAvF,EACA,cAAA,CAAAyF,CAAAA,CACA,UAAA,CAAAD,CAAAA,CACA,YAAArF,CAAAA,CACA,YAAA,CAAAwF,CAAAA,CACA,YAAA,CAAAD,EACA,QAAA,CAAAgK,CAAAA,CACA,cAAA,CAAAjI,CAAAA,CACA,cAAAyX,EAAAA,CACA,iBAAA,CAAAnM,EACA,aAAA,CAAA0K,EAAAA,CACA,gBAAA7X,CACJ,CAAA,CACA,MAAA,CAAAN,EACJ,CAAC,CAAA,CACDkY,EAAAA,CAAmB,CAACkB,CAAAA,CAAa,QAAU,CACvC,IAAI9hB,CAAAA,CAAIE,CAAAA,CAAIC,EAAIC,CAAAA,CAAI4K,CAAAA,CAAIC,EACxB0V,CAAAA,CAAYD,CAAAA,CAAU,CAClB,IAAA,CAAM9R,CAAAA,CAAU,IAAA,CAChB,IAAA,CAAM,CACF,IAAA,CAAM,MAAA,CAAO,SAAS,IAAA,CACtB,KAAA,CAAOb,IAAe,CACtB,MAAA,CAAQD,EAAAA,EACZ,CACJ,CAAC,CAAA,CAAGgU,CAAU,CAAA,CACd3L,CAAAA,CAAkB,OAAM,CACxBnE,EAAAA,CAAgB,OAAA,CAAS+P,CAAAA,EAAQA,EAAI,IAAA,EAAM,CAAA,CAC3C,IAAMhf,GAAOyJ,EAAAA,CAAS,QAAA,CAAU,CAC5B,MAAA,CAAA9D,GACA,UAAA,CAAAzB,CAAAA,CACA,cAAAC,CAAAA,CACA,aAAA,CAAAO,EACA,gBAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAiB,CAAAA,CACA,cAAevF,CAAAA,CACf,UAAA,CAAAwF,CAAAA,CACA,OAAA,CAASiC,EACT,cAAA,CAAAhC,CAAAA,CACA,YAAA,CAAAE,CAAAA,CACA,aAAAD,CAAAA,CACA,WAAA,CAAchH,GAAM,CACZyM,EAAAA,CAAmBzM,EAAG4G,EAAM,CAAA,EAC5B4Z,EAAAA,CAAc,SAAA,CAAUxgB,CAAC,CAAA,CAEzB0M,EAAAA,CAAuB1M,CAAAA,CAAG4G,EAAM,GAChCyN,CAAAA,CAAkB,gBAAA,CAAiBrU,CAAC,CAAA,CAEpC2M,GAAc3M,CAAC,CAAA,EACfygB,GAAiB,aAAA,CAAczgB,CAAAA,CAAE,WAAY,QAAQ,EAE7D,CAAA,CACA,YAAA,CAAc,CAACyO,CAAAA,CAAQC,EAAAA,GAAY,CAC/B8R,EAAAA,CAAc,YAAA,CAAa/R,EAAQC,EAAO,CAAA,CAC1C+R,EAAAA,CAAiB,mBAAA,CAAoBhS,CAAM,EAC/C,CAAA,CACA,iBAAkB,CAACgQ,CAAAA,CAAQ/P,KAAY,CACnC2F,CAAAA,CAAkB,iBAAA,CAAkBoK,CAAAA,CAAQ/P,EAAO,EACvD,CAAA,CACA,eAAA,CAAAxH,CACJ,CAAC,CAAA,CACD,GAAI,CAACjG,EAAAA,CACD,OAAO,OAAA,CAAQ,IAAA,CAAK,iCAAiC,CAAA,CAEzD4d,CAAAA,CAAYD,EAAU,CAClB,IAAA,CAAM9R,CAAAA,CAAU,YAAA,CAChB,KAAM,CACF,IAAA,CAAA7L,EAAAA,CACA,aAAA,CAAe,CACX,IAAA,CAAM,MAAA,CAAO,WAAA,GAAgB,MAAA,CACvB,OAAO,WAAA,CAAA,CACN,QAAA,EAAa,KAA8B,MAAA,CAAS,QAAA,CAAS,gBAAgB,UAAA,IAAA,CAC1E7C,CAAAA,CAAAA,CAAMF,CAAAA,CAAK,QAAA,EAAa,KAA8B,MAAA,CAAS,QAAA,CAAS,IAAA,IAAU,IAAA,EAAQA,IAAO,MAAA,CAAS,MAAA,CAASA,CAAAA,CAAG,aAAA,IAAmB,MAAQE,CAAAA,GAAO,MAAA,CAAS,OAASA,CAAAA,CAAG,UAAA,CAAA,GAAA,CAC7KC,EAAK,QAAA,EAAa,IAAA,CAA8B,MAAA,CAAS,QAAA,CAAS,QAAU,IAAA,EAAQA,CAAAA,GAAO,OAAS,MAAA,CAASA,CAAAA,CAAG,aAClH,CAAA,CACR,GAAA,CAAK,MAAA,CAAO,WAAA,GAAgB,OACtB,MAAA,CAAO,WAAA,CAAA,CACN,UAAa,IAAA,CAA8B,MAAA,CAAS,SAAS,eAAA,CAAgB,SAAA,IAAA,CAC1E6K,CAAAA,CAAAA,CAAM5K,CAAAA,CAAK,UAAa,IAAA,CAA8B,MAAA,CAAS,QAAA,CAAS,IAAA,IAAU,MAAQA,CAAAA,GAAO,MAAA,CAAS,MAAA,CAASA,CAAAA,CAAG,iBAAmB,IAAA,EAAQ4K,CAAAA,GAAO,OAAS,MAAA,CAASA,CAAAA,CAAG,cAC7KC,CAAAA,CAAK,QAAA,EAAa,IAAA,CAA8B,MAAA,CAAS,SAAS,IAAA,IAAU,IAAA,EAAQA,CAAAA,GAAO,MAAA,CAAS,OAASA,CAAAA,CAAG,SAAA,CAAA,EAClH,CACZ,CACJ,CACJ,CAAC,CAAC,EACF+G,EAAAA,CAAgB,OAAA,CAAS+P,GAAQA,CAAAA,CAAI,MAAA,EAAQ,CAAA,CACzC,SAAS,kBAAA,EAAsB,QAAA,CAAS,kBAAA,CAAmB,MAAA,CAAS,GACpE5L,CAAAA,CAAkB,gBAAA,CAAiB,QAAA,CAAS,kBAAA,CAAoBzN,GAAO,KAAA,CAAM,QAAQ,CAAC,EAC9F,CAAA,CACA,GAAI,CACA,IAAM+K,CAAAA,CAAW,GACjBA,CAAAA,CAAS,IAAA,CAAK9G,EAAG,kBAAA,CAAoB,IAAM,CACvCgU,CAAAA,CAAYD,CAAAA,CAAU,CAClB,IAAA,CAAM9R,EAAU,gBAAA,CAChB,IAAA,CAAM,EACV,CAAC,CAAC,EACN,CAAC,CAAC,CAAA,CACF,IAAM4T,CAAAA,CAAWvc,CAAAA,EAAQ,CACrB,IAAIjG,EACJ,OAAOwZ,EAAAA,CAAc,CACjB,UAAA,CAAY0I,EACZ,WAAA,CAAa,CAACjP,EAAWtF,CAAAA,GAAWgT,CAAAA,CAAYD,EAAU,CACtD,IAAA,CAAM9R,CAAAA,CAAU,mBAAA,CAChB,KAAM,CACF,MAAA,CAAAjB,CAAAA,CACA,SAAA,CAAAsF,CACJ,CACJ,CAAC,CAAC,CAAA,CACF,mBAAqB1F,CAAAA,EAAMoT,CAAAA,CAAYD,EAAU,CAC7C,IAAA,CAAM9R,EAAU,mBAAA,CAChB,IAAA,CAAM,MAAA,CAAO,MAAA,CAAO,CAAE,MAAA,CAAQE,CAAAA,CAAkB,gBAAiB,CAAA,CAAGvB,CAAC,CACzE,CAAC,CAAC,CAAA,CACF,SAAU4U,CAAAA,CACV,gBAAA,CAAmB5U,GAAMoT,CAAAA,CAAYD,CAAAA,CAAU,CAC3C,IAAA,CAAM9R,CAAAA,CAAU,mBAAA,CAChB,IAAA,CAAM,OAAO,MAAA,CAAO,CAAE,OAAQE,CAAAA,CAAkB,cAAe,EAAGvB,CAAC,CACvE,CAAC,CAAC,EACF,OAAA,CAAUoH,CAAAA,EAAMgM,EAAYD,CAAAA,CAAU,CAClC,KAAM9R,CAAAA,CAAU,mBAAA,CAChB,IAAA,CAAM,MAAA,CAAO,OAAO,CAAE,MAAA,CAAQE,CAAAA,CAAkB,KAAM,EAAG6F,CAAC,CAC9D,CAAC,CAAC,EACF,kBAAA,CAAqBlW,CAAAA,EAAMkiB,EAAYD,CAAAA,CAAU,CAC7C,KAAM9R,CAAAA,CAAU,mBAAA,CAChB,IAAA,CAAM,MAAA,CAAO,OAAO,CAAE,MAAA,CAAQE,CAAAA,CAAkB,gBAAiB,EAAGrQ,CAAC,CACzE,CAAC,CAAC,EACF,gBAAA,CAAmBzC,CAAAA,EAAM2kB,EAAYD,CAAAA,CAAU,CAC3C,KAAM9R,CAAAA,CAAU,mBAAA,CAChB,IAAA,CAAM,MAAA,CAAO,OAAO,CAAE,MAAA,CAAQE,CAAAA,CAAkB,cAAe,EAAG9S,CAAC,CACvE,CAAC,CAAC,EACF,kBAAA,CAAqBA,CAAAA,EAAM2kB,EAAYD,CAAAA,CAAU,CAC7C,KAAM9R,CAAAA,CAAU,mBAAA,CAChB,IAAA,CAAM,MAAA,CAAO,OAAO,CAAE,MAAA,CAAQE,EAAkB,gBAAiB,CAAA,CAAG9S,CAAC,CACzE,CAAC,CAAC,CAAA,CACF,iBAAkBomB,EAAAA,CAClB,MAAA,CAAS3jB,GAAMkiB,CAAAA,CAAYD,CAAAA,CAAU,CACjC,IAAA,CAAM9R,CAAAA,CAAU,mBAAA,CAChB,IAAA,CAAM,OAAO,MAAA,CAAO,CAAE,MAAA,CAAQE,CAAAA,CAAkB,IAAK,CAAA,CAAGrQ,CAAC,CAC7D,CAAC,CAAC,CAAA,CACF,WAAA,CAAcA,GAAM,CAChBkiB,CAAAA,CAAYD,EAAU,CAClB,IAAA,CAAM9R,CAAAA,CAAU,mBAAA,CAChB,KAAM,MAAA,CAAO,MAAA,CAAO,CAAE,MAAA,CAAQE,CAAAA,CAAkB,SAAU,CAAA,CAAGrQ,CAAC,CAClE,CAAC,CAAC,EACN,CAAA,CACA,WAAAwI,CAAAA,CACA,WAAA,CAAAgO,EACA,aAAA,CAAAxN,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,iBAAAtE,CAAAA,CACA,gBAAA,CAAAuF,CAAAA,CACA,QAAA,CAAAmK,EACA,YAAA,CAAA/J,CAAAA,CACA,YAAA,CAAAD,CAAAA,CACA,qBAAAoM,CAAAA,CACA,YAAA,CAAAqM,EACA,GAAA,CAAAtb,CAAAA,CACA,YAAA1C,CAAAA,CACA,UAAA,CAAAqF,CAAAA,CACA,eAAA,CAAAI,EACA,aAAA,CAAA9B,CAAAA,CACA,eAAA2D,CAAAA,CACA,cAAA,CAAAhC,EACA,MAAA,CAAAH,EAAAA,CACA,aAAA,CAAA4Z,EAAAA,CACA,kBAAAnM,CAAAA,CACA,gBAAA,CAAAoM,GACA,aAAA,CAAA1B,EAAAA,CACA,oBAAA1J,CAAAA,CACA,OAAA,CAAA,CAAA,CAAWnX,CAAAA,CAAKwhB,CAAAA,EAAY,KAA6B,KAAA,CAAA,CAASA,CAAAA,CAAQ,MAAA,CAAQ/iB,CAAAA,EAAMA,EAAE,QAAQ,CAAA,IAAO,IAAA,EAAQuB,CAAAA,GAAO,OAAS,KAAA,CAAA,CAASA,CAAAA,CAAG,IAAKvB,CAAAA,GAAO,CACrJ,SAAUA,CAAAA,CAAE,QAAA,CACZ,OAAA,CAASA,CAAAA,CAAE,QACX,QAAA,CAAWqS,CAAAA,EAAY6P,CAAAA,CAAYD,CAAAA,CAAU,CACzC,IAAA,CAAM9R,CAAAA,CAAU,MAAA,CAChB,IAAA,CAAM,CACF,MAAA,CAAQnQ,CAAAA,CAAE,KACV,OAAA,CAAAqS,CACJ,CACJ,CAAC,CAAC,CACN,CAAA,CAAE,IAAM,EACZ,CAAA,CAAGuI,CAAK,CACZ,CAAA,CACAiJ,EAAAA,CAAc,eAAA,CAAiB1a,CAAAA,EAAa,CACxC6L,CAAAA,CAAS,IAAA,CAAK+O,EAAQ5a,CAAAA,CAAS,eAAe,CAAC,EACnD,CAAC,CAAA,CACD,IAAM6a,EAAO,IAAM,CACf7B,IAAiB,CACjBnN,CAAAA,CAAS,KAAK+O,CAAAA,CAAQ,QAAQ,CAAC,CAAA,CAC/B1B,GAAY,CAAA,EAChB,CAAA,CACA,OAAI,QAAA,CAAS,UAAA,GAAe,eACxB,QAAA,CAAS,UAAA,GAAe,UAAA,CACxB2B,CAAAA,GAGAhP,CAAAA,CAAS,IAAA,CAAK9G,CAAAA,CAAG,MAAA,CAAQ,IAAM,CAC3BgU,CAAAA,CAAYD,CAAAA,CAAU,CAClB,KAAM9R,CAAAA,CAAU,IAAA,CAChB,KAAM,EACV,CAAC,CAAC,CAAA,CACF6T,CAAAA,GACJ,EAAG,MAAM,CAAC,CAAA,CAEP,IAAM,CACThP,CAAAA,CAAS,OAAA,CAASC,CAAAA,EAAMA,CAAAA,EAAG,CAAA,CAC3BoN,EAAAA,CAAY,GAChB,CACJ,CAAA,MACOte,EAAO,CACV,OAAA,CAAQ,IAAA,CAAKA,CAAK,EACtB,CACJ,CACAue,EAAAA,CAAO,cAAA,CAAiB,CAAC2B,CAAAA,CAAK5R,CAAAA,GAAY,CACtC,GAAI,CAACgQ,EAAAA,CACD,MAAM,IAAI,KAAA,CAAM,+CAA+C,EAEnEH,CAAAA,CAAYD,CAAAA,CAAU,CAClB,IAAA,CAAM9R,EAAU,MAAA,CAChB,IAAA,CAAM,CACF,GAAA,CAAA8T,CAAAA,CACA,QAAA5R,CACJ,CACJ,CAAC,CAAC,EACN,CAAA,CACAiQ,EAAAA,CAAO,WAAa,IAAM,CACtB/O,GAAgB,OAAA,CAAS+P,CAAAA,EAAQA,CAAAA,CAAI,MAAA,EAAQ,EACjD,CAAA,CACAhB,EAAAA,CAAO,gBAAA,CAAoBe,GAAe,CACtC,GAAI,CAAChB,EAAAA,CACD,MAAM,IAAI,KAAA,CAAM,iDAAiD,CAAA,CAErEF,EAAAA,CAAiBkB,CAAU,EAC/B,CAAA,CACAf,EAAAA,CAAO,MAAA,CAASrY,GC3YT,IAAMia,EAAAA,CAAN,KAA8B,CAMnC,YAA6BC,CAAAA,CAAsC,CAAtC,IAAA,CAAA,IAAA,CAAAA,CAAAA,CAL7B,KAAQ,GAAA,CAAM,CAAA,CACd,KAAiB,MAAA,CAAoB,GACrC,IAAA,CAAQ,aAAA,CAAqC,IAAA,CAC7C,IAAA,CAAQ,WAAoD,KAEQ,CAEpE,KAAA,EAAc,CA3BhB,IAAA5iB,CAAAA,CAAAE,CAAAA,CAAAC,CAAAA,CA4BI,GAAI,OAAO,QAAA,EAAa,WAAA,EAAe,KAAK,aAAA,CAAe,OAE3D,IAAMQ,CAAAA,CAAU,CACd,IAAA,CAAO0N,CAAAA,EAAmB,CACxB,IAAA,CAAK,MAAA,CAAO,KAAKA,CAAK,CAAA,CAClB,KAAK,MAAA,CAAO,MAAA,EAAU,IAAA,CAAK,IAAA,CAAK,mBAClC,IAAA,CAAK,KAAA,GAET,CAAA,CACA,gBAAA,CAAA,CAAkBrO,EAAA,IAAA,CAAK,IAAA,CAAK,gBAAA,GAAV,IAAA,CAAAA,EAA8B,GAAA,CAChD,gBAAA,CAAA,CAAkBE,CAAAA,CAAA,IAAA,CAAK,KAAK,gBAAA,GAAV,IAAA,CAAAA,CAAAA,CAA8B,KAAA,CAChD,cAAe,IAAA,CAAK,IAAA,CAAK,cACzB,aAAA,CAAe,IAAA,CAAK,KAAK,aAAA,CACzB,UAAA,CAAY,IAAA,CAAK,IAAA,CAAK,UACxB,CAAA,CAEA,IAAA,CAAK,aAAA,CAAA,CACHC,CAAAA,CAAA4gB,GAAOpgB,CAAuC,CAAA,GAA9C,IAAA,CAAAR,CAAAA,CAAmD,KAErD,IAAA,CAAK,UAAA,CAAa,YAAY,IAAM,CAC9B,KAAK,MAAA,CAAO,MAAA,CAAS,CAAA,EAAG,IAAA,CAAK,QACnC,CAAA,CAAG,IAAA,CAAK,IAAA,CAAK,eAAe,EAC9B,CAEA,KAAA,EAAc,CACZ,GAAI,IAAA,CAAK,MAAA,CAAO,SAAW,CAAA,CAAG,OAC9B,IAAM0iB,CAAAA,CAAS,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,EAAG,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA,CACvD,IAAA,CAAK,KAAK,IAAA,CAAK,CACb,IAAA,CAAM,gBAAA,CACN,KAAM,CACJ,GAAA,CAAK,KAAK,GAAA,EAAA,CACV,MAAA,CAAAA,CACF,CACF,CAAC,EACH,CAEA,SAAgB,CAhElB,IAAA7iB,CAAAA,CAiEQ,IAAA,CAAK,aAAe,IAAA,GACtB,aAAA,CAAc,IAAA,CAAK,UAAU,EAC7B,IAAA,CAAK,UAAA,CAAa,MAEpB,IAAA,CAAK,KAAA,IACLA,CAAAA,CAAA,IAAA,CAAK,aAAA,GAAL,IAAA,EAAAA,EAAA,IAAA,CAAA,IAAA,CAAA,CACA,IAAA,CAAK,aAAA,CAAgB,KACvB,CACF,CAAA,CCvEO,IAAM8iB,EAAAA,CAAsB,QAEnC,SAASC,EAAAA,CAAqBC,CAAAA,CAA6C,CAJ3E,IAAAhjB,CAAAA,CAAAE,EAKE,IAAMrD,CAAAA,CAAImmB,CAAAA,CAAG,WAAA,GACb,OAAI,oCAAA,CAAqC,IAAA,CAAKnmB,CAAC,EAAU,QAAA,CACrD,2CAAA,CAA4C,IAAA,CAAKA,CAAC,EAAU,QAAA,CAC5D,OAAO,WAAc,WAAA,EAAe,SAAA,CAAU,eAAiB,CAAA,EAE/D,OAAO,MAAA,EAAW,WAAA,GAAA,CAClBqD,GAAAF,CAAAA,CAAA,MAAA,CAAO,aAAP,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAA,YAAoB,mBAAA,CAAA,GAApB,IAAA,CAAA,MAAA,CAAAE,CAAAA,CAA0C,OAAA,CAAA,EAC9B,sBAAsB,IAAA,CAAKrD,CAAC,EAAU,QAAA,CAE/C,SACT,CAEA,SAASomB,EAAAA,CAASD,CAAAA,CAAoB,CACpC,OAAI,UAAA,CAAW,IAAA,CAAKA,CAAE,CAAA,CAAU,UAC5B,UAAA,CAAW,IAAA,CAAKA,CAAE,CAAA,CAAU,UAC5B,mBAAA,CAAoB,IAAA,CAAKA,CAAE,CAAA,CAAU,KAAA,CACrC,sBAAsB,IAAA,CAAKA,CAAE,CAAA,CAAU,OAAA,CACvC,SAAS,IAAA,CAAKA,CAAE,CAAA,CAAU,OAAA,CACvB,OACT,CAEA,SAASE,EAAAA,CAAcF,CAAAA,CAAoB,CACzC,OAAI,QAAA,CAAS,KAAKA,CAAE,CAAA,CAAU,OAC1B,cAAA,CAAe,IAAA,CAAKA,CAAE,CAAA,CAAU,QAChC,gBAAA,CAAiB,IAAA,CAAKA,CAAE,CAAA,EAAK,CAAC,WAAA,CAAY,IAAA,CAAKA,CAAE,CAAA,CAAU,SAC3D,iBAAA,CAAkB,IAAA,CAAKA,CAAE,CAAA,CAAU,SAAA,CACnC,iBAAiB,IAAA,CAAKA,CAAE,CAAA,EAAK,CAAC,UAAU,IAAA,CAAKA,CAAE,EAAU,QAAA,CACtD,OACT,CAEA,SAASG,EAAAA,EAAsD,CAO7D,IAAMC,EANM,SAAA,CAMO,aAAA,CACnB,OAAKA,CAAAA,CACE,CAAE,OAAQA,CAAAA,CAAO,MAAA,CAAQ,QAAA,CAAUA,CAAAA,CAAO,QAAS,CAAA,CADtC,EAEtB,CAEA,SAASC,EAAAA,CACPL,CAAAA,CACAI,CAAAA,CACiC,CAlDnC,IAAApjB,CAAAA,CAmDE,IAAMsjB,IAAYtjB,CAAAA,CAAAojB,CAAAA,CAAO,WAAP,IAAA,CAAApjB,CAAAA,CAAmB,EAAA,EAAI,WAAA,GAIzC,OAHIsjB,CAAAA,GAAa,KAAA,EAASA,CAAAA,GAAa,UAGnCA,CAAAA,GAAa,SAAA,CACRF,CAAAA,CAAO,MAAA,CAAS,SAAW,QAAA,CAEhCA,CAAAA,CAAO,SAAW,IAAA,CAAa,QAAA,CAC5BL,GAAqBC,CAAE,CAChC,CAMO,SAASO,GAAqB5lB,CAAAA,CAAkC,CAlEvE,IAAAqC,CAAAA,CAAAE,EAAAC,CAAAA,CAAAC,CAAAA,CAAA4K,CAAAA,CAAAC,CAAAA,CAAAG,EAAAE,CAAAA,CAAA3F,CAAAA,CAAA6F,EAAAC,CAAAA,CAAAC,CAAAA,CAmEE,GAAI,OAAO,MAAA,EAAW,WAAA,EAAe,OAAO,WAAc,WAAA,CACxD,OAAO,CACL,SAAA,CAAA/N,CAAAA,CACA,UAAW,IAAA,CAAK,GAAA,EAAI,CACpB,MAAA,CAAQ,UACR,EAAA,CAAI,OAAA,CACJ,QAAS,OAAA,CACT,QAAA,CAAU,GACV,SAAA,CAAW,EAAC,CACZ,WAAA,CAAa,GACb,WAAA,CAAa,CAAA,CACb,YAAA,CAAc,CAAA,CACd,cAAe,CAAA,CACf,cAAA,CAAgB,CAAA,CAChB,gBAAA,CAAkB,EAClB,QAAA,CAAU,EAAA,CACV,WAAYmlB,EACd,CAAA,CAGF,IAAME,CAAAA,CAAK,SAAA,CAAU,SAAA,EAAa,EAAA,CAC5BI,EAASD,EAAAA,EAAW,CACpBK,EACJJ,CAAAA,CAAO,MAAA,GAAW,QAAaA,CAAAA,CAAO,QAAA,CAClCC,EAAAA,CAAaL,CAAAA,CAAII,CAAM,CAAA,CACvBL,EAAAA,CAAqBC,CAAE,CAAA,CAEzBS,CAAAA,CAAqC,IACrCvjB,CAAAA,CAAAA,CAAAF,CAAAA,CAAA,MAAA,CAAO,UAAA,GAAP,YAAAA,CAAAA,CAAA,IAAA,CAAA,MAAA,CAAoB,8BAAA,CAAA,GAApB,IAAA,EAAAE,EAAqD,OAAA,CACvDujB,CAAAA,CAAc,MAAA,CAAA,CACLrjB,CAAAA,CAAAA,CAAAD,EAAA,MAAA,CAAO,UAAA,GAAP,YAAAA,CAAAA,CAAA,IAAA,CAAA,MAAA,CAAoB,mCAApB,IAAA,EAAAC,CAAAA,CAAsD,OAAA,GAC/DqjB,CAAAA,CAAc,SAGhB,IAAIC,CAAAA,CAAW,GACf,GAAI,CACFA,GAAW1Y,CAAAA,CAAA,IAAA,CAAK,cAAA,EAAe,CAAE,iBAAgB,CAAE,QAAA,GAAxC,KAAAA,CAAAA,CAAoD,GACjE,OAAQ5O,CAAAA,CAAA,CACNsnB,CAAAA,CAAW,GACb,CAEA,IAAMC,CAAAA,CACJ,OAAO,SAAA,CAAU,WAAc,WAAA,EAAe,SAAA,CAAU,SAAA,CAAU,MAAA,CAC9D,CAAC,GAAG,SAAA,CAAU,SAAS,CAAA,CACvB,SAAA,CAAU,SACR,CAAC,SAAA,CAAU,QAAQ,CAAA,CACnB,EAAC,CAET,OAAO,CACL,SAAA,CAAAhmB,EACA,SAAA,CAAW,IAAA,CAAK,GAAA,EAAI,CACpB,OAAA6lB,CAAAA,CACA,EAAA,CAAIP,GAASD,CAAE,CAAA,CACf,QAASE,EAAAA,CAAcF,CAAE,CAAA,CACzB,QAAA,CAAU,UAAU,QAAA,EAAY,EAAA,CAChC,SAAA,CAAWW,CAAAA,CACX,YAAAF,CAAAA,CACA,WAAA,CAAA,CAAarY,CAAAA,CAAAA,CAAAH,CAAAA,CAAA,OAAO,MAAA,GAAP,IAAA,CAAA,MAAA,CAAAA,EAAe,KAAA,GAAf,IAAA,CAAAG,EAAwB,CAAA,CACrC,YAAA,CAAA,CAAczF,CAAAA,CAAAA,CAAA2F,CAAAA,CAAA,OAAO,MAAA,GAAP,IAAA,CAAA,MAAA,CAAAA,EAAe,MAAA,GAAf,IAAA,CAAA3F,EAAyB,CAAA,CACvC,aAAA,CAAA,CAAe6F,CAAAA,CAAA,MAAA,CAAO,aAAP,IAAA,CAAAA,CAAAA,CAAqB,EACpC,cAAA,CAAA,CAAgBC,CAAAA,CAAA,OAAO,WAAA,GAAP,IAAA,CAAAA,CAAAA,CAAsB,CAAA,CACtC,kBAAkBC,CAAAA,CAAA,MAAA,CAAO,gBAAA,GAAP,IAAA,CAAAA,EAA2B,CAAA,CAC7C,QAAA,CAAAgY,CAAAA,CACA,UAAA,CAAYZ,EACd,CACF,KC9Gac,EAAAA,CAAmB,mCAAA,CAE1BC,GAAW,CACf,QAAA,CAAUD,EAAAA,CACV,eAAA,CAAiB,KACjB,SAAA,CAAW,IAAA,CACX,YAAA,CAAc,IAAA,CACd,UAAW,IAAA,CACX,eAAA,CAAiB,EAAA,CACjB,gBAAA,CAAkB,IAClB,SAAA,CAAW,EAAA,CACX,cAAe,GAAA,CACf,aAAA,CAAe,KACf,6BAAA,CAA+B,GAAA,CAC/B,6BAAA,CAA+B,KAAA,CAC/B,+BAAgC,EAAA,CAChC,4BAAA,CAA8B,GAAA,CAC9B,0BAAA,CAA4B,KAC5B,0BAAA,CAA4B,cAAA,CAC5B,uBAAA,CAAyB,eAC3B,EAIME,EAAAA,CAAkB,yBAAA,CAClBC,GAAiB,wBAAA,CACjBC,EAAAA,CAAgB,CACpB,UAAA,CAAY,QAAA,CACZ,UAAA,CAAY,QAAA,CACZ,aAAc,UAAA,CACd,QAAA,CAAU,OACV,WAAA,CAAa,SACf,EACMC,EAAAA,CAAkB,CAAC,OAAA,CAAS,QAAA,CAAU,SAAU,SAAS,EAE/D,SAASC,EAAAA,CAAoBjnB,CAAAA,CAA4B,CACvD,GAAI,OAAO,YAAA,EAAiB,WAAA,CAAa,OAAO,IAAA,CAChD,GAAI,CACF,OAAO,aAAa,OAAA,CAAQA,CAAG,CACjC,CAAA,MAAQ,GACN,OAAO,IACT,CACF,CAEA,SAASknB,GAAoBlnB,CAAAA,CAAaE,CAAAA,CAAqB,CAC7D,GAAI,OAAO,YAAA,EAAiB,WAAA,CAC5B,GAAI,CACF,aAAa,OAAA,CAAQF,CAAAA,CAAKE,CAAK,EACjC,OAAQf,CAAAA,CAAA,CAER,CACF,CAEA,SAASgoB,GAAUnnB,CAAAA,CAA6C,CAC9D,IAAMonB,CAAAA,CAAMH,GAAoBjnB,CAAG,CAAA,CACnC,GAAKonB,CAAAA,CACL,GAAI,CACF,IAAMC,CAAAA,CAAS,IAAA,CAAK,MAAMD,CAAG,CAAA,CAC7B,OAAO,OAAOC,CAAAA,CAAO,aAAgB,QAAA,EACnC,OAAOA,CAAAA,CAAO,UAAA,EAAe,SAC3BA,CAAAA,CACA,KAAA,CACN,OAAQloB,CAAAA,CAAA,CACN,MACF,CACF,CAEA,SAASmoB,EAAAA,CAAWtnB,EAAaE,CAAAA,CAAiC,CAChEgnB,GAAoBlnB,CAAAA,CAAK,IAAA,CAAK,UAAUE,CAAK,CAAC,EAChD,CAEA,SAASqnB,EAAAA,CAAiBC,CAAAA,CAAuC,CAC/D,GAAKA,EACL,GAAI,CACF,OAAO,IAAI,IAAIA,CAAQ,CAAA,CAAE,SAAS,OAAA,CAAQ,QAAA,CAAU,EAAE,CAAA,CAAE,WAAA,EAC1D,CAAA,MAAQ,GACN,MACF,CACF,CAEA,SAASC,IAAuC,CAC9C,OAAI,OAAO,MAAA,EAAW,YAAoB,IAAI,eAAA,CACvC,IAAI,eAAA,CAAgB,MAAA,CAAO,SAAS,MAAM,CACnD,CAEA,SAASC,GAAcC,CAAAA,CAA0D,CA3GjF,IAAA5kB,CAAAA,CA4GE,IAAM6kB,CAAAA,CAAiC,EAAC,CACxC,IAAA,GAAW,CAACtM,CAAAA,CAAOtb,CAAG,IAAK,MAAA,CAAO,OAAA,CAAQ+mB,EAAa,CAAA,CAAG,CACxD,IAAM7mB,CAAAA,CAAAA,CAAQ6C,EAAA4kB,CAAAA,CAAa,GAAA,CAAIrM,CAAK,CAAA,GAAtB,IAAA,CAAA,MAAA,CAAAvY,EAAyB,IAAA,EAAA,CACnC7C,CAAAA,GAAO0nB,CAAAA,CAAI5nB,CAAG,EAAIE,CAAAA,EACxB,CACA,OAAO,MAAA,CAAO,IAAA,CAAK0nB,CAAG,CAAA,CAAE,MAAA,CAAS,CAAA,CAAIA,CAAAA,CAAM,MAC7C,CAEA,SAASC,EAAAA,CAAaF,CAAAA,CAAmE,CApHzF,IAAA5kB,CAAAA,CAqHE,IAAM+kB,CAAAA,CAAmC,EAAC,CAC1C,IAAA,IAAW9nB,KAAOgnB,EAAAA,CAAiB,CACjC,IAAM9mB,CAAAA,CAAAA,CAAQ6C,CAAAA,CAAA4kB,CAAAA,CAAa,GAAA,CAAI3nB,CAAG,CAAA,GAApB,IAAA,CAAA,MAAA,CAAA+C,CAAAA,CAAuB,IAAA,EAAA,CACjC7C,IAAO4nB,CAAAA,CAAS9nB,CAAG,CAAA,CAAIE,CAAAA,EAC7B,CACA,OAAO,MAAA,CAAO,KAAK4nB,CAAQ,CAAA,CAAE,OAAS,CAAA,CAAIA,CAAAA,CAAW,MACvD,CAEA,SAASC,EAAAA,CAAoB3W,CAAAA,CAAmC,CAC9D,OAAQA,EAAM,IAAA,EACZ,KAAK,UAAA,CACH,OAAO,CACL,IAAA,CAAM,WACN,IAAA,CAAM,CACJ,GAAGA,CAAAA,CAAM,IAAA,CACT,IAAA,CAAMhS,CAAAA,CAAqBgS,EAAM,IAAA,CAAK,IAAI,CAC5C,CACF,CAAA,CACF,KAAK,WAAA,CACH,OAAO,CACL,IAAA,CAAM,YACN,IAAA,CAAM,CACJ,GAAGA,CAAAA,CAAM,IAAA,CACT,KAAMhS,CAAAA,CAAqBgS,CAAAA,CAAM,IAAA,CAAK,IAAI,CAC5C,CACF,CAAA,CACF,KAAK,SAAA,CACH,OAAO,CACL,IAAA,CAAM,SAAA,CACN,IAAA,CAAM,CACJ,GAAGA,CAAAA,CAAM,KACT,IAAA,CAAMhS,CAAAA,CAAqBgS,EAAM,IAAA,CAAK,IAAI,CAC5C,CACF,EACF,KAAK,UAAA,CACH,OAAO,CACL,KAAM,UAAA,CACN,IAAA,CAAM,CACJ,GAAGA,EAAM,IAAA,CACT,IAAA,CAAMhS,EAAqBgS,CAAAA,CAAM,IAAA,CAAK,IAAI,CAC5C,CACF,CAAA,CACF,KAAK,QACH,OAAO,CACL,IAAA,CAAM,OAAA,CACN,KAAM,CACJ,GAAGA,CAAAA,CAAM,IAAA,CACT,SAAUhS,CAAAA,CAAqBgS,CAAAA,CAAM,KAAK,QAAQ,CAAA,CAClD,OAAQhS,CAAAA,CAAqBgS,CAAAA,CAAM,IAAA,CAAK,MAAM,CAChD,CACF,CAAA,CACF,KAAK,UAAA,CACH,OAAOA,EACT,KAAK,SAAA,CACH,OAAOA,CAAAA,CACT,KAAK,MAAA,CACH,OAAO,CACL,IAAA,CAAM,MAAA,CACN,KAAM,CACJ,GAAGA,CAAAA,CAAM,IAAA,CACT,KAAMhS,CAAAA,CAAqBgS,CAAAA,CAAM,IAAA,CAAK,IAAI,CAC5C,CACF,CAAA,CACF,KAAK,cAAA,CACH,OAAO,CACL,IAAA,CAAM,eACN,IAAA,CAAM,CACJ,GAAGA,CAAAA,CAAM,IAAA,CACT,IAAA,CAAMhS,CAAAA,CAAqBgS,EAAM,IAAA,CAAK,IAAI,CAC5C,CACF,EACF,KAAK,gBAAA,CACH,OAAOA,CAAAA,CACT,KAAK,gBAAA,CACH,OAAOA,EACT,QAEE,OAD2BA,CAG/B,CACF,CA2CO,IAAM4W,EAAAA,CAAN,KAAkB,CA0BvB,WAAA,CAAYC,CAAAA,CAAwB,GAAI,CAjBxC,IAAA,CAAQ,WAAA,CAAc,KAAA,CACtB,KAAiB,WAAA,CAAc,IAAI,IAGnC,IAAA,CAAQ,KAAA,CAAwB,EAAC,CACjC,IAAA,CAAQ,UAAA,CAAoD,IAAA,CAC5D,KAAQ,cAAA,CAAwD,IAAA,CAGhE,KAAQ,cAAA,CAAyC,GACjD,IAAA,CAAQ,KAAA,CAAiC,EAAC,CAC1C,KAAiB,eAAA,CAAkB,IAAI,IAGvC,IAAA,CAAQ,UAAA,CAA4B,EAAC,CACrC,IAAA,CAAiB,iBAAA,CAAoB,IAAI,IAiNzC,IAAA,CAAQ,sBAAA,CAAyB,IAAY,CAzd/C,IAAAllB,CAAAA,CA0dQ,QAAA,CAAS,eAAA,GAAoB,QAAA,GAAA,CAC/BA,EAAA,IAAA,CAAK,aAAA,GAAL,MAAAA,CAAAA,CAAoB,KAAA,EAAA,CAChB,KAAK,KAAA,CAAM,MAAA,CAAS,CAAA,EAAG,IAAA,CAAK,aAAY,CAC5C,IAAA,CAAK,cAAA,EAAe,EAExB,EAEA,IAAA,CAAQ,cAAA,CAAiB,IAAY,CAjevC,IAAAA,CAAAA,CAAAA,CAkeIA,CAAAA,CAAA,KAAK,aAAA,GAAL,IAAA,EAAAA,EAAoB,KAAA,EAAA,CAChB,IAAA,CAAK,KAAA,CAAM,MAAA,CAAS,GAAG,IAAA,CAAK,WAAA,EAAY,CAC5C,IAAA,CAAK,iBACP,CAAA,CAEA,IAAA,CAAQ,cAAA,CAAkBgL,GAAoB,CAE9C,CAAA,CAzeF,IAAAhL,CAAAA,CA2QI,IAAA,CAAK,IAAM,CAAE,GAAG6jB,EAAAA,CAAU,GAAGqB,CAAO,CAAA,CAIpC,GAAI,CACF,IAAI,GAAA,CAAI,KAAK,GAAA,CAAI,QAAQ,EAC3B,CAAA,MAAQ9oB,EAAA,CACN,MAAM,IAAI,KAAA,CACR,CAAA,uCAAA,EAA0C,KAAK,GAAA,CAAI,QAAQ,CAAA,CAAA,CAC7D,CACF,CAEA,IAAA,CAAK,OAAA,CAAU,CACb,EAAA,CAAA,CAAI4D,EAAAklB,CAAAA,CAAO,SAAA,GAAP,IAAA,CAAAllB,CAAAA,CAAoBlE,IAAkB,CAC1C,SAAA,CAAWG,IAAqB,CAChC,SAAA,CAAW,KAAK,GAAA,EAAI,CACpB,SAAA,CAAW,GACX,SAAA,CAAW,EAAC,CACZ,OAAA,CAAS,EAAC,CACV,cAAA,CAAgB,EAAC,CACjB,YAAa,CACX,UAAA,CAAYmoB,GAAUN,EAAe,CAAA,CACrC,UAAWM,EAAAA,CAAUL,EAAc,CACrC,CACF,EACF,CAEQ,4BAAA,CAA6BznB,CAAAA,CAAcmoB,CAAAA,CAGjD,CACA,IAAMG,CAAAA,CAAeF,EAAAA,EAAoB,CACnCG,EAAMF,EAAAA,CAAcC,CAAY,EAChCG,CAAAA,CAAWD,EAAAA,CAAaF,CAAY,CAAA,CACpCO,CAAAA,CAAgBf,EAAAA,CAAUN,EAAe,EAEzCnkB,CAAAA,CADoB,CAAA,EAAQklB,GAAOE,CAAAA,EAAYN,CAAAA,CAAAA,CAEjD,CACE,WAAA,CAAanoB,CAAAA,CACb,QAAA,CAAAmoB,CAAAA,CACA,aAAcD,EAAAA,CAAiBC,CAAQ,EACvC,GAAA,CAAAI,CAAAA,CACA,SAAAE,CAAAA,CACA,UAAA,CAAY,IAAA,CAAK,GAAA,EACnB,CAAA,CACA,MAAA,CAEA,CAACI,CAAAA,EAAiBxlB,GACpB4kB,EAAAA,CAAWT,EAAAA,CAAiBnkB,CAAK,CAAA,CAE/BA,GACF4kB,EAAAA,CAAWR,EAAAA,CAAgBpkB,CAAK,CAAA,CAGlC,IAAMylB,EAAc,CAClB,UAAA,CAAYhB,EAAAA,CAAUN,EAAe,EACrC,SAAA,CAAWM,EAAAA,CAAUL,EAAc,CACrC,EACA,OAAA,IAAA,CAAK,OAAA,CAAQ,WAAA,CAAcqB,CAAAA,CACpBA,CACT,CAEQ,kBAAA,EAGN,CACA,IAAMA,CAAAA,CAAc,CAClB,UAAA,CAAYhB,EAAAA,CAAUN,EAAe,CAAA,CACrC,UAAWM,EAAAA,CAAUL,EAAc,CACrC,CAAA,CACA,YAAK,OAAA,CAAQ,WAAA,CAAcqB,CAAAA,CACpBA,CACT,CASA,IAAA,EAAa,CACX,GAAI,OAAO,MAAA,EAAW,aAAe,IAAA,CAAK,WAAA,CAAa,OAAO,IAAA,CAE9D,IAAM1nB,CAAAA,CAAO,IAAA,CAAK,KAAK,IAAA,CAAK,IAAI,EAC1B,CAAE,EAAA,CAAIC,CAAU,CAAA,CAAI,KAAK,OAAA,CAG/B,OAAAD,EAAK,CACH,IAAA,CAAM,iBACN,IAAA,CAAM6lB,EAAAA,CAAqB5lB,CAAS,CACtC,CAAC,CAAA,CAEG,IAAA,CAAK,GAAA,CAAI,eAAA,GACX,KAAK,UAAA,CAAa,IAAIe,EAAAA,CAAiB,CAAE,KAAAhB,CAAAA,CAAM,SAAA,CAAAC,CAAU,CAAC,CAAA,CAC1D,KAAK,UAAA,CAAW,IAAA,EAAK,CAAA,CAGnB,IAAA,CAAK,IAAI,SAAA,GACX,IAAA,CAAK,IAAA,CAAO,IAAIgB,GAAW,CAAE,IAAA,CAAAjB,CAAAA,CAAM,SAAA,CAAAC,CAAU,CAAC,CAAA,CAC9C,KAAK,IAAA,CAAK,IAAA,IAGR,IAAA,CAAK,GAAA,CAAI,YAAA,GACX,IAAA,CAAK,QAAU,IAAI8C,EAAAA,CAAc,CAC/B,IAAA,CAAA/C,EACA,SAAA,CAAAC,CAAAA,CACA,UAAA,CAAY,IAAA,CAAK,IAAI,eAAA,CACrB,SAAA,CAAW,KAAK,GAAA,CAAI,gBAAA,CACpB,aAAc,IAAA,CAAK,GAAA,CAAI,YACzB,CAAC,EACD,IAAA,CAAK,OAAA,CAAQ,MAAK,CAAA,CAGhB,IAAA,CAAK,IAAI,aAAA,GACX,IAAA,CAAK,aAAA,CAAgB,IAAIglB,GAAwB,CAC/C,IAAA,CAAAjlB,EACA,gBAAA,CAAkB,IAAA,CAAK,IAAI,6BAAA,CAC3B,gBAAA,CAAkB,IAAA,CAAK,GAAA,CAAI,8BAC3B,iBAAA,CAAmB,IAAA,CAAK,GAAA,CAAI,8BAAA,CAC5B,gBAAiB,IAAA,CAAK,GAAA,CAAI,4BAAA,CAC1B,aAAA,CAAe,KAAK,GAAA,CAAI,0BAAA,CACxB,cAAe,IAAA,CAAK,GAAA,CAAI,2BACxB,UAAA,CAAY,IAAA,CAAK,GAAA,CAAI,uBACvB,CAAC,CAAA,CACD,IAAA,CAAK,aAAA,CAAc,KAAA,IAGjB,IAAA,CAAK,GAAA,CAAI,QAAA,GAEX,IAAA,CAAK,WAAa,WAAA,CAAY,IAAM,CAC9B,IAAA,CAAK,KAAA,CAAM,OAAS,CAAA,EAAQ,IAAA,CAAK,UAAA,GACvC,EAAG,IAAA,CAAK,GAAA,CAAI,aAAa,CAAA,CAMzB,OAAO,gBAAA,CAAiB,kBAAA,CAAoB,IAAA,CAAK,sBAAsB,EACvE,MAAA,CAAO,gBAAA,CAAiB,WAAY,IAAA,CAAK,cAAc,EAIvD,IAAA,CAAK,cAAA,CAAiB,WAAA,CAAY,IAAM,CAClC,QAAA,CAAS,eAAA,GAAoB,UAAe,IAAA,CAAK,aAAA,GACvD,CAAA,CAAG,GAAM,CAAA,CAGL,IAAA,CAAK,IAAI,SAAA,GACX,IAAA,CAAK,WAAa,IAAIgD,EAAAA,CAAW,CAC/B,QAAA,CAAU,IAAA,CAAK,GAAA,CAAI,QAAA,CACnB,UAAW,IAAA,CAAK,OAAA,CAAQ,EAAA,CACxB,SAAA,CAAW,KAAK,GAAA,CAAI,SAAA,CACpB,KAAA,CAAO,IAAA,CAAK,IAAI,KAClB,CAAC,EACD,IAAA,CAAK,UAAA,CAAW,MAAK,CAAA,CAAA,CAIzB,IAAA,CAAK,WAAA,CAAc,IAAA,CAGd,KAAK,UAAA,EAAW,CAChB,IAAA,CAAK,YAAA,GAEH,IACT,CAGA,OAAA,EAAgB,CApblB,IAAAV,CAAAA,CAAAE,CAAAA,CAAAC,EAAAC,CAAAA,CAAA4K,CAAAA,CAqbQ,KAAK,UAAA,GAAe,IAAA,GACtB,aAAA,CAAc,IAAA,CAAK,UAAU,CAAA,CAC7B,IAAA,CAAK,UAAA,CAAa,IAAA,CAAA,CAEhB,KAAK,cAAA,GAAmB,IAAA,GAC1B,aAAA,CAAc,IAAA,CAAK,cAAc,CAAA,CACjC,IAAA,CAAK,eAAiB,IAAA,CAAA,CAGpB,OAAO,QAAW,WAAA,GACpB,MAAA,CAAO,mBAAA,CACL,kBAAA,CACA,KAAK,sBACP,CAAA,CACA,OAAO,mBAAA,CAAoB,UAAA,CAAY,KAAK,cAAc,CAAA,CAAA,CAAA,CAG5DhL,CAAAA,CAAA,IAAA,CAAK,aAAL,IAAA,EAAAA,CAAAA,CAAiB,WACjBE,CAAAA,CAAA,IAAA,CAAK,OAAL,IAAA,EAAAA,CAAAA,CAAW,OAAA,EAAA,CAAA,CACXC,CAAAA,CAAA,KAAK,OAAA,GAAL,IAAA,EAAAA,CAAAA,CAAc,OAAA,EAAA,CAAA,CACdC,EAAA,IAAA,CAAK,aAAA,GAAL,IAAA,EAAAA,CAAAA,CAAoB,UACpB,IAAA,CAAK,aAAA,CAAgB,QACrB4K,CAAAA,CAAA,IAAA,CAAK,aAAL,IAAA,EAAAA,CAAAA,CAAiB,OAAA,EAAA,CAEb,OAAO,QAAW,WAAA,EACpB,MAAA,CAAO,mBAAA,CAAoB,kBAAA,CAAoB,KAAK,cAAc,CAAA,CAIhE,IAAA,CAAK,KAAA,CAAM,OAAS,CAAA,EAAK,IAAA,CAAK,IAAI,QAAA,EACpC,IAAA,CAAK,aAAY,CAGnB,IAAA,CAAK,WAAA,CAAc,MACrB,CAwBA,MAAc,aAAA,EAA+B,CAC3C,GAAI,CAAC,IAAA,CAAK,GAAA,CAAI,QAAA,CAAU,OACxB,IAAMhN,CAAAA,CAAM,CAAA,EAAG,KAAK,GAAA,CAAI,QAAQ,aAC1BqnB,CAAAA,CAAsC,IAAA,CAAK,GAAA,CAAI,SAAA,CACjD,CAAE,aAAA,CAAe,CAAA,OAAA,EAAU,KAAK,GAAA,CAAI,SAAS,EAAG,CAAA,CAChD,EAAC,CACC1jB,CAAAA,CAAO,KAAK,SAAA,CAAU,CAC1B,UAAW,IAAA,CAAK,OAAA,CAAQ,GACxB,SAAA,CAAW,IAAA,CAAK,OAAA,CAAQ,SAAA,CACxB,KAAMtF,CAAAA,CACJ,OAAO,MAAA,EAAW,WAAA,CACd,OAAO,QAAA,CAAS,QAAA,CAAW,MAAA,CAAO,QAAA,CAAS,OAC3C,GACN,CAAA,CACA,OAAQ,IAAA,CACR,GAAI,KAAK,GAAA,CAAI,KAAA,CAAQ,CAAE,KAAA,CAAO,KAAK,GAAA,CAAI,KAAM,CAAA,CAAI,EACnD,CAAC,CAAA,CACD,GAAI,CACF,MAAM,KAAA,CAAM2B,CAAAA,CAAK,CACf,MAAA,CAAQ,MAAA,CACR,QAAS,CAAE,cAAA,CAAgB,kBAAA,CAAoB,GAAGqnB,CAAY,CAAA,CAC9D,IAAA,CAAA1jB,CAAAA,CACA,SAAA,CAAW,EACb,CAAC,EACH,CAAA,MAAQvF,CAAAA,CAAA,CAER,CACF,CAMQ,gBAAuB,CAC7B,GAAI,CAAC,IAAA,CAAK,GAAA,CAAI,QAAA,CAAU,OACxB,IAAM4B,CAAAA,CAAM,CAAA,EAAG,KAAK,GAAA,CAAI,QAAQ,aAC1BqnB,CAAAA,CAAsC,IAAA,CAAK,GAAA,CAAI,SAAA,CACjD,CAAE,aAAA,CAAe,CAAA,OAAA,EAAU,KAAK,GAAA,CAAI,SAAS,EAAG,CAAA,CAChD,EAAC,CACC1jB,CAAAA,CAAO,KAAK,SAAA,CAAU,CAC1B,SAAA,CAAW,IAAA,CAAK,QAAQ,EAAA,CACxB,SAAA,CAAW,IAAA,CAAK,OAAA,CAAQ,UACxB,IAAA,CAAMtF,CAAAA,CACJ,OAAO,MAAA,EAAW,WAAA,CACd,OAAO,QAAA,CAAS,QAAA,CAAW,MAAA,CAAO,QAAA,CAAS,OAC3C,GACN,CAAA,CACA,OAAQ,KAAA,CACR,GAAI,KAAK,GAAA,CAAI,KAAA,CAAQ,CAAE,KAAA,CAAO,KAAK,GAAA,CAAI,KAAM,EAAI,EACnD,CAAC,CAAA,CAIC,CAAC,IAAA,CAAK,GAAA,CAAI,WACV,OAAO,SAAA,EAAc,WAAA,EACrB,SAAA,CAAU,WAEV,SAAA,CAAU,UAAA,CAAW2B,CAAAA,CAAK,IAAI,KAAK,CAAC2D,CAAI,EAAG,CAAE,IAAA,CAAM,kBAAmB,CAAC,CAAC,CAAA,CAEnE,KAAA,CAAM3D,EAAK,CACd,MAAA,CAAQ,OACR,OAAA,CAAS,CAAE,eAAgB,kBAAA,CAAoB,GAAGqnB,CAAY,CAAA,CAC9D,KAAA1jB,CAAAA,CACA,SAAA,CAAW,IACb,CAAC,CAAA,CAAE,MAAM,IAAG,CAAA,CAAY,EAE5B,CAKA,KAAK0M,CAAAA,CAA2B,CAtjBlC,IAAArO,CAAAA,CAAAE,EAAAC,CAAAA,CAAAC,CAAAA,CAwjBI,GADAiO,CAAAA,CAAQ2W,GAAoB3W,CAAK,CAAA,CAC7BA,EAAM,IAAA,GAAS,UAAA,CAAY,CAC7B,IAAM+W,CAAAA,CAAc,IAAA,CAAK,4BAAA,CACvB/W,EAAM,IAAA,CAAK,IAAA,CACXA,CAAAA,CAAM,IAAA,CAAK,QACb,CAAA,CACAA,CAAAA,CAAQ,CACN,IAAA,CAAM,WACN,IAAA,CAAM,CACJ,GAAGA,CAAAA,CAAM,IAAA,CACT,KAAKrO,CAAAA,CAAAolB,CAAAA,CAAY,SAAA,GAAZ,IAAA,CAAA,MAAA,CAAAplB,EAAuB,GAAA,CAC5B,WAAA,CAAAolB,CACF,CACF,EACF,CAEA,OAAQ/W,CAAAA,CAAM,IAAA,EACZ,KAAK,UAAA,CACH,KAAK,OAAA,CAAQ,SAAA,CAAU,KAAKA,CAAAA,CAAM,IAAI,CAAA,CACtC,MAEF,KAAK,WAAA,CAAa,CAChB,IAAMiX,CAAAA,CAAAA,CAAOplB,CAAAA,CAAA,KAAK,OAAA,CAAQ,SAAA,CAAUmO,CAAAA,CAAM,IAAA,CAAK,IAAI,CAAA,GAAtC,IAAA,CAAAnO,EAA2C,CAAA,CACxD,IAAA,CAAK,QAAQ,SAAA,CAAUmO,CAAAA,CAAM,IAAA,CAAK,IAAI,EAAIiX,CAAAA,CAAOjX,CAAAA,CAAM,IAAA,CAAK,QAAA,CAC5D,KACF,CAEA,KAAK,SAAA,CAAW,CACd,IAAMpR,CAAAA,CAAMoR,CAAAA,CAAM,KAAK,IAAA,CAClB,IAAA,CAAK,QAAQ,OAAA,CAAQpR,CAAG,CAAA,GAAG,IAAA,CAAK,QAAQ,OAAA,CAAQA,CAAG,CAAA,CAAI,IAC5D,IAAMsoB,CAAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,QAAQtoB,CAAG,CAAA,CAChCsoB,EAAI,MAAA,CAAS,IAAA,CAAK,IAAI,gBAAA,EAAkBA,CAAAA,CAAI,IAAA,CAAKlX,CAAAA,CAAM,IAAI,CAAA,CAC/D,KACF,CAYF,CAGA,IAAA,CAAK,WAAA,CAAY,QAASvP,CAAAA,EAAOA,CAAAA,CAAGuP,CAAK,CAAC,CAAA,CAAA,CAG1CjO,CAAAA,CAAAA,CAAAD,CAAAA,CAAA,KAAK,GAAA,EAAI,OAAA,GAAT,MAAAC,CAAAA,CAAA,IAAA,CAAAD,EAAmBkO,CAAAA,CAAAA,CAGf,IAAA,CAAK,GAAA,CAAI,QAAA,GACX,KAAK,KAAA,CAAM,IAAA,CAAKA,CAAK,CAAA,CAEjB,KAAK,KAAA,CAAM,MAAA,EAAU,IAAA,CAAK,GAAA,CAAI,WAC3B,IAAA,CAAK,UAAA,IAGhB,CAWA,SAAA,CAAUvP,EAA8B,CACtC,OAAA,IAAA,CAAK,WAAA,CAAY,GAAA,CAAIA,CAAE,CAAA,CAChB,IAAM,IAAA,CAAK,WAAA,CAAY,OAAOA,CAAE,CACzC,CAcA,aAAA,CAAcxC,EAAqB,CACjC,IAAMkpB,EAAenpB,CAAAA,CACnBC,CAAAA,EAAA,KAAAA,CAAAA,CACG,OAAO,MAAA,EAAW,WAAA,CACf,OAAO,QAAA,CAAS,QAAA,CAAW,MAAA,CAAO,QAAA,CAAS,OAC3C,GACR,CAAA,CAEA,IAAA,CAAK,IAAA,CAAK,CACR,IAAA,CAAM,UAAA,CACN,KAAM,CACJ,IAAA,CAAMkpB,EACN,KAAA,CAAO,OAAO,QAAA,EAAa,WAAA,CAAc,SAAS,KAAA,CAAQ,EAAA,CAC1D,UAAW,IAAA,CAAK,GAAA,GAChB,SAAA,CAAW,IAAA,CAAK,OAAA,CAAQ,EAAA,CACxB,SACE,OAAO,QAAA,EAAa,aAChB,QAAA,CAAS,QAAA,EAAY,MAE7B,CACF,CAAC,CAAA,CAEG,OAAO,QAAW,WAAA,EACpB,MAAA,CAAO,aAAA,CACL,IAAI,YAAY,kBAAA,CAAoB,CAClC,MAAA,CAAQ,CAAE,KAAMA,CAAAA,CAAc,KAAA,CAAO,SAAS,KAAM,CACtD,CAAC,CACH,EAEJ,CAOA,YAAA,CAAa1U,EAAoC,CAprBnD,IAAA9Q,CAAAA,CAAAE,CAAAA,CAqrBI,KAAK,IAAA,CAAK,CACR,IAAA,CAAM,SAAA,CACN,KAAM,CACJ,GAAG4Q,EACH,SAAA,CAAA,CAAW9Q,CAAAA,CAAA8Q,EAAQ,SAAA,GAAR,IAAA,CAAA9Q,CAAAA,CAAqB,UAAA,CAChC,QAAQE,CAAAA,CAAA4Q,CAAAA,CAAQ,MAAA,GAAR,IAAA,CAAA5Q,EAAkB,MAAA,CAC1B,SAAA,CAAW,IAAA,CAAK,OAAA,CAAQ,GACxB,SAAA,CAAW,IAAA,CAAK,QAAQ,SAAA,CACxB,SAAA,CAAW,KAAK,GAAA,EAAI,CACpB,WAAA,CAAa,IAAA,CAAK,oBACpB,CACF,CAAC,EACH,CAGA,UAAU4Q,CAAAA,CAAiC,CACzC,IAAMxU,CAAAA,CAAOD,EACX,OAAO,MAAA,EAAW,YACd,MAAA,CAAO,QAAA,CAAS,SAAW,MAAA,CAAO,QAAA,CAAS,MAAA,CAC3C,GACN,EACA,IAAA,CAAK,IAAA,CAAK,CACR,IAAA,CAAM,OACN,IAAA,CAAM,CACJ,GAAGyU,CAAAA,CACH,UAAW,IAAA,CAAK,OAAA,CAAQ,GACxB,SAAA,CAAW,IAAA,CAAK,QAAQ,SAAA,CACxB,IAAA,CAAAxU,CAAAA,CACA,SAAA,CAAW,KAAK,GAAA,EAClB,CACF,CAAC,EACH,CAGA,gBAAA,CAAiBwU,CAAAA,CAAwC,CAvtB3D,IAAA9Q,CAAAA,CAwtBI,IAAM1D,EAAOD,CAAAA,CAAAA,CACX2D,CAAAA,CAAA8Q,EAAQ,IAAA,GAAR,IAAA,CAAA9Q,CAAAA,CACG,OAAO,QAAW,WAAA,CACf,MAAA,CAAO,QAAA,CAAS,QAAA,CAAW,OAAO,QAAA,CAAS,MAAA,CAC3C,GACR,CAAA,CACA,KAAK,IAAA,CAAK,CACR,KAAM,cAAA,CACN,IAAA,CAAM,CACJ,GAAG8Q,CAAAA,CACH,IAAA,CAAAxU,CAAAA,CACA,UAAW,IAAA,CAAK,OAAA,CAAQ,GACxB,SAAA,CAAW,IAAA,CAAK,QAAQ,SAAA,CACxB,SAAA,CAAW,IAAA,CAAK,GAAA,EAClB,CACF,CAAC,EACH,CAcA,QAAA,CAASmpB,EAA0C,CACjD,IAAA,CAAK,cAAA,CAAiB,CAAE,GAAG,IAAA,CAAK,cAAA,CAAgB,GAAGA,CAAW,EAC9D,IAAA,CAAK,OAAA,CAAQ,cAAA,CAAiB,CAAE,GAAG,IAAA,CAAK,cAAe,EACvD,IAAA,CAAK,IAAA,CAAK,CACR,IAAA,CAAM,UAAA,CACN,IAAA,CAAM,CACJ,WAAY,CAAE,GAAG,IAAA,CAAK,cAAe,EACrC,SAAA,CAAW,IAAA,CAAK,OAAA,CAAQ,SAAA,CACxB,UAAW,IAAA,CAAK,GAAA,EAClB,CACF,CAAC,EACI,IAAA,CAAK,UAAA,GACZ,CAMA,UAAoC,CAClC,OAAO,CAAE,GAAG,KAAK,KAAM,CACzB,CAMA,gBAAA,CAAiBC,EAA0B,CACzC,OAAO,KAAK,KAAA,CAAMA,CAAO,IAAM,IACjC,CAUA,aAAA,CAAc5mB,CAAAA,CAAkC,CAC9C,OAAA,IAAA,CAAK,eAAA,CAAgB,IAAIA,CAAE,CAAA,CACpB,IAAM,IAAA,CAAK,eAAA,CAAgB,MAAA,CAAOA,CAAE,CAC7C,CAGA,MAAM,YAA4B,CAChC,GAAI,CAAC,IAAA,CAAK,GAAA,CAAI,QAAA,EAAY,CAAC,KAAK,GAAA,CAAI,SAAA,CAAW,OAC/C,IAAMd,EACJrC,EAAAA,CAA0B,IAAA,CAAK,GAAA,CAAI,QAAQ,EAAI,yBAAA,CACjD,GAAI,CACF,IAAMgqB,CAAAA,CAAM,MAAM,KAAA,CAAM3nB,CAAAA,CAAK,CAC3B,MAAA,CAAQ,OACR,OAAA,CAAS,CACP,cAAA,CAAgB,kBAAA,CAChB,cAAe,CAAA,OAAA,EAAU,IAAA,CAAK,GAAA,CAAI,SAAS,EAC7C,CAAA,CACA,IAAA,CAAM,KAAK,SAAA,CAAU,CAAE,eAAgB,IAAA,CAAK,cAAe,CAAC,CAC9D,CAAC,CAAA,CACD,GAAI,CAAC2nB,CAAAA,CAAI,GAAI,OACb,IAAMC,CAAAA,CAAQ,MAAMD,EAAI,IAAA,EAAK,CAC7B,KAAK,KAAA,CAAQC,CAAAA,CACb,KAAK,eAAA,CAAgB,OAAA,CAAS9mB,CAAAA,EAAOA,CAAAA,CAAG,CAAE,GAAG,IAAA,CAAK,KAAM,CAAC,CAAC,EAC5D,CAAA,MAAQ1C,CAAAA,CAAA,CAER,CACF,CAaA,aAAA,EAA+B,CAC7B,OAAO,CAAE,GAAG,KAAK,UAAW,CAC9B,CAMA,YAAA,CAAaypB,EAAsC,CACjD,IAAMlR,CAAAA,CAAI,IAAA,CAAK,WAAWkR,CAAa,CAAA,CACvC,OAAOlR,CAAAA,EAAA,KAAAA,CAAAA,CAAK,IACd,CAKA,WAAA,CAAYkR,CAAAA,CAAuBC,EAA6B,CAC9D,OAAO,IAAA,CAAK,UAAA,CAAWD,CAAa,CAAA,GAAMC,CAC5C,CAKA,eAAA,CAAgBhnB,CAAAA,CAAoC,CAClD,OAAA,IAAA,CAAK,iBAAA,CAAkB,GAAA,CAAIA,CAAE,EACtB,IAAM,IAAA,CAAK,kBAAkB,MAAA,CAAOA,CAAE,CAC/C,CAMA,MAAM,YAAA,CAAayc,CAAAA,CAAgC,CACjD,GAAI,CAAC,IAAA,CAAK,GAAA,CAAI,UAAY,CAAC,IAAA,CAAK,GAAA,CAAI,SAAA,CAAW,OAC/C,IAAMvd,CAAAA,CACJrC,GAA0B,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA,CAAI,oBAAA,CACjD,GAAI,CACF,IAAMgG,CAAAA,CAA+C,CACnD,UAAW,IAAA,CAAK,OAAA,CAAQ,SAC1B,CAAA,CACI4Z,CAAAA,EAAA,IAAA,EAAAA,CAAAA,CAAM,SAAQ5Z,CAAAA,CAAK,IAAA,CAAO4Z,GAE9B,IAAMoK,CAAAA,CAAM,MAAM,KAAA,CAAM3nB,CAAAA,CAAK,CAC3B,MAAA,CAAQ,OACR,OAAA,CAAS,CACP,cAAA,CAAgB,kBAAA,CAChB,cAAe,CAAA,OAAA,EAAU,IAAA,CAAK,GAAA,CAAI,SAAS,EAC7C,CAAA,CACA,IAAA,CAAM,KAAK,SAAA,CAAU2D,CAAI,CAC3B,CAAC,CAAA,CACD,GAAI,CAACgkB,EAAI,EAAA,CAAI,OACb,IAAMC,CAAAA,CAAQ,MAAMD,CAAAA,CAAI,IAAA,EAAK,CAC7B,IAAA,CAAK,WAAapK,CAAAA,EAAA,IAAA,EAAAA,EAAM,MAAA,CACpB,CAAE,GAAG,IAAA,CAAK,UAAA,CAAY,GAAGqK,CAAK,EAC9B,CAAE,GAAGA,CAAK,CAAA,CACd,KAAK,iBAAA,CAAkB,OAAA,CAAS9mB,CAAAA,EAAOA,CAAAA,CAAG,CAAE,GAAG,IAAA,CAAK,UAAW,CAAC,CAAC,EACnE,CAAA,MAAQ1C,CAAAA,CAAA,CAER,CACF,CAKA,UAAA,EAAoC,CAClC,OAAO,IAAA,CAAK,OACd,CAGA,YAAA,EAA2B,CACzB,OAAO,CAAC,GAAG,IAAA,CAAK,OAAA,CAAQ,SAAS,CACnC,CAGA,cAAuC,CACrC,OAAO,CAAE,GAAG,KAAK,OAAA,CAAQ,SAAU,CACrC,CAMA,eACEE,CAAAA,CACiD,CAv5BrD,IAAA0D,CAAAA,CAw5BI,OAAI1D,CAAAA,GAAS,MAAA,CACJ,CAAC,GAAA,CAAI0D,CAAAA,CAAA,KAAK,OAAA,CAAQ,OAAA,CAAQ1D,CAAI,CAAA,GAAzB,KAAA0D,CAAAA,CAA8B,EAAG,CAAA,CAExC,OAAO,OAAA,CAAQ,IAAA,CAAK,OAAA,CAAQ,OAAO,EAAE,MAAA,CAE1C,CAAC+lB,EAAK,CAACC,CAAAA,CAAGrR,CAAC,CAAA,IACXoR,CAAAA,CAAIC,CAAC,CAAA,CAAI,CAAC,GAAGrR,CAAC,CAAA,CACPoR,CAAAA,CAAAA,CACN,EAAE,CACP,CAQA,KAAA,EAAc,CACP,IAAA,CAAK,UAAA,GACZ,CAGA,MAAc,YAA4B,CACxC,GAAI,IAAA,CAAK,KAAA,CAAM,SAAW,CAAA,CAAG,OAG7B,IAAME,CAAAA,CAAQ,IAAA,CAAK,MAAM,MAAA,CAAO,CAAC,CAAA,CACjC,MAAM,KAAK,SAAA,CAAUA,CAAK,EAC5B,CAOQ,WAAA,EAAoB,CAC1B,GAAI,IAAA,CAAK,KAAA,CAAM,MAAA,GAAW,EAAG,OAC7B,IAAMA,CAAAA,CAAQ,IAAA,CAAK,MAAM,MAAA,CAAO,CAAC,CAAA,CACjC,GAAI,KAAK,GAAA,CAAI,SAAA,CAAW,CACjB,IAAA,CAAK,SAAA,CAAUA,CAAK,CAAA,CACzB,MACF,CACA,IAAMjoB,EAAM,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,QAAS,SAC3B2D,CAAAA,CAAO,IAAA,CAAK,cAAA,CAAeskB,CAAK,EAChCjH,CAAAA,CAAO,IAAI,KAAK,CAACrd,CAAI,EAAG,CAAE,IAAA,CAAM,kBAAmB,CAAC,EACtD,OAAO,SAAA,EAAc,WAAA,EAAe,SAAA,CAAU,WAC/B,SAAA,CAAU,UAAA,CAAW3D,CAAAA,CAAKghB,CAAI,GAC3B,IAAA,CAAK,SAAA,CAAUiH,CAAK,CAAA,CAGnC,IAAA,CAAK,UAAUA,CAAK,EAE7B,CAEQ,cAAA,CAAepD,EAAgC,CACrD,OAAO,KAAK,SAAA,CAAU,CACpB,GAAI,IAAA,CAAK,GAAA,CAAI,KAAA,CAAQ,CAAE,MAAO,IAAA,CAAK,GAAA,CAAI,KAAM,CAAA,CAAI,GACjD,SAAA,CAAW,IAAA,CAAK,OAAA,CAAQ,SAAA,CACxB,OAAQA,CAAAA,CAAO,GAAA,CAAKzmB,CAAAA,GAAO,CACzB,UAAW,IAAA,CAAK,OAAA,CAAQ,EAAA,CACxB,IAAA,CAAMA,EAAE,IAAA,CACR,IAAA,CAAMA,EAAE,IACV,CAAA,CAAE,CACJ,CAAC,CACH,CAEA,MAAc,UAAUymB,CAAAA,CAAuC,CAC7D,IAAM7kB,CAAAA,CAAM,GAAG,IAAA,CAAK,GAAA,CAAI,QAAS,CAAA,MAAA,CAAA,CAC3BqnB,EAAsC,IAAA,CAAK,GAAA,CAAI,UACjD,CAAE,aAAA,CAAe,UAAU,IAAA,CAAK,GAAA,CAAI,SAAS,CAAA,CAAG,EAChD,EAAC,CACL,GAAI,CACF,MAAM,KAAA,CAAMrnB,CAAAA,CAAK,CACf,MAAA,CAAQ,OACR,OAAA,CAAS,CAAE,eAAgB,kBAAA,CAAoB,GAAGqnB,CAAY,CAAA,CAC9D,IAAA,CAAM,IAAA,CAAK,cAAA,CAAexC,CAAM,CAClC,CAAC,EACH,CAAA,MAAQzmB,CAAAA,CAAA,CAER,CACF,CACF,ECl+BA,SAAS8pB,IAAsB,CAC7B,IAAMC,EAAe,CACnB,CAAC,EAAG,CAAA,CAAG,GAAG,CAAA,CACV,CAAC,EAAG,GAAA,CAAK,GAAG,CAAA,CACZ,CAAC,EAAG,GAAA,CAAK,CAAC,CAAA,CACV,CAAC,IAAK,GAAA,CAAK,CAAC,EACZ,CAAC,GAAA,CAAK,IAAK,CAAC,CAAA,CACZ,CAAC,GAAA,CAAK,EAAG,CAAC,CACZ,CAAA,CAEMC,CAAAA,CAAiB,EAAC,CAClBC,CAAAA,CAAkB,EAAA,CAExB,IAAA,IAASxpB,EAAI,CAAA,CAAGA,CAAAA,CAAIspB,EAAM,MAAA,CAAS,CAAA,CAAGtpB,IAAK,CACzC,GAAM,CAACypB,CAAAA,CAAIC,EAAIC,CAAE,CAAA,CAAIL,CAAAA,CAAMtpB,CAAC,EACtB,CAAC4pB,CAAAA,CAAIC,CAAAA,CAAIC,CAAE,EAAIR,CAAAA,CAAMtpB,CAAAA,CAAI,CAAC,CAAA,CAChC,IAAA,IAASF,EAAI,CAAA,CAAGA,CAAAA,CAAI0pB,CAAAA,CAAiB1pB,CAAAA,EAAAA,CAAK,CACxC,IAAMof,CAAAA,CAAIpf,EAAI0pB,CAAAA,CACdD,CAAAA,CAAQ,KAAK,CACX,IAAA,CAAK,KAAA,CAAME,CAAAA,CAAAA,CAAMG,EAAKH,CAAAA,EAAMvK,CAAC,EAC7B,IAAA,CAAK,KAAA,CAAMwK,GAAMG,CAAAA,CAAKH,CAAAA,EAAMxK,CAAC,CAAA,CAC7B,KAAK,KAAA,CAAMyK,CAAAA,CAAAA,CAAMG,CAAAA,CAAKH,CAAAA,EAAMzK,CAAC,CAC/B,CAAC,EACH,CACF,CAEA,OAAOqK,CACT,CAEA,IAAMQ,EAAAA,CAAgBV,IAAa,CAsB5B,SAASW,EAAAA,CACdljB,CAAAA,CACAmjB,EACAnmB,CAAAA,CAAgC,EAAC,CAC3B,CACN,GAAM,CAAE,MAAA,CAAAomB,CAAAA,CAAS,EAAA,CAAI,WAAAC,CAAAA,CAAa,GAAA,CAAM,WAAAC,CAAAA,CAAa,CAAE,EAAItmB,CAAAA,CAErDiD,CAAAA,CAAMD,CAAAA,CAAO,UAAA,CAAW,IAAI,CAAA,CAClC,GAAI,CAACC,CAAAA,CAAK,OAEV,GAAM,CAAE,KAAA,CAAA2G,CAAAA,CAAO,OAAAC,CAAO,CAAA,CAAI7G,EAG1B,GAFAC,CAAAA,CAAI,UAAU,CAAA,CAAG,CAAA,CAAG2G,CAAAA,CAAOC,CAAM,EAE7Bsc,CAAAA,CAAO,MAAA,GAAW,EAAG,OAGzB,IAAMI,EAAS,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA,CAC9CA,EAAO,KAAA,CAAQ3c,CAAAA,CACf2c,EAAO,MAAA,CAAS1c,CAAAA,CAChB,IAAM2c,CAAAA,CAAOD,CAAAA,CAAO,UAAA,CAAW,IAAI,EACnC,GAAI,CAACC,CAAAA,CAAM,OAEX,QAAWC,CAAAA,IAAMN,CAAAA,CAAQ,CACvB,IAAMxmB,EAAK8mB,CAAAA,CAAG,IAAA,CAAO,IAAO7c,CAAAA,CACtBhK,CAAAA,CAAK6mB,EAAG,IAAA,CAAO,GAAA,CAAO5c,CAAAA,CAEtBxO,CAAAA,CAAIorB,EAAG,IAAA,GAAS,OAAA,CAAUL,CAAAA,CAAS,GAAA,CAAMA,EAEzCM,CAAAA,CAAOF,CAAAA,CAAK,oBAAA,CAAqB7mB,CAAAA,CAAGC,EAAG,CAAA,CAAGD,CAAAA,CAAGC,EAAGvE,CAAC,CAAA,CACvDqrB,EAAK,YAAA,CAAa,CAAA,CAAG,kBAAkB,CAAA,CACvCA,EAAK,YAAA,CAAa,CAAA,CAAG,eAAe,CAAA,CAEpCF,EAAK,SAAA,CAAYE,CAAAA,CACjBF,CAAAA,CAAK,SAAA,GACLA,CAAAA,CAAK,GAAA,CAAI7mB,EAAGC,CAAAA,CAAGvE,CAAAA,CAAG,EAAG,IAAA,CAAK,EAAA,CAAK,CAAC,CAAA,CAChCmrB,EAAK,IAAA,GACP,CAGA,IAAMG,CAAAA,CAAUH,EAAK,YAAA,CAAa,CAAA,CAAG,CAAA,CAAG5c,CAAAA,CAAOC,CAAM,CAAA,CAC/C9N,CAAAA,CAAMkH,EAAI,eAAA,CAAgB2G,CAAAA,CAAOC,CAAM,CAAA,CACvCvJ,CAAAA,CAAMqmB,CAAAA,CAAQ,IAAA,CACdC,EAAM7qB,CAAAA,CAAI,IAAA,CACV8qB,CAAAA,CAAUZ,EAAAA,CAAc,OAAS,CAAA,CAEvC,IAAA,IAASjqB,CAAAA,CAAI,CAAA,CAAGA,EAAIsE,CAAAA,CAAI,MAAA,CAAQtE,GAAK,CAAA,CAAG,CACtC,IAAM8qB,CAAAA,CAAQxmB,CAAAA,CAAItE,CAAAA,CAAI,CAAC,EACvB,GAAI8qB,CAAAA,GAAU,EAAG,SAEjB,IAAMC,EAAQD,CAAAA,CAAQ,GAAA,CAChBE,CAAAA,CAAW,IAAA,CAAK,IAAI,IAAA,CAAK,KAAA,CAAMD,EAAQF,CAAO,CAAA,CAAGA,CAAO,CAAA,CACxD,CAACxrB,CAAAA,CAAG4rB,CAAAA,CAAGrN,CAAC,CAAA,CAAIqM,EAAAA,CAAce,CAAQ,CAAA,CAClCE,EAAUZ,CAAAA,CAAaS,CAAAA,EAASV,CAAAA,CAAaC,CAAAA,CAAAA,CAEnDM,EAAI5qB,CAAC,CAAA,CAAIX,EACTurB,CAAAA,CAAI5qB,CAAAA,CAAI,CAAC,CAAA,CAAIirB,CAAAA,CACbL,CAAAA,CAAI5qB,CAAAA,CAAI,CAAC,CAAA,CAAI4d,CAAAA,CACbgN,EAAI5qB,CAAAA,CAAI,CAAC,EAAI,IAAA,CAAK,KAAA,CAAMkrB,CAAAA,CAAU,GAAG,EACvC,CAEAjkB,CAAAA,CAAI,aAAalH,CAAAA,CAAK,CAAA,CAAG,CAAC,EAC5B","file":"index.js","sourcesContent":["/** Derive API root from events endpoint, e.g. `…/api/events` → `…/api`. */\nexport function apiBaseFromEventsEndpoint(endpoint: string): string {\n return endpoint.replace(/\\/events\\/?$/, \"\");\n}\n","const SESSION_STORAGE_KEY = \"__ut_sid__\";\nconst VISITOR_STORAGE_KEY = \"__ut_vid__\";\n\n/** Generate a RFC-4122 v4 UUID using the native crypto API with a fallback. */\nexport function generateSessionId(): string {\n if (\n typeof crypto !== \"undefined\" &&\n typeof crypto.randomUUID === \"function\"\n ) {\n return crypto.randomUUID();\n }\n // Math.random fallback (not cryptographically secure, but sufficient for analytics)\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * Retrieve the session ID from sessionStorage, or create and persist a new one.\n * Falls back to an in-memory ID when sessionStorage is unavailable (e.g. SSR).\n */\nexport function getOrCreateSessionId(): string {\n if (typeof sessionStorage === \"undefined\") return generateSessionId();\n try {\n const existing = sessionStorage.getItem(SESSION_STORAGE_KEY);\n if (existing) return existing;\n const id = generateSessionId();\n sessionStorage.setItem(SESSION_STORAGE_KEY, id);\n return id;\n } catch {\n return generateSessionId();\n }\n}\n\n/**\n * Retrieve the visitor ID from localStorage (persists across sessions/tabs),\n * or create and store a new one. Returns a temporary in-memory ID when\n * localStorage is unavailable.\n */\nexport function getOrCreateVisitorId(): string {\n if (typeof localStorage === \"undefined\") return generateSessionId();\n try {\n const existing = localStorage.getItem(VISITOR_STORAGE_KEY);\n if (existing) return existing;\n const id = generateSessionId();\n localStorage.setItem(VISITOR_STORAGE_KEY, id);\n return id;\n } catch {\n return generateSessionId();\n }\n}\n","/**\n * Canonical URL path (+ optional query) for analytics / heatmap matching.\n *\n * Next.js `usePathname()` often returns percent-encoded segments while\n * `window.location.pathname` is decoded — without normalization the backend\n * cannot match registered heatmap pages or aggregate the same route.\n */\nexport function normalizeTrackerPath(path: string): string {\n if (!path) return path;\n const q = path.indexOf(\"?\");\n const pathname = q >= 0 ? path.slice(0, q) : path;\n const search = q >= 0 ? path.slice(q) : \"\";\n\n let out = pathname;\n for (let i = 0; i < 5; i++) {\n try {\n const dec = decodeURIComponent(out);\n if (dec === out) break;\n out = dec;\n } catch {\n break;\n }\n }\n\n let s = search;\n for (let i = 0; i < 5; i++) {\n try {\n const dec = decodeURIComponent(s);\n if (dec === s) break;\n s = dec;\n } catch {\n break;\n }\n }\n\n return out + s;\n}\n","import type { TrackerEvent } from \"../types\";\nimport { normalizeTrackerPath } from \"../utils/normalize-tracker-path\";\n\ntype EmitFn = (event: TrackerEvent) => void;\n\ninterface NavigationPluginOptions {\n emit: EmitFn;\n sessionId: string;\n}\n\n/** Persisted across full page loads (same tab, same origin) for MPA U-turn detection. */\nconst SS_LAST_PV_PATH = \"__ut_last_pv_path__\";\nconst SS_LAST_PV_ENTRY_MS = \"__ut_last_pv_entry_ms__\";\n\nfunction safeSessionStorageGet(key: string): string | null {\n if (typeof sessionStorage === \"undefined\") return null;\n try {\n return sessionStorage.getItem(key);\n } catch {\n return null;\n }\n}\n\nfunction safeSessionStorageSet(key: string, value: string): void {\n if (typeof sessionStorage === \"undefined\") return;\n try {\n sessionStorage.setItem(key, value);\n } catch {\n /* quota / private mode */\n }\n}\n\nfunction persistLastPageView(path: string, pageEntryMs: number): void {\n safeSessionStorageSet(SS_LAST_PV_PATH, path);\n safeSessionStorageSet(SS_LAST_PV_ENTRY_MS, String(pageEntryMs));\n}\n\n/**\n * `navigate` | `reload` | `back_forward` | `prerender`, or legacy back/forward.\n */\nfunction getNavigationEntryType(): string | undefined {\n if (typeof performance === \"undefined\") return undefined;\n const list = performance.getEntriesByType(\n \"navigation\",\n ) as PerformanceNavigationTiming[];\n const nav = list[0];\n if (nav?.type) return nav.type;\n const legacy = (\n performance as unknown as { navigation?: { type?: number } }\n ).navigation;\n if (legacy?.type === 2) return \"back_forward\";\n return undefined;\n}\n\n/**\n * Tracks SPA route changes by monkey-patching history.pushState /\n * history.replaceState and listening to the popstate event.\n *\n * For every navigation it:\n * 1. Emits a `pageview` event.\n * 2. Dispatches the custom DOM event `tracker:navigate` so that other\n * plugins (TimePlugin, HeatmapPlugin) can react without having to\n * duplicate the pushState patching.\n * 3. Detects U-turns: if the user leaves a page in ≤5 s, a `uturn` event\n * is emitted with the time-on-page and destination path.\n *\n * **Multi-page sites (WordPress, etc.):** full reloads do not call\n * `pushState`. On browser Back/Forward, a new document loads; we detect\n * `PerformanceNavigationTiming.type === \"back_forward\"` and compare the\n * previous URL + entry time stored in `sessionStorage` to emit the same\n * `uturn` event as SPAs.\n *\n * Next.js App Router note:\n * The App Router manages navigation internally; use `usePageView(pathname)`\n * from `user-tracker/react` together with `usePathname()` instead.\n */\nexport class NavigationPlugin {\n private readonly emit: EmitFn;\n private readonly sessionId: string;\n private previousPath = \"\";\n private originalPushState: typeof history.pushState | null = null;\n private originalReplaceState: typeof history.replaceState | null = null;\n private pageEntryTime = 0;\n private static readonly UTURN_THRESHOLD_MS = 5_000;\n\n constructor({ emit, sessionId }: NavigationPluginOptions) {\n this.emit = emit;\n this.sessionId = sessionId;\n }\n\n init(): void {\n const newPath = normalizeTrackerPath(\n window.location.pathname + window.location.search,\n );\n\n // MPA: user returned via history after a full page load (e.g. WordPress).\n if (getNavigationEntryType() === \"back_forward\") {\n this.tryEmitMpaHistoryTraversalUturn(newPath);\n }\n\n this.recordPageView(newPath);\n\n window.addEventListener(\"popstate\", this.handlePopState);\n\n // Patch pushState\n this.originalPushState = history.pushState.bind(history);\n const origPush = this.originalPushState;\n history.pushState = (state, title, url): void => {\n origPush(state, title, url);\n this.handleNavigation();\n };\n\n // Patch replaceState\n this.originalReplaceState = history.replaceState.bind(history);\n const origReplace = this.originalReplaceState;\n history.replaceState = (state, title, url): void => {\n origReplace(state, title, url);\n this.handleNavigation();\n };\n }\n\n destroy(): void {\n window.removeEventListener(\"popstate\", this.handlePopState);\n if (this.originalPushState) history.pushState = this.originalPushState;\n if (this.originalReplaceState)\n history.replaceState = this.originalReplaceState;\n }\n\n // Arrow property → always bound to `this`, safe to use as event listener.\n private handlePopState = (): void => {\n this.handleNavigation();\n };\n\n /**\n * After a full navigation away from `lastPath`, sessionStorage still holds\n * that page's path and entry time. If this load is a history traversal to a\n * *different* URL and dwell time on the previous page was ≤ threshold, emit\n * `uturn` (same semantics as SPA `handleNavigation`).\n */\n private tryEmitMpaHistoryTraversalUturn(newPath: string): void {\n const lastPath = safeSessionStorageGet(SS_LAST_PV_PATH);\n const lastMsRaw = safeSessionStorageGet(SS_LAST_PV_ENTRY_MS);\n const lastEntryMs = lastMsRaw ? Number(lastMsRaw) : 0;\n if (!lastPath || !Number.isFinite(lastEntryMs) || lastEntryMs <= 0) return;\n if (normalizeTrackerPath(lastPath) === newPath) return;\n\n const timeOnPage = Date.now() - lastEntryMs;\n if (timeOnPage < 0 || timeOnPage > NavigationPlugin.UTURN_THRESHOLD_MS)\n return;\n\n this.emitUturn(normalizeTrackerPath(lastPath), newPath, timeOnPage);\n }\n\n private handleNavigation(): void {\n const newPath = normalizeTrackerPath(\n window.location.pathname + window.location.search,\n );\n if (newPath === this.previousPath) return; // hash-only or duplicate call\n\n // U-turn detection: user left the previous page very quickly.\n if (this.previousPath && this.pageEntryTime > 0) {\n const timeOnPage = Date.now() - this.pageEntryTime;\n if (timeOnPage <= NavigationPlugin.UTURN_THRESHOLD_MS) {\n this.emitUturn(this.previousPath, newPath, timeOnPage);\n }\n }\n\n this.recordPageView(newPath);\n }\n\n private emitUturn(\n fromPath: string,\n toPath: string,\n timeOnPageMs: number,\n ): void {\n this.emit({\n type: \"uturn\",\n data: {\n fromPath,\n toPath,\n timeOnPageMs,\n timestamp: Date.now(),\n sessionId: this.sessionId,\n },\n });\n }\n\n private recordPageView(path: string): void {\n const p = normalizeTrackerPath(path);\n this.previousPath = p;\n this.pageEntryTime = Date.now();\n\n persistLastPageView(p, this.pageEntryTime);\n\n this.emit({\n type: \"pageview\",\n data: {\n path: p,\n title: document.title,\n timestamp: Date.now(),\n sessionId: this.sessionId,\n referrer: document.referrer || undefined,\n },\n });\n\n // Notify other plugins via a custom DOM event (synchronous dispatch).\n window.dispatchEvent(\n new CustomEvent(\"tracker:navigate\", {\n detail: { path: p, title: document.title },\n }),\n );\n }\n}\n","import type { TrackerEvent } from \"../types\";\nimport { normalizeTrackerPath } from \"../utils/normalize-tracker-path\";\n\ntype EmitFn = (event: TrackerEvent) => void;\n\ninterface TimePluginOptions {\n emit: EmitFn;\n sessionId: string;\n}\n\n/**\n * Tracks the time a user spends on each page.\n *\n * - Starts a timer when the page becomes active (init / tab focus).\n * - Stops and emits a `timespent` event when:\n * • The user navigates away (tracker:navigate)\n * • The tab is hidden (visibilitychange)\n * • The page is unloading (beforeunload / pagehide)\n * - Resumes timing when the tab becomes visible again.\n */\nexport class TimePlugin {\n private readonly emit: EmitFn;\n private readonly sessionId: string;\n private currentPath = \"\";\n private startTime = 0;\n private tracking = false;\n\n constructor({ emit, sessionId }: TimePluginOptions) {\n this.emit = emit;\n this.sessionId = sessionId;\n }\n\n init(): void {\n this.currentPath = normalizeTrackerPath(\n window.location.pathname + window.location.search,\n );\n this.startTracking();\n\n window.addEventListener(\"tracker:navigate\", this.handleNavigate);\n document.addEventListener(\"visibilitychange\", this.handleVisibilityChange);\n window.addEventListener(\"beforeunload\", this.handleUnload);\n window.addEventListener(\"pagehide\", this.handleUnload);\n }\n\n destroy(): void {\n this.stopTracking();\n window.removeEventListener(\"tracker:navigate\", this.handleNavigate);\n document.removeEventListener(\n \"visibilitychange\",\n this.handleVisibilityChange,\n );\n window.removeEventListener(\"beforeunload\", this.handleUnload);\n window.removeEventListener(\"pagehide\", this.handleUnload);\n }\n\n private startTracking(): void {\n this.startTime = Date.now();\n this.tracking = true;\n }\n\n private stopTracking(): void {\n if (!this.tracking || !this.currentPath) return;\n const duration = Date.now() - this.startTime;\n if (duration < 100) {\n this.tracking = false;\n return; // Ignore sub-100 ms blips (e.g. rapid navigations).\n }\n this.emit({\n type: \"timespent\",\n data: {\n path: this.currentPath,\n duration,\n sessionId: this.sessionId,\n timestamp: Date.now(),\n },\n });\n this.tracking = false;\n }\n\n private handleNavigate = (e: CustomEvent<{ path: string }>): void => {\n this.stopTracking();\n this.currentPath = normalizeTrackerPath(e.detail.path);\n this.startTracking();\n };\n\n private handleVisibilityChange = (): void => {\n if (document.hidden) {\n this.stopTracking();\n } else {\n this.startTracking();\n }\n };\n\n private handleUnload = (): void => {\n this.stopTracking();\n };\n}\n","/**\n * Returns a function that invokes `fn` at most once every `delay` ms.\n * The first call in a new window is executed immediately.\n */\nexport function throttle<Args extends unknown[]>(\n fn: (...args: Args) => void,\n delay: number,\n): (...args: Args) => void {\n let lastCall = 0;\n return (...args: Args): void => {\n const now = Date.now();\n if (now - lastCall >= delay) {\n lastCall = now;\n fn(...args);\n }\n };\n}\n","import type { TrackerEvent, HeatmapPoint } from \"../types\";\nimport { normalizeTrackerPath } from \"../utils/normalize-tracker-path\";\nimport { throttle } from \"../utils/throttle\";\n\ntype EmitFn = (event: TrackerEvent) => void;\n\ninterface HeatmapPluginOptions {\n emit: EmitFn;\n sessionId: string;\n /** Fraction of mousemove / scroll events to sample (0–1). Default: 0.3 */\n sampleRate?: number;\n /** Maximum points stored per page before recording stops. Default: 2000 */\n maxPoints?: number;\n /**\n * If provided, heatmap data will only be collected for paths in this list.\n * An empty array or undefined means all pages are tracked.\n */\n allowedPaths?: string[];\n}\n\n/**\n * Collects mouse-move, click, and scroll positions for heatmap analysis.\n *\n * Also detects rage clicks (≥3 clicks within 1 s in a 50 px radius) and emits\n * a `rageclik` event so the backend can surface problematic UI hotspots.\n *\n * Click events include an optional `target` field containing a human-readable\n * label for the clicked element (aria-label › id › button/link text).\n */\nexport class HeatmapPlugin {\n private readonly emit: EmitFn;\n private readonly sessionId: string;\n private readonly sampleRate: number;\n private readonly maxPoints: number;\n private readonly allowedPaths: Set<string> | null;\n private currentPath = \"\";\n private pointCounts: Record<string, number> = {};\n\n // Rage-click detection state\n private recentClicks: { x: number; y: number; t: number }[] = [];\n private static readonly RAGE_THRESHOLD = 3;\n private static readonly RAGE_WINDOW_MS = 1_000;\n private static readonly RAGE_RADIUS_PX = 50;\n\n private readonly throttledMouseMove: (e: MouseEvent) => void;\n private readonly throttledScroll: () => void;\n\n constructor({\n emit,\n sessionId,\n sampleRate = 0.3,\n maxPoints = 2000,\n allowedPaths,\n }: HeatmapPluginOptions) {\n this.emit = emit;\n this.sessionId = sessionId;\n this.sampleRate = sampleRate;\n this.maxPoints = maxPoints;\n this.allowedPaths =\n allowedPaths && allowedPaths.length > 0\n ? new Set(allowedPaths.map((p) => normalizeTrackerPath(p)))\n : null;\n\n this.throttledMouseMove = throttle(this.handleMouseMove, 50);\n this.throttledScroll = throttle(this.handleScroll, 100);\n }\n\n init(): void {\n this.currentPath = normalizeTrackerPath(\n window.location.pathname + window.location.search,\n );\n\n document.addEventListener(\"mousemove\", this.throttledMouseMove);\n document.addEventListener(\"click\", this.handleClick);\n document.addEventListener(\"touchend\", this.handleTouchEnd, {\n passive: true,\n });\n window.addEventListener(\"scroll\", this.throttledScroll, { passive: true });\n window.addEventListener(\"tracker:navigate\", this.handleNavigate);\n }\n\n destroy(): void {\n document.removeEventListener(\"mousemove\", this.throttledMouseMove);\n document.removeEventListener(\"click\", this.handleClick);\n document.removeEventListener(\"touchend\", this.handleTouchEnd);\n window.removeEventListener(\"scroll\", this.throttledScroll);\n window.removeEventListener(\"tracker:navigate\", this.handleNavigate);\n }\n\n private canRecord(): boolean {\n if (\n this.allowedPaths !== null &&\n !this.allowedPaths.has(this.currentPath)\n ) {\n return false;\n }\n return (this.pointCounts[this.currentPath] ?? 0) < this.maxPoints;\n }\n\n private recordPoint(\n point: Omit<HeatmapPoint, \"path\" | \"timestamp\" | \"sessionId\">,\n ): void {\n if (!this.canRecord()) return;\n this.pointCounts[this.currentPath] =\n (this.pointCounts[this.currentPath] ?? 0) + 1;\n this.emit({\n type: \"heatmap\",\n data: {\n ...point,\n path: this.currentPath,\n timestamp: Date.now(),\n },\n });\n }\n\n /** Extract a human-readable label for the clicked element. */\n private getClickTarget(e: MouseEvent): string | undefined {\n const el = e.target as HTMLElement | null;\n if (!el) return undefined;\n const label =\n el.getAttribute(\"aria-label\") ||\n el.closest(\"[aria-label]\")?.getAttribute(\"aria-label\") ||\n el.getAttribute(\"data-track-label\") ||\n el.getAttribute(\"id\") ||\n (el instanceof HTMLButtonElement || el instanceof HTMLAnchorElement\n ? el.innerText?.trim().slice(0, 60)\n : el.closest(\"button, a\")?.textContent?.trim().slice(0, 60));\n return label || undefined;\n }\n\n /** Detect rage-click bursts and emit a `rageclik` event when found. */\n private checkRageClick(x: number, y: number, path: string): void {\n const now = Date.now();\n this.recentClicks = this.recentClicks.filter(\n (c) => now - c.t < HeatmapPlugin.RAGE_WINDOW_MS,\n );\n this.recentClicks.push({ x, y, t: now });\n\n const nearby = this.recentClicks.filter(\n (c) => Math.hypot(c.x - x, c.y - y) <= HeatmapPlugin.RAGE_RADIUS_PX,\n );\n\n if (nearby.length >= HeatmapPlugin.RAGE_THRESHOLD) {\n this.emit({\n type: \"rageclik\",\n data: {\n path,\n x,\n y,\n count: nearby.length,\n timestamp: now,\n sessionId: this.sessionId,\n },\n });\n // Reset to avoid continuously re-triggering in the same burst.\n this.recentClicks = [];\n }\n }\n\n private handleMouseMove = (e: MouseEvent): void => {\n if (Math.random() > this.sampleRate) return;\n const pageWidth = document.documentElement.scrollWidth;\n const pageHeight = document.documentElement.scrollHeight;\n const absY = e.clientY + window.scrollY;\n this.recordPoint({\n x: e.clientX,\n y: absY,\n xPct: pageWidth > 0 ? (e.clientX / pageWidth) * 100 : 0,\n yPct: pageHeight > 0 ? (absY / pageHeight) * 100 : 0,\n pw: pageWidth,\n ph: pageHeight,\n type: \"move\",\n });\n };\n\n private handleClick = (e: MouseEvent): void => {\n // Skip if a touchend already recorded this tap (within 500 ms)\n if (Date.now() - this.lastTouchTime < 500) return;\n const pageWidth = document.documentElement.scrollWidth;\n const pageHeight = document.documentElement.scrollHeight;\n const absY = e.clientY + window.scrollY;\n const target = this.getClickTarget(e);\n this.recordPoint({\n x: e.clientX,\n y: absY,\n xPct: pageWidth > 0 ? (e.clientX / pageWidth) * 100 : 0,\n yPct: pageHeight > 0 ? (absY / pageHeight) * 100 : 0,\n pw: pageWidth,\n ph: pageHeight,\n type: \"click\",\n ...(target ? { target } : {}),\n });\n this.checkRageClick(e.clientX, absY, this.currentPath);\n };\n\n /**\n * Records taps on touch devices.\n * Mobile browsers do fire a synthetic `click` after `touchend`, but some\n * frameworks call `preventDefault()` on touch events which suppresses it.\n * Listening to `touchend` directly ensures taps are always captured.\n * We mark the point with a short-lived flag so the subsequent synthetic\n * `click` event (if it fires) is deduplicated.\n */\n private lastTouchTime = 0;\n\n private handleTouchEnd = (e: TouchEvent): void => {\n const touch = e.changedTouches[0];\n if (!touch) return;\n const pageWidth = document.documentElement.scrollWidth;\n const pageHeight = document.documentElement.scrollHeight;\n const absY = touch.clientY + window.scrollY;\n this.lastTouchTime = Date.now();\n this.recordPoint({\n x: touch.clientX,\n y: absY,\n xPct: pageWidth > 0 ? (touch.clientX / pageWidth) * 100 : 0,\n yPct: pageHeight > 0 ? (absY / pageHeight) * 100 : 0,\n pw: pageWidth,\n ph: pageHeight,\n type: \"click\",\n });\n this.checkRageClick(touch.clientX, absY, this.currentPath);\n };\n\n private handleScroll = (): void => {\n if (Math.random() > this.sampleRate) return;\n const pageWidth = document.documentElement.scrollWidth;\n const pageHeight = document.documentElement.scrollHeight;\n const vw = window.innerWidth;\n const scrollX = window.scrollX;\n const scrollY = window.scrollY;\n const absX = scrollX + vw / 2;\n this.recordPoint({\n x: vw / 2,\n y: scrollY,\n xPct: pageWidth > 0 ? (absX / pageWidth) * 100 : 50,\n yPct: pageHeight > 0 ? (scrollY / pageHeight) * 100 : 0,\n pw: pageWidth,\n ph: pageHeight,\n type: \"scroll\",\n });\n };\n\n private handleNavigate = (e: CustomEvent<{ path: string }>): void => {\n this.currentPath = normalizeTrackerPath(e.detail.path);\n };\n}\n","export type LogLevel = \"info\" | \"warn\" | \"error\";\n\nexport interface LogEntry {\n sessionId?: string;\n appId?: string;\n level: LogLevel;\n message: string;\n url?: string;\n stack?: string;\n meta?: Record<string, unknown>;\n timestamp: number;\n}\n\ntype ConsoleFn = (...args: unknown[]) => void;\n\n/**\n * Automatically captures console.info/warn/error output and unhandled errors,\n * then ships them to the backend `/logs/ingest` endpoint.\n *\n * All console methods are restored exactly in `destroy()`.\n */\nexport class LogCapture {\n private readonly endpoint: string;\n private readonly sessionId: string;\n private readonly appId?: string;\n private readonly authHeaders: Record<string, string>;\n\n // Original console methods preserved so we can restore them.\n private origInfo!: ConsoleFn;\n private origWarn!: ConsoleFn;\n private origError!: ConsoleFn;\n\n private prevOnError: OnErrorEventHandler = null;\n private prevOnUnhandledRejection:\n | ((e: PromiseRejectionEvent) => void)\n | null = null;\n\n private initialized = false;\n\n constructor(options: {\n endpoint: string;\n sessionId: string;\n secretKey?: string;\n appId?: string;\n }) {\n // Derive the API base URL by stripping everything from the last path\n // segment that isn't a versioning prefix. The tracker config `endpoint`\n // is the *events* URL (e.g. http://host/api/events), but logs live at\n // http://host/api/logs/ingest, so we walk up until we reach the common\n // base (i.e. remove the final segment).\n try {\n const u = new URL(options.endpoint);\n // Remove the last non-empty path segment (e.g. \"/api/events\" → \"/api\")\n const parts = u.pathname.replace(/\\/$/, \"\").split(\"/\");\n parts.pop();\n u.pathname = parts.join(\"/\") || \"/\";\n this.endpoint = u.toString().replace(/\\/$/, \"\");\n } catch {\n this.endpoint = options.endpoint;\n }\n this.sessionId = options.sessionId;\n this.appId = options.appId;\n this.authHeaders = options.secretKey\n ? { Authorization: `Bearer ${options.secretKey}` }\n : {};\n }\n\n init(): void {\n if (typeof window === \"undefined\" || this.initialized) return;\n\n this.origInfo = console.info.bind(console);\n this.origWarn = console.warn.bind(console);\n this.origError = console.error.bind(console);\n\n console.info = (...args: unknown[]) => {\n this.origInfo(...args);\n this.send(\"info\", this.format(args));\n };\n\n console.warn = (...args: unknown[]) => {\n this.origWarn(...args);\n this.send(\"warn\", this.format(args));\n };\n\n console.error = (...args: unknown[]) => {\n this.origError(...args);\n const [first] = args;\n const stack = first instanceof Error ? first.stack : undefined;\n this.send(\"error\", this.format(args), { stack });\n };\n\n this.prevOnError = window.onerror;\n window.onerror = (msg, src, line, col, err) => {\n this.send(\"error\", String(msg), {\n stack: err?.stack,\n meta: { src, line, col },\n });\n if (typeof this.prevOnError === \"function\") {\n return this.prevOnError(msg, src, line, col, err);\n }\n return false;\n };\n\n this.prevOnUnhandledRejection = (e: PromiseRejectionEvent) => {\n const reason = e.reason;\n const message =\n reason instanceof Error\n ? reason.message\n : String(reason ?? \"Unhandled promise rejection\");\n this.send(\"error\", message, {\n stack: reason instanceof Error ? reason.stack : undefined,\n });\n };\n window.addEventListener(\n \"unhandledrejection\",\n this.prevOnUnhandledRejection,\n );\n\n this.initialized = true;\n }\n\n destroy(): void {\n if (!this.initialized) return;\n console.info = this.origInfo;\n console.warn = this.origWarn;\n console.error = this.origError;\n\n window.onerror = this.prevOnError;\n if (this.prevOnUnhandledRejection) {\n window.removeEventListener(\n \"unhandledrejection\",\n this.prevOnUnhandledRejection,\n );\n }\n this.initialized = false;\n }\n\n /** Manually capture a log entry (e.g. from try/catch). */\n capture(\n level: LogLevel,\n message: string,\n extra?: { stack?: string; meta?: Record<string, unknown> },\n ): void {\n this.send(level, message, extra);\n }\n\n private format(args: unknown[]): string {\n return args\n .map((a) => {\n if (a instanceof Error) return a.message;\n if (typeof a === \"object\") {\n try {\n return JSON.stringify(a);\n } catch {\n return String(a);\n }\n }\n return String(a);\n })\n .join(\" \");\n }\n\n private send(\n level: LogLevel,\n message: string,\n extra?: { stack?: string; meta?: Record<string, unknown> },\n ): void {\n const entry: LogEntry = {\n sessionId: this.sessionId,\n ...(this.appId ? { appId: this.appId } : {}),\n level,\n message,\n url: typeof window !== \"undefined\" ? window.location.href : undefined,\n stack: extra?.stack,\n meta: extra?.meta,\n timestamp: Date.now(),\n };\n const url = `${this.endpoint}/logs/ingest`;\n const body = JSON.stringify(entry);\n\n // Use fetch with keepalive so the request survives page navigation.\n // Errors are logged to the (original, unpatched) console so they are\n // visible in DevTools without creating an infinite log loop.\n void fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...this.authHeaders },\n body,\n keepalive: true,\n }).catch((err: unknown) => {\n // Use the original (pre-patch) error logger to avoid recursion.\n if (this.origError) {\n this.origError(\"[user-tracker] Failed to send log:\", err);\n }\n });\n }\n}\n","var NodeType;\r\n(function (NodeType) {\r\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\r\n return n.nodeType === n.ELEMENT_NODE;\r\n}\r\nfunction isShadowRoot(n) {\r\n var host = n === null || n === void 0 ? void 0 : n.host;\r\n return Boolean((host === null || host === void 0 ? void 0 : host.shadowRoot) === n);\r\n}\r\nfunction isNativeShadowDom(shadowRoot) {\r\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\r\n}\r\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\r\n if (cssText.includes(' background-clip: text;') &&\r\n !cssText.includes(' -webkit-background-clip: text;')) {\r\n cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\r\n }\r\n return cssText;\r\n}\r\nfunction getCssRulesString(s) {\r\n try {\r\n var rules = s.rules || s.cssRules;\r\n return rules\r\n ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules).map(getCssRuleString).join(''))\r\n : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n}\r\nfunction getCssRuleString(rule) {\r\n var cssStringified = rule.cssText;\r\n if (isCSSImportRule(rule)) {\r\n try {\r\n cssStringified = getCssRulesString(rule.styleSheet) || cssStringified;\r\n }\r\n catch (_a) {\r\n }\r\n }\r\n return cssStringified;\r\n}\r\nfunction isCSSImportRule(rule) {\r\n return 'styleSheet' in rule;\r\n}\r\nvar Mirror = (function () {\r\n function Mirror() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n Mirror.prototype.getId = function (n) {\r\n var _a;\r\n if (!n)\r\n return -1;\r\n var id = (_a = this.getMeta(n)) === null || _a === void 0 ? void 0 : _a.id;\r\n return id !== null && id !== void 0 ? id : -1;\r\n };\r\n Mirror.prototype.getNode = function (id) {\r\n return this.idNodeMap.get(id) || null;\r\n };\r\n Mirror.prototype.getIds = function () {\r\n return Array.from(this.idNodeMap.keys());\r\n };\r\n Mirror.prototype.getMeta = function (n) {\r\n return this.nodeMetaMap.get(n) || null;\r\n };\r\n Mirror.prototype.removeNodeFromMap = function (n) {\r\n var _this = this;\r\n var id = this.getId(n);\r\n this.idNodeMap[\"delete\"](id);\r\n if (n.childNodes) {\r\n n.childNodes.forEach(function (childNode) {\r\n return _this.removeNodeFromMap(childNode);\r\n });\r\n }\r\n };\r\n Mirror.prototype.has = function (id) {\r\n return this.idNodeMap.has(id);\r\n };\r\n Mirror.prototype.hasNode = function (node) {\r\n return this.nodeMetaMap.has(node);\r\n };\r\n Mirror.prototype.add = function (n, meta) {\r\n var id = meta.id;\r\n this.idNodeMap.set(id, n);\r\n this.nodeMetaMap.set(n, meta);\r\n };\r\n Mirror.prototype.replace = function (id, n) {\r\n var oldNode = this.getNode(id);\r\n if (oldNode) {\r\n var meta = this.nodeMetaMap.get(oldNode);\r\n if (meta)\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n this.idNodeMap.set(id, n);\r\n };\r\n Mirror.prototype.reset = function () {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n };\r\n return Mirror;\r\n}());\r\nfunction createMirror() {\r\n return new Mirror();\r\n}\r\nfunction maskInputValue(_a) {\r\n var maskInputOptions = _a.maskInputOptions, tagName = _a.tagName, type = _a.type, value = _a.value, maskInputFn = _a.maskInputFn;\r\n var text = value || '';\r\n if (maskInputOptions[tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n if (maskInputFn) {\r\n text = maskInputFn(text);\r\n }\r\n else {\r\n text = '*'.repeat(text.length);\r\n }\r\n }\r\n return text;\r\n}\r\nvar ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nfunction is2DCanvasBlank(canvas) {\r\n var ctx = canvas.getContext('2d');\r\n if (!ctx)\r\n return true;\r\n var chunkSize = 50;\r\n for (var x = 0; x < canvas.width; x += chunkSize) {\r\n for (var y = 0; y < canvas.height; y += chunkSize) {\r\n var getImageData = ctx.getImageData;\r\n var originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\r\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\r\n : getImageData;\r\n var pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\r\n if (pixelBuffer.some(function (pixel) { return pixel !== 0; }))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\n\nvar _id = 1;\r\nvar tagNameRegex = new RegExp('[^a-z0-9-_:]');\r\nvar IGNORED_NODE = -2;\r\nfunction genId() {\r\n return _id++;\r\n}\r\nfunction getValidTagName(element) {\r\n if (element instanceof HTMLFormElement) {\r\n return 'form';\r\n }\r\n var processedTagName = element.tagName.toLowerCase().trim();\r\n if (tagNameRegex.test(processedTagName)) {\r\n return 'div';\r\n }\r\n return processedTagName;\r\n}\r\nfunction stringifyStyleSheet(sheet) {\r\n return sheet.cssRules\r\n ? Array.from(sheet.cssRules)\r\n .map(function (rule) { return rule.cssText || ''; })\r\n .join('')\r\n : '';\r\n}\r\nfunction extractOrigin(url) {\r\n var origin = '';\r\n if (url.indexOf('//') > -1) {\r\n origin = url.split('/').slice(0, 3).join('/');\r\n }\r\n else {\r\n origin = url.split('/')[0];\r\n }\r\n origin = origin.split('?')[0];\r\n return origin;\r\n}\r\nvar canvasService;\r\nvar canvasCtx;\r\nvar URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\r\nvar RELATIVE_PATH = /^(?!www\\.|(?:http|ftp)s?:\\/\\/|[A-Za-z]:\\\\|\\/\\/|#).*/;\r\nvar DATA_URI = /^(data:)([^,]*),(.*)/i;\r\nfunction absoluteToStylesheet(cssText, href) {\r\n return (cssText || '').replace(URL_IN_CSS_REF, function (origin, quote1, path1, quote2, path2, path3) {\r\n var filePath = path1 || path2 || path3;\r\n var maybeQuote = quote1 || quote2 || '';\r\n if (!filePath) {\r\n return origin;\r\n }\r\n if (!RELATIVE_PATH.test(filePath)) {\r\n return \"url(\".concat(maybeQuote).concat(filePath).concat(maybeQuote, \")\");\r\n }\r\n if (DATA_URI.test(filePath)) {\r\n return \"url(\".concat(maybeQuote).concat(filePath).concat(maybeQuote, \")\");\r\n }\r\n if (filePath[0] === '/') {\r\n return \"url(\".concat(maybeQuote).concat(extractOrigin(href) + filePath).concat(maybeQuote, \")\");\r\n }\r\n var stack = href.split('/');\r\n var parts = filePath.split('/');\r\n stack.pop();\r\n for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {\r\n var part = parts_1[_i];\r\n if (part === '.') {\r\n continue;\r\n }\r\n else if (part === '..') {\r\n stack.pop();\r\n }\r\n else {\r\n stack.push(part);\r\n }\r\n }\r\n return \"url(\".concat(maybeQuote).concat(stack.join('/')).concat(maybeQuote, \")\");\r\n });\r\n}\r\nvar SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\r\nvar SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\r\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\r\n if (attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n var pos = 0;\r\n function collectCharacters(regEx) {\r\n var chars;\r\n var match = regEx.exec(attributeValue.substring(pos));\r\n if (match) {\r\n chars = match[0];\r\n pos += chars.length;\r\n return chars;\r\n }\r\n return '';\r\n }\r\n var output = [];\r\n while (true) {\r\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\r\n if (pos >= attributeValue.length) {\r\n break;\r\n }\r\n var url = collectCharacters(SRCSET_NOT_SPACES);\r\n if (url.slice(-1) === ',') {\r\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\r\n output.push(url);\r\n }\r\n else {\r\n var descriptorsStr = '';\r\n url = absoluteToDoc(doc, url);\r\n var inParens = false;\r\n while (true) {\r\n var c = attributeValue.charAt(pos);\r\n if (c === '') {\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (!inParens) {\r\n if (c === ',') {\r\n pos += 1;\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (c === '(') {\r\n inParens = true;\r\n }\r\n }\r\n else {\r\n if (c === ')') {\r\n inParens = false;\r\n }\r\n }\r\n descriptorsStr += c;\r\n pos += 1;\r\n }\r\n }\r\n }\r\n return output.join(', ');\r\n}\r\nfunction absoluteToDoc(doc, attributeValue) {\r\n if (!attributeValue || attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n var a = doc.createElement('a');\r\n a.href = attributeValue;\r\n return a.href;\r\n}\r\nfunction isSVGElement(el) {\r\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\r\n}\r\nfunction getHref() {\r\n var a = document.createElement('a');\r\n a.href = '';\r\n return a.href;\r\n}\r\nfunction transformAttribute(doc, tagName, name, value) {\r\n if (name === 'src' ||\r\n (name === 'href' && value && !(tagName === 'use' && value[0] === '#'))) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'xlink:href' && value && value[0] !== '#') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'background' &&\r\n value &&\r\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'srcset' && value) {\r\n return getAbsoluteSrcsetString(doc, value);\r\n }\r\n else if (name === 'style' && value) {\r\n return absoluteToStylesheet(value, getHref());\r\n }\r\n else if (tagName === 'object' && name === 'data' && value) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else {\r\n return value;\r\n }\r\n}\r\nfunction _isBlockedElement(element, blockClass, blockSelector) {\r\n if (typeof blockClass === 'string') {\r\n if (element.classList.contains(blockClass)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n for (var eIndex = element.classList.length; eIndex--;) {\r\n var className = element.classList[eIndex];\r\n if (blockClass.test(className)) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (blockSelector) {\r\n return element.matches(blockSelector);\r\n }\r\n return false;\r\n}\r\nfunction classMatchesRegex(node, regex, checkAncestors) {\r\n if (!node)\r\n return false;\r\n if (node.nodeType !== node.ELEMENT_NODE) {\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n }\r\n for (var eIndex = node.classList.length; eIndex--;) {\r\n var className = node.classList[eIndex];\r\n if (regex.test(className)) {\r\n return true;\r\n }\r\n }\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n}\r\nfunction needMaskingText(node, maskTextClass, maskTextSelector) {\r\n var el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (el === null)\r\n return false;\r\n if (typeof maskTextClass === 'string') {\r\n if (el.classList.contains(maskTextClass))\r\n return true;\r\n if (el.closest(\".\".concat(maskTextClass)))\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, maskTextClass, true))\r\n return true;\r\n }\r\n if (maskTextSelector) {\r\n if (el.matches(maskTextSelector))\r\n return true;\r\n if (el.closest(maskTextSelector))\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\r\n var win = iframeEl.contentWindow;\r\n if (!win) {\r\n return;\r\n }\r\n var fired = false;\r\n var readyState;\r\n try {\r\n readyState = win.document.readyState;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (readyState !== 'complete') {\r\n var timer_1 = setTimeout(function () {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, iframeLoadTimeout);\r\n iframeEl.addEventListener('load', function () {\r\n clearTimeout(timer_1);\r\n fired = true;\r\n listener();\r\n });\r\n return;\r\n }\r\n var blankUrl = 'about:blank';\r\n if (win.location.href !== blankUrl ||\r\n iframeEl.src === blankUrl ||\r\n iframeEl.src === '') {\r\n setTimeout(listener, 0);\r\n return iframeEl.addEventListener('load', listener);\r\n }\r\n iframeEl.addEventListener('load', listener);\r\n}\r\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\r\n var fired = false;\r\n var styleSheetLoaded;\r\n try {\r\n styleSheetLoaded = link.sheet;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (styleSheetLoaded)\r\n return;\r\n var timer = setTimeout(function () {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, styleSheetLoadTimeout);\r\n link.addEventListener('load', function () {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n}\r\nfunction serializeNode(n, options) {\r\n var doc = options.doc, mirror = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c;\r\n var rootId = getRootId(doc, mirror);\r\n switch (n.nodeType) {\r\n case n.DOCUMENT_NODE:\r\n if (n.compatMode !== 'CSS1Compat') {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n compatMode: n.compatMode\r\n };\r\n }\r\n else {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: []\r\n };\r\n }\r\n case n.DOCUMENT_TYPE_NODE:\r\n return {\r\n type: NodeType.DocumentType,\r\n name: n.name,\r\n publicId: n.publicId,\r\n systemId: n.systemId,\r\n rootId: rootId\r\n };\r\n case n.ELEMENT_NODE:\r\n return serializeElementNode(n, {\r\n doc: doc,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskInputFn: maskInputFn,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: newlyAddedElement,\r\n rootId: rootId\r\n });\r\n case n.TEXT_NODE:\r\n return serializeTextNode(n, {\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n maskTextFn: maskTextFn,\r\n rootId: rootId\r\n });\r\n case n.CDATA_SECTION_NODE:\r\n return {\r\n type: NodeType.CDATA,\r\n textContent: '',\r\n rootId: rootId\r\n };\r\n case n.COMMENT_NODE:\r\n return {\r\n type: NodeType.Comment,\r\n textContent: n.textContent || '',\r\n rootId: rootId\r\n };\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction getRootId(doc, mirror) {\r\n if (!mirror.hasNode(doc))\r\n return undefined;\r\n var docId = mirror.getId(doc);\r\n return docId === 1 ? undefined : docId;\r\n}\r\nfunction serializeTextNode(n, options) {\r\n var _a;\r\n var maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, maskTextFn = options.maskTextFn, rootId = options.rootId;\r\n var parentTagName = n.parentNode && n.parentNode.tagName;\r\n var textContent = n.textContent;\r\n var isStyle = parentTagName === 'STYLE' ? true : undefined;\r\n var isScript = parentTagName === 'SCRIPT' ? true : undefined;\r\n if (isStyle && textContent) {\r\n try {\r\n if (n.nextSibling || n.previousSibling) {\r\n }\r\n else if ((_a = n.parentNode.sheet) === null || _a === void 0 ? void 0 : _a.cssRules) {\r\n textContent = stringifyStyleSheet(n.parentNode.sheet);\r\n }\r\n }\r\n catch (err) {\r\n console.warn(\"Cannot get CSS styles from text's parentNode. Error: \".concat(err), n);\r\n }\r\n textContent = absoluteToStylesheet(textContent, getHref());\r\n }\r\n if (isScript) {\r\n textContent = 'SCRIPT_PLACEHOLDER';\r\n }\r\n if (!isStyle &&\r\n !isScript &&\r\n textContent &&\r\n needMaskingText(n, maskTextClass, maskTextSelector)) {\r\n textContent = maskTextFn\r\n ? maskTextFn(textContent)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n return {\r\n type: NodeType.Text,\r\n textContent: textContent || '',\r\n isStyle: isStyle,\r\n rootId: rootId\r\n };\r\n}\r\nfunction serializeElementNode(n, options) {\r\n var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskInputFn = options.maskInputFn, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c, rootId = options.rootId;\r\n var needBlock = _isBlockedElement(n, blockClass, blockSelector);\r\n var tagName = getValidTagName(n);\r\n var attributes = {};\r\n var len = n.attributes.length;\r\n for (var i = 0; i < len; i++) {\r\n var attr = n.attributes[i];\r\n attributes[attr.name] = transformAttribute(doc, tagName, attr.name, attr.value);\r\n }\r\n if (tagName === 'link' && inlineStylesheet) {\r\n var stylesheet = Array.from(doc.styleSheets).find(function (s) {\r\n return s.href === n.href;\r\n });\r\n var cssText = null;\r\n if (stylesheet) {\r\n cssText = getCssRulesString(stylesheet);\r\n }\r\n if (cssText) {\r\n delete attributes.rel;\r\n delete attributes.href;\r\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\r\n }\r\n }\r\n if (tagName === 'style' &&\r\n n.sheet &&\r\n !(n.innerText || n.textContent || '').trim().length) {\r\n var cssText = getCssRulesString(n.sheet);\r\n if (cssText) {\r\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\r\n }\r\n }\r\n if (tagName === 'input' || tagName === 'textarea' || tagName === 'select') {\r\n var value = n.value;\r\n var checked = n.checked;\r\n if (attributes.type !== 'radio' &&\r\n attributes.type !== 'checkbox' &&\r\n attributes.type !== 'submit' &&\r\n attributes.type !== 'button' &&\r\n value) {\r\n attributes.value = maskInputValue({\r\n type: attributes.type,\r\n tagName: tagName,\r\n value: value,\r\n maskInputOptions: maskInputOptions,\r\n maskInputFn: maskInputFn\r\n });\r\n }\r\n else if (checked) {\r\n attributes.checked = checked;\r\n }\r\n }\r\n if (tagName === 'option') {\r\n if (n.selected && !maskInputOptions['select']) {\r\n attributes.selected = true;\r\n }\r\n else {\r\n delete attributes.selected;\r\n }\r\n }\r\n if (tagName === 'canvas' && recordCanvas) {\r\n if (n.__context === '2d') {\r\n if (!is2DCanvasBlank(n)) {\r\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n }\r\n else if (!('__context' in n)) {\r\n var canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n var blankCanvas = document.createElement('canvas');\r\n blankCanvas.width = n.width;\r\n blankCanvas.height = n.height;\r\n var blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n if (canvasDataURL !== blankCanvasDataURL) {\r\n attributes.rr_dataURL = canvasDataURL;\r\n }\r\n }\r\n }\r\n if (tagName === 'img' && inlineImages) {\r\n if (!canvasService) {\r\n canvasService = doc.createElement('canvas');\r\n canvasCtx = canvasService.getContext('2d');\r\n }\r\n var image_1 = n;\r\n var oldValue_1 = image_1.crossOrigin;\r\n image_1.crossOrigin = 'anonymous';\r\n var recordInlineImage = function () {\r\n try {\r\n canvasService.width = image_1.naturalWidth;\r\n canvasService.height = image_1.naturalHeight;\r\n canvasCtx.drawImage(image_1, 0, 0);\r\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n catch (err) {\r\n console.warn(\"Cannot inline img src=\".concat(image_1.currentSrc, \"! Error: \").concat(err));\r\n }\r\n oldValue_1\r\n ? (attributes.crossOrigin = oldValue_1)\r\n : image_1.removeAttribute('crossorigin');\r\n };\r\n if (image_1.complete && image_1.naturalWidth !== 0)\r\n recordInlineImage();\r\n else\r\n image_1.onload = recordInlineImage;\r\n }\r\n if (tagName === 'audio' || tagName === 'video') {\r\n attributes.rr_mediaState = n.paused\r\n ? 'paused'\r\n : 'played';\r\n attributes.rr_mediaCurrentTime = n.currentTime;\r\n }\r\n if (!newlyAddedElement) {\r\n if (n.scrollLeft) {\r\n attributes.rr_scrollLeft = n.scrollLeft;\r\n }\r\n if (n.scrollTop) {\r\n attributes.rr_scrollTop = n.scrollTop;\r\n }\r\n }\r\n if (needBlock) {\r\n var _d = n.getBoundingClientRect(), width = _d.width, height = _d.height;\r\n attributes = {\r\n \"class\": attributes[\"class\"],\r\n rr_width: \"\".concat(width, \"px\"),\r\n rr_height: \"\".concat(height, \"px\")\r\n };\r\n }\r\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\r\n if (!n.contentDocument) {\r\n attributes.rr_src = attributes.src;\r\n }\r\n delete attributes.src;\r\n }\r\n return {\r\n type: NodeType.Element,\r\n tagName: tagName,\r\n attributes: attributes,\r\n childNodes: [],\r\n isSVG: isSVGElement(n) || undefined,\r\n needBlock: needBlock,\r\n rootId: rootId\r\n };\r\n}\r\nfunction lowerIfExists(maybeAttr) {\r\n if (maybeAttr === undefined) {\r\n return '';\r\n }\r\n else {\r\n return maybeAttr.toLowerCase();\r\n }\r\n}\r\nfunction slimDOMExcluded(sn, slimDOMOptions) {\r\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\r\n return true;\r\n }\r\n else if (sn.type === NodeType.Element) {\r\n if (slimDOMOptions.script &&\r\n (sn.tagName === 'script' ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'preload' &&\r\n sn.attributes.as === 'script') ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'prefetch' &&\r\n typeof sn.attributes.href === 'string' &&\r\n sn.attributes.href.endsWith('.js')))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headFavicon &&\r\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\r\n (sn.tagName === 'meta' &&\r\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\r\n lowerIfExists(sn.attributes.name) === 'application-name' ||\r\n lowerIfExists(sn.attributes.rel) === 'icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\r\n return true;\r\n }\r\n else if (sn.tagName === 'meta') {\r\n if (slimDOMOptions.headMetaDescKeywords &&\r\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaSocial &&\r\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\r\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\r\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaRobots &&\r\n (lowerIfExists(sn.attributes.name) === 'robots' ||\r\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\r\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaHttpEquiv &&\r\n sn.attributes['http-equiv'] !== undefined) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaAuthorship &&\r\n (lowerIfExists(sn.attributes.name) === 'author' ||\r\n lowerIfExists(sn.attributes.name) === 'generator' ||\r\n lowerIfExists(sn.attributes.name) === 'framework' ||\r\n lowerIfExists(sn.attributes.name) === 'publisher' ||\r\n lowerIfExists(sn.attributes.name) === 'progid' ||\r\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\r\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaVerification &&\r\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\r\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\r\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\r\n lowerIfExists(sn.attributes.name) === 'verification' ||\r\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction serializeNodeWithId(n, options) {\r\n var doc = options.doc, mirror = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.inlineStylesheet, inlineStylesheet = _b === void 0 ? true : _b, _c = options.maskInputOptions, maskInputOptions = _c === void 0 ? {} : _c, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, slimDOMOptions = options.slimDOMOptions, _d = options.dataURLOptions, dataURLOptions = _d === void 0 ? {} : _d, _e = options.inlineImages, inlineImages = _e === void 0 ? false : _e, _f = options.recordCanvas, recordCanvas = _f === void 0 ? false : _f, onSerialize = options.onSerialize, onIframeLoad = options.onIframeLoad, _g = options.iframeLoadTimeout, iframeLoadTimeout = _g === void 0 ? 5000 : _g, onStylesheetLoad = options.onStylesheetLoad, _h = options.stylesheetLoadTimeout, stylesheetLoadTimeout = _h === void 0 ? 5000 : _h, _j = options.keepIframeSrcFn, keepIframeSrcFn = _j === void 0 ? function () { return false; } : _j, _k = options.newlyAddedElement, newlyAddedElement = _k === void 0 ? false : _k;\r\n var _l = options.preserveWhiteSpace, preserveWhiteSpace = _l === void 0 ? true : _l;\r\n var _serializedNode = serializeNode(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: newlyAddedElement\r\n });\r\n if (!_serializedNode) {\r\n console.warn(n, 'not serialized');\r\n return null;\r\n }\r\n var id;\r\n if (mirror.hasNode(n)) {\r\n id = mirror.getId(n);\r\n }\r\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\r\n (!preserveWhiteSpace &&\r\n _serializedNode.type === NodeType.Text &&\r\n !_serializedNode.isStyle &&\r\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\r\n id = IGNORED_NODE;\r\n }\r\n else {\r\n id = genId();\r\n }\r\n var serializedNode = Object.assign(_serializedNode, { id: id });\r\n mirror.add(n, serializedNode);\r\n if (id === IGNORED_NODE) {\r\n return null;\r\n }\r\n if (onSerialize) {\r\n onSerialize(n);\r\n }\r\n var recordChild = !skipChild;\r\n if (serializedNode.type === NodeType.Element) {\r\n recordChild = recordChild && !serializedNode.needBlock;\r\n delete serializedNode.needBlock;\r\n var shadowRoot = n.shadowRoot;\r\n if (shadowRoot && isNativeShadowDom(shadowRoot))\r\n serializedNode.isShadowHost = true;\r\n }\r\n if ((serializedNode.type === NodeType.Document ||\r\n serializedNode.type === NodeType.Element) &&\r\n recordChild) {\r\n if (slimDOMOptions.headWhitespace &&\r\n serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'head') {\r\n preserveWhiteSpace = false;\r\n }\r\n var bypassOptions = {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: skipChild,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n };\r\n for (var _i = 0, _m = Array.from(n.childNodes); _i < _m.length; _i++) {\r\n var childN = _m[_i];\r\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n if (isElement(n) && n.shadowRoot) {\r\n for (var _o = 0, _p = Array.from(n.shadowRoot.childNodes); _o < _p.length; _o++) {\r\n var childN = _p[_o];\r\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n isNativeShadowDom(n.shadowRoot) &&\r\n (serializedChildNode.isShadow = true);\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n }\r\n if (n.parentNode &&\r\n isShadowRoot(n.parentNode) &&\r\n isNativeShadowDom(n.parentNode)) {\r\n serializedNode.isShadow = true;\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'iframe') {\r\n onceIframeLoaded(n, function () {\r\n var iframeDoc = n.contentDocument;\r\n if (iframeDoc && onIframeLoad) {\r\n var serializedIframeNode = serializeNodeWithId(iframeDoc, {\r\n doc: iframeDoc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n });\r\n if (serializedIframeNode) {\r\n onIframeLoad(n, serializedIframeNode);\r\n }\r\n }\r\n }, iframeLoadTimeout);\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'link' &&\r\n serializedNode.attributes.rel === 'stylesheet') {\r\n onceStylesheetLoaded(n, function () {\r\n if (onStylesheetLoad) {\r\n var serializedLinkNode = serializeNodeWithId(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n });\r\n if (serializedLinkNode) {\r\n onStylesheetLoad(n, serializedLinkNode);\r\n }\r\n }\r\n }, stylesheetLoadTimeout);\r\n }\r\n return serializedNode;\r\n}\r\nfunction snapshot(n, options) {\r\n var _a = options || {}, _b = _a.mirror, mirror = _b === void 0 ? new Mirror() : _b, _c = _a.blockClass, blockClass = _c === void 0 ? 'rr-block' : _c, _d = _a.blockSelector, blockSelector = _d === void 0 ? null : _d, _e = _a.maskTextClass, maskTextClass = _e === void 0 ? 'rr-mask' : _e, _f = _a.maskTextSelector, maskTextSelector = _f === void 0 ? null : _f, _g = _a.inlineStylesheet, inlineStylesheet = _g === void 0 ? true : _g, _h = _a.inlineImages, inlineImages = _h === void 0 ? false : _h, _j = _a.recordCanvas, recordCanvas = _j === void 0 ? false : _j, _k = _a.maskAllInputs, maskAllInputs = _k === void 0 ? false : _k, maskTextFn = _a.maskTextFn, maskInputFn = _a.maskInputFn, _l = _a.slimDOM, slimDOM = _l === void 0 ? false : _l, dataURLOptions = _a.dataURLOptions, preserveWhiteSpace = _a.preserveWhiteSpace, onSerialize = _a.onSerialize, onIframeLoad = _a.onIframeLoad, iframeLoadTimeout = _a.iframeLoadTimeout, onStylesheetLoad = _a.onStylesheetLoad, stylesheetLoadTimeout = _a.stylesheetLoadTimeout, _m = _a.keepIframeSrcFn, keepIframeSrcFn = _m === void 0 ? function () { return false; } : _m;\r\n var maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true\r\n }\r\n : maskAllInputs === false\r\n ? {\r\n password: true\r\n }\r\n : maskAllInputs;\r\n var slimDOMOptions = slimDOM === true || slimDOM === 'all'\r\n ?\r\n {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaDescKeywords: slimDOM === 'all',\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaAuthorship: true,\r\n headMetaVerification: true\r\n }\r\n : slimDOM === false\r\n ? {}\r\n : slimDOM;\r\n return serializeNodeWithId(n, {\r\n doc: n,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: false\r\n });\r\n}\r\n\nvar commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\r\nfunction parse(css, options) {\r\n if (options === void 0) { options = {}; }\r\n var lineno = 1;\r\n var column = 1;\r\n function updatePosition(str) {\r\n var lines = str.match(/\\n/g);\r\n if (lines) {\r\n lineno += lines.length;\r\n }\r\n var i = str.lastIndexOf('\\n');\r\n column = i === -1 ? column + str.length : str.length - i;\r\n }\r\n function position() {\r\n var start = { line: lineno, column: column };\r\n return function (node) {\r\n node.position = new Position(start);\r\n whitespace();\r\n return node;\r\n };\r\n }\r\n var Position = (function () {\r\n function Position(start) {\r\n this.start = start;\r\n this.end = { line: lineno, column: column };\r\n this.source = options.source;\r\n }\r\n return Position;\r\n }());\r\n Position.prototype.content = css;\r\n var errorsList = [];\r\n function error(msg) {\r\n var err = new Error(\"\".concat(options.source || '', \":\").concat(lineno, \":\").concat(column, \": \").concat(msg));\r\n err.reason = msg;\r\n err.filename = options.source;\r\n err.line = lineno;\r\n err.column = column;\r\n err.source = css;\r\n if (options.silent) {\r\n errorsList.push(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n function stylesheet() {\r\n var rulesList = rules();\r\n return {\r\n type: 'stylesheet',\r\n stylesheet: {\r\n source: options.source,\r\n rules: rulesList,\r\n parsingErrors: errorsList\r\n }\r\n };\r\n }\r\n function open() {\r\n return match(/^{\\s*/);\r\n }\r\n function close() {\r\n return match(/^}/);\r\n }\r\n function rules() {\r\n var node;\r\n var rules = [];\r\n whitespace();\r\n comments(rules);\r\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\r\n if (node !== false) {\r\n rules.push(node);\r\n comments(rules);\r\n }\r\n }\r\n return rules;\r\n }\r\n function match(re) {\r\n var m = re.exec(css);\r\n if (!m) {\r\n return;\r\n }\r\n var str = m[0];\r\n updatePosition(str);\r\n css = css.slice(str.length);\r\n return m;\r\n }\r\n function whitespace() {\r\n match(/^\\s*/);\r\n }\r\n function comments(rules) {\r\n if (rules === void 0) { rules = []; }\r\n var c;\r\n while ((c = comment())) {\r\n if (c !== false) {\r\n rules.push(c);\r\n }\r\n c = comment();\r\n }\r\n return rules;\r\n }\r\n function comment() {\r\n var pos = position();\r\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\r\n return;\r\n }\r\n var i = 2;\r\n while ('' !== css.charAt(i) &&\r\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\r\n ++i;\r\n }\r\n i += 2;\r\n if ('' === css.charAt(i - 1)) {\r\n return error('End of comment missing');\r\n }\r\n var str = css.slice(2, i - 2);\r\n column += 2;\r\n updatePosition(str);\r\n css = css.slice(i);\r\n column += 2;\r\n return pos({\r\n type: 'comment',\r\n comment: str\r\n });\r\n }\r\n function selector() {\r\n var m = match(/^([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n return trim(m[0])\r\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\r\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, function (m) {\r\n return m.replace(/,/g, '\\u200C');\r\n })\r\n .split(/\\s*(?![^(]*\\)),\\s*/)\r\n .map(function (s) {\r\n return s.replace(/\\u200C/g, ',');\r\n });\r\n }\r\n function declaration() {\r\n var pos = position();\r\n var propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\r\n if (!propMatch) {\r\n return;\r\n }\r\n var prop = trim(propMatch[0]);\r\n if (!match(/^:\\s*/)) {\r\n return error(\"property missing ':'\");\r\n }\r\n var val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\r\n var ret = pos({\r\n type: 'declaration',\r\n property: prop.replace(commentre, ''),\r\n value: val ? trim(val[0]).replace(commentre, '') : ''\r\n });\r\n match(/^[;\\s]*/);\r\n return ret;\r\n }\r\n function declarations() {\r\n var decls = [];\r\n if (!open()) {\r\n return error(\"missing '{'\");\r\n }\r\n comments(decls);\r\n var decl;\r\n while ((decl = declaration())) {\r\n if (decl !== false) {\r\n decls.push(decl);\r\n comments(decls);\r\n }\r\n decl = declaration();\r\n }\r\n if (!close()) {\r\n return error(\"missing '}'\");\r\n }\r\n return decls;\r\n }\r\n function keyframe() {\r\n var m;\r\n var vals = [];\r\n var pos = position();\r\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\r\n vals.push(m[1]);\r\n match(/^,\\s*/);\r\n }\r\n if (!vals.length) {\r\n return;\r\n }\r\n return pos({\r\n type: 'keyframe',\r\n values: vals,\r\n declarations: declarations()\r\n });\r\n }\r\n function atkeyframes() {\r\n var pos = position();\r\n var m = match(/^@([-\\w]+)?keyframes\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n var vendor = m[1];\r\n m = match(/^([-\\w]+)\\s*/);\r\n if (!m) {\r\n return error('@keyframes missing name');\r\n }\r\n var name = m[1];\r\n if (!open()) {\r\n return error(\"@keyframes missing '{'\");\r\n }\r\n var frame;\r\n var frames = comments();\r\n while ((frame = keyframe())) {\r\n frames.push(frame);\r\n frames = frames.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@keyframes missing '}'\");\r\n }\r\n return pos({\r\n type: 'keyframes',\r\n name: name,\r\n vendor: vendor,\r\n keyframes: frames\r\n });\r\n }\r\n function atsupports() {\r\n var pos = position();\r\n var m = match(/^@supports *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var supports = trim(m[1]);\r\n if (!open()) {\r\n return error(\"@supports missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@supports missing '}'\");\r\n }\r\n return pos({\r\n type: 'supports',\r\n supports: supports,\r\n rules: style\r\n });\r\n }\r\n function athost() {\r\n var pos = position();\r\n var m = match(/^@host\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(\"@host missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@host missing '}'\");\r\n }\r\n return pos({\r\n type: 'host',\r\n rules: style\r\n });\r\n }\r\n function atmedia() {\r\n var pos = position();\r\n var m = match(/^@media *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var media = trim(m[1]);\r\n if (!open()) {\r\n return error(\"@media missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@media missing '}'\");\r\n }\r\n return pos({\r\n type: 'media',\r\n media: media,\r\n rules: style\r\n });\r\n }\r\n function atcustommedia() {\r\n var pos = position();\r\n var m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\r\n if (!m) {\r\n return;\r\n }\r\n return pos({\r\n type: 'custom-media',\r\n name: trim(m[1]),\r\n media: trim(m[2])\r\n });\r\n }\r\n function atpage() {\r\n var pos = position();\r\n var m = match(/^@page */);\r\n if (!m) {\r\n return;\r\n }\r\n var sel = selector() || [];\r\n if (!open()) {\r\n return error(\"@page missing '{'\");\r\n }\r\n var decls = comments();\r\n var decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@page missing '}'\");\r\n }\r\n return pos({\r\n type: 'page',\r\n selectors: sel,\r\n declarations: decls\r\n });\r\n }\r\n function atdocument() {\r\n var pos = position();\r\n var m = match(/^@([-\\w]+)?document *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var vendor = trim(m[1]);\r\n var doc = trim(m[2]);\r\n if (!open()) {\r\n return error(\"@document missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@document missing '}'\");\r\n }\r\n return pos({\r\n type: 'document',\r\n document: doc,\r\n vendor: vendor,\r\n rules: style\r\n });\r\n }\r\n function atfontface() {\r\n var pos = position();\r\n var m = match(/^@font-face\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(\"@font-face missing '{'\");\r\n }\r\n var decls = comments();\r\n var decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@font-face missing '}'\");\r\n }\r\n return pos({\r\n type: 'font-face',\r\n declarations: decls\r\n });\r\n }\r\n var atimport = _compileAtrule('import');\r\n var atcharset = _compileAtrule('charset');\r\n var atnamespace = _compileAtrule('namespace');\r\n function _compileAtrule(name) {\r\n var re = new RegExp('^@' + name + '\\\\s*([^;]+);');\r\n return function () {\r\n var pos = position();\r\n var m = match(re);\r\n if (!m) {\r\n return;\r\n }\r\n var ret = { type: name };\r\n ret[name] = m[1].trim();\r\n return pos(ret);\r\n };\r\n }\r\n function atrule() {\r\n if (css[0] !== '@') {\r\n return;\r\n }\r\n return (atkeyframes() ||\r\n atmedia() ||\r\n atcustommedia() ||\r\n atsupports() ||\r\n atimport() ||\r\n atcharset() ||\r\n atnamespace() ||\r\n atdocument() ||\r\n atpage() ||\r\n athost() ||\r\n atfontface());\r\n }\r\n function rule() {\r\n var pos = position();\r\n var sel = selector();\r\n if (!sel) {\r\n return error('selector missing');\r\n }\r\n comments();\r\n return pos({\r\n type: 'rule',\r\n selectors: sel,\r\n declarations: declarations()\r\n });\r\n }\r\n return addParent(stylesheet());\r\n}\r\nfunction trim(str) {\r\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\r\n}\r\nfunction addParent(obj, parent) {\r\n var isNode = obj && typeof obj.type === 'string';\r\n var childParent = isNode ? obj : parent;\r\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\r\n var k = _a[_i];\r\n var value = obj[k];\r\n if (Array.isArray(value)) {\r\n value.forEach(function (v) {\r\n addParent(v, childParent);\r\n });\r\n }\r\n else if (value && typeof value === 'object') {\r\n addParent(value, childParent);\r\n }\r\n }\r\n if (isNode) {\r\n Object.defineProperty(obj, 'parent', {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: parent || null\r\n });\r\n }\r\n return obj;\r\n}\n\nvar tagMap = {\r\n script: 'noscript',\r\n altglyph: 'altGlyph',\r\n altglyphdef: 'altGlyphDef',\r\n altglyphitem: 'altGlyphItem',\r\n animatecolor: 'animateColor',\r\n animatemotion: 'animateMotion',\r\n animatetransform: 'animateTransform',\r\n clippath: 'clipPath',\r\n feblend: 'feBlend',\r\n fecolormatrix: 'feColorMatrix',\r\n fecomponenttransfer: 'feComponentTransfer',\r\n fecomposite: 'feComposite',\r\n feconvolvematrix: 'feConvolveMatrix',\r\n fediffuselighting: 'feDiffuseLighting',\r\n fedisplacementmap: 'feDisplacementMap',\r\n fedistantlight: 'feDistantLight',\r\n fedropshadow: 'feDropShadow',\r\n feflood: 'feFlood',\r\n fefunca: 'feFuncA',\r\n fefuncb: 'feFuncB',\r\n fefuncg: 'feFuncG',\r\n fefuncr: 'feFuncR',\r\n fegaussianblur: 'feGaussianBlur',\r\n feimage: 'feImage',\r\n femerge: 'feMerge',\r\n femergenode: 'feMergeNode',\r\n femorphology: 'feMorphology',\r\n feoffset: 'feOffset',\r\n fepointlight: 'fePointLight',\r\n fespecularlighting: 'feSpecularLighting',\r\n fespotlight: 'feSpotLight',\r\n fetile: 'feTile',\r\n feturbulence: 'feTurbulence',\r\n foreignobject: 'foreignObject',\r\n glyphref: 'glyphRef',\r\n lineargradient: 'linearGradient',\r\n radialgradient: 'radialGradient'\r\n};\r\nfunction getTagName(n) {\r\n var tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\r\n if (tagName === 'link' && n.attributes._cssText) {\r\n tagName = 'style';\r\n }\r\n return tagName;\r\n}\r\nfunction escapeRegExp(str) {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\nvar HOVER_SELECTOR = /([^\\\\]):hover/;\r\nvar HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\r\nfunction addHoverClass(cssText, cache) {\r\n var cachedStyle = cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.get(cssText);\r\n if (cachedStyle)\r\n return cachedStyle;\r\n var ast = parse(cssText, {\r\n silent: true\r\n });\r\n if (!ast.stylesheet) {\r\n return cssText;\r\n }\r\n var selectors = [];\r\n ast.stylesheet.rules.forEach(function (rule) {\r\n if ('selectors' in rule) {\r\n (rule.selectors || []).forEach(function (selector) {\r\n if (HOVER_SELECTOR.test(selector)) {\r\n selectors.push(selector);\r\n }\r\n });\r\n }\r\n });\r\n if (selectors.length === 0) {\r\n return cssText;\r\n }\r\n var selectorMatcher = new RegExp(selectors\r\n .filter(function (selector, index) { return selectors.indexOf(selector) === index; })\r\n .sort(function (a, b) { return b.length - a.length; })\r\n .map(function (selector) {\r\n return escapeRegExp(selector);\r\n })\r\n .join('|'), 'g');\r\n var result = cssText.replace(selectorMatcher, function (selector) {\r\n var newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\r\n return \"\".concat(selector, \", \").concat(newSelector);\r\n });\r\n cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.set(cssText, result);\r\n return result;\r\n}\r\nfunction createCache() {\r\n var stylesWithHoverClass = new Map();\r\n return {\r\n stylesWithHoverClass: stylesWithHoverClass\r\n };\r\n}\r\nfunction buildNode(n, options) {\r\n var doc = options.doc, hackCss = options.hackCss, cache = options.cache;\r\n switch (n.type) {\r\n case NodeType.Document:\r\n return doc.implementation.createDocument(null, '', null);\r\n case NodeType.DocumentType:\r\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\r\n case NodeType.Element: {\r\n var tagName = getTagName(n);\r\n var node_1;\r\n if (n.isSVG) {\r\n node_1 = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\r\n }\r\n else {\r\n node_1 = doc.createElement(tagName);\r\n }\r\n var specialAttributes = {};\r\n for (var name_1 in n.attributes) {\r\n if (!Object.prototype.hasOwnProperty.call(n.attributes, name_1)) {\r\n continue;\r\n }\r\n var value = n.attributes[name_1];\r\n if (tagName === 'option' &&\r\n name_1 === 'selected' &&\r\n value === false) {\r\n continue;\r\n }\r\n if (value === true)\r\n value = '';\r\n if (name_1.startsWith('rr_')) {\r\n specialAttributes[name_1] = value;\r\n continue;\r\n }\r\n var isTextarea = tagName === 'textarea' && name_1 === 'value';\r\n var isRemoteOrDynamicCss = tagName === 'style' && name_1 === '_cssText';\r\n if (isRemoteOrDynamicCss && hackCss && typeof value === 'string') {\r\n value = addHoverClass(value, cache);\r\n }\r\n if ((isTextarea || isRemoteOrDynamicCss) && typeof value === 'string') {\r\n var child = doc.createTextNode(value);\r\n for (var _i = 0, _a = Array.from(node_1.childNodes); _i < _a.length; _i++) {\r\n var c = _a[_i];\r\n if (c.nodeType === node_1.TEXT_NODE) {\r\n node_1.removeChild(c);\r\n }\r\n }\r\n node_1.appendChild(child);\r\n continue;\r\n }\r\n try {\r\n if (n.isSVG && name_1 === 'xlink:href') {\r\n node_1.setAttributeNS('http://www.w3.org/1999/xlink', name_1, value.toString());\r\n }\r\n else if (name_1 === 'onload' ||\r\n name_1 === 'onclick' ||\r\n name_1.substring(0, 7) === 'onmouse') {\r\n node_1.setAttribute('_' + name_1, value.toString());\r\n }\r\n else if (tagName === 'meta' &&\r\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\r\n name_1 === 'content') {\r\n node_1.setAttribute('csp-content', value.toString());\r\n continue;\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'preload' &&\r\n n.attributes.as === 'script') {\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'prefetch' &&\r\n typeof n.attributes.href === 'string' &&\r\n n.attributes.href.endsWith('.js')) {\r\n }\r\n else if (tagName === 'img' &&\r\n n.attributes.srcset &&\r\n n.attributes.rr_dataURL) {\r\n node_1.setAttribute('rrweb-original-srcset', n.attributes.srcset);\r\n }\r\n else {\r\n node_1.setAttribute(name_1, value.toString());\r\n }\r\n }\r\n catch (error) {\r\n }\r\n }\r\n var _loop_1 = function (name_2) {\r\n var value = specialAttributes[name_2];\r\n if (tagName === 'canvas' && name_2 === 'rr_dataURL') {\r\n var image_1 = document.createElement('img');\r\n image_1.onload = function () {\r\n var ctx = node_1.getContext('2d');\r\n if (ctx) {\r\n ctx.drawImage(image_1, 0, 0, image_1.width, image_1.height);\r\n }\r\n };\r\n image_1.src = value.toString();\r\n if (node_1.RRNodeType)\r\n node_1.rr_dataURL = value.toString();\r\n }\r\n else if (tagName === 'img' && name_2 === 'rr_dataURL') {\r\n var image = node_1;\r\n if (!image.currentSrc.startsWith('data:')) {\r\n image.setAttribute('rrweb-original-src', n.attributes.src);\r\n image.src = value.toString();\r\n }\r\n }\r\n if (name_2 === 'rr_width') {\r\n node_1.style.width = value.toString();\r\n }\r\n else if (name_2 === 'rr_height') {\r\n node_1.style.height = value.toString();\r\n }\r\n else if (name_2 === 'rr_mediaCurrentTime' &&\r\n typeof value === 'number') {\r\n node_1.currentTime = value;\r\n }\r\n else if (name_2 === 'rr_mediaState') {\r\n switch (value) {\r\n case 'played':\r\n node_1\r\n .play()[\"catch\"](function (e) { return console.warn('media playback error', e); });\r\n break;\r\n case 'paused':\r\n node_1.pause();\r\n break;\r\n }\r\n }\r\n };\r\n for (var name_2 in specialAttributes) {\r\n _loop_1(name_2);\r\n }\r\n if (n.isShadowHost) {\r\n if (!node_1.shadowRoot) {\r\n node_1.attachShadow({ mode: 'open' });\r\n }\r\n else {\r\n while (node_1.shadowRoot.firstChild) {\r\n node_1.shadowRoot.removeChild(node_1.shadowRoot.firstChild);\r\n }\r\n }\r\n }\r\n return node_1;\r\n }\r\n case NodeType.Text:\r\n return doc.createTextNode(n.isStyle && hackCss\r\n ? addHoverClass(n.textContent, cache)\r\n : n.textContent);\r\n case NodeType.CDATA:\r\n return doc.createCDATASection(n.textContent);\r\n case NodeType.Comment:\r\n return doc.createComment(n.textContent);\r\n default:\r\n return null;\r\n }\r\n}\r\nfunction buildNodeWithSN(n, options) {\r\n var doc = options.doc, mirror = options.mirror, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.hackCss, hackCss = _b === void 0 ? true : _b, afterAppend = options.afterAppend, cache = options.cache;\r\n var node = buildNode(n, { doc: doc, hackCss: hackCss, cache: cache });\r\n if (!node) {\r\n return null;\r\n }\r\n if (n.rootId && mirror.getNode(n.rootId) !== doc) {\r\n mirror.replace(n.rootId, doc);\r\n }\r\n if (n.type === NodeType.Document) {\r\n doc.close();\r\n doc.open();\r\n if (n.compatMode === 'BackCompat' &&\r\n n.childNodes &&\r\n n.childNodes[0].type !== NodeType.DocumentType) {\r\n if (n.childNodes[0].type === NodeType.Element &&\r\n 'xmlns' in n.childNodes[0].attributes &&\r\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\r\n }\r\n else {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\r\n }\r\n }\r\n node = doc;\r\n }\r\n mirror.add(node, n);\r\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\r\n !skipChild) {\r\n for (var _i = 0, _c = n.childNodes; _i < _c.length; _i++) {\r\n var childN = _c[_i];\r\n var childNode = buildNodeWithSN(childN, {\r\n doc: doc,\r\n mirror: mirror,\r\n skipChild: false,\r\n hackCss: hackCss,\r\n afterAppend: afterAppend,\r\n cache: cache\r\n });\r\n if (!childNode) {\r\n console.warn('Failed to rebuild', childN);\r\n continue;\r\n }\r\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\r\n node.shadowRoot.appendChild(childNode);\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n if (afterAppend) {\r\n afterAppend(childNode, childN.id);\r\n }\r\n }\r\n }\r\n return node;\r\n}\r\nfunction visit(mirror, onVisit) {\r\n function walk(node) {\r\n onVisit(node);\r\n }\r\n for (var _i = 0, _a = mirror.getIds(); _i < _a.length; _i++) {\r\n var id = _a[_i];\r\n if (mirror.has(id)) {\r\n walk(mirror.getNode(id));\r\n }\r\n }\r\n}\r\nfunction handleScroll(node, mirror) {\r\n var n = mirror.getMeta(node);\r\n if ((n === null || n === void 0 ? void 0 : n.type) !== NodeType.Element) {\r\n return;\r\n }\r\n var el = node;\r\n for (var name_3 in n.attributes) {\r\n if (!(Object.prototype.hasOwnProperty.call(n.attributes, name_3) &&\r\n name_3.startsWith('rr_'))) {\r\n continue;\r\n }\r\n var value = n.attributes[name_3];\r\n if (name_3 === 'rr_scrollLeft') {\r\n el.scrollLeft = value;\r\n }\r\n if (name_3 === 'rr_scrollTop') {\r\n el.scrollTop = value;\r\n }\r\n }\r\n}\r\nfunction rebuild(n, options) {\r\n var doc = options.doc, onVisit = options.onVisit, _a = options.hackCss, hackCss = _a === void 0 ? true : _a, afterAppend = options.afterAppend, cache = options.cache, _b = options.mirror, mirror = _b === void 0 ? new Mirror() : _b;\r\n var node = buildNodeWithSN(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n skipChild: false,\r\n hackCss: hackCss,\r\n afterAppend: afterAppend,\r\n cache: cache\r\n });\r\n visit(mirror, function (visitedNode) {\r\n if (onVisit) {\r\n onVisit(visitedNode);\r\n }\r\n handleScroll(visitedNode, mirror);\r\n });\r\n return node;\r\n}\n\nexport { IGNORED_NODE, Mirror, NodeType, addHoverClass, buildNodeWithSN, classMatchesRegex, createCache, createMirror, genId, getCssRuleString, getCssRulesString, is2DCanvasBlank, isCSSImportRule, isElement, isNativeShadowDom, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, snapshot, transformAttribute };\n","import { classMatchesRegex, IGNORED_NODE, isShadowRoot } from '../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nfunction on(type, fn, target = document) {\r\n const options = { capture: true, passive: true };\r\n target.addEventListener(type, fn, options);\r\n return () => target.removeEventListener(type, fn, options);\r\n}\r\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\r\n '\\r\\n' +\r\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\r\n '\\r\\n' +\r\n 'or you can use record.mirror to access the mirror instance during recording.';\r\nlet _mirror = {\r\n map: {},\r\n getId() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return -1;\r\n },\r\n getNode() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return null;\r\n },\r\n removeNodeFromMap() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n has() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return false;\r\n },\r\n reset() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n};\r\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\r\n _mirror = new Proxy(_mirror, {\r\n get(target, prop, receiver) {\r\n if (prop === 'map') {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n }\r\n return Reflect.get(target, prop, receiver);\r\n },\r\n });\r\n}\r\nfunction throttle(func, wait, options = {}) {\r\n let timeout = null;\r\n let previous = 0;\r\n return function (...args) {\r\n const now = Date.now();\r\n if (!previous && options.leading === false) {\r\n previous = now;\r\n }\r\n const remaining = wait - (now - previous);\r\n const context = this;\r\n if (remaining <= 0 || remaining > wait) {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n previous = now;\r\n func.apply(context, args);\r\n }\r\n else if (!timeout && options.trailing !== false) {\r\n timeout = setTimeout(() => {\r\n previous = options.leading === false ? 0 : Date.now();\r\n timeout = null;\r\n func.apply(context, args);\r\n }, remaining);\r\n }\r\n };\r\n}\r\nfunction hookSetter(target, key, d, isRevoked, win = window) {\r\n const original = win.Object.getOwnPropertyDescriptor(target, key);\r\n win.Object.defineProperty(target, key, isRevoked\r\n ? d\r\n : {\r\n set(value) {\r\n setTimeout(() => {\r\n d.set.call(this, value);\r\n }, 0);\r\n if (original && original.set) {\r\n original.set.call(this, value);\r\n }\r\n },\r\n });\r\n return () => hookSetter(target, key, original || {}, true);\r\n}\r\nfunction patch(source, name, replacement) {\r\n try {\r\n if (!(name in source)) {\r\n return () => {\r\n };\r\n }\r\n const original = source[name];\r\n const wrapped = replacement(original);\r\n if (typeof wrapped === 'function') {\r\n wrapped.prototype = wrapped.prototype || {};\r\n Object.defineProperties(wrapped, {\r\n __rrweb_original__: {\r\n enumerable: false,\r\n value: original,\r\n },\r\n });\r\n }\r\n source[name] = wrapped;\r\n return () => {\r\n source[name] = original;\r\n };\r\n }\r\n catch (_a) {\r\n return () => {\r\n };\r\n }\r\n}\r\nfunction getWindowHeight() {\r\n return (window.innerHeight ||\r\n (document.documentElement && document.documentElement.clientHeight) ||\r\n (document.body && document.body.clientHeight));\r\n}\r\nfunction getWindowWidth() {\r\n return (window.innerWidth ||\r\n (document.documentElement && document.documentElement.clientWidth) ||\r\n (document.body && document.body.clientWidth));\r\n}\r\nfunction isBlocked(node, blockClass, blockSelector, checkAncestors) {\r\n if (!node) {\r\n return false;\r\n }\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (!el)\r\n return false;\r\n if (typeof blockClass === 'string') {\r\n if (el.classList.contains(blockClass))\r\n return true;\r\n if (checkAncestors && el.closest('.' + blockClass) !== null)\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, blockClass, checkAncestors))\r\n return true;\r\n }\r\n if (blockSelector) {\r\n if (node.matches(blockSelector))\r\n return true;\r\n if (checkAncestors && el.closest(blockSelector) !== null)\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction isSerialized(n, mirror) {\r\n return mirror.getId(n) !== -1;\r\n}\r\nfunction isIgnored(n, mirror) {\r\n return mirror.getId(n) === IGNORED_NODE;\r\n}\r\nfunction isAncestorRemoved(target, mirror) {\r\n if (isShadowRoot(target)) {\r\n return false;\r\n }\r\n const id = mirror.getId(target);\r\n if (!mirror.has(id)) {\r\n return true;\r\n }\r\n if (target.parentNode &&\r\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n if (!target.parentNode) {\r\n return true;\r\n }\r\n return isAncestorRemoved(target.parentNode, mirror);\r\n}\r\nfunction isTouchEvent(event) {\r\n return Boolean(event.changedTouches);\r\n}\r\nfunction polyfill(win = window) {\r\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\r\n win.NodeList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\r\n win.DOMTokenList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if (!Node.prototype.contains) {\r\n Node.prototype.contains = (...args) => {\r\n let node = args[0];\r\n if (!(0 in args)) {\r\n throw new TypeError('1 argument is required');\r\n }\r\n do {\r\n if (this === node) {\r\n return true;\r\n }\r\n } while ((node = node && node.parentNode));\r\n return false;\r\n };\r\n }\r\n}\r\nfunction queueToResolveTrees(queue) {\r\n const queueNodeMap = {};\r\n const putIntoMap = (m, parent) => {\r\n const nodeInTree = {\r\n value: m,\r\n parent,\r\n children: [],\r\n };\r\n queueNodeMap[m.node.id] = nodeInTree;\r\n return nodeInTree;\r\n };\r\n const queueNodeTrees = [];\r\n for (const mutation of queue) {\r\n const { nextId, parentId } = mutation;\r\n if (nextId && nextId in queueNodeMap) {\r\n const nextInTree = queueNodeMap[nextId];\r\n if (nextInTree.parent) {\r\n const idx = nextInTree.parent.children.indexOf(nextInTree);\r\n nextInTree.parent.children.splice(idx, 0, putIntoMap(mutation, nextInTree.parent));\r\n }\r\n else {\r\n const idx = queueNodeTrees.indexOf(nextInTree);\r\n queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\r\n }\r\n continue;\r\n }\r\n if (parentId in queueNodeMap) {\r\n const parentInTree = queueNodeMap[parentId];\r\n parentInTree.children.push(putIntoMap(mutation, parentInTree));\r\n continue;\r\n }\r\n queueNodeTrees.push(putIntoMap(mutation, null));\r\n }\r\n return queueNodeTrees;\r\n}\r\nfunction iterateResolveTree(tree, cb) {\r\n cb(tree.value);\r\n for (let i = tree.children.length - 1; i >= 0; i--) {\r\n iterateResolveTree(tree.children[i], cb);\r\n }\r\n}\r\nfunction isSerializedIframe(n, mirror) {\r\n return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\r\n}\r\nfunction isSerializedStylesheet(n, mirror) {\r\n return Boolean(n.nodeName === 'LINK' &&\r\n n.nodeType === n.ELEMENT_NODE &&\r\n n.getAttribute &&\r\n n.getAttribute('rel') === 'stylesheet' &&\r\n mirror.getMeta(n));\r\n}\r\nfunction getBaseDimension(node, rootIframe) {\r\n var _a, _b;\r\n const frameElement = (_b = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) === null || _b === void 0 ? void 0 : _b.frameElement;\r\n if (!frameElement || frameElement === rootIframe) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n relativeScale: 1,\r\n absoluteScale: 1,\r\n };\r\n }\r\n const frameDimension = frameElement.getBoundingClientRect();\r\n const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\r\n const relativeScale = frameDimension.height / frameElement.clientHeight;\r\n return {\r\n x: frameDimension.x * frameBaseDimension.relativeScale +\r\n frameBaseDimension.x,\r\n y: frameDimension.y * frameBaseDimension.relativeScale +\r\n frameBaseDimension.y,\r\n relativeScale,\r\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\r\n };\r\n}\r\nfunction hasShadowRoot(n) {\r\n return Boolean(n === null || n === void 0 ? void 0 : n.shadowRoot);\r\n}\r\nfunction getNestedRule(rules, position) {\r\n const rule = rules[position[0]];\r\n if (position.length === 1) {\r\n return rule;\r\n }\r\n else {\r\n return getNestedRule(rule.cssRules[position[1]].cssRules, position.slice(2));\r\n }\r\n}\r\nfunction getPositionsAndIndex(nestedIndex) {\r\n const positions = [...nestedIndex];\r\n const index = positions.pop();\r\n return { positions, index };\r\n}\r\nfunction uniqueTextMutations(mutations) {\r\n const idSet = new Set();\r\n const uniqueMutations = [];\r\n for (let i = mutations.length; i--;) {\r\n const mutation = mutations[i];\r\n if (!idSet.has(mutation.id)) {\r\n uniqueMutations.push(mutation);\r\n idSet.add(mutation.id);\r\n }\r\n }\r\n return uniqueMutations;\r\n}\r\nclass StyleSheetMirror {\r\n constructor() {\r\n this.id = 1;\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n }\r\n getId(stylesheet) {\r\n var _a;\r\n return (_a = this.styleIDMap.get(stylesheet)) !== null && _a !== void 0 ? _a : -1;\r\n }\r\n has(stylesheet) {\r\n return this.styleIDMap.has(stylesheet);\r\n }\r\n add(stylesheet, id) {\r\n if (this.has(stylesheet))\r\n return this.getId(stylesheet);\r\n let newId;\r\n if (id === undefined) {\r\n newId = this.id++;\r\n }\r\n else\r\n newId = id;\r\n this.styleIDMap.set(stylesheet, newId);\r\n this.idStyleMap.set(newId, stylesheet);\r\n return newId;\r\n }\r\n getStyle(id) {\r\n return this.idStyleMap.get(id) || null;\r\n }\r\n reset() {\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n this.id = 1;\r\n }\r\n generateId() {\r\n return this.id++;\r\n }\r\n}\n\nexport { StyleSheetMirror, _mirror, getBaseDimension, getNestedRule, getPositionsAndIndex, getWindowHeight, getWindowWidth, hasShadowRoot, hookSetter, isAncestorRemoved, isBlocked, isIgnored, isSerialized, isSerializedIframe, isSerializedStylesheet, isTouchEvent, iterateResolveTree, on, patch, polyfill, queueToResolveTrees, throttle, uniqueTextMutations };\n","var EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\n\nexport { CanvasContext, EventType, IncrementalSource, MouseInteractions, ReplayerEvents };\n","import { isShadowRoot, isNativeShadowDom, maskInputValue, transformAttribute, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { isIgnored, isBlocked, isSerialized, isAncestorRemoved, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\n\nfunction isNodeInLinkedList(n) {\r\n return '__ln' in n;\r\n}\r\nclass DoubleLinkedList {\r\n constructor() {\r\n this.length = 0;\r\n this.head = null;\r\n }\r\n get(position) {\r\n if (position >= this.length) {\r\n throw new Error('Position outside of list range');\r\n }\r\n let current = this.head;\r\n for (let index = 0; index < position; index++) {\r\n current = (current === null || current === void 0 ? void 0 : current.next) || null;\r\n }\r\n return current;\r\n }\r\n addNode(n) {\r\n const node = {\r\n value: n,\r\n previous: null,\r\n next: null,\r\n };\r\n n.__ln = node;\r\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\r\n const current = n.previousSibling.__ln.next;\r\n node.next = current;\r\n node.previous = n.previousSibling.__ln;\r\n n.previousSibling.__ln.next = node;\r\n if (current) {\r\n current.previous = node;\r\n }\r\n }\r\n else if (n.nextSibling &&\r\n isNodeInLinkedList(n.nextSibling) &&\r\n n.nextSibling.__ln.previous) {\r\n const current = n.nextSibling.__ln.previous;\r\n node.previous = current;\r\n node.next = n.nextSibling.__ln;\r\n n.nextSibling.__ln.previous = node;\r\n if (current) {\r\n current.next = node;\r\n }\r\n }\r\n else {\r\n if (this.head) {\r\n this.head.previous = node;\r\n }\r\n node.next = this.head;\r\n this.head = node;\r\n }\r\n this.length++;\r\n }\r\n removeNode(n) {\r\n const current = n.__ln;\r\n if (!this.head) {\r\n return;\r\n }\r\n if (!current.previous) {\r\n this.head = current.next;\r\n if (this.head) {\r\n this.head.previous = null;\r\n }\r\n }\r\n else {\r\n current.previous.next = current.next;\r\n if (current.next) {\r\n current.next.previous = current.previous;\r\n }\r\n }\r\n if (n.__ln) {\r\n delete n.__ln;\r\n }\r\n this.length--;\r\n }\r\n}\r\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\r\nclass MutationBuffer {\r\n constructor() {\r\n this.frozen = false;\r\n this.locked = false;\r\n this.texts = [];\r\n this.attributes = [];\r\n this.removes = [];\r\n this.mapRemoves = [];\r\n this.movedMap = {};\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.processMutations = (mutations) => {\r\n mutations.forEach(this.processMutation);\r\n this.emit();\r\n };\r\n this.emit = () => {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const adds = [];\r\n const addList = new DoubleLinkedList();\r\n const getNextId = (n) => {\r\n let ns = n;\r\n let nextId = IGNORED_NODE;\r\n while (nextId === IGNORED_NODE) {\r\n ns = ns && ns.nextSibling;\r\n nextId = ns && this.mirror.getId(ns);\r\n }\r\n return nextId;\r\n };\r\n const pushAdd = (n) => {\r\n var _a, _b, _c, _d;\r\n let shadowHost = null;\r\n if (((_b = (_a = n.getRootNode) === null || _a === void 0 ? void 0 : _a.call(n)) === null || _b === void 0 ? void 0 : _b.nodeType) === Node.DOCUMENT_FRAGMENT_NODE &&\r\n n.getRootNode().host)\r\n shadowHost = n.getRootNode().host;\r\n let rootShadowHost = shadowHost;\r\n while (((_d = (_c = rootShadowHost === null || rootShadowHost === void 0 ? void 0 : rootShadowHost.getRootNode) === null || _c === void 0 ? void 0 : _c.call(rootShadowHost)) === null || _d === void 0 ? void 0 : _d.nodeType) ===\r\n Node.DOCUMENT_FRAGMENT_NODE &&\r\n rootShadowHost.getRootNode().host)\r\n rootShadowHost = rootShadowHost.getRootNode().host;\r\n const notInDoc = !this.doc.contains(n) &&\r\n (!rootShadowHost || !this.doc.contains(rootShadowHost));\r\n if (!n.parentNode || notInDoc) {\r\n return;\r\n }\r\n const parentId = isShadowRoot(n.parentNode)\r\n ? this.mirror.getId(shadowHost)\r\n : this.mirror.getId(n.parentNode);\r\n const nextId = getNextId(n);\r\n if (parentId === -1 || nextId === -1) {\r\n return addList.addNode(n);\r\n }\r\n const sn = serializeNodeWithId(n, {\r\n doc: this.doc,\r\n mirror: this.mirror,\r\n blockClass: this.blockClass,\r\n blockSelector: this.blockSelector,\r\n maskTextClass: this.maskTextClass,\r\n maskTextSelector: this.maskTextSelector,\r\n skipChild: true,\r\n newlyAddedElement: true,\r\n inlineStylesheet: this.inlineStylesheet,\r\n maskInputOptions: this.maskInputOptions,\r\n maskTextFn: this.maskTextFn,\r\n maskInputFn: this.maskInputFn,\r\n slimDOMOptions: this.slimDOMOptions,\r\n dataURLOptions: this.dataURLOptions,\r\n recordCanvas: this.recordCanvas,\r\n inlineImages: this.inlineImages,\r\n onSerialize: (currentN) => {\r\n if (isSerializedIframe(currentN, this.mirror)) {\r\n this.iframeManager.addIframe(currentN);\r\n }\r\n if (isSerializedStylesheet(currentN, this.mirror)) {\r\n this.stylesheetManager.trackLinkElement(currentN);\r\n }\r\n if (hasShadowRoot(n)) {\r\n this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n this.iframeManager.attachIframe(iframe, childSn);\r\n this.shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (link, childSn) => {\r\n this.stylesheetManager.attachLinkElement(link, childSn);\r\n },\r\n });\r\n if (sn) {\r\n adds.push({\r\n parentId,\r\n nextId,\r\n node: sn,\r\n });\r\n }\r\n };\r\n while (this.mapRemoves.length) {\r\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\r\n }\r\n for (const n of Array.from(this.movedSet.values())) {\r\n if (isParentRemoved(this.removes, n, this.mirror) &&\r\n !this.movedSet.has(n.parentNode)) {\r\n continue;\r\n }\r\n pushAdd(n);\r\n }\r\n for (const n of Array.from(this.addedSet.values())) {\r\n if (!isAncestorInSet(this.droppedSet, n) &&\r\n !isParentRemoved(this.removes, n, this.mirror)) {\r\n pushAdd(n);\r\n }\r\n else if (isAncestorInSet(this.movedSet, n)) {\r\n pushAdd(n);\r\n }\r\n else {\r\n this.droppedSet.add(n);\r\n }\r\n }\r\n let candidate = null;\r\n while (addList.length) {\r\n let node = null;\r\n if (candidate) {\r\n const parentId = this.mirror.getId(candidate.value.parentNode);\r\n const nextId = getNextId(candidate.value);\r\n if (parentId !== -1 && nextId !== -1) {\r\n node = candidate;\r\n }\r\n }\r\n if (!node) {\r\n for (let index = addList.length - 1; index >= 0; index--) {\r\n const _node = addList.get(index);\r\n if (_node) {\r\n const parentId = this.mirror.getId(_node.value.parentNode);\r\n const nextId = getNextId(_node.value);\r\n if (nextId === -1)\r\n continue;\r\n else if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n else {\r\n const unhandledNode = _node.value;\r\n if (unhandledNode.parentNode &&\r\n unhandledNode.parentNode.nodeType ===\r\n Node.DOCUMENT_FRAGMENT_NODE) {\r\n const shadowHost = unhandledNode.parentNode\r\n .host;\r\n const parentId = this.mirror.getId(shadowHost);\r\n if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!node) {\r\n while (addList.head) {\r\n addList.removeNode(addList.head.value);\r\n }\r\n break;\r\n }\r\n candidate = node.previous;\r\n addList.removeNode(node.value);\r\n pushAdd(node.value);\r\n }\r\n const payload = {\r\n texts: this.texts\r\n .map((text) => ({\r\n id: this.mirror.getId(text.node),\r\n value: text.value,\r\n }))\r\n .filter((text) => this.mirror.has(text.id)),\r\n attributes: this.attributes\r\n .map((attribute) => ({\r\n id: this.mirror.getId(attribute.node),\r\n attributes: attribute.attributes,\r\n }))\r\n .filter((attribute) => this.mirror.has(attribute.id)),\r\n removes: this.removes,\r\n adds,\r\n };\r\n if (!payload.texts.length &&\r\n !payload.attributes.length &&\r\n !payload.removes.length &&\r\n !payload.adds.length) {\r\n return;\r\n }\r\n this.texts = [];\r\n this.attributes = [];\r\n this.removes = [];\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.movedMap = {};\r\n this.mutationCb(payload);\r\n };\r\n this.processMutation = (m) => {\r\n if (isIgnored(m.target, this.mirror)) {\r\n return;\r\n }\r\n switch (m.type) {\r\n case 'characterData': {\r\n const value = m.target.textContent;\r\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) &&\r\n value !== m.oldValue) {\r\n this.texts.push({\r\n value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector) && value\r\n ? this.maskTextFn\r\n ? this.maskTextFn(value)\r\n : value.replace(/[\\S]/g, '*')\r\n : value,\r\n node: m.target,\r\n });\r\n }\r\n break;\r\n }\r\n case 'attributes': {\r\n const target = m.target;\r\n let value = m.target.getAttribute(m.attributeName);\r\n if (m.attributeName === 'value') {\r\n value = maskInputValue({\r\n maskInputOptions: this.maskInputOptions,\r\n tagName: m.target.tagName,\r\n type: m.target.getAttribute('type'),\r\n value,\r\n maskInputFn: this.maskInputFn,\r\n });\r\n }\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n value === m.oldValue) {\r\n return;\r\n }\r\n let item = this.attributes.find((a) => a.node === m.target);\r\n if (target.tagName === 'IFRAME' &&\r\n m.attributeName === 'src' &&\r\n !this.keepIframeSrcFn(value)) {\r\n if (!target.contentDocument) {\r\n m.attributeName = 'rr_src';\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n if (!item) {\r\n item = {\r\n node: m.target,\r\n attributes: {},\r\n };\r\n this.attributes.push(item);\r\n }\r\n if (m.attributeName === 'style') {\r\n const old = this.doc.createElement('span');\r\n if (m.oldValue) {\r\n old.setAttribute('style', m.oldValue);\r\n }\r\n if (item.attributes.style === undefined ||\r\n item.attributes.style === null) {\r\n item.attributes.style = {};\r\n }\r\n const styleObj = item.attributes.style;\r\n for (const pname of Array.from(target.style)) {\r\n const newValue = target.style.getPropertyValue(pname);\r\n const newPriority = target.style.getPropertyPriority(pname);\r\n if (newValue !== old.style.getPropertyValue(pname) ||\r\n newPriority !== old.style.getPropertyPriority(pname)) {\r\n if (newPriority === '') {\r\n styleObj[pname] = newValue;\r\n }\r\n else {\r\n styleObj[pname] = [newValue, newPriority];\r\n }\r\n }\r\n }\r\n for (const pname of Array.from(old.style)) {\r\n if (target.style.getPropertyValue(pname) === '') {\r\n styleObj[pname] = false;\r\n }\r\n }\r\n }\r\n else {\r\n item.attributes[m.attributeName] = transformAttribute(this.doc, target.tagName, m.attributeName, value);\r\n }\r\n break;\r\n }\r\n case 'childList': {\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\r\n return;\r\n m.addedNodes.forEach((n) => this.genAdds(n, m.target));\r\n m.removedNodes.forEach((n) => {\r\n const nodeId = this.mirror.getId(n);\r\n const parentId = isShadowRoot(m.target)\r\n ? this.mirror.getId(m.target.host)\r\n : this.mirror.getId(m.target);\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n isIgnored(n, this.mirror) ||\r\n !isSerialized(n, this.mirror)) {\r\n return;\r\n }\r\n if (this.addedSet.has(n)) {\r\n deepDelete(this.addedSet, n);\r\n this.droppedSet.add(n);\r\n }\r\n else if (this.addedSet.has(m.target) && nodeId === -1) ;\r\n else if (isAncestorRemoved(m.target, this.mirror)) ;\r\n else if (this.movedSet.has(n) &&\r\n this.movedMap[moveKey(nodeId, parentId)]) {\r\n deepDelete(this.movedSet, n);\r\n }\r\n else {\r\n this.removes.push({\r\n parentId,\r\n id: nodeId,\r\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target)\r\n ? true\r\n : undefined,\r\n });\r\n }\r\n this.mapRemoves.push(n);\r\n });\r\n break;\r\n }\r\n }\r\n };\r\n this.genAdds = (n, target) => {\r\n if (this.mirror.hasNode(n)) {\r\n if (isIgnored(n, this.mirror)) {\r\n return;\r\n }\r\n this.movedSet.add(n);\r\n let targetId = null;\r\n if (target && this.mirror.hasNode(target)) {\r\n targetId = this.mirror.getId(target);\r\n }\r\n if (targetId && targetId !== -1) {\r\n this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\r\n }\r\n }\r\n else {\r\n this.addedSet.add(n);\r\n this.droppedSet.delete(n);\r\n }\r\n if (!isBlocked(n, this.blockClass, this.blockSelector, false))\r\n n.childNodes.forEach((childN) => this.genAdds(childN));\r\n };\r\n }\r\n init(options) {\r\n [\r\n 'mutationCb',\r\n 'blockClass',\r\n 'blockSelector',\r\n 'maskTextClass',\r\n 'maskTextSelector',\r\n 'inlineStylesheet',\r\n 'maskInputOptions',\r\n 'maskTextFn',\r\n 'maskInputFn',\r\n 'keepIframeSrcFn',\r\n 'recordCanvas',\r\n 'inlineImages',\r\n 'slimDOMOptions',\r\n 'dataURLOptions',\r\n 'doc',\r\n 'mirror',\r\n 'iframeManager',\r\n 'stylesheetManager',\r\n 'shadowDomManager',\r\n 'canvasManager',\r\n ].forEach((key) => {\r\n this[key] = options[key];\r\n });\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n this.canvasManager.freeze();\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n this.canvasManager.unfreeze();\r\n this.emit();\r\n }\r\n isFrozen() {\r\n return this.frozen;\r\n }\r\n lock() {\r\n this.locked = true;\r\n this.canvasManager.lock();\r\n }\r\n unlock() {\r\n this.locked = false;\r\n this.canvasManager.unlock();\r\n this.emit();\r\n }\r\n reset() {\r\n this.shadowDomManager.reset();\r\n this.canvasManager.reset();\r\n }\r\n}\r\nfunction deepDelete(addsSet, n) {\r\n addsSet.delete(n);\r\n n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\r\n}\r\nfunction isParentRemoved(removes, n, mirror) {\r\n if (removes.length === 0)\r\n return false;\r\n return _isParentRemoved(removes, n, mirror);\r\n}\r\nfunction _isParentRemoved(removes, n, mirror) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n const parentId = mirror.getId(parentNode);\r\n if (removes.some((r) => r.id === parentId)) {\r\n return true;\r\n }\r\n return _isParentRemoved(removes, parentNode, mirror);\r\n}\r\nfunction isAncestorInSet(set, n) {\r\n if (set.size === 0)\r\n return false;\r\n return _isAncestorInSet(set, n);\r\n}\r\nfunction _isAncestorInSet(set, n) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n if (set.has(parentNode)) {\r\n return true;\r\n }\r\n return _isAncestorInSet(set, parentNode);\r\n}\n\nexport { MutationBuffer as default };\n","import { maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { on, throttle, isBlocked, getWindowHeight, getWindowWidth, hookSetter, patch, isTouchEvent } from '../utils.js';\nimport { MouseInteractions, IncrementalSource } from '../../../types/dist/types.js';\nimport MutationBuffer from './mutation.js';\n\nconst mutationBuffers = [];\r\nconst isCSSGroupingRuleSupported = typeof CSSGroupingRule !== 'undefined';\r\nconst isCSSMediaRuleSupported = typeof CSSMediaRule !== 'undefined';\r\nconst isCSSSupportsRuleSupported = typeof CSSSupportsRule !== 'undefined';\r\nconst isCSSConditionRuleSupported = typeof CSSConditionRule !== 'undefined';\r\nfunction getEventTarget(event) {\r\n try {\r\n if ('composedPath' in event) {\r\n const path = event.composedPath();\r\n if (path.length) {\r\n return path[0];\r\n }\r\n }\r\n else if ('path' in event && event.path.length) {\r\n return event.path[0];\r\n }\r\n return event.target;\r\n }\r\n catch (_a) {\r\n return event.target;\r\n }\r\n}\r\nfunction initMutationObserver(options, rootEl) {\r\n var _a, _b;\r\n const mutationBuffer = new MutationBuffer();\r\n mutationBuffers.push(mutationBuffer);\r\n mutationBuffer.init(options);\r\n let mutationObserverCtor = window.MutationObserver ||\r\n window.__rrMutationObserver;\r\n const angularZoneSymbol = (_b = (_a = window === null || window === void 0 ? void 0 : window.Zone) === null || _a === void 0 ? void 0 : _a.__symbol__) === null || _b === void 0 ? void 0 : _b.call(_a, 'MutationObserver');\r\n if (angularZoneSymbol &&\r\n window[angularZoneSymbol]) {\r\n mutationObserverCtor = window[angularZoneSymbol];\r\n }\r\n const observer = new mutationObserverCtor(mutationBuffer.processMutations.bind(mutationBuffer));\r\n observer.observe(rootEl, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n characterData: true,\r\n characterDataOldValue: true,\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\r\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\r\n if (sampling.mousemove === false) {\r\n return () => {\r\n };\r\n }\r\n const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\r\n const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\r\n ? sampling.mousemoveCallback\r\n : 500;\r\n let positions = [];\r\n let timeBaseline;\r\n const wrappedCb = throttle((source) => {\r\n const totalOffset = Date.now() - timeBaseline;\r\n mousemoveCb(positions.map((p) => {\r\n p.timeOffset -= totalOffset;\r\n return p;\r\n }), source);\r\n positions = [];\r\n timeBaseline = null;\r\n }, callbackThreshold);\r\n const updatePosition = throttle((evt) => {\r\n const target = getEventTarget(evt);\r\n const { clientX, clientY } = isTouchEvent(evt)\r\n ? evt.changedTouches[0]\r\n : evt;\r\n if (!timeBaseline) {\r\n timeBaseline = Date.now();\r\n }\r\n positions.push({\r\n x: clientX,\r\n y: clientY,\r\n id: mirror.getId(target),\r\n timeOffset: Date.now() - timeBaseline,\r\n });\r\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\r\n ? IncrementalSource.Drag\r\n : evt instanceof MouseEvent\r\n ? IncrementalSource.MouseMove\r\n : IncrementalSource.TouchMove);\r\n }, threshold, {\r\n trailing: false,\r\n });\r\n const handlers = [\r\n on('mousemove', updatePosition, doc),\r\n on('touchmove', updatePosition, doc),\r\n on('drag', updatePosition, doc),\r\n ];\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n if (sampling.mouseInteraction === false) {\r\n return () => {\r\n };\r\n }\r\n const disableMap = sampling.mouseInteraction === true ||\r\n sampling.mouseInteraction === undefined\r\n ? {}\r\n : sampling.mouseInteraction;\r\n const handlers = [];\r\n const getHandler = (eventKey) => {\r\n return (event) => {\r\n const target = getEventTarget(event);\r\n if (isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const e = isTouchEvent(event) ? event.changedTouches[0] : event;\r\n if (!e) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n const { clientX, clientY } = e;\r\n mouseInteractionCb({\r\n type: MouseInteractions[eventKey],\r\n id,\r\n x: clientX,\r\n y: clientY,\r\n });\r\n };\r\n };\r\n Object.keys(MouseInteractions)\r\n .filter((key) => Number.isNaN(Number(key)) &&\r\n !key.endsWith('_Departed') &&\r\n disableMap[key] !== false)\r\n .forEach((eventKey) => {\r\n const eventName = eventKey.toLowerCase();\r\n const handler = getHandler(eventKey);\r\n handlers.push(on(eventName, handler, doc));\r\n });\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n const updatePosition = throttle((evt) => {\r\n const target = getEventTarget(evt);\r\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n if (target === doc) {\r\n const scrollEl = (doc.scrollingElement || doc.documentElement);\r\n scrollCb({\r\n id,\r\n x: scrollEl.scrollLeft,\r\n y: scrollEl.scrollTop,\r\n });\r\n }\r\n else {\r\n scrollCb({\r\n id,\r\n x: target.scrollLeft,\r\n y: target.scrollTop,\r\n });\r\n }\r\n }, sampling.scroll || 100);\r\n return on('scroll', updatePosition, doc);\r\n}\r\nfunction initViewportResizeObserver({ viewportResizeCb, }) {\r\n let lastH = -1;\r\n let lastW = -1;\r\n const updateDimension = throttle(() => {\r\n const height = getWindowHeight();\r\n const width = getWindowWidth();\r\n if (lastH !== height || lastW !== width) {\r\n viewportResizeCb({\r\n width: Number(width),\r\n height: Number(height),\r\n });\r\n lastH = height;\r\n lastW = width;\r\n }\r\n }, 200);\r\n return on('resize', updateDimension, window);\r\n}\r\nfunction wrapEventWithUserTriggeredFlag(v, enable) {\r\n const value = Object.assign({}, v);\r\n if (!enable)\r\n delete value.userTriggered;\r\n return value;\r\n}\r\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\r\nconst lastInputValueMap = new WeakMap();\r\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, ignoreClass, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, }) {\r\n function eventHandler(event) {\r\n let target = getEventTarget(event);\r\n const userTriggered = event.isTrusted;\r\n if (target && target.tagName === 'OPTION')\r\n target = target.parentElement;\r\n if (!target ||\r\n !target.tagName ||\r\n INPUT_TAGS.indexOf(target.tagName) < 0 ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const type = target.type;\r\n if (target.classList.contains(ignoreClass)) {\r\n return;\r\n }\r\n let text = target.value;\r\n let isChecked = false;\r\n if (type === 'radio' || type === 'checkbox') {\r\n isChecked = target.checked;\r\n }\r\n else if (maskInputOptions[target.tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n text = maskInputValue({\r\n maskInputOptions,\r\n tagName: target.tagName,\r\n type,\r\n value: text,\r\n maskInputFn,\r\n });\r\n }\r\n cbWithDedup(target, wrapEventWithUserTriggeredFlag({ text, isChecked, userTriggered }, userTriggeredOnInput));\r\n const name = target.name;\r\n if (type === 'radio' && name && isChecked) {\r\n doc\r\n .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\r\n .forEach((el) => {\r\n if (el !== target) {\r\n cbWithDedup(el, wrapEventWithUserTriggeredFlag({\r\n text: el.value,\r\n isChecked: !isChecked,\r\n userTriggered: false,\r\n }, userTriggeredOnInput));\r\n }\r\n });\r\n }\r\n }\r\n function cbWithDedup(target, v) {\r\n const lastInputValue = lastInputValueMap.get(target);\r\n if (!lastInputValue ||\r\n lastInputValue.text !== v.text ||\r\n lastInputValue.isChecked !== v.isChecked) {\r\n lastInputValueMap.set(target, v);\r\n const id = mirror.getId(target);\r\n inputCb(Object.assign(Object.assign({}, v), { id }));\r\n }\r\n }\r\n const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\r\n const handlers = events.map((eventName) => on(eventName, eventHandler, doc));\r\n const currentWindow = doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n }\r\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, 'value');\r\n const hookProperties = [\r\n [currentWindow.HTMLInputElement.prototype, 'value'],\r\n [currentWindow.HTMLInputElement.prototype, 'checked'],\r\n [currentWindow.HTMLSelectElement.prototype, 'value'],\r\n [currentWindow.HTMLTextAreaElement.prototype, 'value'],\r\n [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\r\n [currentWindow.HTMLOptionElement.prototype, 'selected'],\r\n ];\r\n if (propertyDescriptor && propertyDescriptor.set) {\r\n handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\r\n set() {\r\n eventHandler({ target: this });\r\n },\r\n }, false, currentWindow)));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction getNestedCSSRulePositions(rule) {\r\n const positions = [];\r\n function recurse(childRule, pos) {\r\n if ((isCSSGroupingRuleSupported &&\r\n childRule.parentRule instanceof CSSGroupingRule) ||\r\n (isCSSMediaRuleSupported &&\r\n childRule.parentRule instanceof CSSMediaRule) ||\r\n (isCSSSupportsRuleSupported &&\r\n childRule.parentRule instanceof CSSSupportsRule) ||\r\n (isCSSConditionRuleSupported &&\r\n childRule.parentRule instanceof CSSConditionRule)) {\r\n const rules = Array.from(childRule.parentRule.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n else if (childRule.parentStyleSheet) {\r\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n return pos;\r\n }\r\n return recurse(rule, positions);\r\n}\r\nfunction getIdAndStyleId(sheet, mirror, styleMirror) {\r\n let id, styleId;\r\n if (!sheet)\r\n return {};\r\n if (sheet.ownerNode)\r\n id = mirror.getId(sheet.ownerNode);\r\n else\r\n styleId = styleMirror.getId(sheet);\r\n return {\r\n styleId,\r\n id,\r\n };\r\n}\r\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror, stylesheetManager }, { win }) {\r\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\r\n win.CSSStyleSheet.prototype.insertRule = function (rule, index) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [{ rule, index }],\r\n });\r\n }\r\n return insertRule.apply(this, [rule, index]);\r\n };\r\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\r\n win.CSSStyleSheet.prototype.deleteRule = function (index) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [{ index }],\r\n });\r\n }\r\n return deleteRule.apply(this, [index]);\r\n };\r\n let replace;\r\n if (win.CSSStyleSheet.prototype.replace) {\r\n replace = win.CSSStyleSheet.prototype.replace;\r\n win.CSSStyleSheet.prototype.replace = function (text) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replace: text,\r\n });\r\n }\r\n return replace.apply(this, [text]);\r\n };\r\n }\r\n let replaceSync;\r\n if (win.CSSStyleSheet.prototype.replaceSync) {\r\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\r\n win.CSSStyleSheet.prototype.replaceSync = function (text) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replaceSync: text,\r\n });\r\n }\r\n return replaceSync.apply(this, [text]);\r\n };\r\n }\r\n const supportedNestedCSSRuleTypes = {};\r\n if (isCSSGroupingRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\r\n }\r\n else {\r\n if (isCSSMediaRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\r\n }\r\n if (isCSSConditionRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\r\n }\r\n if (isCSSSupportsRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\r\n }\r\n }\r\n const unmodifiedFunctions = {};\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n unmodifiedFunctions[typeKey] = {\r\n insertRule: type.prototype.insertRule,\r\n deleteRule: type.prototype.deleteRule,\r\n };\r\n type.prototype.insertRule = function (rule, index) {\r\n const { id, styleId } = getIdAndStyleId(this.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [\r\n {\r\n rule,\r\n index: [\r\n ...getNestedCSSRulePositions(this),\r\n index || 0,\r\n ],\r\n },\r\n ],\r\n });\r\n }\r\n return unmodifiedFunctions[typeKey].insertRule.apply(this, [rule, index]);\r\n };\r\n type.prototype.deleteRule = function (index) {\r\n const { id, styleId } = getIdAndStyleId(this.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [\r\n { index: [...getNestedCSSRulePositions(this), index] },\r\n ],\r\n });\r\n }\r\n return unmodifiedFunctions[typeKey].deleteRule.apply(this, [index]);\r\n };\r\n });\r\n return () => {\r\n win.CSSStyleSheet.prototype.insertRule = insertRule;\r\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\r\n replace && (win.CSSStyleSheet.prototype.replace = replace);\r\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\r\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\r\n });\r\n };\r\n}\r\nfunction initAdoptedStyleSheetObserver({ mirror, stylesheetManager, }, host) {\r\n var _a, _b, _c;\r\n let hostId = null;\r\n if (host.nodeName === '#document')\r\n hostId = mirror.getId(host);\r\n else\r\n hostId = mirror.getId(host.host);\r\n const patchTarget = host.nodeName === '#document'\r\n ? (_a = host.defaultView) === null || _a === void 0 ? void 0 : _a.Document\r\n : (_c = (_b = host.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView) === null || _c === void 0 ? void 0 : _c.ShadowRoot;\r\n const originalPropertyDescriptor = Object.getOwnPropertyDescriptor(patchTarget === null || patchTarget === void 0 ? void 0 : patchTarget.prototype, 'adoptedStyleSheets');\r\n if (hostId === null ||\r\n hostId === -1 ||\r\n !patchTarget ||\r\n !originalPropertyDescriptor)\r\n return () => {\r\n };\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get() {\r\n var _a;\r\n return (_a = originalPropertyDescriptor.get) === null || _a === void 0 ? void 0 : _a.call(this);\r\n },\r\n set(sheets) {\r\n var _a;\r\n const result = (_a = originalPropertyDescriptor.set) === null || _a === void 0 ? void 0 : _a.call(this, sheets);\r\n if (hostId !== null && hostId !== -1) {\r\n try {\r\n stylesheetManager.adoptStyleSheets(sheets, hostId);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n return result;\r\n },\r\n });\r\n return () => {\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get: originalPropertyDescriptor.get,\r\n set: originalPropertyDescriptor.set,\r\n });\r\n };\r\n}\r\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror, ignoreCSSAttributes, stylesheetManager, }, { win }) {\r\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\r\n win.CSSStyleDeclaration.prototype.setProperty = function (property, value, priority) {\r\n var _a;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return setProperty.apply(this, [property, value, priority]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n set: {\r\n property,\r\n value,\r\n priority,\r\n },\r\n index: getNestedCSSRulePositions(this.parentRule),\r\n });\r\n }\r\n return setProperty.apply(this, [property, value, priority]);\r\n };\r\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = function (property) {\r\n var _a;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return removeProperty.apply(this, [property]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n remove: {\r\n property,\r\n },\r\n index: getNestedCSSRulePositions(this.parentRule),\r\n });\r\n }\r\n return removeProperty.apply(this, [property]);\r\n };\r\n return () => {\r\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\r\n };\r\n}\r\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, mirror, sampling, }) {\r\n const handler = (type) => throttle((event) => {\r\n const target = getEventTarget(event);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const { currentTime, volume, muted, playbackRate, } = target;\r\n mediaInteractionCb({\r\n type,\r\n id: mirror.getId(target),\r\n currentTime,\r\n volume,\r\n muted,\r\n playbackRate,\r\n });\r\n }, sampling.media || 500);\r\n const handlers = [\r\n on('play', handler(0)),\r\n on('pause', handler(1)),\r\n on('seeked', handler(2)),\r\n on('volumechange', handler(3)),\r\n on('ratechange', handler(4)),\r\n ];\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initFontObserver({ fontCb, doc }) {\r\n const win = doc.defaultView;\r\n if (!win) {\r\n return () => {\r\n };\r\n }\r\n const handlers = [];\r\n const fontMap = new WeakMap();\r\n const originalFontFace = win.FontFace;\r\n win.FontFace = function FontFace(family, source, descriptors) {\r\n const fontFace = new originalFontFace(family, source, descriptors);\r\n fontMap.set(fontFace, {\r\n family,\r\n buffer: typeof source !== 'string',\r\n descriptors,\r\n fontSource: typeof source === 'string'\r\n ? source\r\n : JSON.stringify(Array.from(new Uint8Array(source))),\r\n });\r\n return fontFace;\r\n };\r\n const restoreHandler = patch(doc.fonts, 'add', function (original) {\r\n return function (fontFace) {\r\n setTimeout(() => {\r\n const p = fontMap.get(fontFace);\r\n if (p) {\r\n fontCb(p);\r\n fontMap.delete(fontFace);\r\n }\r\n }, 0);\r\n return original.apply(this, [fontFace]);\r\n };\r\n });\r\n handlers.push(() => {\r\n win.FontFace = originalFontFace;\r\n });\r\n handlers.push(restoreHandler);\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initSelectionObserver(param) {\r\n const { doc, mirror, blockClass, blockSelector, selectionCb } = param;\r\n let collapsed = true;\r\n const updateSelection = () => {\r\n const selection = doc.getSelection();\r\n if (!selection || (collapsed && (selection === null || selection === void 0 ? void 0 : selection.isCollapsed)))\r\n return;\r\n collapsed = selection.isCollapsed || false;\r\n const ranges = [];\r\n const count = selection.rangeCount || 0;\r\n for (let i = 0; i < count; i++) {\r\n const range = selection.getRangeAt(i);\r\n const { startContainer, startOffset, endContainer, endOffset } = range;\r\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) ||\r\n isBlocked(endContainer, blockClass, blockSelector, true);\r\n if (blocked)\r\n continue;\r\n ranges.push({\r\n start: mirror.getId(startContainer),\r\n startOffset,\r\n end: mirror.getId(endContainer),\r\n endOffset,\r\n });\r\n }\r\n selectionCb({ ranges });\r\n };\r\n updateSelection();\r\n return on('selectionchange', updateSelection);\r\n}\r\nfunction mergeHooks(o, hooks) {\r\n const { mutationCb, mousemoveCb, mouseInteractionCb, scrollCb, viewportResizeCb, inputCb, mediaInteractionCb, styleSheetRuleCb, styleDeclarationCb, canvasMutationCb, fontCb, selectionCb, } = o;\r\n o.mutationCb = (...p) => {\r\n if (hooks.mutation) {\r\n hooks.mutation(...p);\r\n }\r\n mutationCb(...p);\r\n };\r\n o.mousemoveCb = (...p) => {\r\n if (hooks.mousemove) {\r\n hooks.mousemove(...p);\r\n }\r\n mousemoveCb(...p);\r\n };\r\n o.mouseInteractionCb = (...p) => {\r\n if (hooks.mouseInteraction) {\r\n hooks.mouseInteraction(...p);\r\n }\r\n mouseInteractionCb(...p);\r\n };\r\n o.scrollCb = (...p) => {\r\n if (hooks.scroll) {\r\n hooks.scroll(...p);\r\n }\r\n scrollCb(...p);\r\n };\r\n o.viewportResizeCb = (...p) => {\r\n if (hooks.viewportResize) {\r\n hooks.viewportResize(...p);\r\n }\r\n viewportResizeCb(...p);\r\n };\r\n o.inputCb = (...p) => {\r\n if (hooks.input) {\r\n hooks.input(...p);\r\n }\r\n inputCb(...p);\r\n };\r\n o.mediaInteractionCb = (...p) => {\r\n if (hooks.mediaInteaction) {\r\n hooks.mediaInteaction(...p);\r\n }\r\n mediaInteractionCb(...p);\r\n };\r\n o.styleSheetRuleCb = (...p) => {\r\n if (hooks.styleSheetRule) {\r\n hooks.styleSheetRule(...p);\r\n }\r\n styleSheetRuleCb(...p);\r\n };\r\n o.styleDeclarationCb = (...p) => {\r\n if (hooks.styleDeclaration) {\r\n hooks.styleDeclaration(...p);\r\n }\r\n styleDeclarationCb(...p);\r\n };\r\n o.canvasMutationCb = (...p) => {\r\n if (hooks.canvasMutation) {\r\n hooks.canvasMutation(...p);\r\n }\r\n canvasMutationCb(...p);\r\n };\r\n o.fontCb = (...p) => {\r\n if (hooks.font) {\r\n hooks.font(...p);\r\n }\r\n fontCb(...p);\r\n };\r\n o.selectionCb = (...p) => {\r\n if (hooks.selection) {\r\n hooks.selection(...p);\r\n }\r\n selectionCb(...p);\r\n };\r\n}\r\nfunction initObservers(o, hooks = {}) {\r\n const currentWindow = o.doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n };\r\n }\r\n mergeHooks(o, hooks);\r\n const mutationObserver = initMutationObserver(o, o.doc);\r\n const mousemoveHandler = initMoveObserver(o);\r\n const mouseInteractionHandler = initMouseInteractionObserver(o);\r\n const scrollHandler = initScrollObserver(o);\r\n const viewportResizeHandler = initViewportResizeObserver(o);\r\n const inputHandler = initInputObserver(o);\r\n const mediaInteractionHandler = initMediaInteractionObserver(o);\r\n const styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\r\n const adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\r\n const styleDeclarationObserver = initStyleDeclarationObserver(o, {\r\n win: currentWindow,\r\n });\r\n const fontObserver = o.collectFonts\r\n ? initFontObserver(o)\r\n : () => {\r\n };\r\n const selectionObserver = initSelectionObserver(o);\r\n const pluginHandlers = [];\r\n for (const plugin of o.plugins) {\r\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\r\n }\r\n return () => {\r\n mutationBuffers.forEach((b) => b.reset());\r\n mutationObserver.disconnect();\r\n mousemoveHandler();\r\n mouseInteractionHandler();\r\n scrollHandler();\r\n viewportResizeHandler();\r\n inputHandler();\r\n mediaInteractionHandler();\r\n styleSheetObserver();\r\n adoptedStyleSheetObserver();\r\n styleDeclarationObserver();\r\n fontObserver();\r\n selectionObserver();\r\n pluginHandlers.forEach((h) => h());\r\n };\r\n}\n\nexport { INPUT_TAGS, initAdoptedStyleSheetObserver, initMutationObserver, initObservers, initScrollObserver, mutationBuffers };\n","class CrossOriginIframeMirror {\r\n constructor(generateIdFn) {\r\n this.generateIdFn = generateIdFn;\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n }\r\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\r\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\r\n let id = idToRemoteIdMap.get(remoteId);\r\n if (!id) {\r\n id = this.generateIdFn();\r\n idToRemoteIdMap.set(remoteId, id);\r\n remoteIdToIdMap.set(id, remoteId);\r\n }\r\n return id;\r\n }\r\n getIds(iframe, remoteId) {\r\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return remoteId.map((id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap));\r\n }\r\n getRemoteId(iframe, id, map) {\r\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\r\n if (typeof id !== 'number')\r\n return id;\r\n const remoteId = remoteIdToIdMap.get(id);\r\n if (!remoteId)\r\n return -1;\r\n return remoteId;\r\n }\r\n getRemoteIds(iframe, ids) {\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\r\n }\r\n reset(iframe) {\r\n if (!iframe) {\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n return;\r\n }\r\n this.iframeIdToRemoteIdMap.delete(iframe);\r\n this.iframeRemoteIdToIdMap.delete(iframe);\r\n }\r\n getIdToRemoteIdMap(iframe) {\r\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\r\n if (!idToRemoteIdMap) {\r\n idToRemoteIdMap = new Map();\r\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\r\n }\r\n return idToRemoteIdMap;\r\n }\r\n getRemoteIdToIdMap(iframe) {\r\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\r\n if (!remoteIdToIdMap) {\r\n remoteIdToIdMap = new Map();\r\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\r\n }\r\n return remoteIdToIdMap;\r\n }\r\n}\n\nexport { CrossOriginIframeMirror as default };\n","import { genId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport CrossOriginIframeMirror from './cross-origin-iframe-mirror.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\n\nclass IframeManager {\r\n constructor(options) {\r\n this.iframes = new WeakMap();\r\n this.crossOriginIframeMap = new WeakMap();\r\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\r\n this.mutationCb = options.mutationCb;\r\n this.wrappedEmit = options.wrappedEmit;\r\n this.stylesheetManager = options.stylesheetManager;\r\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\r\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\r\n this.mirror = options.mirror;\r\n if (this.recordCrossOriginIframes) {\r\n window.addEventListener('message', this.handleMessage.bind(this));\r\n }\r\n }\r\n addIframe(iframeEl) {\r\n this.iframes.set(iframeEl, true);\r\n if (iframeEl.contentWindow)\r\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\r\n }\r\n addLoadListener(cb) {\r\n this.loadListener = cb;\r\n }\r\n attachIframe(iframeEl, childSn) {\r\n var _a;\r\n this.mutationCb({\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: childSn,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n });\r\n (_a = this.loadListener) === null || _a === void 0 ? void 0 : _a.call(this, iframeEl);\r\n if (iframeEl.contentDocument &&\r\n iframeEl.contentDocument.adoptedStyleSheets &&\r\n iframeEl.contentDocument.adoptedStyleSheets.length > 0)\r\n this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\r\n }\r\n handleMessage(message) {\r\n if (message.data.type === 'rrweb') {\r\n const iframeSourceWindow = message.source;\r\n if (!iframeSourceWindow)\r\n return;\r\n const iframeEl = this.crossOriginIframeMap.get(message.source);\r\n if (!iframeEl)\r\n return;\r\n const transformedEvent = this.transformCrossOriginEvent(iframeEl, message.data.event);\r\n if (transformedEvent)\r\n this.wrappedEmit(transformedEvent, message.data.isCheckout);\r\n }\r\n }\r\n transformCrossOriginEvent(iframeEl, e) {\r\n var _a;\r\n switch (e.type) {\r\n case EventType.FullSnapshot: {\r\n this.crossOriginIframeMirror.reset(iframeEl);\r\n this.crossOriginIframeStyleMirror.reset(iframeEl);\r\n this.replaceIdOnNode(e.data.node, iframeEl);\r\n return {\r\n timestamp: e.timestamp,\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Mutation,\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: e.data.node,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n },\r\n };\r\n }\r\n case EventType.Meta:\r\n case EventType.Load:\r\n case EventType.DomContentLoaded: {\r\n return false;\r\n }\r\n case EventType.Plugin: {\r\n return e;\r\n }\r\n case EventType.Custom: {\r\n this.replaceIds(e.data.payload, iframeEl, ['id', 'parentId', 'previousId', 'nextId']);\r\n return e;\r\n }\r\n case EventType.IncrementalSnapshot: {\r\n switch (e.data.source) {\r\n case IncrementalSource.Mutation: {\r\n e.data.adds.forEach((n) => {\r\n this.replaceIds(n, iframeEl, [\r\n 'parentId',\r\n 'nextId',\r\n 'previousId',\r\n ]);\r\n this.replaceIdOnNode(n.node, iframeEl);\r\n });\r\n e.data.removes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['parentId', 'id']);\r\n });\r\n e.data.attributes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n e.data.texts.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.Drag:\r\n case IncrementalSource.TouchMove:\r\n case IncrementalSource.MouseMove: {\r\n e.data.positions.forEach((p) => {\r\n this.replaceIds(p, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.ViewportResize: {\r\n return false;\r\n }\r\n case IncrementalSource.MediaInteraction:\r\n case IncrementalSource.MouseInteraction:\r\n case IncrementalSource.Scroll:\r\n case IncrementalSource.CanvasMutation:\r\n case IncrementalSource.Input: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n return e;\r\n }\r\n case IncrementalSource.StyleSheetRule:\r\n case IncrementalSource.StyleDeclaration: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleId']);\r\n return e;\r\n }\r\n case IncrementalSource.Font: {\r\n return e;\r\n }\r\n case IncrementalSource.Selection: {\r\n e.data.ranges.forEach((range) => {\r\n this.replaceIds(range, iframeEl, ['start', 'end']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.AdoptedStyleSheet: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\r\n (_a = e.data.styles) === null || _a === void 0 ? void 0 : _a.forEach((style) => {\r\n this.replaceStyleIds(style, iframeEl, ['styleId']);\r\n });\r\n return e;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n replace(iframeMirror, obj, iframeEl, keys) {\r\n for (const key of keys) {\r\n if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number')\r\n continue;\r\n if (Array.isArray(obj[key])) {\r\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\r\n }\r\n else {\r\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\r\n }\r\n }\r\n return obj;\r\n }\r\n replaceIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\r\n }\r\n replaceStyleIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\r\n }\r\n replaceIdOnNode(node, iframeEl) {\r\n this.replaceIds(node, iframeEl, ['id']);\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.replaceIdOnNode(child, iframeEl);\r\n });\r\n }\r\n }\r\n}\n\nexport { IframeManager };\n","import { initMutationObserver, initScrollObserver, initAdoptedStyleSheetObserver } from './observer.js';\nimport { patch } from '../utils.js';\nimport { isNativeShadowDom } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nclass ShadowDomManager {\r\n constructor(options) {\r\n this.shadowDoms = new WeakSet();\r\n this.restorePatches = [];\r\n this.mutationCb = options.mutationCb;\r\n this.scrollCb = options.scrollCb;\r\n this.bypassOptions = options.bypassOptions;\r\n this.mirror = options.mirror;\r\n const manager = this;\r\n this.restorePatches.push(patch(Element.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot)\r\n manager.addShadowRoot(this.shadowRoot, this.ownerDocument);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n addShadowRoot(shadowRoot, doc) {\r\n if (!isNativeShadowDom(shadowRoot))\r\n return;\r\n if (this.shadowDoms.has(shadowRoot))\r\n return;\r\n this.shadowDoms.add(shadowRoot);\r\n initMutationObserver(Object.assign(Object.assign({}, this.bypassOptions), { doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot);\r\n initScrollObserver(Object.assign(Object.assign({}, this.bypassOptions), { scrollCb: this.scrollCb, doc: shadowRoot, mirror: this.mirror }));\r\n setTimeout(() => {\r\n if (shadowRoot.adoptedStyleSheets &&\r\n shadowRoot.adoptedStyleSheets.length > 0)\r\n this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot.adoptedStyleSheets, this.mirror.getId(shadowRoot.host));\r\n initAdoptedStyleSheetObserver({\r\n mirror: this.mirror,\r\n stylesheetManager: this.bypassOptions.stylesheetManager,\r\n }, shadowRoot);\r\n }, 0);\r\n }\r\n observeAttachShadow(iframeElement) {\r\n if (iframeElement.contentWindow) {\r\n const manager = this;\r\n this.restorePatches.push(patch(iframeElement.contentWindow.HTMLElement.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot)\r\n manager.addShadowRoot(this.shadowRoot, iframeElement.contentDocument);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n }\r\n reset() {\r\n this.restorePatches.forEach((restorePatch) => restorePatch());\r\n this.shadowDoms = new WeakSet();\r\n }\r\n}\n\nexport { ShadowDomManager };\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nexport { __awaiter, __rest };\n","/*\n * base64-arraybuffer 1.0.1 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2021 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n","import { encode } from './../../../../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nconst canvasVarMap = new Map();\r\nfunction variableListFor(ctx, ctor) {\r\n let contextMap = canvasVarMap.get(ctx);\r\n if (!contextMap) {\r\n contextMap = new Map();\r\n canvasVarMap.set(ctx, contextMap);\r\n }\r\n if (!contextMap.has(ctor)) {\r\n contextMap.set(ctor, []);\r\n }\r\n return contextMap.get(ctor);\r\n}\r\nconst saveWebGLVar = (value, win, ctx) => {\r\n if (!value ||\r\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\r\n return;\r\n const name = value.constructor.name;\r\n const list = variableListFor(ctx, name);\r\n let index = list.indexOf(value);\r\n if (index === -1) {\r\n index = list.length;\r\n list.push(value);\r\n }\r\n return index;\r\n};\r\nfunction serializeArg(value, win, ctx) {\r\n if (value instanceof Array) {\r\n return value.map((arg) => serializeArg(arg, win, ctx));\r\n }\r\n else if (value === null) {\r\n return value;\r\n }\r\n else if (value instanceof Float32Array ||\r\n value instanceof Float64Array ||\r\n value instanceof Int32Array ||\r\n value instanceof Uint32Array ||\r\n value instanceof Uint8Array ||\r\n value instanceof Uint16Array ||\r\n value instanceof Int16Array ||\r\n value instanceof Int8Array ||\r\n value instanceof Uint8ClampedArray) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [Object.values(value)],\r\n };\r\n }\r\n else if (value instanceof ArrayBuffer) {\r\n const name = value.constructor.name;\r\n const base64 = encode(value);\r\n return {\r\n rr_type: name,\r\n base64,\r\n };\r\n }\r\n else if (value instanceof DataView) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [\r\n serializeArg(value.buffer, win, ctx),\r\n value.byteOffset,\r\n value.byteLength,\r\n ],\r\n };\r\n }\r\n else if (value instanceof HTMLImageElement) {\r\n const name = value.constructor.name;\r\n const { src } = value;\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof HTMLCanvasElement) {\r\n const name = 'HTMLImageElement';\r\n const src = value.toDataURL();\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof ImageData) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\r\n };\r\n }\r\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\r\n const name = value.constructor.name;\r\n const index = saveWebGLVar(value, win, ctx);\r\n return {\r\n rr_type: name,\r\n index: index,\r\n };\r\n }\r\n return value;\r\n}\r\nconst serializeArgs = (args, win, ctx) => {\r\n return [...args].map((arg) => serializeArg(arg, win, ctx));\r\n};\r\nconst isInstanceOfWebGLObject = (value, win) => {\r\n const webGLConstructorNames = [\r\n 'WebGLActiveInfo',\r\n 'WebGLBuffer',\r\n 'WebGLFramebuffer',\r\n 'WebGLProgram',\r\n 'WebGLRenderbuffer',\r\n 'WebGLShader',\r\n 'WebGLShaderPrecisionFormat',\r\n 'WebGLTexture',\r\n 'WebGLUniformLocation',\r\n 'WebGLVertexArrayObject',\r\n 'WebGLVertexArrayObjectOES',\r\n ];\r\n const supportedWebGLConstructorNames = webGLConstructorNames.filter((name) => typeof win[name] === 'function');\r\n return Boolean(supportedWebGLConstructorNames.find((name) => value instanceof win[name]));\r\n};\n\nexport { isInstanceOfWebGLObject, saveWebGLVar, serializeArg, serializeArgs, variableListFor };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { serializeArgs } from './serialize-args.js';\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\r\n const handlers = [];\r\n const props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\r\n for (const prop of props2D) {\r\n try {\r\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\r\n return function (...args) {\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n setTimeout(() => {\r\n const recordArgs = serializeArgs([...args], win, this);\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: recordArgs,\r\n });\r\n }, 0);\r\n }\r\n return original.apply(this, args);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvas2DMutationObserver as default };\n","import { patch, isBlocked } from '../../../utils.js';\n\nfunction initCanvasContextObserver(win, blockClass, blockSelector) {\r\n const handlers = [];\r\n try {\r\n const restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\r\n return function (contextType, ...args) {\r\n if (!isBlocked(this, blockClass, blockSelector, true)) {\r\n if (!('__context' in this))\r\n this.__context = contextType;\r\n }\r\n return original.apply(this, [contextType, ...args]);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasContextObserver as default };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { saveWebGLVar, serializeArgs } from './serialize-args.js';\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, mirror, win) {\r\n const handlers = [];\r\n const props = Object.getOwnPropertyNames(prototype);\r\n for (const prop of props) {\r\n if ([\r\n 'isContextLost',\r\n 'canvas',\r\n 'drawingBufferWidth',\r\n 'drawingBufferHeight',\r\n ].includes(prop)) {\r\n continue;\r\n }\r\n try {\r\n if (typeof prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(prototype, prop, function (original) {\r\n return function (...args) {\r\n const result = original.apply(this, args);\r\n saveWebGLVar(result, win, this);\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n const recordArgs = serializeArgs([...args], win, this);\r\n const mutation = {\r\n type,\r\n property: prop,\r\n args: recordArgs,\r\n };\r\n cb(this.canvas, mutation);\r\n }\r\n return result;\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type,\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return handlers;\r\n}\r\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector, mirror) {\r\n const handlers = [];\r\n handlers.push(...patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, mirror, win));\r\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\r\n handlers.push(...patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, mirror, win));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasWebGLMutationObserver as default };\n","var WorkerClass = null;\n\ntry {\n var WorkerThreads =\n typeof module !== 'undefined' && typeof module.require === 'function' && module.require('worker_threads') ||\n typeof __non_webpack_require__ === 'function' && __non_webpack_require__('worker_threads') ||\n typeof require === 'function' && require('worker_threads');\n WorkerClass = WorkerThreads.Worker;\n} catch(e) {} // eslint-disable-line\n\nexport { WorkerClass };\n","import { WorkerClass } from './_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js';\n\nfunction decodeBase64(base64, enableUnicode) {\n return Buffer.from(base64, 'base64').toString(enableUnicode ? 'utf16' : 'utf8');\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n return function WorkerFactory(options) {\n return new WorkerClass(body, Object.assign({}, options, { eval: true }));\n };\n}\n\nexport { createBase64WorkerFactory };\n","function decodeBase64(base64, enableUnicode) {\n var binaryString = atob(base64);\n if (enableUnicode) {\n var binaryView = new Uint8Array(binaryString.length);\n for (var i = 0, n = binaryString.length; i < n; ++i) {\n binaryView[i] = binaryString.charCodeAt(i);\n }\n return String.fromCharCode.apply(null, new Uint16Array(binaryView.buffer));\n }\n return binaryString;\n}\n\nfunction createURL(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n var blob = new Blob([body], { type: 'application/javascript' });\n return URL.createObjectURL(blob);\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var url;\n return function WorkerFactory(options) {\n url = url || createURL(base64, sourcemapArg, enableUnicodeArg);\n return new Worker(url, options);\n };\n}\n\nexport { createBase64WorkerFactory };\n","var kIsNodeJS = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n\nfunction isNodeJS() {\n return kIsNodeJS;\n}\n\nexport { isNodeJS };\n","import { createBase64WorkerFactory as createBase64WorkerFactory$1 } from './_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js';\nimport { createBase64WorkerFactory as createBase64WorkerFactory$2 } from './_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js';\nimport { isNodeJS } from './_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js';\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n if (isNodeJS()) {\n return createBase64WorkerFactory$1(base64, sourcemapArg, enableUnicodeArg);\n }\n return createBase64WorkerFactory$2(base64, sourcemapArg, enableUnicodeArg);\n}\n\nexport { createBase64WorkerFactory };\n","import { createBase64WorkerFactory } from './_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js';\n\nvar WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikgew0KICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0NCiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7DQogICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfQ0KICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpOw0KICAgICAgICB9KTsNCiAgICB9CgogICAgLyoKICAgICAqIGJhc2U2NC1hcnJheWJ1ZmZlciAxLjAuMSA8aHR0cHM6Ly9naXRodWIuY29tL25pa2xhc3ZoL2Jhc2U2NC1hcnJheWJ1ZmZlcj4KICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBOaWtsYXMgdm9uIEhlcnR6ZW4gPGh0dHBzOi8vaGVydHplbi5jb20+CiAgICAgKiBSZWxlYXNlZCB1bmRlciBNSVQgTGljZW5zZQogICAgICovCiAgICB2YXIgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7CiAgICAvLyBVc2UgYSBsb29rdXAgdGFibGUgdG8gZmluZCB0aGUgaW5kZXguCiAgICB2YXIgbG9va3VwID0gdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gW10gOiBuZXcgVWludDhBcnJheSgyNTYpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKykgewogICAgICAgIGxvb2t1cFtjaGFycy5jaGFyQ29kZUF0KGkpXSA9IGk7CiAgICB9CiAgICB2YXIgZW5jb2RlID0gZnVuY3Rpb24gKGFycmF5YnVmZmVyKSB7CiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlidWZmZXIpLCBpLCBsZW4gPSBieXRlcy5sZW5ndGgsIGJhc2U2NCA9ICcnOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMykgewogICAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaV0gPj4gMl07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1soKGJ5dGVzW2ldICYgMykgPDwgNCkgfCAoYnl0ZXNbaSArIDFdID4+IDQpXTsKICAgICAgICAgICAgYmFzZTY0ICs9IGNoYXJzWygoYnl0ZXNbaSArIDFdICYgMTUpIDw8IDIpIHwgKGJ5dGVzW2kgKyAyXSA+PiA2KV07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1tieXRlc1tpICsgMl0gJiA2M107CiAgICAgICAgfQogICAgICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgJz0nOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgJz09JzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGJhc2U2NDsKICAgIH07CgogICAgY29uc3QgbGFzdEJsb2JNYXAgPSBuZXcgTWFwKCk7DQogICAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gbmV3IE1hcCgpOw0KICAgIGZ1bmN0aW9uIGdldFRyYW5zcGFyZW50QmxvYkZvcih3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucykgew0KICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgew0KICAgICAgICAgICAgY29uc3QgaWQgPSBgJHt3aWR0aH0tJHtoZWlnaHR9YDsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgaWYgKHRyYW5zcGFyZW50QmxvYk1hcC5oYXMoaWQpKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNwYXJlbnRCbG9iTWFwLmdldChpZCk7DQogICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsNCiAgICAgICAgICAgICAgICBvZmZzY3JlZW4uZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0geWllbGQgYmxvYi5hcnJheUJ1ZmZlcigpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7DQogICAgICAgICAgICAgICAgdHJhbnNwYXJlbnRCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gYmFzZTY0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICcnOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9DQogICAgY29uc3Qgd29ya2VyID0gc2VsZjsNCiAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgY29uc3QgeyBpZCwgYml0bWFwLCB3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucyB9ID0gZS5kYXRhOw0KICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zKTsNCiAgICAgICAgICAgICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGN0eCA9IG9mZnNjcmVlbi5nZXRDb250ZXh0KCcyZCcpOw0KICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoYml0bWFwLCAwLCAwKTsNCiAgICAgICAgICAgICAgICBiaXRtYXAuY2xvc2UoKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBibG9iLnR5cGU7DQogICAgICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSB5aWVsZCBibG9iLmFycmF5QnVmZmVyKCk7DQogICAgICAgICAgICAgICAgY29uc3QgYmFzZTY0ID0gZW5jb2RlKGFycmF5QnVmZmVyKTsNCiAgICAgICAgICAgICAgICBpZiAoIWxhc3RCbG9iTWFwLmhhcyhpZCkgJiYgKHlpZWxkIHRyYW5zcGFyZW50QmFzZTY0KSA9PT0gYmFzZTY0KSB7DQogICAgICAgICAgICAgICAgICAgIGxhc3RCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5wb3N0TWVzc2FnZSh7IGlkIH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7DQogICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgaWQsDQogICAgICAgICAgICAgICAgICAgIHR5cGUsDQogICAgICAgICAgICAgICAgICAgIGJhc2U2NCwNCiAgICAgICAgICAgICAgICAgICAgd2lkdGgsDQogICAgICAgICAgICAgICAgICAgIGhlaWdodCwNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfTsKCn0pKCk7Cgo=', null, false);\n/* eslint-enable */\n\nexport { WorkerFactory as default };\n","import { __rest, __awaiter } from './../../../../../../ext/tslib/tslib.es6.js';\nimport { isBlocked } from '../../../utils.js';\nimport { CanvasContext } from '../../../../../types/dist/types.js';\nimport initCanvas2DMutationObserver from './2d.js';\nimport initCanvasContextObserver from './canvas.js';\nimport initCanvasWebGLMutationObserver from './webgl.js';\nimport WorkerFactory from '../../../../../../_virtual/image-bitmap-data-url-worker.js';\n\nclass CanvasManager {\r\n constructor(options) {\r\n this.pendingCanvasMutations = new Map();\r\n this.rafStamps = { latestId: 0, invokeId: null };\r\n this.frozen = false;\r\n this.locked = false;\r\n this.processMutation = (target, mutation) => {\r\n const newFrame = this.rafStamps.invokeId &&\r\n this.rafStamps.latestId !== this.rafStamps.invokeId;\r\n if (newFrame || !this.rafStamps.invokeId)\r\n this.rafStamps.invokeId = this.rafStamps.latestId;\r\n if (!this.pendingCanvasMutations.has(target)) {\r\n this.pendingCanvasMutations.set(target, []);\r\n }\r\n this.pendingCanvasMutations.get(target).push(mutation);\r\n };\r\n const { sampling = 'all', win, blockClass, blockSelector, recordCanvas, dataURLOptions, } = options;\r\n this.mutationCb = options.mutationCb;\r\n this.mirror = options.mirror;\r\n if (recordCanvas && sampling === 'all')\r\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\r\n if (recordCanvas && typeof sampling === 'number')\r\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\r\n dataURLOptions,\r\n });\r\n }\r\n reset() {\r\n this.pendingCanvasMutations.clear();\r\n this.resetObservers && this.resetObservers();\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n }\r\n lock() {\r\n this.locked = true;\r\n }\r\n unlock() {\r\n this.locked = false;\r\n }\r\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector);\r\n const snapshotInProgressMap = new Map();\r\n const worker = new WorkerFactory();\r\n worker.onmessage = (e) => {\r\n const { id } = e.data;\r\n snapshotInProgressMap.set(id, false);\r\n if (!('base64' in e.data))\r\n return;\r\n const { base64, type, width, height } = e.data;\r\n this.mutationCb({\r\n id,\r\n type: CanvasContext['2D'],\r\n commands: [\r\n {\r\n property: 'clearRect',\r\n args: [0, 0, width, height],\r\n },\r\n {\r\n property: 'drawImage',\r\n args: [\r\n {\r\n rr_type: 'ImageBitmap',\r\n args: [\r\n {\r\n rr_type: 'Blob',\r\n data: [{ rr_type: 'ArrayBuffer', base64 }],\r\n type,\r\n },\r\n ],\r\n },\r\n 0,\r\n 0,\r\n ],\r\n },\r\n ],\r\n });\r\n };\r\n const timeBetweenSnapshots = 1000 / fps;\r\n let lastSnapshotTime = 0;\r\n let rafId;\r\n const getCanvas = () => {\r\n const matchedCanvas = [];\r\n win.document.querySelectorAll('canvas').forEach((canvas) => {\r\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\r\n matchedCanvas.push(canvas);\r\n }\r\n });\r\n return matchedCanvas;\r\n };\r\n const takeCanvasSnapshots = (timestamp) => {\r\n if (lastSnapshotTime &&\r\n timestamp - lastSnapshotTime < timeBetweenSnapshots) {\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n return;\r\n }\r\n lastSnapshotTime = timestamp;\r\n getCanvas()\r\n .forEach((canvas) => __awaiter(this, void 0, void 0, function* () {\r\n var _a;\r\n const id = this.mirror.getId(canvas);\r\n if (snapshotInProgressMap.get(id))\r\n return;\r\n snapshotInProgressMap.set(id, true);\r\n if (['webgl', 'webgl2'].includes(canvas.__context)) {\r\n const context = canvas.getContext(canvas.__context);\r\n if (((_a = context === null || context === void 0 ? void 0 : context.getContextAttributes()) === null || _a === void 0 ? void 0 : _a.preserveDrawingBuffer) === false) {\r\n context === null || context === void 0 ? void 0 : context.clear(context.COLOR_BUFFER_BIT);\r\n }\r\n }\r\n const bitmap = yield createImageBitmap(canvas);\r\n worker.postMessage({\r\n id,\r\n bitmap,\r\n width: canvas.width,\r\n height: canvas.height,\r\n dataURLOptions: options.dataURLOptions,\r\n }, [bitmap]);\r\n }));\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n };\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n cancelAnimationFrame(rafId);\r\n };\r\n }\r\n initCanvasMutationObserver(win, blockClass, blockSelector) {\r\n this.startRAFTimestamping();\r\n this.startPendingCanvasMutationFlusher();\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector);\r\n const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\r\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, this.mirror);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n canvas2DReset();\r\n canvasWebGL1and2Reset();\r\n };\r\n }\r\n startPendingCanvasMutationFlusher() {\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n startRAFTimestamping() {\r\n const setLatestRAFTimestamp = (timestamp) => {\r\n this.rafStamps.latestId = timestamp;\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n };\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n }\r\n flushPendingCanvasMutations() {\r\n this.pendingCanvasMutations.forEach((values, canvas) => {\r\n const id = this.mirror.getId(canvas);\r\n this.flushPendingCanvasMutationFor(canvas, id);\r\n });\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n flushPendingCanvasMutationFor(canvas, id) {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\r\n if (!valuesWithType || id === -1)\r\n return;\r\n const values = valuesWithType.map((value) => {\r\n const rest = __rest(value, [\"type\"]);\r\n return rest;\r\n });\r\n const { type } = valuesWithType[0];\r\n this.mutationCb({ id, type, commands: values });\r\n this.pendingCanvasMutations.delete(canvas);\r\n }\r\n}\n\nexport { CanvasManager };\n","import { getCssRuleString } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { StyleSheetMirror } from '../utils.js';\n\nclass StylesheetManager {\r\n constructor(options) {\r\n this.trackedLinkElements = new WeakSet();\r\n this.styleMirror = new StyleSheetMirror();\r\n this.mutationCb = options.mutationCb;\r\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\r\n }\r\n attachLinkElement(linkEl, childSn) {\r\n if ('_cssText' in childSn.attributes)\r\n this.mutationCb({\r\n adds: [],\r\n removes: [],\r\n texts: [],\r\n attributes: [\r\n {\r\n id: childSn.id,\r\n attributes: childSn\r\n .attributes,\r\n },\r\n ],\r\n });\r\n this.trackLinkElement(linkEl);\r\n }\r\n trackLinkElement(linkEl) {\r\n if (this.trackedLinkElements.has(linkEl))\r\n return;\r\n this.trackedLinkElements.add(linkEl);\r\n this.trackStylesheetInLinkElement(linkEl);\r\n }\r\n adoptStyleSheets(sheets, hostId) {\r\n if (sheets.length === 0)\r\n return;\r\n const adoptedStyleSheetData = {\r\n id: hostId,\r\n styleIds: [],\r\n };\r\n const styles = [];\r\n for (const sheet of sheets) {\r\n let styleId;\r\n if (!this.styleMirror.has(sheet)) {\r\n styleId = this.styleMirror.add(sheet);\r\n const rules = Array.from(sheet.rules || CSSRule);\r\n styles.push({\r\n styleId,\r\n rules: rules.map((r, index) => {\r\n return {\r\n rule: getCssRuleString(r),\r\n index,\r\n };\r\n }),\r\n });\r\n }\r\n else\r\n styleId = this.styleMirror.getId(sheet);\r\n adoptedStyleSheetData.styleIds.push(styleId);\r\n }\r\n if (styles.length > 0)\r\n adoptedStyleSheetData.styles = styles;\r\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\r\n }\r\n reset() {\r\n this.styleMirror.reset();\r\n this.trackedLinkElements = new WeakSet();\r\n }\r\n trackStylesheetInLinkElement(linkEl) {\r\n }\r\n}\n\nexport { StylesheetManager };\n","import { createMirror, snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { initObservers, mutationBuffers } from './observer.js';\nimport { polyfill, on, getWindowWidth, getWindowHeight, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\nimport { IframeManager } from './iframe-manager.js';\nimport { ShadowDomManager } from './shadow-dom-manager.js';\nimport { CanvasManager } from './observers/canvas/canvas-manager.js';\nimport { StylesheetManager } from './stylesheet-manager.js';\n\nfunction wrapEvent(e) {\r\n return Object.assign(Object.assign({}, e), { timestamp: Date.now() });\r\n}\r\nlet wrappedEmit;\r\nlet takeFullSnapshot;\r\nlet canvasManager;\r\nlet recording = false;\r\nconst mirror = createMirror();\r\nfunction record(options = {}) {\r\n const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, ignoreClass = 'rr-ignore', maskTextClass = 'rr-mask', maskTextSelector = null, inlineStylesheet = true, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskInputFn, maskTextFn, hooks, packFn, sampling = {}, dataURLOptions = {}, mousemoveWait, recordCanvas = false, recordCrossOriginIframes = false, userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, ignoreCSSAttributes = new Set([]), } = options;\r\n const inEmittingFrame = recordCrossOriginIframes\r\n ? window.parent === window\r\n : true;\r\n let passEmitsToParent = false;\r\n if (!inEmittingFrame) {\r\n try {\r\n window.parent.document;\r\n passEmitsToParent = false;\r\n }\r\n catch (e) {\r\n passEmitsToParent = true;\r\n }\r\n }\r\n if (inEmittingFrame && !emit) {\r\n throw new Error('emit function is required');\r\n }\r\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\r\n sampling.mousemove = mousemoveWait;\r\n }\r\n mirror.reset();\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true,\r\n }\r\n : _maskInputOptions !== undefined\r\n ? _maskInputOptions\r\n : { password: true };\r\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\r\n ? {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaVerification: true,\r\n headMetaAuthorship: _slimDOMOptions === 'all',\r\n headMetaDescKeywords: _slimDOMOptions === 'all',\r\n }\r\n : _slimDOMOptions\r\n ? _slimDOMOptions\r\n : {};\r\n polyfill();\r\n let lastFullSnapshotEvent;\r\n let incrementalSnapshotCount = 0;\r\n const eventProcessor = (e) => {\r\n for (const plugin of plugins || []) {\r\n if (plugin.eventProcessor) {\r\n e = plugin.eventProcessor(e);\r\n }\r\n }\r\n if (packFn) {\r\n e = packFn(e);\r\n }\r\n return e;\r\n };\r\n wrappedEmit = (e, isCheckout) => {\r\n var _a;\r\n if (((_a = mutationBuffers[0]) === null || _a === void 0 ? void 0 : _a.isFrozen()) &&\r\n e.type !== EventType.FullSnapshot &&\r\n !(e.type === EventType.IncrementalSnapshot &&\r\n e.data.source === IncrementalSource.Mutation)) {\r\n mutationBuffers.forEach((buf) => buf.unfreeze());\r\n }\r\n if (inEmittingFrame) {\r\n emit === null || emit === void 0 ? void 0 : emit(eventProcessor(e), isCheckout);\r\n }\r\n else if (passEmitsToParent) {\r\n const message = {\r\n type: 'rrweb',\r\n event: eventProcessor(e),\r\n isCheckout,\r\n };\r\n window.parent.postMessage(message, '*');\r\n }\r\n if (e.type === EventType.FullSnapshot) {\r\n lastFullSnapshotEvent = e;\r\n incrementalSnapshotCount = 0;\r\n }\r\n else if (e.type === EventType.IncrementalSnapshot) {\r\n if (e.data.source === IncrementalSource.Mutation &&\r\n e.data.isAttachIframe) {\r\n return;\r\n }\r\n incrementalSnapshotCount++;\r\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\r\n const exceedTime = checkoutEveryNms &&\r\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\r\n if (exceedCount || exceedTime) {\r\n takeFullSnapshot(true);\r\n }\r\n }\r\n };\r\n const wrappedMutationEmit = (m) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Mutation }, m),\r\n }));\r\n };\r\n const wrappedScrollEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Scroll }, p),\r\n }));\r\n const wrappedCanvasMutationEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.CanvasMutation }, p),\r\n }));\r\n const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.AdoptedStyleSheet }, a),\r\n }));\r\n const stylesheetManager = new StylesheetManager({\r\n mutationCb: wrappedMutationEmit,\r\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\r\n });\r\n const iframeManager = new IframeManager({\r\n mirror,\r\n mutationCb: wrappedMutationEmit,\r\n stylesheetManager: stylesheetManager,\r\n recordCrossOriginIframes,\r\n wrappedEmit,\r\n });\r\n for (const plugin of plugins || []) {\r\n if (plugin.getMirror)\r\n plugin.getMirror({\r\n nodeMirror: mirror,\r\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\r\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror,\r\n });\r\n }\r\n canvasManager = new CanvasManager({\r\n recordCanvas,\r\n mutationCb: wrappedCanvasMutationEmit,\r\n win: window,\r\n blockClass,\r\n blockSelector,\r\n mirror,\r\n sampling: sampling.canvas,\r\n dataURLOptions,\r\n });\r\n const shadowDomManager = new ShadowDomManager({\r\n mutationCb: wrappedMutationEmit,\r\n scrollCb: wrappedScrollEmit,\r\n bypassOptions: {\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n dataURLOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n recordCanvas,\r\n inlineImages,\r\n sampling,\r\n slimDOMOptions,\r\n iframeManager,\r\n stylesheetManager,\r\n canvasManager,\r\n keepIframeSrcFn,\r\n },\r\n mirror,\r\n });\r\n takeFullSnapshot = (isCheckout = false) => {\r\n var _a, _b, _c, _d, _e, _f;\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Meta,\r\n data: {\r\n href: window.location.href,\r\n width: getWindowWidth(),\r\n height: getWindowHeight(),\r\n },\r\n }), isCheckout);\r\n stylesheetManager.reset();\r\n mutationBuffers.forEach((buf) => buf.lock());\r\n const node = snapshot(document, {\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskAllInputs: maskInputOptions,\r\n maskTextFn,\r\n slimDOM: slimDOMOptions,\r\n dataURLOptions,\r\n recordCanvas,\r\n inlineImages,\r\n onSerialize: (n) => {\r\n if (isSerializedIframe(n, mirror)) {\r\n iframeManager.addIframe(n);\r\n }\r\n if (isSerializedStylesheet(n, mirror)) {\r\n stylesheetManager.trackLinkElement(n);\r\n }\r\n if (hasShadowRoot(n)) {\r\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n iframeManager.attachIframe(iframe, childSn);\r\n shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (linkEl, childSn) => {\r\n stylesheetManager.attachLinkElement(linkEl, childSn);\r\n },\r\n keepIframeSrcFn,\r\n });\r\n if (!node) {\r\n return console.warn('Failed to snapshot the document');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.FullSnapshot,\r\n data: {\r\n node,\r\n initialOffset: {\r\n left: window.pageXOffset !== undefined\r\n ? window.pageXOffset\r\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollLeft) ||\r\n ((_b = (_a = document === null || document === void 0 ? void 0 : document.body) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.scrollLeft) ||\r\n ((_c = document === null || document === void 0 ? void 0 : document.body) === null || _c === void 0 ? void 0 : _c.scrollLeft) ||\r\n 0,\r\n top: window.pageYOffset !== undefined\r\n ? window.pageYOffset\r\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollTop) ||\r\n ((_e = (_d = document === null || document === void 0 ? void 0 : document.body) === null || _d === void 0 ? void 0 : _d.parentElement) === null || _e === void 0 ? void 0 : _e.scrollTop) ||\r\n ((_f = document === null || document === void 0 ? void 0 : document.body) === null || _f === void 0 ? void 0 : _f.scrollTop) ||\r\n 0,\r\n },\r\n },\r\n }));\r\n mutationBuffers.forEach((buf) => buf.unlock());\r\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\r\n stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\r\n };\r\n try {\r\n const handlers = [];\r\n handlers.push(on('DOMContentLoaded', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.DomContentLoaded,\r\n data: {},\r\n }));\r\n }));\r\n const observe = (doc) => {\r\n var _a;\r\n return initObservers({\r\n mutationCb: wrappedMutationEmit,\r\n mousemoveCb: (positions, source) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source,\r\n positions,\r\n },\r\n })),\r\n mouseInteractionCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MouseInteraction }, d),\r\n })),\r\n scrollCb: wrappedScrollEmit,\r\n viewportResizeCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.ViewportResize }, d),\r\n })),\r\n inputCb: (v) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Input }, v),\r\n })),\r\n mediaInteractionCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MediaInteraction }, p),\r\n })),\r\n styleSheetRuleCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleSheetRule }, r),\r\n })),\r\n styleDeclarationCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleDeclaration }, r),\r\n })),\r\n canvasMutationCb: wrappedCanvasMutationEmit,\r\n fontCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Font }, p),\r\n })),\r\n selectionCb: (p) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Selection }, p),\r\n }));\r\n },\r\n blockClass,\r\n ignoreClass,\r\n maskTextClass,\r\n maskTextSelector,\r\n maskInputOptions,\r\n inlineStylesheet,\r\n sampling,\r\n recordCanvas,\r\n inlineImages,\r\n userTriggeredOnInput,\r\n collectFonts,\r\n doc,\r\n maskInputFn,\r\n maskTextFn,\r\n keepIframeSrcFn,\r\n blockSelector,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n mirror,\r\n iframeManager,\r\n stylesheetManager,\r\n shadowDomManager,\r\n canvasManager,\r\n ignoreCSSAttributes,\r\n plugins: ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.filter((p) => p.observer)) === null || _a === void 0 ? void 0 : _a.map((p) => ({\r\n observer: p.observer,\r\n options: p.options,\r\n callback: (payload) => wrappedEmit(wrapEvent({\r\n type: EventType.Plugin,\r\n data: {\r\n plugin: p.name,\r\n payload,\r\n },\r\n })),\r\n }))) || [],\r\n }, hooks);\r\n };\r\n iframeManager.addLoadListener((iframeEl) => {\r\n handlers.push(observe(iframeEl.contentDocument));\r\n });\r\n const init = () => {\r\n takeFullSnapshot();\r\n handlers.push(observe(document));\r\n recording = true;\r\n };\r\n if (document.readyState === 'interactive' ||\r\n document.readyState === 'complete') {\r\n init();\r\n }\r\n else {\r\n handlers.push(on('load', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Load,\r\n data: {},\r\n }));\r\n init();\r\n }, window));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n recording = false;\r\n };\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n}\r\nrecord.addCustomEvent = (tag, payload) => {\r\n if (!recording) {\r\n throw new Error('please add custom event after start recording');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Custom,\r\n data: {\r\n tag,\r\n payload,\r\n },\r\n }));\r\n};\r\nrecord.freezePage = () => {\r\n mutationBuffers.forEach((buf) => buf.freeze());\r\n};\r\nrecord.takeFullSnapshot = (isCheckout) => {\r\n if (!recording) {\r\n throw new Error('please take full snapshot after start recording');\r\n }\r\n takeFullSnapshot(isCheckout);\r\n};\r\nrecord.mirror = mirror;\n\nexport { record as default };\n","import { record } from \"rrweb\";\nimport type { TrackerEvent } from \"../types\";\n\nexport type SessionReplayControllerOptions = {\n emit: (e: TrackerEvent) => void;\n /** rrweb full snapshot interval (ms). Default 10 minutes. */\n checkoutEveryNms?: number;\n /** Inline stylesheets into snapshots. Disabled by default to keep first payload small. */\n inlineStylesheet?: boolean;\n maxEventsPerBatch: number;\n flushIntervalMs: number;\n maskAllInputs: boolean;\n maskTextClass?: string;\n blockClass?: string;\n};\n\n/**\n * Captures the DOM with rrweb and emits `session_replay` batches for the tracker queue.\n */\nexport class SessionReplayController {\n private seq = 0;\n private readonly buffer: unknown[] = [];\n private stopRecording: (() => void) | null = null;\n private flushTimer: ReturnType<typeof setInterval> | null = null;\n\n constructor(private readonly opts: SessionReplayControllerOptions) {}\n\n start(): void {\n if (typeof document === \"undefined\" || this.stopRecording) return;\n\n const options = {\n emit: (event: unknown) => {\n this.buffer.push(event);\n if (this.buffer.length >= this.opts.maxEventsPerBatch) {\n this.flush();\n }\n },\n checkoutEveryNms: this.opts.checkoutEveryNms ?? 600_000,\n inlineStylesheet: this.opts.inlineStylesheet ?? false,\n maskAllInputs: this.opts.maskAllInputs,\n maskTextClass: this.opts.maskTextClass,\n blockClass: this.opts.blockClass,\n };\n\n this.stopRecording =\n record(options as Parameters<typeof record>[0]) ?? null;\n\n this.flushTimer = setInterval(() => {\n if (this.buffer.length > 0) this.flush();\n }, this.opts.flushIntervalMs);\n }\n\n flush(): void {\n if (this.buffer.length === 0) return;\n const events = this.buffer.splice(0, this.buffer.length);\n this.opts.emit({\n type: \"session_replay\",\n data: {\n seq: this.seq++,\n events,\n },\n });\n }\n\n destroy(): void {\n if (this.flushTimer !== null) {\n clearInterval(this.flushTimer);\n this.flushTimer = null;\n }\n this.flush();\n this.stopRecording?.();\n this.stopRecording = null;\n }\n}\n","import type { ClientContext } from \"../types\";\n\nexport const ALPHANA_SDK_VERSION = \"1.0.2\";\n\nfunction detectDeviceCategory(ua: string): \"desktop\" | \"mobile\" | \"tablet\" {\n const s = ua.toLowerCase();\n if (/ipad|tablet|(android(?!.*mobile))/i.test(s)) return \"tablet\";\n if (/mobile|android|iphone|ipod|windows phone/i.test(s)) return \"mobile\";\n if (typeof navigator !== \"undefined\" && navigator.maxTouchPoints > 0) {\n const coarse =\n typeof window !== \"undefined\" &&\n window.matchMedia?.(\"(pointer: coarse)\")?.matches;\n if (coarse && /macintosh|mac os x/i.test(s)) return \"tablet\";\n }\n return \"desktop\";\n}\n\nfunction detectOs(ua: string): string {\n if (/windows/i.test(ua)) return \"Windows\";\n if (/android/i.test(ua)) return \"Android\";\n if (/iphone|ipad|ipod/i.test(ua)) return \"iOS\";\n if (/mac os x|macintosh/i.test(ua)) return \"macOS\";\n if (/linux/i.test(ua)) return \"Linux\";\n return \"Other\";\n}\n\nfunction detectBrowser(ua: string): string {\n if (/edg\\//i.test(ua)) return \"Edge\";\n if (/opr\\/|opera/i.test(ua)) return \"Opera\";\n if (/chrome\\/[0-9]/i.test(ua) && !/chromium/i.test(ua)) return \"Chrome\";\n if (/firefox\\/[0-9]/i.test(ua)) return \"Firefox\";\n if (/safari\\/[0-9]/i.test(ua) && !/chrome/i.test(ua)) return \"Safari\";\n return \"Other\";\n}\n\nfunction readUaData(): { mobile?: boolean; platform?: string } {\n const nav = navigator as Navigator & {\n userAgentData?: {\n mobile?: boolean;\n platform?: string;\n };\n };\n const uaData = nav.userAgentData;\n if (!uaData) return {};\n return { mobile: uaData.mobile, platform: uaData.platform };\n}\n\nfunction uaDataDevice(\n ua: string,\n uaData: { mobile?: boolean; platform?: string },\n): \"desktop\" | \"mobile\" | \"tablet\" {\n const platform = (uaData.platform ?? \"\").toLowerCase();\n if (platform === \"ios\" || platform === \"ipados\") {\n return uaData.mobile ? \"mobile\" : \"tablet\";\n }\n if (platform === \"android\") {\n return uaData.mobile ? \"mobile\" : \"tablet\";\n }\n if (uaData.mobile === true) return \"mobile\";\n return detectDeviceCategory(ua);\n}\n\n/**\n * Snapshot of the browser environment for the session replay catalog and\n * analytics parity with server-side User-Agent parsing.\n */\nexport function collectClientContext(sessionId: string): ClientContext {\n if (typeof window === \"undefined\" || typeof navigator === \"undefined\") {\n return {\n sessionId,\n timestamp: Date.now(),\n device: \"desktop\",\n os: \"Other\",\n browser: \"Other\",\n language: \"\",\n languages: [],\n colorScheme: \"\",\n screenWidth: 0,\n screenHeight: 0,\n viewportWidth: 0,\n viewportHeight: 0,\n devicePixelRatio: 1,\n timeZone: \"\",\n sdkVersion: ALPHANA_SDK_VERSION,\n };\n }\n\n const ua = navigator.userAgent || \"\";\n const uaData = readUaData();\n const device =\n uaData.mobile !== undefined || uaData.platform\n ? uaDataDevice(ua, uaData)\n : detectDeviceCategory(ua);\n\n let colorScheme: \"\" | \"light\" | \"dark\" = \"\";\n if (window.matchMedia?.(\"(prefers-color-scheme: dark)\")?.matches) {\n colorScheme = \"dark\";\n } else if (window.matchMedia?.(\"(prefers-color-scheme: light)\")?.matches) {\n colorScheme = \"light\";\n }\n\n let timeZone = \"\";\n try {\n timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone ?? \"\";\n } catch {\n timeZone = \"\";\n }\n\n const langs =\n typeof navigator.languages !== \"undefined\" && navigator.languages.length\n ? [...navigator.languages]\n : navigator.language\n ? [navigator.language]\n : [];\n\n return {\n sessionId,\n timestamp: Date.now(),\n device,\n os: detectOs(ua),\n browser: detectBrowser(ua),\n language: navigator.language || \"\",\n languages: langs,\n colorScheme,\n screenWidth: window.screen?.width ?? 0,\n screenHeight: window.screen?.height ?? 0,\n viewportWidth: window.innerWidth ?? 0,\n viewportHeight: window.innerHeight ?? 0,\n devicePixelRatio: window.devicePixelRatio ?? 1,\n timeZone,\n sdkVersion: ALPHANA_SDK_VERSION,\n };\n}\n","import type {\n TrackerConfig,\n TrackerEvent,\n SessionData,\n PageView,\n HeatmapPoint,\n AbVariantsMap,\n AttributionContext,\n GoalEventPayload,\n JourneyStepEventPayload,\n RevenueEventPayload,\n} from \"./types\";\nimport { apiBaseFromEventsEndpoint } from \"./utils/api-base\";\nimport { generateSessionId, getOrCreateVisitorId } from \"./utils/session\";\nimport { NavigationPlugin } from \"./core/navigation\";\nimport { TimePlugin } from \"./core/time\";\nimport { HeatmapPlugin } from \"./core/heatmap\";\nimport { LogCapture } from \"./core/logger\";\nimport { SessionReplayController } from \"./core/session-replay\";\nimport { normalizeTrackerPath } from \"./utils/normalize-tracker-path\";\nimport { collectClientContext } from \"./core/client-context\";\n\nexport const DEFAULT_ENDPOINT = \"https://api.alphana.ir/api/events\";\n\nconst DEFAULTS = {\n endpoint: DEFAULT_ENDPOINT,\n trackNavigation: true,\n trackTime: true,\n trackHeatmap: true,\n trackLogs: true,\n mouseSampleRate: 0.1,\n maxHeatmapPoints: 2000,\n batchSize: 20,\n flushInterval: 5_000,\n sessionReplay: true,\n sessionReplayCheckoutEveryNms: 600_000,\n sessionReplayInlineStylesheet: false,\n sessionReplayMaxEventsPerBatch: 48,\n sessionReplayFlushIntervalMs: 4_000,\n sessionReplayMaskAllInputs: true,\n sessionReplayMaskTextClass: \"alphana-mask\",\n sessionReplayBlockClass: \"alphana-block\",\n} as const;\n\ntype SubscriberFn = (event: TrackerEvent) => void;\n\nconst FIRST_TOUCH_KEY = \"__alphana_first_touch__\";\nconst LAST_TOUCH_KEY = \"__alphana_last_touch__\";\nconst UTM_PARAM_MAP = {\n utm_source: \"source\",\n utm_medium: \"medium\",\n utm_campaign: \"campaign\",\n utm_term: \"term\",\n utm_content: \"content\",\n} as const;\nconst CLICK_ID_PARAMS = [\"gclid\", \"fbclid\", \"ttclid\", \"msclkid\"] as const;\n\nfunction safeLocalStorageGet(key: string): string | null {\n if (typeof localStorage === \"undefined\") return null;\n try {\n return localStorage.getItem(key);\n } catch {\n return null;\n }\n}\n\nfunction safeLocalStorageSet(key: string, value: string): void {\n if (typeof localStorage === \"undefined\") return;\n try {\n localStorage.setItem(key, value);\n } catch {\n /* private mode / quota */\n }\n}\n\nfunction readTouch(key: string): AttributionContext | undefined {\n const raw = safeLocalStorageGet(key);\n if (!raw) return undefined;\n try {\n const parsed = JSON.parse(raw) as AttributionContext;\n return typeof parsed.landingPage === \"string\" &&\n typeof parsed.capturedAt === \"number\"\n ? parsed\n : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction writeTouch(key: string, value: AttributionContext): void {\n safeLocalStorageSet(key, JSON.stringify(value));\n}\n\nfunction hostFromReferrer(referrer?: string): string | undefined {\n if (!referrer) return undefined;\n try {\n return new URL(referrer).hostname.replace(/^www\\./, \"\").toLowerCase();\n } catch {\n return undefined;\n }\n}\n\nfunction currentSearchParams(): URLSearchParams {\n if (typeof window === \"undefined\") return new URLSearchParams();\n return new URLSearchParams(window.location.search);\n}\n\nfunction readUtmParams(searchParams: URLSearchParams): AttributionContext[\"utm\"] {\n const utm: AttributionContext[\"utm\"] = {};\n for (const [param, key] of Object.entries(UTM_PARAM_MAP)) {\n const value = searchParams.get(param)?.trim();\n if (value) utm[key] = value;\n }\n return Object.keys(utm).length > 0 ? utm : undefined;\n}\n\nfunction readClickIds(searchParams: URLSearchParams): Record<string, string> | undefined {\n const clickIds: Record<string, string> = {};\n for (const key of CLICK_ID_PARAMS) {\n const value = searchParams.get(key)?.trim();\n if (value) clickIds[key] = value;\n }\n return Object.keys(clickIds).length > 0 ? clickIds : undefined;\n}\n\nfunction withNormalizedPaths(event: TrackerEvent): TrackerEvent {\n switch (event.type) {\n case \"pageview\":\n return {\n type: \"pageview\",\n data: {\n ...event.data,\n path: normalizeTrackerPath(event.data.path),\n },\n };\n case \"timespent\":\n return {\n type: \"timespent\",\n data: {\n ...event.data,\n path: normalizeTrackerPath(event.data.path),\n },\n };\n case \"heatmap\":\n return {\n type: \"heatmap\",\n data: {\n ...event.data,\n path: normalizeTrackerPath(event.data.path),\n },\n };\n case \"rageclik\":\n return {\n type: \"rageclik\",\n data: {\n ...event.data,\n path: normalizeTrackerPath(event.data.path),\n },\n };\n case \"uturn\":\n return {\n type: \"uturn\",\n data: {\n ...event.data,\n fromPath: normalizeTrackerPath(event.data.fromPath),\n toPath: normalizeTrackerPath(event.data.toPath),\n },\n };\n case \"identify\":\n return event;\n case \"revenue\":\n return event;\n case \"goal\":\n return {\n type: \"goal\",\n data: {\n ...event.data,\n path: normalizeTrackerPath(event.data.path),\n },\n };\n case \"journey_step\":\n return {\n type: \"journey_step\",\n data: {\n ...event.data,\n path: normalizeTrackerPath(event.data.path),\n },\n };\n case \"client_context\":\n return event;\n case \"session_replay\":\n return event;\n default: {\n const _exhaustive: never = event;\n return _exhaustive;\n }\n }\n}\ntype FlagSubscriberFn = (flags: Record<string, boolean>) => void;\ntype AbTestSubscriberFn = (variants: AbVariantsMap) => void;\n\n/**\n * Core tracker class. Framework-agnostic — works in any environment that has\n * a browser DOM (React, Next.js Pages Router, Vite, vanilla JS/TS, etc.).\n *\n * Usage:\n * ```ts\n * const tracker = new UserTracker({ endpoint: 'https://my-api.com/events' });\n * tracker.init(); // call once; safe to call in SSR (no-op server-side)\n * ```\n *\n * Destroy when done (e.g. component unmount):\n * ```ts\n * tracker.destroy();\n * ```\n */\ntype ResolvedConfig = Required<\n Pick<\n TrackerConfig,\n | \"endpoint\"\n | \"trackNavigation\"\n | \"trackTime\"\n | \"trackHeatmap\"\n | \"trackLogs\"\n | \"mouseSampleRate\"\n | \"maxHeatmapPoints\"\n | \"batchSize\"\n | \"flushInterval\"\n | \"sessionReplay\"\n | \"sessionReplayCheckoutEveryNms\"\n | \"sessionReplayInlineStylesheet\"\n | \"sessionReplayMaxEventsPerBatch\"\n | \"sessionReplayFlushIntervalMs\"\n | \"sessionReplayMaskAllInputs\"\n | \"sessionReplayMaskTextClass\"\n | \"sessionReplayBlockClass\"\n >\n> &\n TrackerConfig;\n\nexport class UserTracker {\n private readonly cfg: ResolvedConfig;\n private session: SessionData;\n private navigation?: NavigationPlugin;\n private time?: TimePlugin;\n private heatmap?: HeatmapPlugin;\n private sessionReplay?: SessionReplayController;\n /** Public so consumers can call logCapture.capture() for manual log entries. */\n logCapture?: LogCapture;\n private initialized = false;\n private readonly subscribers = new Set<SubscriberFn>();\n\n /** In-memory queue of events waiting to be flushed. */\n private queue: TrackerEvent[] = [];\n private flushTimer: ReturnType<typeof setInterval> | null = null;\n private heartbeatTimer: ReturnType<typeof setInterval> | null = null;\n\n // ─── Feature flags ────────────────────────────────────────────────────────\n private userProperties: Record<string, string> = {};\n private flags: Record<string, boolean> = {};\n private readonly flagSubscribers = new Set<FlagSubscriberFn>();\n\n // ─── A/B tests ────────────────────────────────────────────────────────────\n private abVariants: AbVariantsMap = {};\n private readonly abTestSubscribers = new Set<AbTestSubscriberFn>();\n\n constructor(config: TrackerConfig = {}) {\n this.cfg = { ...DEFAULTS, ...config } as ResolvedConfig;\n\n // Validate endpoint URL up front so the error is thrown at construction\n // time rather than silently failing during a network request.\n try {\n new URL(this.cfg.endpoint);\n } catch {\n throw new Error(\n `[alpha-tracker] Invalid endpoint URL: \"${this.cfg.endpoint}\"`,\n );\n }\n\n this.session = {\n id: config.sessionId ?? generateSessionId(),\n visitorId: getOrCreateVisitorId(),\n startedAt: Date.now(),\n pageViews: [],\n timeSpent: {},\n heatmap: {},\n userProperties: {},\n attribution: {\n firstTouch: readTouch(FIRST_TOUCH_KEY),\n lastTouch: readTouch(LAST_TOUCH_KEY),\n },\n };\n }\n\n private updateAttributionForPageView(path: string, referrer?: string): {\n firstTouch?: AttributionContext;\n lastTouch?: AttributionContext;\n } {\n const searchParams = currentSearchParams();\n const utm = readUtmParams(searchParams);\n const clickIds = readClickIds(searchParams);\n const existingFirst = readTouch(FIRST_TOUCH_KEY);\n const hasCampaignSignal = Boolean(utm || clickIds || referrer);\n const touch: AttributionContext | undefined = hasCampaignSignal\n ? {\n landingPage: path,\n referrer,\n referrerHost: hostFromReferrer(referrer),\n utm,\n clickIds,\n capturedAt: Date.now(),\n }\n : undefined;\n\n if (!existingFirst && touch) {\n writeTouch(FIRST_TOUCH_KEY, touch);\n }\n if (touch) {\n writeTouch(LAST_TOUCH_KEY, touch);\n }\n\n const attribution = {\n firstTouch: readTouch(FIRST_TOUCH_KEY),\n lastTouch: readTouch(LAST_TOUCH_KEY),\n };\n this.session.attribution = attribution;\n return attribution;\n }\n\n private currentAttribution(): {\n firstTouch?: AttributionContext;\n lastTouch?: AttributionContext;\n } {\n const attribution = {\n firstTouch: readTouch(FIRST_TOUCH_KEY),\n lastTouch: readTouch(LAST_TOUCH_KEY),\n };\n this.session.attribution = attribution;\n return attribution;\n }\n\n // ─── Lifecycle ──────────────────────────────────────────────────────────────\n\n /**\n * Attach event listeners and start tracking.\n * Safe to call during SSR — returns `this` immediately if `window` is\n * undefined so it can be chained: `const tracker = new UserTracker(cfg).init()`.\n */\n init(): this {\n if (typeof window === \"undefined\" || this.initialized) return this;\n\n const emit = this.emit.bind(this);\n const { id: sessionId } = this.session;\n\n /** Device / locale / viewport snapshot for replay catalog + analytics. */\n emit({\n type: \"client_context\",\n data: collectClientContext(sessionId),\n });\n\n if (this.cfg.trackNavigation) {\n this.navigation = new NavigationPlugin({ emit, sessionId });\n this.navigation.init();\n }\n\n if (this.cfg.trackTime) {\n this.time = new TimePlugin({ emit, sessionId });\n this.time.init();\n }\n\n if (this.cfg.trackHeatmap) {\n this.heatmap = new HeatmapPlugin({\n emit,\n sessionId,\n sampleRate: this.cfg.mouseSampleRate,\n maxPoints: this.cfg.maxHeatmapPoints,\n allowedPaths: this.cfg.heatmapPages,\n });\n this.heatmap.init();\n }\n\n if (this.cfg.sessionReplay) {\n this.sessionReplay = new SessionReplayController({\n emit,\n checkoutEveryNms: this.cfg.sessionReplayCheckoutEveryNms,\n inlineStylesheet: this.cfg.sessionReplayInlineStylesheet,\n maxEventsPerBatch: this.cfg.sessionReplayMaxEventsPerBatch,\n flushIntervalMs: this.cfg.sessionReplayFlushIntervalMs,\n maskAllInputs: this.cfg.sessionReplayMaskAllInputs,\n maskTextClass: this.cfg.sessionReplayMaskTextClass,\n blockClass: this.cfg.sessionReplayBlockClass,\n });\n this.sessionReplay.start();\n }\n\n if (this.cfg.endpoint) {\n // Flush on a regular interval — even if the batch threshold isn't hit.\n this.flushTimer = setInterval(() => {\n if (this.queue.length > 0) void this.flushQueue();\n }, this.cfg.flushInterval);\n\n // Visitor location is resolved server-side from the request IP using\n // an offline GeoIP database — no third-party requests from the SDK.\n\n // Flush remaining queue when the tab is hidden or the page is unloaded.\n window.addEventListener(\"visibilitychange\", this.handleVisibilityChange);\n window.addEventListener(\"pagehide\", this.handlePageHide);\n\n // Periodic keep-alive heartbeat every 30 s so the backend knows the\n // session is still active and doesn't expire it prematurely.\n this.heartbeatTimer = setInterval(() => {\n if (document.visibilityState !== \"hidden\") void this.sendHeartbeat();\n }, 30_000);\n\n // Auto-capture console logs and unhandled errors.\n if (this.cfg.trackLogs) {\n this.logCapture = new LogCapture({\n endpoint: this.cfg.endpoint,\n sessionId: this.session.id,\n secretKey: this.cfg.secretKey,\n appId: this.cfg.appId,\n });\n this.logCapture.init();\n }\n }\n\n this.initialized = true;\n\n // Fetch feature flags and A/B assignments in the background on init.\n void this.fetchFlags();\n void this.fetchAbTests();\n\n return this;\n }\n\n /** Remove all event listeners, flush remaining queue, and reset state. */\n destroy(): void {\n if (this.flushTimer !== null) {\n clearInterval(this.flushTimer);\n this.flushTimer = null;\n }\n if (this.heartbeatTimer !== null) {\n clearInterval(this.heartbeatTimer);\n this.heartbeatTimer = null;\n }\n\n if (typeof window !== \"undefined\") {\n window.removeEventListener(\n \"visibilitychange\",\n this.handleVisibilityChange,\n );\n window.removeEventListener(\"pagehide\", this.handlePageHide);\n }\n\n this.navigation?.destroy();\n this.time?.destroy();\n this.heatmap?.destroy();\n this.sessionReplay?.destroy();\n this.sessionReplay = undefined;\n this.logCapture?.destroy();\n\n if (typeof window !== \"undefined\") {\n window.removeEventListener(\"tracker:navigate\", this.handleNavigate);\n }\n\n // Best-effort flush of any remaining queued events.\n if (this.queue.length > 0 && this.cfg.endpoint) {\n this.flushBeacon();\n }\n\n this.initialized = false;\n }\n\n private handleVisibilityChange = (): void => {\n if (document.visibilityState === \"hidden\") {\n this.sessionReplay?.flush();\n if (this.queue.length > 0) this.flushBeacon();\n this.sendDeactivate();\n }\n };\n\n private handlePageHide = (): void => {\n this.sessionReplay?.flush();\n if (this.queue.length > 0) this.flushBeacon();\n this.sendDeactivate();\n };\n\n private handleNavigate = (_e: Event): void => {\n // Navigation hook kept for potential future use.\n };\n\n /**\n * Send a keep-alive heartbeat so the backend knows this session is still\n * active. Called every 30 s while the tab is visible.\n */\n private async sendHeartbeat(): Promise<void> {\n if (!this.cfg.endpoint) return;\n const url = `${this.cfg.endpoint}/heartbeat`;\n const authHeaders: Record<string, string> = this.cfg.secretKey\n ? { Authorization: `Bearer ${this.cfg.secretKey}` }\n : {};\n const body = JSON.stringify({\n sessionId: this.session.id,\n visitorId: this.session.visitorId,\n path: normalizeTrackerPath(\n typeof window !== \"undefined\"\n ? window.location.pathname + window.location.search\n : \"/\",\n ),\n active: true,\n ...(this.cfg.appId ? { appId: this.cfg.appId } : {}),\n });\n try {\n await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...authHeaders },\n body,\n keepalive: true,\n });\n } catch {\n // Silent — heartbeat failure should never surface to the user.\n }\n }\n\n /**\n * Send a synchronous beacon to mark this session as inactive.\n * Called on page unload / tab hidden so the dashboard reflects real-time.\n */\n private sendDeactivate(): void {\n if (!this.cfg.endpoint) return;\n const url = `${this.cfg.endpoint}/heartbeat`;\n const authHeaders: Record<string, string> = this.cfg.secretKey\n ? { Authorization: `Bearer ${this.cfg.secretKey}` }\n : {};\n const body = JSON.stringify({\n sessionId: this.session.id,\n visitorId: this.session.visitorId,\n path: normalizeTrackerPath(\n typeof window !== \"undefined\"\n ? window.location.pathname + window.location.search\n : \"/\",\n ),\n active: false,\n ...(this.cfg.appId ? { appId: this.cfg.appId } : {}),\n });\n // sendBeacon cannot attach Authorization headers, so authenticated cloud\n // traffic uses keepalive fetch even during unload.\n if (\n !this.cfg.secretKey &&\n typeof navigator !== \"undefined\" &&\n navigator.sendBeacon\n ) {\n navigator.sendBeacon(url, new Blob([body], { type: \"application/json\" }));\n } else {\n void fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...authHeaders },\n body,\n keepalive: true,\n }).catch(() => undefined);\n }\n }\n\n // ─── Event pipeline ─────────────────────────────────────────────────────────\n\n /** Emit a tracker event. Also used internally by the plugins. */\n emit(event: TrackerEvent): void {\n event = withNormalizedPaths(event);\n if (event.type === \"pageview\") {\n const attribution = this.updateAttributionForPageView(\n event.data.path,\n event.data.referrer,\n );\n event = {\n type: \"pageview\",\n data: {\n ...event.data,\n utm: attribution.lastTouch?.utm,\n attribution,\n },\n };\n }\n // 1 – accumulate into session data\n switch (event.type) {\n case \"pageview\":\n this.session.pageViews.push(event.data);\n break;\n\n case \"timespent\": {\n const prev = this.session.timeSpent[event.data.path] ?? 0;\n this.session.timeSpent[event.data.path] = prev + event.data.duration;\n break;\n }\n\n case \"heatmap\": {\n const key = event.data.path;\n if (!this.session.heatmap[key]) this.session.heatmap[key] = [];\n const pts = this.session.heatmap[key];\n if (pts.length < this.cfg.maxHeatmapPoints) pts.push(event.data);\n break;\n }\n\n // rageclik and uturn are forwarded to the backend only; no local state needed.\n case \"rageclik\":\n case \"uturn\":\n case \"identify\":\n case \"revenue\":\n case \"goal\":\n case \"journey_step\":\n case \"client_context\":\n case \"session_replay\":\n break;\n }\n\n // 2 – notify subscribers (used internally by React hooks)\n this.subscribers.forEach((fn) => fn(event));\n\n // 3 – user callback\n this.cfg.onEvent?.(event);\n\n // 4 – enqueue for batched remote sending\n if (this.cfg.endpoint) {\n this.queue.push(event);\n // Auto-flush once the batch size threshold is reached.\n if (this.queue.length >= this.cfg.batchSize) {\n void this.flushQueue();\n }\n }\n }\n\n /**\n * Subscribe to every emitted event. Returns an unsubscribe function.\n *\n * ```ts\n * const unsub = tracker.subscribe(event => console.log(event));\n * // later…\n * unsub();\n * ```\n */\n subscribe(fn: SubscriberFn): () => void {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n // ─── Manual tracking helpers ────────────────────────────────────────────────\n\n /**\n * Manually record a page view and dispatch `tracker:navigate`.\n * Required for Next.js App Router — call it inside a `useEffect` that\n * depends on `usePathname()`:\n *\n * ```tsx\n * const pathname = usePathname();\n * useEffect(() => { tracker.trackPageView(pathname); }, [pathname]);\n * ```\n */\n trackPageView(path?: string): void {\n const resolvedPath = normalizeTrackerPath(\n path ??\n (typeof window !== \"undefined\"\n ? window.location.pathname + window.location.search\n : \"/\"),\n );\n\n this.emit({\n type: \"pageview\",\n data: {\n path: resolvedPath,\n title: typeof document !== \"undefined\" ? document.title : \"\",\n timestamp: Date.now(),\n sessionId: this.session.id,\n referrer:\n typeof document !== \"undefined\"\n ? document.referrer || undefined\n : undefined,\n },\n });\n\n if (typeof window !== \"undefined\") {\n window.dispatchEvent(\n new CustomEvent(\"tracker:navigate\", {\n detail: { path: resolvedPath, title: document.title },\n }),\n );\n }\n }\n\n /**\n * Track a monetary conversion such as a purchase, subscription, renewal,\n * upgrade, or refund. Revenue events include the current attribution context\n * so the backend can credit campaigns without recomputing browser state.\n */\n trackRevenue(payload: RevenueEventPayload): void {\n this.emit({\n type: \"revenue\",\n data: {\n ...payload,\n eventName: payload.eventName ?? \"purchase\",\n status: payload.status ?? \"paid\",\n sessionId: this.session.id,\n visitorId: this.session.visitorId,\n timestamp: Date.now(),\n attribution: this.currentAttribution(),\n },\n });\n }\n\n /** Track a business goal such as signup, trial_start, lead, or checkout_start. */\n trackGoal(payload: GoalEventPayload): void {\n const path = normalizeTrackerPath(\n typeof window !== \"undefined\"\n ? window.location.pathname + window.location.search\n : \"/\",\n );\n this.emit({\n type: \"goal\",\n data: {\n ...payload,\n sessionId: this.session.id,\n visitorId: this.session.visitorId,\n path,\n timestamp: Date.now(),\n },\n });\n }\n\n /** Track a named product journey milestone beyond automatic pageviews. */\n trackJourneyStep(payload: JourneyStepEventPayload): void {\n const path = normalizeTrackerPath(\n payload.path ??\n (typeof window !== \"undefined\"\n ? window.location.pathname + window.location.search\n : \"/\"),\n );\n this.emit({\n type: \"journey_step\",\n data: {\n ...payload,\n path,\n sessionId: this.session.id,\n visitorId: this.session.visitorId,\n timestamp: Date.now(),\n },\n });\n }\n\n // ─── Identity & Feature Flags ───────────────────────────────────────────────\n\n /**\n * Identify the current user with a set of properties.\n * Properties are merged with any previously set ones and used for feature\n * flag targeting (e.g. `email`, `plan`, `country`).\n * Automatically triggers a flag re-evaluation.\n *\n * ```ts\n * tracker.identify({ email: 'user@example.com', plan: 'pro' });\n * ```\n */\n identify(properties: Record<string, string>): void {\n this.userProperties = { ...this.userProperties, ...properties };\n this.session.userProperties = { ...this.userProperties };\n this.emit({\n type: \"identify\",\n data: {\n properties: { ...this.userProperties },\n visitorId: this.session.visitorId,\n timestamp: Date.now(),\n },\n });\n void this.fetchFlags();\n }\n\n /**\n * Returns the latest evaluated feature flags as `{ [key]: boolean }`.\n * Flags are fetched on `init()` and after every `identify()` call.\n */\n getFlags(): Record<string, boolean> {\n return { ...this.flags };\n }\n\n /**\n * Returns `true` if the given flag is currently enabled for this user.\n * Returns `false` for unknown flags or before flags have loaded.\n */\n isFeatureEnabled(flagKey: string): boolean {\n return this.flags[flagKey] === true;\n }\n\n /**\n * Subscribe to flag changes. Called whenever flags are re-evaluated.\n * Returns an unsubscribe function.\n *\n * ```ts\n * const unsub = tracker.onFlagsChange(flags => console.log(flags));\n * ```\n */\n onFlagsChange(fn: FlagSubscriberFn): () => void {\n this.flagSubscribers.add(fn);\n return () => this.flagSubscribers.delete(fn);\n }\n\n /** Fetch (or re-fetch) flags from the backend evaluate endpoint. */\n async fetchFlags(): Promise<void> {\n if (!this.cfg.endpoint || !this.cfg.secretKey) return;\n const url =\n apiBaseFromEventsEndpoint(this.cfg.endpoint) + \"/feature-flags/evaluate\";\n try {\n const res = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.cfg.secretKey}`,\n },\n body: JSON.stringify({ userProperties: this.userProperties }),\n });\n if (!res.ok) return;\n const data = (await res.json()) as Record<string, boolean>;\n this.flags = data;\n this.flagSubscribers.forEach((fn) => fn({ ...this.flags }));\n } catch {\n // Silent — flag fetch failure must never surface to the user.\n }\n }\n\n // ─── A/B tests ──────────────────────────────────────────────────────────────\n\n /**\n * Returns variant keys assigned to this visitor for each running experiment.\n * Fetched on `init()` and after `fetchAbTests()`.\n *\n * ```ts\n * const variants = tracker.getAbVariants();\n * // { 'checkout-cta-test': 'variant-b' }\n * ```\n */\n getAbVariants(): AbVariantsMap {\n return { ...this.abVariants };\n }\n\n /**\n * Returns the assigned variant key for one experiment, or `null` if the\n * experiment is not running or not found.\n */\n getAbVariant(experimentKey: string): string | null {\n const v = this.abVariants[experimentKey];\n return v ?? null;\n }\n\n /**\n * Returns `true` when the visitor is assigned to the given variant key.\n */\n isAbVariant(experimentKey: string, variantKey: string): boolean {\n return this.abVariants[experimentKey] === variantKey;\n }\n\n /**\n * Subscribe to A/B assignment updates. Returns an unsubscribe function.\n */\n onAbTestsChange(fn: AbTestSubscriberFn): () => void {\n this.abTestSubscribers.add(fn);\n return () => this.abTestSubscribers.delete(fn);\n }\n\n /**\n * Fetch (or re-fetch) variant assignments from `/ab-tests/evaluate`.\n * @param keys When set, only these experiment keys are evaluated and merged.\n */\n async fetchAbTests(keys?: string[]): Promise<void> {\n if (!this.cfg.endpoint || !this.cfg.secretKey) return;\n const url =\n apiBaseFromEventsEndpoint(this.cfg.endpoint) + \"/ab-tests/evaluate\";\n try {\n const body: { visitorId: string; keys?: string[] } = {\n visitorId: this.session.visitorId,\n };\n if (keys?.length) body.keys = keys;\n\n const res = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.cfg.secretKey}`,\n },\n body: JSON.stringify(body),\n });\n if (!res.ok) return;\n const data = (await res.json()) as AbVariantsMap;\n this.abVariants = keys?.length\n ? { ...this.abVariants, ...data }\n : { ...data };\n this.abTestSubscribers.forEach((fn) => fn({ ...this.abVariants }));\n } catch {\n // Silent — assignment failure must never surface to the user.\n }\n }\n\n // ─── Data accessors ─────────────────────────────────────────────────────────\n\n /** A read-only snapshot of the current session. */\n getSession(): Readonly<SessionData> {\n return this.session;\n }\n\n /** All page views recorded so far. */\n getPageViews(): PageView[] {\n return [...this.session.pageViews];\n }\n\n /** Cumulative milliseconds spent per path. */\n getTimeSpent(): Record<string, number> {\n return { ...this.session.timeSpent };\n }\n\n /** Heatmap points for a specific path. */\n getHeatmapData(path: string): HeatmapPoint[];\n /** Heatmap points for all tracked paths. */\n getHeatmapData(): Record<string, HeatmapPoint[]>;\n getHeatmapData(\n path?: string,\n ): HeatmapPoint[] | Record<string, HeatmapPoint[]> {\n if (path !== undefined) {\n return [...(this.session.heatmap[path] ?? [])];\n }\n return Object.entries(this.session.heatmap).reduce<\n Record<string, HeatmapPoint[]>\n >((acc, [k, v]) => {\n acc[k] = [...v];\n return acc;\n }, {});\n }\n\n // ─── Network ────────────────────────────────────────────────────────────────\n\n /**\n * Immediately drain the event queue and POST pending events to `/batch`.\n * Fire-and-forget; errors are intentionally swallowed like other analytics calls.\n */\n flush(): void {\n void this.flushQueue();\n }\n\n /** Drain the queue and POST all pending events to the batch endpoint. */\n private async flushQueue(): Promise<void> {\n if (this.queue.length === 0) return;\n // Splice atomically so new events emitted during the async request don't\n // get lost — they stay in the queue for the next flush.\n const batch = this.queue.splice(0);\n await this.sendBatch(batch);\n }\n\n /**\n * Synchronous best-effort flush via `navigator.sendBeacon`.\n * Used on `pagehide` / `visibilitychange:hidden` where async fetch may be\n * cancelled by the browser before it completes.\n */\n private flushBeacon(): void {\n if (this.queue.length === 0) return;\n const batch = this.queue.splice(0);\n if (this.cfg.secretKey) {\n void this.sendBatch(batch);\n return;\n }\n const url = `${this.cfg.endpoint!}/batch`;\n const body = this.buildBatchBody(batch);\n const blob = new Blob([body], { type: \"application/json\" });\n if (typeof navigator !== \"undefined\" && navigator.sendBeacon) {\n const accepted = navigator.sendBeacon(url, blob);\n if (!accepted) void this.sendBatch(batch);\n } else {\n // Fallback: fire-and-forget fetch (best effort on platforms without sendBeacon)\n void this.sendBatch(batch);\n }\n }\n\n private buildBatchBody(events: TrackerEvent[]): string {\n return JSON.stringify({\n ...(this.cfg.appId ? { appId: this.cfg.appId } : {}),\n visitorId: this.session.visitorId,\n events: events.map((e) => ({\n sessionId: this.session.id,\n type: e.type,\n data: e.data,\n })),\n });\n }\n\n private async sendBatch(events: TrackerEvent[]): Promise<void> {\n const url = `${this.cfg.endpoint!}/batch`;\n const authHeaders: Record<string, string> = this.cfg.secretKey\n ? { Authorization: `Bearer ${this.cfg.secretKey}` }\n : {};\n try {\n await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...authHeaders },\n body: this.buildBatchBody(events),\n });\n } catch {\n // Intentionally silent — analytics must never surface errors to users.\n }\n }\n}\n","import type { HeatmapPoint, HeatmapRenderOptions } from \"./types\";\n\n// ─── Color palette ────────────────────────────────────────────────────────────\n// Built once; maps 0 (cool) → 255 (hot) to an RGB color.\n\ntype RGB = [number, number, number];\n\nfunction buildPalette(): RGB[] {\n const stops: RGB[] = [\n [0, 0, 255], // blue\n [0, 255, 255], // cyan\n [0, 255, 0], // green\n [255, 255, 0], // yellow\n [255, 128, 0], // orange\n [255, 0, 0], // red\n ];\n\n const palette: RGB[] = [];\n const stepsPerSegment = 51; // ≈ 255 total entries\n\n for (let s = 0; s < stops.length - 1; s++) {\n const [fr, fg, fb] = stops[s];\n const [tr, tg, tb] = stops[s + 1];\n for (let i = 0; i < stepsPerSegment; i++) {\n const t = i / stepsPerSegment;\n palette.push([\n Math.round(fr + (tr - fr) * t),\n Math.round(fg + (tg - fg) * t),\n Math.round(fb + (tb - fb) * t),\n ]);\n }\n }\n\n return palette;\n}\n\nconst COLOR_PALETTE = buildPalette();\n\n// ─── Public API ───────────────────────────────────────────────────────────────\n\n/**\n * Renders `points` onto `canvas` as a color heatmap.\n *\n * Algorithm:\n * 1. Draw each point as a soft radial gradient on an off-screen canvas,\n * accumulating \"heat\" in the alpha channel.\n * 2. Map each pixel's accumulated alpha value through the color palette\n * (blue → cyan → green → yellow → orange → red) and write to the\n * destination canvas.\n *\n * Coordinates in `HeatmapPoint` are percentages (0–100) of page dimensions,\n * which are scaled to the canvas size at render time — making it resolution\n * independent.\n *\n * @param canvas Target canvas element (will NOT be resized automatically).\n * @param points Array of heatmap points to render.\n * @param options Visual tuning options.\n */\nexport function renderHeatmap(\n canvas: HTMLCanvasElement,\n points: HeatmapPoint[],\n options: HeatmapRenderOptions = {},\n): void {\n const { radius = 25, maxOpacity = 0.85, minOpacity = 0 } = options;\n\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n\n const { width, height } = canvas;\n ctx.clearRect(0, 0, width, height);\n\n if (points.length === 0) return;\n\n // ── Step 1: draw density layer on off-screen canvas ──\n const shadow = document.createElement(\"canvas\");\n shadow.width = width;\n shadow.height = height;\n const sCtx = shadow.getContext(\"2d\");\n if (!sCtx) return;\n\n for (const pt of points) {\n const x = (pt.xPct / 100) * width;\n const y = (pt.yPct / 100) * height;\n // Clicks get a larger radius to make them visually distinct.\n const r = pt.type === \"click\" ? radius * 1.6 : radius;\n\n const grad = sCtx.createRadialGradient(x, y, 0, x, y, r);\n grad.addColorStop(0, \"rgba(0,0,0,0.15)\");\n grad.addColorStop(1, \"rgba(0,0,0,0)\");\n\n sCtx.fillStyle = grad;\n sCtx.beginPath();\n sCtx.arc(x, y, r, 0, Math.PI * 2);\n sCtx.fill();\n }\n\n // ── Step 2: colorize density layer ──\n const density = sCtx.getImageData(0, 0, width, height);\n const out = ctx.createImageData(width, height);\n const src = density.data;\n const dst = out.data;\n const lastIdx = COLOR_PALETTE.length - 1;\n\n for (let i = 0; i < src.length; i += 4) {\n const alpha = src[i + 3];\n if (alpha === 0) continue;\n\n const ratio = alpha / 255;\n const colorIdx = Math.min(Math.floor(ratio * lastIdx), lastIdx);\n const [r, g, b] = COLOR_PALETTE[colorIdx];\n const opacity = minOpacity + ratio * (maxOpacity - minOpacity);\n\n dst[i] = r;\n dst[i + 1] = g;\n dst[i + 2] = b;\n dst[i + 3] = Math.round(opacity * 255);\n }\n\n ctx.putImageData(out, 0, 0);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/api-base.ts","../src/utils/collect-payload.ts","../src/utils/session.ts","../src/utils/normalize-tracker-path.ts","../src/core/navigation.ts","../src/core/time.ts","../src/utils/throttle.ts","../src/core/heatmap.ts","../src/utils/compress.ts","../src/utils/ingest-fetch.ts","../src/core/logger.ts","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/utils.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/types/dist/types.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/mutation.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observer.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/cross-origin-iframe-mirror.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/iframe-manager.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/ext/tslib/tslib.es6.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/_virtual/image-bitmap-data-url-worker.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/stylesheet-manager.js","../../../node_modules/.pnpm/rrweb@2.0.0-alpha.4/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/index.js","../src/core/session-replay.ts","../src/core/client-context.ts","../src/tracker.ts","../src/heatmap-renderer.ts"],"names":["apiBaseFromEventsEndpoint","endpoint","collectUrlFromEventsEndpoint","buildCollectBatchBody","events","ctx","e","buildCollectHeartbeatBody","params","buildCollectLogBody","entry","VISITOR_STORAGE_KEY","generateSessionId","c","r","getOrCreateVisitorId","existing","id","normalizeTrackerPath","path","q","pathname","search","out","i","dec","SS_LAST_PV_PATH","SS_LAST_PV_ENTRY_MS","safeSessionStorageGet","key","safeSessionStorageSet","value","persistLastPageView","pageEntryMs","getNavigationEntryType","nav","legacy","_NavigationPlugin","emit","sessionId","newPath","origPush","state","title","url","origReplace","lastPath","lastMsRaw","lastEntryMs","timeOnPage","fromPath","toPath","timeOnPageMs","p","NavigationPlugin","TimePlugin","duration","throttle","fn","delay","lastCall","args","now","ANCHOR_SELECTOR","SELECTOR_ID_RE","buildSelector","el","elId","parts","node","depth","nid","tag","nth","sib","getClickAnchor","target","clientX","clientY","anchor","selector","rect","relX","relY","_HeatmapPlugin","sampleRate","maxPoints","allowedPaths","pageWidth","pageHeight","absY","touch","_a","vw","vh","scrollX","scrollY","reachedY","reachedPct","prevMax","isNewMax","absX","point","_b","_c","_d","x","y","nearby","HeatmapPlugin","ALPHANA_GZIP_MEDIA_TYPE","isCompressionSupported","compressUtf8","json","encoded","stream","DEFAULT_THRESHOLD_BYTES","prepareIngestBody","jsonBody","options","forceJson","threshold","compressed","sendPreparedIngest","prepared","headers","postIngest","response","fallback","postIngestBeacon","blob","LogCapture","first","stack","msg","src","line","col","err","reason","message","level","extra","a","body","NodeType","isElement","n","isShadowRoot","host","isNativeShadowDom","shadowRoot","fixBrowserCompatibilityIssuesInCSS","cssText","getCssRulesString","s","rules","getCssRuleString","error","rule","cssStringified","isCSSImportRule","Mirror","_this","childNode","meta","oldNode","createMirror","maskInputValue","maskInputOptions","tagName","type","maskInputFn","text","ORIGINAL_ATTRIBUTE_NAME","is2DCanvasBlank","canvas","chunkSize","getImageData","originalGetImageData","pixelBuffer","pixel","_id","tagNameRegex","IGNORED_NODE","genId","getValidTagName","element","processedTagName","stringifyStyleSheet","sheet","extractOrigin","origin","canvasService","canvasCtx","URL_IN_CSS_REF","RELATIVE_PATH","DATA_URI","absoluteToStylesheet","href","quote1","path1","quote2","path2","path3","filePath","maybeQuote","_i","parts_1","part","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","getAbsoluteSrcsetString","doc","attributeValue","pos","collectCharacters","regEx","chars","match","output","absoluteToDoc","descriptorsStr","inParens","isSVGElement","getHref","transformAttribute","name","_isBlockedElement","blockClass","blockSelector","eIndex","className","classMatchesRegex","regex","checkAncestors","needMaskingText","maskTextClass","maskTextSelector","onceIframeLoaded","iframeEl","listener","iframeLoadTimeout","win","fired","readyState","timer_1","blankUrl","onceStylesheetLoaded","link","styleSheetLoadTimeout","styleSheetLoaded","timer","serializeNode","mirror","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","rootId","getRootId","serializeElementNode","serializeTextNode","docId","parentTagName","textContent","isStyle","isScript","needBlock","attributes","len","attr","stylesheet","checked","canvasDataURL","blankCanvas","blankCanvasDataURL","image_1","oldValue_1","recordInlineImage","width","height","lowerIfExists","maybeAttr","slimDOMExcluded","sn","slimDOMOptions","serializeNodeWithId","skipChild","_e","_f","onSerialize","onIframeLoad","_g","onStylesheetLoad","_h","stylesheetLoadTimeout","_j","_k","_l","preserveWhiteSpace","_serializedNode","serializedNode","recordChild","bypassOptions","_m","childN","serializedChildNode","_o","_p","iframeDoc","serializedIframeNode","serializedLinkNode","snapshot","maskAllInputs","slimDOM","on","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","prop","receiver","func","wait","timeout","previous","remaining","context","hookSetter","d","isRevoked","original","patch","source","replacement","wrapped","getWindowHeight","getWindowWidth","isBlocked","isSerialized","isIgnored","isAncestorRemoved","isTouchEvent","event","polyfill","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","StyleSheetMirror","newId","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","CanvasContext","CanvasContext2","isNodeInLinkedList","DoubleLinkedList","position","current","index","moveKey","parentId","MutationBuffer","mutations","adds","addList","getNextId","ns","nextId","pushAdd","shadowHost","rootShadowHost","notInDoc","currentN","iframe","childSn","isParentRemoved","isAncestorInSet","candidate","_node","unhandledNode","payload","attribute","m","item","old","styleObj","pname","newValue","newPriority","nodeId","deepDelete","targetId","addsSet","removes","_isParentRemoved","parentNode","set","_isAncestorInSet","mutationBuffers","isCSSGroupingRuleSupported","isCSSMediaRuleSupported","isCSSSupportsRuleSupported","isCSSConditionRuleSupported","getEventTarget","initMutationObserver","rootEl","mutationBuffer","mutationObserverCtor","angularZoneSymbol","observer","initMoveObserver","mousemoveCb","sampling","callbackThreshold","positions","timeBaseline","wrappedCb","totalOffset","updatePosition","evt","handlers","h","initMouseInteractionObserver","mouseInteractionCb","disableMap","getHandler","eventKey","eventName","handler","initScrollObserver","scrollCb","scrollEl","initViewportResizeObserver","viewportResizeCb","lastH","lastW","updateDimension","wrapEventWithUserTriggeredFlag","v","enable","INPUT_TAGS","lastInputValueMap","initInputObserver","inputCb","ignoreClass","userTriggeredOnInput","eventHandler","userTriggered","isChecked","cbWithDedup","lastInputValue","currentWindow","propertyDescriptor","hookProperties","getNestedCSSRulePositions","recurse","childRule","getIdAndStyleId","styleMirror","styleId","initStyleSheetObserver","styleSheetRuleCb","stylesheetManager","insertRule","deleteRule","replace","replaceSync","supportedNestedCSSRuleTypes","unmodifiedFunctions","typeKey","initAdoptedStyleSheetObserver","hostId","patchTarget","originalPropertyDescriptor","sheets","result","initStyleDeclarationObserver","styleDeclarationCb","ignoreCSSAttributes","setProperty","property","priority","removeProperty","initMediaInteractionObserver","mediaInteractionCb","currentTime","volume","muted","playbackRate","initFontObserver","fontCb","fontMap","originalFontFace","family","descriptors","fontFace","restoreHandler","initSelectionObserver","param","selectionCb","collapsed","updateSelection","selection","ranges","count","range","startContainer","startOffset","endContainer","endOffset","mergeHooks","o","hooks","mutationCb","canvasMutationCb","initObservers","mutationObserver","mousemoveHandler","mouseInteractionHandler","scrollHandler","viewportResizeHandler","inputHandler","mediaInteractionHandler","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","selectionObserver","pluginHandlers","plugin","b","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","remoteIdToIdMap","map","ids","IframeManager","cb","transformedEvent","style","iframeMirror","obj","keys","child","ShadowDomManager","manager","option","iframeElement","restorePatch","__rest","t","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","reject","fulfilled","step","rejected","lookup","encode","arraybuffer","bytes","base64","canvasVarMap","variableListFor","ctor","contextMap","saveWebGLVar","isInstanceOfWebGLObject","list","serializeArg","arg","serializeArgs","initCanvas2DMutationObserver","props2D","recordArgs","hookHandler","initCanvasContextObserver","contextType","patchGLPrototype","prototype","props","mutation","initCanvasWebGLMutationObserver","WorkerClass","WorkerThreads","__require","decodeBase64","enableUnicode","createBase64WorkerFactory","sourcemapArg","enableUnicodeArg","start","binaryString","createURL","kIsNodeJS","isNodeJS","WorkerFactory","CanvasManager","fps","canvasContextReset","snapshotInProgressMap","worker","timeBetweenSnapshots","lastSnapshotTime","rafId","getCanvas","matchedCanvas","takeCanvasSnapshots","timestamp","bitmap","canvas2DReset","canvasWebGL1and2Reset","setLatestRAFTimestamp","values","valuesWithType","StylesheetManager","linkEl","adoptedStyleSheetData","styles","wrapEvent","wrappedEmit","takeFullSnapshot","canvasManager","recording","record","checkoutEveryNms","checkoutEveryNth","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","recordCrossOriginIframes","collectFonts","plugins","inEmittingFrame","passEmitsToParent","lastFullSnapshotEvent","incrementalSnapshotCount","eventProcessor","isCheckout","buf","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","wrappedAdoptedStyleSheetEmit","iframeManager","shadowDomManager","observe","init","SessionReplayController","opts","ALPHANA_SDK_VERSION","detectDeviceCategory","ua","detectOs","detectBrowser","readUaData","uaData","uaDataDevice","platform","collectClientContext","device","colorScheme","timeZone","langs","DEFAULT_ENDPOINT","DEFAULTS","FIRST_TOUCH_KEY","LAST_TOUCH_KEY","UTM_PARAM_MAP","CLICK_ID_PARAMS","safeLocalStorageGet","safeLocalStorageSet","readTouch","raw","parsed","writeTouch","hostFromReferrer","referrer","currentSearchParams","readUtmParams","searchParams","utm","readClickIds","clickIds","withNormalizedPaths","UserTracker","config","existingFirst","attribution","authHeaders","prev","pts","resolvedPath","properties","flagKey","res","data","experimentKey","variantKey","acc","k","batch","buildPalette","stops","palette","stepsPerSegment","fr","fg","fb","tr","tg","tb","COLOR_PALETTE","renderHeatmap","points","radius","maxOpacity","minOpacity","shadow","sCtx","pt","grad","density","dst","lastIdx","alpha","ratio","colorIdx","g","opacity"],"mappings":"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","file":"index.js","sourcesContent":["/** Derive API root from events endpoint, e.g. `…/api/events` → `…/api`. */\nexport function apiBaseFromEventsEndpoint(endpoint: string): string {\n return endpoint.replace(/\\/events\\/?$/, \"\");\n}\n\n/** Unified ingest URL derived from the events endpoint. */\nexport function collectUrlFromEventsEndpoint(endpoint: string): string {\n return `${apiBaseFromEventsEndpoint(endpoint)}/collect`;\n}\n","import type { LogEntry } from \"../core/logger\";\nimport type { TrackerEvent } from \"../types\";\n\nexport type CollectEnvelope = Record<string, unknown>;\n\nexport function buildCollectBatchBody(\n events: TrackerEvent[],\n ctx: { appId?: string; visitorId?: string; sessionId: string },\n): CollectEnvelope {\n return {\n ...(ctx.appId ? { appId: ctx.appId } : {}),\n visitorId: ctx.visitorId,\n events: events.map((e) => ({\n sessionId: ctx.sessionId,\n type: e.type,\n data: e.data,\n })),\n };\n}\n\nexport function buildCollectHeartbeatBody(params: {\n sessionId: string;\n visitorId?: string;\n path: string;\n active: boolean;\n appId?: string;\n}): CollectEnvelope {\n return {\n ...(params.appId ? { appId: params.appId } : {}),\n visitorId: params.visitorId,\n heartbeat: {\n sessionId: params.sessionId,\n visitorId: params.visitorId,\n path: params.path,\n active: params.active,\n ...(params.appId ? { appId: params.appId } : {}),\n },\n };\n}\n\nexport function buildCollectLogBody(entry: LogEntry): CollectEnvelope {\n return {\n ...(entry.appId ? { appId: entry.appId } : {}),\n log: entry,\n };\n}\n","const SESSION_STORAGE_KEY = \"__ut_sid__\";\nconst VISITOR_STORAGE_KEY = \"__ut_vid__\";\n\n/** Generate a RFC-4122 v4 UUID using the native crypto API with a fallback. */\nexport function generateSessionId(): string {\n if (\n typeof crypto !== \"undefined\" &&\n typeof crypto.randomUUID === \"function\"\n ) {\n return crypto.randomUUID();\n }\n // Math.random fallback (not cryptographically secure, but sufficient for analytics)\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * Retrieve the session ID from sessionStorage, or create and persist a new one.\n * Falls back to an in-memory ID when sessionStorage is unavailable (e.g. SSR).\n */\nexport function getOrCreateSessionId(): string {\n if (typeof sessionStorage === \"undefined\") return generateSessionId();\n try {\n const existing = sessionStorage.getItem(SESSION_STORAGE_KEY);\n if (existing) return existing;\n const id = generateSessionId();\n sessionStorage.setItem(SESSION_STORAGE_KEY, id);\n return id;\n } catch {\n return generateSessionId();\n }\n}\n\n/**\n * Retrieve the visitor ID from localStorage (persists across sessions/tabs),\n * or create and store a new one. Returns a temporary in-memory ID when\n * localStorage is unavailable.\n */\nexport function getOrCreateVisitorId(): string {\n if (typeof localStorage === \"undefined\") return generateSessionId();\n try {\n const existing = localStorage.getItem(VISITOR_STORAGE_KEY);\n if (existing) return existing;\n const id = generateSessionId();\n localStorage.setItem(VISITOR_STORAGE_KEY, id);\n return id;\n } catch {\n return generateSessionId();\n }\n}\n","/**\n * Canonical URL path (+ optional query) for analytics / heatmap matching.\n *\n * Next.js `usePathname()` often returns percent-encoded segments while\n * `window.location.pathname` is decoded — without normalization the backend\n * cannot match registered heatmap pages or aggregate the same route.\n */\nexport function normalizeTrackerPath(path: string): string {\n if (!path) return path;\n const q = path.indexOf(\"?\");\n const pathname = q >= 0 ? path.slice(0, q) : path;\n const search = q >= 0 ? path.slice(q) : \"\";\n\n let out = pathname;\n for (let i = 0; i < 5; i++) {\n try {\n const dec = decodeURIComponent(out);\n if (dec === out) break;\n out = dec;\n } catch {\n break;\n }\n }\n\n let s = search;\n for (let i = 0; i < 5; i++) {\n try {\n const dec = decodeURIComponent(s);\n if (dec === s) break;\n s = dec;\n } catch {\n break;\n }\n }\n\n return out + s;\n}\n","import type { TrackerEvent } from \"../types\";\nimport { normalizeTrackerPath } from \"../utils/normalize-tracker-path\";\n\ntype EmitFn = (event: TrackerEvent) => void;\n\ninterface NavigationPluginOptions {\n emit: EmitFn;\n sessionId: string;\n}\n\n/** Persisted across full page loads (same tab, same origin) for MPA U-turn detection. */\nconst SS_LAST_PV_PATH = \"__ut_last_pv_path__\";\nconst SS_LAST_PV_ENTRY_MS = \"__ut_last_pv_entry_ms__\";\n\nfunction safeSessionStorageGet(key: string): string | null {\n if (typeof sessionStorage === \"undefined\") return null;\n try {\n return sessionStorage.getItem(key);\n } catch {\n return null;\n }\n}\n\nfunction safeSessionStorageSet(key: string, value: string): void {\n if (typeof sessionStorage === \"undefined\") return;\n try {\n sessionStorage.setItem(key, value);\n } catch {\n /* quota / private mode */\n }\n}\n\nfunction persistLastPageView(path: string, pageEntryMs: number): void {\n safeSessionStorageSet(SS_LAST_PV_PATH, path);\n safeSessionStorageSet(SS_LAST_PV_ENTRY_MS, String(pageEntryMs));\n}\n\n/**\n * `navigate` | `reload` | `back_forward` | `prerender`, or legacy back/forward.\n */\nfunction getNavigationEntryType(): string | undefined {\n if (typeof performance === \"undefined\") return undefined;\n const list = performance.getEntriesByType(\n \"navigation\",\n ) as PerformanceNavigationTiming[];\n const nav = list[0];\n if (nav?.type) return nav.type;\n const legacy = (\n performance as unknown as { navigation?: { type?: number } }\n ).navigation;\n if (legacy?.type === 2) return \"back_forward\";\n return undefined;\n}\n\n/**\n * Tracks SPA route changes by monkey-patching history.pushState /\n * history.replaceState and listening to the popstate event.\n *\n * For every navigation it:\n * 1. Emits a `pageview` event.\n * 2. Dispatches the custom DOM event `tracker:navigate` so that other\n * plugins (TimePlugin, HeatmapPlugin) can react without having to\n * duplicate the pushState patching.\n * 3. Detects U-turns: if the user leaves a page in ≤5 s, a `uturn` event\n * is emitted with the time-on-page and destination path.\n *\n * **Multi-page sites (WordPress, etc.):** full reloads do not call\n * `pushState`. On browser Back/Forward, a new document loads; we detect\n * `PerformanceNavigationTiming.type === \"back_forward\"` and compare the\n * previous URL + entry time stored in `sessionStorage` to emit the same\n * `uturn` event as SPAs.\n *\n * Next.js App Router note:\n * The App Router manages navigation internally; use `usePageView(pathname)`\n * from `user-tracker/react` together with `usePathname()` instead.\n */\nexport class NavigationPlugin {\n private readonly emit: EmitFn;\n private readonly sessionId: string;\n private previousPath = \"\";\n private originalPushState: typeof history.pushState | null = null;\n private originalReplaceState: typeof history.replaceState | null = null;\n private pageEntryTime = 0;\n private static readonly UTURN_THRESHOLD_MS = 5_000;\n\n constructor({ emit, sessionId }: NavigationPluginOptions) {\n this.emit = emit;\n this.sessionId = sessionId;\n }\n\n init(): void {\n const newPath = normalizeTrackerPath(\n window.location.pathname + window.location.search,\n );\n\n // MPA: user returned via history after a full page load (e.g. WordPress).\n if (getNavigationEntryType() === \"back_forward\") {\n this.tryEmitMpaHistoryTraversalUturn(newPath);\n }\n\n this.recordPageView(newPath);\n\n window.addEventListener(\"popstate\", this.handlePopState);\n\n // Patch pushState\n this.originalPushState = history.pushState.bind(history);\n const origPush = this.originalPushState;\n history.pushState = (state, title, url): void => {\n origPush(state, title, url);\n this.handleNavigation();\n };\n\n // Patch replaceState\n this.originalReplaceState = history.replaceState.bind(history);\n const origReplace = this.originalReplaceState;\n history.replaceState = (state, title, url): void => {\n origReplace(state, title, url);\n this.handleNavigation();\n };\n }\n\n destroy(): void {\n window.removeEventListener(\"popstate\", this.handlePopState);\n if (this.originalPushState) history.pushState = this.originalPushState;\n if (this.originalReplaceState)\n history.replaceState = this.originalReplaceState;\n }\n\n // Arrow property → always bound to `this`, safe to use as event listener.\n private handlePopState = (): void => {\n this.handleNavigation();\n };\n\n /**\n * After a full navigation away from `lastPath`, sessionStorage still holds\n * that page's path and entry time. If this load is a history traversal to a\n * *different* URL and dwell time on the previous page was ≤ threshold, emit\n * `uturn` (same semantics as SPA `handleNavigation`).\n */\n private tryEmitMpaHistoryTraversalUturn(newPath: string): void {\n const lastPath = safeSessionStorageGet(SS_LAST_PV_PATH);\n const lastMsRaw = safeSessionStorageGet(SS_LAST_PV_ENTRY_MS);\n const lastEntryMs = lastMsRaw ? Number(lastMsRaw) : 0;\n if (!lastPath || !Number.isFinite(lastEntryMs) || lastEntryMs <= 0) return;\n if (normalizeTrackerPath(lastPath) === newPath) return;\n\n const timeOnPage = Date.now() - lastEntryMs;\n if (timeOnPage < 0 || timeOnPage > NavigationPlugin.UTURN_THRESHOLD_MS)\n return;\n\n this.emitUturn(normalizeTrackerPath(lastPath), newPath, timeOnPage);\n }\n\n private handleNavigation(): void {\n const newPath = normalizeTrackerPath(\n window.location.pathname + window.location.search,\n );\n if (newPath === this.previousPath) return; // hash-only or duplicate call\n\n // U-turn detection: user left the previous page very quickly.\n if (this.previousPath && this.pageEntryTime > 0) {\n const timeOnPage = Date.now() - this.pageEntryTime;\n if (timeOnPage <= NavigationPlugin.UTURN_THRESHOLD_MS) {\n this.emitUturn(this.previousPath, newPath, timeOnPage);\n }\n }\n\n this.recordPageView(newPath);\n }\n\n private emitUturn(\n fromPath: string,\n toPath: string,\n timeOnPageMs: number,\n ): void {\n this.emit({\n type: \"uturn\",\n data: {\n fromPath,\n toPath,\n timeOnPageMs,\n timestamp: Date.now(),\n sessionId: this.sessionId,\n },\n });\n }\n\n private recordPageView(path: string): void {\n const p = normalizeTrackerPath(path);\n this.previousPath = p;\n this.pageEntryTime = Date.now();\n\n persistLastPageView(p, this.pageEntryTime);\n\n this.emit({\n type: \"pageview\",\n data: {\n path: p,\n title: document.title,\n timestamp: Date.now(),\n sessionId: this.sessionId,\n referrer: document.referrer || undefined,\n },\n });\n\n // Notify other plugins via a custom DOM event (synchronous dispatch).\n window.dispatchEvent(\n new CustomEvent(\"tracker:navigate\", {\n detail: { path: p, title: document.title },\n }),\n );\n }\n}\n","import type { TrackerEvent } from \"../types\";\nimport { normalizeTrackerPath } from \"../utils/normalize-tracker-path\";\n\ntype EmitFn = (event: TrackerEvent) => void;\n\ninterface TimePluginOptions {\n emit: EmitFn;\n sessionId: string;\n}\n\n/**\n * Tracks the time a user spends on each page.\n *\n * - Starts a timer when the page becomes active (init / tab focus).\n * - Stops and emits a `timespent` event when:\n * • The user navigates away (tracker:navigate)\n * • The tab is hidden (visibilitychange)\n * • The page is unloading (beforeunload / pagehide)\n * - Resumes timing when the tab becomes visible again.\n */\nexport class TimePlugin {\n private readonly emit: EmitFn;\n private readonly sessionId: string;\n private currentPath = \"\";\n private startTime = 0;\n private tracking = false;\n\n constructor({ emit, sessionId }: TimePluginOptions) {\n this.emit = emit;\n this.sessionId = sessionId;\n }\n\n init(): void {\n this.currentPath = normalizeTrackerPath(\n window.location.pathname + window.location.search,\n );\n this.startTracking();\n\n window.addEventListener(\"tracker:navigate\", this.handleNavigate);\n document.addEventListener(\"visibilitychange\", this.handleVisibilityChange);\n window.addEventListener(\"beforeunload\", this.handleUnload);\n window.addEventListener(\"pagehide\", this.handleUnload);\n }\n\n destroy(): void {\n this.stopTracking();\n window.removeEventListener(\"tracker:navigate\", this.handleNavigate);\n document.removeEventListener(\n \"visibilitychange\",\n this.handleVisibilityChange,\n );\n window.removeEventListener(\"beforeunload\", this.handleUnload);\n window.removeEventListener(\"pagehide\", this.handleUnload);\n }\n\n private startTracking(): void {\n this.startTime = Date.now();\n this.tracking = true;\n }\n\n private stopTracking(): void {\n if (!this.tracking || !this.currentPath) return;\n const duration = Date.now() - this.startTime;\n if (duration < 100) {\n this.tracking = false;\n return; // Ignore sub-100 ms blips (e.g. rapid navigations).\n }\n this.emit({\n type: \"timespent\",\n data: {\n path: this.currentPath,\n duration,\n sessionId: this.sessionId,\n timestamp: Date.now(),\n },\n });\n this.tracking = false;\n }\n\n private handleNavigate = (e: CustomEvent<{ path: string }>): void => {\n this.stopTracking();\n this.currentPath = normalizeTrackerPath(e.detail.path);\n this.startTracking();\n };\n\n private handleVisibilityChange = (): void => {\n if (document.hidden) {\n this.stopTracking();\n } else {\n this.startTracking();\n }\n };\n\n private handleUnload = (): void => {\n this.stopTracking();\n };\n}\n","/**\n * Returns a function that invokes `fn` at most once every `delay` ms.\n * The first call in a new window is executed immediately.\n */\nexport function throttle<Args extends unknown[]>(\n fn: (...args: Args) => void,\n delay: number,\n): (...args: Args) => void {\n let lastCall = 0;\n return (...args: Args): void => {\n const now = Date.now();\n if (now - lastCall >= delay) {\n lastCall = now;\n fn(...args);\n }\n };\n}\n","import type { TrackerEvent, HeatmapPoint } from \"../types\";\nimport { normalizeTrackerPath } from \"../utils/normalize-tracker-path\";\nimport { throttle } from \"../utils/throttle\";\n\ntype EmitFn = (event: TrackerEvent) => void;\n\n/**\n * Elements we anchor clicks to. MUST stay in sync with the backend screenshot\n * rect-map collector so a click's selector resolves to a captured rect.\n */\nconst ANCHOR_SELECTOR =\n \"a,button,input,select,textarea,label,summary,img,\" +\n \"[role],[onclick],[data-track-label],[data-test-target],[id],\" +\n \"h1,h2,h3,h4,h5,h6\";\n\nconst SELECTOR_ID_RE = /^[A-Za-z][\\w-]*$/;\n\n/**\n * Build a stable CSS selector for `el`. MUST produce the same string as the\n * backend's `collectElementRects` so element-relative clicks line up.\n */\nfunction buildSelector(el: Element | null): string {\n if (!el || el.nodeType !== 1) return \"\";\n const elId = (el as HTMLElement).id;\n if (elId && SELECTOR_ID_RE.test(elId)) return \"#\" + elId;\n const parts: string[] = [];\n let node: Element | null = el;\n let depth = 0;\n while (node && node.nodeType === 1 && node !== document.body && depth < 5) {\n const nid = (node as HTMLElement).id;\n if (nid && SELECTOR_ID_RE.test(nid)) {\n parts.unshift(\"#\" + nid);\n break;\n }\n const tag = node.tagName.toLowerCase();\n let nth = 1;\n let sib = node.previousElementSibling;\n while (sib) {\n if (sib.tagName === node.tagName) nth++;\n sib = sib.previousElementSibling;\n }\n parts.unshift(tag + \":nth-of-type(\" + nth + \")\");\n node = node.parentElement;\n depth++;\n }\n return parts.join(\">\");\n}\n\ninterface AnchorInfo {\n selector?: string;\n relX?: number;\n relY?: number;\n}\n\n/**\n * Resolve the nearest anchorable element for a click and the click position as\n * a fraction (0–1) inside that element's box. Returns empty when no suitable\n * element is found (renderer then falls back to page percentages).\n */\nfunction getClickAnchor(\n target: EventTarget | null,\n clientX: number,\n clientY: number,\n): AnchorInfo {\n const el = target instanceof Element ? target : null;\n if (!el) return {};\n const anchor = el.closest(ANCHOR_SELECTOR);\n if (!anchor) return {};\n const selector = buildSelector(anchor);\n if (!selector) return {};\n const rect = anchor.getBoundingClientRect();\n if (rect.width <= 0 || rect.height <= 0) return { selector };\n const relX = Math.min(1, Math.max(0, (clientX - rect.left) / rect.width));\n const relY = Math.min(1, Math.max(0, (clientY - rect.top) / rect.height));\n return {\n selector,\n relX: Math.round(relX * 1000) / 1000,\n relY: Math.round(relY * 1000) / 1000,\n };\n}\n\ninterface HeatmapPluginOptions {\n emit: EmitFn;\n sessionId: string;\n /** Fraction of mousemove / scroll events to sample (0–1). Default: 0.3 */\n sampleRate?: number;\n /** Maximum points stored per page before recording stops. Default: 2000 */\n maxPoints?: number;\n /**\n * If provided, heatmap data will only be collected for paths in this list.\n * Normally omit this — register pages in the dashboard instead; the backend\n * drops points for unregistered paths.\n */\n allowedPaths?: string[];\n}\n\n/**\n * Collects mouse-move, click, and scroll positions for heatmap analysis.\n *\n * Also detects rage clicks (≥3 clicks within 1 s in a 50 px radius) and emits\n * a `rageclik` event so the backend can surface problematic UI hotspots.\n *\n * Click events include an optional `target` field containing a human-readable\n * label for the clicked element (aria-label › id › button/link text).\n */\nexport class HeatmapPlugin {\n private readonly emit: EmitFn;\n private readonly sessionId: string;\n private readonly sampleRate: number;\n private readonly maxPoints: number;\n private readonly allowedPaths: Set<string> | null;\n private currentPath = \"\";\n private pointCounts: Record<string, number> = {};\n /** Deepest scroll reach (% of page height) recorded per path this session. */\n private maxScrollDepth: Record<string, number> = {};\n\n // Rage-click detection state\n private recentClicks: { x: number; y: number; t: number }[] = [];\n private static readonly RAGE_THRESHOLD = 3;\n private static readonly RAGE_WINDOW_MS = 1_000;\n private static readonly RAGE_RADIUS_PX = 50;\n\n private readonly throttledMouseMove: (e: MouseEvent) => void;\n private readonly throttledScroll: () => void;\n\n constructor({\n emit,\n sessionId,\n sampleRate = 0.3,\n maxPoints = 2000,\n allowedPaths,\n }: HeatmapPluginOptions) {\n this.emit = emit;\n this.sessionId = sessionId;\n this.sampleRate = sampleRate;\n this.maxPoints = maxPoints;\n this.allowedPaths =\n allowedPaths && allowedPaths.length > 0\n ? new Set(allowedPaths.map((p) => normalizeTrackerPath(p)))\n : null;\n\n this.throttledMouseMove = throttle(this.handleMouseMove, 50);\n this.throttledScroll = throttle(this.handleScroll, 100);\n }\n\n init(): void {\n this.currentPath = normalizeTrackerPath(\n window.location.pathname + window.location.search,\n );\n\n document.addEventListener(\"mousemove\", this.throttledMouseMove);\n document.addEventListener(\"click\", this.handleClick);\n document.addEventListener(\"touchend\", this.handleTouchEnd, {\n passive: true,\n });\n window.addEventListener(\"scroll\", this.throttledScroll, { passive: true });\n window.addEventListener(\"tracker:navigate\", this.handleNavigate);\n }\n\n destroy(): void {\n document.removeEventListener(\"mousemove\", this.throttledMouseMove);\n document.removeEventListener(\"click\", this.handleClick);\n document.removeEventListener(\"touchend\", this.handleTouchEnd);\n window.removeEventListener(\"scroll\", this.throttledScroll);\n window.removeEventListener(\"tracker:navigate\", this.handleNavigate);\n }\n\n private canRecord(): boolean {\n if (\n this.allowedPaths !== null &&\n !this.allowedPaths.has(this.currentPath)\n ) {\n return false;\n }\n return (this.pointCounts[this.currentPath] ?? 0) < this.maxPoints;\n }\n\n private recordPoint(\n point: Omit<HeatmapPoint, \"path\" | \"timestamp\" | \"sessionId\">,\n ): void {\n if (!this.canRecord()) return;\n this.pointCounts[this.currentPath] =\n (this.pointCounts[this.currentPath] ?? 0) + 1;\n this.emit({\n type: \"heatmap\",\n data: {\n ...point,\n path: this.currentPath,\n timestamp: Date.now(),\n },\n });\n }\n\n /** Extract a human-readable label for the clicked element. */\n private getClickTarget(e: MouseEvent): string | undefined {\n const el = e.target as HTMLElement | null;\n if (!el) return undefined;\n const label =\n el.getAttribute(\"aria-label\") ||\n el.closest(\"[aria-label]\")?.getAttribute(\"aria-label\") ||\n el.getAttribute(\"data-track-label\") ||\n el.getAttribute(\"id\") ||\n (el instanceof HTMLButtonElement || el instanceof HTMLAnchorElement\n ? el.innerText?.trim().slice(0, 60)\n : el.closest(\"button, a\")?.textContent?.trim().slice(0, 60));\n return label || undefined;\n }\n\n /** Detect rage-click bursts and emit a `rageclik` event when found. */\n private checkRageClick(x: number, y: number, path: string): void {\n const now = Date.now();\n this.recentClicks = this.recentClicks.filter(\n (c) => now - c.t < HeatmapPlugin.RAGE_WINDOW_MS,\n );\n this.recentClicks.push({ x, y, t: now });\n\n const nearby = this.recentClicks.filter(\n (c) => Math.hypot(c.x - x, c.y - y) <= HeatmapPlugin.RAGE_RADIUS_PX,\n );\n\n if (nearby.length >= HeatmapPlugin.RAGE_THRESHOLD) {\n this.emit({\n type: \"rageclik\",\n data: {\n path,\n x,\n y,\n count: nearby.length,\n timestamp: now,\n sessionId: this.sessionId,\n },\n });\n // Reset to avoid continuously re-triggering in the same burst.\n this.recentClicks = [];\n }\n }\n\n private handleMouseMove = (e: MouseEvent): void => {\n if (Math.random() > this.sampleRate) return;\n const pageWidth = document.documentElement.scrollWidth;\n const pageHeight = document.documentElement.scrollHeight;\n const absY = e.clientY + window.scrollY;\n this.recordPoint({\n x: e.clientX,\n y: absY,\n xPct: pageWidth > 0 ? (e.clientX / pageWidth) * 100 : 0,\n yPct: pageHeight > 0 ? (absY / pageHeight) * 100 : 0,\n pw: pageWidth,\n ph: pageHeight,\n vw: window.innerWidth,\n type: \"move\",\n });\n };\n\n private handleClick = (e: MouseEvent): void => {\n // Skip if a touchend already recorded this tap (within 500 ms)\n if (Date.now() - this.lastTouchTime < 500) return;\n const pageWidth = document.documentElement.scrollWidth;\n const pageHeight = document.documentElement.scrollHeight;\n const absY = e.clientY + window.scrollY;\n const target = this.getClickTarget(e);\n const anchor = getClickAnchor(e.target, e.clientX, e.clientY);\n this.recordPoint({\n x: e.clientX,\n y: absY,\n xPct: pageWidth > 0 ? (e.clientX / pageWidth) * 100 : 0,\n yPct: pageHeight > 0 ? (absY / pageHeight) * 100 : 0,\n pw: pageWidth,\n ph: pageHeight,\n vw: window.innerWidth,\n type: \"click\",\n ...(target ? { target } : {}),\n ...anchor,\n });\n this.checkRageClick(e.clientX, absY, this.currentPath);\n };\n\n /**\n * Records taps on touch devices.\n * Mobile browsers do fire a synthetic `click` after `touchend`, but some\n * frameworks call `preventDefault()` on touch events which suppresses it.\n * Listening to `touchend` directly ensures taps are always captured.\n * We mark the point with a short-lived flag so the subsequent synthetic\n * `click` event (if it fires) is deduplicated.\n */\n private lastTouchTime = 0;\n\n private handleTouchEnd = (e: TouchEvent): void => {\n const touch = e.changedTouches[0];\n if (!touch) return;\n const pageWidth = document.documentElement.scrollWidth;\n const pageHeight = document.documentElement.scrollHeight;\n const absY = touch.clientY + window.scrollY;\n this.lastTouchTime = Date.now();\n const anchor = getClickAnchor(e.target, touch.clientX, touch.clientY);\n this.recordPoint({\n x: touch.clientX,\n y: absY,\n xPct: pageWidth > 0 ? (touch.clientX / pageWidth) * 100 : 0,\n yPct: pageHeight > 0 ? (absY / pageHeight) * 100 : 0,\n pw: pageWidth,\n ph: pageHeight,\n vw: window.innerWidth,\n type: \"click\",\n ...anchor,\n });\n this.checkRageClick(touch.clientX, absY, this.currentPath);\n };\n\n private handleScroll = (): void => {\n const pageWidth = document.documentElement.scrollWidth;\n const pageHeight = document.documentElement.scrollHeight;\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n const scrollX = window.scrollX;\n const scrollY = window.scrollY;\n // Reach = how far the BOTTOM of the viewport got, as % of page height. The\n // per-session max of this drives the scroll-depth (\"reach\") heatmap.\n const reachedY = Math.min(pageHeight, scrollY + vh);\n const reachedPct = pageHeight > 0 ? (reachedY / pageHeight) * 100 : 0;\n const prevMax = this.maxScrollDepth[this.currentPath] ?? 0;\n const isNewMax = reachedPct > prevMax + 1;\n if (isNewMax) this.maxScrollDepth[this.currentPath] = reachedPct;\n // Sample to limit volume, but ALWAYS record a freshly reached max depth so\n // the reach curve captures the true deepest point each visitor saw.\n if (!isNewMax && Math.random() > this.sampleRate) return;\n const absX = scrollX + vw / 2;\n this.recordPoint({\n x: vw / 2,\n y: reachedY,\n xPct: pageWidth > 0 ? (absX / pageWidth) * 100 : 50,\n yPct: reachedPct,\n pw: pageWidth,\n ph: pageHeight,\n vw,\n type: \"scroll\",\n });\n };\n\n private handleNavigate = (e: CustomEvent<{ path: string }>): void => {\n this.currentPath = normalizeTrackerPath(e.detail.path);\n };\n}\n","export const ALPHANA_GZIP_MEDIA_TYPE = \"application/x-alphana-gzip\";\n\nexport function isCompressionSupported(): boolean {\n return typeof CompressionStream !== \"undefined\";\n}\n\n/** Gzip-compress a UTF-8 JSON string. Returns null when unsupported or on failure. */\nexport async function compressUtf8(json: string): Promise<Uint8Array | null> {\n if (!isCompressionSupported()) return null;\n\n try {\n const encoded = new TextEncoder().encode(json);\n const stream = new Blob([encoded])\n .stream()\n .pipeThrough(new CompressionStream(\"gzip\"));\n return new Uint8Array(await new Response(stream).arrayBuffer());\n } catch {\n return null;\n }\n}\n","import { ALPHANA_GZIP_MEDIA_TYPE, compressUtf8 } from \"./compress\";\n\nconst DEFAULT_THRESHOLD_BYTES = 1024;\n\nexport type IngestFetchOptions = {\n compressPayloads?: boolean;\n compressionThresholdBytes?: number;\n keepalive?: boolean;\n authHeaders?: Record<string, string>;\n};\n\ntype PreparedIngestBody =\n | { codec: \"json\"; body: string; contentType: \"application/json\" }\n | {\n codec: \"gzip\";\n body: Uint8Array;\n contentType: typeof ALPHANA_GZIP_MEDIA_TYPE;\n };\n\nasync function prepareIngestBody(\n jsonBody: string,\n options: IngestFetchOptions,\n forceJson = false,\n): Promise<PreparedIngestBody> {\n const threshold =\n options.compressionThresholdBytes ?? DEFAULT_THRESHOLD_BYTES;\n const shouldCompress =\n !forceJson &&\n options.compressPayloads !== false &&\n jsonBody.length >= threshold;\n\n if (shouldCompress) {\n const compressed = await compressUtf8(jsonBody);\n if (compressed) {\n return {\n codec: \"gzip\",\n body: compressed,\n contentType: ALPHANA_GZIP_MEDIA_TYPE,\n };\n }\n }\n\n return {\n codec: \"json\",\n body: jsonBody,\n contentType: \"application/json\",\n };\n}\n\nasync function sendPreparedIngest(\n url: string,\n prepared: PreparedIngestBody,\n options: IngestFetchOptions,\n): Promise<Response> {\n const headers: Record<string, string> = {\n \"Content-Type\": prepared.contentType,\n ...(prepared.codec === \"gzip\"\n ? { Accept: ALPHANA_GZIP_MEDIA_TYPE }\n : {}),\n ...(options.authHeaders ?? {}),\n };\n\n return fetch(url, {\n method: \"POST\",\n headers,\n body: prepared.body as BodyInit,\n keepalive: options.keepalive ?? false,\n });\n}\n\n/**\n * POST an ingest payload, optionally gzip-compressed.\n * Retries once as JSON when the server rejects gzip (415/400).\n * Errors are swallowed — analytics must never surface to end users.\n */\nexport async function postIngest(\n url: string,\n jsonBody: string,\n options: IngestFetchOptions = {},\n): Promise<void> {\n try {\n const prepared = await prepareIngestBody(jsonBody, options);\n let response = await sendPreparedIngest(url, prepared, options);\n\n if (\n prepared.codec === \"gzip\" &&\n (response.status === 415 || response.status === 400)\n ) {\n const fallback = await prepareIngestBody(jsonBody, options, true);\n response = await sendPreparedIngest(url, fallback, options);\n }\n } catch {\n // Intentionally silent.\n }\n}\n\n/**\n * Best-effort unload flush. Large/compressible payloads use keepalive fetch;\n * small unauthenticated payloads may still use sendBeacon with JSON.\n */\nexport function postIngestBeacon(\n url: string,\n jsonBody: string,\n options: IngestFetchOptions = {},\n): void {\n const threshold =\n options.compressionThresholdBytes ?? DEFAULT_THRESHOLD_BYTES;\n const wantsCompression =\n options.compressPayloads !== false && jsonBody.length >= threshold;\n\n if (wantsCompression || Object.keys(options.authHeaders ?? {}).length > 0) {\n void postIngest(url, jsonBody, { ...options, keepalive: true });\n return;\n }\n\n if (typeof navigator !== \"undefined\" && navigator.sendBeacon) {\n const blob = new Blob([jsonBody], { type: \"application/json\" });\n const accepted = navigator.sendBeacon(url, blob);\n if (accepted) return;\n }\n\n void postIngest(url, jsonBody, { ...options, keepalive: true });\n}\n","import { collectUrlFromEventsEndpoint } from \"../utils/api-base\";\nimport { buildCollectLogBody } from \"../utils/collect-payload\";\nimport { postIngest } from \"../utils/ingest-fetch\";\n\nexport type LogLevel = \"info\" | \"warn\" | \"error\";\n\nexport interface LogEntry {\n sessionId?: string;\n appId?: string;\n level: LogLevel;\n message: string;\n url?: string;\n stack?: string;\n meta?: Record<string, unknown>;\n timestamp: number;\n}\n\ntype ConsoleFn = (...args: unknown[]) => void;\n\n/**\n * Automatically captures console.info/warn/error output and unhandled errors,\n * then ships them to the unified `/api/collect` ingest endpoint.\n *\n * All console methods are restored exactly in `destroy()`.\n */\nexport class LogCapture {\n private readonly collectUrl: string;\n private readonly sessionId: string;\n private readonly appId?: string;\n private readonly authHeaders: Record<string, string>;\n private readonly compressPayloads: boolean;\n private readonly compressionThresholdBytes: number;\n\n // Original console methods preserved so we can restore them.\n private origInfo!: ConsoleFn;\n private origWarn!: ConsoleFn;\n private origError!: ConsoleFn;\n\n private prevOnError: OnErrorEventHandler = null;\n private prevOnUnhandledRejection:\n | ((e: PromiseRejectionEvent) => void)\n | null = null;\n\n private initialized = false;\n\n constructor(options: {\n endpoint: string;\n collectEndpoint?: string;\n sessionId: string;\n secretKey?: string;\n appId?: string;\n compressPayloads?: boolean;\n compressionThresholdBytes?: number;\n }) {\n this.collectUrl =\n options.collectEndpoint ??\n collectUrlFromEventsEndpoint(options.endpoint);\n this.sessionId = options.sessionId;\n this.appId = options.appId;\n this.authHeaders = options.secretKey\n ? { Authorization: `Bearer ${options.secretKey}` }\n : {};\n this.compressPayloads = options.compressPayloads ?? true;\n this.compressionThresholdBytes = options.compressionThresholdBytes ?? 1024;\n }\n\n init(): void {\n if (typeof window === \"undefined\" || this.initialized) return;\n\n this.origInfo = console.info.bind(console);\n this.origWarn = console.warn.bind(console);\n this.origError = console.error.bind(console);\n\n console.info = (...args: unknown[]) => {\n this.origInfo(...args);\n this.send(\"info\", this.format(args));\n };\n\n console.warn = (...args: unknown[]) => {\n this.origWarn(...args);\n this.send(\"warn\", this.format(args));\n };\n\n console.error = (...args: unknown[]) => {\n this.origError(...args);\n const [first] = args;\n const stack = first instanceof Error ? first.stack : undefined;\n this.send(\"error\", this.format(args), { stack });\n };\n\n this.prevOnError = window.onerror;\n window.onerror = (msg, src, line, col, err) => {\n this.send(\"error\", String(msg), {\n stack: err?.stack,\n meta: { src, line, col },\n });\n if (typeof this.prevOnError === \"function\") {\n return this.prevOnError(msg, src, line, col, err);\n }\n return false;\n };\n\n this.prevOnUnhandledRejection = (e: PromiseRejectionEvent) => {\n const reason = e.reason;\n const message =\n reason instanceof Error\n ? reason.message\n : String(reason ?? \"Unhandled promise rejection\");\n this.send(\"error\", message, {\n stack: reason instanceof Error ? reason.stack : undefined,\n });\n };\n window.addEventListener(\n \"unhandledrejection\",\n this.prevOnUnhandledRejection,\n );\n\n this.initialized = true;\n }\n\n destroy(): void {\n if (!this.initialized) return;\n console.info = this.origInfo;\n console.warn = this.origWarn;\n console.error = this.origError;\n\n window.onerror = this.prevOnError;\n if (this.prevOnUnhandledRejection) {\n window.removeEventListener(\n \"unhandledrejection\",\n this.prevOnUnhandledRejection,\n );\n }\n this.initialized = false;\n }\n\n /** Manually capture a log entry (e.g. from try/catch). */\n capture(\n level: LogLevel,\n message: string,\n extra?: { stack?: string; meta?: Record<string, unknown> },\n ): void {\n this.send(level, message, extra);\n }\n\n private format(args: unknown[]): string {\n return args\n .map((a) => {\n if (a instanceof Error) return a.message;\n if (typeof a === \"object\") {\n try {\n return JSON.stringify(a);\n } catch {\n return String(a);\n }\n }\n return String(a);\n })\n .join(\" \");\n }\n\n private send(\n level: LogLevel,\n message: string,\n extra?: { stack?: string; meta?: Record<string, unknown> },\n ): void {\n const entry: LogEntry = {\n sessionId: this.sessionId,\n ...(this.appId ? { appId: this.appId } : {}),\n level,\n message,\n url: typeof window !== \"undefined\" ? window.location.href : undefined,\n stack: extra?.stack,\n meta: extra?.meta,\n timestamp: Date.now(),\n };\n const body = JSON.stringify(buildCollectLogBody(entry));\n\n void postIngest(this.collectUrl, body, {\n compressPayloads: this.compressPayloads,\n compressionThresholdBytes: this.compressionThresholdBytes,\n authHeaders: this.authHeaders,\n keepalive: true,\n }).catch((err: unknown) => {\n if (this.origError) {\n this.origError(\"[user-tracker] Failed to send log:\", err);\n }\n });\n }\n}\n","var NodeType;\r\n(function (NodeType) {\r\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\r\n return n.nodeType === n.ELEMENT_NODE;\r\n}\r\nfunction isShadowRoot(n) {\r\n var host = n === null || n === void 0 ? void 0 : n.host;\r\n return Boolean((host === null || host === void 0 ? void 0 : host.shadowRoot) === n);\r\n}\r\nfunction isNativeShadowDom(shadowRoot) {\r\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\r\n}\r\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\r\n if (cssText.includes(' background-clip: text;') &&\r\n !cssText.includes(' -webkit-background-clip: text;')) {\r\n cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\r\n }\r\n return cssText;\r\n}\r\nfunction getCssRulesString(s) {\r\n try {\r\n var rules = s.rules || s.cssRules;\r\n return rules\r\n ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules).map(getCssRuleString).join(''))\r\n : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n}\r\nfunction getCssRuleString(rule) {\r\n var cssStringified = rule.cssText;\r\n if (isCSSImportRule(rule)) {\r\n try {\r\n cssStringified = getCssRulesString(rule.styleSheet) || cssStringified;\r\n }\r\n catch (_a) {\r\n }\r\n }\r\n return cssStringified;\r\n}\r\nfunction isCSSImportRule(rule) {\r\n return 'styleSheet' in rule;\r\n}\r\nvar Mirror = (function () {\r\n function Mirror() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n Mirror.prototype.getId = function (n) {\r\n var _a;\r\n if (!n)\r\n return -1;\r\n var id = (_a = this.getMeta(n)) === null || _a === void 0 ? void 0 : _a.id;\r\n return id !== null && id !== void 0 ? id : -1;\r\n };\r\n Mirror.prototype.getNode = function (id) {\r\n return this.idNodeMap.get(id) || null;\r\n };\r\n Mirror.prototype.getIds = function () {\r\n return Array.from(this.idNodeMap.keys());\r\n };\r\n Mirror.prototype.getMeta = function (n) {\r\n return this.nodeMetaMap.get(n) || null;\r\n };\r\n Mirror.prototype.removeNodeFromMap = function (n) {\r\n var _this = this;\r\n var id = this.getId(n);\r\n this.idNodeMap[\"delete\"](id);\r\n if (n.childNodes) {\r\n n.childNodes.forEach(function (childNode) {\r\n return _this.removeNodeFromMap(childNode);\r\n });\r\n }\r\n };\r\n Mirror.prototype.has = function (id) {\r\n return this.idNodeMap.has(id);\r\n };\r\n Mirror.prototype.hasNode = function (node) {\r\n return this.nodeMetaMap.has(node);\r\n };\r\n Mirror.prototype.add = function (n, meta) {\r\n var id = meta.id;\r\n this.idNodeMap.set(id, n);\r\n this.nodeMetaMap.set(n, meta);\r\n };\r\n Mirror.prototype.replace = function (id, n) {\r\n var oldNode = this.getNode(id);\r\n if (oldNode) {\r\n var meta = this.nodeMetaMap.get(oldNode);\r\n if (meta)\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n this.idNodeMap.set(id, n);\r\n };\r\n Mirror.prototype.reset = function () {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n };\r\n return Mirror;\r\n}());\r\nfunction createMirror() {\r\n return new Mirror();\r\n}\r\nfunction maskInputValue(_a) {\r\n var maskInputOptions = _a.maskInputOptions, tagName = _a.tagName, type = _a.type, value = _a.value, maskInputFn = _a.maskInputFn;\r\n var text = value || '';\r\n if (maskInputOptions[tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n if (maskInputFn) {\r\n text = maskInputFn(text);\r\n }\r\n else {\r\n text = '*'.repeat(text.length);\r\n }\r\n }\r\n return text;\r\n}\r\nvar ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nfunction is2DCanvasBlank(canvas) {\r\n var ctx = canvas.getContext('2d');\r\n if (!ctx)\r\n return true;\r\n var chunkSize = 50;\r\n for (var x = 0; x < canvas.width; x += chunkSize) {\r\n for (var y = 0; y < canvas.height; y += chunkSize) {\r\n var getImageData = ctx.getImageData;\r\n var originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\r\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\r\n : getImageData;\r\n var pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\r\n if (pixelBuffer.some(function (pixel) { return pixel !== 0; }))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\n\nvar _id = 1;\r\nvar tagNameRegex = new RegExp('[^a-z0-9-_:]');\r\nvar IGNORED_NODE = -2;\r\nfunction genId() {\r\n return _id++;\r\n}\r\nfunction getValidTagName(element) {\r\n if (element instanceof HTMLFormElement) {\r\n return 'form';\r\n }\r\n var processedTagName = element.tagName.toLowerCase().trim();\r\n if (tagNameRegex.test(processedTagName)) {\r\n return 'div';\r\n }\r\n return processedTagName;\r\n}\r\nfunction stringifyStyleSheet(sheet) {\r\n return sheet.cssRules\r\n ? Array.from(sheet.cssRules)\r\n .map(function (rule) { return rule.cssText || ''; })\r\n .join('')\r\n : '';\r\n}\r\nfunction extractOrigin(url) {\r\n var origin = '';\r\n if (url.indexOf('//') > -1) {\r\n origin = url.split('/').slice(0, 3).join('/');\r\n }\r\n else {\r\n origin = url.split('/')[0];\r\n }\r\n origin = origin.split('?')[0];\r\n return origin;\r\n}\r\nvar canvasService;\r\nvar canvasCtx;\r\nvar URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\r\nvar RELATIVE_PATH = /^(?!www\\.|(?:http|ftp)s?:\\/\\/|[A-Za-z]:\\\\|\\/\\/|#).*/;\r\nvar DATA_URI = /^(data:)([^,]*),(.*)/i;\r\nfunction absoluteToStylesheet(cssText, href) {\r\n return (cssText || '').replace(URL_IN_CSS_REF, function (origin, quote1, path1, quote2, path2, path3) {\r\n var filePath = path1 || path2 || path3;\r\n var maybeQuote = quote1 || quote2 || '';\r\n if (!filePath) {\r\n return origin;\r\n }\r\n if (!RELATIVE_PATH.test(filePath)) {\r\n return \"url(\".concat(maybeQuote).concat(filePath).concat(maybeQuote, \")\");\r\n }\r\n if (DATA_URI.test(filePath)) {\r\n return \"url(\".concat(maybeQuote).concat(filePath).concat(maybeQuote, \")\");\r\n }\r\n if (filePath[0] === '/') {\r\n return \"url(\".concat(maybeQuote).concat(extractOrigin(href) + filePath).concat(maybeQuote, \")\");\r\n }\r\n var stack = href.split('/');\r\n var parts = filePath.split('/');\r\n stack.pop();\r\n for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {\r\n var part = parts_1[_i];\r\n if (part === '.') {\r\n continue;\r\n }\r\n else if (part === '..') {\r\n stack.pop();\r\n }\r\n else {\r\n stack.push(part);\r\n }\r\n }\r\n return \"url(\".concat(maybeQuote).concat(stack.join('/')).concat(maybeQuote, \")\");\r\n });\r\n}\r\nvar SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\r\nvar SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\r\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\r\n if (attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n var pos = 0;\r\n function collectCharacters(regEx) {\r\n var chars;\r\n var match = regEx.exec(attributeValue.substring(pos));\r\n if (match) {\r\n chars = match[0];\r\n pos += chars.length;\r\n return chars;\r\n }\r\n return '';\r\n }\r\n var output = [];\r\n while (true) {\r\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\r\n if (pos >= attributeValue.length) {\r\n break;\r\n }\r\n var url = collectCharacters(SRCSET_NOT_SPACES);\r\n if (url.slice(-1) === ',') {\r\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\r\n output.push(url);\r\n }\r\n else {\r\n var descriptorsStr = '';\r\n url = absoluteToDoc(doc, url);\r\n var inParens = false;\r\n while (true) {\r\n var c = attributeValue.charAt(pos);\r\n if (c === '') {\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (!inParens) {\r\n if (c === ',') {\r\n pos += 1;\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (c === '(') {\r\n inParens = true;\r\n }\r\n }\r\n else {\r\n if (c === ')') {\r\n inParens = false;\r\n }\r\n }\r\n descriptorsStr += c;\r\n pos += 1;\r\n }\r\n }\r\n }\r\n return output.join(', ');\r\n}\r\nfunction absoluteToDoc(doc, attributeValue) {\r\n if (!attributeValue || attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n var a = doc.createElement('a');\r\n a.href = attributeValue;\r\n return a.href;\r\n}\r\nfunction isSVGElement(el) {\r\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\r\n}\r\nfunction getHref() {\r\n var a = document.createElement('a');\r\n a.href = '';\r\n return a.href;\r\n}\r\nfunction transformAttribute(doc, tagName, name, value) {\r\n if (name === 'src' ||\r\n (name === 'href' && value && !(tagName === 'use' && value[0] === '#'))) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'xlink:href' && value && value[0] !== '#') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'background' &&\r\n value &&\r\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'srcset' && value) {\r\n return getAbsoluteSrcsetString(doc, value);\r\n }\r\n else if (name === 'style' && value) {\r\n return absoluteToStylesheet(value, getHref());\r\n }\r\n else if (tagName === 'object' && name === 'data' && value) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else {\r\n return value;\r\n }\r\n}\r\nfunction _isBlockedElement(element, blockClass, blockSelector) {\r\n if (typeof blockClass === 'string') {\r\n if (element.classList.contains(blockClass)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n for (var eIndex = element.classList.length; eIndex--;) {\r\n var className = element.classList[eIndex];\r\n if (blockClass.test(className)) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (blockSelector) {\r\n return element.matches(blockSelector);\r\n }\r\n return false;\r\n}\r\nfunction classMatchesRegex(node, regex, checkAncestors) {\r\n if (!node)\r\n return false;\r\n if (node.nodeType !== node.ELEMENT_NODE) {\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n }\r\n for (var eIndex = node.classList.length; eIndex--;) {\r\n var className = node.classList[eIndex];\r\n if (regex.test(className)) {\r\n return true;\r\n }\r\n }\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n}\r\nfunction needMaskingText(node, maskTextClass, maskTextSelector) {\r\n var el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (el === null)\r\n return false;\r\n if (typeof maskTextClass === 'string') {\r\n if (el.classList.contains(maskTextClass))\r\n return true;\r\n if (el.closest(\".\".concat(maskTextClass)))\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, maskTextClass, true))\r\n return true;\r\n }\r\n if (maskTextSelector) {\r\n if (el.matches(maskTextSelector))\r\n return true;\r\n if (el.closest(maskTextSelector))\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\r\n var win = iframeEl.contentWindow;\r\n if (!win) {\r\n return;\r\n }\r\n var fired = false;\r\n var readyState;\r\n try {\r\n readyState = win.document.readyState;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (readyState !== 'complete') {\r\n var timer_1 = setTimeout(function () {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, iframeLoadTimeout);\r\n iframeEl.addEventListener('load', function () {\r\n clearTimeout(timer_1);\r\n fired = true;\r\n listener();\r\n });\r\n return;\r\n }\r\n var blankUrl = 'about:blank';\r\n if (win.location.href !== blankUrl ||\r\n iframeEl.src === blankUrl ||\r\n iframeEl.src === '') {\r\n setTimeout(listener, 0);\r\n return iframeEl.addEventListener('load', listener);\r\n }\r\n iframeEl.addEventListener('load', listener);\r\n}\r\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\r\n var fired = false;\r\n var styleSheetLoaded;\r\n try {\r\n styleSheetLoaded = link.sheet;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (styleSheetLoaded)\r\n return;\r\n var timer = setTimeout(function () {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, styleSheetLoadTimeout);\r\n link.addEventListener('load', function () {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n}\r\nfunction serializeNode(n, options) {\r\n var doc = options.doc, mirror = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c;\r\n var rootId = getRootId(doc, mirror);\r\n switch (n.nodeType) {\r\n case n.DOCUMENT_NODE:\r\n if (n.compatMode !== 'CSS1Compat') {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n compatMode: n.compatMode\r\n };\r\n }\r\n else {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: []\r\n };\r\n }\r\n case n.DOCUMENT_TYPE_NODE:\r\n return {\r\n type: NodeType.DocumentType,\r\n name: n.name,\r\n publicId: n.publicId,\r\n systemId: n.systemId,\r\n rootId: rootId\r\n };\r\n case n.ELEMENT_NODE:\r\n return serializeElementNode(n, {\r\n doc: doc,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskInputFn: maskInputFn,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: newlyAddedElement,\r\n rootId: rootId\r\n });\r\n case n.TEXT_NODE:\r\n return serializeTextNode(n, {\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n maskTextFn: maskTextFn,\r\n rootId: rootId\r\n });\r\n case n.CDATA_SECTION_NODE:\r\n return {\r\n type: NodeType.CDATA,\r\n textContent: '',\r\n rootId: rootId\r\n };\r\n case n.COMMENT_NODE:\r\n return {\r\n type: NodeType.Comment,\r\n textContent: n.textContent || '',\r\n rootId: rootId\r\n };\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction getRootId(doc, mirror) {\r\n if (!mirror.hasNode(doc))\r\n return undefined;\r\n var docId = mirror.getId(doc);\r\n return docId === 1 ? undefined : docId;\r\n}\r\nfunction serializeTextNode(n, options) {\r\n var _a;\r\n var maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, maskTextFn = options.maskTextFn, rootId = options.rootId;\r\n var parentTagName = n.parentNode && n.parentNode.tagName;\r\n var textContent = n.textContent;\r\n var isStyle = parentTagName === 'STYLE' ? true : undefined;\r\n var isScript = parentTagName === 'SCRIPT' ? true : undefined;\r\n if (isStyle && textContent) {\r\n try {\r\n if (n.nextSibling || n.previousSibling) {\r\n }\r\n else if ((_a = n.parentNode.sheet) === null || _a === void 0 ? void 0 : _a.cssRules) {\r\n textContent = stringifyStyleSheet(n.parentNode.sheet);\r\n }\r\n }\r\n catch (err) {\r\n console.warn(\"Cannot get CSS styles from text's parentNode. Error: \".concat(err), n);\r\n }\r\n textContent = absoluteToStylesheet(textContent, getHref());\r\n }\r\n if (isScript) {\r\n textContent = 'SCRIPT_PLACEHOLDER';\r\n }\r\n if (!isStyle &&\r\n !isScript &&\r\n textContent &&\r\n needMaskingText(n, maskTextClass, maskTextSelector)) {\r\n textContent = maskTextFn\r\n ? maskTextFn(textContent)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n return {\r\n type: NodeType.Text,\r\n textContent: textContent || '',\r\n isStyle: isStyle,\r\n rootId: rootId\r\n };\r\n}\r\nfunction serializeElementNode(n, options) {\r\n var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskInputFn = options.maskInputFn, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c, rootId = options.rootId;\r\n var needBlock = _isBlockedElement(n, blockClass, blockSelector);\r\n var tagName = getValidTagName(n);\r\n var attributes = {};\r\n var len = n.attributes.length;\r\n for (var i = 0; i < len; i++) {\r\n var attr = n.attributes[i];\r\n attributes[attr.name] = transformAttribute(doc, tagName, attr.name, attr.value);\r\n }\r\n if (tagName === 'link' && inlineStylesheet) {\r\n var stylesheet = Array.from(doc.styleSheets).find(function (s) {\r\n return s.href === n.href;\r\n });\r\n var cssText = null;\r\n if (stylesheet) {\r\n cssText = getCssRulesString(stylesheet);\r\n }\r\n if (cssText) {\r\n delete attributes.rel;\r\n delete attributes.href;\r\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\r\n }\r\n }\r\n if (tagName === 'style' &&\r\n n.sheet &&\r\n !(n.innerText || n.textContent || '').trim().length) {\r\n var cssText = getCssRulesString(n.sheet);\r\n if (cssText) {\r\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\r\n }\r\n }\r\n if (tagName === 'input' || tagName === 'textarea' || tagName === 'select') {\r\n var value = n.value;\r\n var checked = n.checked;\r\n if (attributes.type !== 'radio' &&\r\n attributes.type !== 'checkbox' &&\r\n attributes.type !== 'submit' &&\r\n attributes.type !== 'button' &&\r\n value) {\r\n attributes.value = maskInputValue({\r\n type: attributes.type,\r\n tagName: tagName,\r\n value: value,\r\n maskInputOptions: maskInputOptions,\r\n maskInputFn: maskInputFn\r\n });\r\n }\r\n else if (checked) {\r\n attributes.checked = checked;\r\n }\r\n }\r\n if (tagName === 'option') {\r\n if (n.selected && !maskInputOptions['select']) {\r\n attributes.selected = true;\r\n }\r\n else {\r\n delete attributes.selected;\r\n }\r\n }\r\n if (tagName === 'canvas' && recordCanvas) {\r\n if (n.__context === '2d') {\r\n if (!is2DCanvasBlank(n)) {\r\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n }\r\n else if (!('__context' in n)) {\r\n var canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n var blankCanvas = document.createElement('canvas');\r\n blankCanvas.width = n.width;\r\n blankCanvas.height = n.height;\r\n var blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n if (canvasDataURL !== blankCanvasDataURL) {\r\n attributes.rr_dataURL = canvasDataURL;\r\n }\r\n }\r\n }\r\n if (tagName === 'img' && inlineImages) {\r\n if (!canvasService) {\r\n canvasService = doc.createElement('canvas');\r\n canvasCtx = canvasService.getContext('2d');\r\n }\r\n var image_1 = n;\r\n var oldValue_1 = image_1.crossOrigin;\r\n image_1.crossOrigin = 'anonymous';\r\n var recordInlineImage = function () {\r\n try {\r\n canvasService.width = image_1.naturalWidth;\r\n canvasService.height = image_1.naturalHeight;\r\n canvasCtx.drawImage(image_1, 0, 0);\r\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n catch (err) {\r\n console.warn(\"Cannot inline img src=\".concat(image_1.currentSrc, \"! Error: \").concat(err));\r\n }\r\n oldValue_1\r\n ? (attributes.crossOrigin = oldValue_1)\r\n : image_1.removeAttribute('crossorigin');\r\n };\r\n if (image_1.complete && image_1.naturalWidth !== 0)\r\n recordInlineImage();\r\n else\r\n image_1.onload = recordInlineImage;\r\n }\r\n if (tagName === 'audio' || tagName === 'video') {\r\n attributes.rr_mediaState = n.paused\r\n ? 'paused'\r\n : 'played';\r\n attributes.rr_mediaCurrentTime = n.currentTime;\r\n }\r\n if (!newlyAddedElement) {\r\n if (n.scrollLeft) {\r\n attributes.rr_scrollLeft = n.scrollLeft;\r\n }\r\n if (n.scrollTop) {\r\n attributes.rr_scrollTop = n.scrollTop;\r\n }\r\n }\r\n if (needBlock) {\r\n var _d = n.getBoundingClientRect(), width = _d.width, height = _d.height;\r\n attributes = {\r\n \"class\": attributes[\"class\"],\r\n rr_width: \"\".concat(width, \"px\"),\r\n rr_height: \"\".concat(height, \"px\")\r\n };\r\n }\r\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\r\n if (!n.contentDocument) {\r\n attributes.rr_src = attributes.src;\r\n }\r\n delete attributes.src;\r\n }\r\n return {\r\n type: NodeType.Element,\r\n tagName: tagName,\r\n attributes: attributes,\r\n childNodes: [],\r\n isSVG: isSVGElement(n) || undefined,\r\n needBlock: needBlock,\r\n rootId: rootId\r\n };\r\n}\r\nfunction lowerIfExists(maybeAttr) {\r\n if (maybeAttr === undefined) {\r\n return '';\r\n }\r\n else {\r\n return maybeAttr.toLowerCase();\r\n }\r\n}\r\nfunction slimDOMExcluded(sn, slimDOMOptions) {\r\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\r\n return true;\r\n }\r\n else if (sn.type === NodeType.Element) {\r\n if (slimDOMOptions.script &&\r\n (sn.tagName === 'script' ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'preload' &&\r\n sn.attributes.as === 'script') ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'prefetch' &&\r\n typeof sn.attributes.href === 'string' &&\r\n sn.attributes.href.endsWith('.js')))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headFavicon &&\r\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\r\n (sn.tagName === 'meta' &&\r\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\r\n lowerIfExists(sn.attributes.name) === 'application-name' ||\r\n lowerIfExists(sn.attributes.rel) === 'icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\r\n return true;\r\n }\r\n else if (sn.tagName === 'meta') {\r\n if (slimDOMOptions.headMetaDescKeywords &&\r\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaSocial &&\r\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\r\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\r\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaRobots &&\r\n (lowerIfExists(sn.attributes.name) === 'robots' ||\r\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\r\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaHttpEquiv &&\r\n sn.attributes['http-equiv'] !== undefined) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaAuthorship &&\r\n (lowerIfExists(sn.attributes.name) === 'author' ||\r\n lowerIfExists(sn.attributes.name) === 'generator' ||\r\n lowerIfExists(sn.attributes.name) === 'framework' ||\r\n lowerIfExists(sn.attributes.name) === 'publisher' ||\r\n lowerIfExists(sn.attributes.name) === 'progid' ||\r\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\r\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaVerification &&\r\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\r\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\r\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\r\n lowerIfExists(sn.attributes.name) === 'verification' ||\r\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction serializeNodeWithId(n, options) {\r\n var doc = options.doc, mirror = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.inlineStylesheet, inlineStylesheet = _b === void 0 ? true : _b, _c = options.maskInputOptions, maskInputOptions = _c === void 0 ? {} : _c, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, slimDOMOptions = options.slimDOMOptions, _d = options.dataURLOptions, dataURLOptions = _d === void 0 ? {} : _d, _e = options.inlineImages, inlineImages = _e === void 0 ? false : _e, _f = options.recordCanvas, recordCanvas = _f === void 0 ? false : _f, onSerialize = options.onSerialize, onIframeLoad = options.onIframeLoad, _g = options.iframeLoadTimeout, iframeLoadTimeout = _g === void 0 ? 5000 : _g, onStylesheetLoad = options.onStylesheetLoad, _h = options.stylesheetLoadTimeout, stylesheetLoadTimeout = _h === void 0 ? 5000 : _h, _j = options.keepIframeSrcFn, keepIframeSrcFn = _j === void 0 ? function () { return false; } : _j, _k = options.newlyAddedElement, newlyAddedElement = _k === void 0 ? false : _k;\r\n var _l = options.preserveWhiteSpace, preserveWhiteSpace = _l === void 0 ? true : _l;\r\n var _serializedNode = serializeNode(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: newlyAddedElement\r\n });\r\n if (!_serializedNode) {\r\n console.warn(n, 'not serialized');\r\n return null;\r\n }\r\n var id;\r\n if (mirror.hasNode(n)) {\r\n id = mirror.getId(n);\r\n }\r\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\r\n (!preserveWhiteSpace &&\r\n _serializedNode.type === NodeType.Text &&\r\n !_serializedNode.isStyle &&\r\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\r\n id = IGNORED_NODE;\r\n }\r\n else {\r\n id = genId();\r\n }\r\n var serializedNode = Object.assign(_serializedNode, { id: id });\r\n mirror.add(n, serializedNode);\r\n if (id === IGNORED_NODE) {\r\n return null;\r\n }\r\n if (onSerialize) {\r\n onSerialize(n);\r\n }\r\n var recordChild = !skipChild;\r\n if (serializedNode.type === NodeType.Element) {\r\n recordChild = recordChild && !serializedNode.needBlock;\r\n delete serializedNode.needBlock;\r\n var shadowRoot = n.shadowRoot;\r\n if (shadowRoot && isNativeShadowDom(shadowRoot))\r\n serializedNode.isShadowHost = true;\r\n }\r\n if ((serializedNode.type === NodeType.Document ||\r\n serializedNode.type === NodeType.Element) &&\r\n recordChild) {\r\n if (slimDOMOptions.headWhitespace &&\r\n serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'head') {\r\n preserveWhiteSpace = false;\r\n }\r\n var bypassOptions = {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: skipChild,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n };\r\n for (var _i = 0, _m = Array.from(n.childNodes); _i < _m.length; _i++) {\r\n var childN = _m[_i];\r\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n if (isElement(n) && n.shadowRoot) {\r\n for (var _o = 0, _p = Array.from(n.shadowRoot.childNodes); _o < _p.length; _o++) {\r\n var childN = _p[_o];\r\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n isNativeShadowDom(n.shadowRoot) &&\r\n (serializedChildNode.isShadow = true);\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n }\r\n if (n.parentNode &&\r\n isShadowRoot(n.parentNode) &&\r\n isNativeShadowDom(n.parentNode)) {\r\n serializedNode.isShadow = true;\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'iframe') {\r\n onceIframeLoaded(n, function () {\r\n var iframeDoc = n.contentDocument;\r\n if (iframeDoc && onIframeLoad) {\r\n var serializedIframeNode = serializeNodeWithId(iframeDoc, {\r\n doc: iframeDoc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n });\r\n if (serializedIframeNode) {\r\n onIframeLoad(n, serializedIframeNode);\r\n }\r\n }\r\n }, iframeLoadTimeout);\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'link' &&\r\n serializedNode.attributes.rel === 'stylesheet') {\r\n onceStylesheetLoaded(n, function () {\r\n if (onStylesheetLoad) {\r\n var serializedLinkNode = serializeNodeWithId(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n });\r\n if (serializedLinkNode) {\r\n onStylesheetLoad(n, serializedLinkNode);\r\n }\r\n }\r\n }, stylesheetLoadTimeout);\r\n }\r\n return serializedNode;\r\n}\r\nfunction snapshot(n, options) {\r\n var _a = options || {}, _b = _a.mirror, mirror = _b === void 0 ? new Mirror() : _b, _c = _a.blockClass, blockClass = _c === void 0 ? 'rr-block' : _c, _d = _a.blockSelector, blockSelector = _d === void 0 ? null : _d, _e = _a.maskTextClass, maskTextClass = _e === void 0 ? 'rr-mask' : _e, _f = _a.maskTextSelector, maskTextSelector = _f === void 0 ? null : _f, _g = _a.inlineStylesheet, inlineStylesheet = _g === void 0 ? true : _g, _h = _a.inlineImages, inlineImages = _h === void 0 ? false : _h, _j = _a.recordCanvas, recordCanvas = _j === void 0 ? false : _j, _k = _a.maskAllInputs, maskAllInputs = _k === void 0 ? false : _k, maskTextFn = _a.maskTextFn, maskInputFn = _a.maskInputFn, _l = _a.slimDOM, slimDOM = _l === void 0 ? false : _l, dataURLOptions = _a.dataURLOptions, preserveWhiteSpace = _a.preserveWhiteSpace, onSerialize = _a.onSerialize, onIframeLoad = _a.onIframeLoad, iframeLoadTimeout = _a.iframeLoadTimeout, onStylesheetLoad = _a.onStylesheetLoad, stylesheetLoadTimeout = _a.stylesheetLoadTimeout, _m = _a.keepIframeSrcFn, keepIframeSrcFn = _m === void 0 ? function () { return false; } : _m;\r\n var maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true\r\n }\r\n : maskAllInputs === false\r\n ? {\r\n password: true\r\n }\r\n : maskAllInputs;\r\n var slimDOMOptions = slimDOM === true || slimDOM === 'all'\r\n ?\r\n {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaDescKeywords: slimDOM === 'all',\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaAuthorship: true,\r\n headMetaVerification: true\r\n }\r\n : slimDOM === false\r\n ? {}\r\n : slimDOM;\r\n return serializeNodeWithId(n, {\r\n doc: n,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: false\r\n });\r\n}\r\n\nvar commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\r\nfunction parse(css, options) {\r\n if (options === void 0) { options = {}; }\r\n var lineno = 1;\r\n var column = 1;\r\n function updatePosition(str) {\r\n var lines = str.match(/\\n/g);\r\n if (lines) {\r\n lineno += lines.length;\r\n }\r\n var i = str.lastIndexOf('\\n');\r\n column = i === -1 ? column + str.length : str.length - i;\r\n }\r\n function position() {\r\n var start = { line: lineno, column: column };\r\n return function (node) {\r\n node.position = new Position(start);\r\n whitespace();\r\n return node;\r\n };\r\n }\r\n var Position = (function () {\r\n function Position(start) {\r\n this.start = start;\r\n this.end = { line: lineno, column: column };\r\n this.source = options.source;\r\n }\r\n return Position;\r\n }());\r\n Position.prototype.content = css;\r\n var errorsList = [];\r\n function error(msg) {\r\n var err = new Error(\"\".concat(options.source || '', \":\").concat(lineno, \":\").concat(column, \": \").concat(msg));\r\n err.reason = msg;\r\n err.filename = options.source;\r\n err.line = lineno;\r\n err.column = column;\r\n err.source = css;\r\n if (options.silent) {\r\n errorsList.push(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n function stylesheet() {\r\n var rulesList = rules();\r\n return {\r\n type: 'stylesheet',\r\n stylesheet: {\r\n source: options.source,\r\n rules: rulesList,\r\n parsingErrors: errorsList\r\n }\r\n };\r\n }\r\n function open() {\r\n return match(/^{\\s*/);\r\n }\r\n function close() {\r\n return match(/^}/);\r\n }\r\n function rules() {\r\n var node;\r\n var rules = [];\r\n whitespace();\r\n comments(rules);\r\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\r\n if (node !== false) {\r\n rules.push(node);\r\n comments(rules);\r\n }\r\n }\r\n return rules;\r\n }\r\n function match(re) {\r\n var m = re.exec(css);\r\n if (!m) {\r\n return;\r\n }\r\n var str = m[0];\r\n updatePosition(str);\r\n css = css.slice(str.length);\r\n return m;\r\n }\r\n function whitespace() {\r\n match(/^\\s*/);\r\n }\r\n function comments(rules) {\r\n if (rules === void 0) { rules = []; }\r\n var c;\r\n while ((c = comment())) {\r\n if (c !== false) {\r\n rules.push(c);\r\n }\r\n c = comment();\r\n }\r\n return rules;\r\n }\r\n function comment() {\r\n var pos = position();\r\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\r\n return;\r\n }\r\n var i = 2;\r\n while ('' !== css.charAt(i) &&\r\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\r\n ++i;\r\n }\r\n i += 2;\r\n if ('' === css.charAt(i - 1)) {\r\n return error('End of comment missing');\r\n }\r\n var str = css.slice(2, i - 2);\r\n column += 2;\r\n updatePosition(str);\r\n css = css.slice(i);\r\n column += 2;\r\n return pos({\r\n type: 'comment',\r\n comment: str\r\n });\r\n }\r\n function selector() {\r\n var m = match(/^([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n return trim(m[0])\r\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\r\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, function (m) {\r\n return m.replace(/,/g, '\\u200C');\r\n })\r\n .split(/\\s*(?![^(]*\\)),\\s*/)\r\n .map(function (s) {\r\n return s.replace(/\\u200C/g, ',');\r\n });\r\n }\r\n function declaration() {\r\n var pos = position();\r\n var propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\r\n if (!propMatch) {\r\n return;\r\n }\r\n var prop = trim(propMatch[0]);\r\n if (!match(/^:\\s*/)) {\r\n return error(\"property missing ':'\");\r\n }\r\n var val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\r\n var ret = pos({\r\n type: 'declaration',\r\n property: prop.replace(commentre, ''),\r\n value: val ? trim(val[0]).replace(commentre, '') : ''\r\n });\r\n match(/^[;\\s]*/);\r\n return ret;\r\n }\r\n function declarations() {\r\n var decls = [];\r\n if (!open()) {\r\n return error(\"missing '{'\");\r\n }\r\n comments(decls);\r\n var decl;\r\n while ((decl = declaration())) {\r\n if (decl !== false) {\r\n decls.push(decl);\r\n comments(decls);\r\n }\r\n decl = declaration();\r\n }\r\n if (!close()) {\r\n return error(\"missing '}'\");\r\n }\r\n return decls;\r\n }\r\n function keyframe() {\r\n var m;\r\n var vals = [];\r\n var pos = position();\r\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\r\n vals.push(m[1]);\r\n match(/^,\\s*/);\r\n }\r\n if (!vals.length) {\r\n return;\r\n }\r\n return pos({\r\n type: 'keyframe',\r\n values: vals,\r\n declarations: declarations()\r\n });\r\n }\r\n function atkeyframes() {\r\n var pos = position();\r\n var m = match(/^@([-\\w]+)?keyframes\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n var vendor = m[1];\r\n m = match(/^([-\\w]+)\\s*/);\r\n if (!m) {\r\n return error('@keyframes missing name');\r\n }\r\n var name = m[1];\r\n if (!open()) {\r\n return error(\"@keyframes missing '{'\");\r\n }\r\n var frame;\r\n var frames = comments();\r\n while ((frame = keyframe())) {\r\n frames.push(frame);\r\n frames = frames.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@keyframes missing '}'\");\r\n }\r\n return pos({\r\n type: 'keyframes',\r\n name: name,\r\n vendor: vendor,\r\n keyframes: frames\r\n });\r\n }\r\n function atsupports() {\r\n var pos = position();\r\n var m = match(/^@supports *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var supports = trim(m[1]);\r\n if (!open()) {\r\n return error(\"@supports missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@supports missing '}'\");\r\n }\r\n return pos({\r\n type: 'supports',\r\n supports: supports,\r\n rules: style\r\n });\r\n }\r\n function athost() {\r\n var pos = position();\r\n var m = match(/^@host\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(\"@host missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@host missing '}'\");\r\n }\r\n return pos({\r\n type: 'host',\r\n rules: style\r\n });\r\n }\r\n function atmedia() {\r\n var pos = position();\r\n var m = match(/^@media *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var media = trim(m[1]);\r\n if (!open()) {\r\n return error(\"@media missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@media missing '}'\");\r\n }\r\n return pos({\r\n type: 'media',\r\n media: media,\r\n rules: style\r\n });\r\n }\r\n function atcustommedia() {\r\n var pos = position();\r\n var m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\r\n if (!m) {\r\n return;\r\n }\r\n return pos({\r\n type: 'custom-media',\r\n name: trim(m[1]),\r\n media: trim(m[2])\r\n });\r\n }\r\n function atpage() {\r\n var pos = position();\r\n var m = match(/^@page */);\r\n if (!m) {\r\n return;\r\n }\r\n var sel = selector() || [];\r\n if (!open()) {\r\n return error(\"@page missing '{'\");\r\n }\r\n var decls = comments();\r\n var decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@page missing '}'\");\r\n }\r\n return pos({\r\n type: 'page',\r\n selectors: sel,\r\n declarations: decls\r\n });\r\n }\r\n function atdocument() {\r\n var pos = position();\r\n var m = match(/^@([-\\w]+)?document *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var vendor = trim(m[1]);\r\n var doc = trim(m[2]);\r\n if (!open()) {\r\n return error(\"@document missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@document missing '}'\");\r\n }\r\n return pos({\r\n type: 'document',\r\n document: doc,\r\n vendor: vendor,\r\n rules: style\r\n });\r\n }\r\n function atfontface() {\r\n var pos = position();\r\n var m = match(/^@font-face\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(\"@font-face missing '{'\");\r\n }\r\n var decls = comments();\r\n var decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@font-face missing '}'\");\r\n }\r\n return pos({\r\n type: 'font-face',\r\n declarations: decls\r\n });\r\n }\r\n var atimport = _compileAtrule('import');\r\n var atcharset = _compileAtrule('charset');\r\n var atnamespace = _compileAtrule('namespace');\r\n function _compileAtrule(name) {\r\n var re = new RegExp('^@' + name + '\\\\s*([^;]+);');\r\n return function () {\r\n var pos = position();\r\n var m = match(re);\r\n if (!m) {\r\n return;\r\n }\r\n var ret = { type: name };\r\n ret[name] = m[1].trim();\r\n return pos(ret);\r\n };\r\n }\r\n function atrule() {\r\n if (css[0] !== '@') {\r\n return;\r\n }\r\n return (atkeyframes() ||\r\n atmedia() ||\r\n atcustommedia() ||\r\n atsupports() ||\r\n atimport() ||\r\n atcharset() ||\r\n atnamespace() ||\r\n atdocument() ||\r\n atpage() ||\r\n athost() ||\r\n atfontface());\r\n }\r\n function rule() {\r\n var pos = position();\r\n var sel = selector();\r\n if (!sel) {\r\n return error('selector missing');\r\n }\r\n comments();\r\n return pos({\r\n type: 'rule',\r\n selectors: sel,\r\n declarations: declarations()\r\n });\r\n }\r\n return addParent(stylesheet());\r\n}\r\nfunction trim(str) {\r\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\r\n}\r\nfunction addParent(obj, parent) {\r\n var isNode = obj && typeof obj.type === 'string';\r\n var childParent = isNode ? obj : parent;\r\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\r\n var k = _a[_i];\r\n var value = obj[k];\r\n if (Array.isArray(value)) {\r\n value.forEach(function (v) {\r\n addParent(v, childParent);\r\n });\r\n }\r\n else if (value && typeof value === 'object') {\r\n addParent(value, childParent);\r\n }\r\n }\r\n if (isNode) {\r\n Object.defineProperty(obj, 'parent', {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: parent || null\r\n });\r\n }\r\n return obj;\r\n}\n\nvar tagMap = {\r\n script: 'noscript',\r\n altglyph: 'altGlyph',\r\n altglyphdef: 'altGlyphDef',\r\n altglyphitem: 'altGlyphItem',\r\n animatecolor: 'animateColor',\r\n animatemotion: 'animateMotion',\r\n animatetransform: 'animateTransform',\r\n clippath: 'clipPath',\r\n feblend: 'feBlend',\r\n fecolormatrix: 'feColorMatrix',\r\n fecomponenttransfer: 'feComponentTransfer',\r\n fecomposite: 'feComposite',\r\n feconvolvematrix: 'feConvolveMatrix',\r\n fediffuselighting: 'feDiffuseLighting',\r\n fedisplacementmap: 'feDisplacementMap',\r\n fedistantlight: 'feDistantLight',\r\n fedropshadow: 'feDropShadow',\r\n feflood: 'feFlood',\r\n fefunca: 'feFuncA',\r\n fefuncb: 'feFuncB',\r\n fefuncg: 'feFuncG',\r\n fefuncr: 'feFuncR',\r\n fegaussianblur: 'feGaussianBlur',\r\n feimage: 'feImage',\r\n femerge: 'feMerge',\r\n femergenode: 'feMergeNode',\r\n femorphology: 'feMorphology',\r\n feoffset: 'feOffset',\r\n fepointlight: 'fePointLight',\r\n fespecularlighting: 'feSpecularLighting',\r\n fespotlight: 'feSpotLight',\r\n fetile: 'feTile',\r\n feturbulence: 'feTurbulence',\r\n foreignobject: 'foreignObject',\r\n glyphref: 'glyphRef',\r\n lineargradient: 'linearGradient',\r\n radialgradient: 'radialGradient'\r\n};\r\nfunction getTagName(n) {\r\n var tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\r\n if (tagName === 'link' && n.attributes._cssText) {\r\n tagName = 'style';\r\n }\r\n return tagName;\r\n}\r\nfunction escapeRegExp(str) {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\nvar HOVER_SELECTOR = /([^\\\\]):hover/;\r\nvar HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\r\nfunction addHoverClass(cssText, cache) {\r\n var cachedStyle = cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.get(cssText);\r\n if (cachedStyle)\r\n return cachedStyle;\r\n var ast = parse(cssText, {\r\n silent: true\r\n });\r\n if (!ast.stylesheet) {\r\n return cssText;\r\n }\r\n var selectors = [];\r\n ast.stylesheet.rules.forEach(function (rule) {\r\n if ('selectors' in rule) {\r\n (rule.selectors || []).forEach(function (selector) {\r\n if (HOVER_SELECTOR.test(selector)) {\r\n selectors.push(selector);\r\n }\r\n });\r\n }\r\n });\r\n if (selectors.length === 0) {\r\n return cssText;\r\n }\r\n var selectorMatcher = new RegExp(selectors\r\n .filter(function (selector, index) { return selectors.indexOf(selector) === index; })\r\n .sort(function (a, b) { return b.length - a.length; })\r\n .map(function (selector) {\r\n return escapeRegExp(selector);\r\n })\r\n .join('|'), 'g');\r\n var result = cssText.replace(selectorMatcher, function (selector) {\r\n var newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\r\n return \"\".concat(selector, \", \").concat(newSelector);\r\n });\r\n cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.set(cssText, result);\r\n return result;\r\n}\r\nfunction createCache() {\r\n var stylesWithHoverClass = new Map();\r\n return {\r\n stylesWithHoverClass: stylesWithHoverClass\r\n };\r\n}\r\nfunction buildNode(n, options) {\r\n var doc = options.doc, hackCss = options.hackCss, cache = options.cache;\r\n switch (n.type) {\r\n case NodeType.Document:\r\n return doc.implementation.createDocument(null, '', null);\r\n case NodeType.DocumentType:\r\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\r\n case NodeType.Element: {\r\n var tagName = getTagName(n);\r\n var node_1;\r\n if (n.isSVG) {\r\n node_1 = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\r\n }\r\n else {\r\n node_1 = doc.createElement(tagName);\r\n }\r\n var specialAttributes = {};\r\n for (var name_1 in n.attributes) {\r\n if (!Object.prototype.hasOwnProperty.call(n.attributes, name_1)) {\r\n continue;\r\n }\r\n var value = n.attributes[name_1];\r\n if (tagName === 'option' &&\r\n name_1 === 'selected' &&\r\n value === false) {\r\n continue;\r\n }\r\n if (value === true)\r\n value = '';\r\n if (name_1.startsWith('rr_')) {\r\n specialAttributes[name_1] = value;\r\n continue;\r\n }\r\n var isTextarea = tagName === 'textarea' && name_1 === 'value';\r\n var isRemoteOrDynamicCss = tagName === 'style' && name_1 === '_cssText';\r\n if (isRemoteOrDynamicCss && hackCss && typeof value === 'string') {\r\n value = addHoverClass(value, cache);\r\n }\r\n if ((isTextarea || isRemoteOrDynamicCss) && typeof value === 'string') {\r\n var child = doc.createTextNode(value);\r\n for (var _i = 0, _a = Array.from(node_1.childNodes); _i < _a.length; _i++) {\r\n var c = _a[_i];\r\n if (c.nodeType === node_1.TEXT_NODE) {\r\n node_1.removeChild(c);\r\n }\r\n }\r\n node_1.appendChild(child);\r\n continue;\r\n }\r\n try {\r\n if (n.isSVG && name_1 === 'xlink:href') {\r\n node_1.setAttributeNS('http://www.w3.org/1999/xlink', name_1, value.toString());\r\n }\r\n else if (name_1 === 'onload' ||\r\n name_1 === 'onclick' ||\r\n name_1.substring(0, 7) === 'onmouse') {\r\n node_1.setAttribute('_' + name_1, value.toString());\r\n }\r\n else if (tagName === 'meta' &&\r\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\r\n name_1 === 'content') {\r\n node_1.setAttribute('csp-content', value.toString());\r\n continue;\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'preload' &&\r\n n.attributes.as === 'script') {\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'prefetch' &&\r\n typeof n.attributes.href === 'string' &&\r\n n.attributes.href.endsWith('.js')) {\r\n }\r\n else if (tagName === 'img' &&\r\n n.attributes.srcset &&\r\n n.attributes.rr_dataURL) {\r\n node_1.setAttribute('rrweb-original-srcset', n.attributes.srcset);\r\n }\r\n else {\r\n node_1.setAttribute(name_1, value.toString());\r\n }\r\n }\r\n catch (error) {\r\n }\r\n }\r\n var _loop_1 = function (name_2) {\r\n var value = specialAttributes[name_2];\r\n if (tagName === 'canvas' && name_2 === 'rr_dataURL') {\r\n var image_1 = document.createElement('img');\r\n image_1.onload = function () {\r\n var ctx = node_1.getContext('2d');\r\n if (ctx) {\r\n ctx.drawImage(image_1, 0, 0, image_1.width, image_1.height);\r\n }\r\n };\r\n image_1.src = value.toString();\r\n if (node_1.RRNodeType)\r\n node_1.rr_dataURL = value.toString();\r\n }\r\n else if (tagName === 'img' && name_2 === 'rr_dataURL') {\r\n var image = node_1;\r\n if (!image.currentSrc.startsWith('data:')) {\r\n image.setAttribute('rrweb-original-src', n.attributes.src);\r\n image.src = value.toString();\r\n }\r\n }\r\n if (name_2 === 'rr_width') {\r\n node_1.style.width = value.toString();\r\n }\r\n else if (name_2 === 'rr_height') {\r\n node_1.style.height = value.toString();\r\n }\r\n else if (name_2 === 'rr_mediaCurrentTime' &&\r\n typeof value === 'number') {\r\n node_1.currentTime = value;\r\n }\r\n else if (name_2 === 'rr_mediaState') {\r\n switch (value) {\r\n case 'played':\r\n node_1\r\n .play()[\"catch\"](function (e) { return console.warn('media playback error', e); });\r\n break;\r\n case 'paused':\r\n node_1.pause();\r\n break;\r\n }\r\n }\r\n };\r\n for (var name_2 in specialAttributes) {\r\n _loop_1(name_2);\r\n }\r\n if (n.isShadowHost) {\r\n if (!node_1.shadowRoot) {\r\n node_1.attachShadow({ mode: 'open' });\r\n }\r\n else {\r\n while (node_1.shadowRoot.firstChild) {\r\n node_1.shadowRoot.removeChild(node_1.shadowRoot.firstChild);\r\n }\r\n }\r\n }\r\n return node_1;\r\n }\r\n case NodeType.Text:\r\n return doc.createTextNode(n.isStyle && hackCss\r\n ? addHoverClass(n.textContent, cache)\r\n : n.textContent);\r\n case NodeType.CDATA:\r\n return doc.createCDATASection(n.textContent);\r\n case NodeType.Comment:\r\n return doc.createComment(n.textContent);\r\n default:\r\n return null;\r\n }\r\n}\r\nfunction buildNodeWithSN(n, options) {\r\n var doc = options.doc, mirror = options.mirror, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.hackCss, hackCss = _b === void 0 ? true : _b, afterAppend = options.afterAppend, cache = options.cache;\r\n var node = buildNode(n, { doc: doc, hackCss: hackCss, cache: cache });\r\n if (!node) {\r\n return null;\r\n }\r\n if (n.rootId && mirror.getNode(n.rootId) !== doc) {\r\n mirror.replace(n.rootId, doc);\r\n }\r\n if (n.type === NodeType.Document) {\r\n doc.close();\r\n doc.open();\r\n if (n.compatMode === 'BackCompat' &&\r\n n.childNodes &&\r\n n.childNodes[0].type !== NodeType.DocumentType) {\r\n if (n.childNodes[0].type === NodeType.Element &&\r\n 'xmlns' in n.childNodes[0].attributes &&\r\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\r\n }\r\n else {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\r\n }\r\n }\r\n node = doc;\r\n }\r\n mirror.add(node, n);\r\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\r\n !skipChild) {\r\n for (var _i = 0, _c = n.childNodes; _i < _c.length; _i++) {\r\n var childN = _c[_i];\r\n var childNode = buildNodeWithSN(childN, {\r\n doc: doc,\r\n mirror: mirror,\r\n skipChild: false,\r\n hackCss: hackCss,\r\n afterAppend: afterAppend,\r\n cache: cache\r\n });\r\n if (!childNode) {\r\n console.warn('Failed to rebuild', childN);\r\n continue;\r\n }\r\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\r\n node.shadowRoot.appendChild(childNode);\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n if (afterAppend) {\r\n afterAppend(childNode, childN.id);\r\n }\r\n }\r\n }\r\n return node;\r\n}\r\nfunction visit(mirror, onVisit) {\r\n function walk(node) {\r\n onVisit(node);\r\n }\r\n for (var _i = 0, _a = mirror.getIds(); _i < _a.length; _i++) {\r\n var id = _a[_i];\r\n if (mirror.has(id)) {\r\n walk(mirror.getNode(id));\r\n }\r\n }\r\n}\r\nfunction handleScroll(node, mirror) {\r\n var n = mirror.getMeta(node);\r\n if ((n === null || n === void 0 ? void 0 : n.type) !== NodeType.Element) {\r\n return;\r\n }\r\n var el = node;\r\n for (var name_3 in n.attributes) {\r\n if (!(Object.prototype.hasOwnProperty.call(n.attributes, name_3) &&\r\n name_3.startsWith('rr_'))) {\r\n continue;\r\n }\r\n var value = n.attributes[name_3];\r\n if (name_3 === 'rr_scrollLeft') {\r\n el.scrollLeft = value;\r\n }\r\n if (name_3 === 'rr_scrollTop') {\r\n el.scrollTop = value;\r\n }\r\n }\r\n}\r\nfunction rebuild(n, options) {\r\n var doc = options.doc, onVisit = options.onVisit, _a = options.hackCss, hackCss = _a === void 0 ? true : _a, afterAppend = options.afterAppend, cache = options.cache, _b = options.mirror, mirror = _b === void 0 ? new Mirror() : _b;\r\n var node = buildNodeWithSN(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n skipChild: false,\r\n hackCss: hackCss,\r\n afterAppend: afterAppend,\r\n cache: cache\r\n });\r\n visit(mirror, function (visitedNode) {\r\n if (onVisit) {\r\n onVisit(visitedNode);\r\n }\r\n handleScroll(visitedNode, mirror);\r\n });\r\n return node;\r\n}\n\nexport { IGNORED_NODE, Mirror, NodeType, addHoverClass, buildNodeWithSN, classMatchesRegex, createCache, createMirror, genId, getCssRuleString, getCssRulesString, is2DCanvasBlank, isCSSImportRule, isElement, isNativeShadowDom, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, snapshot, transformAttribute };\n","import { classMatchesRegex, IGNORED_NODE, isShadowRoot } from '../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nfunction on(type, fn, target = document) {\r\n const options = { capture: true, passive: true };\r\n target.addEventListener(type, fn, options);\r\n return () => target.removeEventListener(type, fn, options);\r\n}\r\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\r\n '\\r\\n' +\r\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\r\n '\\r\\n' +\r\n 'or you can use record.mirror to access the mirror instance during recording.';\r\nlet _mirror = {\r\n map: {},\r\n getId() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return -1;\r\n },\r\n getNode() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return null;\r\n },\r\n removeNodeFromMap() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n has() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return false;\r\n },\r\n reset() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n};\r\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\r\n _mirror = new Proxy(_mirror, {\r\n get(target, prop, receiver) {\r\n if (prop === 'map') {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n }\r\n return Reflect.get(target, prop, receiver);\r\n },\r\n });\r\n}\r\nfunction throttle(func, wait, options = {}) {\r\n let timeout = null;\r\n let previous = 0;\r\n return function (...args) {\r\n const now = Date.now();\r\n if (!previous && options.leading === false) {\r\n previous = now;\r\n }\r\n const remaining = wait - (now - previous);\r\n const context = this;\r\n if (remaining <= 0 || remaining > wait) {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n previous = now;\r\n func.apply(context, args);\r\n }\r\n else if (!timeout && options.trailing !== false) {\r\n timeout = setTimeout(() => {\r\n previous = options.leading === false ? 0 : Date.now();\r\n timeout = null;\r\n func.apply(context, args);\r\n }, remaining);\r\n }\r\n };\r\n}\r\nfunction hookSetter(target, key, d, isRevoked, win = window) {\r\n const original = win.Object.getOwnPropertyDescriptor(target, key);\r\n win.Object.defineProperty(target, key, isRevoked\r\n ? d\r\n : {\r\n set(value) {\r\n setTimeout(() => {\r\n d.set.call(this, value);\r\n }, 0);\r\n if (original && original.set) {\r\n original.set.call(this, value);\r\n }\r\n },\r\n });\r\n return () => hookSetter(target, key, original || {}, true);\r\n}\r\nfunction patch(source, name, replacement) {\r\n try {\r\n if (!(name in source)) {\r\n return () => {\r\n };\r\n }\r\n const original = source[name];\r\n const wrapped = replacement(original);\r\n if (typeof wrapped === 'function') {\r\n wrapped.prototype = wrapped.prototype || {};\r\n Object.defineProperties(wrapped, {\r\n __rrweb_original__: {\r\n enumerable: false,\r\n value: original,\r\n },\r\n });\r\n }\r\n source[name] = wrapped;\r\n return () => {\r\n source[name] = original;\r\n };\r\n }\r\n catch (_a) {\r\n return () => {\r\n };\r\n }\r\n}\r\nfunction getWindowHeight() {\r\n return (window.innerHeight ||\r\n (document.documentElement && document.documentElement.clientHeight) ||\r\n (document.body && document.body.clientHeight));\r\n}\r\nfunction getWindowWidth() {\r\n return (window.innerWidth ||\r\n (document.documentElement && document.documentElement.clientWidth) ||\r\n (document.body && document.body.clientWidth));\r\n}\r\nfunction isBlocked(node, blockClass, blockSelector, checkAncestors) {\r\n if (!node) {\r\n return false;\r\n }\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (!el)\r\n return false;\r\n if (typeof blockClass === 'string') {\r\n if (el.classList.contains(blockClass))\r\n return true;\r\n if (checkAncestors && el.closest('.' + blockClass) !== null)\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, blockClass, checkAncestors))\r\n return true;\r\n }\r\n if (blockSelector) {\r\n if (node.matches(blockSelector))\r\n return true;\r\n if (checkAncestors && el.closest(blockSelector) !== null)\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction isSerialized(n, mirror) {\r\n return mirror.getId(n) !== -1;\r\n}\r\nfunction isIgnored(n, mirror) {\r\n return mirror.getId(n) === IGNORED_NODE;\r\n}\r\nfunction isAncestorRemoved(target, mirror) {\r\n if (isShadowRoot(target)) {\r\n return false;\r\n }\r\n const id = mirror.getId(target);\r\n if (!mirror.has(id)) {\r\n return true;\r\n }\r\n if (target.parentNode &&\r\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n if (!target.parentNode) {\r\n return true;\r\n }\r\n return isAncestorRemoved(target.parentNode, mirror);\r\n}\r\nfunction isTouchEvent(event) {\r\n return Boolean(event.changedTouches);\r\n}\r\nfunction polyfill(win = window) {\r\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\r\n win.NodeList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\r\n win.DOMTokenList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if (!Node.prototype.contains) {\r\n Node.prototype.contains = (...args) => {\r\n let node = args[0];\r\n if (!(0 in args)) {\r\n throw new TypeError('1 argument is required');\r\n }\r\n do {\r\n if (this === node) {\r\n return true;\r\n }\r\n } while ((node = node && node.parentNode));\r\n return false;\r\n };\r\n }\r\n}\r\nfunction queueToResolveTrees(queue) {\r\n const queueNodeMap = {};\r\n const putIntoMap = (m, parent) => {\r\n const nodeInTree = {\r\n value: m,\r\n parent,\r\n children: [],\r\n };\r\n queueNodeMap[m.node.id] = nodeInTree;\r\n return nodeInTree;\r\n };\r\n const queueNodeTrees = [];\r\n for (const mutation of queue) {\r\n const { nextId, parentId } = mutation;\r\n if (nextId && nextId in queueNodeMap) {\r\n const nextInTree = queueNodeMap[nextId];\r\n if (nextInTree.parent) {\r\n const idx = nextInTree.parent.children.indexOf(nextInTree);\r\n nextInTree.parent.children.splice(idx, 0, putIntoMap(mutation, nextInTree.parent));\r\n }\r\n else {\r\n const idx = queueNodeTrees.indexOf(nextInTree);\r\n queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\r\n }\r\n continue;\r\n }\r\n if (parentId in queueNodeMap) {\r\n const parentInTree = queueNodeMap[parentId];\r\n parentInTree.children.push(putIntoMap(mutation, parentInTree));\r\n continue;\r\n }\r\n queueNodeTrees.push(putIntoMap(mutation, null));\r\n }\r\n return queueNodeTrees;\r\n}\r\nfunction iterateResolveTree(tree, cb) {\r\n cb(tree.value);\r\n for (let i = tree.children.length - 1; i >= 0; i--) {\r\n iterateResolveTree(tree.children[i], cb);\r\n }\r\n}\r\nfunction isSerializedIframe(n, mirror) {\r\n return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\r\n}\r\nfunction isSerializedStylesheet(n, mirror) {\r\n return Boolean(n.nodeName === 'LINK' &&\r\n n.nodeType === n.ELEMENT_NODE &&\r\n n.getAttribute &&\r\n n.getAttribute('rel') === 'stylesheet' &&\r\n mirror.getMeta(n));\r\n}\r\nfunction getBaseDimension(node, rootIframe) {\r\n var _a, _b;\r\n const frameElement = (_b = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) === null || _b === void 0 ? void 0 : _b.frameElement;\r\n if (!frameElement || frameElement === rootIframe) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n relativeScale: 1,\r\n absoluteScale: 1,\r\n };\r\n }\r\n const frameDimension = frameElement.getBoundingClientRect();\r\n const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\r\n const relativeScale = frameDimension.height / frameElement.clientHeight;\r\n return {\r\n x: frameDimension.x * frameBaseDimension.relativeScale +\r\n frameBaseDimension.x,\r\n y: frameDimension.y * frameBaseDimension.relativeScale +\r\n frameBaseDimension.y,\r\n relativeScale,\r\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\r\n };\r\n}\r\nfunction hasShadowRoot(n) {\r\n return Boolean(n === null || n === void 0 ? void 0 : n.shadowRoot);\r\n}\r\nfunction getNestedRule(rules, position) {\r\n const rule = rules[position[0]];\r\n if (position.length === 1) {\r\n return rule;\r\n }\r\n else {\r\n return getNestedRule(rule.cssRules[position[1]].cssRules, position.slice(2));\r\n }\r\n}\r\nfunction getPositionsAndIndex(nestedIndex) {\r\n const positions = [...nestedIndex];\r\n const index = positions.pop();\r\n return { positions, index };\r\n}\r\nfunction uniqueTextMutations(mutations) {\r\n const idSet = new Set();\r\n const uniqueMutations = [];\r\n for (let i = mutations.length; i--;) {\r\n const mutation = mutations[i];\r\n if (!idSet.has(mutation.id)) {\r\n uniqueMutations.push(mutation);\r\n idSet.add(mutation.id);\r\n }\r\n }\r\n return uniqueMutations;\r\n}\r\nclass StyleSheetMirror {\r\n constructor() {\r\n this.id = 1;\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n }\r\n getId(stylesheet) {\r\n var _a;\r\n return (_a = this.styleIDMap.get(stylesheet)) !== null && _a !== void 0 ? _a : -1;\r\n }\r\n has(stylesheet) {\r\n return this.styleIDMap.has(stylesheet);\r\n }\r\n add(stylesheet, id) {\r\n if (this.has(stylesheet))\r\n return this.getId(stylesheet);\r\n let newId;\r\n if (id === undefined) {\r\n newId = this.id++;\r\n }\r\n else\r\n newId = id;\r\n this.styleIDMap.set(stylesheet, newId);\r\n this.idStyleMap.set(newId, stylesheet);\r\n return newId;\r\n }\r\n getStyle(id) {\r\n return this.idStyleMap.get(id) || null;\r\n }\r\n reset() {\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n this.id = 1;\r\n }\r\n generateId() {\r\n return this.id++;\r\n }\r\n}\n\nexport { StyleSheetMirror, _mirror, getBaseDimension, getNestedRule, getPositionsAndIndex, getWindowHeight, getWindowWidth, hasShadowRoot, hookSetter, isAncestorRemoved, isBlocked, isIgnored, isSerialized, isSerializedIframe, isSerializedStylesheet, isTouchEvent, iterateResolveTree, on, patch, polyfill, queueToResolveTrees, throttle, uniqueTextMutations };\n","var EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\n\nexport { CanvasContext, EventType, IncrementalSource, MouseInteractions, ReplayerEvents };\n","import { isShadowRoot, isNativeShadowDom, maskInputValue, transformAttribute, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { isIgnored, isBlocked, isSerialized, isAncestorRemoved, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\n\nfunction isNodeInLinkedList(n) {\r\n return '__ln' in n;\r\n}\r\nclass DoubleLinkedList {\r\n constructor() {\r\n this.length = 0;\r\n this.head = null;\r\n }\r\n get(position) {\r\n if (position >= this.length) {\r\n throw new Error('Position outside of list range');\r\n }\r\n let current = this.head;\r\n for (let index = 0; index < position; index++) {\r\n current = (current === null || current === void 0 ? void 0 : current.next) || null;\r\n }\r\n return current;\r\n }\r\n addNode(n) {\r\n const node = {\r\n value: n,\r\n previous: null,\r\n next: null,\r\n };\r\n n.__ln = node;\r\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\r\n const current = n.previousSibling.__ln.next;\r\n node.next = current;\r\n node.previous = n.previousSibling.__ln;\r\n n.previousSibling.__ln.next = node;\r\n if (current) {\r\n current.previous = node;\r\n }\r\n }\r\n else if (n.nextSibling &&\r\n isNodeInLinkedList(n.nextSibling) &&\r\n n.nextSibling.__ln.previous) {\r\n const current = n.nextSibling.__ln.previous;\r\n node.previous = current;\r\n node.next = n.nextSibling.__ln;\r\n n.nextSibling.__ln.previous = node;\r\n if (current) {\r\n current.next = node;\r\n }\r\n }\r\n else {\r\n if (this.head) {\r\n this.head.previous = node;\r\n }\r\n node.next = this.head;\r\n this.head = node;\r\n }\r\n this.length++;\r\n }\r\n removeNode(n) {\r\n const current = n.__ln;\r\n if (!this.head) {\r\n return;\r\n }\r\n if (!current.previous) {\r\n this.head = current.next;\r\n if (this.head) {\r\n this.head.previous = null;\r\n }\r\n }\r\n else {\r\n current.previous.next = current.next;\r\n if (current.next) {\r\n current.next.previous = current.previous;\r\n }\r\n }\r\n if (n.__ln) {\r\n delete n.__ln;\r\n }\r\n this.length--;\r\n }\r\n}\r\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\r\nclass MutationBuffer {\r\n constructor() {\r\n this.frozen = false;\r\n this.locked = false;\r\n this.texts = [];\r\n this.attributes = [];\r\n this.removes = [];\r\n this.mapRemoves = [];\r\n this.movedMap = {};\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.processMutations = (mutations) => {\r\n mutations.forEach(this.processMutation);\r\n this.emit();\r\n };\r\n this.emit = () => {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const adds = [];\r\n const addList = new DoubleLinkedList();\r\n const getNextId = (n) => {\r\n let ns = n;\r\n let nextId = IGNORED_NODE;\r\n while (nextId === IGNORED_NODE) {\r\n ns = ns && ns.nextSibling;\r\n nextId = ns && this.mirror.getId(ns);\r\n }\r\n return nextId;\r\n };\r\n const pushAdd = (n) => {\r\n var _a, _b, _c, _d;\r\n let shadowHost = null;\r\n if (((_b = (_a = n.getRootNode) === null || _a === void 0 ? void 0 : _a.call(n)) === null || _b === void 0 ? void 0 : _b.nodeType) === Node.DOCUMENT_FRAGMENT_NODE &&\r\n n.getRootNode().host)\r\n shadowHost = n.getRootNode().host;\r\n let rootShadowHost = shadowHost;\r\n while (((_d = (_c = rootShadowHost === null || rootShadowHost === void 0 ? void 0 : rootShadowHost.getRootNode) === null || _c === void 0 ? void 0 : _c.call(rootShadowHost)) === null || _d === void 0 ? void 0 : _d.nodeType) ===\r\n Node.DOCUMENT_FRAGMENT_NODE &&\r\n rootShadowHost.getRootNode().host)\r\n rootShadowHost = rootShadowHost.getRootNode().host;\r\n const notInDoc = !this.doc.contains(n) &&\r\n (!rootShadowHost || !this.doc.contains(rootShadowHost));\r\n if (!n.parentNode || notInDoc) {\r\n return;\r\n }\r\n const parentId = isShadowRoot(n.parentNode)\r\n ? this.mirror.getId(shadowHost)\r\n : this.mirror.getId(n.parentNode);\r\n const nextId = getNextId(n);\r\n if (parentId === -1 || nextId === -1) {\r\n return addList.addNode(n);\r\n }\r\n const sn = serializeNodeWithId(n, {\r\n doc: this.doc,\r\n mirror: this.mirror,\r\n blockClass: this.blockClass,\r\n blockSelector: this.blockSelector,\r\n maskTextClass: this.maskTextClass,\r\n maskTextSelector: this.maskTextSelector,\r\n skipChild: true,\r\n newlyAddedElement: true,\r\n inlineStylesheet: this.inlineStylesheet,\r\n maskInputOptions: this.maskInputOptions,\r\n maskTextFn: this.maskTextFn,\r\n maskInputFn: this.maskInputFn,\r\n slimDOMOptions: this.slimDOMOptions,\r\n dataURLOptions: this.dataURLOptions,\r\n recordCanvas: this.recordCanvas,\r\n inlineImages: this.inlineImages,\r\n onSerialize: (currentN) => {\r\n if (isSerializedIframe(currentN, this.mirror)) {\r\n this.iframeManager.addIframe(currentN);\r\n }\r\n if (isSerializedStylesheet(currentN, this.mirror)) {\r\n this.stylesheetManager.trackLinkElement(currentN);\r\n }\r\n if (hasShadowRoot(n)) {\r\n this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n this.iframeManager.attachIframe(iframe, childSn);\r\n this.shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (link, childSn) => {\r\n this.stylesheetManager.attachLinkElement(link, childSn);\r\n },\r\n });\r\n if (sn) {\r\n adds.push({\r\n parentId,\r\n nextId,\r\n node: sn,\r\n });\r\n }\r\n };\r\n while (this.mapRemoves.length) {\r\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\r\n }\r\n for (const n of Array.from(this.movedSet.values())) {\r\n if (isParentRemoved(this.removes, n, this.mirror) &&\r\n !this.movedSet.has(n.parentNode)) {\r\n continue;\r\n }\r\n pushAdd(n);\r\n }\r\n for (const n of Array.from(this.addedSet.values())) {\r\n if (!isAncestorInSet(this.droppedSet, n) &&\r\n !isParentRemoved(this.removes, n, this.mirror)) {\r\n pushAdd(n);\r\n }\r\n else if (isAncestorInSet(this.movedSet, n)) {\r\n pushAdd(n);\r\n }\r\n else {\r\n this.droppedSet.add(n);\r\n }\r\n }\r\n let candidate = null;\r\n while (addList.length) {\r\n let node = null;\r\n if (candidate) {\r\n const parentId = this.mirror.getId(candidate.value.parentNode);\r\n const nextId = getNextId(candidate.value);\r\n if (parentId !== -1 && nextId !== -1) {\r\n node = candidate;\r\n }\r\n }\r\n if (!node) {\r\n for (let index = addList.length - 1; index >= 0; index--) {\r\n const _node = addList.get(index);\r\n if (_node) {\r\n const parentId = this.mirror.getId(_node.value.parentNode);\r\n const nextId = getNextId(_node.value);\r\n if (nextId === -1)\r\n continue;\r\n else if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n else {\r\n const unhandledNode = _node.value;\r\n if (unhandledNode.parentNode &&\r\n unhandledNode.parentNode.nodeType ===\r\n Node.DOCUMENT_FRAGMENT_NODE) {\r\n const shadowHost = unhandledNode.parentNode\r\n .host;\r\n const parentId = this.mirror.getId(shadowHost);\r\n if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!node) {\r\n while (addList.head) {\r\n addList.removeNode(addList.head.value);\r\n }\r\n break;\r\n }\r\n candidate = node.previous;\r\n addList.removeNode(node.value);\r\n pushAdd(node.value);\r\n }\r\n const payload = {\r\n texts: this.texts\r\n .map((text) => ({\r\n id: this.mirror.getId(text.node),\r\n value: text.value,\r\n }))\r\n .filter((text) => this.mirror.has(text.id)),\r\n attributes: this.attributes\r\n .map((attribute) => ({\r\n id: this.mirror.getId(attribute.node),\r\n attributes: attribute.attributes,\r\n }))\r\n .filter((attribute) => this.mirror.has(attribute.id)),\r\n removes: this.removes,\r\n adds,\r\n };\r\n if (!payload.texts.length &&\r\n !payload.attributes.length &&\r\n !payload.removes.length &&\r\n !payload.adds.length) {\r\n return;\r\n }\r\n this.texts = [];\r\n this.attributes = [];\r\n this.removes = [];\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.movedMap = {};\r\n this.mutationCb(payload);\r\n };\r\n this.processMutation = (m) => {\r\n if (isIgnored(m.target, this.mirror)) {\r\n return;\r\n }\r\n switch (m.type) {\r\n case 'characterData': {\r\n const value = m.target.textContent;\r\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) &&\r\n value !== m.oldValue) {\r\n this.texts.push({\r\n value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector) && value\r\n ? this.maskTextFn\r\n ? this.maskTextFn(value)\r\n : value.replace(/[\\S]/g, '*')\r\n : value,\r\n node: m.target,\r\n });\r\n }\r\n break;\r\n }\r\n case 'attributes': {\r\n const target = m.target;\r\n let value = m.target.getAttribute(m.attributeName);\r\n if (m.attributeName === 'value') {\r\n value = maskInputValue({\r\n maskInputOptions: this.maskInputOptions,\r\n tagName: m.target.tagName,\r\n type: m.target.getAttribute('type'),\r\n value,\r\n maskInputFn: this.maskInputFn,\r\n });\r\n }\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n value === m.oldValue) {\r\n return;\r\n }\r\n let item = this.attributes.find((a) => a.node === m.target);\r\n if (target.tagName === 'IFRAME' &&\r\n m.attributeName === 'src' &&\r\n !this.keepIframeSrcFn(value)) {\r\n if (!target.contentDocument) {\r\n m.attributeName = 'rr_src';\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n if (!item) {\r\n item = {\r\n node: m.target,\r\n attributes: {},\r\n };\r\n this.attributes.push(item);\r\n }\r\n if (m.attributeName === 'style') {\r\n const old = this.doc.createElement('span');\r\n if (m.oldValue) {\r\n old.setAttribute('style', m.oldValue);\r\n }\r\n if (item.attributes.style === undefined ||\r\n item.attributes.style === null) {\r\n item.attributes.style = {};\r\n }\r\n const styleObj = item.attributes.style;\r\n for (const pname of Array.from(target.style)) {\r\n const newValue = target.style.getPropertyValue(pname);\r\n const newPriority = target.style.getPropertyPriority(pname);\r\n if (newValue !== old.style.getPropertyValue(pname) ||\r\n newPriority !== old.style.getPropertyPriority(pname)) {\r\n if (newPriority === '') {\r\n styleObj[pname] = newValue;\r\n }\r\n else {\r\n styleObj[pname] = [newValue, newPriority];\r\n }\r\n }\r\n }\r\n for (const pname of Array.from(old.style)) {\r\n if (target.style.getPropertyValue(pname) === '') {\r\n styleObj[pname] = false;\r\n }\r\n }\r\n }\r\n else {\r\n item.attributes[m.attributeName] = transformAttribute(this.doc, target.tagName, m.attributeName, value);\r\n }\r\n break;\r\n }\r\n case 'childList': {\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\r\n return;\r\n m.addedNodes.forEach((n) => this.genAdds(n, m.target));\r\n m.removedNodes.forEach((n) => {\r\n const nodeId = this.mirror.getId(n);\r\n const parentId = isShadowRoot(m.target)\r\n ? this.mirror.getId(m.target.host)\r\n : this.mirror.getId(m.target);\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n isIgnored(n, this.mirror) ||\r\n !isSerialized(n, this.mirror)) {\r\n return;\r\n }\r\n if (this.addedSet.has(n)) {\r\n deepDelete(this.addedSet, n);\r\n this.droppedSet.add(n);\r\n }\r\n else if (this.addedSet.has(m.target) && nodeId === -1) ;\r\n else if (isAncestorRemoved(m.target, this.mirror)) ;\r\n else if (this.movedSet.has(n) &&\r\n this.movedMap[moveKey(nodeId, parentId)]) {\r\n deepDelete(this.movedSet, n);\r\n }\r\n else {\r\n this.removes.push({\r\n parentId,\r\n id: nodeId,\r\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target)\r\n ? true\r\n : undefined,\r\n });\r\n }\r\n this.mapRemoves.push(n);\r\n });\r\n break;\r\n }\r\n }\r\n };\r\n this.genAdds = (n, target) => {\r\n if (this.mirror.hasNode(n)) {\r\n if (isIgnored(n, this.mirror)) {\r\n return;\r\n }\r\n this.movedSet.add(n);\r\n let targetId = null;\r\n if (target && this.mirror.hasNode(target)) {\r\n targetId = this.mirror.getId(target);\r\n }\r\n if (targetId && targetId !== -1) {\r\n this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\r\n }\r\n }\r\n else {\r\n this.addedSet.add(n);\r\n this.droppedSet.delete(n);\r\n }\r\n if (!isBlocked(n, this.blockClass, this.blockSelector, false))\r\n n.childNodes.forEach((childN) => this.genAdds(childN));\r\n };\r\n }\r\n init(options) {\r\n [\r\n 'mutationCb',\r\n 'blockClass',\r\n 'blockSelector',\r\n 'maskTextClass',\r\n 'maskTextSelector',\r\n 'inlineStylesheet',\r\n 'maskInputOptions',\r\n 'maskTextFn',\r\n 'maskInputFn',\r\n 'keepIframeSrcFn',\r\n 'recordCanvas',\r\n 'inlineImages',\r\n 'slimDOMOptions',\r\n 'dataURLOptions',\r\n 'doc',\r\n 'mirror',\r\n 'iframeManager',\r\n 'stylesheetManager',\r\n 'shadowDomManager',\r\n 'canvasManager',\r\n ].forEach((key) => {\r\n this[key] = options[key];\r\n });\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n this.canvasManager.freeze();\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n this.canvasManager.unfreeze();\r\n this.emit();\r\n }\r\n isFrozen() {\r\n return this.frozen;\r\n }\r\n lock() {\r\n this.locked = true;\r\n this.canvasManager.lock();\r\n }\r\n unlock() {\r\n this.locked = false;\r\n this.canvasManager.unlock();\r\n this.emit();\r\n }\r\n reset() {\r\n this.shadowDomManager.reset();\r\n this.canvasManager.reset();\r\n }\r\n}\r\nfunction deepDelete(addsSet, n) {\r\n addsSet.delete(n);\r\n n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\r\n}\r\nfunction isParentRemoved(removes, n, mirror) {\r\n if (removes.length === 0)\r\n return false;\r\n return _isParentRemoved(removes, n, mirror);\r\n}\r\nfunction _isParentRemoved(removes, n, mirror) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n const parentId = mirror.getId(parentNode);\r\n if (removes.some((r) => r.id === parentId)) {\r\n return true;\r\n }\r\n return _isParentRemoved(removes, parentNode, mirror);\r\n}\r\nfunction isAncestorInSet(set, n) {\r\n if (set.size === 0)\r\n return false;\r\n return _isAncestorInSet(set, n);\r\n}\r\nfunction _isAncestorInSet(set, n) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n if (set.has(parentNode)) {\r\n return true;\r\n }\r\n return _isAncestorInSet(set, parentNode);\r\n}\n\nexport { MutationBuffer as default };\n","import { maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { on, throttle, isBlocked, getWindowHeight, getWindowWidth, hookSetter, patch, isTouchEvent } from '../utils.js';\nimport { MouseInteractions, IncrementalSource } from '../../../types/dist/types.js';\nimport MutationBuffer from './mutation.js';\n\nconst mutationBuffers = [];\r\nconst isCSSGroupingRuleSupported = typeof CSSGroupingRule !== 'undefined';\r\nconst isCSSMediaRuleSupported = typeof CSSMediaRule !== 'undefined';\r\nconst isCSSSupportsRuleSupported = typeof CSSSupportsRule !== 'undefined';\r\nconst isCSSConditionRuleSupported = typeof CSSConditionRule !== 'undefined';\r\nfunction getEventTarget(event) {\r\n try {\r\n if ('composedPath' in event) {\r\n const path = event.composedPath();\r\n if (path.length) {\r\n return path[0];\r\n }\r\n }\r\n else if ('path' in event && event.path.length) {\r\n return event.path[0];\r\n }\r\n return event.target;\r\n }\r\n catch (_a) {\r\n return event.target;\r\n }\r\n}\r\nfunction initMutationObserver(options, rootEl) {\r\n var _a, _b;\r\n const mutationBuffer = new MutationBuffer();\r\n mutationBuffers.push(mutationBuffer);\r\n mutationBuffer.init(options);\r\n let mutationObserverCtor = window.MutationObserver ||\r\n window.__rrMutationObserver;\r\n const angularZoneSymbol = (_b = (_a = window === null || window === void 0 ? void 0 : window.Zone) === null || _a === void 0 ? void 0 : _a.__symbol__) === null || _b === void 0 ? void 0 : _b.call(_a, 'MutationObserver');\r\n if (angularZoneSymbol &&\r\n window[angularZoneSymbol]) {\r\n mutationObserverCtor = window[angularZoneSymbol];\r\n }\r\n const observer = new mutationObserverCtor(mutationBuffer.processMutations.bind(mutationBuffer));\r\n observer.observe(rootEl, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n characterData: true,\r\n characterDataOldValue: true,\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\r\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\r\n if (sampling.mousemove === false) {\r\n return () => {\r\n };\r\n }\r\n const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\r\n const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\r\n ? sampling.mousemoveCallback\r\n : 500;\r\n let positions = [];\r\n let timeBaseline;\r\n const wrappedCb = throttle((source) => {\r\n const totalOffset = Date.now() - timeBaseline;\r\n mousemoveCb(positions.map((p) => {\r\n p.timeOffset -= totalOffset;\r\n return p;\r\n }), source);\r\n positions = [];\r\n timeBaseline = null;\r\n }, callbackThreshold);\r\n const updatePosition = throttle((evt) => {\r\n const target = getEventTarget(evt);\r\n const { clientX, clientY } = isTouchEvent(evt)\r\n ? evt.changedTouches[0]\r\n : evt;\r\n if (!timeBaseline) {\r\n timeBaseline = Date.now();\r\n }\r\n positions.push({\r\n x: clientX,\r\n y: clientY,\r\n id: mirror.getId(target),\r\n timeOffset: Date.now() - timeBaseline,\r\n });\r\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\r\n ? IncrementalSource.Drag\r\n : evt instanceof MouseEvent\r\n ? IncrementalSource.MouseMove\r\n : IncrementalSource.TouchMove);\r\n }, threshold, {\r\n trailing: false,\r\n });\r\n const handlers = [\r\n on('mousemove', updatePosition, doc),\r\n on('touchmove', updatePosition, doc),\r\n on('drag', updatePosition, doc),\r\n ];\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n if (sampling.mouseInteraction === false) {\r\n return () => {\r\n };\r\n }\r\n const disableMap = sampling.mouseInteraction === true ||\r\n sampling.mouseInteraction === undefined\r\n ? {}\r\n : sampling.mouseInteraction;\r\n const handlers = [];\r\n const getHandler = (eventKey) => {\r\n return (event) => {\r\n const target = getEventTarget(event);\r\n if (isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const e = isTouchEvent(event) ? event.changedTouches[0] : event;\r\n if (!e) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n const { clientX, clientY } = e;\r\n mouseInteractionCb({\r\n type: MouseInteractions[eventKey],\r\n id,\r\n x: clientX,\r\n y: clientY,\r\n });\r\n };\r\n };\r\n Object.keys(MouseInteractions)\r\n .filter((key) => Number.isNaN(Number(key)) &&\r\n !key.endsWith('_Departed') &&\r\n disableMap[key] !== false)\r\n .forEach((eventKey) => {\r\n const eventName = eventKey.toLowerCase();\r\n const handler = getHandler(eventKey);\r\n handlers.push(on(eventName, handler, doc));\r\n });\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n const updatePosition = throttle((evt) => {\r\n const target = getEventTarget(evt);\r\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n if (target === doc) {\r\n const scrollEl = (doc.scrollingElement || doc.documentElement);\r\n scrollCb({\r\n id,\r\n x: scrollEl.scrollLeft,\r\n y: scrollEl.scrollTop,\r\n });\r\n }\r\n else {\r\n scrollCb({\r\n id,\r\n x: target.scrollLeft,\r\n y: target.scrollTop,\r\n });\r\n }\r\n }, sampling.scroll || 100);\r\n return on('scroll', updatePosition, doc);\r\n}\r\nfunction initViewportResizeObserver({ viewportResizeCb, }) {\r\n let lastH = -1;\r\n let lastW = -1;\r\n const updateDimension = throttle(() => {\r\n const height = getWindowHeight();\r\n const width = getWindowWidth();\r\n if (lastH !== height || lastW !== width) {\r\n viewportResizeCb({\r\n width: Number(width),\r\n height: Number(height),\r\n });\r\n lastH = height;\r\n lastW = width;\r\n }\r\n }, 200);\r\n return on('resize', updateDimension, window);\r\n}\r\nfunction wrapEventWithUserTriggeredFlag(v, enable) {\r\n const value = Object.assign({}, v);\r\n if (!enable)\r\n delete value.userTriggered;\r\n return value;\r\n}\r\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\r\nconst lastInputValueMap = new WeakMap();\r\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, ignoreClass, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, }) {\r\n function eventHandler(event) {\r\n let target = getEventTarget(event);\r\n const userTriggered = event.isTrusted;\r\n if (target && target.tagName === 'OPTION')\r\n target = target.parentElement;\r\n if (!target ||\r\n !target.tagName ||\r\n INPUT_TAGS.indexOf(target.tagName) < 0 ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const type = target.type;\r\n if (target.classList.contains(ignoreClass)) {\r\n return;\r\n }\r\n let text = target.value;\r\n let isChecked = false;\r\n if (type === 'radio' || type === 'checkbox') {\r\n isChecked = target.checked;\r\n }\r\n else if (maskInputOptions[target.tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n text = maskInputValue({\r\n maskInputOptions,\r\n tagName: target.tagName,\r\n type,\r\n value: text,\r\n maskInputFn,\r\n });\r\n }\r\n cbWithDedup(target, wrapEventWithUserTriggeredFlag({ text, isChecked, userTriggered }, userTriggeredOnInput));\r\n const name = target.name;\r\n if (type === 'radio' && name && isChecked) {\r\n doc\r\n .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\r\n .forEach((el) => {\r\n if (el !== target) {\r\n cbWithDedup(el, wrapEventWithUserTriggeredFlag({\r\n text: el.value,\r\n isChecked: !isChecked,\r\n userTriggered: false,\r\n }, userTriggeredOnInput));\r\n }\r\n });\r\n }\r\n }\r\n function cbWithDedup(target, v) {\r\n const lastInputValue = lastInputValueMap.get(target);\r\n if (!lastInputValue ||\r\n lastInputValue.text !== v.text ||\r\n lastInputValue.isChecked !== v.isChecked) {\r\n lastInputValueMap.set(target, v);\r\n const id = mirror.getId(target);\r\n inputCb(Object.assign(Object.assign({}, v), { id }));\r\n }\r\n }\r\n const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\r\n const handlers = events.map((eventName) => on(eventName, eventHandler, doc));\r\n const currentWindow = doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n }\r\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, 'value');\r\n const hookProperties = [\r\n [currentWindow.HTMLInputElement.prototype, 'value'],\r\n [currentWindow.HTMLInputElement.prototype, 'checked'],\r\n [currentWindow.HTMLSelectElement.prototype, 'value'],\r\n [currentWindow.HTMLTextAreaElement.prototype, 'value'],\r\n [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\r\n [currentWindow.HTMLOptionElement.prototype, 'selected'],\r\n ];\r\n if (propertyDescriptor && propertyDescriptor.set) {\r\n handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\r\n set() {\r\n eventHandler({ target: this });\r\n },\r\n }, false, currentWindow)));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction getNestedCSSRulePositions(rule) {\r\n const positions = [];\r\n function recurse(childRule, pos) {\r\n if ((isCSSGroupingRuleSupported &&\r\n childRule.parentRule instanceof CSSGroupingRule) ||\r\n (isCSSMediaRuleSupported &&\r\n childRule.parentRule instanceof CSSMediaRule) ||\r\n (isCSSSupportsRuleSupported &&\r\n childRule.parentRule instanceof CSSSupportsRule) ||\r\n (isCSSConditionRuleSupported &&\r\n childRule.parentRule instanceof CSSConditionRule)) {\r\n const rules = Array.from(childRule.parentRule.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n else if (childRule.parentStyleSheet) {\r\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n return pos;\r\n }\r\n return recurse(rule, positions);\r\n}\r\nfunction getIdAndStyleId(sheet, mirror, styleMirror) {\r\n let id, styleId;\r\n if (!sheet)\r\n return {};\r\n if (sheet.ownerNode)\r\n id = mirror.getId(sheet.ownerNode);\r\n else\r\n styleId = styleMirror.getId(sheet);\r\n return {\r\n styleId,\r\n id,\r\n };\r\n}\r\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror, stylesheetManager }, { win }) {\r\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\r\n win.CSSStyleSheet.prototype.insertRule = function (rule, index) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [{ rule, index }],\r\n });\r\n }\r\n return insertRule.apply(this, [rule, index]);\r\n };\r\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\r\n win.CSSStyleSheet.prototype.deleteRule = function (index) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [{ index }],\r\n });\r\n }\r\n return deleteRule.apply(this, [index]);\r\n };\r\n let replace;\r\n if (win.CSSStyleSheet.prototype.replace) {\r\n replace = win.CSSStyleSheet.prototype.replace;\r\n win.CSSStyleSheet.prototype.replace = function (text) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replace: text,\r\n });\r\n }\r\n return replace.apply(this, [text]);\r\n };\r\n }\r\n let replaceSync;\r\n if (win.CSSStyleSheet.prototype.replaceSync) {\r\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\r\n win.CSSStyleSheet.prototype.replaceSync = function (text) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replaceSync: text,\r\n });\r\n }\r\n return replaceSync.apply(this, [text]);\r\n };\r\n }\r\n const supportedNestedCSSRuleTypes = {};\r\n if (isCSSGroupingRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\r\n }\r\n else {\r\n if (isCSSMediaRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\r\n }\r\n if (isCSSConditionRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\r\n }\r\n if (isCSSSupportsRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\r\n }\r\n }\r\n const unmodifiedFunctions = {};\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n unmodifiedFunctions[typeKey] = {\r\n insertRule: type.prototype.insertRule,\r\n deleteRule: type.prototype.deleteRule,\r\n };\r\n type.prototype.insertRule = function (rule, index) {\r\n const { id, styleId } = getIdAndStyleId(this.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [\r\n {\r\n rule,\r\n index: [\r\n ...getNestedCSSRulePositions(this),\r\n index || 0,\r\n ],\r\n },\r\n ],\r\n });\r\n }\r\n return unmodifiedFunctions[typeKey].insertRule.apply(this, [rule, index]);\r\n };\r\n type.prototype.deleteRule = function (index) {\r\n const { id, styleId } = getIdAndStyleId(this.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [\r\n { index: [...getNestedCSSRulePositions(this), index] },\r\n ],\r\n });\r\n }\r\n return unmodifiedFunctions[typeKey].deleteRule.apply(this, [index]);\r\n };\r\n });\r\n return () => {\r\n win.CSSStyleSheet.prototype.insertRule = insertRule;\r\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\r\n replace && (win.CSSStyleSheet.prototype.replace = replace);\r\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\r\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\r\n });\r\n };\r\n}\r\nfunction initAdoptedStyleSheetObserver({ mirror, stylesheetManager, }, host) {\r\n var _a, _b, _c;\r\n let hostId = null;\r\n if (host.nodeName === '#document')\r\n hostId = mirror.getId(host);\r\n else\r\n hostId = mirror.getId(host.host);\r\n const patchTarget = host.nodeName === '#document'\r\n ? (_a = host.defaultView) === null || _a === void 0 ? void 0 : _a.Document\r\n : (_c = (_b = host.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView) === null || _c === void 0 ? void 0 : _c.ShadowRoot;\r\n const originalPropertyDescriptor = Object.getOwnPropertyDescriptor(patchTarget === null || patchTarget === void 0 ? void 0 : patchTarget.prototype, 'adoptedStyleSheets');\r\n if (hostId === null ||\r\n hostId === -1 ||\r\n !patchTarget ||\r\n !originalPropertyDescriptor)\r\n return () => {\r\n };\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get() {\r\n var _a;\r\n return (_a = originalPropertyDescriptor.get) === null || _a === void 0 ? void 0 : _a.call(this);\r\n },\r\n set(sheets) {\r\n var _a;\r\n const result = (_a = originalPropertyDescriptor.set) === null || _a === void 0 ? void 0 : _a.call(this, sheets);\r\n if (hostId !== null && hostId !== -1) {\r\n try {\r\n stylesheetManager.adoptStyleSheets(sheets, hostId);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n return result;\r\n },\r\n });\r\n return () => {\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get: originalPropertyDescriptor.get,\r\n set: originalPropertyDescriptor.set,\r\n });\r\n };\r\n}\r\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror, ignoreCSSAttributes, stylesheetManager, }, { win }) {\r\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\r\n win.CSSStyleDeclaration.prototype.setProperty = function (property, value, priority) {\r\n var _a;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return setProperty.apply(this, [property, value, priority]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n set: {\r\n property,\r\n value,\r\n priority,\r\n },\r\n index: getNestedCSSRulePositions(this.parentRule),\r\n });\r\n }\r\n return setProperty.apply(this, [property, value, priority]);\r\n };\r\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = function (property) {\r\n var _a;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return removeProperty.apply(this, [property]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n remove: {\r\n property,\r\n },\r\n index: getNestedCSSRulePositions(this.parentRule),\r\n });\r\n }\r\n return removeProperty.apply(this, [property]);\r\n };\r\n return () => {\r\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\r\n };\r\n}\r\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, mirror, sampling, }) {\r\n const handler = (type) => throttle((event) => {\r\n const target = getEventTarget(event);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const { currentTime, volume, muted, playbackRate, } = target;\r\n mediaInteractionCb({\r\n type,\r\n id: mirror.getId(target),\r\n currentTime,\r\n volume,\r\n muted,\r\n playbackRate,\r\n });\r\n }, sampling.media || 500);\r\n const handlers = [\r\n on('play', handler(0)),\r\n on('pause', handler(1)),\r\n on('seeked', handler(2)),\r\n on('volumechange', handler(3)),\r\n on('ratechange', handler(4)),\r\n ];\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initFontObserver({ fontCb, doc }) {\r\n const win = doc.defaultView;\r\n if (!win) {\r\n return () => {\r\n };\r\n }\r\n const handlers = [];\r\n const fontMap = new WeakMap();\r\n const originalFontFace = win.FontFace;\r\n win.FontFace = function FontFace(family, source, descriptors) {\r\n const fontFace = new originalFontFace(family, source, descriptors);\r\n fontMap.set(fontFace, {\r\n family,\r\n buffer: typeof source !== 'string',\r\n descriptors,\r\n fontSource: typeof source === 'string'\r\n ? source\r\n : JSON.stringify(Array.from(new Uint8Array(source))),\r\n });\r\n return fontFace;\r\n };\r\n const restoreHandler = patch(doc.fonts, 'add', function (original) {\r\n return function (fontFace) {\r\n setTimeout(() => {\r\n const p = fontMap.get(fontFace);\r\n if (p) {\r\n fontCb(p);\r\n fontMap.delete(fontFace);\r\n }\r\n }, 0);\r\n return original.apply(this, [fontFace]);\r\n };\r\n });\r\n handlers.push(() => {\r\n win.FontFace = originalFontFace;\r\n });\r\n handlers.push(restoreHandler);\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initSelectionObserver(param) {\r\n const { doc, mirror, blockClass, blockSelector, selectionCb } = param;\r\n let collapsed = true;\r\n const updateSelection = () => {\r\n const selection = doc.getSelection();\r\n if (!selection || (collapsed && (selection === null || selection === void 0 ? void 0 : selection.isCollapsed)))\r\n return;\r\n collapsed = selection.isCollapsed || false;\r\n const ranges = [];\r\n const count = selection.rangeCount || 0;\r\n for (let i = 0; i < count; i++) {\r\n const range = selection.getRangeAt(i);\r\n const { startContainer, startOffset, endContainer, endOffset } = range;\r\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) ||\r\n isBlocked(endContainer, blockClass, blockSelector, true);\r\n if (blocked)\r\n continue;\r\n ranges.push({\r\n start: mirror.getId(startContainer),\r\n startOffset,\r\n end: mirror.getId(endContainer),\r\n endOffset,\r\n });\r\n }\r\n selectionCb({ ranges });\r\n };\r\n updateSelection();\r\n return on('selectionchange', updateSelection);\r\n}\r\nfunction mergeHooks(o, hooks) {\r\n const { mutationCb, mousemoveCb, mouseInteractionCb, scrollCb, viewportResizeCb, inputCb, mediaInteractionCb, styleSheetRuleCb, styleDeclarationCb, canvasMutationCb, fontCb, selectionCb, } = o;\r\n o.mutationCb = (...p) => {\r\n if (hooks.mutation) {\r\n hooks.mutation(...p);\r\n }\r\n mutationCb(...p);\r\n };\r\n o.mousemoveCb = (...p) => {\r\n if (hooks.mousemove) {\r\n hooks.mousemove(...p);\r\n }\r\n mousemoveCb(...p);\r\n };\r\n o.mouseInteractionCb = (...p) => {\r\n if (hooks.mouseInteraction) {\r\n hooks.mouseInteraction(...p);\r\n }\r\n mouseInteractionCb(...p);\r\n };\r\n o.scrollCb = (...p) => {\r\n if (hooks.scroll) {\r\n hooks.scroll(...p);\r\n }\r\n scrollCb(...p);\r\n };\r\n o.viewportResizeCb = (...p) => {\r\n if (hooks.viewportResize) {\r\n hooks.viewportResize(...p);\r\n }\r\n viewportResizeCb(...p);\r\n };\r\n o.inputCb = (...p) => {\r\n if (hooks.input) {\r\n hooks.input(...p);\r\n }\r\n inputCb(...p);\r\n };\r\n o.mediaInteractionCb = (...p) => {\r\n if (hooks.mediaInteaction) {\r\n hooks.mediaInteaction(...p);\r\n }\r\n mediaInteractionCb(...p);\r\n };\r\n o.styleSheetRuleCb = (...p) => {\r\n if (hooks.styleSheetRule) {\r\n hooks.styleSheetRule(...p);\r\n }\r\n styleSheetRuleCb(...p);\r\n };\r\n o.styleDeclarationCb = (...p) => {\r\n if (hooks.styleDeclaration) {\r\n hooks.styleDeclaration(...p);\r\n }\r\n styleDeclarationCb(...p);\r\n };\r\n o.canvasMutationCb = (...p) => {\r\n if (hooks.canvasMutation) {\r\n hooks.canvasMutation(...p);\r\n }\r\n canvasMutationCb(...p);\r\n };\r\n o.fontCb = (...p) => {\r\n if (hooks.font) {\r\n hooks.font(...p);\r\n }\r\n fontCb(...p);\r\n };\r\n o.selectionCb = (...p) => {\r\n if (hooks.selection) {\r\n hooks.selection(...p);\r\n }\r\n selectionCb(...p);\r\n };\r\n}\r\nfunction initObservers(o, hooks = {}) {\r\n const currentWindow = o.doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n };\r\n }\r\n mergeHooks(o, hooks);\r\n const mutationObserver = initMutationObserver(o, o.doc);\r\n const mousemoveHandler = initMoveObserver(o);\r\n const mouseInteractionHandler = initMouseInteractionObserver(o);\r\n const scrollHandler = initScrollObserver(o);\r\n const viewportResizeHandler = initViewportResizeObserver(o);\r\n const inputHandler = initInputObserver(o);\r\n const mediaInteractionHandler = initMediaInteractionObserver(o);\r\n const styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\r\n const adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\r\n const styleDeclarationObserver = initStyleDeclarationObserver(o, {\r\n win: currentWindow,\r\n });\r\n const fontObserver = o.collectFonts\r\n ? initFontObserver(o)\r\n : () => {\r\n };\r\n const selectionObserver = initSelectionObserver(o);\r\n const pluginHandlers = [];\r\n for (const plugin of o.plugins) {\r\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\r\n }\r\n return () => {\r\n mutationBuffers.forEach((b) => b.reset());\r\n mutationObserver.disconnect();\r\n mousemoveHandler();\r\n mouseInteractionHandler();\r\n scrollHandler();\r\n viewportResizeHandler();\r\n inputHandler();\r\n mediaInteractionHandler();\r\n styleSheetObserver();\r\n adoptedStyleSheetObserver();\r\n styleDeclarationObserver();\r\n fontObserver();\r\n selectionObserver();\r\n pluginHandlers.forEach((h) => h());\r\n };\r\n}\n\nexport { INPUT_TAGS, initAdoptedStyleSheetObserver, initMutationObserver, initObservers, initScrollObserver, mutationBuffers };\n","class CrossOriginIframeMirror {\r\n constructor(generateIdFn) {\r\n this.generateIdFn = generateIdFn;\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n }\r\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\r\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\r\n let id = idToRemoteIdMap.get(remoteId);\r\n if (!id) {\r\n id = this.generateIdFn();\r\n idToRemoteIdMap.set(remoteId, id);\r\n remoteIdToIdMap.set(id, remoteId);\r\n }\r\n return id;\r\n }\r\n getIds(iframe, remoteId) {\r\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return remoteId.map((id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap));\r\n }\r\n getRemoteId(iframe, id, map) {\r\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\r\n if (typeof id !== 'number')\r\n return id;\r\n const remoteId = remoteIdToIdMap.get(id);\r\n if (!remoteId)\r\n return -1;\r\n return remoteId;\r\n }\r\n getRemoteIds(iframe, ids) {\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\r\n }\r\n reset(iframe) {\r\n if (!iframe) {\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n return;\r\n }\r\n this.iframeIdToRemoteIdMap.delete(iframe);\r\n this.iframeRemoteIdToIdMap.delete(iframe);\r\n }\r\n getIdToRemoteIdMap(iframe) {\r\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\r\n if (!idToRemoteIdMap) {\r\n idToRemoteIdMap = new Map();\r\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\r\n }\r\n return idToRemoteIdMap;\r\n }\r\n getRemoteIdToIdMap(iframe) {\r\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\r\n if (!remoteIdToIdMap) {\r\n remoteIdToIdMap = new Map();\r\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\r\n }\r\n return remoteIdToIdMap;\r\n }\r\n}\n\nexport { CrossOriginIframeMirror as default };\n","import { genId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport CrossOriginIframeMirror from './cross-origin-iframe-mirror.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\n\nclass IframeManager {\r\n constructor(options) {\r\n this.iframes = new WeakMap();\r\n this.crossOriginIframeMap = new WeakMap();\r\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\r\n this.mutationCb = options.mutationCb;\r\n this.wrappedEmit = options.wrappedEmit;\r\n this.stylesheetManager = options.stylesheetManager;\r\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\r\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\r\n this.mirror = options.mirror;\r\n if (this.recordCrossOriginIframes) {\r\n window.addEventListener('message', this.handleMessage.bind(this));\r\n }\r\n }\r\n addIframe(iframeEl) {\r\n this.iframes.set(iframeEl, true);\r\n if (iframeEl.contentWindow)\r\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\r\n }\r\n addLoadListener(cb) {\r\n this.loadListener = cb;\r\n }\r\n attachIframe(iframeEl, childSn) {\r\n var _a;\r\n this.mutationCb({\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: childSn,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n });\r\n (_a = this.loadListener) === null || _a === void 0 ? void 0 : _a.call(this, iframeEl);\r\n if (iframeEl.contentDocument &&\r\n iframeEl.contentDocument.adoptedStyleSheets &&\r\n iframeEl.contentDocument.adoptedStyleSheets.length > 0)\r\n this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\r\n }\r\n handleMessage(message) {\r\n if (message.data.type === 'rrweb') {\r\n const iframeSourceWindow = message.source;\r\n if (!iframeSourceWindow)\r\n return;\r\n const iframeEl = this.crossOriginIframeMap.get(message.source);\r\n if (!iframeEl)\r\n return;\r\n const transformedEvent = this.transformCrossOriginEvent(iframeEl, message.data.event);\r\n if (transformedEvent)\r\n this.wrappedEmit(transformedEvent, message.data.isCheckout);\r\n }\r\n }\r\n transformCrossOriginEvent(iframeEl, e) {\r\n var _a;\r\n switch (e.type) {\r\n case EventType.FullSnapshot: {\r\n this.crossOriginIframeMirror.reset(iframeEl);\r\n this.crossOriginIframeStyleMirror.reset(iframeEl);\r\n this.replaceIdOnNode(e.data.node, iframeEl);\r\n return {\r\n timestamp: e.timestamp,\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Mutation,\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: e.data.node,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n },\r\n };\r\n }\r\n case EventType.Meta:\r\n case EventType.Load:\r\n case EventType.DomContentLoaded: {\r\n return false;\r\n }\r\n case EventType.Plugin: {\r\n return e;\r\n }\r\n case EventType.Custom: {\r\n this.replaceIds(e.data.payload, iframeEl, ['id', 'parentId', 'previousId', 'nextId']);\r\n return e;\r\n }\r\n case EventType.IncrementalSnapshot: {\r\n switch (e.data.source) {\r\n case IncrementalSource.Mutation: {\r\n e.data.adds.forEach((n) => {\r\n this.replaceIds(n, iframeEl, [\r\n 'parentId',\r\n 'nextId',\r\n 'previousId',\r\n ]);\r\n this.replaceIdOnNode(n.node, iframeEl);\r\n });\r\n e.data.removes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['parentId', 'id']);\r\n });\r\n e.data.attributes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n e.data.texts.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.Drag:\r\n case IncrementalSource.TouchMove:\r\n case IncrementalSource.MouseMove: {\r\n e.data.positions.forEach((p) => {\r\n this.replaceIds(p, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.ViewportResize: {\r\n return false;\r\n }\r\n case IncrementalSource.MediaInteraction:\r\n case IncrementalSource.MouseInteraction:\r\n case IncrementalSource.Scroll:\r\n case IncrementalSource.CanvasMutation:\r\n case IncrementalSource.Input: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n return e;\r\n }\r\n case IncrementalSource.StyleSheetRule:\r\n case IncrementalSource.StyleDeclaration: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleId']);\r\n return e;\r\n }\r\n case IncrementalSource.Font: {\r\n return e;\r\n }\r\n case IncrementalSource.Selection: {\r\n e.data.ranges.forEach((range) => {\r\n this.replaceIds(range, iframeEl, ['start', 'end']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.AdoptedStyleSheet: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\r\n (_a = e.data.styles) === null || _a === void 0 ? void 0 : _a.forEach((style) => {\r\n this.replaceStyleIds(style, iframeEl, ['styleId']);\r\n });\r\n return e;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n replace(iframeMirror, obj, iframeEl, keys) {\r\n for (const key of keys) {\r\n if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number')\r\n continue;\r\n if (Array.isArray(obj[key])) {\r\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\r\n }\r\n else {\r\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\r\n }\r\n }\r\n return obj;\r\n }\r\n replaceIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\r\n }\r\n replaceStyleIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\r\n }\r\n replaceIdOnNode(node, iframeEl) {\r\n this.replaceIds(node, iframeEl, ['id']);\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.replaceIdOnNode(child, iframeEl);\r\n });\r\n }\r\n }\r\n}\n\nexport { IframeManager };\n","import { initMutationObserver, initScrollObserver, initAdoptedStyleSheetObserver } from './observer.js';\nimport { patch } from '../utils.js';\nimport { isNativeShadowDom } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nclass ShadowDomManager {\r\n constructor(options) {\r\n this.shadowDoms = new WeakSet();\r\n this.restorePatches = [];\r\n this.mutationCb = options.mutationCb;\r\n this.scrollCb = options.scrollCb;\r\n this.bypassOptions = options.bypassOptions;\r\n this.mirror = options.mirror;\r\n const manager = this;\r\n this.restorePatches.push(patch(Element.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot)\r\n manager.addShadowRoot(this.shadowRoot, this.ownerDocument);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n addShadowRoot(shadowRoot, doc) {\r\n if (!isNativeShadowDom(shadowRoot))\r\n return;\r\n if (this.shadowDoms.has(shadowRoot))\r\n return;\r\n this.shadowDoms.add(shadowRoot);\r\n initMutationObserver(Object.assign(Object.assign({}, this.bypassOptions), { doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot);\r\n initScrollObserver(Object.assign(Object.assign({}, this.bypassOptions), { scrollCb: this.scrollCb, doc: shadowRoot, mirror: this.mirror }));\r\n setTimeout(() => {\r\n if (shadowRoot.adoptedStyleSheets &&\r\n shadowRoot.adoptedStyleSheets.length > 0)\r\n this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot.adoptedStyleSheets, this.mirror.getId(shadowRoot.host));\r\n initAdoptedStyleSheetObserver({\r\n mirror: this.mirror,\r\n stylesheetManager: this.bypassOptions.stylesheetManager,\r\n }, shadowRoot);\r\n }, 0);\r\n }\r\n observeAttachShadow(iframeElement) {\r\n if (iframeElement.contentWindow) {\r\n const manager = this;\r\n this.restorePatches.push(patch(iframeElement.contentWindow.HTMLElement.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot)\r\n manager.addShadowRoot(this.shadowRoot, iframeElement.contentDocument);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n }\r\n reset() {\r\n this.restorePatches.forEach((restorePatch) => restorePatch());\r\n this.shadowDoms = new WeakSet();\r\n }\r\n}\n\nexport { ShadowDomManager };\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nexport { __awaiter, __rest };\n","/*\n * base64-arraybuffer 1.0.1 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2021 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n","import { encode } from './../../../../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nconst canvasVarMap = new Map();\r\nfunction variableListFor(ctx, ctor) {\r\n let contextMap = canvasVarMap.get(ctx);\r\n if (!contextMap) {\r\n contextMap = new Map();\r\n canvasVarMap.set(ctx, contextMap);\r\n }\r\n if (!contextMap.has(ctor)) {\r\n contextMap.set(ctor, []);\r\n }\r\n return contextMap.get(ctor);\r\n}\r\nconst saveWebGLVar = (value, win, ctx) => {\r\n if (!value ||\r\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\r\n return;\r\n const name = value.constructor.name;\r\n const list = variableListFor(ctx, name);\r\n let index = list.indexOf(value);\r\n if (index === -1) {\r\n index = list.length;\r\n list.push(value);\r\n }\r\n return index;\r\n};\r\nfunction serializeArg(value, win, ctx) {\r\n if (value instanceof Array) {\r\n return value.map((arg) => serializeArg(arg, win, ctx));\r\n }\r\n else if (value === null) {\r\n return value;\r\n }\r\n else if (value instanceof Float32Array ||\r\n value instanceof Float64Array ||\r\n value instanceof Int32Array ||\r\n value instanceof Uint32Array ||\r\n value instanceof Uint8Array ||\r\n value instanceof Uint16Array ||\r\n value instanceof Int16Array ||\r\n value instanceof Int8Array ||\r\n value instanceof Uint8ClampedArray) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [Object.values(value)],\r\n };\r\n }\r\n else if (value instanceof ArrayBuffer) {\r\n const name = value.constructor.name;\r\n const base64 = encode(value);\r\n return {\r\n rr_type: name,\r\n base64,\r\n };\r\n }\r\n else if (value instanceof DataView) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [\r\n serializeArg(value.buffer, win, ctx),\r\n value.byteOffset,\r\n value.byteLength,\r\n ],\r\n };\r\n }\r\n else if (value instanceof HTMLImageElement) {\r\n const name = value.constructor.name;\r\n const { src } = value;\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof HTMLCanvasElement) {\r\n const name = 'HTMLImageElement';\r\n const src = value.toDataURL();\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof ImageData) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\r\n };\r\n }\r\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\r\n const name = value.constructor.name;\r\n const index = saveWebGLVar(value, win, ctx);\r\n return {\r\n rr_type: name,\r\n index: index,\r\n };\r\n }\r\n return value;\r\n}\r\nconst serializeArgs = (args, win, ctx) => {\r\n return [...args].map((arg) => serializeArg(arg, win, ctx));\r\n};\r\nconst isInstanceOfWebGLObject = (value, win) => {\r\n const webGLConstructorNames = [\r\n 'WebGLActiveInfo',\r\n 'WebGLBuffer',\r\n 'WebGLFramebuffer',\r\n 'WebGLProgram',\r\n 'WebGLRenderbuffer',\r\n 'WebGLShader',\r\n 'WebGLShaderPrecisionFormat',\r\n 'WebGLTexture',\r\n 'WebGLUniformLocation',\r\n 'WebGLVertexArrayObject',\r\n 'WebGLVertexArrayObjectOES',\r\n ];\r\n const supportedWebGLConstructorNames = webGLConstructorNames.filter((name) => typeof win[name] === 'function');\r\n return Boolean(supportedWebGLConstructorNames.find((name) => value instanceof win[name]));\r\n};\n\nexport { isInstanceOfWebGLObject, saveWebGLVar, serializeArg, serializeArgs, variableListFor };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { serializeArgs } from './serialize-args.js';\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\r\n const handlers = [];\r\n const props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\r\n for (const prop of props2D) {\r\n try {\r\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\r\n return function (...args) {\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n setTimeout(() => {\r\n const recordArgs = serializeArgs([...args], win, this);\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: recordArgs,\r\n });\r\n }, 0);\r\n }\r\n return original.apply(this, args);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvas2DMutationObserver as default };\n","import { patch, isBlocked } from '../../../utils.js';\n\nfunction initCanvasContextObserver(win, blockClass, blockSelector) {\r\n const handlers = [];\r\n try {\r\n const restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\r\n return function (contextType, ...args) {\r\n if (!isBlocked(this, blockClass, blockSelector, true)) {\r\n if (!('__context' in this))\r\n this.__context = contextType;\r\n }\r\n return original.apply(this, [contextType, ...args]);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasContextObserver as default };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { saveWebGLVar, serializeArgs } from './serialize-args.js';\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, mirror, win) {\r\n const handlers = [];\r\n const props = Object.getOwnPropertyNames(prototype);\r\n for (const prop of props) {\r\n if ([\r\n 'isContextLost',\r\n 'canvas',\r\n 'drawingBufferWidth',\r\n 'drawingBufferHeight',\r\n ].includes(prop)) {\r\n continue;\r\n }\r\n try {\r\n if (typeof prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(prototype, prop, function (original) {\r\n return function (...args) {\r\n const result = original.apply(this, args);\r\n saveWebGLVar(result, win, this);\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n const recordArgs = serializeArgs([...args], win, this);\r\n const mutation = {\r\n type,\r\n property: prop,\r\n args: recordArgs,\r\n };\r\n cb(this.canvas, mutation);\r\n }\r\n return result;\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type,\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return handlers;\r\n}\r\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector, mirror) {\r\n const handlers = [];\r\n handlers.push(...patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, mirror, win));\r\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\r\n handlers.push(...patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, mirror, win));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasWebGLMutationObserver as default };\n","var WorkerClass = null;\n\ntry {\n var WorkerThreads =\n typeof module !== 'undefined' && typeof module.require === 'function' && module.require('worker_threads') ||\n typeof __non_webpack_require__ === 'function' && __non_webpack_require__('worker_threads') ||\n typeof require === 'function' && require('worker_threads');\n WorkerClass = WorkerThreads.Worker;\n} catch(e) {} // eslint-disable-line\n\nexport { WorkerClass };\n","import { WorkerClass } from './_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js';\n\nfunction decodeBase64(base64, enableUnicode) {\n return Buffer.from(base64, 'base64').toString(enableUnicode ? 'utf16' : 'utf8');\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n return function WorkerFactory(options) {\n return new WorkerClass(body, Object.assign({}, options, { eval: true }));\n };\n}\n\nexport { createBase64WorkerFactory };\n","function decodeBase64(base64, enableUnicode) {\n var binaryString = atob(base64);\n if (enableUnicode) {\n var binaryView = new Uint8Array(binaryString.length);\n for (var i = 0, n = binaryString.length; i < n; ++i) {\n binaryView[i] = binaryString.charCodeAt(i);\n }\n return String.fromCharCode.apply(null, new Uint16Array(binaryView.buffer));\n }\n return binaryString;\n}\n\nfunction createURL(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n var blob = new Blob([body], { type: 'application/javascript' });\n return URL.createObjectURL(blob);\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var url;\n return function WorkerFactory(options) {\n url = url || createURL(base64, sourcemapArg, enableUnicodeArg);\n return new Worker(url, options);\n };\n}\n\nexport { createBase64WorkerFactory };\n","var kIsNodeJS = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n\nfunction isNodeJS() {\n return kIsNodeJS;\n}\n\nexport { isNodeJS };\n","import { createBase64WorkerFactory as createBase64WorkerFactory$1 } from './_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js';\nimport { createBase64WorkerFactory as createBase64WorkerFactory$2 } from './_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js';\nimport { isNodeJS } from './_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js';\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n if (isNodeJS()) {\n return createBase64WorkerFactory$1(base64, sourcemapArg, enableUnicodeArg);\n }\n return createBase64WorkerFactory$2(base64, sourcemapArg, enableUnicodeArg);\n}\n\nexport { createBase64WorkerFactory };\n","import { createBase64WorkerFactory } from './_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js';\n\nvar WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikgew0KICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0NCiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7DQogICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfQ0KICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpOw0KICAgICAgICB9KTsNCiAgICB9CgogICAgLyoKICAgICAqIGJhc2U2NC1hcnJheWJ1ZmZlciAxLjAuMSA8aHR0cHM6Ly9naXRodWIuY29tL25pa2xhc3ZoL2Jhc2U2NC1hcnJheWJ1ZmZlcj4KICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBOaWtsYXMgdm9uIEhlcnR6ZW4gPGh0dHBzOi8vaGVydHplbi5jb20+CiAgICAgKiBSZWxlYXNlZCB1bmRlciBNSVQgTGljZW5zZQogICAgICovCiAgICB2YXIgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7CiAgICAvLyBVc2UgYSBsb29rdXAgdGFibGUgdG8gZmluZCB0aGUgaW5kZXguCiAgICB2YXIgbG9va3VwID0gdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gW10gOiBuZXcgVWludDhBcnJheSgyNTYpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKykgewogICAgICAgIGxvb2t1cFtjaGFycy5jaGFyQ29kZUF0KGkpXSA9IGk7CiAgICB9CiAgICB2YXIgZW5jb2RlID0gZnVuY3Rpb24gKGFycmF5YnVmZmVyKSB7CiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlidWZmZXIpLCBpLCBsZW4gPSBieXRlcy5sZW5ndGgsIGJhc2U2NCA9ICcnOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMykgewogICAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaV0gPj4gMl07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1soKGJ5dGVzW2ldICYgMykgPDwgNCkgfCAoYnl0ZXNbaSArIDFdID4+IDQpXTsKICAgICAgICAgICAgYmFzZTY0ICs9IGNoYXJzWygoYnl0ZXNbaSArIDFdICYgMTUpIDw8IDIpIHwgKGJ5dGVzW2kgKyAyXSA+PiA2KV07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1tieXRlc1tpICsgMl0gJiA2M107CiAgICAgICAgfQogICAgICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgJz0nOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgJz09JzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGJhc2U2NDsKICAgIH07CgogICAgY29uc3QgbGFzdEJsb2JNYXAgPSBuZXcgTWFwKCk7DQogICAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gbmV3IE1hcCgpOw0KICAgIGZ1bmN0aW9uIGdldFRyYW5zcGFyZW50QmxvYkZvcih3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucykgew0KICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgew0KICAgICAgICAgICAgY29uc3QgaWQgPSBgJHt3aWR0aH0tJHtoZWlnaHR9YDsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgaWYgKHRyYW5zcGFyZW50QmxvYk1hcC5oYXMoaWQpKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNwYXJlbnRCbG9iTWFwLmdldChpZCk7DQogICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsNCiAgICAgICAgICAgICAgICBvZmZzY3JlZW4uZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0geWllbGQgYmxvYi5hcnJheUJ1ZmZlcigpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7DQogICAgICAgICAgICAgICAgdHJhbnNwYXJlbnRCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gYmFzZTY0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICcnOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9DQogICAgY29uc3Qgd29ya2VyID0gc2VsZjsNCiAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgY29uc3QgeyBpZCwgYml0bWFwLCB3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucyB9ID0gZS5kYXRhOw0KICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zKTsNCiAgICAgICAgICAgICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGN0eCA9IG9mZnNjcmVlbi5nZXRDb250ZXh0KCcyZCcpOw0KICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoYml0bWFwLCAwLCAwKTsNCiAgICAgICAgICAgICAgICBiaXRtYXAuY2xvc2UoKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBibG9iLnR5cGU7DQogICAgICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSB5aWVsZCBibG9iLmFycmF5QnVmZmVyKCk7DQogICAgICAgICAgICAgICAgY29uc3QgYmFzZTY0ID0gZW5jb2RlKGFycmF5QnVmZmVyKTsNCiAgICAgICAgICAgICAgICBpZiAoIWxhc3RCbG9iTWFwLmhhcyhpZCkgJiYgKHlpZWxkIHRyYW5zcGFyZW50QmFzZTY0KSA9PT0gYmFzZTY0KSB7DQogICAgICAgICAgICAgICAgICAgIGxhc3RCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5wb3N0TWVzc2FnZSh7IGlkIH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7DQogICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgaWQsDQogICAgICAgICAgICAgICAgICAgIHR5cGUsDQogICAgICAgICAgICAgICAgICAgIGJhc2U2NCwNCiAgICAgICAgICAgICAgICAgICAgd2lkdGgsDQogICAgICAgICAgICAgICAgICAgIGhlaWdodCwNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfTsKCn0pKCk7Cgo=', null, false);\n/* eslint-enable */\n\nexport { WorkerFactory as default };\n","import { __rest, __awaiter } from './../../../../../../ext/tslib/tslib.es6.js';\nimport { isBlocked } from '../../../utils.js';\nimport { CanvasContext } from '../../../../../types/dist/types.js';\nimport initCanvas2DMutationObserver from './2d.js';\nimport initCanvasContextObserver from './canvas.js';\nimport initCanvasWebGLMutationObserver from './webgl.js';\nimport WorkerFactory from '../../../../../../_virtual/image-bitmap-data-url-worker.js';\n\nclass CanvasManager {\r\n constructor(options) {\r\n this.pendingCanvasMutations = new Map();\r\n this.rafStamps = { latestId: 0, invokeId: null };\r\n this.frozen = false;\r\n this.locked = false;\r\n this.processMutation = (target, mutation) => {\r\n const newFrame = this.rafStamps.invokeId &&\r\n this.rafStamps.latestId !== this.rafStamps.invokeId;\r\n if (newFrame || !this.rafStamps.invokeId)\r\n this.rafStamps.invokeId = this.rafStamps.latestId;\r\n if (!this.pendingCanvasMutations.has(target)) {\r\n this.pendingCanvasMutations.set(target, []);\r\n }\r\n this.pendingCanvasMutations.get(target).push(mutation);\r\n };\r\n const { sampling = 'all', win, blockClass, blockSelector, recordCanvas, dataURLOptions, } = options;\r\n this.mutationCb = options.mutationCb;\r\n this.mirror = options.mirror;\r\n if (recordCanvas && sampling === 'all')\r\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\r\n if (recordCanvas && typeof sampling === 'number')\r\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\r\n dataURLOptions,\r\n });\r\n }\r\n reset() {\r\n this.pendingCanvasMutations.clear();\r\n this.resetObservers && this.resetObservers();\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n }\r\n lock() {\r\n this.locked = true;\r\n }\r\n unlock() {\r\n this.locked = false;\r\n }\r\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector);\r\n const snapshotInProgressMap = new Map();\r\n const worker = new WorkerFactory();\r\n worker.onmessage = (e) => {\r\n const { id } = e.data;\r\n snapshotInProgressMap.set(id, false);\r\n if (!('base64' in e.data))\r\n return;\r\n const { base64, type, width, height } = e.data;\r\n this.mutationCb({\r\n id,\r\n type: CanvasContext['2D'],\r\n commands: [\r\n {\r\n property: 'clearRect',\r\n args: [0, 0, width, height],\r\n },\r\n {\r\n property: 'drawImage',\r\n args: [\r\n {\r\n rr_type: 'ImageBitmap',\r\n args: [\r\n {\r\n rr_type: 'Blob',\r\n data: [{ rr_type: 'ArrayBuffer', base64 }],\r\n type,\r\n },\r\n ],\r\n },\r\n 0,\r\n 0,\r\n ],\r\n },\r\n ],\r\n });\r\n };\r\n const timeBetweenSnapshots = 1000 / fps;\r\n let lastSnapshotTime = 0;\r\n let rafId;\r\n const getCanvas = () => {\r\n const matchedCanvas = [];\r\n win.document.querySelectorAll('canvas').forEach((canvas) => {\r\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\r\n matchedCanvas.push(canvas);\r\n }\r\n });\r\n return matchedCanvas;\r\n };\r\n const takeCanvasSnapshots = (timestamp) => {\r\n if (lastSnapshotTime &&\r\n timestamp - lastSnapshotTime < timeBetweenSnapshots) {\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n return;\r\n }\r\n lastSnapshotTime = timestamp;\r\n getCanvas()\r\n .forEach((canvas) => __awaiter(this, void 0, void 0, function* () {\r\n var _a;\r\n const id = this.mirror.getId(canvas);\r\n if (snapshotInProgressMap.get(id))\r\n return;\r\n snapshotInProgressMap.set(id, true);\r\n if (['webgl', 'webgl2'].includes(canvas.__context)) {\r\n const context = canvas.getContext(canvas.__context);\r\n if (((_a = context === null || context === void 0 ? void 0 : context.getContextAttributes()) === null || _a === void 0 ? void 0 : _a.preserveDrawingBuffer) === false) {\r\n context === null || context === void 0 ? void 0 : context.clear(context.COLOR_BUFFER_BIT);\r\n }\r\n }\r\n const bitmap = yield createImageBitmap(canvas);\r\n worker.postMessage({\r\n id,\r\n bitmap,\r\n width: canvas.width,\r\n height: canvas.height,\r\n dataURLOptions: options.dataURLOptions,\r\n }, [bitmap]);\r\n }));\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n };\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n cancelAnimationFrame(rafId);\r\n };\r\n }\r\n initCanvasMutationObserver(win, blockClass, blockSelector) {\r\n this.startRAFTimestamping();\r\n this.startPendingCanvasMutationFlusher();\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector);\r\n const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\r\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, this.mirror);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n canvas2DReset();\r\n canvasWebGL1and2Reset();\r\n };\r\n }\r\n startPendingCanvasMutationFlusher() {\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n startRAFTimestamping() {\r\n const setLatestRAFTimestamp = (timestamp) => {\r\n this.rafStamps.latestId = timestamp;\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n };\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n }\r\n flushPendingCanvasMutations() {\r\n this.pendingCanvasMutations.forEach((values, canvas) => {\r\n const id = this.mirror.getId(canvas);\r\n this.flushPendingCanvasMutationFor(canvas, id);\r\n });\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n flushPendingCanvasMutationFor(canvas, id) {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\r\n if (!valuesWithType || id === -1)\r\n return;\r\n const values = valuesWithType.map((value) => {\r\n const rest = __rest(value, [\"type\"]);\r\n return rest;\r\n });\r\n const { type } = valuesWithType[0];\r\n this.mutationCb({ id, type, commands: values });\r\n this.pendingCanvasMutations.delete(canvas);\r\n }\r\n}\n\nexport { CanvasManager };\n","import { getCssRuleString } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { StyleSheetMirror } from '../utils.js';\n\nclass StylesheetManager {\r\n constructor(options) {\r\n this.trackedLinkElements = new WeakSet();\r\n this.styleMirror = new StyleSheetMirror();\r\n this.mutationCb = options.mutationCb;\r\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\r\n }\r\n attachLinkElement(linkEl, childSn) {\r\n if ('_cssText' in childSn.attributes)\r\n this.mutationCb({\r\n adds: [],\r\n removes: [],\r\n texts: [],\r\n attributes: [\r\n {\r\n id: childSn.id,\r\n attributes: childSn\r\n .attributes,\r\n },\r\n ],\r\n });\r\n this.trackLinkElement(linkEl);\r\n }\r\n trackLinkElement(linkEl) {\r\n if (this.trackedLinkElements.has(linkEl))\r\n return;\r\n this.trackedLinkElements.add(linkEl);\r\n this.trackStylesheetInLinkElement(linkEl);\r\n }\r\n adoptStyleSheets(sheets, hostId) {\r\n if (sheets.length === 0)\r\n return;\r\n const adoptedStyleSheetData = {\r\n id: hostId,\r\n styleIds: [],\r\n };\r\n const styles = [];\r\n for (const sheet of sheets) {\r\n let styleId;\r\n if (!this.styleMirror.has(sheet)) {\r\n styleId = this.styleMirror.add(sheet);\r\n const rules = Array.from(sheet.rules || CSSRule);\r\n styles.push({\r\n styleId,\r\n rules: rules.map((r, index) => {\r\n return {\r\n rule: getCssRuleString(r),\r\n index,\r\n };\r\n }),\r\n });\r\n }\r\n else\r\n styleId = this.styleMirror.getId(sheet);\r\n adoptedStyleSheetData.styleIds.push(styleId);\r\n }\r\n if (styles.length > 0)\r\n adoptedStyleSheetData.styles = styles;\r\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\r\n }\r\n reset() {\r\n this.styleMirror.reset();\r\n this.trackedLinkElements = new WeakSet();\r\n }\r\n trackStylesheetInLinkElement(linkEl) {\r\n }\r\n}\n\nexport { StylesheetManager };\n","import { createMirror, snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { initObservers, mutationBuffers } from './observer.js';\nimport { polyfill, on, getWindowWidth, getWindowHeight, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\nimport { IframeManager } from './iframe-manager.js';\nimport { ShadowDomManager } from './shadow-dom-manager.js';\nimport { CanvasManager } from './observers/canvas/canvas-manager.js';\nimport { StylesheetManager } from './stylesheet-manager.js';\n\nfunction wrapEvent(e) {\r\n return Object.assign(Object.assign({}, e), { timestamp: Date.now() });\r\n}\r\nlet wrappedEmit;\r\nlet takeFullSnapshot;\r\nlet canvasManager;\r\nlet recording = false;\r\nconst mirror = createMirror();\r\nfunction record(options = {}) {\r\n const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, ignoreClass = 'rr-ignore', maskTextClass = 'rr-mask', maskTextSelector = null, inlineStylesheet = true, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskInputFn, maskTextFn, hooks, packFn, sampling = {}, dataURLOptions = {}, mousemoveWait, recordCanvas = false, recordCrossOriginIframes = false, userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, ignoreCSSAttributes = new Set([]), } = options;\r\n const inEmittingFrame = recordCrossOriginIframes\r\n ? window.parent === window\r\n : true;\r\n let passEmitsToParent = false;\r\n if (!inEmittingFrame) {\r\n try {\r\n window.parent.document;\r\n passEmitsToParent = false;\r\n }\r\n catch (e) {\r\n passEmitsToParent = true;\r\n }\r\n }\r\n if (inEmittingFrame && !emit) {\r\n throw new Error('emit function is required');\r\n }\r\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\r\n sampling.mousemove = mousemoveWait;\r\n }\r\n mirror.reset();\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true,\r\n }\r\n : _maskInputOptions !== undefined\r\n ? _maskInputOptions\r\n : { password: true };\r\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\r\n ? {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaVerification: true,\r\n headMetaAuthorship: _slimDOMOptions === 'all',\r\n headMetaDescKeywords: _slimDOMOptions === 'all',\r\n }\r\n : _slimDOMOptions\r\n ? _slimDOMOptions\r\n : {};\r\n polyfill();\r\n let lastFullSnapshotEvent;\r\n let incrementalSnapshotCount = 0;\r\n const eventProcessor = (e) => {\r\n for (const plugin of plugins || []) {\r\n if (plugin.eventProcessor) {\r\n e = plugin.eventProcessor(e);\r\n }\r\n }\r\n if (packFn) {\r\n e = packFn(e);\r\n }\r\n return e;\r\n };\r\n wrappedEmit = (e, isCheckout) => {\r\n var _a;\r\n if (((_a = mutationBuffers[0]) === null || _a === void 0 ? void 0 : _a.isFrozen()) &&\r\n e.type !== EventType.FullSnapshot &&\r\n !(e.type === EventType.IncrementalSnapshot &&\r\n e.data.source === IncrementalSource.Mutation)) {\r\n mutationBuffers.forEach((buf) => buf.unfreeze());\r\n }\r\n if (inEmittingFrame) {\r\n emit === null || emit === void 0 ? void 0 : emit(eventProcessor(e), isCheckout);\r\n }\r\n else if (passEmitsToParent) {\r\n const message = {\r\n type: 'rrweb',\r\n event: eventProcessor(e),\r\n isCheckout,\r\n };\r\n window.parent.postMessage(message, '*');\r\n }\r\n if (e.type === EventType.FullSnapshot) {\r\n lastFullSnapshotEvent = e;\r\n incrementalSnapshotCount = 0;\r\n }\r\n else if (e.type === EventType.IncrementalSnapshot) {\r\n if (e.data.source === IncrementalSource.Mutation &&\r\n e.data.isAttachIframe) {\r\n return;\r\n }\r\n incrementalSnapshotCount++;\r\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\r\n const exceedTime = checkoutEveryNms &&\r\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\r\n if (exceedCount || exceedTime) {\r\n takeFullSnapshot(true);\r\n }\r\n }\r\n };\r\n const wrappedMutationEmit = (m) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Mutation }, m),\r\n }));\r\n };\r\n const wrappedScrollEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Scroll }, p),\r\n }));\r\n const wrappedCanvasMutationEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.CanvasMutation }, p),\r\n }));\r\n const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.AdoptedStyleSheet }, a),\r\n }));\r\n const stylesheetManager = new StylesheetManager({\r\n mutationCb: wrappedMutationEmit,\r\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\r\n });\r\n const iframeManager = new IframeManager({\r\n mirror,\r\n mutationCb: wrappedMutationEmit,\r\n stylesheetManager: stylesheetManager,\r\n recordCrossOriginIframes,\r\n wrappedEmit,\r\n });\r\n for (const plugin of plugins || []) {\r\n if (plugin.getMirror)\r\n plugin.getMirror({\r\n nodeMirror: mirror,\r\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\r\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror,\r\n });\r\n }\r\n canvasManager = new CanvasManager({\r\n recordCanvas,\r\n mutationCb: wrappedCanvasMutationEmit,\r\n win: window,\r\n blockClass,\r\n blockSelector,\r\n mirror,\r\n sampling: sampling.canvas,\r\n dataURLOptions,\r\n });\r\n const shadowDomManager = new ShadowDomManager({\r\n mutationCb: wrappedMutationEmit,\r\n scrollCb: wrappedScrollEmit,\r\n bypassOptions: {\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n dataURLOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n recordCanvas,\r\n inlineImages,\r\n sampling,\r\n slimDOMOptions,\r\n iframeManager,\r\n stylesheetManager,\r\n canvasManager,\r\n keepIframeSrcFn,\r\n },\r\n mirror,\r\n });\r\n takeFullSnapshot = (isCheckout = false) => {\r\n var _a, _b, _c, _d, _e, _f;\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Meta,\r\n data: {\r\n href: window.location.href,\r\n width: getWindowWidth(),\r\n height: getWindowHeight(),\r\n },\r\n }), isCheckout);\r\n stylesheetManager.reset();\r\n mutationBuffers.forEach((buf) => buf.lock());\r\n const node = snapshot(document, {\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskAllInputs: maskInputOptions,\r\n maskTextFn,\r\n slimDOM: slimDOMOptions,\r\n dataURLOptions,\r\n recordCanvas,\r\n inlineImages,\r\n onSerialize: (n) => {\r\n if (isSerializedIframe(n, mirror)) {\r\n iframeManager.addIframe(n);\r\n }\r\n if (isSerializedStylesheet(n, mirror)) {\r\n stylesheetManager.trackLinkElement(n);\r\n }\r\n if (hasShadowRoot(n)) {\r\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n iframeManager.attachIframe(iframe, childSn);\r\n shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (linkEl, childSn) => {\r\n stylesheetManager.attachLinkElement(linkEl, childSn);\r\n },\r\n keepIframeSrcFn,\r\n });\r\n if (!node) {\r\n return console.warn('Failed to snapshot the document');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.FullSnapshot,\r\n data: {\r\n node,\r\n initialOffset: {\r\n left: window.pageXOffset !== undefined\r\n ? window.pageXOffset\r\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollLeft) ||\r\n ((_b = (_a = document === null || document === void 0 ? void 0 : document.body) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.scrollLeft) ||\r\n ((_c = document === null || document === void 0 ? void 0 : document.body) === null || _c === void 0 ? void 0 : _c.scrollLeft) ||\r\n 0,\r\n top: window.pageYOffset !== undefined\r\n ? window.pageYOffset\r\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollTop) ||\r\n ((_e = (_d = document === null || document === void 0 ? void 0 : document.body) === null || _d === void 0 ? void 0 : _d.parentElement) === null || _e === void 0 ? void 0 : _e.scrollTop) ||\r\n ((_f = document === null || document === void 0 ? void 0 : document.body) === null || _f === void 0 ? void 0 : _f.scrollTop) ||\r\n 0,\r\n },\r\n },\r\n }));\r\n mutationBuffers.forEach((buf) => buf.unlock());\r\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\r\n stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\r\n };\r\n try {\r\n const handlers = [];\r\n handlers.push(on('DOMContentLoaded', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.DomContentLoaded,\r\n data: {},\r\n }));\r\n }));\r\n const observe = (doc) => {\r\n var _a;\r\n return initObservers({\r\n mutationCb: wrappedMutationEmit,\r\n mousemoveCb: (positions, source) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source,\r\n positions,\r\n },\r\n })),\r\n mouseInteractionCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MouseInteraction }, d),\r\n })),\r\n scrollCb: wrappedScrollEmit,\r\n viewportResizeCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.ViewportResize }, d),\r\n })),\r\n inputCb: (v) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Input }, v),\r\n })),\r\n mediaInteractionCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MediaInteraction }, p),\r\n })),\r\n styleSheetRuleCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleSheetRule }, r),\r\n })),\r\n styleDeclarationCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleDeclaration }, r),\r\n })),\r\n canvasMutationCb: wrappedCanvasMutationEmit,\r\n fontCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Font }, p),\r\n })),\r\n selectionCb: (p) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Selection }, p),\r\n }));\r\n },\r\n blockClass,\r\n ignoreClass,\r\n maskTextClass,\r\n maskTextSelector,\r\n maskInputOptions,\r\n inlineStylesheet,\r\n sampling,\r\n recordCanvas,\r\n inlineImages,\r\n userTriggeredOnInput,\r\n collectFonts,\r\n doc,\r\n maskInputFn,\r\n maskTextFn,\r\n keepIframeSrcFn,\r\n blockSelector,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n mirror,\r\n iframeManager,\r\n stylesheetManager,\r\n shadowDomManager,\r\n canvasManager,\r\n ignoreCSSAttributes,\r\n plugins: ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.filter((p) => p.observer)) === null || _a === void 0 ? void 0 : _a.map((p) => ({\r\n observer: p.observer,\r\n options: p.options,\r\n callback: (payload) => wrappedEmit(wrapEvent({\r\n type: EventType.Plugin,\r\n data: {\r\n plugin: p.name,\r\n payload,\r\n },\r\n })),\r\n }))) || [],\r\n }, hooks);\r\n };\r\n iframeManager.addLoadListener((iframeEl) => {\r\n handlers.push(observe(iframeEl.contentDocument));\r\n });\r\n const init = () => {\r\n takeFullSnapshot();\r\n handlers.push(observe(document));\r\n recording = true;\r\n };\r\n if (document.readyState === 'interactive' ||\r\n document.readyState === 'complete') {\r\n init();\r\n }\r\n else {\r\n handlers.push(on('load', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Load,\r\n data: {},\r\n }));\r\n init();\r\n }, window));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n recording = false;\r\n };\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n}\r\nrecord.addCustomEvent = (tag, payload) => {\r\n if (!recording) {\r\n throw new Error('please add custom event after start recording');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Custom,\r\n data: {\r\n tag,\r\n payload,\r\n },\r\n }));\r\n};\r\nrecord.freezePage = () => {\r\n mutationBuffers.forEach((buf) => buf.freeze());\r\n};\r\nrecord.takeFullSnapshot = (isCheckout) => {\r\n if (!recording) {\r\n throw new Error('please take full snapshot after start recording');\r\n }\r\n takeFullSnapshot(isCheckout);\r\n};\r\nrecord.mirror = mirror;\n\nexport { record as default };\n","import { record } from \"rrweb\";\nimport type { TrackerEvent } from \"../types\";\n\nexport type SessionReplayControllerOptions = {\n emit: (e: TrackerEvent) => void;\n /** rrweb full snapshot interval (ms). Default 10 minutes. */\n checkoutEveryNms?: number;\n /** Inline stylesheets into snapshots. Disabled by default to keep first payload small. */\n inlineStylesheet?: boolean;\n maxEventsPerBatch: number;\n flushIntervalMs: number;\n maskAllInputs: boolean;\n maskTextClass?: string;\n blockClass?: string;\n};\n\n/**\n * Captures the DOM with rrweb and emits `session_replay` batches for the tracker queue.\n */\nexport class SessionReplayController {\n private seq = 0;\n private readonly buffer: unknown[] = [];\n private stopRecording: (() => void) | null = null;\n private flushTimer: ReturnType<typeof setInterval> | null = null;\n\n constructor(private readonly opts: SessionReplayControllerOptions) {}\n\n start(): void {\n if (typeof document === \"undefined\" || this.stopRecording) return;\n\n const options = {\n emit: (event: unknown) => {\n this.buffer.push(event);\n if (this.buffer.length >= this.opts.maxEventsPerBatch) {\n this.flush();\n }\n },\n checkoutEveryNms: this.opts.checkoutEveryNms ?? 600_000,\n inlineStylesheet: this.opts.inlineStylesheet ?? false,\n maskAllInputs: this.opts.maskAllInputs,\n maskTextClass: this.opts.maskTextClass,\n blockClass: this.opts.blockClass,\n };\n\n this.stopRecording =\n record(options as Parameters<typeof record>[0]) ?? null;\n\n this.flushTimer = setInterval(() => {\n if (this.buffer.length > 0) this.flush();\n }, this.opts.flushIntervalMs);\n }\n\n flush(): void {\n if (this.buffer.length === 0) return;\n const events = this.buffer.splice(0, this.buffer.length);\n this.opts.emit({\n type: \"session_replay\",\n data: {\n seq: this.seq++,\n events,\n },\n });\n }\n\n destroy(): void {\n if (this.flushTimer !== null) {\n clearInterval(this.flushTimer);\n this.flushTimer = null;\n }\n this.flush();\n this.stopRecording?.();\n this.stopRecording = null;\n }\n}\n","import type { ClientContext } from \"../types\";\n\nexport const ALPHANA_SDK_VERSION = \"1.0.2\";\n\nfunction detectDeviceCategory(ua: string): \"desktop\" | \"mobile\" | \"tablet\" {\n const s = ua.toLowerCase();\n if (/ipad|tablet|(android(?!.*mobile))/i.test(s)) return \"tablet\";\n if (/mobile|android|iphone|ipod|windows phone/i.test(s)) return \"mobile\";\n if (typeof navigator !== \"undefined\" && navigator.maxTouchPoints > 0) {\n const coarse =\n typeof window !== \"undefined\" &&\n window.matchMedia?.(\"(pointer: coarse)\")?.matches;\n if (coarse && /macintosh|mac os x/i.test(s)) return \"tablet\";\n }\n return \"desktop\";\n}\n\nfunction detectOs(ua: string): string {\n if (/windows/i.test(ua)) return \"Windows\";\n if (/android/i.test(ua)) return \"Android\";\n if (/iphone|ipad|ipod/i.test(ua)) return \"iOS\";\n if (/mac os x|macintosh/i.test(ua)) return \"macOS\";\n if (/linux/i.test(ua)) return \"Linux\";\n return \"Other\";\n}\n\nfunction detectBrowser(ua: string): string {\n if (/edg\\//i.test(ua)) return \"Edge\";\n if (/opr\\/|opera/i.test(ua)) return \"Opera\";\n if (/chrome\\/[0-9]/i.test(ua) && !/chromium/i.test(ua)) return \"Chrome\";\n if (/firefox\\/[0-9]/i.test(ua)) return \"Firefox\";\n if (/safari\\/[0-9]/i.test(ua) && !/chrome/i.test(ua)) return \"Safari\";\n return \"Other\";\n}\n\nfunction readUaData(): { mobile?: boolean; platform?: string } {\n const nav = navigator as Navigator & {\n userAgentData?: {\n mobile?: boolean;\n platform?: string;\n };\n };\n const uaData = nav.userAgentData;\n if (!uaData) return {};\n return { mobile: uaData.mobile, platform: uaData.platform };\n}\n\nfunction uaDataDevice(\n ua: string,\n uaData: { mobile?: boolean; platform?: string },\n): \"desktop\" | \"mobile\" | \"tablet\" {\n const platform = (uaData.platform ?? \"\").toLowerCase();\n if (platform === \"ios\" || platform === \"ipados\") {\n return uaData.mobile ? \"mobile\" : \"tablet\";\n }\n if (platform === \"android\") {\n return uaData.mobile ? \"mobile\" : \"tablet\";\n }\n if (uaData.mobile === true) return \"mobile\";\n return detectDeviceCategory(ua);\n}\n\n/**\n * Snapshot of the browser environment for the session replay catalog and\n * analytics parity with server-side User-Agent parsing.\n */\nexport function collectClientContext(sessionId: string): ClientContext {\n if (typeof window === \"undefined\" || typeof navigator === \"undefined\") {\n return {\n sessionId,\n timestamp: Date.now(),\n device: \"desktop\",\n os: \"Other\",\n browser: \"Other\",\n language: \"\",\n languages: [],\n colorScheme: \"\",\n screenWidth: 0,\n screenHeight: 0,\n viewportWidth: 0,\n viewportHeight: 0,\n devicePixelRatio: 1,\n timeZone: \"\",\n sdkVersion: ALPHANA_SDK_VERSION,\n };\n }\n\n const ua = navigator.userAgent || \"\";\n const uaData = readUaData();\n const device =\n uaData.mobile !== undefined || uaData.platform\n ? uaDataDevice(ua, uaData)\n : detectDeviceCategory(ua);\n\n let colorScheme: \"\" | \"light\" | \"dark\" = \"\";\n if (window.matchMedia?.(\"(prefers-color-scheme: dark)\")?.matches) {\n colorScheme = \"dark\";\n } else if (window.matchMedia?.(\"(prefers-color-scheme: light)\")?.matches) {\n colorScheme = \"light\";\n }\n\n let timeZone = \"\";\n try {\n timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone ?? \"\";\n } catch {\n timeZone = \"\";\n }\n\n const langs =\n typeof navigator.languages !== \"undefined\" && navigator.languages.length\n ? [...navigator.languages]\n : navigator.language\n ? [navigator.language]\n : [];\n\n return {\n sessionId,\n timestamp: Date.now(),\n device,\n os: detectOs(ua),\n browser: detectBrowser(ua),\n language: navigator.language || \"\",\n languages: langs,\n colorScheme,\n screenWidth: window.screen?.width ?? 0,\n screenHeight: window.screen?.height ?? 0,\n viewportWidth: window.innerWidth ?? 0,\n viewportHeight: window.innerHeight ?? 0,\n devicePixelRatio: window.devicePixelRatio ?? 1,\n timeZone,\n sdkVersion: ALPHANA_SDK_VERSION,\n };\n}\n","import type {\n TrackerConfig,\n TrackerEvent,\n SessionData,\n PageView,\n HeatmapPoint,\n AbVariantsMap,\n AttributionContext,\n GoalEventPayload,\n JourneyStepEventPayload,\n RevenueEventPayload,\n} from \"./types\";\nimport {\n apiBaseFromEventsEndpoint,\n collectUrlFromEventsEndpoint,\n} from \"./utils/api-base\";\nimport {\n buildCollectBatchBody,\n buildCollectHeartbeatBody,\n} from \"./utils/collect-payload\";\nimport { generateSessionId, getOrCreateVisitorId } from \"./utils/session\";\nimport { NavigationPlugin } from \"./core/navigation\";\nimport { TimePlugin } from \"./core/time\";\nimport { HeatmapPlugin } from \"./core/heatmap\";\nimport { LogCapture } from \"./core/logger\";\nimport { SessionReplayController } from \"./core/session-replay\";\nimport { normalizeTrackerPath } from \"./utils/normalize-tracker-path\";\nimport { collectClientContext } from \"./core/client-context\";\nimport { postIngest, postIngestBeacon } from \"./utils/ingest-fetch\";\n\nexport const DEFAULT_ENDPOINT = \"https://api.alphana.ir/api/events\";\n\nconst DEFAULTS = {\n endpoint: DEFAULT_ENDPOINT,\n trackNavigation: true,\n trackTime: true,\n trackHeatmap: true,\n trackLogs: true,\n mouseSampleRate: 0.1,\n maxHeatmapPoints: 2000,\n batchSize: 20,\n flushInterval: 5_000,\n compressPayloads: true,\n compressionThresholdBytes: 1024,\n sessionReplay: true,\n sessionReplayCheckoutEveryNms: 600_000,\n sessionReplayInlineStylesheet: false,\n sessionReplayMaxEventsPerBatch: 48,\n sessionReplayFlushIntervalMs: 4_000,\n sessionReplayMaskAllInputs: true,\n sessionReplayMaskTextClass: \"alphana-mask\",\n sessionReplayBlockClass: \"alphana-block\",\n} as const;\n\ntype SubscriberFn = (event: TrackerEvent) => void;\n\nconst FIRST_TOUCH_KEY = \"__alphana_first_touch__\";\nconst LAST_TOUCH_KEY = \"__alphana_last_touch__\";\nconst UTM_PARAM_MAP = {\n utm_source: \"source\",\n utm_medium: \"medium\",\n utm_campaign: \"campaign\",\n utm_term: \"term\",\n utm_content: \"content\",\n} as const;\nconst CLICK_ID_PARAMS = [\"gclid\", \"fbclid\", \"ttclid\", \"msclkid\"] as const;\n\nfunction safeLocalStorageGet(key: string): string | null {\n if (typeof localStorage === \"undefined\") return null;\n try {\n return localStorage.getItem(key);\n } catch {\n return null;\n }\n}\n\nfunction safeLocalStorageSet(key: string, value: string): void {\n if (typeof localStorage === \"undefined\") return;\n try {\n localStorage.setItem(key, value);\n } catch {\n /* private mode / quota */\n }\n}\n\nfunction readTouch(key: string): AttributionContext | undefined {\n const raw = safeLocalStorageGet(key);\n if (!raw) return undefined;\n try {\n const parsed = JSON.parse(raw) as AttributionContext;\n return typeof parsed.landingPage === \"string\" &&\n typeof parsed.capturedAt === \"number\"\n ? parsed\n : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction writeTouch(key: string, value: AttributionContext): void {\n safeLocalStorageSet(key, JSON.stringify(value));\n}\n\nfunction hostFromReferrer(referrer?: string): string | undefined {\n if (!referrer) return undefined;\n try {\n return new URL(referrer).hostname.replace(/^www\\./, \"\").toLowerCase();\n } catch {\n return undefined;\n }\n}\n\nfunction currentSearchParams(): URLSearchParams {\n if (typeof window === \"undefined\") return new URLSearchParams();\n return new URLSearchParams(window.location.search);\n}\n\nfunction readUtmParams(searchParams: URLSearchParams): AttributionContext[\"utm\"] {\n const utm: AttributionContext[\"utm\"] = {};\n for (const [param, key] of Object.entries(UTM_PARAM_MAP)) {\n const value = searchParams.get(param)?.trim();\n if (value) utm[key] = value;\n }\n return Object.keys(utm).length > 0 ? utm : undefined;\n}\n\nfunction readClickIds(searchParams: URLSearchParams): Record<string, string> | undefined {\n const clickIds: Record<string, string> = {};\n for (const key of CLICK_ID_PARAMS) {\n const value = searchParams.get(key)?.trim();\n if (value) clickIds[key] = value;\n }\n return Object.keys(clickIds).length > 0 ? clickIds : undefined;\n}\n\nfunction withNormalizedPaths(event: TrackerEvent): TrackerEvent {\n switch (event.type) {\n case \"pageview\":\n return {\n type: \"pageview\",\n data: {\n ...event.data,\n path: normalizeTrackerPath(event.data.path),\n },\n };\n case \"timespent\":\n return {\n type: \"timespent\",\n data: {\n ...event.data,\n path: normalizeTrackerPath(event.data.path),\n },\n };\n case \"heatmap\":\n return {\n type: \"heatmap\",\n data: {\n ...event.data,\n path: normalizeTrackerPath(event.data.path),\n },\n };\n case \"rageclik\":\n return {\n type: \"rageclik\",\n data: {\n ...event.data,\n path: normalizeTrackerPath(event.data.path),\n },\n };\n case \"uturn\":\n return {\n type: \"uturn\",\n data: {\n ...event.data,\n fromPath: normalizeTrackerPath(event.data.fromPath),\n toPath: normalizeTrackerPath(event.data.toPath),\n },\n };\n case \"identify\":\n return event;\n case \"revenue\":\n return event;\n case \"goal\":\n return {\n type: \"goal\",\n data: {\n ...event.data,\n path: normalizeTrackerPath(event.data.path),\n },\n };\n case \"journey_step\":\n return {\n type: \"journey_step\",\n data: {\n ...event.data,\n path: normalizeTrackerPath(event.data.path),\n },\n };\n case \"client_context\":\n return event;\n case \"session_replay\":\n return event;\n default: {\n const _exhaustive: never = event;\n return _exhaustive;\n }\n }\n}\ntype FlagSubscriberFn = (flags: Record<string, boolean>) => void;\ntype AbTestSubscriberFn = (variants: AbVariantsMap) => void;\n\n/**\n * Core tracker class. Framework-agnostic — works in any environment that has\n * a browser DOM (React, Next.js Pages Router, Vite, vanilla JS/TS, etc.).\n *\n * Usage:\n * ```ts\n * const tracker = new UserTracker({ endpoint: 'https://my-api.com/events' });\n * tracker.init(); // call once; safe to call in SSR (no-op server-side)\n * ```\n *\n * Destroy when done (e.g. component unmount):\n * ```ts\n * tracker.destroy();\n * ```\n */\ntype ResolvedConfig = Required<\n Pick<\n TrackerConfig,\n | \"endpoint\"\n | \"trackNavigation\"\n | \"trackTime\"\n | \"trackHeatmap\"\n | \"trackLogs\"\n | \"mouseSampleRate\"\n | \"maxHeatmapPoints\"\n | \"batchSize\"\n | \"flushInterval\"\n | \"compressPayloads\"\n | \"compressionThresholdBytes\"\n | \"sessionReplay\"\n | \"sessionReplayCheckoutEveryNms\"\n | \"sessionReplayInlineStylesheet\"\n | \"sessionReplayMaxEventsPerBatch\"\n | \"sessionReplayFlushIntervalMs\"\n | \"sessionReplayMaskAllInputs\"\n | \"sessionReplayMaskTextClass\"\n | \"sessionReplayBlockClass\"\n >\n> &\n TrackerConfig;\n\nexport class UserTracker {\n private readonly cfg: ResolvedConfig;\n private session: SessionData;\n private navigation?: NavigationPlugin;\n private time?: TimePlugin;\n private heatmap?: HeatmapPlugin;\n private sessionReplay?: SessionReplayController;\n /** Public so consumers can call logCapture.capture() for manual log entries. */\n logCapture?: LogCapture;\n private initialized = false;\n private readonly subscribers = new Set<SubscriberFn>();\n\n /** In-memory queue of events waiting to be flushed. */\n private queue: TrackerEvent[] = [];\n private flushTimer: ReturnType<typeof setInterval> | null = null;\n private heartbeatTimer: ReturnType<typeof setInterval> | null = null;\n\n // ─── Feature flags ────────────────────────────────────────────────────────\n private userProperties: Record<string, string> = {};\n private flags: Record<string, boolean> = {};\n private readonly flagSubscribers = new Set<FlagSubscriberFn>();\n\n // ─── A/B tests ────────────────────────────────────────────────────────────\n private abVariants: AbVariantsMap = {};\n private readonly abTestSubscribers = new Set<AbTestSubscriberFn>();\n\n constructor(config: TrackerConfig = {}) {\n this.cfg = { ...DEFAULTS, ...config } as ResolvedConfig;\n\n // Validate endpoint URL up front so the error is thrown at construction\n // time rather than silently failing during a network request.\n try {\n new URL(this.cfg.endpoint);\n } catch {\n throw new Error(\n `[alpha-tracker] Invalid endpoint URL: \"${this.cfg.endpoint}\"`,\n );\n }\n\n this.session = {\n id: config.sessionId ?? generateSessionId(),\n visitorId: getOrCreateVisitorId(),\n startedAt: Date.now(),\n pageViews: [],\n timeSpent: {},\n heatmap: {},\n userProperties: {},\n attribution: {\n firstTouch: readTouch(FIRST_TOUCH_KEY),\n lastTouch: readTouch(LAST_TOUCH_KEY),\n },\n };\n }\n\n private updateAttributionForPageView(path: string, referrer?: string): {\n firstTouch?: AttributionContext;\n lastTouch?: AttributionContext;\n } {\n const searchParams = currentSearchParams();\n const utm = readUtmParams(searchParams);\n const clickIds = readClickIds(searchParams);\n const existingFirst = readTouch(FIRST_TOUCH_KEY);\n const hasCampaignSignal = Boolean(utm || clickIds || referrer);\n const touch: AttributionContext | undefined = hasCampaignSignal\n ? {\n landingPage: path,\n referrer,\n referrerHost: hostFromReferrer(referrer),\n utm,\n clickIds,\n capturedAt: Date.now(),\n }\n : undefined;\n\n if (!existingFirst && touch) {\n writeTouch(FIRST_TOUCH_KEY, touch);\n }\n if (touch) {\n writeTouch(LAST_TOUCH_KEY, touch);\n }\n\n const attribution = {\n firstTouch: readTouch(FIRST_TOUCH_KEY),\n lastTouch: readTouch(LAST_TOUCH_KEY),\n };\n this.session.attribution = attribution;\n return attribution;\n }\n\n private currentAttribution(): {\n firstTouch?: AttributionContext;\n lastTouch?: AttributionContext;\n } {\n const attribution = {\n firstTouch: readTouch(FIRST_TOUCH_KEY),\n lastTouch: readTouch(LAST_TOUCH_KEY),\n };\n this.session.attribution = attribution;\n return attribution;\n }\n\n // ─── Lifecycle ──────────────────────────────────────────────────────────────\n\n /**\n * Attach event listeners and start tracking.\n * Safe to call during SSR — returns `this` immediately if `window` is\n * undefined so it can be chained: `const tracker = new UserTracker(cfg).init()`.\n */\n init(): this {\n if (typeof window === \"undefined\" || this.initialized) return this;\n\n const emit = this.emit.bind(this);\n const { id: sessionId } = this.session;\n\n /** Device / locale / viewport snapshot for replay catalog + analytics. */\n emit({\n type: \"client_context\",\n data: collectClientContext(sessionId),\n });\n\n if (this.cfg.trackNavigation) {\n this.navigation = new NavigationPlugin({ emit, sessionId });\n this.navigation.init();\n }\n\n if (this.cfg.trackTime) {\n this.time = new TimePlugin({ emit, sessionId });\n this.time.init();\n }\n\n if (this.cfg.trackHeatmap) {\n this.heatmap = new HeatmapPlugin({\n emit,\n sessionId,\n sampleRate: this.cfg.mouseSampleRate,\n maxPoints: this.cfg.maxHeatmapPoints,\n // Page allowlisting is enforced server-side from dashboard-registered\n // heatmap pages — do not pass cfg.heatmapPages here.\n });\n this.heatmap.init();\n }\n\n if (this.cfg.sessionReplay) {\n this.sessionReplay = new SessionReplayController({\n emit,\n checkoutEveryNms: this.cfg.sessionReplayCheckoutEveryNms,\n inlineStylesheet: this.cfg.sessionReplayInlineStylesheet,\n maxEventsPerBatch: this.cfg.sessionReplayMaxEventsPerBatch,\n flushIntervalMs: this.cfg.sessionReplayFlushIntervalMs,\n maskAllInputs: this.cfg.sessionReplayMaskAllInputs,\n maskTextClass: this.cfg.sessionReplayMaskTextClass,\n blockClass: this.cfg.sessionReplayBlockClass,\n });\n this.sessionReplay.start();\n }\n\n if (this.cfg.endpoint) {\n // Flush on a regular interval — even if the batch threshold isn't hit.\n this.flushTimer = setInterval(() => {\n if (this.queue.length > 0) void this.flushQueue();\n }, this.cfg.flushInterval);\n\n // Visitor location is resolved server-side from the request IP using\n // an offline GeoIP database — no third-party requests from the SDK.\n\n // Flush remaining queue when the tab is hidden or the page is unloaded.\n window.addEventListener(\"visibilitychange\", this.handleVisibilityChange);\n window.addEventListener(\"pagehide\", this.handlePageHide);\n\n // Periodic keep-alive heartbeat every 30 s so the backend knows the\n // session is still active and doesn't expire it prematurely.\n this.heartbeatTimer = setInterval(() => {\n if (document.visibilityState !== \"hidden\") void this.sendHeartbeat();\n }, 30_000);\n\n // Auto-capture console logs and unhandled errors.\n if (this.cfg.trackLogs) {\n this.logCapture = new LogCapture({\n endpoint: this.cfg.endpoint,\n collectEndpoint: this.collectUrl,\n sessionId: this.session.id,\n secretKey: this.cfg.secretKey,\n appId: this.cfg.appId,\n compressPayloads: this.cfg.compressPayloads,\n compressionThresholdBytes: this.cfg.compressionThresholdBytes,\n });\n this.logCapture.init();\n }\n }\n\n this.initialized = true;\n\n // Fetch feature flags and A/B assignments in the background on init.\n void this.fetchFlags();\n void this.fetchAbTests();\n\n return this;\n }\n\n /** Remove all event listeners, flush remaining queue, and reset state. */\n destroy(): void {\n if (this.flushTimer !== null) {\n clearInterval(this.flushTimer);\n this.flushTimer = null;\n }\n if (this.heartbeatTimer !== null) {\n clearInterval(this.heartbeatTimer);\n this.heartbeatTimer = null;\n }\n\n if (typeof window !== \"undefined\") {\n window.removeEventListener(\n \"visibilitychange\",\n this.handleVisibilityChange,\n );\n window.removeEventListener(\"pagehide\", this.handlePageHide);\n }\n\n this.navigation?.destroy();\n this.time?.destroy();\n this.heatmap?.destroy();\n this.sessionReplay?.destroy();\n this.sessionReplay = undefined;\n this.logCapture?.destroy();\n\n if (typeof window !== \"undefined\") {\n window.removeEventListener(\"tracker:navigate\", this.handleNavigate);\n }\n\n // Best-effort flush of any remaining queued events.\n if (this.queue.length > 0 && this.cfg.endpoint) {\n this.flushBeacon();\n }\n\n this.initialized = false;\n }\n\n private handleVisibilityChange = (): void => {\n if (document.visibilityState === \"hidden\") {\n this.sessionReplay?.flush();\n if (this.queue.length > 0) this.flushBeacon();\n this.sendDeactivate();\n }\n };\n\n private handlePageHide = (): void => {\n this.sessionReplay?.flush();\n if (this.queue.length > 0) this.flushBeacon();\n this.sendDeactivate();\n };\n\n private handleNavigate = (_e: Event): void => {\n // Navigation hook kept for potential future use.\n };\n\n /**\n * Send a keep-alive heartbeat so the backend knows this session is still\n * active. Called every 30 s while the tab is visible.\n */\n private async sendHeartbeat(): Promise<void> {\n if (!this.cfg.endpoint) return;\n const authHeaders: Record<string, string> = this.cfg.secretKey\n ? { Authorization: `Bearer ${this.cfg.secretKey}` }\n : {};\n const body = JSON.stringify(\n buildCollectHeartbeatBody({\n sessionId: this.session.id,\n visitorId: this.session.visitorId,\n path: this.currentPath(),\n active: true,\n appId: this.cfg.appId,\n }),\n );\n try {\n await postIngest(this.collectUrl, body, {\n compressPayloads: this.cfg.compressPayloads,\n compressionThresholdBytes: this.cfg.compressionThresholdBytes,\n authHeaders,\n keepalive: true,\n });\n } catch {\n // Silent — heartbeat failure should never surface to the user.\n }\n }\n\n /**\n * Send a synchronous beacon to mark this session as inactive.\n * Called on page unload / tab hidden so the dashboard reflects real-time.\n */\n private sendDeactivate(): void {\n if (!this.cfg.endpoint) return;\n const authHeaders: Record<string, string> = this.cfg.secretKey\n ? { Authorization: `Bearer ${this.cfg.secretKey}` }\n : {};\n const body = JSON.stringify(\n buildCollectHeartbeatBody({\n sessionId: this.session.id,\n visitorId: this.session.visitorId,\n path: this.currentPath(),\n active: false,\n appId: this.cfg.appId,\n }),\n );\n postIngestBeacon(this.collectUrl, body, {\n compressPayloads: this.cfg.compressPayloads,\n compressionThresholdBytes: this.cfg.compressionThresholdBytes,\n authHeaders,\n });\n }\n\n // ─── Event pipeline ─────────────────────────────────────────────────────────\n\n /** Emit a tracker event. Also used internally by the plugins. */\n emit(event: TrackerEvent): void {\n event = withNormalizedPaths(event);\n if (event.type === \"pageview\") {\n const attribution = this.updateAttributionForPageView(\n event.data.path,\n event.data.referrer,\n );\n event = {\n type: \"pageview\",\n data: {\n ...event.data,\n utm: attribution.lastTouch?.utm,\n attribution,\n },\n };\n }\n // 1 – accumulate into session data\n switch (event.type) {\n case \"pageview\":\n this.session.pageViews.push(event.data);\n break;\n\n case \"timespent\": {\n const prev = this.session.timeSpent[event.data.path] ?? 0;\n this.session.timeSpent[event.data.path] = prev + event.data.duration;\n break;\n }\n\n case \"heatmap\": {\n const key = event.data.path;\n if (!this.session.heatmap[key]) this.session.heatmap[key] = [];\n const pts = this.session.heatmap[key];\n if (pts.length < this.cfg.maxHeatmapPoints) pts.push(event.data);\n break;\n }\n\n // rageclik and uturn are forwarded to the backend only; no local state needed.\n case \"rageclik\":\n case \"uturn\":\n case \"identify\":\n case \"revenue\":\n case \"goal\":\n case \"journey_step\":\n case \"client_context\":\n case \"session_replay\":\n break;\n }\n\n // 2 – notify subscribers (used internally by React hooks)\n this.subscribers.forEach((fn) => fn(event));\n\n // 3 – user callback\n this.cfg.onEvent?.(event);\n\n // 4 – enqueue for batched remote sending\n if (this.cfg.endpoint) {\n this.queue.push(event);\n // Auto-flush once the batch size threshold is reached.\n if (this.queue.length >= this.cfg.batchSize) {\n void this.flushQueue();\n }\n }\n }\n\n /**\n * Subscribe to every emitted event. Returns an unsubscribe function.\n *\n * ```ts\n * const unsub = tracker.subscribe(event => console.log(event));\n * // later…\n * unsub();\n * ```\n */\n subscribe(fn: SubscriberFn): () => void {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n // ─── Manual tracking helpers ────────────────────────────────────────────────\n\n /**\n * Manually record a page view and dispatch `tracker:navigate`.\n * Required for Next.js App Router — call it inside a `useEffect` that\n * depends on `usePathname()`:\n *\n * ```tsx\n * const pathname = usePathname();\n * useEffect(() => { tracker.trackPageView(pathname); }, [pathname]);\n * ```\n */\n trackPageView(path?: string): void {\n const resolvedPath = normalizeTrackerPath(\n path ??\n (typeof window !== \"undefined\"\n ? window.location.pathname + window.location.search\n : \"/\"),\n );\n\n this.emit({\n type: \"pageview\",\n data: {\n path: resolvedPath,\n title: typeof document !== \"undefined\" ? document.title : \"\",\n timestamp: Date.now(),\n sessionId: this.session.id,\n referrer:\n typeof document !== \"undefined\"\n ? document.referrer || undefined\n : undefined,\n },\n });\n\n if (typeof window !== \"undefined\") {\n window.dispatchEvent(\n new CustomEvent(\"tracker:navigate\", {\n detail: { path: resolvedPath, title: document.title },\n }),\n );\n }\n }\n\n /**\n * Track a monetary conversion such as a purchase, subscription, renewal,\n * upgrade, or refund. Revenue events include the current attribution context\n * so the backend can credit campaigns without recomputing browser state.\n */\n trackRevenue(payload: RevenueEventPayload): void {\n this.emit({\n type: \"revenue\",\n data: {\n ...payload,\n eventName: payload.eventName ?? \"purchase\",\n status: payload.status ?? \"paid\",\n sessionId: this.session.id,\n visitorId: this.session.visitorId,\n timestamp: Date.now(),\n attribution: this.currentAttribution(),\n },\n });\n }\n\n /** Track a business goal such as signup, trial_start, lead, or checkout_start. */\n trackGoal(payload: GoalEventPayload): void {\n const path = normalizeTrackerPath(\n typeof window !== \"undefined\"\n ? window.location.pathname + window.location.search\n : \"/\",\n );\n this.emit({\n type: \"goal\",\n data: {\n ...payload,\n sessionId: this.session.id,\n visitorId: this.session.visitorId,\n path,\n timestamp: Date.now(),\n },\n });\n }\n\n /** Track a named product journey milestone beyond automatic pageviews. */\n trackJourneyStep(payload: JourneyStepEventPayload): void {\n const path = normalizeTrackerPath(\n payload.path ??\n (typeof window !== \"undefined\"\n ? window.location.pathname + window.location.search\n : \"/\"),\n );\n this.emit({\n type: \"journey_step\",\n data: {\n ...payload,\n path,\n sessionId: this.session.id,\n visitorId: this.session.visitorId,\n timestamp: Date.now(),\n },\n });\n }\n\n // ─── Identity & Feature Flags ───────────────────────────────────────────────\n\n /**\n * Identify the current user with a set of properties.\n * Properties are merged with any previously set ones and used for feature\n * flag targeting (e.g. `email`, `plan`, `country`).\n * Automatically triggers a flag re-evaluation.\n *\n * ```ts\n * tracker.identify({ email: 'user@example.com', plan: 'pro' });\n * ```\n */\n identify(properties: Record<string, string>): void {\n this.userProperties = { ...this.userProperties, ...properties };\n this.session.userProperties = { ...this.userProperties };\n this.emit({\n type: \"identify\",\n data: {\n properties: { ...this.userProperties },\n visitorId: this.session.visitorId,\n timestamp: Date.now(),\n },\n });\n void this.fetchFlags();\n }\n\n /**\n * Returns the latest evaluated feature flags as `{ [key]: boolean }`.\n * Flags are fetched on `init()` and after every `identify()` call.\n */\n getFlags(): Record<string, boolean> {\n return { ...this.flags };\n }\n\n /**\n * Returns `true` if the given flag is currently enabled for this user.\n * Returns `false` for unknown flags or before flags have loaded.\n */\n isFeatureEnabled(flagKey: string): boolean {\n return this.flags[flagKey] === true;\n }\n\n /**\n * Subscribe to flag changes. Called whenever flags are re-evaluated.\n * Returns an unsubscribe function.\n *\n * ```ts\n * const unsub = tracker.onFlagsChange(flags => console.log(flags));\n * ```\n */\n onFlagsChange(fn: FlagSubscriberFn): () => void {\n this.flagSubscribers.add(fn);\n return () => this.flagSubscribers.delete(fn);\n }\n\n /** Fetch (or re-fetch) flags from the backend evaluate endpoint. */\n async fetchFlags(): Promise<void> {\n if (!this.cfg.endpoint || !this.cfg.secretKey) return;\n const url =\n apiBaseFromEventsEndpoint(this.cfg.endpoint) + \"/feature-flags/evaluate\";\n try {\n const res = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.cfg.secretKey}`,\n },\n body: JSON.stringify({ userProperties: this.userProperties }),\n });\n if (!res.ok) return;\n const data = (await res.json()) as Record<string, boolean>;\n this.flags = data;\n this.flagSubscribers.forEach((fn) => fn({ ...this.flags }));\n } catch {\n // Silent — flag fetch failure must never surface to the user.\n }\n }\n\n // ─── A/B tests ──────────────────────────────────────────────────────────────\n\n /**\n * Returns variant keys assigned to this visitor for each running experiment.\n * Fetched on `init()` and after `fetchAbTests()`.\n *\n * ```ts\n * const variants = tracker.getAbVariants();\n * // { 'checkout-cta-test': 'variant-b' }\n * ```\n */\n getAbVariants(): AbVariantsMap {\n return { ...this.abVariants };\n }\n\n /**\n * Returns the assigned variant key for one experiment, or `null` if the\n * experiment is not running or not found.\n */\n getAbVariant(experimentKey: string): string | null {\n const v = this.abVariants[experimentKey];\n return v ?? null;\n }\n\n /**\n * Returns `true` when the visitor is assigned to the given variant key.\n */\n isAbVariant(experimentKey: string, variantKey: string): boolean {\n return this.abVariants[experimentKey] === variantKey;\n }\n\n /**\n * Subscribe to A/B assignment updates. Returns an unsubscribe function.\n */\n onAbTestsChange(fn: AbTestSubscriberFn): () => void {\n this.abTestSubscribers.add(fn);\n return () => this.abTestSubscribers.delete(fn);\n }\n\n /**\n * Fetch (or re-fetch) variant assignments from `/ab-tests/evaluate`.\n * @param keys When set, only these experiment keys are evaluated and merged.\n */\n async fetchAbTests(keys?: string[]): Promise<void> {\n if (!this.cfg.endpoint || !this.cfg.secretKey) return;\n const url =\n apiBaseFromEventsEndpoint(this.cfg.endpoint) + \"/ab-tests/evaluate\";\n try {\n const body: { visitorId: string; keys?: string[] } = {\n visitorId: this.session.visitorId,\n };\n if (keys?.length) body.keys = keys;\n\n const res = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.cfg.secretKey}`,\n },\n body: JSON.stringify(body),\n });\n if (!res.ok) return;\n const data = (await res.json()) as AbVariantsMap;\n this.abVariants = keys?.length\n ? { ...this.abVariants, ...data }\n : { ...data };\n this.abTestSubscribers.forEach((fn) => fn({ ...this.abVariants }));\n } catch {\n // Silent — assignment failure must never surface to the user.\n }\n }\n\n // ─── Data accessors ─────────────────────────────────────────────────────────\n\n /** A read-only snapshot of the current session. */\n getSession(): Readonly<SessionData> {\n return this.session;\n }\n\n /** All page views recorded so far. */\n getPageViews(): PageView[] {\n return [...this.session.pageViews];\n }\n\n /** Cumulative milliseconds spent per path. */\n getTimeSpent(): Record<string, number> {\n return { ...this.session.timeSpent };\n }\n\n /** Heatmap points for a specific path. */\n getHeatmapData(path: string): HeatmapPoint[];\n /** Heatmap points for all tracked paths. */\n getHeatmapData(): Record<string, HeatmapPoint[]>;\n getHeatmapData(\n path?: string,\n ): HeatmapPoint[] | Record<string, HeatmapPoint[]> {\n if (path !== undefined) {\n return [...(this.session.heatmap[path] ?? [])];\n }\n return Object.entries(this.session.heatmap).reduce<\n Record<string, HeatmapPoint[]>\n >((acc, [k, v]) => {\n acc[k] = [...v];\n return acc;\n }, {});\n }\n\n // ─── Network ────────────────────────────────────────────────────────────────\n\n private get collectUrl(): string {\n return (\n this.cfg.collectEndpoint ??\n collectUrlFromEventsEndpoint(this.cfg.endpoint!)\n );\n }\n\n private currentPath(): string {\n return normalizeTrackerPath(\n typeof window !== \"undefined\"\n ? window.location.pathname + window.location.search\n : \"/\",\n );\n }\n\n /**\n * Immediately drain the event queue and POST pending events to `/batch`.\n * Fire-and-forget; errors are intentionally swallowed like other analytics calls.\n */\n flush(): void {\n void this.flushQueue();\n }\n\n /** Drain the queue and POST all pending events to the batch endpoint. */\n private async flushQueue(): Promise<void> {\n if (this.queue.length === 0) return;\n // Splice atomically so new events emitted during the async request don't\n // get lost — they stay in the queue for the next flush.\n const batch = this.queue.splice(0);\n await this.sendBatch(batch);\n }\n\n /**\n * Synchronous best-effort flush via `navigator.sendBeacon`.\n * Used on `pagehide` / `visibilitychange:hidden` where async fetch may be\n * cancelled by the browser before it completes.\n */\n private flushBeacon(): void {\n if (this.queue.length === 0) return;\n const batch = this.queue.splice(0);\n const body = JSON.stringify(\n buildCollectBatchBody(batch, {\n appId: this.cfg.appId,\n visitorId: this.session.visitorId,\n sessionId: this.session.id,\n }),\n );\n const authHeaders: Record<string, string> = this.cfg.secretKey\n ? { Authorization: `Bearer ${this.cfg.secretKey}` }\n : {};\n\n postIngestBeacon(this.collectUrl, body, {\n compressPayloads: this.cfg.compressPayloads,\n compressionThresholdBytes: this.cfg.compressionThresholdBytes,\n authHeaders,\n });\n }\n\n private async sendBatch(events: TrackerEvent[]): Promise<void> {\n const authHeaders: Record<string, string> = this.cfg.secretKey\n ? { Authorization: `Bearer ${this.cfg.secretKey}` }\n : {};\n const body = JSON.stringify(\n buildCollectBatchBody(events, {\n appId: this.cfg.appId,\n visitorId: this.session.visitorId,\n sessionId: this.session.id,\n }),\n );\n await postIngest(this.collectUrl, body, {\n compressPayloads: this.cfg.compressPayloads,\n compressionThresholdBytes: this.cfg.compressionThresholdBytes,\n authHeaders,\n });\n }\n}\n","import type { HeatmapPoint, HeatmapRenderOptions } from \"./types\";\n\n// ─── Color palette ────────────────────────────────────────────────────────────\n// Built once; maps 0 (cool) → 255 (hot) to an RGB color.\n\ntype RGB = [number, number, number];\n\nfunction buildPalette(): RGB[] {\n const stops: RGB[] = [\n [0, 0, 255], // blue\n [0, 255, 255], // cyan\n [0, 255, 0], // green\n [255, 255, 0], // yellow\n [255, 128, 0], // orange\n [255, 0, 0], // red\n ];\n\n const palette: RGB[] = [];\n const stepsPerSegment = 51; // ≈ 255 total entries\n\n for (let s = 0; s < stops.length - 1; s++) {\n const [fr, fg, fb] = stops[s];\n const [tr, tg, tb] = stops[s + 1];\n for (let i = 0; i < stepsPerSegment; i++) {\n const t = i / stepsPerSegment;\n palette.push([\n Math.round(fr + (tr - fr) * t),\n Math.round(fg + (tg - fg) * t),\n Math.round(fb + (tb - fb) * t),\n ]);\n }\n }\n\n return palette;\n}\n\nconst COLOR_PALETTE = buildPalette();\n\n// ─── Public API ───────────────────────────────────────────────────────────────\n\n/**\n * Renders `points` onto `canvas` as a color heatmap.\n *\n * Algorithm:\n * 1. Draw each point as a soft radial gradient on an off-screen canvas,\n * accumulating \"heat\" in the alpha channel.\n * 2. Map each pixel's accumulated alpha value through the color palette\n * (blue → cyan → green → yellow → orange → red) and write to the\n * destination canvas.\n *\n * Coordinates in `HeatmapPoint` are percentages (0–100) of page dimensions,\n * which are scaled to the canvas size at render time — making it resolution\n * independent.\n *\n * @param canvas Target canvas element (will NOT be resized automatically).\n * @param points Array of heatmap points to render.\n * @param options Visual tuning options.\n */\nexport function renderHeatmap(\n canvas: HTMLCanvasElement,\n points: HeatmapPoint[],\n options: HeatmapRenderOptions = {},\n): void {\n const { radius = 25, maxOpacity = 0.85, minOpacity = 0 } = options;\n\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n\n const { width, height } = canvas;\n ctx.clearRect(0, 0, width, height);\n\n if (points.length === 0) return;\n\n // ── Step 1: draw density layer on off-screen canvas ──\n const shadow = document.createElement(\"canvas\");\n shadow.width = width;\n shadow.height = height;\n const sCtx = shadow.getContext(\"2d\");\n if (!sCtx) return;\n\n for (const pt of points) {\n const x = (pt.xPct / 100) * width;\n const y = (pt.yPct / 100) * height;\n // Clicks get a larger radius to make them visually distinct.\n const r = pt.type === \"click\" ? radius * 1.6 : radius;\n\n const grad = sCtx.createRadialGradient(x, y, 0, x, y, r);\n grad.addColorStop(0, \"rgba(0,0,0,0.15)\");\n grad.addColorStop(1, \"rgba(0,0,0,0)\");\n\n sCtx.fillStyle = grad;\n sCtx.beginPath();\n sCtx.arc(x, y, r, 0, Math.PI * 2);\n sCtx.fill();\n }\n\n // ── Step 2: colorize density layer ──\n const density = sCtx.getImageData(0, 0, width, height);\n const out = ctx.createImageData(width, height);\n const src = density.data;\n const dst = out.data;\n const lastIdx = COLOR_PALETTE.length - 1;\n\n for (let i = 0; i < src.length; i += 4) {\n const alpha = src[i + 3];\n if (alpha === 0) continue;\n\n const ratio = alpha / 255;\n const colorIdx = Math.min(Math.floor(ratio * lastIdx), lastIdx);\n const [r, g, b] = COLOR_PALETTE[colorIdx];\n const opacity = minOpacity + ratio * (maxOpacity - minOpacity);\n\n dst[i] = r;\n dst[i + 1] = g;\n dst[i + 2] = b;\n dst[i + 3] = Math.round(opacity * 255);\n }\n\n ctx.putImageData(out, 0, 0);\n}\n"]}
|